diff --git a/deploy/README b/deploy/README old mode 100755 new mode 100644 index 91bdd19fe271eb39b5dd022a01194dd6cc3c5194..3c98ff051504a010a3bd66b4d71626f1a81e6f50 --- a/deploy/README +++ b/deploy/README @@ -1,13 +1,45 @@ -HOW TO DEPLOY MODEL -=================== +HOW TO DEPLOY MODEL AT REMOTE HPC/PLATFORM +========================================== -1) Prepare the conf/MODEL.conf file -2) nohup ./deploy.sh conf/MODEL.conf >& log/MODEL-vx.y.z_00.log & +Here is below a fundamental link for detailed information about available +models and computing platforms: -This deployment pack is working fine with the following models: +http://ic3.cat/wikicfu/index.php/Models -a) EC-EARTH-v2, EC-EARTH-v3.0, EC-EARTH-v3.1 +Here are below fundamental paths for the sources of models and +released patches (w.r.t. different platforms): -b) NEMO-EC-EARTH-v2 +/cfu/releases/models +/cfu/releases/patches + +MODELS +------ + +Here is below the list of models could be deployed: + +* nemo: ecearth-v2.2, v3.2, v3.3, ece-v3.0.1 +* ecearth: v2.0, v2.1, v2.2.0, v2.2.1, v2.2.3, v2.3.0, v3.0-r1012, v3.0.1 + +PLATFORMS +--------- + +Here is below the list of platforms could be used for deployment of a model: + +* ithaca +* marenostrum +* marenostrum3 +* ecmwf +* hector +* lindgren +* jaguar + +e.g. +---- + +Here are below examples given for starting the deployment process in +distributed fashion: + +> cd src +> nohup ./deploy.sh ithaca nemo ece-v3.0.1 >& deploy_ithaca_nemo_ece-v3.0.1.log & +> nohup ./deploy.sh ithaca ecearth v3.0.1 >& deploy_ithaca_ecearth_v3.0.1.log & -c) NEMO-v3.2, NEMO-v3.3 diff --git a/deploy/compile.sh b/deploy/compile.sh deleted file mode 100755 index 8ca6a7c4f50db76799243665e07a9d63dc44a4b0..0000000000000000000000000000000000000000 --- a/deploy/compile.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -set -xuve -date - -case $model in - EC-EARTH-v2) - nemo_i=4 - nemo_j=4 - cd $deploy_dir/sources/build - ./compilation.ksh -i $nemo_i -j $nemo_j - cp -pf $deploy_dir/sources/oasis3/prism_2-5/prism/*/bin/oasis3.MPI1.x $deploy_dir/bin - cp -pf $deploy_dir/sources/nemo/nemo_build/opa_exe.ORCA1_OASIS3.$nemo_i.$nemo_j $deploy_dir/bin - cp -pf $deploy_dir/sources/ifs/bin/ifsMASTER $deploy_dir/bin - cp -pf $deploy_dir/sources/build/setup* $deploy_dir/setup - cp -pf $deploy_dir/sources/build/run* $deploy_dir/scripts - ;; - EC-EARTH-v3.0) - arch=eexcon - nemo_i=4 - nemo_j=4 - cd $deploy_dir/sources/build-config - ./compilation.sh -i $nemo_i -j $nemo_j - cp -pf $deploy_dir/sources/oasis3/$arch/bin/oasis3.MPI1.x $deploy_dir/bin - cp -pf $deploy_dir/sources/nemo3/bin/opa-${arch}-${nemo_i}x${nemo_j} $deploy_dir/bin - cp -pf $deploy_dir/sources/ifs-*/bin/ifsmaster-${arch} $deploy_dir/bin - cp -rpf $deploy_dir/sources/work/scripts/examples/ctrl $deploy_dir/setup - cp -pf $deploy_dir/sources/build-config/run* $deploy_dir/scripts - ;; - EC-EARTH-v3.1) - arch=eexcon - cd $deploy_dir/sources/build-config - ./compilation.sh - cp -pf $deploy_dir/sources/oasis*/$arch/bin/oasis3.MPI1.x $deploy_dir/bin - for nemo_config in `ls -1 $deploy_dir/sources/nemo*/CONFIG | grep ORCA`; do - mkdir -p $deploy_dir/bin/$nemo_config - cp -pf $deploy_dir/sources/nemo*/CONFIG/$nemo_config/BLD/bin/*.exe $deploy_dir/bin/$nemo_config - done - cp -pf $deploy_dir/sources/ifs*/bin/ifsmaster-${arch} $deploy_dir/bin - cp -rpf $deploy_dir/sources/build-config/ctrl $deploy_dir/setup - cp -pf $deploy_dir/sources/build-config/run* $deploy_dir/scripts - ;; - NEMO-EC-EARTH-v2) - nemo_i=6 - nemo_j=6 - cd $deploy_dir/sources/build - ./compilation.ksh -i $nemo_i -j $nemo_j - cp -pf $deploy_dir/sources/nemo/nemo_build/opa_exe.ORCA1_OASIS3.$nemo_i.$nemo_j $deploy_dir/bin - cp -pf $deploy_dir/sources/build/setup* $deploy_dir/setup - cp -pf $deploy_dir/sources/build/run* $deploy_dir/scripts - cd $deploy_dir/inidata/testdata - rm -rf FOcean ifs oasis3 SlabOcean - ;; - NEMO-v3.2) - nemo_i=6 - nemo_j=6 - cd $deploy_dir/sources/modipsl/config/ORCA2_LIM - ./compilation.sh -i $nemo_i -j $nemo_j - cp -pf $deploy_dir/sources/modipsl/bin/* $deploy_dir/bin - cp -pf $deploy_dir/sources/modipsl/config/ORCA2_LIM/namelist* $deploy_dir/setup - cp -pf $deploy_dir/sources/modipsl/config/ORCA2_LIM/run* $deploy_dir/scripts - ;; - NEMO-v3.3) - nemo_i=6 - nemo_j=6 - cd $deploy_dir/sources/NEMOGCM/CONFIG - ./compilation.sh -i $nemo_i -j $nemo_j - cp -pf $deploy_dir/sources/NEMOGCM/CONFIG/ORCA2_LIM/BLD/bin/nemo.exe $deploy_dir/bin - cp -pf $deploy_dir/sources/NEMOGCM/EXTERNAL/IOIPSL/tools/rebuild $deploy_dir/bin - cp -pf $deploy_dir/sources/NEMOGCM/TOOLS/REBUILD/BLD/bin/flio_rbld.exe $deploy_dir/bin - cp -pf $deploy_dir/sources/NEMOGCM/CONFIG/namelist* $deploy_dir/setup - cp -pf $deploy_dir/sources/NEMOGCM/CONFIG/run* $deploy_dir/scripts - ;; - *) - echo "$model is not available" - ;; -esac diff --git a/deploy/conf/example.conf b/deploy/conf/example.conf deleted file mode 100755 index 6540db1bc559e4a99166395fb5b149799c6b9ac5..0000000000000000000000000000000000000000 --- a/deploy/conf/example.conf +++ /dev/null @@ -1,17 +0,0 @@ -# name of the model as described in README -export model= - -# path of the sources directory for the model -export source_dir= - -# path of the PATCHES directory -export patch_dir= - -# name of the patch file -export patch_file= - -# path of the directory; where to deploy the model -export deploy_dir= - -# path of the temporary directory -export tmp_path= diff --git a/deploy/deploy.sh b/deploy/deploy.sh deleted file mode 100755 index c3a119a214ac4183cf6a2015d1e087b5119562ee..0000000000000000000000000000000000000000 --- a/deploy/deploy.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# -# nohup ./deploy.sh conf/*.conf >& log/*.log & -# -set -xuve -date -hostname -main=`pwd` - -# General settings -conf=$1 -. ./$conf -mkdir -p $deploy_dir -export tmp_dir=$tmp_path/${model}_$$ -rm -rf $tmp_dir -mkdir -p $tmp_dir - -# Create directory structure -cd $deploy_dir -mkdir -p sources inidata scripts setup docs patches bin - -# Inflate sources inidata scripts setup docs patches bin -# Inflate compilation patch & platform specific stuff -$main/inflate.sh - -# Configure & Compile model and Perform post-compilation steps -$main/compile.sh - -find $deploy_dir/. -type d | xargs chmod 775 2>/dev/null -find $deploy_dir/inidata -type f | xargs chmod 666 2>/dev/null -find $deploy_dir/scripts -type f | xargs chmod 666 2>/dev/null -find $deploy_dir/setup -type f | xargs chmod 666 2>/dev/null - -rm -rf $tmp_dir - -date diff --git a/deploy/headers/ecmwf b/deploy/headers/ecmwf new file mode 100644 index 0000000000000000000000000000000000000000..5f5d8e38dd4973d9a45cbe9a487e57cdcfea3366 --- /dev/null +++ b/deploy/headers/ecmwf @@ -0,0 +1,12 @@ +#!/bin/ksh +#@ shell = /usr/bin/ksh +#@ class = ns +#@ job_type = serial +#@ job_name = HPCJOB +#@ output = HPCTMP/$(job_name).$(jobid).out +#@ error = HPCTMP/$(job_name).$(jobid).out +#@ notification = error +#@ resources = ConsumableCpus(1) ConsumableMemory(2000mb) +#@ wall_clock_limit = 10:00:00 +#@ queue +# diff --git a/deploy/headers/hector b/deploy/headers/hector new file mode 100644 index 0000000000000000000000000000000000000000..582be5f266dfd3efffc7cadafe30cb9ed352a665 --- /dev/null +++ b/deploy/headers/hector @@ -0,0 +1,10 @@ +#!/bin/sh +#!/bin/sh --login +#PBS -N HPCJOB +#PBS -e HPCTMP +#PBS -o HPCTMP +#PBS -l walltime=10:00:00 +#PBS -l mppwidth=2 +#PBS -l mppnppn=1 +#PBS -A hpx1enes +# diff --git a/deploy/headers/ithaca b/deploy/headers/ithaca new file mode 100644 index 0000000000000000000000000000000000000000..a086e3050d4fea913f4853080f63c79e6a8e4907 --- /dev/null +++ b/deploy/headers/ithaca @@ -0,0 +1,6 @@ +#!/bin/sh +#$ -S /bin/sh +#$ -N HPCJOB +#$ -o HPCTMP +#$ -j y +# diff --git a/deploy/headers/jaguar b/deploy/headers/jaguar new file mode 100644 index 0000000000000000000000000000000000000000..4566ceed45cb9a78e7744a5e579d4d2ab13cc70f --- /dev/null +++ b/deploy/headers/jaguar @@ -0,0 +1,9 @@ +#!/bin/sh +#PBS -N HPCJOB +#PBS -o HPCTMP +#PBS -e HPCTMP +#PBS -l walltime=10:00:00 +#PBS -l size=1 +#PBS -A cli055 +#PBS -l gres=widow2%widow3 +# diff --git a/deploy/headers/lindgren b/deploy/headers/lindgren new file mode 100644 index 0000000000000000000000000000000000000000..f24a0e8114e7b694c80ea745eb3556db9ffadb86 --- /dev/null +++ b/deploy/headers/lindgren @@ -0,0 +1,9 @@ +#!/bin/sh +#!/bin/sh --login +#PBS -N HPCJOB +#PBS -e HPCTMP +#PBS -o HPCTMP +#PBS -l walltime=10:00:00 +#PBS -l mppwidth=2 +#PBS -l mppnppn=1 +# diff --git a/deploy/headers/marenostrum b/deploy/headers/marenostrum new file mode 100644 index 0000000000000000000000000000000000000000..fc1f2136158571a8e56573db327fa55318fe92c9 --- /dev/null +++ b/deploy/headers/marenostrum @@ -0,0 +1,7 @@ +#!/bin/sh +#@ job_name = HPCJOB +#@ output = HPCTMP/HPCJOB_%j.out +#@ error = HPCTMP/HPCJOB_%j.out +#@ wall_clock_limit = 10:00:00 +#@ total_tasks = 1 +# diff --git a/deploy/headers/marenostrum3 b/deploy/headers/marenostrum3 new file mode 100644 index 0000000000000000000000000000000000000000..88d222a447f7a7304fc5eab9dfb90161dc58cca3 --- /dev/null +++ b/deploy/headers/marenostrum3 @@ -0,0 +1,6 @@ +#!/bin/sh +#BSUB -J HPCJOB +#BSUB -oo HPCTMP/HPCJOB_%J.out +#BSUB -eo HPCTMP/HPCJOB_%J.out +#BSUB -W 10:00 +# diff --git a/deploy/inflate.sh b/deploy/inflate.sh deleted file mode 100755 index ec483f5b95892ac9b21aecbc1debca5d5e9c9ac5..0000000000000000000000000000000000000000 --- a/deploy/inflate.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -set -xuve -date - -files=`find $source_dir/* -type f -maxdepth 0` -for file in $files; do - cp -f $file $tmp_dir -done - -files=`ls $tmp_dir` -for file in $files; do - output=$(python -c "print '$file'.__contains__('src')") > /dev/null - bfile=`echo $file | rev | cut -d '.' -f1 | rev` - case $bfile in - tar) tarf="tar -xvf" - ;; - gz|tgz) tarf="tar -zxvf" - ;; - *) echo "$bfile not a valid format"; - ;; - esac - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/sources - fi - output=$(python -c "print '$file'.__contains__('data')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/inidata - fi - output=$(python -c "print '$file'.__contains__('scripts')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/scripts - fi - output=$(python -c "print '$file'.__contains__('setup')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/setup - fi - output=$(python -c "print '$file'.__contains__('docs')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/docs - fi - output=$(python -c "print '$file'.__contains__('patches')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/patches - fi - output=$(python -c "print '$file'.__contains__('bin')") > /dev/null - if [ $output == 'True' ]; then - $tarf $tmp_dir/$file -C $deploy_dir/bin - fi -done -rm $tmp_dir/* - -cp $patch_dir/$patch_file $tmp_dir -tar -zxvf $tmp_dir/$patch_file -C $deploy_dir/sources -rm $tmp_dir/* diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/compilation.cmd b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..05d7f86ebba683b3a8005d15dcd2c26d01902c32 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/compilation.cmd @@ -0,0 +1,394 @@ +#!/bin/ksh + +# nohup ./compilation.cmd >& compiation.log & + +module add python/2.7.2-01 +PATH=/perm/ms/spesiccf/c3m/opt/make-3.81:${PATH} + +set -xuve +date + +MPI= +LAPACK=/usr/local/apps/lapack/3.1.1/LP64 +SZIP=/usr/local/apps/szip/2.1/LP64 +HDF5=/usr/local/apps/hdf5/1.8.9/LP64 +NetCDF=/usr/local/apps/netcdf4/4.1.3/LP64 +GribAPI=/usr/local/lib/metaps/lib/grib_api/1.9.16 +GribEX=/perm/ms/spesiccf/c3m/opt/gribex_000370/ibm-xlc +JASPER=/usr/local/apps/jasper/1.900.1/LP64 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=ecmwf-xlc-poe +CONFIG=config.xml + +cat > $CONFIG < + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + HOST: c2a at ecmwf + ARCH: AIX + CPU MODEL: IBM Power7 + COMPILER: IBM XL + MPI: IBM POE + BLAS/LAPACK: IBM ESSL + + + + EC-Earth base directory + PATH + $ECEARTH + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + $LAPACK + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + lapack_essl essl + + + + NetCDF base directory + PATH + $NetCDF + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + $GribAPI + + + + GRIB API include directory relative to base dir + PATH + include64 + + + + GRIB API lib directory relative to base dir + PATH + lib64 + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api grib_api_f90 + + + + GRIBEX base directory + PATH + $GribEX + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + Fortran 90 Compiler + STRING + mpxlf90 + + + + General F90 flags for compiling + STRING + -O2 -g -q64 -qrealsize=8 -qport=mod -qspillsize=8162 + + + + Allow for free format Fortran + STRING + -qfree=f90 + + + + Expect fixed Fortran format + STRING + -qfixed + + + + Fortran preprocessor flag prefix + STRING + -WF\$(comma)-D + + + + C Compiler + STRING + xlc + + + + General C flags for compiling + STRING + -O2 -g -q64 + + + + C preprocessor flag prefix + STRING + -D + + + + Linker + STRING + mpxlf90 + + + + General flags for linking + STRING + -O2 -g -q64 -qarch=auto -qrealsize=8 -L${HDF5}/lib -lhdf5 -lhdf5_hl -L${SZIP}/lib -lsz -lz -L${JASPER}/lib -ljasper + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + -curv -X64 + + + + Flags for library building command (When using ar: include u) + STRING + -p -X64 + + + + C preprocessor command + STRING + + + + + C preprocessor flags + STRING + + + + + More F90 flags for Oasis + STRING + + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + POINTER_64 BLAS DOUBLE_KIND_EQUALS_REAL + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + \$(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + \$(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90-ecmwf + + + + + +EOF +cat $CONFIG + +# MAKEDEP90 Compilation +# ===================== + +#if [ ! -d makedepf90-2.8.8 ]; then +# tar -zxvf ../util/makedepf90/src/makedepf90-2.8.8.tar.gz +# cd makedepf90-2.8.8 +# ./configure --prefix=$ECEARTH/util/makedepf90/ +# make +# make install +# cd - +#fi + +# EC-CONF Usage +# ============= + +cd .. +$ECEARTH/util/ec-conf/ec-conf --platform $PLATFORM build-config/$CONFIG +BA=ecconf # Build Arch +cd - + +# OASIS Compilation +# ================= + +cd $ECEARTH/oasis*/util/make_dir/ +#make realclean -f TopMakefileOasis3 BUILD_ARCH=$BA +make -f TopMakefileOasis3 BUILD_ARCH=$BA + +# NEMO Compilation +# ================ + +cd $ECEARTH/nemo*/CONFIG/ +nemo_configs=`ls -1 | grep ORCA` +#set +e +#./makenemo clean +#set -e +for nemo_config in $nemo_configs; do + ./makenemo -m $BA -n $nemo_config -j 8 +done + +# IFS Compilation +# =============== + +cd $ECEARTH/ifs*/ +#make clean BUILD_ARCH=$BA +#make realclean BUILD_ARCH=$BA +#make dep-clean BUILD_ARCH=$BA +make -j 8 BUILD_ARCH=$BA lib +make BUILD_ARCH=$BA master + +date diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/cp.cmd b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..39eb81d7274cb570ef9032940d18832ecbbbdc34 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/cp.cmd @@ -0,0 +1,25 @@ +#!/bin/ksh + +bin=bin + +while getopts b: option +do + case $option in + b) bin=$OPTARG;; + \?) exit 1;; + esac +done + +set -xuv + +mkdir -p ../../$bin +ls -lrt ../../$bin + +cp -p ../oasis3/*con*/bin/oasis3.MPI1.x ../../$bin +for nemo_config in `ls -1 ../nemo*/CONFIG | grep ORCA`; do + mkdir -p ../../bin/$nemo_config + cp -pf ../nemo*/CONFIG/$nemo_config/BLD/bin/*.exe ../../$bin/$nemo_config +done +cp -p ../ifs-36r4/bin/ifsmaster-*con* ../../$bin + +ls -lrt ../../$bin diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run-atm.cmd b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run-atm.cmd new file mode 100755 index 0000000000000000000000000000000000000000..7cb3d0929f8825c3cfa213b93cae003d366ca108 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run-atm.cmd @@ -0,0 +1,374 @@ +#!/bin/ksh +############################################################################### +# RUN EC_EARTH +############################################################################### +# +#@ shell = /usr/bin/ksh +#@ class = np +#@ job_type = parallel +#@ job_name = run-atm +#@ output = $(job_name).$(jobid).out +#@ error = $(job_name).$(jobid).err +#@ notification = error +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) +#@ ec_smt = no +#@ total_tasks = 48 +#@ wall_clock_limit = 00:30:00 +#@ queue +# +############################################################################### + +# modules setup + +# setup the grib_api env. +PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64:$PATH +PATH=/opt/freeware/bin:$PATH + +set -xuve + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# Switch between LOW, STANDARD and HIGH RESOLUTION by setting: +# +# -------------------------------------------------- +# Parameter lowres stdres highres +# -------------------------------------------------- +# ifs_grid T159L62 T255 T799 +# nem_grid ORCA1L46 ORCA1L46 ORCA025L46 +# ifs_time_step_sec 3600 2700 720 +# nem_time_step_sec 3600 3600 1200 +# -------------------------------------------------- +# +# Change also: +# exp_name +# run_start_date (lo:1990/std:1996/hi:1996) +# ifs_numproc +# nem_numproc +# run_dir +# and make sure to use the appropriate NEMO executable +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +ecearth_base_dir=/perm/ms/spesiccf/c3m/models/ecearth/v3.0-r1012 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/ms/spesiccf/$USER/test/run_${ifs_grid}_atm_${LOADL_STEP_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/usr/local/lib/metaps/lib/grib_api/1.9.16 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin64 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\2:') + +ifs_numproc=48 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE +fs_ncmip5fixyr=0 +nprtrv=1 + + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +ln -sf ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT ICMSEA${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=simulate +export OASIS3DEBUGLEVEL=3 + +### --- PLATFORM DEPENDENT CODE --- +# ulimit -s unlimited + +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +rm -f model.conf +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> model.conf +done + +/usr/bin/poe -pgmmodel mpmd -cmdfile model.conf +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run.cmd b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run.cmd new file mode 100755 index 0000000000000000000000000000000000000000..6222f4ea454aade128f97118ced7db95b5fc1b93 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/run.cmd @@ -0,0 +1,538 @@ +#!/bin/ksh +############################################################################### +# RUN EC_EARTH +############################################################################### +# +#@ shell = /usr/bin/ksh +#@ class = np +#@ job_type = parallel +#@ job_name = run +#@ output = $(job_name).$(jobid).out +#@ error = $(job_name).$(jobid).err +#@ notification = error +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) +#@ ec_smt = no +#@ total_tasks = 55 +#@ wall_clock_limit = 00:30:00 +#@ queue +# +############################################################################### + +# modules setup + +# setup the grib_api env. +PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64:$PATH +PATH=/opt/freeware/bin:$PATH + +set -xuve +#module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# Switch between LOW, STANDARD and HIGH RESOLUTION by setting: +# +# -------------------------------------------------- +# Parameter lowres stdres highres +# -------------------------------------------------- +# ifs_grid T159L62 T255 T799 +# nem_grid ORCA1L46 ORCA1L46 ORCA025L46 +# ifs_time_step_sec 3600 2700 720 +# nem_time_step_sec 3600 3600 1200 +# -------------------------------------------------- +# +# Change also: +# exp_name +# run_start_date (lo:1990/std:1996/hi:1996) +# ifs_numproc +# nem_numproc +# run_dir +# and make sure to use the appropriate NEMO executable +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 +nem_grid=ORCA1L46 +lim=LIM2 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +ecearth_base_dir=/perm/ms/spesiccf/c3m/models/ecearth/v3.0-r1012 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/ms/spesiccf/$USER/test/run_${ifs_grid}_${nem_grid}_${LOADL_STEP_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/usr/local/lib/metaps/lib/grib_api/1.9.16 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin64 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=32 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE +ifs_ncmip5fixyr=0 + +nprtrv=1 + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=$(echo $lim | cut -d 'M' -f 2) + +case ${nem_grid} in + ORCA1*) nem_time_step_sec=3600 ;; + ORCA025*) nem_time_step_sec=1200 ;; + *) error "Unsupported grid type: ${nem_grid}" + ;; +esac +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${bin_dir}/${nem_grid}_${lim}/nemo.exe + +nem_numproc=16 + +advsch=tvd +rstctl=1 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_base_dir}/sources/util/namcouple-split/namsplit.pl + +oas_numproc=7 + +# Flux correction that compensates for the mismatch between P-E over the ocean, +# and run-off from land (necessary to avoid sea level rise). +# The RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_rnf_fluxcorr=0.87 + +oas_exe_file=${bin_dir}/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # Initial data + ln -s ${ini_data_dir}/nemo/${nem_grid}/temperature_*.nc . + ln -s ${ini_data_dir}/nemo/${nem_grid}/salinity_*.nc . + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1))) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $(seq 0 $((nem_numproc-1))) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +### --- PLATFORM DEPENDENT CODE --- +# ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +rm -f model.conf +for node in $(seq 1 $oas_numproc) +do + echo "$oas_exe_file" >> model.conf +done + +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> model.conf +done + +for node in $(seq 1 $nem_numproc) +do + echo "$nem_exe_file" >> model.conf +done + +/usr/bin/poe -pgmmodel mpmd -cmdfile model.conf +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4823c74dc6f56aae9bd92c89ce9193d895a4e464 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a13d1a731f3268c9352584795e262207c709aa7 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a45e9594c0a91d7a18ded340aa686c6c7a34e7e --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh new file mode 100755 index 0000000000000000000000000000000000000000..f8815bbfe74b6ccdca0c9993f91e5c9bc4e9888f --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 4 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 4 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..c86a7153fbeadf88f38dfebc59e0f00236965313 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ${exp_name} + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 4 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 4 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..225f543252c35ef12e0edff4ff16151c45260f61 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh @@ -0,0 +1,447 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAMGWWMS + GFLUXLAUN=0.002 + ZLAUNCHP=45000 + LOZPR=true + NGAUSS=4 + GGAUSSB=1.0 +/ +&NAMGWD + GTENLIM=0.02 +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2da9b7b3d693a93e5d9132beefca0259a7abbc5 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.0e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 250 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-09 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 100.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.5 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..1731df051dd141d8f13f351f8b0b38f23583ef76 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 120 ! number of EVP subcycling iterations + telast = 9600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..a9a33ef6a65bfe1270a9d555cd2a43ae235914f8 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 5.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..70532ad8afb83cd26ea04420fcbf0201f59a145b --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..132e553607633a78d54f4d6eb5e0fe46ec18f985 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'none' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 1 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 2.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 3.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 1 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 300. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! laplacian operator + ln_dynldf_bilap = .true. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -1.5e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.4 ! surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-15 ! absolute precision of the solver + nn_nmin = 340 ! minimum of iterations for the SOR solver + nn_nmax = 15000 ! maximum of iterations for the SOR solver + nn_nmod = 5 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.975 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .true. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..a75d5712ed3d998b6dd070aedcea582a05c598c3 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -100.e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .true. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def new file mode 100644 index 0000000000000000000000000000000000000000..0a252038763a53bf0d1ca45ddeb0f356f17e7fd4 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def @@ -0,0 +1,35 @@ +! xmlio_server namelist +! +! using_server: .TRUE.(.FALSE.) to use(bypass) the io_server +! using_oasis : .TRUE.(.FALSE.) if nemo is coupled through OASIS +! client_id : used only for OASIS, NEMO id in the namecouple +! server_id : used only for OASIS, io_server id in the namecouple +! +&coupling_param + using_server = .FALSE. + using_oasis = .TRUE. + client_id = 'nemo.x' + server_id = 'ionemo' +/ + +! global_mpi_buffer_size: size in Mo of the MPI buffer used by the io_server +&mpi_param + global_mpi_buffer_size = 512 +/ + +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings +!!====================================================================== +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings + ! (benign if "key_netcdf4" is not used) +!----------------------------------------------------------------------- + nn_nchunks_i = 4 ! number of chunks in i-dimension + nn_nchunks_j = 4 ! number of chunks in j-dimension + nn_nchunks_k = 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .TRUE. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/config-build.xml b/deploy/patches/ecmwf/ecearth/v3.0-r1012/config-build.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c091a82f5c0d1649ce874e2719e28d0db55fd58 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/config-build.xml @@ -0,0 +1,1278 @@ + + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + HOST: ekman.pdc.kth.se + ARCH: linux_x86_64 + CPU MODEL: Quad-Core AMD Opteron Processor 2374 HE + USER: ufla + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3 + + + + MPI base directory + PATH + /pdc/vol/intelmpi/4.0.3/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpigf mpigi + + + + LAPACK base directory + PATH + /pdc/vol/i-compilers/11.1/icc/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/em64t + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /pdc/vol/netcdf/4.1.1/intel + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf + + + + GRIB API base directory + PATH + /pdc/vol/grib/1.9.9/intel + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /pdc/vol/gribex/000370/intel/64 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L/pdc/vol/hdf5/1.8.3/lib -lhdf5 -lhdf5_hl -L/pdc/vol/szip/2.1/lib -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: gimle.nsc.liu.se + ARCH: linux_x86_64 + CPU MODEL: Intel Xeon + USER: sm_uflad + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/current + + + + MPI base directory + PATH + /software/intel/impi/4.0.3.008 + + + + MPI include directory relative to base dir + PATH + include64 + + + + MPI lib directory relative to base dir + PATH + lib64 + + + + MPI libraries (without -l prefix) + STRING + mpi mpiif mpigi + + + + LAPACK base directory + PATH + /software/intel/mkl/10.2.1.017 + + + + LAPACK lib directory relative to base dir + PATH + lib/em64t + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /software/libs/netcdf/3.6.2/i101008 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf + + + + GRIB API base directory + PATH + $(HOME)/Projects/gribapi/1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $(HOME)/Projects/gribex/370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: lindgren.pdc.kth.se + ARCH: linux_x86_64 + CPU MODEL: 6-Core AMD Opteron(tm) Processor 23 (D0) + USER: cbasu + COMPILER: i-compilers (icc+ifort) + MPI: Cray MPI + BLAS/LAPACK: Cray BLAS + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3 + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + + + + + NetCDF base directory + PATH + /opt/cray/netcdf/4.2.0/intel/120 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff netcdf hdf5_hl hdf5 z + + + + GRIB API base directory + PATH + /cfs/klemming/nobackup/w/wyser/grib/grib_api-1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /cfs/klemming/nobackup/w/wyser/gribex/gribex_000370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ftn + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + cc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ftn + + + + General flags for linking + STRING + -O2 -g -traceback -L/opt/cray/hdf5/default/intel/120/lib + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + cc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + $(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: krypton.nsc.liu.se + ARCH: linux_x86_64 + CPU MODEL: Intel E5-2660 + USER: sm_uflad + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3 + + + + MPI base directory + PATH + /software/intel/impi/4.0.3.008/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpiif mpigi + + + + LAPACK base directory + PATH + /software/intel/composer_xe_2011_sp1.10.319/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /software/apps/netcdf/4.2/i1214-hdf5-1.8.9 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff + + + + GRIB API base directory + PATH + $(HOME)/Projects/gribapi/1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $(HOME)/Projects/gribex/370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O0 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O0 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O0 -g -traceback + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: c1a, c1b at ecmwf + ARCH: + CPU MODEL: IBM Power6 + USER: srz + COMPILER: IBM XL + MPI: IBM POE + BLAS/LAPACK: IBM ESSL + + + + EC-Earth base directory + PATH + $(PERM)/Projects/ecearth3-c1a + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + /usr/local/lib/lapack/3.1.1 + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + lapack_essl64_ essl + + + + NetCDF base directory + PATH + /usr/local/apps/netcdf4/4.1.2/LP64 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + /usr/local/lib/metaps/lib/grib_api/1.9.16 + + + + GRIB API include directory relative to base dir + PATH + include64 + + + + GRIB API lib directory relative to base dir + PATH + lib64 + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api grib_api_f90 + + + + GRIBEX base directory + PATH + /perm/ms/se/sm0g/Projects/gribex_000370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + /ws/home/ms/se/sm0g/Projects/make-3.81/make + + + + Fortran 90 Compiler + STRING + mpxlf90 + + + + General F90 flags for compiling + STRING + -O2 -g -q64 -qrealsize=8 -qport=mod -qspillsize=8162 + + + + Allow for free format Fortran + STRING + -qfree=f90 + + + + Expect fixed Fortran format + STRING + -qfixed + + + + Fortran preprocessor flag prefix + STRING + -WF$(comma)-D + + + + C Compiler + STRING + xlc + + + + General C flags for compiling + STRING + -O2 -g -q64 + + + + C preprocessor flag prefix + STRING + -D + + + + Linker + STRING + mpxlf90 + + + + General flags for linking + STRING + -O2 -g -q64 -qarch=auto -qrealsize=8 -L/usr/local/apps/hdf5/1.8.6/LP64/lib -lhdf5 -lhdf5_hl -L/usr/local/apps/szip/2.1/LP64/lib -lsz -lz -L/usr/local/apps/jasper/1.900.0/LP64/lib -ljasper + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + -curv -X64 + + + + Flags for library building command (When using ar: include u) + STRING + -p -X64 + + + + C preprocessor command + STRING + + + + + C preprocessor flags + STRING + + + + + More F90 flags for Oasis + STRING + + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + POINTER_64 BLAS DOUBLE_KIND_EQUALS_REAL + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90-ecmwf + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/compiling-and-running-short-guide.pdf b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/compiling-and-running-short-guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e4dbe4c704d988f4054495fe4475ab040d28689e Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/compiling-and-running-short-guide.pdf differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/ec-conf-manual.pdf b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/ec-conf-manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..80a37a715081b9c8b34128061838405e881a0458 Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/ec-conf-manual.pdf differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/compiling-and-running-short-guide.odt b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/compiling-and-running-short-guide.odt new file mode 100644 index 0000000000000000000000000000000000000000..efd16cdaa92b19a8894175f489143833f87ceafb Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/compiling-and-running-short-guide.odt differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/ec-conf-manual.odt b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/ec-conf-manual.odt new file mode 100644 index 0000000000000000000000000000000000000000..1600c33551e1952bab7132731393d9bb3e81b379 Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0-r1012/doc/src/ec-conf-manual.odt differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..152c2c91899ee70042aa49c8b70380af2da487ad --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl @@ -0,0 +1,65 @@ +$(info --> Reading $(lastword $(MAKEFILE_LIST))) + +comma := , + +ECEARTH_SRC_DIR := [[[PLT:ACTIVE:ECEARTH_SRC_DIR]]] + +MPI_BASE_DIR := [[[PLT:ACTIVE:MPI_BASE_DIR]]] +ifneq ($(strip $(MPI_BASE_DIR)),) +MPI_INC_DIR := $(MPI_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:MPI_INC_SUBDIR]]]) +MPI_LIB_DIR := $(MPI_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]]) +endif +MPI_LIBS := [[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]] + +OASIS_BASE_DIR := $(ECEARTH_SRC_DIR)/oasis3 +OASIS_ARCH := ecconf +OASIS_MPI_CHAN := MPI1 +OASIS_MOD_DIR := $(OASIS_BASE_DIR)/$(OASIS_ARCH)/build/lib/psmile.$(OASIS_MPI_CHAN) +OASIS_LIB_DIR := $(OASIS_BASE_DIR)/$(OASIS_ARCH)/lib +OASIS_LIBS := psmile.MPI1 mpp_io clim.MPI1 + +ifneq ($(strip [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]),) +NETCDF_LIB_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]/[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]] +NETCDF_INC_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]/[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]] +endif +NETCDF_LIBS := [[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]] + +LAPACK_BASE_DIR := [[[PLT:ACTIVE:LAPACK_BASE_DIR]]] +ifneq ($(strip $(LAPACK_BASE_DIR)),) +LAPACK_LIB_DIR := $(LAPACK_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:LAPACK_LIB_SUBDIR]]]) +endif +LAPACK_LIBS := [[[PLT:ACTIVE:LAPACK_LIBS_WITHOUT_L]]] + +ifneq ($(strip [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]),) +GRIBAPI_INC_DIR := [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBAPI_INC_SUBDIR]]] +GRIBAPI_LIB_DIR := [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBAPI_LIB_SUBDIR]]] +endif +GRIBAPI_LIBS := [[[PLT:ACTIVE:GRIBAPI_LIBS_WITHOUT_L]]] + +ifneq ($(strip [[[PLT:ACTIVE:GRIBEX_BASE_DIR]]]),) +GRIBEX_LIB_DIR := [[[PLT:ACTIVE:GRIBEX_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBEX_LIB_SUBDIR]]] +endif +GRIBEX_LIBS := [[[PLT:ACTIVE:GRIBEX_LIBS_WITHOUT_L]]] + +MAKEDEPF90 := [[[PLT:ACTIVE:MAKEDEPF90]]] + +F90 := [[[PLT:ACTIVE:FC]]] +F90FLAGS := [[[PLT:ACTIVE:FFLAGS_FREEFORM]]] [[[PLT:ACTIVE:FFLAGS]]] + +IFSAUX_ADD_F90FLAGS := [[[PLT:ACTIVE:IFSAUX_ADD_FFLAGS]]] + +FC := [[[PLT:ACTIVE:FC]]] +FFLAGS := [[[PLT:ACTIVE:FFLAGS_FIXEDFORM]]] [[[PLT:ACTIVE:FFLAGS]]] + +FPPDEFS := $(addprefix [[[PLT:ACTIVE:FFLAGS_FPP_PREFIX]]],[[[PLT:ACTIVE:IFS_PPDEFS]]]) + +CC := [[[PLT:ACTIVE:CC]]] +CFLAGS := [[[PLT:ACTIVE:CFLAGS]]] +CPPDEFS := $(addprefix [[[PLT:ACTIVE:CFLAGS_CPP_PREFIX]]],[[[PLT:ACTIVE:IFS_PPDEFS]]]) + +LD := $(F90) +LDFLAGS := [[[PLT:ACTIVE:LDFLAGS]]] + +AR := [[[PLT:ACTIVE:AR]]] +ARFLAGS := [[[PLT:ACTIVE:ARFLAGS]]] +ARFLAGS_EXTRACT := [[[PLT:ACTIVE:ARFLAGS_EXTRACT]]] diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.master b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.master new file mode 100644 index 0000000000000000000000000000000000000000..c9831864673de24b5685f935843ad78abb4724af --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.master @@ -0,0 +1,25 @@ +.PHONY: master clean realclean dep-clean + +include $(MAKEFILE_CONFIG) + +master:$(IFS_BIN_DIR)/$(IFS_EXE_NAME) + +$(IFS_BIN_DIR)/$(IFS_EXE_NAME): $(addprefix $(IFS_LIB_DIR)/lib,$(addsuffix .a,$(sort $(IFS_LIBS)))) + $(AR) $(ARFLAGS_EXTRACT) $(IFS_LIB_DIR)/libifs.a master.o > $(IFS_BIN_DIR)/master.o + $(LD) -o $@ $(IFS_BIN_DIR)/master.o $(LDFLAGS) \ + $(addprefix -L,$(IFS_LIB_DIR)) $(addprefix -l,$(IFS_LIBS)) \ + $(addprefix -L,$(OASIS_LIB_DIR)) $(addprefix -l,$(OASIS_LIBS)) \ + $(addprefix -L,$(MPI_LIB_DIR)) $(addprefix -l,$(MPI_LIBS)) \ + $(addprefix -L,$(NETCDF_LIB_DIR)) $(addprefix -l,$(NETCDF_LIBS)) \ + $(addprefix -L,$(GRIBAPI_LIB_DIR)) $(addprefix -l,$(GRIBAPI_LIBS)) \ + $(addprefix -L,$(GRIBEX_LIB_DIR)) $(addprefix -l,$(GRIBEX_LIBS)) \ + $(addprefix -L,$(LAPACK_LIB_DIR)) $(addprefix -l,$(LAPACK_LIBS)) + +%.a: + @echo "==> WARNING: Library '$(notdir $@)' out of date! Run 'make lib' first." + +clean: + rm -f $(IFS_BIN_DIR)/master.o + +realclean: clean + rm -f $(IFS_BIN_DIR)/$(IFS_EXE_NAME) diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.rules b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.rules new file mode 100644 index 0000000000000000000000000000000000000000..d4c283de20244dcd9da6fc28c91ba3037669258f --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/Makefile.d/Makefile.rules @@ -0,0 +1,39 @@ +$(info --> Reading $(lastword $(MAKEFILE_LIST))) + +.SUFFIXES: +.SUFFIXES: .o .F90 .F .c + +.PHONY: $(LIB_FILE) lib master clean realclean dep-clean + +lib: $(LIB_FILE) + +$(LIB_FILE): $(OBJS) + $(AR) $(ARFLAGS) $@ $^ + +%.o: %.F90 + $(F90) -c $(F90FLAGS) $(FPPDEFS) $(addprefix -I,$(F90_INC_DIRS)) $< + +%.o: %.F + $(FC) -c $(FFLAGS) $(FPPDEFS) $(addprefix -I,$(F77_INC_DIRS)) $< + +%.o: %.f + $(FC) -c $(FFLAGS) $(addprefix -I,$(F77_INC_DIRS)) $< + +%.o: %.c + $(CC) -c $(CFLAGS) $(CPPDEFS) $(addprefix -I,$(C_INC_DIRS)) $< + +clean: + -rm -f $(OBJS) + -rm -f $(OBJS:.o=.mod) + +realclean: clean + -rm -f $(LIB_FILE) + +dep-clean: + -rm -f $(F90_DEP_FILE) + +ifneq (,$(filter %.F90 %.f90,$(SRCS))) +$(F90_DEP_FILE): $(filter %.F90 %.f90,$(SRCS)) + $(MAKEDEPF90) $(filter %.F90 %.f90,$(SRCS)) > $@ +-include $(F90_DEP_FILE) +endif diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/algor/external/linalg/minv.F b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/algor/external/linalg/minv.F new file mode 100644 index 0000000000000000000000000000000000000000..41ca75333aec14a0e8f3691721a6e268b23ac4b1 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/algor/external/linalg/minv.F @@ -0,0 +1,183 @@ + SUBROUTINE MINV(AB,N,LDBA,ZSCRA,DET1,TOL,M,MODE) + IMPLICIT LOGICAL (L) + INTEGER N,LDBA,M,MODE + REAL TOL,DET1 + REAL AB(LDBA,N+M),ZSCRA( 2*N ) +c internal variables + REAL RCOND,SCRATCH( 4*N ),ZMAT(LDBA,N),DET(2),ANORM + REAL ALPHA,beta, X(N),Y(LDBA) + CHARACTER*1 TRANS + INTEGER IPVT( N ),incx, IWORK(N) + DOUBLE PRECISION DL + INTEGER, PARAMETER :: N_REAL_KIND=KIND(TOL) + +#ifdef DOUBLE_KIND_EQUALS_REAL + INTEGER, PARAMETER :: N_DOUBLE_KIND=KIND(TOL) +#else + INTEGER, PARAMETER :: N_DOUBLE_KIND=KIND(DL) +#endif +c +c + IF (LDBA.NE.N) THEN + write(6,*) ' ERROR IN MINV -- Matrix MUST be square' + CALL ABOR1 (' ERROR IN MINV -- Matrix MUST be square') + ENDIF +c +c + IF (M.LT.0) THEN + write(6,*) ' ERROR IN MINV -- M MUST BE >= 0 ' + CALL ABOR1 (' ERROR IN MINV -- M MUST BE >= 0 ') + ENDIF +C +C Extraction de la matrice ZMAT a factoriser +C + DO JL = 1,LDBA + DO JC = 1,N + ZMAT(JL,JC) = AB(JL,JC) + ENDDO + ENDDO + CALL GECO + IF(RCOND.LE.TOL) THEN + WRITE(6,*)'MINV : MATRIX IS SINGULAR ' + RETURN + ENDIF +C +C Inversion de ZMAT +C + CALL GEDI +C + DET1 = DET(1) * 10.0 ** DET(2) +c +C Remplacement de A (ou ZMAT) par son inverse: +C + IF (MODE.NE.0) THEN + DO JL = 1,LDBA + DO JC = 1,N + AB(JL,JC) = ZMAT(JL,JC) + ENDDO + ENDDO + ENDIF +C +C Resolution des differents systemes lineaires +C + IF (M.GT.0) THEN + TRANS = 'N' + alpha = 1. + beta = 0. + incx = 1 + DO ISYS = 1,M +C +C Extraction du second membre X +C + DO JL = 1,LDBA + X(JL) = AB(JL,N+ISYS) + ENDDO + y = 0. + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + CALL dgemv(trans,ldba,n,alpha,zmat,ldba,x,incx,beta,y,incx) + ELSE + CALL sgemv(trans,ldba,n,alpha,zmat,ldba,x,incx,beta,y,incx) + ENDIF +C +C Sauvegarde de la solution +C + DO JL = 1,LDBA + AB(JL,N+ISYS) = y(JL) + ENDDO +C + ENDDO +C + ENDIF +C +c + RETURN + + CONTAINS + SUBROUTINE GECO + +c--- simulate LINPAC routines SGECO/DGECO using LAPACK + + ANORM= 0. + DO J = 1, N + ANORM = MAX(ANORM,SUM(ZMAT(1:N,J))) + ENDDO + + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + + CALL DGETRF (N,N,ZMAT,LDBA,IPVT,INFO) + IF (INFO < 0) THEN + WRITE(6,*) 'DGETRF RETURNS NEGATIVE INFO: ',INFO + CALL ABOR1 ('DGETRF RETURNS NEGATIVE INFO') + ENDIF + + CALL DGECON ('1',N,ZMAT,LDBA,ANORM,RCOND,SCRATCH,IWORK,INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'DGECON RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('DGECON RETURNS NON-ZERO INFO') + ENDIF + + ELSE + + CALL SGETRF (N,N,ZMAT,LDBA,IPVT,INFO) + IF (INFO < 0) THEN + WRITE(6,*) 'SGETRF RETURNS NEGATIVE INFO: ',INFO + CALL ABOR1 ('SGETRF RETURNS NEGATIVE INFO') + ENDIF + + CALL SGECON ('1',N,ZMAT,LDBA,ANORM,RCOND,SCRATCH,IWORK,INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'SGECON RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('SGECON RETURNS NON-ZERO INFO') + ENDIF + + ENDIF + + RETURN + END SUBROUTINE GECO + + SUBROUTINE GEDI + +c--- simulate LINPAC routines SGEDI/DGEDI using LAPACK + + DET(1) = 1.0E0 + DET(2) = 0.0E0 + TEN = 10.0E0 + + IF (JOB/10 /= 0) THEN + DETLOOP: DO I = 1, N + IF (IPVT(I) .NE. I) DET(1) = -DET(1) + DET(1) = ZMAT(I,I)*DET(1) + IF (DET(1) .EQ. 0.0E0) EXIT DETLOOP + + DO + IF (ABS(DET(1)) .GE. 1.0E0) EXIT + DET(1) = TEN*DET(1) + DET(2) = DET(2) - 1.0E0 + ENDDO + + DO + IF (ABS(DET(1)) .LT. TEN) EXIT + DET(1) = DET(1)/TEN + DET(2) = DET(2) + 1.0E0 + ENDDO + ENDDO DETLOOP + ENDIF + + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + CALL DGETRI (N,ZMAT,LDBA,IPVT,SCRATCH,SIZE(SCRATCH),INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'DGETRI RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('DGETRI RETURNS NON-ZERO INFO') + ENDIF + ELSE + CALL SGETRI (N,ZMAT,LDBA,IPVT,SCRATCH,SIZE(SCRATCH),INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'SGETRI RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('SGETRI RETURNS NON-ZERO INFO') + ENDIF + ENDIF + + RETURN + END SUBROUTINE GEDI + + END SUBROUTINE MINV diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt3.F90 b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt3.F90 new file mode 100644 index 0000000000000000000000000000000000000000..2dc3e1878374e61527e641764cfa6ebc62065388 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt3.F90 @@ -0,0 +1,335 @@ +SUBROUTINE CNT3 + +!**** *CNT3* - Controls integration job at level 3 + +! Purpose. +! -------- + +!** Interface. +! ---------- +! *CALL* *CNT3 + +! Explicit arguments : +! -------------------- +! None + +! Implicit arguments : +! -------------------- +! None + +! Method. +! ------- +! See documentation + +! Externals. +! ---------- +! Calls SU3YOM, SUALSPA, RERESF, CSTA, UPSPEC, SUORCTV, ARCHFP, +! CNMI, CMAC, FLTMODE, FLTRG, DFI, CNT4, SPNORM. +! Called by CNT2, TESTLI, ... + +! Reference. +! ---------- +! ECMWF Research Department documentation of the IFS + +! Author. +! ------- +! Mats Hamrud and Philippe Courtier *ECMWF* + +! Modifications. +! -------------- +! Original : 87-10-15 +! Modified : 90-01-22 Bill Heckley - option to filter initial state +! Modified : 91-09-25 p.c and JN.T - remove useless logic +! Modified : 92-10-19 Bill Heckley - reduce gravity mode amplitude +! to aid 3/4DVAR conditioning +! Modified : 92-12-24 G. Radnoti - option for digital filter init. +! Modified : 92-12-25 J-N Thepaut - update spectral array (conf 131) +! Modified : 93-04-13 L. Labbe - Init. grid point orography as +! control variable +! Modified : 94-03-03 R. El Khatib - Full-POS inplementation +! Modified : 94-03_09 " " - Use of NMI after the run (821) +! Modified : 94-07-05 J-N Thepaut - dummy call to cnt4 (conf 131) +! Modified : 94-07-26 D. Giard - call to MATCLOSE after filtering +! Modified : 95-09-04 R. El Khatib - FullPOS internal part 2 out of CNT4 +! Modified : 95-10-30 M.Hamrud - Changed CLCONF +! Modified : 95-09-25 J.-N Thepaut - write spec traj with FullPos +! Modified : 97-10-02 D. Dent - replace SECOND with USER_CLOCK +! Modified : 98-10-05 A. Untch - setup ozone chemistry if restart +! Modified : 99-09-17 M. Fisher - Don't modify SITR and SIPR +! Modified : 00-11-06 J. Barkmeijer- Use perturbed tendencies +! R. El Khatib : 01-08-07 Pruning options +! Modified : 02-09-30 V.Guidard&C.Fischer - 3dfgat coupling switched on +! J. Masek : 12-10-2002: Call of SUPONG moved from SUDYN. +! R. El Khatib : 02-21-20 Fullpos B-level distribution + remove IO scheme +! R. El Khatib : 02-11-12 Pruning LREFFP +! M.Hamrud 01-Oct-2003 CY28 Cleaning +! C. Fischer 04-02-26 Merge Aladin into Arpege/IFS cnt3 +! C. Fischer 04-10-20 call sueqlimsat +! Y.Tremolet 21-Jul-2004 Model error +! M. Jidane : 13-04-2006 : SWAP37 NO MORE IN USE +! M. Drusch: 17-Jan-2007 introduce nconf 302 +! B. Chapnik: 22-sep-2008 allows upspec for aladin +! G. Desroziers 22-Dec-2008: Enable transf. of ARPEGE file in GRIB format (to be used in femars) +! ------------------------------------------------------------------ + +USE PARKIND1 ,ONLY : JPIM, JPIB, JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK + +USE YOMDIM , ONLY : NFLEVG, NFLEVL, NSPEC2 ,NSMAX +USE YOMLUN , ONLY : NULOUT +USE YOMCT0 , ONLY : LFPART2, NCONF, NSTOP, LNF, LOBSC1, LELAM, NPROC +USE YEMCT0 , ONLY : LEQLIMSAT +USE YOMNMIA , ONLY : NVMOD ,NVMODPP ,LNMIRQ ,LSTDNMI ,& + & LNPROJ +USE YOMINI , ONLY : NEINI +USE YOMTIM , ONLY : RSTART ,RVSTART ,RTIMEF +USE YOMVAR , ONLY : LTEST ,LINITCV, LFEMARSF, LFEMARSD +USE YOMMP , ONLY : NUMVMO +USE YOEPHY , ONLY : LEO3CH, LEPCLD, LEPHYS +USE YOERAD , ONLY : LECO2VAR, LHGHG +USE YOMPHY , ONLY : LREASUR +USE YOMSP , ONLY : SPA3 ,SPA2 ,SPVOR ,SPDIV ,& + &SPT ,SPQ ,SPSP ,SPOR +USE YOMGEM , ONLY : VAH, VBH +USE YOMRIP , ONLY : NINDAT ,NSSSSS +USE STOPH_MIX , ONLY : LFORCENL +USE GFL_SUBS_MOD , ONLY : DEACT_CLOUD_GFL, REACT_CLOUD_GFL + +IMPLICIT NONE + +LOGICAL :: LLOVER + +REAL(KIND=JPRB) :: ZCT, ZVT, ZWT +REAL(KIND=JPRB), ALLOCATABLE :: ZSPA3(:,:,:), ZSPA2(:,:) + +CHARACTER (LEN = 9) :: CLCONF +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ----------------------------------------------------------- + +INTERFACE +#include "user_clock.h" +END INTERFACE + +#include "cmac.intfb.h" +#include "cnmi.intfb.h" +#include "cnt4.intfb.h" +#include "pertsekf_v2.intfb.h" +#include "cprep4.intfb.h" +#include "csta.intfb.h" +#include "dealnmi.intfb.h" +#include "dfi.intfb.h" +#include "elsac.intfb.h" +#include "fltmode.intfb.h" +#include "opdis.intfb.h" +#include "reresf.intfb.h" +#include "spnorm.intfb.h" +#include "su3yom.intfb.h" +#include "su4fpos.intfb.h" +#include "sueqlimsat.intfb.h" +#include "suforce.intfb.h" +#include "supong.intfb.h" +#include "swap73.intfb.h" +#include "updo3ch.intfb.h" +#include "updrgas.intfb.h" +#include "upspec.intfb.h" +#include "grbspa.intfb.h" +#include "suinif.intfb.h" + +! ----------------------------------------------------------- + +!* 1. Initialize LEVEL 3 COMMONS. +! --------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT3',0,ZHOOK_HANDLE) +WRITE(UNIT=NULOUT,FMT='('' START CNT3'')') +CALL SU3YOM +IF (LEPHYS) THEN + IF (LEPCLD) THEN + CALL REACT_CLOUD_GFL + ELSE + CALL DEACT_CLOUD_GFL + ENDIF +ENDIF +! ----------------------------------------------------------- + +!* 2. RESTART. +! -------- + +IF(NCONF == 1.OR.NCONF == 302) THEN +! ** OPDIS IS CALLED HERE ONLY TO AVOID MEMORY FRAGMENTAION ** + CLCONF='000000000' + CALL USER_CLOCK(PELAPSED_TIME=ZWT,PVECTOR_CP=ZVT,PTOTAL_CP=ZCT) + ZCT=ZCT-RSTART + ZVT=ZVT-RVSTART + ZWT=ZWT-RTIMEF + CALL OPDIS(CLCONF,'CNT3 ',ZCT,ZVT,ZWT,RSTART,RVSTART,RTIMEF) +ENDIF + +IF (.NOT.LELAM) THEN + +!* 3.0 ARPEGE/IFS INITIALIZATION +! ------------------------- + + IF ((NCONF == 1.OR.NCONF == 302).AND..NOT.LFPART2) THEN + CALL RERESF +! SETUP OZONE CHEMISTRY IN CASE OF RESTART + IF(.NOT.LNF.AND.LEO3CH) THEN + CALL UPDO3CH + ENDIF + IF(.NOT.LNF.AND.(LECO2VAR.OR.LHGHG)) THEN + CALL UPDRGAS + ENDIF + ELSE + LNF=.TRUE. + ENDIF +! ----------------------------------------------------------- + +!* 3. START. +! ------ + + IF (LNF) THEN + IF (LFORCENL) CALL SUFORCE + CALL CSTA + ENDIF + +!* 3.0 PERTURB INITIAL CONDITIONS FOR THE SEKF RUN +! ------------------------------------------- + + IF (NCONF == 302) THEN + CALL PERTSEKF_V2 + ENDIF + +!* 3.1 OASIS3 check +! ------------ + CALL SETOASIS3 + +!* 3.2 Update spectral array. +! ---------------------- + + IF (.NOT.LFPART2) THEN + IF (LOBSC1.AND.LINITCV) CALL UPSPEC + ENDIF + +!* 3.3 Read in ARPEGE format and write in GRIB format +! ---------------------------------------------- + + IF (LFEMARSF.OR.LFEMARSD) THEN + IF (NPROC /= 1) THEN + WRITE (NULOUT,*)'CNT3: must run conf CNT3 with LFEMARSF or LFEMARSD with one proc only !' + CALL ABOR1('CNT3: ABOR1 CALLED') + ENDIF +! Read first file + LREASUR=.FALSE. + CALL SUINIF(6) + IF (LFEMARSD) THEN + ALLOCATE (ZSPA3(SIZE(SPA3,1),SIZE(SPA3,2),SIZE(SPA3,3))) + ALLOCATE (ZSPA2(SIZE(SPA2,1),SIZE(SPA2,2))) + ZSPA3(:,:,:)=SPA3(:,:,:) + ZSPA2(:,:)=SPA2(:,:) +! Read second file and make the difference + CALL SUINIF(7) + SPA3(:,:,:)=SPA3(:,:,:)-ZSPA3(:,:,:) + SPA2(:,:)=SPA2(:,:)-ZSPA2(:,:) + DEALLOCATE (ZSPA3) + DEALLOCATE (ZSPA2) + ENDIF + WRITE(NULOUT,*) 'norms of increments at date ',NINDAT + CALL SPNORM(0) +! Write in GRIB format + CALL GRBSPA(NFLEVL,NSMAX,NSPEC2,VAH,VBH,SPVOR,SPDIV,SPT,SPQ,SPSP,& + &SPOR,NINDAT,NSSSSS) + IF (LHOOK) CALL DR_HOOK('CNT3',1,ZHOOK_HANDLE) + RETURN + ENDIF + +! ----------------------------------------------------------- + +!* 4. FILTERING +! --------- + + IF (.NOT.LFPART2) THEN + +!* 4.1 Jc COMPUTATION. +! --------------- +! ALL COMPUTATION IN CNT3AD + +!* 4.2 NORMAL MODE INITIALIZATION. +! --------------------------- + + IF(LNF) THEN + CALL SPNORM(0) + IF (LNMIRQ) THEN + IF (LSTDNMI) THEN + CALL CNMI + ELSE + CALL CMAC + ENDIF + ELSEIF (LNPROJ) THEN + CALL FLTMODE(NVMOD,NVMODPP,NUMVMO) + ENDIF + ENDIF + +!* 4.4 Jg COMPUTATION. +! --------------- +! ALL COMPUTATION IN CNT3AD + +! ----------------------------------------------------------- + +!* 4.5 DIGITAL FILTER INITIALIZATION +! ----------------------------- + + IF (LNF.AND.(NEINI == 2.OR.NEINI == 4)) CALL DFI + + ENDIF + +ELSE + +!* 4.7 LAM INITIALIZATION +! ------------------ + + IF (NCONF/100 == 0.OR.NCONF/100 == 2.OR.NCONF == 801.OR.& + & NCONF == 302.OR.NCONF == 501.OR.NCONF == 401.OR.& + & ((NCONF/100==1).AND.(NSTOP>0)).OR.& + & NCONF == 601) THEN + IF(LTEST.AND.NCONF == 801) CALL SWAP73 + CALL ELSAC + IF(LTEST.AND.NCONF == 801) CALL SWAP73 + ENDIF + + IF (.NOT. LFPART2 .AND. LEQLIMSAT) CALL SUEQLIMSAT + + ! sponge setup + IF ( NFLEVG > 1 ) THEN + CALL SUPONG + ENDIF + +ENDIF + +! ----------------------------------------------------------- + +!* 5. INTEGRATION. +! ------------ + +IF (.NOT.LFPART2) THEN + +! Deallocate arrays only used in normal mode initialization + + IF (NCONF/100 == 0 .OR. NCONF == 302) THEN + CALL DEALNMI + ENDIF + + CALL CNT4 + +ELSE + CALL SU4FPOS(INT(0,JPIB)) + CLCONF(1:1)='0' + CALL CPREP4(CLCONF,LLOVER) +ENDIF + +WRITE(UNIT=NULOUT,FMT='('' END CNT3'')') + +! ------------------------------------------------------------------ + +IF (LHOOK) CALL DR_HOOK('CNT3',1,ZHOOK_HANDLE) +END SUBROUTINE CNT3 diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt4ad.F90 b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt4ad.F90 new file mode 100644 index 0000000000000000000000000000000000000000..1223fc5b0c2c655b2d72ed6bc03fdf8c718d77f9 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/control/cnt4ad.F90 @@ -0,0 +1,1007 @@ +SUBROUTINE CNT4AD + +USE PARKIND1 ,ONLY : JPIM, JPIB, JPRB +USE YOMHOOK ,ONLY : LHOOK ,DR_HOOK + +USE YOMDIMO , ONLY : NACTIM +USE YOMECTAB , ONLY : NTSLOTNO ,NTSLOTNOS,NTSLOTNOE,NTSLVSTST +USE YOMLUN , ONLY : NULOUT +USE YOMCT0 , ONLY : LFPART2 ,LNHDYN ,NCONF ,NSTOP ,NFRPOS ,NFRISP ,& + & NFRHIS ,NFSRHIS ,NFRGDI ,NFRSDI ,NFRDHFG ,NFRDHFZ ,& + & NFRDHFD ,NFRDHP ,NFRMASSCON,LTWOTL ,& + & LFPOS ,LOBS ,LSIMOB ,LSITRIC ,NPRINTLEV ,& + & NSTART ,LELAM +USE YOMCT2 , ONLY : NSTAR2 ,NSTOP2 +USE YOMCT3 , ONLY : NSTEP +USE YOMDYN , ONLY : TSTEP, TDT, LSTRHD, LSIDG, NSITER, NCURRENT_ITER +USE YOMVAR , ONLY : NSIM4D ,NFRREF ,NFRANA ,& + & NFRGRA ,NSIM4DL ,LTRREF ,& + & LTWGRA ,LGRASCAL, LJCDFI, LUSEJCDFI, LMODERR ,LAVARC , LFCOBSTEST +USE YOMGLOBS , ONLY : LPREMPOBS +USE YOMHCP , ONLY : NHECP +USE YOMCFU , ONLY : NFRCFU +USE YOMXFU , ONLY : NFRXFU ,NFRRAZ +USE YOMSENS , ONLY : NJROPT +USE YOMVRTL , ONLY : L801TL ,LOBSTL +USE YOMRES , ONLY : NFRRES +USE YOMSKF , ONLY : LTWSKFZ +USE YOMPPC , ONLY : LOPPCNT +USE YOMMP , ONLY : NOUTTYPE, NPSP +USE YOMIO , ONLY : LPPTSF +USE YOMTIM , ONLY : RSTART ,RVSTART ,RTIMEF +USE YOMTNEWT , ONLY : LIDMODEL +USE YOMSP , ONLY : SPSP, SPA3, SPD2D, SP5A3, SP5A2, SPA1, SP5A1 +USE TRAJECTORY_MOD, ONLY: LTRAJGP, GET_TRAJ_SPEC +USE YOMLCZ , ONLY: L_SOS, L_EOFS, NSTEPS_PER_STATE, YSTATE_VECTOR_4D, & + & LOCNORM, LFORCE, YSPFORCE +USE YOMMODEL_ERROR,ONLY: NTYPE_MODERR, NDIM_MODERR, MSTEPERR, NPRTMODERR, & + & SPMODERR, GPMODERR, SPMODERR_HYB, GPMODERR_HYB, & + & N_COUPLED_WINDOWS +USE YEMCT0 , ONLY : NECOAD ,LE0COTA ,NFRLSG ,N1LSG +USE YOMDFI , ONLY : NSTDFI +USE CONTROL_VECTORS +USE SPECTRAL_FIELDS_MOD +USE YEMJK , ONLY : LEJK + +!**** *CNT4AD* - Controls adjoint model at level 4 + +! Purpose. +! -------- +! Controls adjoint integration. + +!** Interface. +! ---------- +! *CALL* *CNT4AD + +! Explicit arguments : +! -------------------- +! None + +! Implicit arguments : +! -------------------- +! None + +! Method. +! ------- +! See documentation + +! Externals. +! ---------- +! Called by CNT3. + +! Reference. +! ---------- +! ECMWF Research Department documentation of the IFS + +! Author. +! ------- +! Mats Hamrud and Philippe Courtier *ECMWF* + +! Modifications +! ------------- +! Original : 87-10-15 +! Modified by D. Vasiljevic and J. Pailleux: 90-11-23 +! Modified by F. Rabier and J.N Thepaut: 91-01-15 +! P. Courtier: 91-08-07 (transforms calls) +! J.N Thepaut: 91-08-22 (4D with real data events managment +! + comparison model - op.analysis) +! W Heckley : 91-10-02 3-D (comparison model - obs) +! D. Vasiljevic: 92-05-08 IO and OBS. IO schemes +! L. Labbe: 93-04-15 Gradient for sensitivity job 8xx +! 08/03/1993 Additional horizontal diffusion on not stretched sphere +! (K. YESSAD). +! F. Rabier : 93-12-10 Write gradient according to post-processing set-u +! + possibility of writing it with respect to SCALP inner-pr +! K. YESSAD (MARCH 1994): Modifications in the semi-implicit scheme +! (add of call to SUHEG, call SUHEL useless). +! K. YESSAD (APRIL 1994): Unified horizontal diffusion scheme. +! M.Hamrud: 95-10-30 (New form of CLCONF) +! K. YESSAD (NOV 1995): removal of HDC horizontal diffusion scheme. +! F. Rabier : 96-09-25 Proper call to stepo(V00..0) in nconf 801 +! M.Hamrud : Optim, cleaning +! M. Fisher : 97-01-31 Write gradient at intermediate time +! C. Temperton 97-02-24: modified first timestep when XIDT>0 +! T. Bergot 97-08 : write gradient / IHISTS +! + read RFfile only if NJROPT=1 +! G. Hello : 97-08-05 Write gradient with implicit inner product +! F. Rabier : 98-01-06 call PPFLUSH in nconf 801 +! C. Soci : 98-06-15 introduction of YOMCAIN/YEMECAIN +! M. Charron: November 98 (nonhydrostatic dynamics, incomplet) +! C. Temperton 98-11-05: adjoint of two-time-level scheme +! C. Fischer : 98-11-20 Nullify boundaries for aladin/AD if asked +! C. Temperton 99-08-16: removed redundant RKROMA +! P. Gauthier :99-08-10: Jc-dfi (adjoint) +! C. Fischer : 99-12-27 Prepare for nsiter>0 +! C. Soci : 00-04-05 ZVANA&ZVAGR allocatable to include mean wind; +! write LSG at intermediate timesteps +! C. Temperton 00-03-24: bugfixes for 2TL scheme: RSTATI=>ZSTATI +! Y. Tremolet 00-08-11: use module TRAJECTORY +! C. Fischer: 02-03-13: merge ecain* into cain* +! J.Vivoda (03-2002) PC schemes for NH dynamics (LPC_XXXX keys) +! G. Desroziers : 02-09-16 also treat Aladin mean wind trajectory +! 01-Oct-2003 M. Hamrud CY28 Cleaning +! 25-Feb-2004 C. Fischer Merge Aladin into Arpege/IFS cnt4ad +! Dec-2003 K. Yessad cleaning in horizontal diffusion. +! 10-Jun-2004 J. Masek NH cleaning (LPC_NOTR) +! 01-Jul-2004 K. Yessad Cleaning in PC scheme, and paragraph numbering +! harmonisation with the direct and the TL codes (when possible!). +! Y.Tremolet 18-Mar-2004 Model error changes +! R. El Khatib : 05-02-21 specific frequency array to reset instant. fluxes +! V.Guidard&C.Fischer: 01-Apr-2004 Introduction of Jk event +! K. Yessad 08-Feb-2005 SI scheme for ARPEGE NH model +! K. Yessad 21-Apr-2005 cleanings for SPNORM-printings. +! D. Salmond 21-09-05 Fix for LTRAJGP=true +! B. Chapnik 02-May-2007 fgat : temporal loop considered only if Tstep corresponds to tslot +! and call to stepo only when needed +! Y. Seity 11-01-08 add ISHISTS for surfex output files +! Y.Tremolet 27-Nov-2008 Jc-DFI for long windows +! F. Vana 13-Jan-2009: removed special specHD setup when LSLHD +! End Modifications + +!------------------------------------------------------------------------------ + +IMPLICIT NONE + +CHARACTER (LEN = 9) :: CLCONF +CHARACTER (LEN = 9) :: CLCON9 +CHARACTER (LEN = 120) :: CLYFILE +CHARACTER (LEN = 10) :: CLTIMEOD, CLDAT(3) + +! 1 : configuration of WRTRA write the trajectory +! 2 : configuration of LTINV inverse Legendre transform +! 3 : configuration of FTINV inverse Fourier transform +! 4 : configuration of GPC grid point computations +! 5 : configuration of POS post processing +! 6 : configuration of OBS comparison to observations +! 7 : configuration of FTDIR direct Fourier transform +! 8 : configuration of LTDIR direct Legendre transform +! 9 : configuration of SPC spectral space computations + +! ZVANA : working array containing the model state. +! ZVAGR : working array containing the gradient. +TYPE(control_vector) :: YL_ZVANA, YL_ZVAGR + +! - IPOSTS : ARRAY CONTAINING POST-PROCESSING TIME STEPS +INTEGER(KIND=JPIM) :: IPOSTS(0:NSTOP/NFRPOS) +! - IPISPS : ARRAY CONTAINING ISP (Animation !) TIME STEPS +INTEGER(KIND=JPIM) :: IPISPS(0:NSTOP/NFRISP) +! - IHISTS : ARRAY CONTAINING TRAJECTORY TIME STEPS +INTEGER(KIND=JPIM) :: IHISTS(0:NSTOP/NFRHIS) +! - ISHISTS : ARRAY CONTAINING TRAJECTORY TIME STEPS FOR SURFACE +INTEGER(KIND=JPIM) :: ISHISTS(0:NSTOP/NFSRHIS) +! - IRESTS : ARRAY CONTAINING RESTART TIME STEPS +INTEGER(KIND=JPIM) :: IRESTS(0:NSTOP/NFRRES) +! - IGDITS : GRID POINT DIAGNOSTICS TIME STEPS +INTEGER(KIND=JPIM) :: IGDITS(0:NSTOP/NFRGDI) +! - ISDITS : SPECTRAL DIAGNOSTICS TIME STEPS +INTEGER(KIND=JPIM) :: ISDITS(0:NSTOP/NFRSDI) +! - IREFTS : ARRAY CONTAINING SIMULATED OBS. EVENTS STEPS +INTEGER(KIND=JPIM) :: IREFTS(0:NSTOP/NFRREF) +! - IDHFGTS : WRITE OUT TIME STEPS FOR GLOBAL MEANS DDH +INTEGER(KIND=JPIM) :: IDHFGTS(0:NSTOP/NFRDHFG) +! - IDHFZTS : WRITE OUT TIME STEPS FOR ZONAL MEANS DDH +INTEGER(KIND=JPIM) :: IDHFZTS(0:NSTOP/NFRDHFZ) +! - IDHFDTS : WRITE OUT TIME STEPS FOR LIMITED AREAS DDH +INTEGER(KIND=JPIM) :: IDHFDTS(0:NSTOP/NFRDHFD) +! - IDHPTS : PAS DE TEMPS DE SORTIES IMPRIMEES DES DDH +INTEGER(KIND=JPIM) :: IDHPTS(0:NSTOP/NFRDHP) +! - ICFUTS : CONTROLS ACCUMULATED FLUX WRITE-UP +INTEGER(KIND=JPIM) :: ICFUTS(0:NSTOP/NFRCFU) +! - IXFUTS : CONTROLS INSTANTANEOUS FLUX WRITE-UP +INTEGER(KIND=JPIM) :: IXFUTS(0:NSTOP/NFRXFU) +! - IRAZTS : CONTROLS INSTANTANEOUS FLUX RESET +INTEGER(KIND=JPIM) :: IRAZTS(0:NSTOP/NFRRAZ) +! - IANATS : ANALYSIS WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IANATS(0:NSIM4DL/NFRANA) +! - IGRATS : GRADIENT WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IGRATS(0:NSIM4DL/NFRGRA) +! - IMASSCONS: ARRAY CONTAINING mass conservation fixup time steps +INTEGER(KIND=JPIM) :: IMASSCONS(0:NSTOP/NFRMASSCON) +! - ILSGTS : LBC GRADIENT WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: ILSGTS(0:NSTOP/NFRLSG) +! - IHECPS : AVARC WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IHECPS(0:NSTOP) + +REAL(KIND=JPRB), ALLOCATABLE :: ZSPA3(:,:,:), ZSPSP(:) + +INTEGER(KIND=JPIM) :: IACTIM, IDIGLST, IOUTTYPE, ITIME, JSTEP, I, jj +INTEGER(KIND=JPIM) :: IHOUR, IMIN +INTEGER(KIND=JPIM) :: IVALUES(9) +INTEGER(KIND=JPIM) :: JTSLOT, JSITER, IWEAK +INTEGER(KIND=JPIM) :: IAVARE, ipersub, istep, isub + +! LLSLOT: logical switched on if a slot is available. +LOGICAL :: LL3DVAR, LLMLPP, LLNOPPFIL, LLSLOT, LLFIRST +LOGICAL :: LLSPNRM, LLGPNRM +LOGICAL :: LLWRELSG,llevs +LOGICAL :: LLSLOT_FGAT, LLFGATLAM + +REAL(KIND=JPRB) :: ZCT, ZVT, ZWT, ZSTATI +REAL(KIND=JPRB) :: ZSEC, ZT1, ZT2 +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ----------------------------------------------------------------- + +INTERFACE +#include "user_clock.h" +END INTERFACE + +#include "abor1.intfb.h" +#include "avarcad.intfb.h" +#include "cain.intfb.h" +#include "cainad.intfb.h" +#include "cainin.intfb.h" +#include "caininad.intfb.h" +#include "copygom5t0.intfb.h" +#include "costra.intfb.h" +#include "digfilad.intfb.h" +#include "elsin0ta.intfb.h" +#include "evarjkad.intfb.h" +#include "ewrlsgrad.intfb.h" +#include "gpnorm_gfl.intfb.h" +#include "lcnorad.intfb.h" +#include "moevar.intfb.h" +#include "monio.intfb.h" +#include "monvar.intfb.h" +#include "obsprep.intfb.h" +#include "obsvad.intfb.h" +#include "ppclose.intfb.h" +#include "ppflush.intfb.h" +#include "ppreq.intfb.h" +#include "pre_obshorad.intfb.h" +#include "spnorm.intfb.h" +#include "stepo.intfb.h" +#include "stepoad.intfb.h" +#include "suhdu.intfb.h" +#include "suheg.intfb.h" +#include "sunhsi.intfb.h" +#include "sutric.intfb.h" +#include "tslvstst.intfb.h" +#include "updtim.intfb.h" +#include "gridpoint_norm.intfb.h" +#include "add_moderr_ad.intfb.h" +#include "weak_constraint_ad.intfb.h" + +! ----------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT4AD',0,ZHOOK_HANDLE) + +! ----------------------------------------------------------------- + +!* 1. Initialize. +! ----------- + +CALL GSTATS(23,0) +WRITE(NULOUT,*)'START CNT4AD, NSIM4D=',NSIM4D + +LL3DVAR = (NCONF == 131.AND.NSTOP == 0) +LLWRELSG=NCONF/100 == 8 .AND. LELAM .AND. N1LSG==1 +LLFGATLAM=LELAM .AND. LIDMODEL !BC fgat for aladin +! ----------------------------------------------------------------- + +!* 2. Prepare occurences of I/O and 3D/4D var events. +! ---------------------------------------------- + +CALL MONIO(IPOSTS,IPISPS,IHISTS,ISHISTS,IGDITS,ISDITS,IDHFGTS,IDHFZTS,& + & IDHFDTS,IDHPTS,ICFUTS,IXFUTS,IRESTS,IMASSCONS,IRAZTS) +CALL MONVAR(IREFTS,IANATS,IGRATS,IHECPS) + +IAVARE = NHECP(0) +IF (LELAM) THEN + CALL MOEVAR(ILSGTS) +ENDIF + +!* events not implemented +IDHFGTS(0:NSTOP/NFRDHFG) = 0 +IDHFZTS(0:NSTOP/NFRDHFZ) = 0 +IDHFDTS(0:NSTOP/NFRDHFD) = 0 +IDHPTS (0:NSTOP/NFRDHP) = 0 + +! print config + +IF (NPRINTLEV >= 1) THEN + WRITE(UNIT=NULOUT,FMT='('' GRADIENT WRITE-UP, IGRATS '')') + WRITE(UNIT=NULOUT,FMT='(40I2)')IGRATS + WRITE(UNIT=NULOUT,FMT='('' HISTORY WRITE-UP, IHISTS '')') + WRITE(UNIT=NULOUT,FMT='(40I2)')IHISTS +ENDIF +! ----------------------------------------------------------- + +!* 3. ADJOINT integration. +! -------------------- + +!* 3.0 Preliminary calculations. + +NSTEP = NSTOP + +LLSLOT = .FALSE. +ZSTATI=REAL(NINT(NSTEP*TSTEP),JPRB) + +LLMLPP = LTWSKFZ .AND. IHISTS(NSTEP/NFRHIS) == 1.AND. MOD(NSTEP,NFRHIS) == 0 + +IACTIM = NACTIM + +LLSPNRM=ISDITS(NSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(NSTEP,MAX(1,NFRSDI)) == 0 +IF(LLSPNRM) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT START CNT4AD '')') + CALL SPNORM(0) + CALL GPNORM_GFL +ENDIF + +CLCONF(1:9) = '000000000' + +!* 3.21 Miscellaneous. + +! Computations in observation space + +IF (.NOT.LSIMOB) THEN + IF(NCONF/100 == 1) THEN + IF (LOBSTL.AND.LOBS) THEN + +! PREPARE TRAJECTORY IN OBSERVATION SPACE + + CALL USER_CLOCK(PELAPSED_TIME=ZWT,PVECTOR_CP=ZVT,PTOTAL_CP=ZCT) + ZCT=ZCT-RSTART + ZVT=ZVT-RVSTART + ZWT=ZWT-RTIMEF + RSTART=RSTART+ZCT + RVSTART=RVSTART+ZVT + RTIMEF=RTIMEF+ZWT + CALL COPYGOM5T0 + WRITE(NULOUT,'('' NSTEP ='',I6,'' OBSVAD '',A9)')& + & NSTEP,CLCONF + CALL OBSVAD + IF(LPREMPOBS) THEN + CALL PRE_OBSHORAD + ENDIF + ENDIF + LLFIRST = .TRUE. + LLSLOT = .FALSE. + DO JTSLOT=NACTIM,1,-1 +! DIRECT + IF(LL3DVAR.OR.NTSLVSTST(JTSLOT) == NSTEP ) THEN + LLSLOT = .TRUE. + NTSLOTNO = IACTIM + IF(LLFIRST) THEN + LLFIRST = .FALSE. + NTSLOTNOS = IACTIM + ENDIF + NTSLOTNOE = IACTIM + IACTIM = IACTIM-1 + WRITE(UNIT=NULOUT,FMT='('' CNT4AD (ADJOINT INTEGRATION);'' & + & ,'' TIME SLOT NO : '',I3 & + & ,'' TO BE USED WITH TIME STEP (NSTEP) : '',I3 & + & ,'' ; MODEL TIME (SINCE START) : '',F6.0)')& + & NTSLOTNO,NSTEP,ZSTATI + CALL FLUSH(NULOUT) + IF (LOBS) THEN + CALL OBSPREP('V') + ENDIF + ENDIF + ENDDO + IF(LLSLOT) THEN + NTSLOTNO = NTSLOTNOE + IF (LOBSTL) THEN +! GOM-ARRAYS ALREADY PREPARED + ELSE + IF (LTRREF) THEN + CLCONF(1:9) = 'B00000000' + ELSE + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + IF(LL3DVAR) THEN + CLCONF(2:2) = 'K' + CLCONF(3:3) = 'D' + ELSE + CLCONF(2:2) = 'E' + CLCONF(3:3) = 'C' + ENDIF + CLCONF(6:6) = 'V' + CALL STEPO(CLCONF) + ENDIF + ENDIF +! ADJOINT + CLCON9(1:9) = '000000000' + IF (LLSLOT) THEN + IF (LL3DVAR) THEN + CLCON9(2:2) = 'G' + CLCON9(3:3) = 'B' + ELSEIF (.NOT.LIDMODEL) THEN + CLCON9(2:2) = 'A' + CLCON9(3:3) = 'A' + ENDIF + IF (LOBS) CLCON9(6:6) = 'V' + ENDIF + IF (CLCON9(1:9)/='000000000') CALL STEPOAD(CLCON9) + ENDIF +ELSE + IF(.NOT.LTRAJGP) THEN + IF (LTRREF) THEN + CLCONF(1:9) = 'B00000000' + ELSE + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + ENDIF +ENDIF + +IF (.NOT.LSIMOB) THEN +ELSE + IF(NCONF == 801) THEN + +! ----- observation events management ---------------------- + + IF(IREFTS(NSTEP/NFRREF) == 1.AND.MOD(NSTEP,NFRREF) == 0.0_JPRB ) THEN + +! ----- read observations ---------------------------------- + + LTRREF=.TRUE. + + IF (NJROPT /= 1) THEN + +! do nothing!! + + ELSE + +! read RF file + + IF(L801TL)THEN + CLCONF(1:1)='V' + ELSE + CLCONF(1:1)='B' + ENDIF + CLCONF(2:9)='00000000' + CALL STEPO(CLCONF) + ENDIF + CALL COSTRA + LTRREF=.FALSE. + + ENDIF + ENDIF +ENDIF + +!* 3.9.4 a Comparison to reference state (AVARC) +IF (LAVARC.AND.IHECPS(NSTEP) == 1) THEN + WRITE(NULOUT,*) 'adjoint starts: AVARC event at NSTOP event = ',IAVARE + CALL AVARCAD(IAVARE) + IAVARE = IAVARE - 1 +ENDIF +! ----- add the gradient of the Jk cost function + IF (LELAM) THEN + IF (LEJK) CALL EVARJKAD + ENDIF + +! 3.1.1 a Time filtering constraint based on digital filter +! is being computed +! Its contribution is added to SPA3, SPA2 and SPA1. +! ----- adjoint of Jc-dfi for NSTOP ---------------- + +IF (LJCDFI.AND.LUSEJCDFI) THEN +! Step should be local to subwindow + IF (N_COUPLED_WINDOWS>1) THEN + isub=1 + istep=0 + IF (NSTEP>0) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + istep=MOD(NSTEP-1,ipersub)+1 + isub=(NSTEP-1)/ipersub+1 + ENDIF + ELSE + isub=1 + istep=NSTEP + ENDIF + IDIGLST = 2*NSTDFI + IF (NSIM4D==0.AND.N_COUPLED_WINDOWS>0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD nstep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) +ENDIF + +! 3.??? Write-up of the gradient (part not present in cnt4tl) + +IF ((NCONF/100 == 1.OR.NCONF/100 == 8) .AND. LGRASCAL) THEN + CALL ALLOCATE_CTLVEC(YL_ZVANA) + CALL ALLOCATE_CTLVEC(YL_ZVAGR) +ENDIF + +! 3.??? ??? (part not present in cnt4tl) + +IF (NCONF == 601.AND. LLMLPP) THEN + CLCONF='A00000000' + IOUTTYPE=NOUTTYPE + NOUTTYPE=1 + CALL STEPO(CLCONF) + NOUTTYPE=IOUTTYPE +ELSEIF (NCONF/100 == 1.OR.NCONF/100 == 8) THEN + IF ( (IGRATS(NSIM4D/NFRGRA) == 1.AND.& + & MOD(NSIM4D,NFRGRA) == 0.OR.NSIM4D == NSIM4DL)& + & .AND.(IHISTS(NSTEP/NFRHIS) == 1.AND.& + & MOD(NSTEP,NFRHIS) == 0) )THEN + + IF (LGRASCAL) THEN +! WRITE GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT +! SAVE GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + WRITE(NULOUT,'(''LGRASCAL=true, sens-grad scaled by the inverse of scalp'')') + CALL CAININ (YL_ZVANA) +! GET GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT + YL_ZVAGR = 0.0_JPRB + IF (LFORCE) THEN + CALL CAIN (YSPFORCE) + ENDIF + CALL CAINAD (YL_ZVAGR) + CALL CAIN (YL_ZVAGR) + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. +! FETCH GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAIN (YL_ZVANA) + ELSE +! WRITE GRADIENT WITH RESPECT TO IMPLICIT(STANDARD) INNER-PRODUCT + WRITE(NULOUT,'(''LGRASCAL=false, sens-grad not scaled'')') + IF (LFORCE) THEN + CALL CAIN(YSPFORCE) + ENDIF + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. + ENDIF + ENDIF +ENDIF + +!* TEMPORAL LOOP + +IF(NSTART /= NSTAR2 .OR.& + & NSTOP /= NSTOP2 ) THEN + WRITE(NULOUT,'('' NSTART, NSTOP ARE DIFFERENT FROM NSTAR2, NSTOP2'')') + WRITE(NULOUT,'('' NSTART, NSTOP, NSTAR2, NSTOP2: '',4(I5,1X))') & + & NSTART, NSTOP, NSTAR2, NSTOP2 + WRITE(NULOUT,'('' THEREFORE, TIMESLOT VS TIMESTEP IS RECALCULATED'')') + CALL TSLVSTST(NSTAR2,NSTOP2,TSTEP,NACTIM,NTSLVSTST) +ENDIF + +!* 3.1 Main temporal loop + +TEMPORAL_LOOP: DO JSTEP=NSTOP2-1,NSTAR2,-1 + +IF (LLFGATLAM .AND. (ALL(NTSLVSTST /= JSTEP)) ) CYCLE + + CALL USER_CLOCK(PTOTAL_CP=ZT1) + +!* 3.2 Current value of the time step length + + IF(JSTEP == 0.OR.LTWOTL)THEN + TDT=TSTEP + ELSE + TDT=2.0_JPRB*TSTEP + ENDIF + +!* 3.3 Reset of time dependant constants (clock,astronomy...) + + CALL UPDTIM(JSTEP,TDT,TSTEP,.FALSE.) + +!* 3.4 Reset semi-implicit solver in the multilevel model, and the +! additional horizontal diffusion operator. + + IF (.NOT.LELAM) THEN + + ! * SI scheme: + IF (LNHDYN) THEN + CALL SUNHSI(NULOUT,.FALSE.) + ELSE + IF (LSIDG) THEN + CALL SUHEG + ENDIF + IF (LSITRIC.AND.(JSTEP == NSTOP-2.OR.(JSTEP == 1.AND..NOT.LTWOTL))) THEN + CALL SUTRIC + ENDIF + ENDIF + + ! * HD scheme: + IF (LSTRHD) THEN + ! * This call to SUHDU actually does something in a leap-frog scheme if + ! TDT=2*TSTEP for the current jstep, and TDT=TSTEP for the previous one + CALL SUHDU + ENDIF + + ELSE + + ! * SI scheme: + IF (LNHDYN .AND. (NSTOP > 0 .AND. .NOT.LFPART2)) THEN + CALL SUNHSI(NULOUT,.FALSE.) + ENDIF + + ! * HD scheme: + + ENDIF + +!* 3.6 Reset YOMCT3 etc. + + NSTEP=JSTEP + LLSLOT=.FALSE. + ZSTATI=REAL(NINT(NSTEP*TSTEP),JPRB) + + LLSPNRM=ISDITS(JSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(JSTEP,MAX(1,NFRSDI)) == 0 + LLGPNRM=IGDITS(JSTEP/MAX(1,NFRGDI)) == 1.AND.MOD(JSTEP,MAX(1,NFRGDI)) == 0 + IF(LLSPNRM) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT NSTEP CNT4AD '',I4)')NSTEP + CALL SPNORM(0) + ENDIF + IF (LLGPNRM) THEN + CALL GPNORM_GFL + ENDIF + IF (LFCOBSTEST.AND.(NSIM4D<=4.OR.NSIM4D==NSIM4DL)) THEN + WRITE(NULOUT,*)'LFSOBS NORMS AT CNT4AD' + CALL SPNORM(0) + CALL GPNORM_GFL + ENDIF + +!* 3.6.1 Nullify GT3 + + IF (LELAM.AND.(NECOAD < 0.OR.LE0COTA).AND.(NSTOP /= 0)) THEN + CALL ELSIN0TA + ENDIF + +!* 3.8 Reset time dependent variables + + LLMLPP = LTWSKFZ .AND. IHISTS(JSTEP/NFRHIS) == 1 & + & .AND. MOD(JSTEP,NFRHIS) == 0 + +!* 3.8.6 Add the forcing that was saved during the TL integration + + IF (L_SOS) THEN + IF (MOD((JSTEP+1),NSTEPS_PER_STATE)==0 .AND. JSTEP+1 < NSTOP) THEN + I = (JSTEP+1)/NSTEPS_PER_STATE + ALLOCATE (ZSPA3(SIZE(SPA3,1),SIZE(SPA3,2),SIZE(SPA3,3))) + ZSPA3(:,:,:) = SPA3(:,:,:) + IF (NPSP==1) THEN + ALLOCATE (ZSPSP(SIZE(SPSP))) + ZSPSP(:) = SPSP(:) + ENDIF + CALL CAININAD (YSTATE_VECTOR_4D(I)) + IF(LOCNORM) CALL LCNORAD + SPA3(:,:,:) = SPA3(:,:,:) + ZSPA3(:,:,:) + DEALLOCATE (ZSPA3) + IF (NPSP==1) THEN + SPSP(:) = SPSP(:) + ZSPSP(:) + DEALLOCATE (ZSPSP) + ENDIF + ENDIF + ENDIF + +!* 3.??? Prepare for post-processing (part not present in cnt4tl). + + IF(LOPPCNT.AND.LLMLPP .AND. NCONF == 601.AND..NOT.LFPOS) THEN + ITIME=JSTEP*TSTEP+0.5_JPRB + CALL PPREQ(INT(ITIME,JPIB),LLNOPPFIL,CLYFILE) + IF(LLNOPPFIL) THEN + LLMLPP=.FALSE. + ENDIF + ENDIF + +!* 3.8.7 Manage trajectory +! Initialize CLCONF for call to STEPO (trajectory) + + IF (LTRREF) THEN + CLCONF(1:9) = 'BE0000000' + ELSE + IF(.NOT.LTRAJGP) THEN + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + CLCONF(1:9)='0E0000000' + ENDIF + +! first call for (first-guess) trajectory +! don't understand anymore why this is only for Aladin (CF) ... +! In cnt4tl this is also called for lelam=false (K.Y.) + IF(.NOT.LTRAJGP.AND.LELAM .AND. .NOT. LIDMODEL) THEN + CALL STEPO(CLCONF) + ENDIF + +!* 3.12 MODERR + + IF (LMODERR.AND.NTYPE_MODERR==2) CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + +!* 3.11 Corrector step. + + IF(NSITER > 0) THEN + + ! Last step: + + NCURRENT_ITER=NSITER + CLCON9(1:9)='0AAS00AAA' + CALL STEPOAD(CLCON9) + + ! Iteration step: + + DO JSITER = NSITER-1, 1, -1 + NCURRENT_ITER=JSITER + CLCON9(1:9)='0AAS00AAS' + CALL STEPOAD(CLCON9) + ENDDO + + ENDIF + +!* 3.10 Ordinary time step (predictor if PC scheme). +! Initialize CLCON9 for call to STEPOAD + + CLCON9(1:9)='0AAA00AAA' + NCURRENT_ITER=0 + + IF (NSITER == 0) THEN + CLCON9(9:9)='A' + ELSEIF (NSITER > 0) THEN + CLCON9(9:9)='T' + ELSEIF(NSITER < 0) THEN + CALL ABOR1('NEGATIVE NSITER NOT ALLOWED') + ENDIF + + IF (LIDMODEL) THEN + IF (JSTEP/=0) THEN + CLCON9(2:2)='0' + CLCON9(3:3)='0' + ENDIF + CLCON9(4:4)='0' + CLCON9(5:5)='0' + CLCON9(7:7)='0' + CLCON9(8:8)='0' + CLCON9(9:9)='0' + ENDIF + +!* 3.??? Observations (part not present in cnt4tl) + + IF (.NOT.LSIMOB) THEN + ! Real observations + + LLSLOT = .FALSE. + LLFIRST = .TRUE. + LLSLOT_FGAT = .FALSE. + CALL GSTATS(1832,0) + DO JTSLOT=NACTIM,1,-1 + IF(LOBS.AND.NTSLVSTST(JTSLOT) == NSTEP ) THEN + LLSLOT = .TRUE. + LLSLOT_FGAT=( LLSLOT .AND. LIDMODEL ) + NTSLOTNO = IACTIM + IF(LLFIRST) THEN + LLFIRST = .FALSE. + NTSLOTNOS = IACTIM + ENDIF + NTSLOTNOE = IACTIM + IACTIM = IACTIM-1 + IF (LOBSTL) THEN + ! GOM-ARRAYS ALREADY PREPARED + ELSE + CLCONF(3:3) = 'C' + CLCONF(6:6) = 'V' + ENDIF + WRITE(UNIT=NULOUT,FMT='('' CNT4AD (TEMPORAL LOOP);'' & + & ,'' TIME SLOT NO : '',I3 & + & ,'' TO BE USED WITH TIME STEP (NSTEP) : '',I3 & + & ,'' ; MODEL TIME (SINCE START) : '',F6.0)')& + & NTSLOTNO,NSTEP,ZSTATI + CALL FLUSH(NULOUT) + IF (LOBS) THEN + CALL OBSPREP('V') + ENDIF + ENDIF + ENDDO + CALL GSTATS(1832,1) + IF ((.NOT.LTRAJGP .AND. .NOT. LIDMODEL) .OR. LLSLOT_FGAT ) THEN + CALL STEPO(CLCONF) + ENDIF + + IF(LLSLOT) THEN + NTSLOTNO = NTSLOTNOE + CLCON9(6:6)='V' + ENDIF + + IF (CLCON9(1:9)/='000000000') CALL STEPOAD(CLCON9) + ELSE + + ! Simulated observations + + ! Trajectory. + IF(.NOT.LTRAJGP) THEN + CALL STEPO(CLCONF) + ENDIF + ! Adjoint integration. + CALL STEPOAD(CLCON9) + + IF(IREFTS(JSTEP/NFRREF) == 1.AND.MOD(JSTEP,NFRREF) == 0 & + & .AND.NCONF == 801) THEN + + !* read observations and not trajectory + LTRREF=.TRUE. + IF(L801TL)THEN + CLCONF(1:1)='V' + ELSE + CLCONF(1:1)='B' + ENDIF + CLCONF(2:9)='00000000' + CALL STEPO(CLCONF) + CALL COSTRA + LTRREF=.FALSE. + ENDIF + ENDIF + +!* 3.9.4 b Comparison to reference state (AVARC) + IF (LAVARC.AND.IHECPS(JSTEP) == 1) THEN + WRITE(NULOUT,*) 'adjoint run AVARC event at JSTEP = ',JSTEP,' event= '& + & , IAVARE + IF (IAVARE < 1) THEN + CALL ABOR1('AVARC error: IAVARE < 1 ') + ENDIF + CALL AVARCAD(IAVARE) + IAVARE = IAVARE - 1 + ENDIF + +!* 3.X Weak Constraints 4D-Var + + IF (LMODERR) THEN + iweak=MSTEPERR(NSTEP) + IF (NTYPE_MODERR==1.AND.iweak>0) CALL WEAK_CONSTRAINT_AD + IF (NTYPE_MODERR==4.AND.iweak>0) THEN + IF (LJCDFI.AND.N_COUPLED_WINDOWS>1) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + isub=NSTEP/ipersub+1 + istep=0 + IDIGLST=2*NSTDFI + IF (NSIM4D==0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD estep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) + ENDIF + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + ELSEIF (NTYPE_MODERR==5 .AND. iweak>0) THEN + IF (NSIM4D == NSIM4DL) THEN + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP,SPMODERR_HYB,GPMODERR_HYB) + ELSE + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + ENDIF + ENDIF + ENDIF + +! 3.1.1 b Time filtering constraint based on digital filter +! is being computed +! Its contribution is added to SPA3, SPA2 and SPA1. + + IF (LJCDFI.AND.LUSEJCDFI) THEN +! Step should be local to subwindow + IF (N_COUPLED_WINDOWS>1) THEN + isub=1 + istep=0 + IF (NSTEP>0) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + istep=MOD(NSTEP-1,ipersub)+1 + isub=(NSTEP-1)/ipersub+1 + ENDIF + ELSE + isub=1 + istep=NSTEP + ENDIF + IDIGLST = 2*NSTDFI + IF (NSIM4D==0.AND.N_COUPLED_WINDOWS>0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD nstep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) + ENDIF + +!* 3.??? Write-up of the gradient (part not present in cnt4tl). + + IF (NCONF == 601.AND. LLMLPP) THEN + CLCONF='A00000000' + IOUTTYPE=NOUTTYPE + NOUTTYPE=1 + CALL STEPO(CLCONF) + NOUTTYPE=IOUTTYPE + ELSEIF (NCONF/100 == 1.OR.NCONF/100 == 8) THEN + IF ( (IGRATS(NSIM4D/NFRGRA) == 1.AND.& + & MOD(NSIM4D,NFRGRA) == 0.OR.NSIM4D == NSIM4DL)& + & .AND.(IHISTS(NSTEP/NFRHIS) == 1.AND.& + & MOD(NSTEP,NFRHIS) == 0) )THEN + + IF (LGRASCAL) THEN +! WRITE GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT +! SAVE GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAININ (YL_ZVANA) +! GET GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT + YL_ZVAGR = 0.0_JPRB + IF (LFORCE) THEN + CALL CAIN (YSPFORCE) + ENDIF + CALL CAINAD (YL_ZVAGR) + CALL CAIN (YL_ZVAGR) + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. +! FETCH GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAIN (YL_ZVANA) + ELSE +! WRITE GRADIENT WITH RESPECT TO IMPLICIT(STANDARD) INNER-PRODUCT + IF (LFORCE) THEN + CALL CAIN(YSPFORCE) + ENDIF + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. + ENDIF + ENDIF + IF (LLWRELSG) THEN + IF (((ILSGTS(NSTEP/NFRLSG) == 1.AND.MOD(NSTEP,NFRLSG) == 0) & + & .OR.(NSTEP == 1)).AND.NSTEP /= 0) THEN + CALL EWRLSGRAD + ENDIF + ENDIF + ENDIF + +!* 3.13 Copy state for use as forcing during the TL integration + + IF (L_EOFS) THEN + IF (MOD((JSTEP+1),NSTEPS_PER_STATE)==0 .AND. JSTEP+1 < NSTOP) THEN + I = (JSTEP+1)/NSTEPS_PER_STATE + YSTATE_VECTOR_4D(I)%data = 0.0_JPRB + CALL CAINAD (YSTATE_VECTOR_4D(I)) + ENDIF + ENDIF + +!* 3.15 Signal SMS event for completion of post_processing + + IF(LLMLPP) THEN + IF(NOUTTYPE /= 2) THEN + CALL PPFLUSH + IF( LPPTSF )THEN + CALL PPCLOSE + ENDIF + ENDIF + ENDIF + + CALL USER_CLOCK(PTOTAL_CP=ZT2) + CALL DATE_AND_TIME(CLDAT(1),CLTIMEOD,CLDAT(3),IVALUES) + ZSEC = REAL(NSTEP,JPRB)*TSTEP +0.5_JPRB + IHOUR = INT( ZSEC/3600._JPRB ) + IMIN = INT( (ZSEC-REAL(IHOUR,JPRB)*3600._JPRB)/60._JPRB ) + +ENDDO TEMPORAL_LOOP + +!* 3.20 Miscellaneous (deallocations and final call to SPNORM). + +IF ((NCONF/100 == 1.OR.NCONF/100 == 8) .AND. LGRASCAL) THEN + CALL DEALLOCATE_CTLVEC(YL_ZVANA) + CALL DEALLOCATE_CTLVEC(YL_ZVAGR) +ENDIF + +LLSPNRM=ISDITS(NSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(NSTEP,MAX(1,NFRSDI)) == 0 +IF (LLSPNRM.OR.NSIM4D<=1.OR.NSIM4D==NSIM4DL) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT END CNT4AD '')') + CALL SPNORM(0) + CALL GPNORM_GFL + IF (LMODERR) THEN + llevs=(NPRTMODERR>=2) + DO jj=1,NDIM_MODERR + CALL SPECTRAL_NORM (SPMODERR(jj),'CNT4AD MODERR') + CALL GRIDPOINT_NORM(GPMODERR(jj),'CNT4AD MODERR',llevs) + ENDDO + ENDIF +ENDIF + +CALL GSTATS(23,1) +! ----------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT4AD',1,ZHOOK_HANDLE) +END SUBROUTINE CNT4AD diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/module/yommsc.F90 b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/module/yommsc.F90 new file mode 100644 index 0000000000000000000000000000000000000000..a036cdba027fff7e5d29cf08d6c165dcdb2de5cd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/module/yommsc.F90 @@ -0,0 +1,36 @@ +MODULE YOMMSC + +USE PARKIND1 ,ONLY : JPIM ,JPRB + +IMPLICIT NONE + +SAVE + +! ------------------------------------------------------------------ +!* Basic parameters + +! NINTLEN - length of INTEGER_M variables in bytes +! NLOGLEN - length of logicals in bytes +! NREALEN - length of REAL_B variables in bytes +! NDBLLEN - length of REAL_H variables in bytes +! N_DEFAULT_REAL_KIND - The KIND value of the default REAL kind +! N_DOUBLE_KIND - The KIND value of double precision + +INTEGER(KIND=JPIM) :: NINTLEN +INTEGER(KIND=JPIM) :: NREALEN +INTEGER(KIND=JPIM) :: NLOGLEN +INTEGER(KIND=JPIM) :: NDBLLEN + +REAL, PRIVATE :: Z_DEFAULT_REAL ! intentionally not REAL(KIND=JPRB) +INTEGER(KIND=JPIM), PARAMETER :: N_DEFAULT_REAL_KIND = KIND(Z_DEFAULT_REAL) + +DOUBLE PRECISION, PRIVATE :: DL_DOUBLE_PRECISION ! intentionally not REAL(KIND=JPRH) + +#ifdef DOUBLE_KIND_EQUALS_REAL +INTEGER(KIND=JPIM), PARAMETER :: N_DOUBLE_KIND = KIND(Z_DEFAULT_REAL) +#else +INTEGER(KIND=JPIM), PARAMETER :: N_DOUBLE_KIND = KIND(DL_DOUBLE_PRECISION) +#endif + +! ------------------------------------------------------------------ +END MODULE YOMMSC diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 new file mode 100644 index 0000000000000000000000000000000000000000..cd5cb11a5c5e1f487e97398a03a20a5e2f2d8ad0 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 @@ -0,0 +1,857 @@ +SUBROUTINE SU_AERW + +!**** *SU_AERW* - DEFINES INDICES AND PARAMETERS FOR VARIOUS AEROSOL VARIABLES + +! PURPOSE. +! -------- +! INITIALIZE YOEAERATM, YOEAERSRC, YOEAERSNK, THE MODULES THAT CONTAINS INDICES +! ALLOWING TO GET THE AEROSOL PARAMETERS RELEVANT FOR THE PROGNOSTIC AEROSOL +! CONFIGURATION. + +!** INTERFACE. +! ---------- +! *CALL* *SU_AERW + +! EXPLICIT ARGUMENTS : +! -------------------- +! NONE + +! IMPLICIT ARGUMENTS : +! -------------------- +! YOEAERATM, YOEAERSRC + +! METHOD. +! ------- +! SEE DOCUMENTATION + +! EXTERNALS. +! ---------- + +! REFERENCE. +! ---------- +! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS + +! AUTHOR. +! ------- +! JEAN-JACQUES MORCRETTE *ECMWF* + +! MODIFICATIONS. +! -------------- +! ORIGINAL : 2005-07-08 + +! ------------------------------------------------------------------ + +USE PARKIND1 ,ONLY : JPIM ,JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK + +USE YOEAERATM, ONLY : LAERSCAV ,LAERSEDIM, LAERSURF, LAER6SDIA, & + & LAERCLIMG, LAERCLIMZ, LAERCLIST, LAERDRYDP, LAERGTOP, LAERLISI, LAERNGAT, & + & LAERHYGRO, LAERCCN , LAEROPT , LAERRAD , LAERUVP , LUVINDX , & + & REPSCAER , NAERCONF , NXT3DAER , NINIDAY +USE YOEAERMAP ,ONLY : RDDUAER +USE YOEAERSRC, ONLY : LEPAERO , NAERWND, NAERDUT, & + & NINDAER , NMAXTAER, NTAER , NTYPAER, RGELAV , RGEMUV , & + & RDGLAV , RDGMUV , RCLONV , RSLONV , RDCLONV, RDSLONV, & + & RSSFLX , RLATVOL , RLONVOL , NDDUST , NSSALT , RAERDUB, & + & RBCPHIL, RBCPHOB , ROMPHIL , ROMPHOB, RFCTSS , RFCTDU , RFCTDUR, RFCTSSR, & + & NBIN , NTYP, LAEROMIN + +USE YOEPHY , ONLY : LE4ALB + +USE YOEDBUG , ONLY : KSTPDBG , NSTPDBG + +USE YOMCST , ONLY : RPI +USE YOMGC , ONLY : GELAM, GEMU +USE YOMGEM , ONLY : NGPTOT +!USE YOMLEG , ONLY : RMU +USE YOMLUN , ONLY : NULNAM, NULOUT +USE YOMRIP , ONLY : NINDAT, NSSSSS + +USE YOM_YGFL , ONLY : NAERO, NACTAERO + +USE YOERAD , ONLY : LCMIP5 + +IMPLICIT NONE + +INTEGER(KIND=JPIM) :: IAER, ICAER, ITAER +INTEGER(KIND=JPIM) :: J, JAER, JL + +!-- map +INTEGER(KIND=JPIM) :: IFF, IAERWND +REAL(KIND=JPRB) :: ZDDUAER(50,2) +REAL(KIND=JPRB) :: ZBNDA, ZBNDB, ZBNDC, ZBNDD, ZBNDE, ZBNDF, ZBNDG, ZBNDH, & + & ZBNDI, ZBNDJ, ZBNDK, ZBNDL, ZBNDM +REAL(KIND=JPRB) :: ZDEGRAD, ZINCLAT, ZLAT, ZLON, ZLONE, ZLONGB, ZLONW +CHARACTER(LEN=45) :: CLAERWND(0:3) + +REAL(KIND=JPRB) :: ZHOOK_HANDLE +! ---------------------------------------------------------------- + +#include "posnam.intfb.h" + +#include "su_aerp.intfb.h" +#include "su_aerop.intfb.h" +! ---------------------------------------------------------------- + +#include "naeaer.h" + +! ---------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('SU_AERW',0,ZHOOK_HANDLE) + +!* 1. DEFAULT VALUES OF PARAMETERS +! ---------------------------- + +NMAXTAER=8 + +LEPAERO =.FALSE. +LAERCLIMG=.FALSE. +LAERCLIMZ=.FALSE. +LAERDRYDP=.FALSE. +LAERGTOP =.FALSE. +LAERHYGRO=.FALSE. +LAERLISI =.FALSE. +LAERNGAT =.FALSE. +LAERSCAV =.FALSE. +LAERSEDIM=.FALSE. +LAERSURF =.FALSE. +LAER6SDIA=.FALSE. +LAERRAD =.FALSE. +LAEROPT(:)=.FALSE. +LAERCCN =.FALSE. +LAERUVP =.FALSE. +LUVINDX =.FALSE. + +LAERCLIST=.FALSE. +LAEROMIN=.FALSE. + +!- note that NAERCONF is now irrelevant +NAERCONF=-99 +NXT3DAER=0 +NINIDAY=19000101 + +NTAER =0 +!-- default values +!-- DDust is "a la Ginoux et al., 2001" =f(DEP*WND3 +filter on ALUV and FrBaS) +NDDUST =7 +RAERDUB=2.E-11_JPRB +!-- SSalt is Monahan et al. 1986 +NSSALT =1 + +! the 8 types and assumed number of bins are: +! NTYPAER bins type +! 1 1- 3 sea-salt 0.03 - 0.5 - 5 - 20 microns +! 2 4- 6 dust 0.03 - 0.5 - 0.9 - 20 microns +! 3 7- 8 POM hydrophilic, hydrophobic +! 4 9-10 BC hydrophilic, hydrophobic +! 5 11-12 SO4/SO2 including sulfate prognostic stratospheric aerosols (SO4 is 11) +! 6 13 fly ash +! 7 14 pseudo-prognostic stratospheric aerosols +! 8 15 pseudo-prognostic volcanic aerosols + +DO JAER=1,NMAXTAER + NTYPAER(JAER)=0 +ENDDO + +RLATVOL=-999._JPRB +RLONVOL=-999._JPRB +RGELAV =-999._JPRB +RGEMUV =-999._JPRB +RDGLAV = 999._JPRB +RDGMUV = 999._JPRB +RCLONV =-999._JPRB +RSLONV =-999._JPRB +RDCLONV= 999._JPRB +RDSLONV= 999._JPRB + +NSTPDBG=10 +DO J=1,NSTPDBG + KSTPDBG(J)=-999 +ENDDO + +REPSCAER=1.E-20_JPRB + +RBCPHIL = 0.8_JPRB +RBCPHOB = 1.0_JPRB-RBCPHIL +ROMPHIL = 0.5_JPRB +ROMPHOB = 1.0_JPRB-ROMPHIL + +ZDDUAER(:,1) = 1.00_JPRB +ZDDUAER(:,2) = 0.10_JPRB +RDDUAER(:) = 0.0_JPRB +NAERDUT=0 + +!-- default values are for use of 10-m wind as predictor for SS and DU +NAERWND = 0 +IAERWND = 1 +RFCTDU = 1.0_JPRB +RFCTSS = 1.0_JPRB +RFCTDUR = 0.40_JPRB +RFCTSSR = 0.52_JPRB +CLAERWND(0) = '10-M WIND AS PREDICTOR FOR SS AND DU ' +CLAERWND(1) = 'PREDICTORS: WIND GUST FOR SS, 10M-WIND FOR DU' +CLAERWND(2) = 'PREDICTORS: WIND GUST FOR DU, 10M-WIND FOR SS' +CLAERWND(3) = 'WIND GUST AS PREDICTORS FOR SS AND DU ' + +! ------------------------------------------------------------------ + +!* 2. INITIALIZE GEOGRAPHICALLY-DEPENDENT AEROSOL PARAMETERS +! ------------------------------------------------------ + +! Canada 1 1. 0.1 +! Alaska 2 1. 0.1 +! USA 3 1. 0.08 +! Central America 4 0.60 0.05 +! South America 5 0.60 0.01 +! Brazil 6 1. 0.1 +! Iceland 7 1. 0.1 +! Ireland 8 1. 0.1 +! Britain 9 1. 0.1 +! Cont'al Europe 10 1. 0.1 +! Russia (Europe) 11 1. 0.1 +! Russia (Georgia) 12 1. 0.02 + +! Northern Sahara 13 0.00 0.00 *now represented by 34-37 +! Central Africa 14 0.20 0.11 +! Southern Africa 15 0.50 0.04 + +! Siberia 16 1. 0.1 +! Asian deserts 17 1. 0.1 + +! Saudi Arabia 18 0.50 0.12 +! Irak, Iran, Pakistan 19 0.50 0.12 + +! Central Asia Taklamakan 20 0.80 0.025 +! India 21 1.2 0.09 + +! Mongolia and Gobi 22 1.5 0.22 +! Central China 23 1.5 0.25 + +! South China 24 0.5 0.1 +! Japan, South Korea 25 1.0 0.1 + +!-- padding Asia 26 0.5 0.1 + +! Tropical Pacific Islands 27 1. 0.1 +! Australia. New Zealand 28 0.5 0.03 +! +! Greenland 29 1. 0.1 +! Antarctica 30 1. 0.1 + +! Additional areas + +! Atacama and Uyuni 31 0.05 0.02 +! Pipanaco and others 32 0.1 0.02 +! Argentinian pampas 33 0.3 0.02 +! Southern Sahara (West) 34 0.40 0.13 +! Southern Sahara (East) 35 0.40 0.15 +! Northern Sahara (West) 36 0.30 0.13 +! Northern Sahara (East) 37 0.30 0.15 +!============================== + +! USA 3 +ZDDUAER( 3,1) = 1.00_JPRB +ZDDUAER( 3,2) = 0.08_JPRB + +! Central America 4 +ZDDUAER( 4,1) = 0.60_JPRB +ZDDUAER( 4,2) = 0.05_JPRB + +! South America 5 +ZDDUAER( 5,1) = 0.60_JPRB +ZDDUAER( 5,2) = 0.01_JPRB + +! Russia (Georgia) 12 +ZDDUAER(12,1) = 1.00_JPRB +ZDDUAER(12,2) = 0.02_JPRB + +! Sahara 13 +! Central Africa 14 +! Southern Africa 15 +ZDDUAER(13,1) = 0.00_JPRB +ZDDUAER(14,1) = 0.20_JPRB +ZDDUAER(15,1) = 0.50_JPRB + +ZDDUAER(13,2) = 0.17_JPRB +ZDDUAER(14,2) = 0.11_JPRB +ZDDUAER(15,2) = 0.04_JPRB + +! Siberia 16 +! Asian deserts 17 + +ZDDUAER(16,1) = 1.00_JPRB +ZDDUAER(17,1) = 1.00_JPRB + +ZDDUAER(16,2) = 0.10_JPRB +ZDDUAER(17,2) = 0.10_JPRB + +! Saudi Arabia 18 +! Irak, Iran, Pakistan 19 +ZDDUAER(18,1) = 0.50_JPRB +ZDDUAER(19,1) = 0.50_JPRB + +ZDDUAER(18,2) = 0.12_JPRB +ZDDUAER(19,2) = 0.12_JPRB + +! Central Asia Taklamakan 20 +! India 21 +ZDDUAER(20,1) = 0.80_JPRB +ZDDUAER(21,1) = 1.20_JPRB + +ZDDUAER(20,2) = 0.025_JPRB +ZDDUAER(21,2) = 0.09_JPRB + +! Mongolia and Gobi 22 +! Central China 23 +ZDDUAER(22,1) = 1.50_JPRB +ZDDUAER(23,1) = 1.50_JPRB + +ZDDUAER(22,2) = 0.22_JPRB +ZDDUAER(23,2) = 0.25_JPRB + +! South China 24 +! Japan, South Korea 25 +ZDDUAER(24,1) = 0.50_JPRB +ZDDUAER(25,1) = 1.00_JPRB + +ZDDUAER(24,2) = 0.10_JPRB +ZDDUAER(25,2) = 0.10_JPRB + +!-- padding Asia 26 +ZDDUAER(26,1) = 0.50_JPRB +ZDDUAER(26,2) = 0.10_JPRB + +! Tropical Pacific Islands 27 +! Australia. New Zealand 28 +ZDDUAER(27,1) = 1.00_JPRB +ZDDUAER(28,1) = 0.50_JPRB + +ZDDUAER(27,2) = 0.10_JPRB +ZDDUAER(28,2) = 0.03_JPRB + +! Atacama and other areas, Argentinian pampas +ZDDUAER(31,1) = 0.05_JPRB +ZDDUAER(32,1) = 0.10_JPRB +ZDDUAER(33,1) = 0.30_JPRB + +ZDDUAER(31,2) = 0.02_JPRB +ZDDUAER(32,2) = 0.02_JPRB +ZDDUAER(33,2) = 0.02_JPRB + +! Southern Sahara West +ZDDUAER(34,1) = 0.40_JPRB +ZDDUAER(34,2) = 0.13_JPRB + +! Southern Sahara East +ZDDUAER(35,1) = 0.40_JPRB +ZDDUAER(35,2) = 0.13_JPRB + +! Northern Sahara West +ZDDUAER(36,1) = 0.30_JPRB +ZDDUAER(36,2) = 0.13_JPRB + +! Northern Sahara East +ZDDUAER(37,1) = 0.30_JPRB +ZDDUAER(37,2) = 0.13_JPRB + +! ------------------------------------------------------------------ + +!* 2. READ VALUES OF PROGNOSTIC AEROSOL CONFIGURATION +! ----------------------------------------------- + +WRITE(NULOUT,8000) NAERO +8000 FORMAT(1X,'Read or not the namelist? ',I3) + +IF(NAERO > 0) THEN + CALL POSNAM(NULNAM,'NAEAER') + READ (NULNAM,NAEAER) +ELSE IF (LCMIP5) THEN + WRITE(NULOUT,'("CMIP5: READ AEROSOL OPT PROPERTIES DESPITE NAERO=",I3)') NAERO + CALL SU_AERP + CALL SU_AEROP +ENDIF + +IF (NINDAT == NINIDAY .AND. NSSSSS == 00000) THEN + LAERCLIST=.TRUE. +ENDIF + +! ------------------------------------------------------------------ + +!* 3. DISTRIBUTE DUST AEROSOL SOURCE FUNCTIONS +! ---------------------------------------- + +!-- if NAERWND < 2, DU uses 10m-wind; if >= 2, DU uses gust + +if (NAERWND == 0) THEN +! for NAERWND = 0, both SS and DU use 10-m wind + RFCTDU=1.0_JPRB + RFCTSS=1.0_JPRB + IAERWND=1 +elseif (NAERWND == 1) THEN +! for NAERWND = 1, SS takes "gust" values + RFCTDU=1.0_JPRB + RFCTSS=RFCTSSR + IAERWND=1 +elseif (NAERWND == 2) THEN +! for NAERWND = 2, DU takes "gust" values + RFCTDU=RFCTDUR + RFCTSS=1.0_JPRB + IAERWND=2 +elseif (NAERWND == 3) THEN +! for NAERWND = 3, both SS and DU take 10-m wind + gust + RFCTDU=RFCTDUR + RFCTSS=RFCTSSR + IAERWND=2 +endif + +ZDEGRAD=180._JPRB/RPI +DO JL=1,NGPTOT + ZLON=GELAM(JL)*ZDEGRAD + ZLAT=ASIN(GEMU(JL))*ZDEGRAD + + zbnda= 30._JPRB+(36._JPRB -zlat)*14._JPRB/24._JPRB + zbndb= 30._JPRB+(36._JPRB -zlat)*40._JPRB/16._JPRB + zbndc= 38._JPRB+(zlon-124._JPRB)*12._JPRB/29._JPRB + zbndd= 32._JPRB-(zlon-243._JPRB)* 6._JPRB/21._JPRB + +!-- Eastern border Canada/USA + zbnde= 49._JPRB + if (zlon > 268._JPRB .and. zlon < 277._JPRB) then + zbnde= 49._JPRB-(zlon-268._JPRB)*7._JPRB/9._JPRB + elseif (zlon >= 277._JPRB .and. zlon < 285._JPRB) then + zbnde= 42._JPRB+(zlon-277._JPRB)*2._JPRB/8._JPRB + elseif (zlon >= 285._JPRB .and. zlon < 310._JPRB) then + zbnde= 44._JPRB+(zlon-285._JPRB)*3._JPRB/25._JPRB + endif + +!-- limits Britain + zlongb=-9999._JPRB + if (zlon > 354._JPRB .and. zlon < 360._JPRB) then + zlongb=zlon + elseif (zlon >= 0._JPRB .and. zlon < 3._JPRB) then + zlongb=zlon+360._JPRB + endif + zbndf= 47._JPRB+(zlongb-349._JPRB)*4.5_JPRB/14._JPRB + +!-- limits Ireland + zbndg= 61._JPRB-(zlon-349._JPRB)*7._JPRB/6._JPRB + zbndh= 45._JPRB+(zlon-349._JPRB)*9._JPRB/6._JPRB + +!-- Western border Brazil + if (zlat <= 4._JPRB .and. zlat > 2._JPRB) then + zbndi= 296._JPRB + elseif (zlat <= 2._JPRB .and. zlat > -4._JPRB) then + zbndi= 290._JPRB + elseif (zlat <= -4._JPRB .and. zlat > -7._JPRB) then + zbndi= 290._JPRB-(-4._JPRB-zlat)*4._JPRB/3._JPRB + elseif (zlat <= -7._JPRB .and. zlat > -11._JPRB) then + zbndi= 286._JPRB+(-7._JPRB-zlat)*4._JPRB/4._JPRB + endif + + if (zlat <= -11._JPRB .and. zlat > -18._JPRB) then + zbndj= 294._JPRB+(-11._JPRB-zlat)*8._JPRB/7._JPRB + elseif (zlat <= -18._JPRB .and. zlat > -27._JPRB) then + zbndj= 302._JPRB+(-18._JPRB-zlat)*4._JPRB/9._JPRB + elseif (zlat <= -27._JPRB .and. zlat > -30._JPRB) then + zbndj= 306._JPRB-(-27._JPRB-zlat)*3._JPRB/3._JPRB + elseif (zlat <= -30._JPRB .and. zlat >= -34._JPRB) then + zbndj= 303._JPRB+(-30._JPRB-zlat)*4._JPRB/4._JPRB + endif + +!-- Northern border India + if (zlon > 70._JPRB .and. zlon <= 90._JPRB) then + zbndk= 35._JPRB-(zlon-70._JPRB)*0.5_JPRB + endif + +!-- South border of Asian deserts + if (zlon > 90._JPRB .and. zlon <= 135._JPRB) then + zbndl= 25._JPRB+(zlon-90._JPRB)*15._JPRB/45._JPRB + endif + +!-- North limit of the Argentinian pampas + if (zlon > 285._JPRB .and. zlon <= 297._JPRB) then + zbndm= -42._JPRB+(zlon-285._JPRB)*6._JPRB/12._JPRB + endif + + iff=0 + +!-- North America +!----- Canada + if ( zlat >= zbnde .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=1 +!----- USA + elseif ( (zlat >= zbndd .and. zlat < zbnde ) & + & .and. (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=3 + endif +!-- Alaska + if ( (zlat < 72._JPRB .and. zlat > 52._JPRB) & + & .and. (zlon > 190._JPRB .and. zlon <= 219._JPRB) ) then + iff=2 + endif + +!-- Central America + if (zlat < zbndd .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=4 + endif + +!-- South America + if ( zlat < 12._JPRB .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=5 + endif +!-- Brazil + if ( (zlat <= 4._JPRB .and. zlat > 2._JPRB) & + & .and. (zlon >= 296._JPRB .and. zlon <= 300._JPRB) ) then + iff=6 + endif + if ( (zlat <= 2._JPRB .and. zlat > -11._JPRB) & + & .and. (zlon >= zbndi .and. zlon < 330._JPRB) ) then + iff=6 + endif + if ( (zlat <= -11._JPRB .and. zlat >= -34._JPRB) & + & .and. (zlon >= zbndj .and. zlon < 330._JPRB) ) then + iff=6 + endif + +!-- Western Europe + if ( zlat > 36._JPRB .and. ( zlon >= 330._JPRB .or. zlon <= 30._JPRB) ) then + iff=10 + endif + +!----- Iceland + if ( (zlat < 67._JPRB .and. zlat > 63._JPRB) & + & .and. ( zlon > 335._JPRB .and. zlon < 353._JPRB) ) then + iff=7 + endif +!----- Britain + if ( (zlat < 63._JPRB .and. zlat > zbndf) & + & .and. ( zlon > 354._JPRB .or. zlon < 3._JPRB) ) then + iff=9 + endif +!----- Ireland + if ( (zlat < zbndg .and. zlat > zbndh) & + & .and. ( zlon > 349._JPRB .and. zlon < 355._JPRB) ) then + iff=8 + endif + + +!-- Russia to Urals + if ( zlon > 30._JPRB .and. zlon <= 70._JPRB ) then + if ( zlat > 51._JPRB ) then + iff=11 + elseif ( zlat > 36._JPRB ) then + iff=12 + endif + endif + +!-- Northern Sahara +! if ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & +! & .and. ( zlon >= 330._JPRB .or. zlon <= zbnda) ) then +! iff=13 +!-- Northern Sahara (West) + if ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon < 4._JPRB) ) then + iff=36 +!-- Northern Sahara (East) + elseif ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & + & .and. ( zlon >= 4._JPRB .or. zlon <= zbnda) ) then + iff=37 +!-- Southern Sahara (West) + elseif ( ( zlat < 21._JPRB .and. zlat >= 12._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon < 15._JPRB) ) then + iff=34 +!-- Southern Sahara (East) + elseif ( ( zlat < 21._JPRB .and. zlat >= 12._JPRB) & + & .and. ( zlon >= 15._JPRB .and. zlon <= zbnda) ) then + iff=35 +!-- Central Africa + elseif ( (zlat < 12._JPRB .and. zlat >= -12._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon <= 60._JPRB) ) then + iff=14 +!-- Southern Africa + elseif ( zlat < -12._JPRB .and. zlat >= -60._JPRB & + & .and. ( zlon >= 330._JPRB .or. zlon <= 60._JPRB) ) then + iff=15 + endif + + +!-- Australasia + if (zlon > 70._JPRB .and. zlon <= 190._JPRB) then + iff=26 + +!-- Siberia + if (zlat <= 90._JPRB .and. zlat > 51._JPRB) then + iff=16 + +!-- Australasia +!---- Tropical Pacific Islands + elseif ( zlat > -10.5_JPRB) then + iff=27 +!---- Australia + elseif ( zlat <= -10.5_JPRB .and. zlat >= -60._JPRB) then + iff=28 + endif + endif + +!-- Asian deserts + if ((zlon > 90._JPRB .and. zlon <= 135._JPRB) & + & .and. (zlat <= 51._JPRB .and. zlat > zbndl)) then + iff=17 + endif + + + +!-- Saudi Arabia + if ((zlat <= 36._JPRB .and. zlat >= 12._JPRB) & + & .and.( zlon > zbnda .and. zlon < zbndb) ) then + iff=18 + endif +!-- Irak, Iran, Pakistan + if ((zlat <= 36._JPRB .and. zlat >= 20._JPRB) & + & .and.( zlon > zbndb .and. zlon < 70._JPRB) ) then + iff=19 + endif + + + +!-- Central Asia and India + if ( zlon > 70._JPRB .and. zlon <= 90._JPRB) then +!----- Central Asia: Taklamakan + if (zlat <= 43._JPRB .and. zlat >= zbndk) then + iff=20 +!----- India + elseif (zlat <= zbndk .and. zlat > 7._JPRB) then + iff=21 + endif + endif +!-- other Gobi(s) in South Mongolia and Central China + if ( zlat <= 49._JPRB .and. zlat > 35._JPRB) then + if (zlon > 90._JPRB .and. zlon <= 110._JPRB) then + iff=22 + elseif (zlon > 110._JPRB .and. zlon <= 125._JPRB) then + iff=23 + endif + endif + +!-- South China + if ( (zlon > 90._JPRB .and. zlon <= 135._JPRB) .and. & + & (zlat <= zbndl .and. zlat > 7._JPRB) ) then + iff=24 + endif + + + +!-- Japan and S.Korea + if ( (zlon > 124._JPRB .and. zlon < 153._JPRB) & + & .and. (zlat > 24._JPRB .and. zlat < zbndc) ) then + iff=25 + endif + +!-- Greenland + if (zlat > 50._JPRB) then + zinclat=(90._JPRB-zlat)/40._JPRB*45._JPRB + zlonw=270._JPRB +zinclat + zlone=360._JPRB -zinclat + if ( zlon > zlonw .and. zlon < zlone ) then + iff=29 + endif + endif + +!-- Antarctica + if (zlat < -60._JPRB) then + iff=30 + endif + +!-- awaiting a proper recoding, new areas are set between iff=31 and 35 + + if ( zlon > 285._JPRB .and. zlon < 295._JPRB) then +!- Atacama desert and Salar de Uyuni + if ( zlat < -16._JPRB .and. zlat > -28._JPRB) then + iff=31 + endif +!- Salar de Pipanaco and other small ones + if ( zlat <= -28._JPRB .and. zlat > zbndm) then + iff=32 + endif + endif +!- Argentianian pampas + if ( (zlon > 285._JPRB .and. zlon < 297._JPRB) & + & .and. zlat <= zbndm ) then + iff=33 + endif + +!-- if area is recognized + IF (IFF /= 0) THEN +!-- either use the default value + IF (RDDUAER(iff) == 0._JPRB) THEN + RDDUAER(iff) = ZDDUAER(iff,IAERWND) + ELSE +!-- or what is read in via the namelist + ENDIF + ELSE + WRITE(NULOUT,FMT='(''su_aerw: Unassigned grid for Lat,Lon='',2F8.2)') ZLAT,ZLON + ENDIF +ENDDO + +! ------------------------------------------------------------------ + +!* 4. DEFINE VALUES OF PROGNOSTIC AEROSOL CONFIGURATION +! ------------------------------------------------- + +IF (.NOT.LE4ALB) THEN + NDDUST=2 +ENDIF + +WRITE(UNIT=NULOUT,FMT='(''NAERO='',I2,'' NACTAERO='',I2)') NAERO,NACTAERO + +IF (NACTAERO > 0) THEN + + WRITE(UNIT=NULOUT,FMT='(''NAERO='',I2,'' NACTAERO='',I2,3X,8I3)') NAERO,NACTAERO,(NTYPAER(JAER),JAER=1,8) + +! define a composite index for each bin of each different aerosol type to be used +! in source, sedimentation and deposition routines + + ICAER=0 + DO JAER=1,NMAXTAER + IF (NTYPAER(JAER) /= 0) THEN + NTAER=NTAER+1 + ITAER=NTYPAER(JAER) + DO IAER=1,ITAER + ICAER=ICAER+1 + NINDAER(ICAER)=JAER*10+IAER + NTYP(ICAER) =JAER + NBIN(ICAER) =IAER + ENDDO + ENDIF + ENDDO + +!-- if volcanic aerosols, define the model coordinates + +! IF (NTYPAER(8) /= 0) THEN +! RGEMUV=(RLATVOL+90._JPRB)*RPI/180._JPRB +! RGELAV=RLONVOL*RPI/180._JPRB +! RCLONV=COS(RGELAV) +! RSLONV=SIN(RGELAV) +! DO J=1,NGPTOT-1 +! IF (RGELAV > GELAM(J) .AND. RGELAV <= GELAM(J+1) .AND. & +! & RGEMUV < RMU(JL) .AND. RGEMUV >= RMU(JL+1) ) THEN +! RDGMUV=ABS( RMU(J+1) - RMU(J)) +! RDGLAV=ABS( GELAM(J+1)-GELAM(J) ) +! RDSLONV=ABS( SIN(GELAM(JL+1))-SIN(GELAM(JL)) ) +! RDCLONV=ABS( COS(GELAM(JL+1))-COS(GELAM(JL)) ) +! ENDIF +! ENDDO +! ENDIF + +! ------------------------------------------------------------------ + +!* 5. INITIALIZE PROGNOSTIC AEROSOL PHYSICAL AND OPTICAL PARAMETERS +! ------------------------------------------------------------- + + CALL SU_AERP + CALL SU_AEROP + + DO JAER=1,NMAXTAER + IF (LAEROPT(JAER)) THEN + LAERRAD=.TRUE. + ENDIF + ENDDO + +! ---------------------------------------------------------------- + +!* 6. PRINT FINAL VALUES. +! ------------------- + + WRITE(UNIT=NULOUT,FMT='('' LEPAERO = '',L5 & + & ,'' NTAER = '',I2 ,'' NDDUST = '',I1,'' NSSALT = '',I1,/& + & ,'' NTYPAER = '',8I3,/ & + & ,'' NINIDAY = '',I8 & + & ,'' NTYP = '',15I3,/& + & ,'' NBIN = '',15I3 & + & )')& + & LEPAERO,NTAER,NDDUST,NSSALT,(NTYPAER(JAER),JAER=1,8), & + & NINIDAY, (NTYP(JAER),JAER=1,15), (NBIN(JAER),JAER=1,15) + + WRITE(UNIT=NULOUT,FMT='('' NAERO = '',I2,'' NACTAERO = '',I2,& + &'' NXT3DAER = '',I2,'' NAERCONF = '',I3)') & + & NAERO,NACTAERO,NXT3DAER,NAERCONF + + WRITE(UNIT=NULOUT,FMT='('' LAERNGAT = '',L1 & + & ,'' LAERDRYDP= '',L1 & + & ,'' LAERSEDIM= '',L1 & + & ,'' LAERGTOP = '',L1 & + & ,'' LAERLISI = '',L1 & + & ,'' LAERHYGRO= '',L1 & + & ,'' LAERSCAV = '',L1 & + & ,'' LAER6SDIA= '',L1 & + & ,'' LAERCLIMZ= '',L1 & + & ,'' LAERCLIMG= '',L1 & + & ,'' LAERCLIST= '',L1 & + & )')& + & LAERNGAT, LAERDRYDP,LAERSEDIM,LAERGTOP,LAERHYGRO,LAERSCAV,LAER6SDIA, & + & LAERCLIMZ,LAERCLIMG,LAERCLIST + + WRITE(UNIT=NULOUT,FMT='('' RSSFLX= '',9E10.3)') RSSFLX + WRITE(UNIT=NULOUT,FMT='('' NAERWND= '',I1,'' RFCTSS= '',F4.1,'' RFCTDU= '',F4.1,2X,A45)') & + & NAERWND, RFCTSS, RFCTDU, CLAERWND(NAERWND) + WRITE(UNIT=NULOUT,FMT='('' NAERDUT= '',I2,'' RAERDUB= '',E10.3)') NAERDUT, RAERDUB + WRITE(UNIT=NULOUT,FMT='('' RDDUAER= '',25F6.3)') (RDDUAER(J),J= 1,25) + WRITE(UNIT=NULOUT,FMT='('' RDDUAER= '',25F6.3)') (RDDUAER(J),J=26,50) + WRITE(UNIT=NULOUT,FMT='('' LUVINDX= '',L3,'' LAERUVP= '',L3)') LUVINDX, LAERUVP + + WRITE(UNIT=NULOUT,FMT='('' Interaction prognostic aerosols and radiation: LAERRAD= '',L1,& + &'' LAEROPT= '',8L3)') LAERRAD,LAEROPT + WRITE(UNIT=NULOUT,FMT='('' Interaction prognostic aerosols and eff.radius of liq.wat.clouds: LAERCCN= '',& + &L1)') LAERCCN + + IF (NTYPAER(8) /= 0) THEN + WRITE(UNIT=NULOUT,FMT='('' RLATVOL= '',F5.2 & + & ,'' RLONVOL= '',F6.2,'' RGEMUV= '',F6.4,'' RGELAV= '',F6.4 & + & ,'' RCLONV = '',F6.4,'' RSLONV= '',F6.4,'' RDGMUV= '',F6.4 & + & ,'' RDGLAV = '',F6.4,'' RDCLONV= '',F6.4,'' RDSLONV= '',F6.4 & + & )')& + & RLATVOL,RLONVOL,RGEMUV,RGELAV,RCLONV,RSLONV,RDGMUV,RDGLAV,RDCLONV,RDSLONV + ENDIF +ENDIF + +! ---------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('SU_AERW',1,ZHOOK_HANDLE) +END SUBROUTINE SU_AERW + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..790ade444549cbd6f297d9e878d87c3c1c4bb9ac --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl @@ -0,0 +1,40 @@ +# EC-EARTH3 ec-conf-based configuration +# NCDF_INC netcdf include file +# NCDF_LIB netcdf library +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L if you have libraries in a +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC additional include files for the compiler, e.g. -I +# USER_LIB additional libraries to pass to the linker, e.g. -l + +%OASIS_INC_DIR $(addsuffix /oasis3/ecconf/build/lib/psmile.MPI1,[[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]) +%OASIS_LIB_DIR $(addsuffix /oasis3/ecconf/lib,[[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]) +%OASIS_LIBS psmile.MPI1 mpp_io + +%NETCDF_INC_DIR $(addsuffix /,[[[PLT:ACTIVE:NETCDF_BASE_DIR]]])[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]] +%NETCDF_LIB_DIR $(addsuffix /,[[[PLT:ACTIVE:NETCDF_BASE_DIR]]])[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]] +%NETCDF_LIBS [[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]] + +%MPI_INC_DIR $(addsuffix /,[[[PLT:ACTIVE:MPI_BASE_DIR]]])[[[PLT:ACTIVE:MPI_INC_SUBDIR]]] +%MPI_LIB_DIR $(addsuffix /,[[[PLT:ACTIVE:MPI_BASE_DIR]]])[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]] +%MPI_LIBS [[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]] + +%USER_INC $(addprefix -I,%OASIS_INC_DIR %NETCDF_INC_DIR %MPI_INC_DIR) +%USER_LIB $(addprefix -L,%OASIS_LIB_DIR %NETCDF_LIB_DIR %MPI_LIB_DIR) \ + $(addprefix -l,%OASIS_LIBS %NETCDF_LIBS %MPI_LIBS) + +%MK [[[PLT:ACTIVE:MAKE]]] +%FC [[[PLT:ACTIVE:FC]]] +%FCFLAGS [[[PLT:ACTIVE:FFLAGS]]] [[[PLT:ACTIVE:NEMO_ADD_FFLAGS]]] +%FFLAGS %FCFLAGS +%FPPFLAGS [[[PLT:ACTIVE:CPPFLAGS]]] +%LD [[[PLT:ACTIVE:LD]]] +%LDFLAGS [[[PLT:ACTIVE:LDFLAGS]]] [[[PLT:ACTIVE:NEMO_ADD_LDFLAGS]]] +%AR [[[PLT:ACTIVE:AR]]] +%ARFLAGS [[[PLT:ACTIVE:ARFLAGS]]] diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/CONFIG/makenemo b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/CONFIG/makenemo new file mode 100755 index 0000000000000000000000000000000000000000..91259ee0ff0768e72be96f96ebd5a4aa50cc88ec --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/CONFIG/makenemo @@ -0,0 +1,314 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# makenemo +# =============== +# +# -------------------------- +# Compile NEMO +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ makenemo +# +# +# DESCRIPTION +# =========== +# +# +# This script aims : +# +# - to choose MYCONFIG +# - to choose compiler options +# - to create the CONFIG/MYCONFIG/WORK directory +# - to compile this configuration +# +# Variables used : +# +# From user input +# +# - NEW_CONF : configuration to be created +# - REF_CONF : reference configuration to build the new one +# - CMP_NAM : compiler name +# - NBR_PRC : number of processes used to compile +# - NEM_SUBDIR : NEMO subdirectory used (specified) +# +# Locally defined : +# +# - TAB : NEMO subdirectory used (read) +# - MAIN_DIR : self explaining +# - CONFIG_DIR : " " " +# - MODELES_DIR : " " " +# - TOOLS_DIR : " " " +# - NEMO_DIR : " " " +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./makenemo -m ifort_osx - j3 -n ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: makenemo 2731 2011-04-08 12:05:35Z rblod $ +# +# +# +# * creation +# +#- + +#- Local variables --- +b_n=$(basename ${0}) +OPTIND=1 +MAIN_DIR=$(cd $(dirname "$0"); pwd) +MAIN_DIR=${MAIN_DIR%/SETTE*} +MAIN_DIR=${MAIN_DIR%/TOOLS*} +MAIN_DIR=${MAIN_DIR%/CONFIG*} +export MAIN_DIR +# +export CONFIG_DIR=${MAIN_DIR}/CONFIG +export TOOLS_DIR=${MAIN_DIR}/TOOLS +export COMPIL_DIR=${MAIN_DIR}/TOOLS/COMPILE +export NEMO_DIR=${MAIN_DIR}/NEMO +export AGRIFUSE=10 + +declare -a TAB +#- +#- FCM and functions location --- +export PATH=${MAIN_DIR}/EXTERNAL/fcm/bin:$PATH + +#- +#- Choice of the options --- +x_d=""; +x_n=""; +x_r=""; +x_m=""; +x_t=""; +x_c=""; +x_j=1; +while getopts :hd:n:r:m:j:t: V +do + case $V in + (h) echo "Usage : "${b_n} \ + " [-h] [-n name] [-m arch] [-d "dir1 dir2"] [-r conf] [-j No]"; + echo " -h : help"; + echo " -n name : config name, [-n help] to list existing configurations"; + echo " -m arch : choose compiler, [-m help] to list existing compilers"; + echo " -d dir : choose NEMO sub-directories"; + echo " -r conf : choose reference configuration"; + echo " -j No : number of processes used to compile (0=nocompilation)"; + echo " -t dir : temporary directory for compilation" + echo ""; + echo "Example to install a new configuration MY_CONFIG"; + echo "with OPA_SRC and LIM_SRC_2 "; + echo "makenemo -n MY_CONFIG -d \"OPA_SRC LIM_SRC_2\""; + echo ""; + echo "Available configurations :"; cat ${COMPIL_DIR}/cfg.txt; + echo ""; + echo "Example to remove bad configuration "; + echo "./makenemo -n MY_CONFIG clean_config"; + echo ""; + echo "Example to clean "; + echo "./makenemo clean"; + echo ""; + echo "Example to add and remove keys"; + echo "./makenemo add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" "; + echo ""; + echo "Example to add and remove keys for a new configuration, and do not compile"; + echo "./makenemo -n MY_CONFIG -j0 add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" "; + echo ""; + . ${COMPIL_DIR}/Flist_archfile.sh ; + echo ""; + echo "Default : previous configuration and compiler"; + exit 0;; + (d) x_d=${OPTARG};; + (n) x_n=${OPTARG};; + (r) x_r=${OPTARG};; + (m) x_m=${OPTARG};; + (j) x_j=${OPTARG};; + (t) x_t=${OPTARG};; + (:) echo ${b_n}" : -"${OPTARG}" option : missing value" 1>&2; + exit 2;; + (\?) echo ${b_n}" : -"${OPTARG}" option : not supported" 1>&2; + exit 2;; + esac +done +shift $(($OPTIND-1)); + +while [ ${#1} -gt 0 ] # Get clean, clean_config options +do + case "$1" in + clean) + x_c="--$1" + ;; + clean_config) + . ${COMPIL_DIR}/Fclean_config.sh + exit + ;; + add_key) + list_add_key=$2 + export ${list_add_key} + shift + ;; + del_key) + list_del_key=$2 + export ${list_del_key} + shift + ;; + *) + echo " \"$1\" BAD OPTION" + exit + ;; + + esac + shift +done + + +#- +#- Go to NEMOGCM/config directory --- +cd ${CONFIG_DIR} + +#- +#- Initialisation from input --- +export NEW_CONF=${x_n} +NBR_PRC=${x_j} +CMP_NAM=${x_m} +NEM_SUBDIR=${x_d} +REF_CONF=${x_r} +NEMO_TDIR=${x_t:-$NEMO_TDIR} +export NEMO_TDIR=${NEMO_TDIR:-$CONFIG_DIR} + +#- Check if the tool or the compiler exist or list it +if [ "${NEW_CONF}" == help ] ; then + echo "Available configurations :" + cat ${COMPIL_DIR}/cfg.txt + exit +fi +[ "${CMP_NAM}" == help ] && . ${COMPIL_DIR}/Flist_archfile.sh && exit + +#- When used for the first time, choose a compiler --- +. ${COMPIL_DIR}/Fcheck_archfile.sh arch_nemo.fcm ${CMP_NAM} || exit + +#- +#- Choose a default configuration if needed --- +#- ORCA2_LIM or last one used --- +. ${COMPIL_DIR}/Fcheck_config.sh cfg.txt ${NEW_CONF} || exit + + +if [ ${#NEW_CONF} -eq 0 ] ; then + if [ ${#NEM_SUBDIR} -eq 0 -a ${#REF_CONF} -eq 0 ]; then + echo "You are installing a new configuration" + ind=0 + . ${COMPIL_DIR}/Fread_dir.sh OPA_SRC YES + . ${COMPIL_DIR}/Fread_dir.sh LIM_SRC_2 YES + . ${COMPIL_DIR}/Fread_dir.sh LIM_SRC_3 NO + . ${COMPIL_DIR}/Fread_dir.sh TOP_SRC NO + . ${COMPIL_DIR}/Fread_dir.sh NST_SRC YES + . ${COMPIL_DIR}/Fread_dir.sh OFF_SRC NO + REF_CONF=ORCA2_LIM + elif [ ${#NEM_SUBDIR} -gt 0 ] && [ ${#REF_CONF} -eq 0 ]; then + echo "You are installing a new configuration" + TAB=( ${NEM_SUBDIR} ) + REF_CONF=ORCA2_LIM + elif [ ${#NEM_SUBDIR} -eq 0 ] && [ ${#REF_CONF} -gt 0 ]; then + echo "You are installing a new configuration based on ${REF_CONF}" + . ${COMPIL_DIR}/Fcopy_dir.sh ${REF_CONF} + fi + NEW_CONF=${x_n} + . ${COMPIL_DIR}/Fmake_config.sh ${NEW_CONF} ${REF_CONF} +else + sed -e "/${NEW_CONF} /d" ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp + \mv ${COMPIL_DIR}/cfg.tmp ${COMPIL_DIR}/cfg.txt +fi + +#- +#- Save new configuration and directories names --- +echo ${NEW_CONF} ${TAB[*]} >> ${COMPIL_DIR}/cfg.txt + +#- +#- Create the WORK --- +#- Clean links and librairies --- +#- Creating the good links, at first on OPA_SRC --- +. ${COMPIL_DIR}/Fmake_WORK.sh ${NEW_CONF} ${TAB[*]} || exit + +. ${COMPIL_DIR}/Fmake_bld.sh ${CONFIG_DIR} ${NEW_CONF} ${NEMO_TDIR} || exit + +#- At this stage new configuration has been added, +#- We add or remove keys +if [ ${#list_add_key} -ne 0 ] ; then + . ${COMPIL_DIR}/Fadd_keys.sh ${NEW_CONF} add_key ${list_add_key} +fi + +if [ ${#list_del_key} -ne 0 ] ; then + . ${COMPIL_DIR}/Fdel_keys.sh ${NEW_CONF} del_key ${list_del_key} +fi + +#- At this stage the configuration has beeen chosen +#- We coose the default light file +export USEBLD=bldxioxag.cfg + +#- We look after agrif +grep key_agrif ${COMPIL_DIR}/cpp.fcm && export AGRIFUSE=1 && export USEBLD=${USEBLD/xag/} +. ${COMPIL_DIR}/Fprep_agrif.sh ${NEW_CONF} ${NEMO_TDIR} || exit + +#- and test whether we need to build the ioserver +grep key_iomput ${COMPIL_DIR}/cpp.fcm && export USEBLD=${USEBLD/xio/} + +#- +#_ END OF CONFIGURATION PHASE +#_ + +#- +#- Compile --- + +if [ "${NBR_PRC}" -gt 0 ]; then + cd ${NEMO_TDIR}/${NEW_CONF} || cd - + +#if AGRIF we do a first preprocessing + if [ ${#x_c} -eq 0 ]; then + [ "$AGRIFUSE" == 1 ] && fcm build --ignore-lock -s 2 ${COMPIL_DIR}/$USEBLD + [ "$AGRIFUSE" == 1 ] && rm -rf ${NEMO_TDIR}/${NEW_CONF}/BLD/* + fi + fcm build ${x_c} --ignore-lock -v 1 -j ${NBR_PRC} ${COMPIL_DIR}/$USEBLD || cd - + [ -f ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/nemo.exe ] && ln -sf ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/nemo.exe ${CONFIG_DIR}/${NEW_CONF}/EXP00/opa + [ -f ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/server.exe ] && ln -sf ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/server.exe ${CONFIG_DIR}/${NEW_CONF}/EXP00/server.exe + +#add remove for clean option + if [ ${#x_c} -ne 0 ]; then + rm -rf ${NEMO_TDIR}/${NEW_CONF}/WORK + rm -rf ${NEMO_TDIR}/${NEW_CONF}/BLD + rm -rf ${NEMO_TDIR}/${NEW_CONF}/EXP00/opa + rm -rf ${NEMO_TDIR}/${NEW_CONF}/EXP00/server.exe + echo "cleaning ${NEW_CONF} WORK, BLD" + fi + +fi + +#- Come back to original directory --- +cd - + +#- +#- Unset variables +${COMPIL_DIR}/Fclean_var.sh + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh new file mode 100755 index 0000000000000000000000000000000000000000..c552c7b07468512ad7eb5a04598f6ed82c5e2b72 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fadd_keys : add keys in cpp.fcm file +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fadd_keys.sh +# ============ +# +# -------------------- +# Add compilation keys +# -------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fadd_keys.sh CONFIG_NAME add_key "LIST_KEYS" +# +# +# DESCRIPTION +# =========== +# +# +# Script to add a set off key when compiling a configuration. +# The list off key to be added has to be enclosed with " ". +# A 'sed' is performed to modify the CONFIG_NAME/cpp.fcm file to +# add the new key(s). +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fadd_keys.sh ORCA2_LIM add_key "key_mpp_mpi key_nproci=1 key_nprocj=10" +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fadd_keys.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + echo "Adding keys in : ${NEW_CONF}" + for i in ${list_add_key} ; do + if [ "$(echo ${i} | grep -c key_nproc )" -ne 0 ] ; then + sed -e "s/key_nproc[ij]=.[0-9]* //" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo " " + sed -e "s/$/ ${i}/" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + elif [ "$(cat ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm | grep -c "$i" )" -ne 0 ] ; then + echo "key $i already present in cpp_${NEW_CONF}.fcm" + else + sed -e "s/$/ ${i}/" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo "added key $i in ${NEW_CONF}" + fi + done + + unset -v list_add_key + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh new file mode 100755 index 0000000000000000000000000000000000000000..c9a1e5080f3bf316a62be8a04b75546b267bee27 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================== +# Fcheck_archfile.sh +# ================== +# +# -------------------------- +# Check the compilation file +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_archfile.sh +# +# +# DESCRIPTION +# =========== +# +# +# Check the choice of the compiler. +# Three cases : +# +# - There was a previous choice +# - A new one has be specified, we use this one +# - No information, exit +# +# We use TOOLS/COMPILE/arch.fcm to see if something was chosen. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_archfile.sh ARCHFILE COMPILER +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_archfile.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +if [ ${#2} -eq 0 ]; then + if [ ! -f ${COMPIL_DIR}/$1 ]; then + echo "Warning !!!" + echo "NO compiler chosen" + echo "Try makenemo -h for help" + echo "EXITING..." + exit 1 + fi +else + ln -sf ${MAIN_DIR}/ARCH/arch-${2}.fcm ${COMPIL_DIR}/$1 +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..8a4524f02a9add48a0efac7924efebe206210632 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +###################################################### +# Author : Rachid Benshila for NEMO +# Contact : rblod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fcheck_config : config checking +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fcheck_config.sh +# ================ +# +# -------------------------- +# Check the configuration +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_config.sh FILENAME CONFNAME +# +# +# DESCRIPTION +# =========== +# +# +# Check the choice of the configuration: +# +# - Two cases +# - One is explicitely set +# - Nothing set, use the previous in use +# +# We use TOOLS/COMPILE/cfg.txt to check if the onfiguration exists. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_config.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_config.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +declare -a ZTAB +if [ ${#2} -eq 0 ]; then + tail -1 ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/cfg.tmp + read -a ZTAB < ${COMPIL_DIR}/cfg.tmp + NEW_CONF=${ZTAB[0]} ; TAB=( ${ZTAB[@]:1} ) + \rm ${COMPIL_DIR}/cfg.tmp + echo "Warning !!!" + echo "No configuration specified" + echo "Use makenemo -n MYCONFIG" + echo "or makenemo -h for help" + echo "Using defaut configuration : ${NEW_CONF}" +fi +if [ "$1" == cfg.txt ]; then + cat ${COMPIL_DIR}/$1 | grep "${NEW_CONF} " > ${COMPIL_DIR}/cfg.tmp + read -a ZTAB < ${COMPIL_DIR}/cfg.tmp + NEW_CONF=${ZTAB[0]} ; TAB=( ${ZTAB[@]:1} ) + \rm ${COMPIL_DIR}/cfg.tmp +fi + +unset -v ZTAB diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh new file mode 100755 index 0000000000000000000000000000000000000000..335ac0df272da243df09d4563a7c4c11a6f87d0d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fcheck_script.sh +# ================ +# +# -------------------------- +# Check +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_script.sh +# +# +# DESCRIPTION +# =========== +# +# +# Check if utilities are in the path, typically fcm. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_script.sh fcm +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_script.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +myscript=`which $1` +if [ ${#myscript} -eq 0 ]; then +echo "WARNING !!!" +echo "$1 has to be installed first" +echo "Exiting......................" +exit 1 +fi + +unset -v myscript diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..be9f3beda38e266feca0612f4752dfa573038616 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fclean_config : config removing +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fclean_config.sh +# ================ +# +# ------------------------ +# Remove the configuration +# ------------------------ +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fclean_config.sh CONFNAME +# +# +# DESCRIPTION +# =========== +# +# +# Remove the configuration: +# +# - remove CONFIG_NAME/WORK +# - remove CONFIG_NAME/BLD +# - remove CONFIG_NAME from TOOLS/TOOLS/COMPILE/cfg.txt +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fclean_config.sh ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fclean_config.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + NEW_CONF=${x_n} + echo "Are you sure that you want to remove this directory ? [y/n] " + read answer + answer=`echo $answer | sed 's/^[y].*$/y/'` + if [ -z "$answer" -o "x$answer" = "xy" ]; then + # testing if configuration exists + if [ "$(cat ${COMPIL_DIR}/cfg.txt | grep "${NEW_CONF} ")" == "" ] ; then + echo "The configuration ${NEW_CONF} does not exist in file cfg.txt" + echo "No removing configuration" + echo " " + else + rm -rf ${CONFIG_DIR}/${NEW_CONF} + sed -e "/${NEW_CONF} /d" ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp + mv ${COMPIL_DIR}/cfg.tmp ${COMPIL_DIR}/cfg.txt + echo "${NEW_CONF} configuration REMOVED" + fi + else + echo " " + echo "nothing to remove" + fi + + unset -v answer diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh new file mode 100755 index 0000000000000000000000000000000000000000..2ff65bd24fa37d39efebb7b8c91dad898608d0ea --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============= +# Fclean_var.sh +# ============= +# +# ---------------------------- +# Clean environement variables +# ---------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fclean_var.sh +# +# +# DESCRIPTION +# =========== +# +# +# Clean environement variables +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fclean_var.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fclean_var.sh 2384 2010-11-15 03:20:07Z rblod $ +# +# +# +# * creation +# +#- +#- Unset variables + +unset -v NSTOP +unset -v TAB +unset -v NEW_CONF +unset -v REF_CONF +unset -v CMP_NAM +unset -v NBR_PRC +unset -v NEM_SUBDIR +unset -v MAIN_DIR +unset -v CONFIG_DIR +unset -v TOOLS_DIR +unset -v COMPIL_DIR +unset -v NEMO_DIR +unset -v USEBLD diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh new file mode 100755 index 0000000000000000000000000000000000000000..f4c57c8336785ba5d05e88baceb92beec282f659 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fcopy_dir.sh +# ============ +# +# -------------------------- +# Copy a reference directory +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcopy_dir.sh +# +# +# DESCRIPTION +# =========== +# +# +# When a refenrence configuration is set, +# Copy NEMO sub-directories needed (OPA_SRC, TOP_SRC ...) +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcopy_dir.sh ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcopy_dir.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +declare -a ZTAB +grep "$1 " ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp +read -a ZTAB < ${COMPIL_DIR}/cfg.tmp +TAB=( ${ZTAB[@]:1} ) +\rm ${COMPIL_DIR}/cfg.tmp + +unset -v ZTAB diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh new file mode 100755 index 0000000000000000000000000000000000000000..fe29c6844fd0b4fc19549074714228240a4d0c6b --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fdel_keys : del keys in cpp.fcm file +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fdel_keys.sh +# ================ +# +# -------------------------- +# Add compilation keys +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fdel_keys.sh CONFIG_NAME del_key "LIST_KEYS" +# +# +# DESCRIPTION +# =========== +# +# +# Add cpp keys when compiling a configuration, key list has to be enclosed with " ". +# We perform a 'sed' on the CONFIG_NAME/CPP.fcm file, contianing the list of keys. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fdel_keys.sh CONFIG_NAME del_key "key_agrif" +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fdel_keys.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + echo "Removing keys in : ${NEW_CONF}" + for i in ${list_del_key} ; do + if [ "$(echo ${i} | grep -c key_nproc )" -ne 0 ] ; then + sed -e "s/key_nproc[ij]=.* //" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo " " + elif [ "$(cat ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm | grep -c "$i" )" -ne 0 ] ; then + sed -e "s/${i}//" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo "deleted key $i in ${NEW_CONF}" + fi + done + + unset -v list_del_key diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh new file mode 100755 index 0000000000000000000000000000000000000000..a9f9724c8e992a6d70501707b0f4e85edc050e18 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# Fgo_to_tools.sh +# =============== +# +# -------------------------- +# Go to the TOOLS directory +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fgo_to_tools.sh +# +# +# DESCRIPTION +# =========== +# +# +# Go to the TOOLS directory +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fgo_to_tools.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fgo_to_TOOLS.sh 2263 2010-10-14 10:13:18Z rblod $ +# +# +# +# * creation +# +#- + +cd ${MAIN_DIR}/TOOLS diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh new file mode 100755 index 0000000000000000000000000000000000000000..06764d982b93fd5c9133ea8eeec5e4f2feda6b54 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================== +# Flist_archfile.sh +# ================== +# +# -------------------------- +# Check the compilation file +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Flist_archfile.sh +# +# +# DESCRIPTION +# =========== +# +# +# List arch file available. +# The first line of each file in NEMO/ARCH directory is echoed. +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Flist_archfile.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Flist_archfile.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +echo "Available compilers for -m option :" +for file in `ls ${MAIN_DIR}/ARCH` +do +zvar1=${file#arch-} +zvar2=$(head -1 ${MAIN_DIR}/ARCH/$file) +#echo "${zvar1%.fcm} : ${zvar2#\#}" +printf "%-20s %s %-s\n" "${zvar1%.fcm}" : "${zvar2#\#}" +done diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh new file mode 100755 index 0000000000000000000000000000000000000000..f2c9d149cfdf73255b4a7d3e923fa3c8066b33ba --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +###################################################### +# Author : Rachid Benshila for NEMO +# Contact : rblod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fmake_WORK : create links in the WORK +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============= +# Fmake_WORK.sh +# ============= +# +# ----------------------- +# Make the WORK directory +# ----------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_WORK.sh +# +# +# DESCRIPTION +# =========== +# +# +# Make the WORK directory: +# +# - Create lin in NEW_CONF/WORK +# - Use specified sub-directories previously +# - OPA has to be done first !!! +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_WORK.sh ORCA2_LIM OPA_SRC LIM_SRC_2 +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_WORK.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +declare ZCONF=$1 ; shift +ZTAB=( $@ ) +declare i=0 ; declare NDIR=${#ZTAB[@]} + +echo "Creating ${ZCONF}/WORK = ${ZTAB[*]} for ${ZCONF}" +echo "" + +[ ! -d ${ZCONF}/MY_SRC ] && \mkdir ${ZCONF}/MY_SRC +[ -d ${ZCONF}/WORK ] || \mkdir ${ZCONF}/WORK + +\rm -f ../${1}/WORK/* + +while [ $i -lt $NDIR ] +do + [ "${ZTAB[i]}" = "OPA_SRC" ] && ln -sf ${NEMO_DIR}/OPA_SRC/*.[Ffh]90 ${ZCONF}/WORK + [ "${ZTAB[i]}" = "OPA_SRC" ] && ln -sf ${NEMO_DIR}/OPA_SRC/*/*.[Ffh]90 ${ZCONF}/WORK && break + let i=$i+1 +done + +i=0 +while [ $i -lt $NDIR ] +do + if [ "${ZTAB[i]}" != "OPA_SRC" ]; then + ln -sf ${NEMO_DIR}/${ZTAB[i]}/*.[Ffh]90 ${ZCONF}/WORK + ln -sf ${NEMO_DIR}/${ZTAB[i]}/*/*.[Ffh]90 ${ZCONF}/WORK 2>/dev/null + fi + let i=$i+1 +done + +for i in `(cd ${ZCONF}/MY_SRC ; ls *.[Ffh]90 2>/dev/null ) ` + do + [ -f ${ZCONF}/MY_SRC/$i ] && ln -sf $PWD/${ZCONF}/MY_SRC/${i} ${ZCONF}/WORK/. + done + +unset -v ZCONF +unset -v ZTAB +unset -v i +unset -v NDIR + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh new file mode 100755 index 0000000000000000000000000000000000000000..951961499535f93649bec3165ee4081ac5644b8d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fmake_bld.sh +# ============ +# +# -------------------- +# Make build directory +# -------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_bld.sh +# +# +# DESCRIPTION +# =========== +# +# +# Under CONFIG_NAME : +# - Make the build directory +# - Create repositories needed : +# - BLD for compilation +# +# A tmpdir can be specified for memory issues. +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_bld.sh NEMOGCM/CONFIG GYRE /usr/tmp +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_bld.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +[ ! -d ${3}/${2} ] && \mkdir ${3}/${2} +[ ! -d ${3}/${2}/BLD ] && \mkdir ${3}/${2}/BLD +[ ! -d ${1}/${2}/BLD ] && ln -sf ${3}/${2}/BLD ${1}/${2}/BLD +[ -f ${1}/${NEW_CONF}/cpp_${NEW_CONF}.fcm ] && ln -sf ${1}/${NEW_CONF}/cpp_${NEW_CONF}.fcm ${COMPIL_DIR}/cpp.fcm +rm -f ${1}/${NEW_CONF}/BLD/fcm.bld.lock diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..604cd62077ac81063b6133e89afa95dbe0d970d2 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# Fmake_config.sh +# =============== +# +# --------------- +# Make the config +# --------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_config.sh +# +# +# DESCRIPTION +# =========== +# +# +# - Make the config directory +# - Create repositories needed : +# +# - EXP00 for namelist +# - MY_SRC for user sources +# - BLD for compilation +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_config.sh CONFIG_NAME REF_CONFIG_NAME +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_config.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +\mkdir ${1} +\mkdir ${1}/EXP00 +\mkdir ${1}/MY_SRC +\cp -R ${2}/cpp_${2}.fcm ${1}/cpp_${1}.fcm +\cp -R ${2}/EXP00/*namelist* ${1}/EXP00/. +[ -f ${2}/EXP00/AGRIF_FixedGrids.in ] && \cp -R ${2}/EXP00/AGRIF_FixedGrids.in ${1}/EXP00/. +[ -f ${2}/EXP00/iodef.xml ] && \cp -R ${2}/EXP00/iodef.xml ${1}/EXP00/. +[ -f ${2}/EXP00/xmlio_server.def ] && \cp -R ${2}/EXP00/xmlio_server.def ${1}/EXP00/. +[ -d ${2}/MY_SRC ] && \cp ${2}/MY_SRC/* ${1}/MY_SRC/. 2> /dev/null diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea397a27583c2c11338975d6618f6d3e2ed4ecfe --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============== +# Fprep_agrif.sh +# ============== +# +# --------------------- +# Preparation for AGRIF +# --------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fprep_agrif.sh +# +# +# DESCRIPTION +# =========== +# +# +# Prepare directories for AGRIF and copy files needed +# +# Compile the conv +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fprep_agrif.sh CONFIG_NAME +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fprep_agrif.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +#- AGRIF conv +if [ "$AGRIFUSE" == 1 ]; then + +#- CONV +#fcm build ${TOOLS_DIR}/conv.cfg || exit 1 +gmake -C ${MAIN_DIR}/EXTERNAL/AGRIF/LIB + +#- AGRIF sources +[ ! -d $2/$1/OPAFILES ] && mkdir $2/$1/OPAFILES +[ ! -d $2/$1/OPAFILES/AGRIF_INC ] && mkdir $2/$1/OPAFILES/AGRIF_INC +[ ! -d $2/$1/OPAFILES/AGRIF_MODELFILES ] && mkdir $2/$1/OPAFILES/AGRIF_MODELFILES +cp -f -r ${MAIN_DIR}/EXTERNAL/AGRIF/agrif_opa.in $2/$1/OPAFILES/ +cp -f -r ${MAIN_DIR}/EXTERNAL/AGRIF/conv $2/$1/OPAFILES/ + +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh new file mode 100755 index 0000000000000000000000000000000000000000..a8fd309b537b66d93d2bf761e33876a927b7ebcf --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fread_dir.sh +# ============ +# +# --------------------- +# Read user directories +# --------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fread_dir.sh +# +# +# DESCRIPTION +# =========== +# +# +# Read directoires needed from standard input +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fread_dir.sh Directory_NAME YES/NO +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fread_dir.sh 2542 2011-01-10 13:18:31Z rblod $ +# +# +# +# * creation +# +#- + +if [ "$2" == "YES" ]; then + echo -n " $1 [Y/n] " + read answer + answer=`echo $answer | sed 's/^[yY].*$/y/'` + if [ -z "$answer" -o "x$answer" = "xy" ]; then + TAB[$ind]="$1" + let ind=ind+1 + echo " $1 selected " + echo " " + else + echo " $1 Not selected " + echo " " + fi + unset -v answer +else + echo -n " $1 [y/N] " + read answer + answer=`echo $answer | sed 's/^[nN].*$/N/'` + if [ "x$answer" = "xy" ]; then + TAB[$ind]="$1" + let ind=ind+1 + echo " $1 selected " + echo " " + else + echo " $1 Not selected " + echo " " + fi + unset -v answer +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh new file mode 100755 index 0000000000000000000000000000000000000000..4f1188d6feef0600808cb70865c914b41113348d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ========== +# agrifpp.sh +# ========== +# +# ---------------------------- +# Preform AGrif pre-processing +# ---------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ agrifpp.sh +# +# +# DESCRIPTION +# =========== +# +# +# Look after key agrif, if yes the conv is used, otherwise standard pre-processing is performed. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./agrifpp.sh 1 -Dkey +# +# or +# +# $ ./agrifpp.sh -Dkey +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: agrifpp.sh 2143 2010-10-04 12:49:55Z rblod $ +# +# +# +# * creation +# +#- + +if [ "$1" == "1" ]; then + shift + MYFILE=`echo $* |awk -F" " '{print $NF}' ` + FPP_OPT=` echo $* |awk '{ for (i=1 ; i ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/par_oce.F90 + (cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES ; ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/conv agrif_opa.in -rm -comdirin ./ -comdirout AGRIF_MODELFILES/ -convfile par_oce.F90 > /dev/null ) + cpp ${FPP_OPT} -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_MODELFILES/par_oce.F90 > ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/par_oce.F90 + touch ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/param_done + elif [ "${MYFILE}" == "par_oce.F90" -a -f ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/param_done ] ; then + cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES + cpp ${FPP_OPT} -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC ${MYFILE} + exit + fi + + if [ "${MYFILE}" == agrif2model.F90 ]; then + cpp -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC $@ + exit + fi + + cpp -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC $@ > ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/${MYFILE} + ( cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES ; ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/conv agrif_opa.in -rm -comdirin ./ -comdirout AGRIF_MODELFILES/ -convfile ${MYFILE} > /dev/null ) + cd ${NEMO_TDIR}/${NEW_CONF} + sed 's/[ ]*$//' OPAFILES/AGRIF_MODELFILES/${MYFILE}> OPAFILES/${MYFILE} + cpp ${FPP_OPT} -IOPAFILES/AGRIF_INC OPAFILES/${MYFILE} +else + shift + cpp $@ +fi + diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl b/deploy/patches/ecmwf/ecearth/v3.0-r1012/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..33160b5d6bd91afc180464c788fdccb258aa2f8a --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl @@ -0,0 +1,65 @@ + +$(info --> Reading configuration from $(lastword $(MAKEFILE_LIST))) + +# ============================================================================ +# *** Configuration for gimle-intel-scampi +# ============================================================================ + +COUPLE := [[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]/oasis3 + +# CHAN : MPI1/MPI2 +CHAN := MPI1 + +# MPI library +MPIDIR := [[[PLT:ACTIVE:MPI_BASE_DIR]]] +ifneq ($(strip $(MPIDIR)),) +MPIBIN := $(MPIDIR)/bin +MPI_INCLUDE := $(MPIDIR)$(addprefix /,[[[PLT:ACTIVE:MPI_INC_SUBDIR]]]) +MPILIB := -L$(MPIDIR)$(addprefix /,[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]]) +endif +MPILIB += $(addprefix -l,[[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]]) + +# NETCDF library +NETCDF_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]] +ifneq ($(strip $(NETCDF_DIR)),) +NETCDF_INCLUDE := $(NETCDF_DIR)$(addprefix /,[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]]) +NETCDF_LIBRARY := -L$(NETCDF_DIR)$(addprefix /,[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]]) +endif +NETCDF_LIBRARY += $(addprefix -l,[[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]]) + +comma := , + +# Compiling and other commands +MAKE := [[[PLT:ACTIVE:MAKE]]] +F90 := [[[PLT:ACTIVE:FC]]] [[[PLT:ACTIVE:FFLAGS_FREEFORM]]] $(addprefix -I,$(MPI_INCLUDE)) +F := [[[PLT:ACTIVE:FC]]] [[[PLT:ACTIVE:FFLAGS_FIXEDFORM]]] +f90 := $(F90) +f := $(F) +CC := [[[PLT:ACTIVE:CC]]] $(addprefix -I,$(MPI_INCLUDE)) +LD := [[[PLT:ACTIVE:LD]]] +AR := [[[PLT:ACTIVE:AR]]] +ARFLAGS := [[[PLT:ACTIVE:ARFLAGS]]] + +# CPP/FPP macros +MACROS := use_libMPI use_comm_$(CHAN) use_netCDF TREAT_OVERLAY +MACROS += [[[PLT:ACTIVE:OASIS_ADD_PPDEFS]]] + +# Compiler options +F90FLAGS := [[[PLT:ACTIVE:FFLAGS]]] +F90FLAGS += [[[PLT:ACTIVE:OASIS_ADD_FFLAGS]]] +F90FLAGS += $(addprefix [[[PLT:ACTIVE:FFLAGS_FPP_PREFIX]]],$(MACROS)) +F90FLAGS += $(addprefix -I,$(NETCDF_INCLUDE)) + +f90FLAGS := $(F90FLAGS) +FFLAGS := $(F90FLAGS) +fFLAGS := $(F90FLAGS) + +CCFLAGS := [[[PLT:ACTIVE:CFLAGS]]] +CCFLAGS += $(addprefix [[[PLT:ACTIVE:CFLAGS_CPP_PREFIX]]],$(MACROS)) +CCFLAGS += $(addprefix -I,$(NETCDF_INCLUDE)) + +LDFLAGS := [[[PLT:ACTIVE:LDFLAGS]]] +LDFLAGS += [[[PLT:ACTIVE:OASIS_ADD_LDFLAGS]]] + +# MPP_IOOPT needed for compiling mpp_io +MPP_IOOPT := diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ctrl/namcouple.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..13db2656e272cb8c8e7baaace8baa312ce4ee07c --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ctrl/namcouple.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 4 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 4 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run-atm.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run-atm.sh new file mode 100755 index 0000000000000000000000000000000000000000..f08d5110a7a0d5c7429b2b6a7b24ad26aab9aa90 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run-atm.sh @@ -0,0 +1,343 @@ +#@ shell = /usr/bin/ksh + + # Specifies the shell that parses the script. If not + # specified, your login shell will be used. + +#@ class = np + + # Specifies that your job should be run in the class (queue) + # np, which is used to run parallel jobs. + +#@ job_type = parallel + + # Specifies that your job is parallel + +#@ job_name = ecearth3 + + # Assigns the specified name to the request + +#@ output = $(job_name).$(schedd_host).$(jobid).out + + # Specifies the name and location of STDOUT. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ error = $(job_name).$(schedd_host).$(jobid).err + + # Specifies the name and location of STDERR. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ notification = always + + # Specifies that email should be sent only if the job fails. + # Other options include: always, complete, start, and + # never. The default is notification = complete. + +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) + + # Specifies quantities of the resources which will be 'consumed' + # by each process/task of a job step. ConsumableCpus and + # ConsumableMemory must be specified with a value which is + # greater than zero. + # The value ConsumableCpus indicates the number of threads per + # (MPI) process/task. This job will be run using 1 thread + # per MPI process/task. + # The value ConsumableMemory specifies the (real) memory per + # (MPI) process/task which is shared between threads. This job + # will request 100 megabytes of real memory. + +#@ node = 4 + + # Specifies that your job requires 2 nodes + +#@ tasks_per_node = 32 + + # Specifies the number of (MPI) processes/tasks of a parallel job + # you want to run per node. In this example your job requires + # 32 processes/tasks per node. + +#@ cpu_limit = 12:00:00 + + # Specifies the maximum CPU time in HH:MM:SS used by any single process. + # In this job 1 MPI process/task can use up to a total of 1 min CPU time. + # Note: All limits are capped by those specified in the class. + +#@ wall_clock_limit = 24:00:00 + + # Specifies that your job requires HH:MM:SS of wall clock + # time. This job requires 3 min of wall clock time. + # Note: All limits are capped by those specified in the class. + +#@ queue +set -xv +exp_name=IFS3 +alias gdate='/opt/freeware/bin/date' + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 10 years" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=true + +# Resolution +ifs_grid=T255L91 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 year" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +start_dir=${PWD} +ctrl_file_dir=${start_dir}/ctrl + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- + +# Configure paths for building/running EC-Earth +ecearth_source_dir=/perm/ms/se/sm0g/Projects/ecearth3-c1a +run_dir=${TEMP}/${USER}/run/${exp_name} +ini_data_dir=${PERM}/ecearth3/setup + +stdout_file=${start_dir}/out/out.out + +# Configure grib api paths +export GRIB_DEFINITION_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/share/definitions +export GRIB_SAMPLES_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/ifs_samples/grib1 +export GRIB_BIN_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64 + + +# Configure number of processors per node +#proc_per_node=32 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +ifs_time_step_sec=2700 + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 1 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 1 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\2:') + +ifs_numproc=128 + +ifs_exe_file=${ecearth_source_dir}/ifs-${ifs_version}/bin/ifsmaster-${build_arch} + +ifs_lastout=false + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(gdate -uR -d "${run_start_date}") +run_end_date=$(gdate -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(gdate -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(gdate -d "${leg_end_date}" +%s) -gt $(gdate -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(gdate -d "${leg_start_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(gdate -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(gdate -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(gdate -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT \ + ICMSEA${exp_name}INIT + + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS namelist file +case ${ifs_grid} in + T255L91) . ${ctrl_file_dir}/namelist.ifs-T255L91.sh > fort.4 + ;; + *) . ${ctrl_file_dir}/namelist.ifs-default.sh > fort.4 + ;; +esac + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ +grib_set=${GRIB_BIN_PATH}${GRIB_BIN_PATH:+/}grib_set + +# Create data for december, the year before the leg starts +${grib_set} \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + ${grib_set} -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +${grib_set} -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + + +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=no + +./${ifs_exe_file##*/} -v ecmwf -e ${exp_name} diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run.sh b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run.sh new file mode 100755 index 0000000000000000000000000000000000000000..0dccc35bcb01a250edaddf4026a1baeaf4e3356d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/runtime/ecmwf-run.sh @@ -0,0 +1,543 @@ +#@ shell = /usr/bin/ksh + + # Specifies the shell that parses the script. If not + # specified, your login shell will be used. + +#@ class = np + + # Specifies that your job should be run in the class (queue) + # np, which is used to run parallel jobs. + +#@ job_type = parallel + + # Specifies that your job is parallel + +#@ job_name = ecearth3 + + # Assigns the specified name to the request + +#@ output = $(job_name).$(schedd_host).$(jobid).out + + # Specifies the name and location of STDOUT. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ error = $(job_name).$(schedd_host).$(jobid).err + + # Specifies the name and location of STDERR. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ notification = always + + # Specifies that email should be sent only if the job fails. + # Other options include: always, complete, start, and + # never. The default is notification = complete. + +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) + + # Specifies quantities of the resources which will be 'consumed' + # by each process/task of a job step. ConsumableCpus and + # ConsumableMemory must be specified with a value which is + # greater than zero. + # The value ConsumableCpus indicates the number of threads per + # (MPI) process/task. This job will be run using 1 thread + # per MPI process/task. + # The value ConsumableMemory specifies the (real) memory per + # (MPI) process/task which is shared between threads. This job + # will request 100 megabytes of real memory. + +#@ node = 2 + + # Specifies that your job requires 2 nodes + +#@ tasks_per_node = 32 + + # Specifies the number of (MPI) processes/tasks of a parallel job + # you want to run per node. In this example your job requires + # 32 processes/tasks per node. + +#@ cpu_limit = 12:00:00 + + # Specifies the maximum CPU time in HH:MM:SS used by any single process. + # In this job 1 MPI process/task can use up to a total of 1 min CPU time. + # Note: All limits are capped by those specified in the class. + +#@ wall_clock_limit = 24:00:00 + + # Specifies that your job requires HH:MM:SS of wall clock + # time. This job requires 3 min of wall clock time. + # Note: All limits are capped by those specified in the class. + +#@ queue + +set -vuex +alias gdate='/opt/freeware/bin/date' + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE4 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 10 years" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=true + +# Resolution +ifs_grid=T255L91 +nem_grid=ORCA1L46 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="2 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +start_dir=${PWD} +ctrl_file_dir=${start_dir}/ctrl + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +# Configure paths for building/running EC-Earth +ecearth_source_dir=${PERM}/Projects/ecearth3-c1a +run_dir=${TEMP}/${USER}/run/${exp_name} +ini_data_dir=${PERM}/ecearth3/setup + +# File for standard output. +stdout_file=${start_dir}/out/out.out + +# Configure grib api paths +export GRIB_DEFINITION_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/share/definitions +export GRIB_SAMPLES_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/ifs_samples/grib1 +export GRIB_BIN_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64 + + +# Configure and load modules +pre_load_modules_cmd="" +module_list="" + + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +ifs_time_step_sec=2700 + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=38 + +ifs_exe_file=${ecearth_source_dir}/ifs-${ifs_version}/bin/ifsmaster-${build_arch} + +ifs_lastout=false + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=3 + +nem_time_step_sec=3600 +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${ecearth_source_dir}/nemo-${nem_version}/CONFIG/${nem_grid}_LIM${lim_version}/BLD/bin/nemo.exe + +nem_numproc=18 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_source_dir}/util/namcouple-split/namsplit.pl + +oas_numproc=8 + +# Flux correction that compensates for the mismatch between P-E over the ocean, +# and run-off from land (necessary to avoid sea level rise). +# The RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_rnf_fluxcorr=0.87 + +oas_exe_file=${ecearth_source_dir}/oasis3/${build_arch}/bin/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(gdate -uR -d "${run_start_date}") +run_end_date=$(gdate -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(gdate -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(gdate -d "${leg_end_date}" +%s) -gt $(gdate -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(gdate -d "${leg_start_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(gdate -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(gdate -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(gdate -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1)) ) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +case ${ifs_grid} in + T255L91) . ${ctrl_file_dir}/namelist.ifs-T255L91.sh > fort.4 + ;; + *) . ${ctrl_file_dir}/namelist.ifs-default.sh > fort.4 + ;; +esac +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ +grib_set=${GRIB_BIN_PATH}${GRIB_BIN_PATH:+/}grib_set + +# Create data for december, the year before the leg starts +${grib_set} \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy} ) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + ${grib_set} -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +${grib_set} -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $( seq 0 $((nem_numproc-1)) ) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +# Use the launch function from the platform configuration file +t1=$(gdate +%s) +rm -f configmpmd +for node in $(seq 1 $oas_numproc) +do + echo "$oas_exe_file" >> configmpmd +done + +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> configmpmd +done + +for node in $(seq 1 $nem_numproc) +do + echo "$nem_exe_file" >> configmpmd +done + +t2=$(gdate +%s) +/usr/bin/poe -pgmmodel mpmd -cmdfile configmpmd +tr=$(gdate -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `gdate '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/ec-conf/ec-conf b/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/ec-conf/ec-conf new file mode 100755 index 0000000000000000000000000000000000000000..b0b2186dd6dbdaaf98fdad6dab9ef7b89e46933d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/ec-conf/ec-conf @@ -0,0 +1,1067 @@ +#!/usr/bin/env python + +import sys,os,getopt,stat +# sys.path = ['/usr/local/apps/python/2.7.2-01/lib/python2.7', '/usr/local/apps/python/2.7.2-01/lib/python2.7/lib-dynload'] +sys.path.pop(sys.path.index('/usr/local/apps/python/2.7.2-01/lib/python2.7/site-packages')) +import xml.sax +import re +import operator + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION info <<< +# ------------------------------------------------------------------------------------------------- +def info(s,level=1): + """ @brief Print info to stdout + @param s string to print + """ + if VERBOSE>=level: + sys.stderr.write("*II* %s\n" % s) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION info >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION warning <<< +# ------------------------------------------------------------------------------------------------- +def warning(s): + """ @brief Print warning to stdout + @param s string to print + """ + if WARNING: + sys.stderr.write("*WW* %s\n" % s) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION warning >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION error <<< +# ------------------------------------------------------------------------------------------------- +def error(s): + """ @brief Print error to stdout + @param s string to print + """ + print "*EE* %s " % s + sys.exit(1) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION error >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION usage <<< +# ------------------------------------------------------------------------------------------------- +def usage(myname): + print "\nUsage: %s OPTIONS \n" % (myname) + + print "Read configuration from an XML file and create config files." + + print """ +%s reads a data base of configuration parameters from an XML file. +Subsequently, a number of template files are processed in order to create +configuration files (targets).""" % (myname) + + print """ +Options: -h|--help Print this help screen. + -p|--platform Set the active platform. See ... + -g|--gui Starts the graphical user interface. Turns off -x. + -x|--write-xml Writes the content of in XML format to stdout. + This can be used to normalise the XML file and for test purposes. + -v|--verbose Produces verbose output (stderr). To increase verbosity, + use more than once. + -w|--no-warning Turns off warnings (however, errors are displayed). + """ + sys.exit(2) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION usage >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** CLASS TextNode <<< +# ================================================================================================= +class TextNode(object): + def __init__(self): + self.text = "" + + def addText(self,content): + self.text += content +# ================================================================================================= +# *** END of CLASS TextNode >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS NamedNode <<< +# ================================================================================================= +class NamedNode(object): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self,attr=None): + + self.name = None + self.description = None + + if attr: + if 'name' in attr: + self.name = attr['name'] + + info('Create named node: '+self.name+' ('+self.__class__.__name__+')',level=2) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION set <<< +# ------------------------------------------------------------------------------------------------- + def set(self,key,value): + self.__dict__.__setitem__(key,value) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION set >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION xml <<< +# ------------------------------------------------------------------------------------------------- + def xml(self,level=0): + """Provides XML representation of the NamedNode as a string""" + + tabwidth = 4 + + s = ' '*level*tabwidth + s += '<' + self.__class__.__name__ + if 'name' in self.__dict__ and self.name: + s += ' name="' + self.name + '"' + s += '>\n' + + for e in 'description','template','target','type','value': + if e in self.__dict__: + s += ' '*(level+1)*tabwidth + s += '<' + e.capitalize() + '>' + if self.__dict__[e]: s += self.__dict__[e] + s += '\n' + + if level<=1: s+='\n' + + for e in 'translation','platform','model','parameter': + if e in self.__dict__: + for t in self.__dict__[e]: + s += t.xml(level+1) + + s += ' '*level*tabwidth + s += '\n' + + if level>0 and level<=2: s += '\n' + + return s +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION xml >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION plt <<< +# ------------------------------------------------------------------------------------------------- + def plt(self,name=None): + """Provides short-hand access to the Platform member with name 'name'.""" + if 'platform' in self.__dict__: + if name: + for p in self.platform: + if p.name == name: + return p + else: + return self.platform + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION plt >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION mod <<< +# ------------------------------------------------------------------------------------------------- + def mod(self,name=None): + """Provides short-hand access to the Model member with name 'name'.""" + + if 'model' in self.__dict__: + if name: + for m in self.model: + if m.name == name: + return m + else: + return self.model + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION mod >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION par <<< +# ------------------------------------------------------------------------------------------------- + def par(self,name=None): + """Provides short-hand access to the Parameter member with name 'name'.""" + + if 'parameter' in self.__dict__: + if name: + for p in self.parameter: + if p.name == name: + return p + else: + return self.parameter + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION par >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS NamedNode >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Translation <<< +# ================================================================================================= +class Translation(NamedNode): + def __init__(self,attr): + super(Translation,self).__init__(attr) + self.template = None + self.target = None + self.properties = '' + self.isActive = 1 + + def setTarget(self,t): + self.target = t +# ================================================================================================= +# *** END of CLASS Translation >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Platform <<< +# ================================================================================================= +class Platform(NamedNode): + def __init__(self,attr): + super(Platform,self).__init__(attr) + self.parameter = [] + self.translation = [] +# ================================================================================================= +# *** END of CLASS Platform >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Model <<< +# ================================================================================================= +class Model(NamedNode): + def __init__(self,attr): + super(Model,self).__init__(attr) + self.parameter = [] +# ================================================================================================= +# *** END of CLASS Model >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Parameter <<< +# ================================================================================================= +class Parameter(NamedNode): + def __init__(self,attr): + super(Parameter,self).__init__(attr) + self.type = None + self.value = None +# ================================================================================================= +# *** END of CLASS Parameter >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Configuration <<< +# ================================================================================================= +class Configuration(NamedNode,xml.sax.handler.ContentHandler): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self): + + self.translation = [] + self.platform = [] + self.model = [] + + self.xmlFile = None + self.activePlatform = None + + self.__stack = [] + self.__types = { 'Translation' : Translation, + 'Platform' : Platform, + 'Model' : Model, + 'Parameter' : Parameter } +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION xml <<< +# ------------------------------------------------------------------------------------------------- + def xml(self,level=0): + + s = '\n\n' + s += super(Configuration,self).xml(level) + + return s +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION xml >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION startElement <<< +# ------------------------------------------------------------------------------------------------- + def startElement(self,tag,attributes): + + info("Processing XML element '"+str(tag)+"'",level=3) + + if self.__stack: + if tag in self.__types: + info("Adding NamedNode for element '"+str(tag)+"'",level=3) + self.__stack.append(self.__types[tag](attributes)) + else: + info("Adding TextNode for element '"+str(tag)+"'",level=3) + self.__stack.append(TextNode()) + else: + self.__stack.append(self) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION startElement >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION characters <<< +# ------------------------------------------------------------------------------------------------- + def characters(self,content): + if isinstance(self.__stack[-1],TextNode): + self.__stack[-1].addText(content) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION characters >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION endElement <<< +# ------------------------------------------------------------------------------------------------- + def endElement(self,tag): + n = self.__stack.pop() + if self.__stack: + if isinstance(n,TextNode): + self.__stack[-1].__dict__[tag.lower()] = n.text + else: + self.__stack[-1].__dict__[tag.lower()].append(n) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION endElement >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION parse <<< +# ------------------------------------------------------------------------------------------------- + def parse(self,file): + + parser = xml.sax.make_parser() + parser.setContentHandler(self) + + info("Parsing XML file '%s'" % (file)) + + try: parser.parse(file) + except IOError: + error("Could not open file '"+file+"' for reading") + + info("Finished parsing '%s': Translation: %d Platform: %d Model: %d" % + (file,len(self.translation),len(self.platform),len(self.model))) + self.xmlFile = file +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION parse >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION translate <<< +# ------------------------------------------------------------------------------------------------- + def translate(self,translation): + + RPN_OPS = { + 'ADD' : operator.add, + 'SUB' : operator.sub, + 'MUL' : operator.mul, + 'DIV' : operator.truediv, + 'POW' : operator.pow, + 'MOD' : operator.mod + } + + substRE = re.compile(r"\[\[\[(?P[a-zA-Z0-9_:,]+)\]\]\]") + varRE = re.compile(r"^(\w{3}):([a-zA-Z0-9_]+):([a-zA-Z0-9_]+)$") + + def parseVar(s): # <<< + + while 1: + + m = varRE.search(s) + + if not m: break + + (category,component,parameter) = m.groups() + + if category.lower()=='plt' and component.lower() == 'active': + component = self.activePlatform + + try: s = getattr(self,category.lower())(component).par(parameter).value + except: + warning("Unable to process '%s' (Line %d in '%s')" % (s,line_number,template)) + return '[[['+s+']]]' + return s + # >>> + + def parseRNP(s): # <<< + + stack = [] + + for token in s.split(','): + + token = parseVar(token) + if not token: + warning("Substitute expression with empty string (Line %d in '%s')" % (line_number,template)) + + try: result = int(token) + except ValueError: + + try: result = float(token) + except ValueError: + + if token in RPN_OPS.keys(): + + try: result = RPN_OPS[token](stack.pop(-2),stack.pop()) + except IndexError: + warning("Too few arguments to execute '%s' (Line %d in '%s')" % (token,line_number,template)) + return "[[["+s+"]]]" + except: + warning("Unable to execute '%s' (Line %d in '%s')" % (token,line_number,template)) + return "[[["+s+"]]]" + else: + result = token + + stack.append(result) + + if len(stack)>1: + warning("Too many operands in '%s' (Line %d in '%s')" % (s,line_number,template)) + return "[[["+s+"]]]" + + return result + # >>> + + template = translation.template + target = translation.target.strip() + + info("Translate: '%s' --> '%s'" % (template,target)) + + try: input = open(template,'r') + except IOError: + error("Can't open template file '%s' for reading" % (template)) + + if target: + try: output = open(target,'w') + except IOError: + error("Can't open target file '%s' for writing" % (target)) + + if 'executable' in translation.properties.split(','): + os.chmod(target,stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH | \ + stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | \ + stat.S_IWUSR) + else: + output = sys.stdout + + line_number = 0 + for line in input: + line_number += 1 + ptr = 0 + buf = '' + for m in substRE.finditer(line): + buf += line[ptr:m.start()] + var = m.groupdict()['var'] + buf += str(parseRNP(var)) + ptr = m.end() + buf += line[ptr:] + + output.write(buf) + + input.close() + if target: output.close() + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION translate >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION translateAll <<< +# ------------------------------------------------------------------------------------------------- + def translateAll(self): + for t in self.translation: + self.translate(t) + + if self.activePlatform: + for t in self.plt(self.activePlatform).translation: + self.translate(t) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION translateAll >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS Configuration >>> +# ================================================================================================= + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION startGUI <<< +# ------------------------------------------------------------------------------------------------- +def startGUI(cfg): + + import Tkinter + import tkFileDialog + import tkMessageBox + +# ================================================================================================= +# *** CLASS VerticalScrolledFrame <<< +# ================================================================================================= + class VerticalScrolledFrame(Tkinter.Frame): + """A pure Tkinter scrollable frame that actually works! + + * Use the 'interior' attribute to place widgets inside the scrollable frame + * Construct and pack/place/grid normally + * This frame only allows vertical scrolling + + http://tkinter.unpythonic.net/wiki/VerticalScrolledFrame + + """ + def __init__(self, parent, *args, **kw): + Tkinter.Frame.__init__(self, parent, *args, **kw) + + # create a canvas object and a vertical scrollbar for scrolling it + vscrollbar = Tkinter.Scrollbar(self, orient=Tkinter.VERTICAL) + vscrollbar.pack(fill=Tkinter.Y, side=Tkinter.RIGHT, expand=Tkinter.FALSE) + canvas = Tkinter.Canvas(self, bd=0, highlightthickness=0, + yscrollcommand=vscrollbar.set) + canvas.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH, expand=Tkinter.TRUE) + vscrollbar.config(command=canvas.yview) + + # reset the view + canvas.xview_moveto(0) + canvas.yview_moveto(0) + + # create a frame inside the canvas which will be scrolled with it + self.interior = interior = Tkinter.Frame(canvas) + interior_id = canvas.create_window(0, 0, window=interior, + anchor=Tkinter.NW) + + # track changes to the canvas and frame width and sync them, + # also updating the scrollbar + def _configure_interior(event): + # update the scrollbars to match the size of the inner frame + size = (interior.winfo_reqwidth(), interior.winfo_reqheight()) + canvas.config(scrollregion="0 0 %s %s" % size) + if interior.winfo_reqwidth() != canvas.winfo_width(): + # update the canvas's width to fit the inner frame + canvas.config(width=interior.winfo_reqwidth()) + interior.bind('', _configure_interior) + + def _configure_canvas(event): + if interior.winfo_reqwidth() != canvas.winfo_width(): + # update the inner frame's width to fill the canvas + canvas.itemconfigure(interior_id, width=canvas.winfo_width()) + canvas.bind('', _configure_canvas) + + return +# ================================================================================================= +# *** END of CLASS VerticalScrolledFrame >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS GUI <<< +# ================================================================================================= + class GUI(Tkinter.Tk): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self,cfg): + + Tkinter.Tk.__init__(self) + + self.columnconfigure(1,weight=1) + self.rowconfigure(0,pad=10) + self.rowconfigure(2,weight=1) + + self.__cfg = cfg + self.__varList = [] + self.__varDict = {} + + for t in self.__cfg.translation + [t for p in self.__cfg.platform for t in p.translation]: + v = Tkinter.IntVar() + v.set(1) + v.trace('w',lambda n,i,m,t=t: t.set('isActive',int(self.globalgetvar(n)))) + self.__addVar(v,t) + + self.__activeComponent = Tkinter.StringVar() + + self.__status = Tkinter.StringVar() + + self.__componentFrame = None + self.__parameterFrame = None + self.__translationFrame = None + + self.__initTopPanel() + self.__initStatusPanel() + self.__initMainPanel() + + self.grid_propagate(flag=0) + + self.__setStatus("Welcome to EC-CONF's graphical user interface!",time=3000) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __addVar <<< +# ------------------------------------------------------------------------------------------------- + def __addVar(self,var,obj=None): + self.__varList.append(var) + if obj: + self.__varDict[obj] = len(self.__varList)-1 +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __addVar >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __setStatus <<< +# ------------------------------------------------------------------------------------------------- + def __setStatus(self,message,time=8000): + + try: self.after_cancel(self.__statusAfterID) + except: pass + + self.__defaultStatusMessage = 'Basic usage: SELECT XML database and template/target files, ' \ + ' CONFIGURE parameters, ' \ + ' and CREATE the configuration files.' + self.__status.set(message) + self.__statusAfterID = self.after(time,self.__status.set,self.__defaultStatusMessage) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __setStatus >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initTopPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initTopPanel(self): + + w = Tkinter.Label(text='The active platform is:') + w.grid(row=0,column=0) + + if not self.__cfg.activePlatform: + self.__cfg.activePlatform = self.__cfg.platform[0].name + + v = Tkinter.StringVar() + v.set(self.__cfg.activePlatform) + v.trace('w',lambda n,i,m: self.__setStatus("Active platform changed to '"+self.__cfg.activePlatform+"'")) + v.trace('w',lambda n,i,m: self.__fillParameterFrame(self.__parameterFrame)) + v.trace('w',lambda n,i,m: self.__fillComponentFrame(self.__componentFrame)) + v.trace('w',lambda n,i,m: self.__fillTranslationFrame(self.__translationFrame)) + v.trace('w',lambda n,i,m: self.__cfg.set('activePlatform',self.globalgetvar(n))) + self.__addVar(v) + + w = Tkinter.OptionMenu(None,v,*[p.name for p in self.__cfg.platform]) + w.grid(row=0,column=1,sticky='W',padx=8) + + w = Tkinter.Button(text='Select',width=10,height=2,bg='tan') + w['command'] = self.__doSelect + w.grid(row=0,column=2,padx=8) + + w = Tkinter.Button(text='Configure',width=10,height=2,bg='tan') + w['command'] = self.__doConfigure + w.grid(row=0,column=3,padx=8) + + w = Tkinter.Button(text='Create!',width=10,height=2,bg='darkgrey',fg='white') + w['command'] = self.__doCreate + w.grid(row=0,column=4,padx=8) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initTopPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initStatusPanel<<< +# ------------------------------------------------------------------------------------------------- + def __initStatusPanel(self): + w = Tkinter.Label(textvariable=self.__status,height=2,bg='orange') + w.grid(row=1,column=0,columnspan=5,sticky='EW',pady=5) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initStatusPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initMainPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initMainPanel(self): + + self.__initSelectPanel() + self.__initConfigurePanel() + + self.__selectPanel.grid_remove() + self.__configurePanel.grid_remove() + + self.__activeMainPanel = self.__selectPanel + self.__activeMainPanel.grid() +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initMainPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initSelectPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initSelectPanel(self): + + self.__selectPanel = Tkinter.Frame() + self.__selectPanel.grid(row=2,column=0,columnspan=5,sticky='NEWS') + self.__selectPanel.columnconfigure(0,weight=1) + self.__selectPanel.rowconfigure(2,weight=1) + + f = Tkinter.LabelFrame(self.__selectPanel,text='XML database file') + f.grid(sticky='NEWS') + f.columnconfigure(1,weight=1) + + w = Tkinter.Label(f,text='The current file is: ') + w.grid(row=0,column=0,sticky='W') + + v = Tkinter.StringVar() + v.set(self.__cfg.xmlFile) + v.trace('w',lambda n,i,m: self.__cfg.set('xmlFile',self.globalgetvar(n))) + self.__addVar(v,'xmlFile') + + w = Tkinter.Label(f,textvariable=v,bg='darkgrey',fg='white') + w.grid(row=0,column=1,sticky='W') + + w = Tkinter.Button(f,text='Save as',width=8) + w['command'] = lambda :self.__saveAsXmlFile() + w.grid(row=0,column=2,sticky='E',padx=4,pady=5) + + w = Tkinter.Button(f,text='Save',width=8) + w['command'] = lambda :self.__saveXmlFile() + w.grid(row=0,column=3,sticky='E',padx=4,pady=5) + + Tkinter.Frame(self.__selectPanel).grid(pady=5) + + self.__translationFrame = Tkinter.LabelFrame(self.__selectPanel,text='Templates and Targets') + self.__translationFrame.grid(sticky='NEWS') + self.__translationFrame.columnconfigure(1,weight=1) + self.__translationFrame.columnconfigure(3,weight=9) + + self.__fillTranslationFrame(self.__translationFrame) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initSelectPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initConfigurePanel <<< +# ------------------------------------------------------------------------------------------------- + def __initConfigurePanel(self): + + self.__configurePanel = Tkinter.Frame() + self.__configurePanel.grid(row=2,column=0,columnspan=5,sticky='NEWS') + self.__configurePanel.rowconfigure(0,weight=1) + self.__configurePanel.columnconfigure(2,weight=1) + + # Component frame + self.__componentFrame = Tkinter.LabelFrame(self.__configurePanel,text='Configurable components') + self.__componentFrame.grid(sticky='NEWS') + + self.__fillComponentFrame(self.__componentFrame) + + # Spacer frame + f = Tkinter.Frame(self.__configurePanel) + f.grid(row=0,column=1,padx=2) + + # Parameter frame + f = Tkinter.LabelFrame(self.__configurePanel,text='Configuration parameters') + f.grid(row=0,column=2,sticky='NEWS') + + f = VerticalScrolledFrame(f) + f.pack(fill=Tkinter.BOTH,expand=Tkinter.TRUE) + + self.__parameterFrame = f.interior + self.__parameterFrame.columnconfigure(2,weight=1) + + self.__fillParameterFrame(self.__parameterFrame) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initConfigurePanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillTranslationFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillTranslationFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + v = Tkinter.IntVar() + v.set(1) + v.trace('w',lambda n,i,m: [ self.__varList[self.__varDict[t]].set(self.globalgetvar(n)) + for t in self.__cfg.translation + + self.__cfg.plt(self.__cfg.activePlatform).translation ]) + self.__addVar(v) + + w = Tkinter.Checkbutton(frame,text='Activate/deactivate all',variable=v) + w.grid(row=0,column=0,sticky='W',pady=5) + + r = 1 + for t in self.__cfg.translation + self.__cfg.plt(self.__cfg.activePlatform).translation: + + w = Tkinter.Checkbutton(frame,text=t.description,variable=self.__varList[self.__varDict[t]]) + w.grid(row=r,column=0,sticky='W',pady=5) + + w = Tkinter.Label(frame,text=t.template,bg='darkgrey',fg='white') + w.grid(row=r,column=1,sticky='E') + + w = Tkinter.Label(frame,text=' --> ') + w.grid(row=r,column=2) + + v = Tkinter.StringVar() + v.set(t.target) + v.trace('w',lambda n,i,m,t=t: t.setTarget(self.globalgetvar(n))) + self.__addVar(v) + w = Tkinter.Entry(frame,textvariable=v) + + w.grid(row=r,column=3,sticky='EW') + r+=1 + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillTranslationFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillComponentFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillComponentFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + if self.__cfg.activePlatform: + + self.__activeComponent.set(self.__cfg.activePlatform) + + w = Tkinter.Label(frame,text='Active platform') + w.pack(anchor='w') + + c = self.__cfg.plt(self.__cfg.activePlatform) + w = Tkinter.Radiobutton(frame,text=c.name,variable=self.__activeComponent,value=c.name) + w['command'] = lambda:self.__fillParameterFrame(self.__parameterFrame) + w.pack(anchor='w',pady=5) + + if self.__cfg.model: + + if not self.__activeComponent.get(): + self.set(self.__cfg.model[0].name) + + w = Tkinter.Label(frame,text='Configurable models') + w.pack(anchor='w') + + for c in self.__cfg.model: + w = Tkinter.Radiobutton(frame,text=c.name,variable=self.__activeComponent,value=c.name) + w['command'] = lambda:self.__fillParameterFrame(self.__parameterFrame) + w.pack(anchor='w',pady=5) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillComponentFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillParameterFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillParameterFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + for (name,component) in [(c.name,c) for c in self.__cfg.platform + self.__cfg.model]: + if self.__activeComponent.get()==name: + break + + r = 0 + for p in component.par(): + + w = Tkinter.Label(frame,text=p.description,anchor="w",width=35) + w.grid(row=r,column=0,sticky='W') + + w = Tkinter.Label(frame,text='['+str(p.name)+']') + w.grid(row=r,column=1,sticky='W',padx=20) + + v = Tkinter.StringVar() + v.set(p.value) + v.trace('w',lambda n,i,m,p=p: p.set('value',self.globalgetvar(n))) + self.__addVar(v) + w = Tkinter.Entry(frame,textvariable=v) + w.grid(row=r,column=2,sticky='EW') + + r+=1 + + self.__setStatus('Configure parameters for component \''+self.__activeComponent.get()+'\'') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillParameterFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doSelect <<< +# ------------------------------------------------------------------------------------------------- + def __doSelect(self): + self.__activeMainPanel.grid_remove() + self.__activeMainPanel = self.__selectPanel + self.__activeMainPanel.grid() + self.__setStatus('Select the XML data base file and active translations in the panel below.') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doSelect >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doConfigure <<< +# ------------------------------------------------------------------------------------------------- + def __doConfigure(self): + self.__activeMainPanel.grid_remove() + self.__activeMainPanel = self.__configurePanel + self.__activeMainPanel.grid() + self.__setStatus('Configure the configuration parameters for the available components in the panel below.') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doConfigure >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doCreate <<< +# ------------------------------------------------------------------------------------------------- + def __doCreate(self): + + fw = [] + for t in self.__cfg.translation + self.__cfg.plt(self.__cfg.activePlatform).translation: + if t.isActive: + self.__cfg.translate(t) + fw.append(t.target) + + if fw: + msg = 'Active target files written: '+fw.pop() + while fw: msg += ', '+fw.pop() + else: + msg = 'No targets where written' + + self.__setStatus(msg) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doCreate >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __saveAsXmlFile <<< +# ------------------------------------------------------------------------------------------------- + def __saveAsXmlFile(self): + f = tkFileDialog.asksaveasfilename(title='Select a file name for saving:', + filetypes=[('XML files','*.xml'),('All files','*')]) + if f: + try: + self.__varList[self.__varDict['xmlFile']].set(os.path.relpath(f)) + except AttributeError: + self.__varList[self.__varDict['xmlFile']].set(os.path.realpath(f)) + self.__saveXmlFile() + else: + self.__setStatus("Current XML file NOT saved") + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __saveAsXmlFile >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __saveXmlFile <<< +# ------------------------------------------------------------------------------------------------- + def __saveXmlFile(self): + + if os.path.isfile(self.__cfg.xmlFile): + msg = "The file '"+self.__cfg.xmlFile+"' exists. Do you want to replace it?" + if not tkMessageBox.askyesno('Save XML file',msg): return + + try: f = open(self.__cfg.xmlFile,'w') + except IOError: + msg = "The file '"+self.__cfg.xmlFile+"' could not be opened for writing" + tkMessageBox.showerror('Save XML file',msg) + self.__setStatus("XML database NOT saved") + return + + f.write(self.__cfg.xml()) + f.close() + self.__setStatus("XML database saved to file '"+self.__cfg.xmlFile+"'") +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __saveXmlFile >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS GUI >>> +# ================================================================================================= + + root = GUI(cfg) + root.title('ec-conf GUI') + + minWindowWidth = min(900,int(0.9*root.winfo_screenwidth())) + minWindowHeight = min(800,int(0.9*root.winfo_screenheight())) + root.minsize(minWindowWidth,minWindowHeight) + + root.resizable() + root.mainloop() +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION startGUI >>> +# ------------------------------------------------------------------------------------------------- + +if __name__ == "__main__": + + # Try to get command line options and arguments + try: opts,args = getopt.getopt(sys.argv[1:],"hp:gxvw",["help","platform=","gui","write-xml","verbose","no-warning"]) + except getopt.GetoptError: + usage(os.path.split(sys.argv[0])[-1]) + + # Default values, to be overwritten by command line options + WARNING = 1 + VERBOSE = 0 + writeXML = False + wantGUI = False + platform = None + + # Parse command line options + for opt,arg in opts: + if opt in ('-h','--help'): + usage(os.path.split(sys.argv[0])[-1]) + elif opt in ('-p','--platform'): + platform = arg + elif opt in ('-g','--gui'): + wantGUI = True + elif opt in ('-x','--write-xml'): + writeXML = True + elif opt in ('-v','--verbose'): + VERBOSE += 1 + elif opt in ('-w','--no-warning'): + WARNING=0 + + # The XML file is all that should be left on the command line + if len(args)!=1: + usage(os.path.split(sys.argv[0])[-1]) + + # Create the Configuration object and fill the data structures by parsing the XML file + cfg = Configuration() + + try: cfg.parse(args[0]) + except xml.sax._exceptions.SAXParseException, e: + msg = 'XML parse error: ' + msg += "'"+e._msg+"'" + msg += " (line %s, column %s in file '%s')" % (e._linenum,e._colnum,e._systemId) + error(msg) + + # If a platform was given on the command line, try to set it + if platform: + if cfg.plt(platform): + cfg.activePlatform = platform + else: + error("Platform '%s' not defined in the configuration file '%s'" % (platform,args[0])) + elif not wantGUI: + warning('No active platform given') + + # Select activity to be done according to the command line options + # Default is to translate all Translations in the Configuration + if wantGUI: + info("Starting GUI") + startGUI(cfg) + elif writeXML: + sys.stdout.write(cfg.xml()) + else: + cfg.translateAll() diff --git a/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/makedepf90/bin/makedepf90-ecmwf b/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/makedepf90/bin/makedepf90-ecmwf new file mode 100755 index 0000000000000000000000000000000000000000..660ffdd23ec67f6aaeb1ed36f07596b61142e90d Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0-r1012/util/makedepf90/bin/makedepf90-ecmwf differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/compilation.cmd b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..6d7ab041d2cd6d3cbe941b6c5ae0d71d45eb2d6e --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/compilation.cmd @@ -0,0 +1,397 @@ +#!/bin/ksh + +# nohup ./compilation.cmd >& compiation.log & + +module add python/2.7.2-01 +PATH=/perm/ms/spesiccf/c3m/opt/make-3.81:${PATH} + +set -xuve +date + +MPI= +LAPACK=/usr/local/apps/lapack/3.1.1/LP64 +SZIP=/usr/local/apps/szip/2.1/LP64 +HDF5=/usr/local/apps/hdf5/1.8.9/LP64 +NetCDF=/usr/local/apps/netcdf4/4.1.3/LP64 +GribAPI=/usr/local/lib/metaps/lib/grib_api/1.9.16 +GribEX=/perm/ms/spesiccf/c3m/opt/gribex_000370/ibm-xlc +JASPER=/usr/local/apps/jasper/1.900.1/LP64 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=ecmwf-xlc-poe +CONFIG=config.xml + +cat > $CONFIG < + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + + HOST: c2a at ecmwf + ARCH: AIX + CPU MODEL: IBM Power7 + COMPILER: IBM XL + MPI: IBM POE + BLAS/LAPACK: IBM ESSL + + + + Base directory for EC-Earth sources + PATH + $ECEARTH + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + $LAPACK + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + lapack_essl essl + + + + NetCDF base directory + PATH + $NetCDF + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + $GribAPI + + + + GRIB API include directory relative to base dir + PATH + include64 + + + + GRIB API lib directory relative to base dir + PATH + lib64 + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api grib_api_f90 + + + + GRIBEX base directory + PATH + $GribEX + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + Fortran 90 Compiler + STRING + mpxlf90 + + + + General F90 flags for compiling + STRING + -O2 -g -q64 -qrealsize=8 -qport=mod -qspillsize=8162 + + + + Allow for free format Fortran + STRING + -qfree=f90 + + + + Expect fixed Fortran format + STRING + -qfixed + + + + Fortran preprocessor flag prefix + STRING + -WF\$(comma)-D + + + + C Compiler + STRING + xlc + + + + General C flags for compiling + STRING + -O2 -g -q64 + + + + C preprocessor flag prefix + STRING + -D + + + + Linker + STRING + mpxlf90 + + + + General flags for linking + STRING + -O2 -g -q64 -qarch=auto -qrealsize=8 -L${HDF5}/lib -lhdf5 -lhdf5_hl -L${SZIP}/lib -lsz -lz -L${JASPER}/lib -ljasper + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + -curv -X64 + + + + Flags for library building command (When using ar: include u) + STRING + -p -X64 + + + + C preprocessor command + STRING + + + + + C preprocessor flags + STRING + + + + + More F90 flags for Oasis + STRING + + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + POINTER_64 BLAS DOUBLE_KIND_EQUALS_REAL + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + \$(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + \$(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90-ecmwf + + + + + +EOF +cat $CONFIG + +# MAKEDEP90 Compilation +# ===================== + +#if [ ! -d makedepf90-2.8.8 ]; then +# tar -zxvf ../util/makedepf90/src/makedepf90-2.8.8.tar.gz +# cd makedepf90-2.8.8 +# ./configure --prefix=$ECEARTH/util/makedepf90/ +# make +# make install +# cd - +#fi + +# EC-CONF Usage +# ============= + +cd .. +$ECEARTH/util/ec-conf/ec-conf --platform $PLATFORM build-config/$CONFIG +BA=ecconf # Build Arch +cd - + +# OASIS Compilation +# ================= + +cd $ECEARTH/oasis*/util/make_dir/ +#make realclean -f TopMakefileOasis3 BUILD_ARCH=$BA +make -f TopMakefileOasis3 BUILD_ARCH=$BA + +# NEMO Compilation +# ================ + +cd $ECEARTH/nemo*/CONFIG/ +nemo_configs=`ls -1 | grep ORCA` +#set +e +#./makenemo clean +#set -e +for nemo_config in $nemo_configs; do + ./makenemo -m $BA -n $nemo_config -j 8 +done + +# IFS Compilation +# =============== + +cd $ECEARTH/ifs*/ +#make clean BUILD_ARCH=$BA +#make realclean BUILD_ARCH=$BA +#make dep-clean BUILD_ARCH=$BA +make -j 8 BUILD_ARCH=$BA lib +make BUILD_ARCH=$BA master + +date diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/cp.cmd b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..780e1c7d4bdea79f6d1d5c4ecc7139b766a3cbe5 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/cp.cmd @@ -0,0 +1,26 @@ +#!/bin/ksh + +bin=bin + +while getopts b: option +do + case $option in + b) bin=$OPTARG;; + \?) exit 1;; + esac +done + +set -xuve + +bin=../../$bin +mkdir -p $bin +ls -lrt $bin + +cp -p ../oasis3/*con*/bin/oasis3.MPI1.x $bin +for nemo_config in `ls -1 ../nemo*/CONFIG | grep ORCA`; do + mkdir -p $bin/$nemo_config + cp -pf ../nemo*/CONFIG/$nemo_config/BLD/bin/*.exe $bin/$nemo_config +done +cp -p ../ifs-36r4/bin/ifsmaster-*con* $bin + +ls -lrt $bin diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run-atm.cmd b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run-atm.cmd new file mode 100755 index 0000000000000000000000000000000000000000..2750fbc35bbaa0423d95eb008e009e373d0cc2e5 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run-atm.cmd @@ -0,0 +1,362 @@ +#!/bin/ksh +############################################################################### +# RUN EC_EARTH +############################################################################### +# +#@ shell = /usr/bin/ksh +#@ class = np +#@ job_type = parallel +#@ job_name = run-atm +#@ output = $(job_name).$(jobid).out +#@ error = $(job_name).$(jobid).err +#@ notification = error +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) +#@ ec_smt = no +#@ total_tasks = 48 +#@ wall_clock_limit = 00:30:00 +#@ queue +# +############################################################################### + +# modules setup + +# setup the grib_api env. +PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64:$PATH +PATH=/opt/freeware/bin:$PATH + +set -xuve + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +ecearth_base_dir=/perm/ms/spesiccf/c3m/models/ecearth/v3.0.1 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/ms/spesiccf/$USER/test/run_${ifs_grid}_atm_${LOADL_STEP_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/usr/local/lib/metaps/lib/grib_api/1.9.16 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin64 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\2:') + +ifs_numproc=48 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE +ifs_ncmip5fixyr=0 + + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT \ + ICMSEA${exp_name}INIT + + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS namelist file +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=no + +### --- PLATFORM DEPENDENT CODE --- +# ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +rm -f model.conf +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> model.conf +done + +/usr/bin/poe -pgmmodel mpmd -cmdfile model.conf +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToRename="NODE.001_01 rcf" +for file in ${filesToRename} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run.cmd b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run.cmd new file mode 100755 index 0000000000000000000000000000000000000000..becfdeb6693d0ec710b2c96b0d17249e6860cd09 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/run.cmd @@ -0,0 +1,528 @@ +#!/bin/ksh +############################################################################### +# RUN EC_EARTH +############################################################################### +# +#@ shell = /usr/bin/ksh +#@ class = np +#@ job_type = parallel +#@ job_name = run +#@ output = $(job_name).$(jobid).out +#@ error = $(job_name).$(jobid).err +#@ notification = error +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) +#@ ec_smt = no +#@ total_tasks = 55 +#@ wall_clock_limit = 00:30:00 +#@ queue +# +############################################################################### + +# modules setup + +# setup the grib_api env. +PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64:$PATH +PATH=/opt/freeware/bin:$PATH + +set -xuve +#module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 +nem_grid=ORCA1L46 +lim=LIM2 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +ecearth_base_dir=/perm/ms/spesiccf/c3m/models/ecearth/v3.0.1 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/ms/spesiccf/$USER/test/run_${ifs_grid}_${nem_grid}_${LOADL_STEP_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/usr/local/lib/metaps/lib/grib_api/1.9.16 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin64 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=32 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE +ifs_ncmip5fixyr=0 + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=$(echo $lim | cut -d 'M' -f 2) + +case ${nem_grid} in + ORCA1*) nem_time_step_sec=3600 ;; + ORCA025*) nem_time_step_sec=1200 ;; + *) error "Unsupported grid type: ${nem_grid}" + ;; +esac +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${bin_dir}/${nem_grid}_${lim}/nemo.exe + +nem_numproc=16 + +advsch=tvd +rstctl=1 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_base_dir}/sources/util/namcouple-split/namsplit.pl + +oas_numproc=7 + +# Flux correction that compensates for the mismatch in the LSM of IFS and NEMO +# The QS, RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_qs_fluxcorr=0.985 +oas_rnf_fluxcorr=0.985 + +oas_exe_file=${bin_dir}/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + #ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # Initial data + ln -s ${ini_data_dir}/nemo/${nem_grid}/temperature_*.nc . + ln -s ${ini_data_dir}/nemo/${nem_grid}/salinity_*.nc . + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Run-off file + ln -s ${oas_grid_dir}/runoff_maps.txt + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1))) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $(seq 0 $((nem_numproc-1))) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +### --- PLATFORM DEPENDENT CODE --- +# ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +rm -f model.conf +for node in $(seq 1 $oas_numproc) +do + echo "$oas_exe_file" >> model.conf +done + +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> model.conf +done + +for node in $(seq 1 $nem_numproc) +do + echo "$nem_exe_file" >> model.conf +done + +/usr/bin/poe -pgmmodel mpmd -cmdfile model.conf +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds fort.4 ifs.stat ocean.output" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4823c74dc6f56aae9bd92c89ce9193d895a4e464 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a13d1a731f3268c9352584795e262207c709aa7 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml new file mode 100644 index 0000000000000000000000000000000000000000..48a0484df19f291cfd1a854089099d137a6af474 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh new file mode 100755 index 0000000000000000000000000000000000000000..00706d45b2f9e3b72f682df8bdf7c45bf1e2c8fc --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..65ef0c2c8c525ffba283d9269110611c2f1b3888 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ${exp_name} + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..e46b31c194ee8709c93e8ad0314388a10b144d42 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh @@ -0,0 +1,446 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAMGWWMS + GFLUXLAUN=0.002 + ZLAUNCHP=45000 + LOZPR=true + NGAUSS=4 + GGAUSSB=1.0 +/ +&NAMGWD + GTENLIM=0.02 +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2da9b7b3d693a93e5d9132beefca0259a7abbc5 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.0e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 250 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-09 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 100.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.5 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2234c7d60ee5a1af0baf329c79cf70f4c48e72d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 120 ! number of EVP subcycling iterations + telast = 9600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..43c245e80e4edd26379b58c9938a8e09f14f1cb3 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 5.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee5a8c37de6c8e91224ea17cf0c25f3ff90cd251 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..1d99d92c2a3b3a69c7b06cec699c7babb7a946f5 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'none' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 1 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 2.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 3.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 1 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 300. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! laplacian operator + ln_dynldf_bilap = .true. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -1.5e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.4 ! surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-15 ! absolute precision of the solver + nn_nmin = 340 ! minimum of iterations for the SOR solver + nn_nmax = 15000 ! maximum of iterations for the SOR solver + nn_nmod = 5 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.975 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh new file mode 100755 index 0000000000000000000000000000000000000000..7a7dbb3baa4d6febd89342e61fb4ce9608330751 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh @@ -0,0 +1,412 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!----------------------------------------------------------------------- +&namrun ! Parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! Job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! Start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! Restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! Suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! Suffix of ocean restart name (output) + nn_istate = 0 ! Output the initial state (1) or not (0) + nn_stock = 0 ! Frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! Frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) +/ +!----------------------------------------------------------------------- +&namzgr ! Vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namdom ! Space and time domain (bathymetry, mesh, timestep) +!----------------------------------------------------------------------- + nn_bathy = 1 ! Compute (=0) or read (=1) the bathymetry file + nn_closea = 0 ! Remove (=0) or keep (=1) closed seas and lakes (ORCA) + nn_msh = 0 ! Create (=1) a mesh file or not (=0) + ! + rn_e3zps_min= 25. ! Partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.2 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! Flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2") + ln_dm2dc = .false. ! Daily mean to diurnal cycle on short wave + ln_rnf = .false. ! Runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! Coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! SEND +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! RECEIVE +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! Bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! Runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_rnf_emp = .false. ! Runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! Specific treatment at rivers mouths + rn_hrnf = 0.e0 ! Depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! Value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! Albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! Cloud correction to snow and ice albedo + rn_albice = 0.53 ! Albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! Coefficients for linear interpolation used to + rn_alphc = 0.65 ! Compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ +!----------------------------------------------------------------------- +&namlbc ! Lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 : free slip + ! 0 < shlat < 2 : partial slip + ! shlat = 2 : no slip + ! 2 < shlat : strong slip +/ +!----------------------------------------------------------------------- +&namcla ! Cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! Advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&nambfr ! Bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! Type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! Bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! Bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! Bottom turbulent kinetic energy background (m2/s2) +/ +!----------------------------------------------------------------------- +&nambbc ! Bottom temperature boundary condition +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&nambbl ! Bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! Diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! Advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! Lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! Advective bbl coefficient [s] +/ +!----------------------------------------------------------------------- +&nameos ! Ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! Type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! Thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! Saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! Advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! Lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! Laplacian operator + ln_traldf_bilap = .false. ! Bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! Iso-level + ln_traldf_hor = .false. ! Horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! Iso-neutral (require "key_ldfslp") +! ! Coefficient + rn_aht_0 = 300. ! Horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! Background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! Eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namdyn_adv ! Formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! Vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! Flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! Flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! Option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! Enstrophy conserving scheme + ln_dynvor_ens = .false. ! Energy conserving scheme + ln_dynvor_mix = .false. ! Mixed scheme + ln_dynvor_een = .true. ! Energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! Weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! Hydrostatic pressure gradient: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +&namdyn_ldf ! Lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! Laplacian operator + ln_dynldf_bilap = .true. ! Bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! Iso-level + ln_dynldf_hor = .true. ! Horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! Iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! Horizontal laplacian eddy viscosity [m2/s] + rn_ahm_0_blp = -1.5e11 ! Horizontal bilaplacian eddy viscosity [m4/s] + rn_ahmb_0 = 0. ! Background eddy viscosity for ldf_iso [m2/s] +/ +!----------------------------------------------------------------------- +&namzdf ! Vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! Vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! Vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! Profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! Horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! Enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! Evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! Evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! Frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! Time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! Number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! Richardson number dependent vertical diffusion ("key_zdfric") +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! Maximum value of the vertical viscosity + rn_alp = 5. ! Coefficient of the parameterization + nn_ric = 2 ! Coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! Turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! Coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! Coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! Coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! Minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! Surface minimum value of tke [m2/s2] + nn_mxl = 3 ! Mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! Surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! Surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! Coef. associated to Langmuir cells + nn_etau = 1 ! Penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! Fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! Type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ + ln_kpprimix = .true. ! Shear instability mixing + rn_difmiw = 1.0e-04 ! Constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! Constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! Local Richardson Number limit for shear instability + rn_difri = 0.0050 ! Maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! Maximum mixing in interior convection [m2/s] + nn_avb = 0 ! Horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! Constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! Double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! Maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! Heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namsol ! Elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 2 ! Elliptic solver: =1 Preconditioned conjugate gradient (PCG) + ! =2 Successive-over-relaxation (SOR) + ! =3 FETI (fet) ("key_feti") + ! =4 SOR with extra outer halo + nn_sol_arp = 0 ! Absolute/relative (0/1) precision convergence test + nn_nmin = 340 ! Minimum of iterations for the SOR solver + nn_nmax = 15000 ! Maximum of iterations for the SOR solver + nn_nmod = 5 ! Frequency of test for the SOR solver + rn_eps = 1.e-15 ! Absolute precision of the solver + rn_resmax = 1.e-10 ! Absolute precision for the SOR solver + rn_sor = 1.975 ! Optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi") +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! MPI send/recieve type ='S', 'B', or 'I' for standard send, + ! Buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! Size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni Number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj Number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij Number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! Trends control print (expensive!) + nn_print = 0 ! Level of print (0 no extra print) + nn_ictls = 0 ! Start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! End i indice of control sum multi processor runs + nn_jctls = 0 ! Start j indice of control over a subdomain) + nn_jctle = 0 ! End j indice of control + nn_isplt = 1 ! Number of processors in i-direction + nn_jsplt = 1 ! Number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ +!----------------------------------------------------------------------- +&namtrd ! Diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! Time step frequency dynamics and tracers trends + nn_ctls = 0 ! Control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! Suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! Suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! Restart for ML diagnostics + ln_trdmld_instant = .false. ! Flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! Float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! Float restart (T) or not (F) + nn_writefl = 75 ! Frequency of writing in float output file + nn_stockfl = 5475 ! Frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! Trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- +! Use defaults +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..b07b13ae3cdbe85f55b0f6ce8063fa2b64ac8f5f --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -100.e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..a5d0ecc5a4290f0ad0de6a5a586262613c4acd4c --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh @@ -0,0 +1,854 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ +!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! +sn_wndi = 'u10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'u10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Uwnd' +sn_wndj = 'v10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'v10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Vwnd' +sn_qsr = 'radsw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radsw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_qlw = 'radlw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radlw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tair = 't2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 't2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_humi = 'q2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'q2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_prec = 'precip_DFS4.3_${leg_start_date_yyyy}' , -1, 'precip', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_snow = 'snow_DFS4.3_${leg_start_date_yyyy}' , -1, 'snow', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tdif = 'taudif_core' , 24, 'taudif', .false., .true., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = 0. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 new file mode 100644 index 0000000000000000000000000000000000000000..34ea69429f6d2534aa29c06262eadbc71e48fa5c --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 @@ -0,0 +1,32 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 53, + MFPPHY = 129,172,031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 new file mode 100644 index 0000000000000000000000000000000000000000..ffd51cca941e5b47fe4cdcf665905e29ea970af4 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 @@ -0,0 +1,32 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 51, + MFPPHY = 031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def new file mode 100644 index 0000000000000000000000000000000000000000..3a6f0e234de9c8173fb30784d1fad6c72f8b1330 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def @@ -0,0 +1,35 @@ +! xmlio_server namelist +! +! using_server: .TRUE.(.FALSE.) to use(bypass) the io_server +! using_oasis : .TRUE.(.FALSE.) if nemo is coupled through OASIS +! client_id : used only for OASIS, NEMO id in the namecouple +! server_id : used only for OASIS, io_server id in the namecouple +! +&coupling_param + using_server = .FALSE. + using_oasis = .TRUE. + client_id = 'nemo.x' + server_id = 'ionemo' +/ + +! global_mpi_buffer_size: size in Mo of the MPI buffer used by the io_server +&mpi_param + global_mpi_buffer_size = 512 +/ + +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings +!!====================================================================== +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings + ! (benign if "key_netcdf4" is not used) +!----------------------------------------------------------------------- + nn_nchunks_i = 4 ! number of chunks in i-dimension + nn_nchunks_j = 4 ! number of chunks in j-dimension + nn_nchunks_k = 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .TRUE. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/config-build.xml b/deploy/patches/ecmwf/ecearth/v3.0.1/config-build.xml new file mode 100644 index 0000000000000000000000000000000000000000..377cf78b6c515dbf3699ca7c209c179888363d9d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/config-build.xml @@ -0,0 +1,2243 @@ + + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + + HOST: ekman.pdc.kth.se + ARCH: linux_x86_64 + CPU MODEL: Quad-Core AMD Opteron Processor 2374 HE + USER: ufla + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + /pdc/vol/intelmpi/4.0.3/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpigf mpigi + + + + LAPACK base directory + PATH + /pdc/vol/i-compilers/11.1/icc/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/em64t + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /pdc/vol/netcdf/4.1.1/intel + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf + + + + GRIB API base directory + PATH + /pdc/vol/grib/1.9.9/intel + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /pdc/vol/gribex/000370/intel/64 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L/pdc/vol/hdf5/1.8.3/lib -lhdf5 -lhdf5_hl -L/pdc/vol/szip/2.1/lib -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: gimle.nsc.liu.se + ARCH: linux_x86_64 + CPU MODEL: Intel Xeon + USER: sm_uflad + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + /software/intel/impi/4.0.3.008 + + + + MPI include directory relative to base dir + PATH + include64 + + + + MPI lib directory relative to base dir + PATH + lib64 + + + + MPI libraries (without -l prefix) + STRING + mpi mpiif mpigi + + + + LAPACK base directory + PATH + /software/intel/mkl/10.2.1.017 + + + + LAPACK lib directory relative to base dir + PATH + lib/em64t + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /software/libs/netcdf/3.6.2/i101008 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf + + + + GRIB API base directory + PATH + $(HOME)/Projects/gribapi/1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $(HOME)/Projects/gribex/370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: lindgren.pdc.kth.se + ARCH: linux_x86_64 + CPU MODEL: 6-Core AMD Opteron(tm) Processor 23 (D0) + USER: cbasu + COMPILER: i-compilers (icc+ifort) + MPI: Cray MPI + BLAS/LAPACK: Cray BLAS + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + + + + + NetCDF base directory + PATH + /opt/cray/netcdf/4.2.0/intel/120 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff netcdf hdf5_hl hdf5 z + + + + GRIB API base directory + PATH + /cfs/klemming/nobackup/w/wyser/grib/grib_api-1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /cfs/klemming/nobackup/w/wyser/gribex/gribex_000370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ftn + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + cc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ftn + + + + General flags for linking + STRING + -O2 -g -traceback -L/opt/cray/hdf5/default/intel/120/lib + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + cc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + $(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: krypton.nsc.liu.se + ARCH: linux_x86_64 + CPU MODEL: Intel E5-2660 + USER: sm_uflad + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + /software/intel/impi/4.0.3.008/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpiif mpigi + + + + LAPACK base directory + PATH + /software/intel/composer_xe_2011_sp1.10.319/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /software/apps/netcdf/4.2/i1214-hdf5-1.8.9 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff + + + + GRIB API base directory + PATH + $(HOME)/Projects/gribapi/1.9.9 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $(HOME)/Projects/gribex/370 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: c2a at ecmwf + ARCH: + CPU MODEL: IBM Power7 + USER: + COMPILER: IBM XL + MPI: IBM POE + BLAS/LAPACK: IBM ESSL + + + + EC-Earth base directory + PATH + $(PERM)/ecearth3/sources + + + + MPI base directory + PATH + + + + + MPI include directory relative to base dir + PATH + + + + + MPI lib directory relative to base dir + PATH + + + + + MPI libraries (without -l prefix) + STRING + + + + + LAPACK base directory + PATH + /usr/local/apps/lapack/3.1.1/LP64 + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + lapack_essl essl + + + + NetCDF base directory + PATH + /usr/local/apps/netcdf4/4.1.3/LP64 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff netcdf + + + + GRIB API base directory + PATH + /usr/local/lib/metaps/lib/grib_api/1.9.16 + + + + GRIB API include directory relative to base dir + PATH + include64 + + + + GRIB API lib directory relative to base dir + PATH + lib64 + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api grib_api_f90 + + + + GRIBEX base directory + PATH + /perm/ms/se/sm0g/gribex_3.7 + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + /ws/home/ms/se/sm0g/Projects/make-3.81/make + + + + Fortran 90 Compiler + STRING + mpxlf90 + + + + General F90 flags for compiling + STRING + -O2 -g -q64 -qrealsize=8 -qport=mod -qspillsize=8162 + + + + Allow for free format Fortran + STRING + -qfree=f90 + + + + Expect fixed Fortran format + STRING + -qfixed + + + + Fortran preprocessor flag prefix + STRING + -WF$(comma)-D + + + + C Compiler + STRING + xlc + + + + General C flags for compiling + STRING + -O2 -g -q64 + + + + C preprocessor flag prefix + STRING + -D + + + + Linker + STRING + mpxlf90 + + + + General flags for linking + STRING + -O2 -g -q64 -qarch=auto -qrealsize=8 -L/usr/local/apps/hdf5/1.8.9/LP64/lib -lhdf5 -lhdf5_hl -L/usr/local/apps/szip/2.1/LP64/lib -lsz -lz -L/usr/local/apps/jasper/1.900.1/LP64/lib -ljasper + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + -curv -X64 + + + + Flags for library building command (When using ar: include u) + STRING + -p -X64 + + + + C preprocessor command + STRING + + + + + C preprocessor flags + STRING + + + + + More F90 flags for Oasis + STRING + + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + POINTER_64 BLAS DOUBLE_KIND_EQUALS_REAL + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90-ecmwf + + + + + + + HOST: MareNostrum III (mnr?.bsc.es) + ARCH: linux_x86_64 + CPU MODEL: Intel Sandy Bridge + USER: pr1e4407 (ufla) + COMPILER: Intel Compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + /gpfs/projects/pr1e4400/ufla/ece/sources + + + + MPI base directory + PATH + /gpfs/apps/MN3/INTEL/impi/4.1.0.024/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpigf mpigi + + + + LAPACK base directory + PATH + /apps/INTEL/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /apps/NETCDF/4.1.3 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + /gpfs/projects/pr1e4400/ufla/lib/gribapi + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /gpfs/projects/pr1e4400/ufla/lib/gribex + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L/apps/HDF5/1.8.10/lib/ -lhdf5 -lhdf5_hl -L/apps/SZIP/2.1/lib/ -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: MareNostrum III (mnr?.bsc.es) + ARCH: linux_x86_64 + CPU MODEL: Intel Sandy Bridge + USER: pr1e4407 (ufla) + COMPILER: Intel Compilers (icc+ifort) + MPI: OpenMPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + /gpfs/projects/pr1e4400/ufla/ece/sources + + + + MPI base directory + PATH + /apps/OPENMPI/1.5.4 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi_f77 mpi + + + + LAPACK base directory + PATH + /apps/INTEL/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /apps/NETCDF/4.1.3 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + /gpfs/projects/pr1e4400/ufla/lib/gribapi + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /gpfs/projects/pr1e4400/ufla/lib/gribex + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L/apps/HDF5/1.8.10/lib/ -lhdf5 -lhdf5_hl -L/apps/SZIP/2.1/lib/ -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + ARCH: linux_x86_64 + USER: ufla + COMPILER: GCC (gcc+gfortran) + MPI: OpenMPI + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + /usr + + + + MPI include directory relative to base dir + PATH + include/openmpi-x86_64 + + + + MPI lib directory relative to base dir + PATH + lib64/openmpi/lib + + + + MPI libraries (without -l prefix) + STRING + mpi_f90 mpi_f77 mpi + + + + LAPACK base directory + PATH + + + + + LAPACK lib directory relative to base dir + PATH + + + + + LAPACK libraries (without -l prefix) + STRING + lapack blas + + + + NetCDF base directory + PATH + + + + + NetCDF include directory relative to base dir + PATH + /usr/lib64/gfortran/modules + + + + NetCDF lib directory relative to base dir + PATH + + + + + NetCDF libraries (without -l prefix) + STRING + netcdff + + + + GRIB API base directory + PATH + /usr/lib64 + + + + GRIB API include directory relative to base dir + PATH + gfortran/modules + + + + GRIB API lib directory relative to base dir + PATH + + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api jasper + + + + GRIBEX base directory + PATH + /local_disk/Projects/lib/gribex + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + gfortran + + + + General F90 flags for compiling + STRING + -O2 -g -ffree-line-length-0 -fdefault-real-8 -fbacktrace + + + + C Compiler + STRING + gcc + + + + General C flags for compiling + STRING + -O2 -g + + + + Linker + STRING + gfortran + + + + General flags for linking + STRING + -O2 -g -fbacktrace + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + cpp + + + + C preprocessor flags + STRING + -C -P + + + + More F90 flags for Oasis + STRING + + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -fcray-pointer + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + + + HOST: triolith.nsc.liu.se + ARCH: linux_x86_64 + CPU MODEL: Intel E5-2660 + USER: struthers + COMPILER: i-compilers (icc+ifort) + MPI: Intel MPI + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $(HOME)/Projects/ecearth3/sources + + + + MPI base directory + PATH + /software/intel/impi/4.0.3.008/intel64 + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi mpiif mpigi + + + + LAPACK base directory + PATH + /software/intel/composer_xe_2011_sp1.10.319/mkl + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + /software/apps/netcdf/4.2/i1214-hdf5-1.8.9 + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdff + + + + GRIB API base directory + PATH + /software/apps/grib_api/1.9.9/i1214 + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + /software/apps/gribex/000370/i1214 + + + + GRIBEX lib directory relative to base dir + PATH + + + + + GRIBEX libraries (without -l prefix) + STRING + gribex + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + F90 dependency generator + STRING + $(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/doc/compiling-and-running-short-guide.pdf b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/compiling-and-running-short-guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e4dbe4c704d988f4054495fe4475ab040d28689e Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/compiling-and-running-short-guide.pdf differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/doc/ec-conf-manual.pdf b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/ec-conf-manual.pdf new file mode 100644 index 0000000000000000000000000000000000000000..80a37a715081b9c8b34128061838405e881a0458 Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/ec-conf-manual.pdf differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/compiling-and-running-short-guide.odt b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/compiling-and-running-short-guide.odt new file mode 100644 index 0000000000000000000000000000000000000000..efd16cdaa92b19a8894175f489143833f87ceafb Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/compiling-and-running-short-guide.odt differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/ec-conf-manual.odt b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/ec-conf-manual.odt new file mode 100644 index 0000000000000000000000000000000000000000..1600c33551e1952bab7132731393d9bb3e81b379 Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0.1/doc/src/ec-conf-manual.odt differ diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..152c2c91899ee70042aa49c8b70380af2da487ad --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.config.ecconf.tmpl @@ -0,0 +1,65 @@ +$(info --> Reading $(lastword $(MAKEFILE_LIST))) + +comma := , + +ECEARTH_SRC_DIR := [[[PLT:ACTIVE:ECEARTH_SRC_DIR]]] + +MPI_BASE_DIR := [[[PLT:ACTIVE:MPI_BASE_DIR]]] +ifneq ($(strip $(MPI_BASE_DIR)),) +MPI_INC_DIR := $(MPI_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:MPI_INC_SUBDIR]]]) +MPI_LIB_DIR := $(MPI_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]]) +endif +MPI_LIBS := [[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]] + +OASIS_BASE_DIR := $(ECEARTH_SRC_DIR)/oasis3 +OASIS_ARCH := ecconf +OASIS_MPI_CHAN := MPI1 +OASIS_MOD_DIR := $(OASIS_BASE_DIR)/$(OASIS_ARCH)/build/lib/psmile.$(OASIS_MPI_CHAN) +OASIS_LIB_DIR := $(OASIS_BASE_DIR)/$(OASIS_ARCH)/lib +OASIS_LIBS := psmile.MPI1 mpp_io clim.MPI1 + +ifneq ($(strip [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]),) +NETCDF_LIB_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]/[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]] +NETCDF_INC_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]]/[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]] +endif +NETCDF_LIBS := [[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]] + +LAPACK_BASE_DIR := [[[PLT:ACTIVE:LAPACK_BASE_DIR]]] +ifneq ($(strip $(LAPACK_BASE_DIR)),) +LAPACK_LIB_DIR := $(LAPACK_BASE_DIR)$(addprefix /,[[[PLT:ACTIVE:LAPACK_LIB_SUBDIR]]]) +endif +LAPACK_LIBS := [[[PLT:ACTIVE:LAPACK_LIBS_WITHOUT_L]]] + +ifneq ($(strip [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]),) +GRIBAPI_INC_DIR := [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBAPI_INC_SUBDIR]]] +GRIBAPI_LIB_DIR := [[[PLT:ACTIVE:GRIBAPI_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBAPI_LIB_SUBDIR]]] +endif +GRIBAPI_LIBS := [[[PLT:ACTIVE:GRIBAPI_LIBS_WITHOUT_L]]] + +ifneq ($(strip [[[PLT:ACTIVE:GRIBEX_BASE_DIR]]]),) +GRIBEX_LIB_DIR := [[[PLT:ACTIVE:GRIBEX_BASE_DIR]]]/[[[PLT:ACTIVE:GRIBEX_LIB_SUBDIR]]] +endif +GRIBEX_LIBS := [[[PLT:ACTIVE:GRIBEX_LIBS_WITHOUT_L]]] + +MAKEDEPF90 := [[[PLT:ACTIVE:MAKEDEPF90]]] + +F90 := [[[PLT:ACTIVE:FC]]] +F90FLAGS := [[[PLT:ACTIVE:FFLAGS_FREEFORM]]] [[[PLT:ACTIVE:FFLAGS]]] + +IFSAUX_ADD_F90FLAGS := [[[PLT:ACTIVE:IFSAUX_ADD_FFLAGS]]] + +FC := [[[PLT:ACTIVE:FC]]] +FFLAGS := [[[PLT:ACTIVE:FFLAGS_FIXEDFORM]]] [[[PLT:ACTIVE:FFLAGS]]] + +FPPDEFS := $(addprefix [[[PLT:ACTIVE:FFLAGS_FPP_PREFIX]]],[[[PLT:ACTIVE:IFS_PPDEFS]]]) + +CC := [[[PLT:ACTIVE:CC]]] +CFLAGS := [[[PLT:ACTIVE:CFLAGS]]] +CPPDEFS := $(addprefix [[[PLT:ACTIVE:CFLAGS_CPP_PREFIX]]],[[[PLT:ACTIVE:IFS_PPDEFS]]]) + +LD := $(F90) +LDFLAGS := [[[PLT:ACTIVE:LDFLAGS]]] + +AR := [[[PLT:ACTIVE:AR]]] +ARFLAGS := [[[PLT:ACTIVE:ARFLAGS]]] +ARFLAGS_EXTRACT := [[[PLT:ACTIVE:ARFLAGS_EXTRACT]]] diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.master b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.master new file mode 100644 index 0000000000000000000000000000000000000000..c9831864673de24b5685f935843ad78abb4724af --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.master @@ -0,0 +1,25 @@ +.PHONY: master clean realclean dep-clean + +include $(MAKEFILE_CONFIG) + +master:$(IFS_BIN_DIR)/$(IFS_EXE_NAME) + +$(IFS_BIN_DIR)/$(IFS_EXE_NAME): $(addprefix $(IFS_LIB_DIR)/lib,$(addsuffix .a,$(sort $(IFS_LIBS)))) + $(AR) $(ARFLAGS_EXTRACT) $(IFS_LIB_DIR)/libifs.a master.o > $(IFS_BIN_DIR)/master.o + $(LD) -o $@ $(IFS_BIN_DIR)/master.o $(LDFLAGS) \ + $(addprefix -L,$(IFS_LIB_DIR)) $(addprefix -l,$(IFS_LIBS)) \ + $(addprefix -L,$(OASIS_LIB_DIR)) $(addprefix -l,$(OASIS_LIBS)) \ + $(addprefix -L,$(MPI_LIB_DIR)) $(addprefix -l,$(MPI_LIBS)) \ + $(addprefix -L,$(NETCDF_LIB_DIR)) $(addprefix -l,$(NETCDF_LIBS)) \ + $(addprefix -L,$(GRIBAPI_LIB_DIR)) $(addprefix -l,$(GRIBAPI_LIBS)) \ + $(addprefix -L,$(GRIBEX_LIB_DIR)) $(addprefix -l,$(GRIBEX_LIBS)) \ + $(addprefix -L,$(LAPACK_LIB_DIR)) $(addprefix -l,$(LAPACK_LIBS)) + +%.a: + @echo "==> WARNING: Library '$(notdir $@)' out of date! Run 'make lib' first." + +clean: + rm -f $(IFS_BIN_DIR)/master.o + +realclean: clean + rm -f $(IFS_BIN_DIR)/$(IFS_EXE_NAME) diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.rules b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.rules new file mode 100644 index 0000000000000000000000000000000000000000..d4c283de20244dcd9da6fc28c91ba3037669258f --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/Makefile.d/Makefile.rules @@ -0,0 +1,39 @@ +$(info --> Reading $(lastword $(MAKEFILE_LIST))) + +.SUFFIXES: +.SUFFIXES: .o .F90 .F .c + +.PHONY: $(LIB_FILE) lib master clean realclean dep-clean + +lib: $(LIB_FILE) + +$(LIB_FILE): $(OBJS) + $(AR) $(ARFLAGS) $@ $^ + +%.o: %.F90 + $(F90) -c $(F90FLAGS) $(FPPDEFS) $(addprefix -I,$(F90_INC_DIRS)) $< + +%.o: %.F + $(FC) -c $(FFLAGS) $(FPPDEFS) $(addprefix -I,$(F77_INC_DIRS)) $< + +%.o: %.f + $(FC) -c $(FFLAGS) $(addprefix -I,$(F77_INC_DIRS)) $< + +%.o: %.c + $(CC) -c $(CFLAGS) $(CPPDEFS) $(addprefix -I,$(C_INC_DIRS)) $< + +clean: + -rm -f $(OBJS) + -rm -f $(OBJS:.o=.mod) + +realclean: clean + -rm -f $(LIB_FILE) + +dep-clean: + -rm -f $(F90_DEP_FILE) + +ifneq (,$(filter %.F90 %.f90,$(SRCS))) +$(F90_DEP_FILE): $(filter %.F90 %.f90,$(SRCS)) + $(MAKEDEPF90) $(filter %.F90 %.f90,$(SRCS)) > $@ +-include $(F90_DEP_FILE) +endif diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/algor/external/linalg/minv.F b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/algor/external/linalg/minv.F new file mode 100644 index 0000000000000000000000000000000000000000..41ca75333aec14a0e8f3691721a6e268b23ac4b1 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/algor/external/linalg/minv.F @@ -0,0 +1,183 @@ + SUBROUTINE MINV(AB,N,LDBA,ZSCRA,DET1,TOL,M,MODE) + IMPLICIT LOGICAL (L) + INTEGER N,LDBA,M,MODE + REAL TOL,DET1 + REAL AB(LDBA,N+M),ZSCRA( 2*N ) +c internal variables + REAL RCOND,SCRATCH( 4*N ),ZMAT(LDBA,N),DET(2),ANORM + REAL ALPHA,beta, X(N),Y(LDBA) + CHARACTER*1 TRANS + INTEGER IPVT( N ),incx, IWORK(N) + DOUBLE PRECISION DL + INTEGER, PARAMETER :: N_REAL_KIND=KIND(TOL) + +#ifdef DOUBLE_KIND_EQUALS_REAL + INTEGER, PARAMETER :: N_DOUBLE_KIND=KIND(TOL) +#else + INTEGER, PARAMETER :: N_DOUBLE_KIND=KIND(DL) +#endif +c +c + IF (LDBA.NE.N) THEN + write(6,*) ' ERROR IN MINV -- Matrix MUST be square' + CALL ABOR1 (' ERROR IN MINV -- Matrix MUST be square') + ENDIF +c +c + IF (M.LT.0) THEN + write(6,*) ' ERROR IN MINV -- M MUST BE >= 0 ' + CALL ABOR1 (' ERROR IN MINV -- M MUST BE >= 0 ') + ENDIF +C +C Extraction de la matrice ZMAT a factoriser +C + DO JL = 1,LDBA + DO JC = 1,N + ZMAT(JL,JC) = AB(JL,JC) + ENDDO + ENDDO + CALL GECO + IF(RCOND.LE.TOL) THEN + WRITE(6,*)'MINV : MATRIX IS SINGULAR ' + RETURN + ENDIF +C +C Inversion de ZMAT +C + CALL GEDI +C + DET1 = DET(1) * 10.0 ** DET(2) +c +C Remplacement de A (ou ZMAT) par son inverse: +C + IF (MODE.NE.0) THEN + DO JL = 1,LDBA + DO JC = 1,N + AB(JL,JC) = ZMAT(JL,JC) + ENDDO + ENDDO + ENDIF +C +C Resolution des differents systemes lineaires +C + IF (M.GT.0) THEN + TRANS = 'N' + alpha = 1. + beta = 0. + incx = 1 + DO ISYS = 1,M +C +C Extraction du second membre X +C + DO JL = 1,LDBA + X(JL) = AB(JL,N+ISYS) + ENDDO + y = 0. + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + CALL dgemv(trans,ldba,n,alpha,zmat,ldba,x,incx,beta,y,incx) + ELSE + CALL sgemv(trans,ldba,n,alpha,zmat,ldba,x,incx,beta,y,incx) + ENDIF +C +C Sauvegarde de la solution +C + DO JL = 1,LDBA + AB(JL,N+ISYS) = y(JL) + ENDDO +C + ENDDO +C + ENDIF +C +c + RETURN + + CONTAINS + SUBROUTINE GECO + +c--- simulate LINPAC routines SGECO/DGECO using LAPACK + + ANORM= 0. + DO J = 1, N + ANORM = MAX(ANORM,SUM(ZMAT(1:N,J))) + ENDDO + + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + + CALL DGETRF (N,N,ZMAT,LDBA,IPVT,INFO) + IF (INFO < 0) THEN + WRITE(6,*) 'DGETRF RETURNS NEGATIVE INFO: ',INFO + CALL ABOR1 ('DGETRF RETURNS NEGATIVE INFO') + ENDIF + + CALL DGECON ('1',N,ZMAT,LDBA,ANORM,RCOND,SCRATCH,IWORK,INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'DGECON RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('DGECON RETURNS NON-ZERO INFO') + ENDIF + + ELSE + + CALL SGETRF (N,N,ZMAT,LDBA,IPVT,INFO) + IF (INFO < 0) THEN + WRITE(6,*) 'SGETRF RETURNS NEGATIVE INFO: ',INFO + CALL ABOR1 ('SGETRF RETURNS NEGATIVE INFO') + ENDIF + + CALL SGECON ('1',N,ZMAT,LDBA,ANORM,RCOND,SCRATCH,IWORK,INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'SGECON RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('SGECON RETURNS NON-ZERO INFO') + ENDIF + + ENDIF + + RETURN + END SUBROUTINE GECO + + SUBROUTINE GEDI + +c--- simulate LINPAC routines SGEDI/DGEDI using LAPACK + + DET(1) = 1.0E0 + DET(2) = 0.0E0 + TEN = 10.0E0 + + IF (JOB/10 /= 0) THEN + DETLOOP: DO I = 1, N + IF (IPVT(I) .NE. I) DET(1) = -DET(1) + DET(1) = ZMAT(I,I)*DET(1) + IF (DET(1) .EQ. 0.0E0) EXIT DETLOOP + + DO + IF (ABS(DET(1)) .GE. 1.0E0) EXIT + DET(1) = TEN*DET(1) + DET(2) = DET(2) - 1.0E0 + ENDDO + + DO + IF (ABS(DET(1)) .LT. TEN) EXIT + DET(1) = DET(1)/TEN + DET(2) = DET(2) + 1.0E0 + ENDDO + ENDDO DETLOOP + ENDIF + + IF (N_REAL_KIND == N_DOUBLE_KIND) THEN + CALL DGETRI (N,ZMAT,LDBA,IPVT,SCRATCH,SIZE(SCRATCH),INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'DGETRI RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('DGETRI RETURNS NON-ZERO INFO') + ENDIF + ELSE + CALL SGETRI (N,ZMAT,LDBA,IPVT,SCRATCH,SIZE(SCRATCH),INFO) + IF (INFO /= 0) THEN + WRITE(6,*) 'SGETRI RETURNS NON-ZERO INFO: ',INFO + CALL ABOR1 ('SGETRI RETURNS NON-ZERO INFO') + ENDIF + ENDIF + + RETURN + END SUBROUTINE GEDI + + END SUBROUTINE MINV diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt3.F90 b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt3.F90 new file mode 100644 index 0000000000000000000000000000000000000000..2dc3e1878374e61527e641764cfa6ebc62065388 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt3.F90 @@ -0,0 +1,335 @@ +SUBROUTINE CNT3 + +!**** *CNT3* - Controls integration job at level 3 + +! Purpose. +! -------- + +!** Interface. +! ---------- +! *CALL* *CNT3 + +! Explicit arguments : +! -------------------- +! None + +! Implicit arguments : +! -------------------- +! None + +! Method. +! ------- +! See documentation + +! Externals. +! ---------- +! Calls SU3YOM, SUALSPA, RERESF, CSTA, UPSPEC, SUORCTV, ARCHFP, +! CNMI, CMAC, FLTMODE, FLTRG, DFI, CNT4, SPNORM. +! Called by CNT2, TESTLI, ... + +! Reference. +! ---------- +! ECMWF Research Department documentation of the IFS + +! Author. +! ------- +! Mats Hamrud and Philippe Courtier *ECMWF* + +! Modifications. +! -------------- +! Original : 87-10-15 +! Modified : 90-01-22 Bill Heckley - option to filter initial state +! Modified : 91-09-25 p.c and JN.T - remove useless logic +! Modified : 92-10-19 Bill Heckley - reduce gravity mode amplitude +! to aid 3/4DVAR conditioning +! Modified : 92-12-24 G. Radnoti - option for digital filter init. +! Modified : 92-12-25 J-N Thepaut - update spectral array (conf 131) +! Modified : 93-04-13 L. Labbe - Init. grid point orography as +! control variable +! Modified : 94-03-03 R. El Khatib - Full-POS inplementation +! Modified : 94-03_09 " " - Use of NMI after the run (821) +! Modified : 94-07-05 J-N Thepaut - dummy call to cnt4 (conf 131) +! Modified : 94-07-26 D. Giard - call to MATCLOSE after filtering +! Modified : 95-09-04 R. El Khatib - FullPOS internal part 2 out of CNT4 +! Modified : 95-10-30 M.Hamrud - Changed CLCONF +! Modified : 95-09-25 J.-N Thepaut - write spec traj with FullPos +! Modified : 97-10-02 D. Dent - replace SECOND with USER_CLOCK +! Modified : 98-10-05 A. Untch - setup ozone chemistry if restart +! Modified : 99-09-17 M. Fisher - Don't modify SITR and SIPR +! Modified : 00-11-06 J. Barkmeijer- Use perturbed tendencies +! R. El Khatib : 01-08-07 Pruning options +! Modified : 02-09-30 V.Guidard&C.Fischer - 3dfgat coupling switched on +! J. Masek : 12-10-2002: Call of SUPONG moved from SUDYN. +! R. El Khatib : 02-21-20 Fullpos B-level distribution + remove IO scheme +! R. El Khatib : 02-11-12 Pruning LREFFP +! M.Hamrud 01-Oct-2003 CY28 Cleaning +! C. Fischer 04-02-26 Merge Aladin into Arpege/IFS cnt3 +! C. Fischer 04-10-20 call sueqlimsat +! Y.Tremolet 21-Jul-2004 Model error +! M. Jidane : 13-04-2006 : SWAP37 NO MORE IN USE +! M. Drusch: 17-Jan-2007 introduce nconf 302 +! B. Chapnik: 22-sep-2008 allows upspec for aladin +! G. Desroziers 22-Dec-2008: Enable transf. of ARPEGE file in GRIB format (to be used in femars) +! ------------------------------------------------------------------ + +USE PARKIND1 ,ONLY : JPIM, JPIB, JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK + +USE YOMDIM , ONLY : NFLEVG, NFLEVL, NSPEC2 ,NSMAX +USE YOMLUN , ONLY : NULOUT +USE YOMCT0 , ONLY : LFPART2, NCONF, NSTOP, LNF, LOBSC1, LELAM, NPROC +USE YEMCT0 , ONLY : LEQLIMSAT +USE YOMNMIA , ONLY : NVMOD ,NVMODPP ,LNMIRQ ,LSTDNMI ,& + & LNPROJ +USE YOMINI , ONLY : NEINI +USE YOMTIM , ONLY : RSTART ,RVSTART ,RTIMEF +USE YOMVAR , ONLY : LTEST ,LINITCV, LFEMARSF, LFEMARSD +USE YOMMP , ONLY : NUMVMO +USE YOEPHY , ONLY : LEO3CH, LEPCLD, LEPHYS +USE YOERAD , ONLY : LECO2VAR, LHGHG +USE YOMPHY , ONLY : LREASUR +USE YOMSP , ONLY : SPA3 ,SPA2 ,SPVOR ,SPDIV ,& + &SPT ,SPQ ,SPSP ,SPOR +USE YOMGEM , ONLY : VAH, VBH +USE YOMRIP , ONLY : NINDAT ,NSSSSS +USE STOPH_MIX , ONLY : LFORCENL +USE GFL_SUBS_MOD , ONLY : DEACT_CLOUD_GFL, REACT_CLOUD_GFL + +IMPLICIT NONE + +LOGICAL :: LLOVER + +REAL(KIND=JPRB) :: ZCT, ZVT, ZWT +REAL(KIND=JPRB), ALLOCATABLE :: ZSPA3(:,:,:), ZSPA2(:,:) + +CHARACTER (LEN = 9) :: CLCONF +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ----------------------------------------------------------- + +INTERFACE +#include "user_clock.h" +END INTERFACE + +#include "cmac.intfb.h" +#include "cnmi.intfb.h" +#include "cnt4.intfb.h" +#include "pertsekf_v2.intfb.h" +#include "cprep4.intfb.h" +#include "csta.intfb.h" +#include "dealnmi.intfb.h" +#include "dfi.intfb.h" +#include "elsac.intfb.h" +#include "fltmode.intfb.h" +#include "opdis.intfb.h" +#include "reresf.intfb.h" +#include "spnorm.intfb.h" +#include "su3yom.intfb.h" +#include "su4fpos.intfb.h" +#include "sueqlimsat.intfb.h" +#include "suforce.intfb.h" +#include "supong.intfb.h" +#include "swap73.intfb.h" +#include "updo3ch.intfb.h" +#include "updrgas.intfb.h" +#include "upspec.intfb.h" +#include "grbspa.intfb.h" +#include "suinif.intfb.h" + +! ----------------------------------------------------------- + +!* 1. Initialize LEVEL 3 COMMONS. +! --------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT3',0,ZHOOK_HANDLE) +WRITE(UNIT=NULOUT,FMT='('' START CNT3'')') +CALL SU3YOM +IF (LEPHYS) THEN + IF (LEPCLD) THEN + CALL REACT_CLOUD_GFL + ELSE + CALL DEACT_CLOUD_GFL + ENDIF +ENDIF +! ----------------------------------------------------------- + +!* 2. RESTART. +! -------- + +IF(NCONF == 1.OR.NCONF == 302) THEN +! ** OPDIS IS CALLED HERE ONLY TO AVOID MEMORY FRAGMENTAION ** + CLCONF='000000000' + CALL USER_CLOCK(PELAPSED_TIME=ZWT,PVECTOR_CP=ZVT,PTOTAL_CP=ZCT) + ZCT=ZCT-RSTART + ZVT=ZVT-RVSTART + ZWT=ZWT-RTIMEF + CALL OPDIS(CLCONF,'CNT3 ',ZCT,ZVT,ZWT,RSTART,RVSTART,RTIMEF) +ENDIF + +IF (.NOT.LELAM) THEN + +!* 3.0 ARPEGE/IFS INITIALIZATION +! ------------------------- + + IF ((NCONF == 1.OR.NCONF == 302).AND..NOT.LFPART2) THEN + CALL RERESF +! SETUP OZONE CHEMISTRY IN CASE OF RESTART + IF(.NOT.LNF.AND.LEO3CH) THEN + CALL UPDO3CH + ENDIF + IF(.NOT.LNF.AND.(LECO2VAR.OR.LHGHG)) THEN + CALL UPDRGAS + ENDIF + ELSE + LNF=.TRUE. + ENDIF +! ----------------------------------------------------------- + +!* 3. START. +! ------ + + IF (LNF) THEN + IF (LFORCENL) CALL SUFORCE + CALL CSTA + ENDIF + +!* 3.0 PERTURB INITIAL CONDITIONS FOR THE SEKF RUN +! ------------------------------------------- + + IF (NCONF == 302) THEN + CALL PERTSEKF_V2 + ENDIF + +!* 3.1 OASIS3 check +! ------------ + CALL SETOASIS3 + +!* 3.2 Update spectral array. +! ---------------------- + + IF (.NOT.LFPART2) THEN + IF (LOBSC1.AND.LINITCV) CALL UPSPEC + ENDIF + +!* 3.3 Read in ARPEGE format and write in GRIB format +! ---------------------------------------------- + + IF (LFEMARSF.OR.LFEMARSD) THEN + IF (NPROC /= 1) THEN + WRITE (NULOUT,*)'CNT3: must run conf CNT3 with LFEMARSF or LFEMARSD with one proc only !' + CALL ABOR1('CNT3: ABOR1 CALLED') + ENDIF +! Read first file + LREASUR=.FALSE. + CALL SUINIF(6) + IF (LFEMARSD) THEN + ALLOCATE (ZSPA3(SIZE(SPA3,1),SIZE(SPA3,2),SIZE(SPA3,3))) + ALLOCATE (ZSPA2(SIZE(SPA2,1),SIZE(SPA2,2))) + ZSPA3(:,:,:)=SPA3(:,:,:) + ZSPA2(:,:)=SPA2(:,:) +! Read second file and make the difference + CALL SUINIF(7) + SPA3(:,:,:)=SPA3(:,:,:)-ZSPA3(:,:,:) + SPA2(:,:)=SPA2(:,:)-ZSPA2(:,:) + DEALLOCATE (ZSPA3) + DEALLOCATE (ZSPA2) + ENDIF + WRITE(NULOUT,*) 'norms of increments at date ',NINDAT + CALL SPNORM(0) +! Write in GRIB format + CALL GRBSPA(NFLEVL,NSMAX,NSPEC2,VAH,VBH,SPVOR,SPDIV,SPT,SPQ,SPSP,& + &SPOR,NINDAT,NSSSSS) + IF (LHOOK) CALL DR_HOOK('CNT3',1,ZHOOK_HANDLE) + RETURN + ENDIF + +! ----------------------------------------------------------- + +!* 4. FILTERING +! --------- + + IF (.NOT.LFPART2) THEN + +!* 4.1 Jc COMPUTATION. +! --------------- +! ALL COMPUTATION IN CNT3AD + +!* 4.2 NORMAL MODE INITIALIZATION. +! --------------------------- + + IF(LNF) THEN + CALL SPNORM(0) + IF (LNMIRQ) THEN + IF (LSTDNMI) THEN + CALL CNMI + ELSE + CALL CMAC + ENDIF + ELSEIF (LNPROJ) THEN + CALL FLTMODE(NVMOD,NVMODPP,NUMVMO) + ENDIF + ENDIF + +!* 4.4 Jg COMPUTATION. +! --------------- +! ALL COMPUTATION IN CNT3AD + +! ----------------------------------------------------------- + +!* 4.5 DIGITAL FILTER INITIALIZATION +! ----------------------------- + + IF (LNF.AND.(NEINI == 2.OR.NEINI == 4)) CALL DFI + + ENDIF + +ELSE + +!* 4.7 LAM INITIALIZATION +! ------------------ + + IF (NCONF/100 == 0.OR.NCONF/100 == 2.OR.NCONF == 801.OR.& + & NCONF == 302.OR.NCONF == 501.OR.NCONF == 401.OR.& + & ((NCONF/100==1).AND.(NSTOP>0)).OR.& + & NCONF == 601) THEN + IF(LTEST.AND.NCONF == 801) CALL SWAP73 + CALL ELSAC + IF(LTEST.AND.NCONF == 801) CALL SWAP73 + ENDIF + + IF (.NOT. LFPART2 .AND. LEQLIMSAT) CALL SUEQLIMSAT + + ! sponge setup + IF ( NFLEVG > 1 ) THEN + CALL SUPONG + ENDIF + +ENDIF + +! ----------------------------------------------------------- + +!* 5. INTEGRATION. +! ------------ + +IF (.NOT.LFPART2) THEN + +! Deallocate arrays only used in normal mode initialization + + IF (NCONF/100 == 0 .OR. NCONF == 302) THEN + CALL DEALNMI + ENDIF + + CALL CNT4 + +ELSE + CALL SU4FPOS(INT(0,JPIB)) + CLCONF(1:1)='0' + CALL CPREP4(CLCONF,LLOVER) +ENDIF + +WRITE(UNIT=NULOUT,FMT='('' END CNT3'')') + +! ------------------------------------------------------------------ + +IF (LHOOK) CALL DR_HOOK('CNT3',1,ZHOOK_HANDLE) +END SUBROUTINE CNT3 diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt4ad.F90 b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt4ad.F90 new file mode 100644 index 0000000000000000000000000000000000000000..1223fc5b0c2c655b2d72ed6bc03fdf8c718d77f9 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/control/cnt4ad.F90 @@ -0,0 +1,1007 @@ +SUBROUTINE CNT4AD + +USE PARKIND1 ,ONLY : JPIM, JPIB, JPRB +USE YOMHOOK ,ONLY : LHOOK ,DR_HOOK + +USE YOMDIMO , ONLY : NACTIM +USE YOMECTAB , ONLY : NTSLOTNO ,NTSLOTNOS,NTSLOTNOE,NTSLVSTST +USE YOMLUN , ONLY : NULOUT +USE YOMCT0 , ONLY : LFPART2 ,LNHDYN ,NCONF ,NSTOP ,NFRPOS ,NFRISP ,& + & NFRHIS ,NFSRHIS ,NFRGDI ,NFRSDI ,NFRDHFG ,NFRDHFZ ,& + & NFRDHFD ,NFRDHP ,NFRMASSCON,LTWOTL ,& + & LFPOS ,LOBS ,LSIMOB ,LSITRIC ,NPRINTLEV ,& + & NSTART ,LELAM +USE YOMCT2 , ONLY : NSTAR2 ,NSTOP2 +USE YOMCT3 , ONLY : NSTEP +USE YOMDYN , ONLY : TSTEP, TDT, LSTRHD, LSIDG, NSITER, NCURRENT_ITER +USE YOMVAR , ONLY : NSIM4D ,NFRREF ,NFRANA ,& + & NFRGRA ,NSIM4DL ,LTRREF ,& + & LTWGRA ,LGRASCAL, LJCDFI, LUSEJCDFI, LMODERR ,LAVARC , LFCOBSTEST +USE YOMGLOBS , ONLY : LPREMPOBS +USE YOMHCP , ONLY : NHECP +USE YOMCFU , ONLY : NFRCFU +USE YOMXFU , ONLY : NFRXFU ,NFRRAZ +USE YOMSENS , ONLY : NJROPT +USE YOMVRTL , ONLY : L801TL ,LOBSTL +USE YOMRES , ONLY : NFRRES +USE YOMSKF , ONLY : LTWSKFZ +USE YOMPPC , ONLY : LOPPCNT +USE YOMMP , ONLY : NOUTTYPE, NPSP +USE YOMIO , ONLY : LPPTSF +USE YOMTIM , ONLY : RSTART ,RVSTART ,RTIMEF +USE YOMTNEWT , ONLY : LIDMODEL +USE YOMSP , ONLY : SPSP, SPA3, SPD2D, SP5A3, SP5A2, SPA1, SP5A1 +USE TRAJECTORY_MOD, ONLY: LTRAJGP, GET_TRAJ_SPEC +USE YOMLCZ , ONLY: L_SOS, L_EOFS, NSTEPS_PER_STATE, YSTATE_VECTOR_4D, & + & LOCNORM, LFORCE, YSPFORCE +USE YOMMODEL_ERROR,ONLY: NTYPE_MODERR, NDIM_MODERR, MSTEPERR, NPRTMODERR, & + & SPMODERR, GPMODERR, SPMODERR_HYB, GPMODERR_HYB, & + & N_COUPLED_WINDOWS +USE YEMCT0 , ONLY : NECOAD ,LE0COTA ,NFRLSG ,N1LSG +USE YOMDFI , ONLY : NSTDFI +USE CONTROL_VECTORS +USE SPECTRAL_FIELDS_MOD +USE YEMJK , ONLY : LEJK + +!**** *CNT4AD* - Controls adjoint model at level 4 + +! Purpose. +! -------- +! Controls adjoint integration. + +!** Interface. +! ---------- +! *CALL* *CNT4AD + +! Explicit arguments : +! -------------------- +! None + +! Implicit arguments : +! -------------------- +! None + +! Method. +! ------- +! See documentation + +! Externals. +! ---------- +! Called by CNT3. + +! Reference. +! ---------- +! ECMWF Research Department documentation of the IFS + +! Author. +! ------- +! Mats Hamrud and Philippe Courtier *ECMWF* + +! Modifications +! ------------- +! Original : 87-10-15 +! Modified by D. Vasiljevic and J. Pailleux: 90-11-23 +! Modified by F. Rabier and J.N Thepaut: 91-01-15 +! P. Courtier: 91-08-07 (transforms calls) +! J.N Thepaut: 91-08-22 (4D with real data events managment +! + comparison model - op.analysis) +! W Heckley : 91-10-02 3-D (comparison model - obs) +! D. Vasiljevic: 92-05-08 IO and OBS. IO schemes +! L. Labbe: 93-04-15 Gradient for sensitivity job 8xx +! 08/03/1993 Additional horizontal diffusion on not stretched sphere +! (K. YESSAD). +! F. Rabier : 93-12-10 Write gradient according to post-processing set-u +! + possibility of writing it with respect to SCALP inner-pr +! K. YESSAD (MARCH 1994): Modifications in the semi-implicit scheme +! (add of call to SUHEG, call SUHEL useless). +! K. YESSAD (APRIL 1994): Unified horizontal diffusion scheme. +! M.Hamrud: 95-10-30 (New form of CLCONF) +! K. YESSAD (NOV 1995): removal of HDC horizontal diffusion scheme. +! F. Rabier : 96-09-25 Proper call to stepo(V00..0) in nconf 801 +! M.Hamrud : Optim, cleaning +! M. Fisher : 97-01-31 Write gradient at intermediate time +! C. Temperton 97-02-24: modified first timestep when XIDT>0 +! T. Bergot 97-08 : write gradient / IHISTS +! + read RFfile only if NJROPT=1 +! G. Hello : 97-08-05 Write gradient with implicit inner product +! F. Rabier : 98-01-06 call PPFLUSH in nconf 801 +! C. Soci : 98-06-15 introduction of YOMCAIN/YEMECAIN +! M. Charron: November 98 (nonhydrostatic dynamics, incomplet) +! C. Temperton 98-11-05: adjoint of two-time-level scheme +! C. Fischer : 98-11-20 Nullify boundaries for aladin/AD if asked +! C. Temperton 99-08-16: removed redundant RKROMA +! P. Gauthier :99-08-10: Jc-dfi (adjoint) +! C. Fischer : 99-12-27 Prepare for nsiter>0 +! C. Soci : 00-04-05 ZVANA&ZVAGR allocatable to include mean wind; +! write LSG at intermediate timesteps +! C. Temperton 00-03-24: bugfixes for 2TL scheme: RSTATI=>ZSTATI +! Y. Tremolet 00-08-11: use module TRAJECTORY +! C. Fischer: 02-03-13: merge ecain* into cain* +! J.Vivoda (03-2002) PC schemes for NH dynamics (LPC_XXXX keys) +! G. Desroziers : 02-09-16 also treat Aladin mean wind trajectory +! 01-Oct-2003 M. Hamrud CY28 Cleaning +! 25-Feb-2004 C. Fischer Merge Aladin into Arpege/IFS cnt4ad +! Dec-2003 K. Yessad cleaning in horizontal diffusion. +! 10-Jun-2004 J. Masek NH cleaning (LPC_NOTR) +! 01-Jul-2004 K. Yessad Cleaning in PC scheme, and paragraph numbering +! harmonisation with the direct and the TL codes (when possible!). +! Y.Tremolet 18-Mar-2004 Model error changes +! R. El Khatib : 05-02-21 specific frequency array to reset instant. fluxes +! V.Guidard&C.Fischer: 01-Apr-2004 Introduction of Jk event +! K. Yessad 08-Feb-2005 SI scheme for ARPEGE NH model +! K. Yessad 21-Apr-2005 cleanings for SPNORM-printings. +! D. Salmond 21-09-05 Fix for LTRAJGP=true +! B. Chapnik 02-May-2007 fgat : temporal loop considered only if Tstep corresponds to tslot +! and call to stepo only when needed +! Y. Seity 11-01-08 add ISHISTS for surfex output files +! Y.Tremolet 27-Nov-2008 Jc-DFI for long windows +! F. Vana 13-Jan-2009: removed special specHD setup when LSLHD +! End Modifications + +!------------------------------------------------------------------------------ + +IMPLICIT NONE + +CHARACTER (LEN = 9) :: CLCONF +CHARACTER (LEN = 9) :: CLCON9 +CHARACTER (LEN = 120) :: CLYFILE +CHARACTER (LEN = 10) :: CLTIMEOD, CLDAT(3) + +! 1 : configuration of WRTRA write the trajectory +! 2 : configuration of LTINV inverse Legendre transform +! 3 : configuration of FTINV inverse Fourier transform +! 4 : configuration of GPC grid point computations +! 5 : configuration of POS post processing +! 6 : configuration of OBS comparison to observations +! 7 : configuration of FTDIR direct Fourier transform +! 8 : configuration of LTDIR direct Legendre transform +! 9 : configuration of SPC spectral space computations + +! ZVANA : working array containing the model state. +! ZVAGR : working array containing the gradient. +TYPE(control_vector) :: YL_ZVANA, YL_ZVAGR + +! - IPOSTS : ARRAY CONTAINING POST-PROCESSING TIME STEPS +INTEGER(KIND=JPIM) :: IPOSTS(0:NSTOP/NFRPOS) +! - IPISPS : ARRAY CONTAINING ISP (Animation !) TIME STEPS +INTEGER(KIND=JPIM) :: IPISPS(0:NSTOP/NFRISP) +! - IHISTS : ARRAY CONTAINING TRAJECTORY TIME STEPS +INTEGER(KIND=JPIM) :: IHISTS(0:NSTOP/NFRHIS) +! - ISHISTS : ARRAY CONTAINING TRAJECTORY TIME STEPS FOR SURFACE +INTEGER(KIND=JPIM) :: ISHISTS(0:NSTOP/NFSRHIS) +! - IRESTS : ARRAY CONTAINING RESTART TIME STEPS +INTEGER(KIND=JPIM) :: IRESTS(0:NSTOP/NFRRES) +! - IGDITS : GRID POINT DIAGNOSTICS TIME STEPS +INTEGER(KIND=JPIM) :: IGDITS(0:NSTOP/NFRGDI) +! - ISDITS : SPECTRAL DIAGNOSTICS TIME STEPS +INTEGER(KIND=JPIM) :: ISDITS(0:NSTOP/NFRSDI) +! - IREFTS : ARRAY CONTAINING SIMULATED OBS. EVENTS STEPS +INTEGER(KIND=JPIM) :: IREFTS(0:NSTOP/NFRREF) +! - IDHFGTS : WRITE OUT TIME STEPS FOR GLOBAL MEANS DDH +INTEGER(KIND=JPIM) :: IDHFGTS(0:NSTOP/NFRDHFG) +! - IDHFZTS : WRITE OUT TIME STEPS FOR ZONAL MEANS DDH +INTEGER(KIND=JPIM) :: IDHFZTS(0:NSTOP/NFRDHFZ) +! - IDHFDTS : WRITE OUT TIME STEPS FOR LIMITED AREAS DDH +INTEGER(KIND=JPIM) :: IDHFDTS(0:NSTOP/NFRDHFD) +! - IDHPTS : PAS DE TEMPS DE SORTIES IMPRIMEES DES DDH +INTEGER(KIND=JPIM) :: IDHPTS(0:NSTOP/NFRDHP) +! - ICFUTS : CONTROLS ACCUMULATED FLUX WRITE-UP +INTEGER(KIND=JPIM) :: ICFUTS(0:NSTOP/NFRCFU) +! - IXFUTS : CONTROLS INSTANTANEOUS FLUX WRITE-UP +INTEGER(KIND=JPIM) :: IXFUTS(0:NSTOP/NFRXFU) +! - IRAZTS : CONTROLS INSTANTANEOUS FLUX RESET +INTEGER(KIND=JPIM) :: IRAZTS(0:NSTOP/NFRRAZ) +! - IANATS : ANALYSIS WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IANATS(0:NSIM4DL/NFRANA) +! - IGRATS : GRADIENT WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IGRATS(0:NSIM4DL/NFRGRA) +! - IMASSCONS: ARRAY CONTAINING mass conservation fixup time steps +INTEGER(KIND=JPIM) :: IMASSCONS(0:NSTOP/NFRMASSCON) +! - ILSGTS : LBC GRADIENT WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: ILSGTS(0:NSTOP/NFRLSG) +! - IHECPS : AVARC WRITE-OUT EVENTS +INTEGER(KIND=JPIM) :: IHECPS(0:NSTOP) + +REAL(KIND=JPRB), ALLOCATABLE :: ZSPA3(:,:,:), ZSPSP(:) + +INTEGER(KIND=JPIM) :: IACTIM, IDIGLST, IOUTTYPE, ITIME, JSTEP, I, jj +INTEGER(KIND=JPIM) :: IHOUR, IMIN +INTEGER(KIND=JPIM) :: IVALUES(9) +INTEGER(KIND=JPIM) :: JTSLOT, JSITER, IWEAK +INTEGER(KIND=JPIM) :: IAVARE, ipersub, istep, isub + +! LLSLOT: logical switched on if a slot is available. +LOGICAL :: LL3DVAR, LLMLPP, LLNOPPFIL, LLSLOT, LLFIRST +LOGICAL :: LLSPNRM, LLGPNRM +LOGICAL :: LLWRELSG,llevs +LOGICAL :: LLSLOT_FGAT, LLFGATLAM + +REAL(KIND=JPRB) :: ZCT, ZVT, ZWT, ZSTATI +REAL(KIND=JPRB) :: ZSEC, ZT1, ZT2 +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ----------------------------------------------------------------- + +INTERFACE +#include "user_clock.h" +END INTERFACE + +#include "abor1.intfb.h" +#include "avarcad.intfb.h" +#include "cain.intfb.h" +#include "cainad.intfb.h" +#include "cainin.intfb.h" +#include "caininad.intfb.h" +#include "copygom5t0.intfb.h" +#include "costra.intfb.h" +#include "digfilad.intfb.h" +#include "elsin0ta.intfb.h" +#include "evarjkad.intfb.h" +#include "ewrlsgrad.intfb.h" +#include "gpnorm_gfl.intfb.h" +#include "lcnorad.intfb.h" +#include "moevar.intfb.h" +#include "monio.intfb.h" +#include "monvar.intfb.h" +#include "obsprep.intfb.h" +#include "obsvad.intfb.h" +#include "ppclose.intfb.h" +#include "ppflush.intfb.h" +#include "ppreq.intfb.h" +#include "pre_obshorad.intfb.h" +#include "spnorm.intfb.h" +#include "stepo.intfb.h" +#include "stepoad.intfb.h" +#include "suhdu.intfb.h" +#include "suheg.intfb.h" +#include "sunhsi.intfb.h" +#include "sutric.intfb.h" +#include "tslvstst.intfb.h" +#include "updtim.intfb.h" +#include "gridpoint_norm.intfb.h" +#include "add_moderr_ad.intfb.h" +#include "weak_constraint_ad.intfb.h" + +! ----------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT4AD',0,ZHOOK_HANDLE) + +! ----------------------------------------------------------------- + +!* 1. Initialize. +! ----------- + +CALL GSTATS(23,0) +WRITE(NULOUT,*)'START CNT4AD, NSIM4D=',NSIM4D + +LL3DVAR = (NCONF == 131.AND.NSTOP == 0) +LLWRELSG=NCONF/100 == 8 .AND. LELAM .AND. N1LSG==1 +LLFGATLAM=LELAM .AND. LIDMODEL !BC fgat for aladin +! ----------------------------------------------------------------- + +!* 2. Prepare occurences of I/O and 3D/4D var events. +! ---------------------------------------------- + +CALL MONIO(IPOSTS,IPISPS,IHISTS,ISHISTS,IGDITS,ISDITS,IDHFGTS,IDHFZTS,& + & IDHFDTS,IDHPTS,ICFUTS,IXFUTS,IRESTS,IMASSCONS,IRAZTS) +CALL MONVAR(IREFTS,IANATS,IGRATS,IHECPS) + +IAVARE = NHECP(0) +IF (LELAM) THEN + CALL MOEVAR(ILSGTS) +ENDIF + +!* events not implemented +IDHFGTS(0:NSTOP/NFRDHFG) = 0 +IDHFZTS(0:NSTOP/NFRDHFZ) = 0 +IDHFDTS(0:NSTOP/NFRDHFD) = 0 +IDHPTS (0:NSTOP/NFRDHP) = 0 + +! print config + +IF (NPRINTLEV >= 1) THEN + WRITE(UNIT=NULOUT,FMT='('' GRADIENT WRITE-UP, IGRATS '')') + WRITE(UNIT=NULOUT,FMT='(40I2)')IGRATS + WRITE(UNIT=NULOUT,FMT='('' HISTORY WRITE-UP, IHISTS '')') + WRITE(UNIT=NULOUT,FMT='(40I2)')IHISTS +ENDIF +! ----------------------------------------------------------- + +!* 3. ADJOINT integration. +! -------------------- + +!* 3.0 Preliminary calculations. + +NSTEP = NSTOP + +LLSLOT = .FALSE. +ZSTATI=REAL(NINT(NSTEP*TSTEP),JPRB) + +LLMLPP = LTWSKFZ .AND. IHISTS(NSTEP/NFRHIS) == 1.AND. MOD(NSTEP,NFRHIS) == 0 + +IACTIM = NACTIM + +LLSPNRM=ISDITS(NSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(NSTEP,MAX(1,NFRSDI)) == 0 +IF(LLSPNRM) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT START CNT4AD '')') + CALL SPNORM(0) + CALL GPNORM_GFL +ENDIF + +CLCONF(1:9) = '000000000' + +!* 3.21 Miscellaneous. + +! Computations in observation space + +IF (.NOT.LSIMOB) THEN + IF(NCONF/100 == 1) THEN + IF (LOBSTL.AND.LOBS) THEN + +! PREPARE TRAJECTORY IN OBSERVATION SPACE + + CALL USER_CLOCK(PELAPSED_TIME=ZWT,PVECTOR_CP=ZVT,PTOTAL_CP=ZCT) + ZCT=ZCT-RSTART + ZVT=ZVT-RVSTART + ZWT=ZWT-RTIMEF + RSTART=RSTART+ZCT + RVSTART=RVSTART+ZVT + RTIMEF=RTIMEF+ZWT + CALL COPYGOM5T0 + WRITE(NULOUT,'('' NSTEP ='',I6,'' OBSVAD '',A9)')& + & NSTEP,CLCONF + CALL OBSVAD + IF(LPREMPOBS) THEN + CALL PRE_OBSHORAD + ENDIF + ENDIF + LLFIRST = .TRUE. + LLSLOT = .FALSE. + DO JTSLOT=NACTIM,1,-1 +! DIRECT + IF(LL3DVAR.OR.NTSLVSTST(JTSLOT) == NSTEP ) THEN + LLSLOT = .TRUE. + NTSLOTNO = IACTIM + IF(LLFIRST) THEN + LLFIRST = .FALSE. + NTSLOTNOS = IACTIM + ENDIF + NTSLOTNOE = IACTIM + IACTIM = IACTIM-1 + WRITE(UNIT=NULOUT,FMT='('' CNT4AD (ADJOINT INTEGRATION);'' & + & ,'' TIME SLOT NO : '',I3 & + & ,'' TO BE USED WITH TIME STEP (NSTEP) : '',I3 & + & ,'' ; MODEL TIME (SINCE START) : '',F6.0)')& + & NTSLOTNO,NSTEP,ZSTATI + CALL FLUSH(NULOUT) + IF (LOBS) THEN + CALL OBSPREP('V') + ENDIF + ENDIF + ENDDO + IF(LLSLOT) THEN + NTSLOTNO = NTSLOTNOE + IF (LOBSTL) THEN +! GOM-ARRAYS ALREADY PREPARED + ELSE + IF (LTRREF) THEN + CLCONF(1:9) = 'B00000000' + ELSE + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + IF(LL3DVAR) THEN + CLCONF(2:2) = 'K' + CLCONF(3:3) = 'D' + ELSE + CLCONF(2:2) = 'E' + CLCONF(3:3) = 'C' + ENDIF + CLCONF(6:6) = 'V' + CALL STEPO(CLCONF) + ENDIF + ENDIF +! ADJOINT + CLCON9(1:9) = '000000000' + IF (LLSLOT) THEN + IF (LL3DVAR) THEN + CLCON9(2:2) = 'G' + CLCON9(3:3) = 'B' + ELSEIF (.NOT.LIDMODEL) THEN + CLCON9(2:2) = 'A' + CLCON9(3:3) = 'A' + ENDIF + IF (LOBS) CLCON9(6:6) = 'V' + ENDIF + IF (CLCON9(1:9)/='000000000') CALL STEPOAD(CLCON9) + ENDIF +ELSE + IF(.NOT.LTRAJGP) THEN + IF (LTRREF) THEN + CLCONF(1:9) = 'B00000000' + ELSE + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + ENDIF +ENDIF + +IF (.NOT.LSIMOB) THEN +ELSE + IF(NCONF == 801) THEN + +! ----- observation events management ---------------------- + + IF(IREFTS(NSTEP/NFRREF) == 1.AND.MOD(NSTEP,NFRREF) == 0.0_JPRB ) THEN + +! ----- read observations ---------------------------------- + + LTRREF=.TRUE. + + IF (NJROPT /= 1) THEN + +! do nothing!! + + ELSE + +! read RF file + + IF(L801TL)THEN + CLCONF(1:1)='V' + ELSE + CLCONF(1:1)='B' + ENDIF + CLCONF(2:9)='00000000' + CALL STEPO(CLCONF) + ENDIF + CALL COSTRA + LTRREF=.FALSE. + + ENDIF + ENDIF +ENDIF + +!* 3.9.4 a Comparison to reference state (AVARC) +IF (LAVARC.AND.IHECPS(NSTEP) == 1) THEN + WRITE(NULOUT,*) 'adjoint starts: AVARC event at NSTOP event = ',IAVARE + CALL AVARCAD(IAVARE) + IAVARE = IAVARE - 1 +ENDIF +! ----- add the gradient of the Jk cost function + IF (LELAM) THEN + IF (LEJK) CALL EVARJKAD + ENDIF + +! 3.1.1 a Time filtering constraint based on digital filter +! is being computed +! Its contribution is added to SPA3, SPA2 and SPA1. +! ----- adjoint of Jc-dfi for NSTOP ---------------- + +IF (LJCDFI.AND.LUSEJCDFI) THEN +! Step should be local to subwindow + IF (N_COUPLED_WINDOWS>1) THEN + isub=1 + istep=0 + IF (NSTEP>0) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + istep=MOD(NSTEP-1,ipersub)+1 + isub=(NSTEP-1)/ipersub+1 + ENDIF + ELSE + isub=1 + istep=NSTEP + ENDIF + IDIGLST = 2*NSTDFI + IF (NSIM4D==0.AND.N_COUPLED_WINDOWS>0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD nstep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) +ENDIF + +! 3.??? Write-up of the gradient (part not present in cnt4tl) + +IF ((NCONF/100 == 1.OR.NCONF/100 == 8) .AND. LGRASCAL) THEN + CALL ALLOCATE_CTLVEC(YL_ZVANA) + CALL ALLOCATE_CTLVEC(YL_ZVAGR) +ENDIF + +! 3.??? ??? (part not present in cnt4tl) + +IF (NCONF == 601.AND. LLMLPP) THEN + CLCONF='A00000000' + IOUTTYPE=NOUTTYPE + NOUTTYPE=1 + CALL STEPO(CLCONF) + NOUTTYPE=IOUTTYPE +ELSEIF (NCONF/100 == 1.OR.NCONF/100 == 8) THEN + IF ( (IGRATS(NSIM4D/NFRGRA) == 1.AND.& + & MOD(NSIM4D,NFRGRA) == 0.OR.NSIM4D == NSIM4DL)& + & .AND.(IHISTS(NSTEP/NFRHIS) == 1.AND.& + & MOD(NSTEP,NFRHIS) == 0) )THEN + + IF (LGRASCAL) THEN +! WRITE GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT +! SAVE GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + WRITE(NULOUT,'(''LGRASCAL=true, sens-grad scaled by the inverse of scalp'')') + CALL CAININ (YL_ZVANA) +! GET GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT + YL_ZVAGR = 0.0_JPRB + IF (LFORCE) THEN + CALL CAIN (YSPFORCE) + ENDIF + CALL CAINAD (YL_ZVAGR) + CALL CAIN (YL_ZVAGR) + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. +! FETCH GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAIN (YL_ZVANA) + ELSE +! WRITE GRADIENT WITH RESPECT TO IMPLICIT(STANDARD) INNER-PRODUCT + WRITE(NULOUT,'(''LGRASCAL=false, sens-grad not scaled'')') + IF (LFORCE) THEN + CALL CAIN(YSPFORCE) + ENDIF + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. + ENDIF + ENDIF +ENDIF + +!* TEMPORAL LOOP + +IF(NSTART /= NSTAR2 .OR.& + & NSTOP /= NSTOP2 ) THEN + WRITE(NULOUT,'('' NSTART, NSTOP ARE DIFFERENT FROM NSTAR2, NSTOP2'')') + WRITE(NULOUT,'('' NSTART, NSTOP, NSTAR2, NSTOP2: '',4(I5,1X))') & + & NSTART, NSTOP, NSTAR2, NSTOP2 + WRITE(NULOUT,'('' THEREFORE, TIMESLOT VS TIMESTEP IS RECALCULATED'')') + CALL TSLVSTST(NSTAR2,NSTOP2,TSTEP,NACTIM,NTSLVSTST) +ENDIF + +!* 3.1 Main temporal loop + +TEMPORAL_LOOP: DO JSTEP=NSTOP2-1,NSTAR2,-1 + +IF (LLFGATLAM .AND. (ALL(NTSLVSTST /= JSTEP)) ) CYCLE + + CALL USER_CLOCK(PTOTAL_CP=ZT1) + +!* 3.2 Current value of the time step length + + IF(JSTEP == 0.OR.LTWOTL)THEN + TDT=TSTEP + ELSE + TDT=2.0_JPRB*TSTEP + ENDIF + +!* 3.3 Reset of time dependant constants (clock,astronomy...) + + CALL UPDTIM(JSTEP,TDT,TSTEP,.FALSE.) + +!* 3.4 Reset semi-implicit solver in the multilevel model, and the +! additional horizontal diffusion operator. + + IF (.NOT.LELAM) THEN + + ! * SI scheme: + IF (LNHDYN) THEN + CALL SUNHSI(NULOUT,.FALSE.) + ELSE + IF (LSIDG) THEN + CALL SUHEG + ENDIF + IF (LSITRIC.AND.(JSTEP == NSTOP-2.OR.(JSTEP == 1.AND..NOT.LTWOTL))) THEN + CALL SUTRIC + ENDIF + ENDIF + + ! * HD scheme: + IF (LSTRHD) THEN + ! * This call to SUHDU actually does something in a leap-frog scheme if + ! TDT=2*TSTEP for the current jstep, and TDT=TSTEP for the previous one + CALL SUHDU + ENDIF + + ELSE + + ! * SI scheme: + IF (LNHDYN .AND. (NSTOP > 0 .AND. .NOT.LFPART2)) THEN + CALL SUNHSI(NULOUT,.FALSE.) + ENDIF + + ! * HD scheme: + + ENDIF + +!* 3.6 Reset YOMCT3 etc. + + NSTEP=JSTEP + LLSLOT=.FALSE. + ZSTATI=REAL(NINT(NSTEP*TSTEP),JPRB) + + LLSPNRM=ISDITS(JSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(JSTEP,MAX(1,NFRSDI)) == 0 + LLGPNRM=IGDITS(JSTEP/MAX(1,NFRGDI)) == 1.AND.MOD(JSTEP,MAX(1,NFRGDI)) == 0 + IF(LLSPNRM) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT NSTEP CNT4AD '',I4)')NSTEP + CALL SPNORM(0) + ENDIF + IF (LLGPNRM) THEN + CALL GPNORM_GFL + ENDIF + IF (LFCOBSTEST.AND.(NSIM4D<=4.OR.NSIM4D==NSIM4DL)) THEN + WRITE(NULOUT,*)'LFSOBS NORMS AT CNT4AD' + CALL SPNORM(0) + CALL GPNORM_GFL + ENDIF + +!* 3.6.1 Nullify GT3 + + IF (LELAM.AND.(NECOAD < 0.OR.LE0COTA).AND.(NSTOP /= 0)) THEN + CALL ELSIN0TA + ENDIF + +!* 3.8 Reset time dependent variables + + LLMLPP = LTWSKFZ .AND. IHISTS(JSTEP/NFRHIS) == 1 & + & .AND. MOD(JSTEP,NFRHIS) == 0 + +!* 3.8.6 Add the forcing that was saved during the TL integration + + IF (L_SOS) THEN + IF (MOD((JSTEP+1),NSTEPS_PER_STATE)==0 .AND. JSTEP+1 < NSTOP) THEN + I = (JSTEP+1)/NSTEPS_PER_STATE + ALLOCATE (ZSPA3(SIZE(SPA3,1),SIZE(SPA3,2),SIZE(SPA3,3))) + ZSPA3(:,:,:) = SPA3(:,:,:) + IF (NPSP==1) THEN + ALLOCATE (ZSPSP(SIZE(SPSP))) + ZSPSP(:) = SPSP(:) + ENDIF + CALL CAININAD (YSTATE_VECTOR_4D(I)) + IF(LOCNORM) CALL LCNORAD + SPA3(:,:,:) = SPA3(:,:,:) + ZSPA3(:,:,:) + DEALLOCATE (ZSPA3) + IF (NPSP==1) THEN + SPSP(:) = SPSP(:) + ZSPSP(:) + DEALLOCATE (ZSPSP) + ENDIF + ENDIF + ENDIF + +!* 3.??? Prepare for post-processing (part not present in cnt4tl). + + IF(LOPPCNT.AND.LLMLPP .AND. NCONF == 601.AND..NOT.LFPOS) THEN + ITIME=JSTEP*TSTEP+0.5_JPRB + CALL PPREQ(INT(ITIME,JPIB),LLNOPPFIL,CLYFILE) + IF(LLNOPPFIL) THEN + LLMLPP=.FALSE. + ENDIF + ENDIF + +!* 3.8.7 Manage trajectory +! Initialize CLCONF for call to STEPO (trajectory) + + IF (LTRREF) THEN + CLCONF(1:9) = 'BE0000000' + ELSE + IF(.NOT.LTRAJGP) THEN + CALL GSTATS(15,0) + CALL GET_TRAJ_SPEC(SP5A3,SP5A2,SP5A1,KSTEP=NSTEP) + CALL GSTATS(15,1) + ENDIF + CLCONF(1:9)='0E0000000' + ENDIF + +! first call for (first-guess) trajectory +! don't understand anymore why this is only for Aladin (CF) ... +! In cnt4tl this is also called for lelam=false (K.Y.) + IF(.NOT.LTRAJGP.AND.LELAM .AND. .NOT. LIDMODEL) THEN + CALL STEPO(CLCONF) + ENDIF + +!* 3.12 MODERR + + IF (LMODERR.AND.NTYPE_MODERR==2) CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + +!* 3.11 Corrector step. + + IF(NSITER > 0) THEN + + ! Last step: + + NCURRENT_ITER=NSITER + CLCON9(1:9)='0AAS00AAA' + CALL STEPOAD(CLCON9) + + ! Iteration step: + + DO JSITER = NSITER-1, 1, -1 + NCURRENT_ITER=JSITER + CLCON9(1:9)='0AAS00AAS' + CALL STEPOAD(CLCON9) + ENDDO + + ENDIF + +!* 3.10 Ordinary time step (predictor if PC scheme). +! Initialize CLCON9 for call to STEPOAD + + CLCON9(1:9)='0AAA00AAA' + NCURRENT_ITER=0 + + IF (NSITER == 0) THEN + CLCON9(9:9)='A' + ELSEIF (NSITER > 0) THEN + CLCON9(9:9)='T' + ELSEIF(NSITER < 0) THEN + CALL ABOR1('NEGATIVE NSITER NOT ALLOWED') + ENDIF + + IF (LIDMODEL) THEN + IF (JSTEP/=0) THEN + CLCON9(2:2)='0' + CLCON9(3:3)='0' + ENDIF + CLCON9(4:4)='0' + CLCON9(5:5)='0' + CLCON9(7:7)='0' + CLCON9(8:8)='0' + CLCON9(9:9)='0' + ENDIF + +!* 3.??? Observations (part not present in cnt4tl) + + IF (.NOT.LSIMOB) THEN + ! Real observations + + LLSLOT = .FALSE. + LLFIRST = .TRUE. + LLSLOT_FGAT = .FALSE. + CALL GSTATS(1832,0) + DO JTSLOT=NACTIM,1,-1 + IF(LOBS.AND.NTSLVSTST(JTSLOT) == NSTEP ) THEN + LLSLOT = .TRUE. + LLSLOT_FGAT=( LLSLOT .AND. LIDMODEL ) + NTSLOTNO = IACTIM + IF(LLFIRST) THEN + LLFIRST = .FALSE. + NTSLOTNOS = IACTIM + ENDIF + NTSLOTNOE = IACTIM + IACTIM = IACTIM-1 + IF (LOBSTL) THEN + ! GOM-ARRAYS ALREADY PREPARED + ELSE + CLCONF(3:3) = 'C' + CLCONF(6:6) = 'V' + ENDIF + WRITE(UNIT=NULOUT,FMT='('' CNT4AD (TEMPORAL LOOP);'' & + & ,'' TIME SLOT NO : '',I3 & + & ,'' TO BE USED WITH TIME STEP (NSTEP) : '',I3 & + & ,'' ; MODEL TIME (SINCE START) : '',F6.0)')& + & NTSLOTNO,NSTEP,ZSTATI + CALL FLUSH(NULOUT) + IF (LOBS) THEN + CALL OBSPREP('V') + ENDIF + ENDIF + ENDDO + CALL GSTATS(1832,1) + IF ((.NOT.LTRAJGP .AND. .NOT. LIDMODEL) .OR. LLSLOT_FGAT ) THEN + CALL STEPO(CLCONF) + ENDIF + + IF(LLSLOT) THEN + NTSLOTNO = NTSLOTNOE + CLCON9(6:6)='V' + ENDIF + + IF (CLCON9(1:9)/='000000000') CALL STEPOAD(CLCON9) + ELSE + + ! Simulated observations + + ! Trajectory. + IF(.NOT.LTRAJGP) THEN + CALL STEPO(CLCONF) + ENDIF + ! Adjoint integration. + CALL STEPOAD(CLCON9) + + IF(IREFTS(JSTEP/NFRREF) == 1.AND.MOD(JSTEP,NFRREF) == 0 & + & .AND.NCONF == 801) THEN + + !* read observations and not trajectory + LTRREF=.TRUE. + IF(L801TL)THEN + CLCONF(1:1)='V' + ELSE + CLCONF(1:1)='B' + ENDIF + CLCONF(2:9)='00000000' + CALL STEPO(CLCONF) + CALL COSTRA + LTRREF=.FALSE. + ENDIF + ENDIF + +!* 3.9.4 b Comparison to reference state (AVARC) + IF (LAVARC.AND.IHECPS(JSTEP) == 1) THEN + WRITE(NULOUT,*) 'adjoint run AVARC event at JSTEP = ',JSTEP,' event= '& + & , IAVARE + IF (IAVARE < 1) THEN + CALL ABOR1('AVARC error: IAVARE < 1 ') + ENDIF + CALL AVARCAD(IAVARE) + IAVARE = IAVARE - 1 + ENDIF + +!* 3.X Weak Constraints 4D-Var + + IF (LMODERR) THEN + iweak=MSTEPERR(NSTEP) + IF (NTYPE_MODERR==1.AND.iweak>0) CALL WEAK_CONSTRAINT_AD + IF (NTYPE_MODERR==4.AND.iweak>0) THEN + IF (LJCDFI.AND.N_COUPLED_WINDOWS>1) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + isub=NSTEP/ipersub+1 + istep=0 + IDIGLST=2*NSTDFI + IF (NSIM4D==0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD estep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) + ENDIF + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + ELSEIF (NTYPE_MODERR==5 .AND. iweak>0) THEN + IF (NSIM4D == NSIM4DL) THEN + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP,SPMODERR_HYB,GPMODERR_HYB) + ELSE + CALL ADD_MODERR_AD(SPMODERR,GPMODERR,NSTEP) + ENDIF + ENDIF + ENDIF + +! 3.1.1 b Time filtering constraint based on digital filter +! is being computed +! Its contribution is added to SPA3, SPA2 and SPA1. + + IF (LJCDFI.AND.LUSEJCDFI) THEN +! Step should be local to subwindow + IF (N_COUPLED_WINDOWS>1) THEN + isub=1 + istep=0 + IF (NSTEP>0) THEN + ipersub=NSTOP/N_COUPLED_WINDOWS + istep=MOD(NSTEP-1,ipersub)+1 + isub=(NSTEP-1)/ipersub+1 + ENDIF + ELSE + isub=1 + istep=NSTEP + ENDIF + IDIGLST = 2*NSTDFI + IF (NSIM4D==0.AND.N_COUPLED_WINDOWS>0) THEN + write(nulout,*)'CNT4AD: Calling DIGFILAD nstep,isub,istep=',nstep,isub,istep + ENDIF + CALL DIGFILAD(istep, IDIGLST, isub, SPA3, SPD2D, SPA1, .TRUE.) + ENDIF + +!* 3.??? Write-up of the gradient (part not present in cnt4tl). + + IF (NCONF == 601.AND. LLMLPP) THEN + CLCONF='A00000000' + IOUTTYPE=NOUTTYPE + NOUTTYPE=1 + CALL STEPO(CLCONF) + NOUTTYPE=IOUTTYPE + ELSEIF (NCONF/100 == 1.OR.NCONF/100 == 8) THEN + IF ( (IGRATS(NSIM4D/NFRGRA) == 1.AND.& + & MOD(NSIM4D,NFRGRA) == 0.OR.NSIM4D == NSIM4DL)& + & .AND.(IHISTS(NSTEP/NFRHIS) == 1.AND.& + & MOD(NSTEP,NFRHIS) == 0) )THEN + + IF (LGRASCAL) THEN +! WRITE GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT +! SAVE GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAININ (YL_ZVANA) +! GET GRADIENT WITH RESPECT TO SCALP INNER-PRODUCT + YL_ZVAGR = 0.0_JPRB + IF (LFORCE) THEN + CALL CAIN (YSPFORCE) + ENDIF + CALL CAINAD (YL_ZVAGR) + CALL CAIN (YL_ZVAGR) + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. +! FETCH GRADIENT WITH RESPECT TO STANDARD INNER-PRODUCT + CALL CAIN (YL_ZVANA) + ELSE +! WRITE GRADIENT WITH RESPECT TO IMPLICIT(STANDARD) INNER-PRODUCT + IF (LFORCE) THEN + CALL CAIN(YSPFORCE) + ENDIF + LTWGRA = .TRUE. + CLCONF(1:9)='A00000000' + CALL STEPO(CLCONF) + CALL PPFLUSH + CALL PPCLOSE + LTWGRA = .FALSE. + ENDIF + ENDIF + IF (LLWRELSG) THEN + IF (((ILSGTS(NSTEP/NFRLSG) == 1.AND.MOD(NSTEP,NFRLSG) == 0) & + & .OR.(NSTEP == 1)).AND.NSTEP /= 0) THEN + CALL EWRLSGRAD + ENDIF + ENDIF + ENDIF + +!* 3.13 Copy state for use as forcing during the TL integration + + IF (L_EOFS) THEN + IF (MOD((JSTEP+1),NSTEPS_PER_STATE)==0 .AND. JSTEP+1 < NSTOP) THEN + I = (JSTEP+1)/NSTEPS_PER_STATE + YSTATE_VECTOR_4D(I)%data = 0.0_JPRB + CALL CAINAD (YSTATE_VECTOR_4D(I)) + ENDIF + ENDIF + +!* 3.15 Signal SMS event for completion of post_processing + + IF(LLMLPP) THEN + IF(NOUTTYPE /= 2) THEN + CALL PPFLUSH + IF( LPPTSF )THEN + CALL PPCLOSE + ENDIF + ENDIF + ENDIF + + CALL USER_CLOCK(PTOTAL_CP=ZT2) + CALL DATE_AND_TIME(CLDAT(1),CLTIMEOD,CLDAT(3),IVALUES) + ZSEC = REAL(NSTEP,JPRB)*TSTEP +0.5_JPRB + IHOUR = INT( ZSEC/3600._JPRB ) + IMIN = INT( (ZSEC-REAL(IHOUR,JPRB)*3600._JPRB)/60._JPRB ) + +ENDDO TEMPORAL_LOOP + +!* 3.20 Miscellaneous (deallocations and final call to SPNORM). + +IF ((NCONF/100 == 1.OR.NCONF/100 == 8) .AND. LGRASCAL) THEN + CALL DEALLOCATE_CTLVEC(YL_ZVANA) + CALL DEALLOCATE_CTLVEC(YL_ZVAGR) +ENDIF + +LLSPNRM=ISDITS(NSTEP/MAX(1,NFRSDI)) == 1.AND.MOD(NSTEP,MAX(1,NFRSDI)) == 0 +IF (LLSPNRM.OR.NSIM4D<=1.OR.NSIM4D==NSIM4DL) THEN + WRITE(UNIT=NULOUT,FMT='('' NORMS AT END CNT4AD '')') + CALL SPNORM(0) + CALL GPNORM_GFL + IF (LMODERR) THEN + llevs=(NPRTMODERR>=2) + DO jj=1,NDIM_MODERR + CALL SPECTRAL_NORM (SPMODERR(jj),'CNT4AD MODERR') + CALL GRIDPOINT_NORM(GPMODERR(jj),'CNT4AD MODERR',llevs) + ENDDO + ENDIF +ENDIF + +CALL GSTATS(23,1) +! ----------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CNT4AD',1,ZHOOK_HANDLE) +END SUBROUTINE CNT4AD diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/module/yommsc.F90 b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/module/yommsc.F90 new file mode 100644 index 0000000000000000000000000000000000000000..a036cdba027fff7e5d29cf08d6c165dcdb2de5cd --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/module/yommsc.F90 @@ -0,0 +1,36 @@ +MODULE YOMMSC + +USE PARKIND1 ,ONLY : JPIM ,JPRB + +IMPLICIT NONE + +SAVE + +! ------------------------------------------------------------------ +!* Basic parameters + +! NINTLEN - length of INTEGER_M variables in bytes +! NLOGLEN - length of logicals in bytes +! NREALEN - length of REAL_B variables in bytes +! NDBLLEN - length of REAL_H variables in bytes +! N_DEFAULT_REAL_KIND - The KIND value of the default REAL kind +! N_DOUBLE_KIND - The KIND value of double precision + +INTEGER(KIND=JPIM) :: NINTLEN +INTEGER(KIND=JPIM) :: NREALEN +INTEGER(KIND=JPIM) :: NLOGLEN +INTEGER(KIND=JPIM) :: NDBLLEN + +REAL, PRIVATE :: Z_DEFAULT_REAL ! intentionally not REAL(KIND=JPRB) +INTEGER(KIND=JPIM), PARAMETER :: N_DEFAULT_REAL_KIND = KIND(Z_DEFAULT_REAL) + +DOUBLE PRECISION, PRIVATE :: DL_DOUBLE_PRECISION ! intentionally not REAL(KIND=JPRH) + +#ifdef DOUBLE_KIND_EQUALS_REAL +INTEGER(KIND=JPIM), PARAMETER :: N_DOUBLE_KIND = KIND(Z_DEFAULT_REAL) +#else +INTEGER(KIND=JPIM), PARAMETER :: N_DOUBLE_KIND = KIND(DL_DOUBLE_PRECISION) +#endif + +! ------------------------------------------------------------------ +END MODULE YOMMSC diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 new file mode 100644 index 0000000000000000000000000000000000000000..cd5cb11a5c5e1f487e97398a03a20a5e2f2d8ad0 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/ifs-36r4/src/ifs/phys_ec/su_aerw.F90 @@ -0,0 +1,857 @@ +SUBROUTINE SU_AERW + +!**** *SU_AERW* - DEFINES INDICES AND PARAMETERS FOR VARIOUS AEROSOL VARIABLES + +! PURPOSE. +! -------- +! INITIALIZE YOEAERATM, YOEAERSRC, YOEAERSNK, THE MODULES THAT CONTAINS INDICES +! ALLOWING TO GET THE AEROSOL PARAMETERS RELEVANT FOR THE PROGNOSTIC AEROSOL +! CONFIGURATION. + +!** INTERFACE. +! ---------- +! *CALL* *SU_AERW + +! EXPLICIT ARGUMENTS : +! -------------------- +! NONE + +! IMPLICIT ARGUMENTS : +! -------------------- +! YOEAERATM, YOEAERSRC + +! METHOD. +! ------- +! SEE DOCUMENTATION + +! EXTERNALS. +! ---------- + +! REFERENCE. +! ---------- +! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS + +! AUTHOR. +! ------- +! JEAN-JACQUES MORCRETTE *ECMWF* + +! MODIFICATIONS. +! -------------- +! ORIGINAL : 2005-07-08 + +! ------------------------------------------------------------------ + +USE PARKIND1 ,ONLY : JPIM ,JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK + +USE YOEAERATM, ONLY : LAERSCAV ,LAERSEDIM, LAERSURF, LAER6SDIA, & + & LAERCLIMG, LAERCLIMZ, LAERCLIST, LAERDRYDP, LAERGTOP, LAERLISI, LAERNGAT, & + & LAERHYGRO, LAERCCN , LAEROPT , LAERRAD , LAERUVP , LUVINDX , & + & REPSCAER , NAERCONF , NXT3DAER , NINIDAY +USE YOEAERMAP ,ONLY : RDDUAER +USE YOEAERSRC, ONLY : LEPAERO , NAERWND, NAERDUT, & + & NINDAER , NMAXTAER, NTAER , NTYPAER, RGELAV , RGEMUV , & + & RDGLAV , RDGMUV , RCLONV , RSLONV , RDCLONV, RDSLONV, & + & RSSFLX , RLATVOL , RLONVOL , NDDUST , NSSALT , RAERDUB, & + & RBCPHIL, RBCPHOB , ROMPHIL , ROMPHOB, RFCTSS , RFCTDU , RFCTDUR, RFCTSSR, & + & NBIN , NTYP, LAEROMIN + +USE YOEPHY , ONLY : LE4ALB + +USE YOEDBUG , ONLY : KSTPDBG , NSTPDBG + +USE YOMCST , ONLY : RPI +USE YOMGC , ONLY : GELAM, GEMU +USE YOMGEM , ONLY : NGPTOT +!USE YOMLEG , ONLY : RMU +USE YOMLUN , ONLY : NULNAM, NULOUT +USE YOMRIP , ONLY : NINDAT, NSSSSS + +USE YOM_YGFL , ONLY : NAERO, NACTAERO + +USE YOERAD , ONLY : LCMIP5 + +IMPLICIT NONE + +INTEGER(KIND=JPIM) :: IAER, ICAER, ITAER +INTEGER(KIND=JPIM) :: J, JAER, JL + +!-- map +INTEGER(KIND=JPIM) :: IFF, IAERWND +REAL(KIND=JPRB) :: ZDDUAER(50,2) +REAL(KIND=JPRB) :: ZBNDA, ZBNDB, ZBNDC, ZBNDD, ZBNDE, ZBNDF, ZBNDG, ZBNDH, & + & ZBNDI, ZBNDJ, ZBNDK, ZBNDL, ZBNDM +REAL(KIND=JPRB) :: ZDEGRAD, ZINCLAT, ZLAT, ZLON, ZLONE, ZLONGB, ZLONW +CHARACTER(LEN=45) :: CLAERWND(0:3) + +REAL(KIND=JPRB) :: ZHOOK_HANDLE +! ---------------------------------------------------------------- + +#include "posnam.intfb.h" + +#include "su_aerp.intfb.h" +#include "su_aerop.intfb.h" +! ---------------------------------------------------------------- + +#include "naeaer.h" + +! ---------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('SU_AERW',0,ZHOOK_HANDLE) + +!* 1. DEFAULT VALUES OF PARAMETERS +! ---------------------------- + +NMAXTAER=8 + +LEPAERO =.FALSE. +LAERCLIMG=.FALSE. +LAERCLIMZ=.FALSE. +LAERDRYDP=.FALSE. +LAERGTOP =.FALSE. +LAERHYGRO=.FALSE. +LAERLISI =.FALSE. +LAERNGAT =.FALSE. +LAERSCAV =.FALSE. +LAERSEDIM=.FALSE. +LAERSURF =.FALSE. +LAER6SDIA=.FALSE. +LAERRAD =.FALSE. +LAEROPT(:)=.FALSE. +LAERCCN =.FALSE. +LAERUVP =.FALSE. +LUVINDX =.FALSE. + +LAERCLIST=.FALSE. +LAEROMIN=.FALSE. + +!- note that NAERCONF is now irrelevant +NAERCONF=-99 +NXT3DAER=0 +NINIDAY=19000101 + +NTAER =0 +!-- default values +!-- DDust is "a la Ginoux et al., 2001" =f(DEP*WND3 +filter on ALUV and FrBaS) +NDDUST =7 +RAERDUB=2.E-11_JPRB +!-- SSalt is Monahan et al. 1986 +NSSALT =1 + +! the 8 types and assumed number of bins are: +! NTYPAER bins type +! 1 1- 3 sea-salt 0.03 - 0.5 - 5 - 20 microns +! 2 4- 6 dust 0.03 - 0.5 - 0.9 - 20 microns +! 3 7- 8 POM hydrophilic, hydrophobic +! 4 9-10 BC hydrophilic, hydrophobic +! 5 11-12 SO4/SO2 including sulfate prognostic stratospheric aerosols (SO4 is 11) +! 6 13 fly ash +! 7 14 pseudo-prognostic stratospheric aerosols +! 8 15 pseudo-prognostic volcanic aerosols + +DO JAER=1,NMAXTAER + NTYPAER(JAER)=0 +ENDDO + +RLATVOL=-999._JPRB +RLONVOL=-999._JPRB +RGELAV =-999._JPRB +RGEMUV =-999._JPRB +RDGLAV = 999._JPRB +RDGMUV = 999._JPRB +RCLONV =-999._JPRB +RSLONV =-999._JPRB +RDCLONV= 999._JPRB +RDSLONV= 999._JPRB + +NSTPDBG=10 +DO J=1,NSTPDBG + KSTPDBG(J)=-999 +ENDDO + +REPSCAER=1.E-20_JPRB + +RBCPHIL = 0.8_JPRB +RBCPHOB = 1.0_JPRB-RBCPHIL +ROMPHIL = 0.5_JPRB +ROMPHOB = 1.0_JPRB-ROMPHIL + +ZDDUAER(:,1) = 1.00_JPRB +ZDDUAER(:,2) = 0.10_JPRB +RDDUAER(:) = 0.0_JPRB +NAERDUT=0 + +!-- default values are for use of 10-m wind as predictor for SS and DU +NAERWND = 0 +IAERWND = 1 +RFCTDU = 1.0_JPRB +RFCTSS = 1.0_JPRB +RFCTDUR = 0.40_JPRB +RFCTSSR = 0.52_JPRB +CLAERWND(0) = '10-M WIND AS PREDICTOR FOR SS AND DU ' +CLAERWND(1) = 'PREDICTORS: WIND GUST FOR SS, 10M-WIND FOR DU' +CLAERWND(2) = 'PREDICTORS: WIND GUST FOR DU, 10M-WIND FOR SS' +CLAERWND(3) = 'WIND GUST AS PREDICTORS FOR SS AND DU ' + +! ------------------------------------------------------------------ + +!* 2. INITIALIZE GEOGRAPHICALLY-DEPENDENT AEROSOL PARAMETERS +! ------------------------------------------------------ + +! Canada 1 1. 0.1 +! Alaska 2 1. 0.1 +! USA 3 1. 0.08 +! Central America 4 0.60 0.05 +! South America 5 0.60 0.01 +! Brazil 6 1. 0.1 +! Iceland 7 1. 0.1 +! Ireland 8 1. 0.1 +! Britain 9 1. 0.1 +! Cont'al Europe 10 1. 0.1 +! Russia (Europe) 11 1. 0.1 +! Russia (Georgia) 12 1. 0.02 + +! Northern Sahara 13 0.00 0.00 *now represented by 34-37 +! Central Africa 14 0.20 0.11 +! Southern Africa 15 0.50 0.04 + +! Siberia 16 1. 0.1 +! Asian deserts 17 1. 0.1 + +! Saudi Arabia 18 0.50 0.12 +! Irak, Iran, Pakistan 19 0.50 0.12 + +! Central Asia Taklamakan 20 0.80 0.025 +! India 21 1.2 0.09 + +! Mongolia and Gobi 22 1.5 0.22 +! Central China 23 1.5 0.25 + +! South China 24 0.5 0.1 +! Japan, South Korea 25 1.0 0.1 + +!-- padding Asia 26 0.5 0.1 + +! Tropical Pacific Islands 27 1. 0.1 +! Australia. New Zealand 28 0.5 0.03 +! +! Greenland 29 1. 0.1 +! Antarctica 30 1. 0.1 + +! Additional areas + +! Atacama and Uyuni 31 0.05 0.02 +! Pipanaco and others 32 0.1 0.02 +! Argentinian pampas 33 0.3 0.02 +! Southern Sahara (West) 34 0.40 0.13 +! Southern Sahara (East) 35 0.40 0.15 +! Northern Sahara (West) 36 0.30 0.13 +! Northern Sahara (East) 37 0.30 0.15 +!============================== + +! USA 3 +ZDDUAER( 3,1) = 1.00_JPRB +ZDDUAER( 3,2) = 0.08_JPRB + +! Central America 4 +ZDDUAER( 4,1) = 0.60_JPRB +ZDDUAER( 4,2) = 0.05_JPRB + +! South America 5 +ZDDUAER( 5,1) = 0.60_JPRB +ZDDUAER( 5,2) = 0.01_JPRB + +! Russia (Georgia) 12 +ZDDUAER(12,1) = 1.00_JPRB +ZDDUAER(12,2) = 0.02_JPRB + +! Sahara 13 +! Central Africa 14 +! Southern Africa 15 +ZDDUAER(13,1) = 0.00_JPRB +ZDDUAER(14,1) = 0.20_JPRB +ZDDUAER(15,1) = 0.50_JPRB + +ZDDUAER(13,2) = 0.17_JPRB +ZDDUAER(14,2) = 0.11_JPRB +ZDDUAER(15,2) = 0.04_JPRB + +! Siberia 16 +! Asian deserts 17 + +ZDDUAER(16,1) = 1.00_JPRB +ZDDUAER(17,1) = 1.00_JPRB + +ZDDUAER(16,2) = 0.10_JPRB +ZDDUAER(17,2) = 0.10_JPRB + +! Saudi Arabia 18 +! Irak, Iran, Pakistan 19 +ZDDUAER(18,1) = 0.50_JPRB +ZDDUAER(19,1) = 0.50_JPRB + +ZDDUAER(18,2) = 0.12_JPRB +ZDDUAER(19,2) = 0.12_JPRB + +! Central Asia Taklamakan 20 +! India 21 +ZDDUAER(20,1) = 0.80_JPRB +ZDDUAER(21,1) = 1.20_JPRB + +ZDDUAER(20,2) = 0.025_JPRB +ZDDUAER(21,2) = 0.09_JPRB + +! Mongolia and Gobi 22 +! Central China 23 +ZDDUAER(22,1) = 1.50_JPRB +ZDDUAER(23,1) = 1.50_JPRB + +ZDDUAER(22,2) = 0.22_JPRB +ZDDUAER(23,2) = 0.25_JPRB + +! South China 24 +! Japan, South Korea 25 +ZDDUAER(24,1) = 0.50_JPRB +ZDDUAER(25,1) = 1.00_JPRB + +ZDDUAER(24,2) = 0.10_JPRB +ZDDUAER(25,2) = 0.10_JPRB + +!-- padding Asia 26 +ZDDUAER(26,1) = 0.50_JPRB +ZDDUAER(26,2) = 0.10_JPRB + +! Tropical Pacific Islands 27 +! Australia. New Zealand 28 +ZDDUAER(27,1) = 1.00_JPRB +ZDDUAER(28,1) = 0.50_JPRB + +ZDDUAER(27,2) = 0.10_JPRB +ZDDUAER(28,2) = 0.03_JPRB + +! Atacama and other areas, Argentinian pampas +ZDDUAER(31,1) = 0.05_JPRB +ZDDUAER(32,1) = 0.10_JPRB +ZDDUAER(33,1) = 0.30_JPRB + +ZDDUAER(31,2) = 0.02_JPRB +ZDDUAER(32,2) = 0.02_JPRB +ZDDUAER(33,2) = 0.02_JPRB + +! Southern Sahara West +ZDDUAER(34,1) = 0.40_JPRB +ZDDUAER(34,2) = 0.13_JPRB + +! Southern Sahara East +ZDDUAER(35,1) = 0.40_JPRB +ZDDUAER(35,2) = 0.13_JPRB + +! Northern Sahara West +ZDDUAER(36,1) = 0.30_JPRB +ZDDUAER(36,2) = 0.13_JPRB + +! Northern Sahara East +ZDDUAER(37,1) = 0.30_JPRB +ZDDUAER(37,2) = 0.13_JPRB + +! ------------------------------------------------------------------ + +!* 2. READ VALUES OF PROGNOSTIC AEROSOL CONFIGURATION +! ----------------------------------------------- + +WRITE(NULOUT,8000) NAERO +8000 FORMAT(1X,'Read or not the namelist? ',I3) + +IF(NAERO > 0) THEN + CALL POSNAM(NULNAM,'NAEAER') + READ (NULNAM,NAEAER) +ELSE IF (LCMIP5) THEN + WRITE(NULOUT,'("CMIP5: READ AEROSOL OPT PROPERTIES DESPITE NAERO=",I3)') NAERO + CALL SU_AERP + CALL SU_AEROP +ENDIF + +IF (NINDAT == NINIDAY .AND. NSSSSS == 00000) THEN + LAERCLIST=.TRUE. +ENDIF + +! ------------------------------------------------------------------ + +!* 3. DISTRIBUTE DUST AEROSOL SOURCE FUNCTIONS +! ---------------------------------------- + +!-- if NAERWND < 2, DU uses 10m-wind; if >= 2, DU uses gust + +if (NAERWND == 0) THEN +! for NAERWND = 0, both SS and DU use 10-m wind + RFCTDU=1.0_JPRB + RFCTSS=1.0_JPRB + IAERWND=1 +elseif (NAERWND == 1) THEN +! for NAERWND = 1, SS takes "gust" values + RFCTDU=1.0_JPRB + RFCTSS=RFCTSSR + IAERWND=1 +elseif (NAERWND == 2) THEN +! for NAERWND = 2, DU takes "gust" values + RFCTDU=RFCTDUR + RFCTSS=1.0_JPRB + IAERWND=2 +elseif (NAERWND == 3) THEN +! for NAERWND = 3, both SS and DU take 10-m wind + gust + RFCTDU=RFCTDUR + RFCTSS=RFCTSSR + IAERWND=2 +endif + +ZDEGRAD=180._JPRB/RPI +DO JL=1,NGPTOT + ZLON=GELAM(JL)*ZDEGRAD + ZLAT=ASIN(GEMU(JL))*ZDEGRAD + + zbnda= 30._JPRB+(36._JPRB -zlat)*14._JPRB/24._JPRB + zbndb= 30._JPRB+(36._JPRB -zlat)*40._JPRB/16._JPRB + zbndc= 38._JPRB+(zlon-124._JPRB)*12._JPRB/29._JPRB + zbndd= 32._JPRB-(zlon-243._JPRB)* 6._JPRB/21._JPRB + +!-- Eastern border Canada/USA + zbnde= 49._JPRB + if (zlon > 268._JPRB .and. zlon < 277._JPRB) then + zbnde= 49._JPRB-(zlon-268._JPRB)*7._JPRB/9._JPRB + elseif (zlon >= 277._JPRB .and. zlon < 285._JPRB) then + zbnde= 42._JPRB+(zlon-277._JPRB)*2._JPRB/8._JPRB + elseif (zlon >= 285._JPRB .and. zlon < 310._JPRB) then + zbnde= 44._JPRB+(zlon-285._JPRB)*3._JPRB/25._JPRB + endif + +!-- limits Britain + zlongb=-9999._JPRB + if (zlon > 354._JPRB .and. zlon < 360._JPRB) then + zlongb=zlon + elseif (zlon >= 0._JPRB .and. zlon < 3._JPRB) then + zlongb=zlon+360._JPRB + endif + zbndf= 47._JPRB+(zlongb-349._JPRB)*4.5_JPRB/14._JPRB + +!-- limits Ireland + zbndg= 61._JPRB-(zlon-349._JPRB)*7._JPRB/6._JPRB + zbndh= 45._JPRB+(zlon-349._JPRB)*9._JPRB/6._JPRB + +!-- Western border Brazil + if (zlat <= 4._JPRB .and. zlat > 2._JPRB) then + zbndi= 296._JPRB + elseif (zlat <= 2._JPRB .and. zlat > -4._JPRB) then + zbndi= 290._JPRB + elseif (zlat <= -4._JPRB .and. zlat > -7._JPRB) then + zbndi= 290._JPRB-(-4._JPRB-zlat)*4._JPRB/3._JPRB + elseif (zlat <= -7._JPRB .and. zlat > -11._JPRB) then + zbndi= 286._JPRB+(-7._JPRB-zlat)*4._JPRB/4._JPRB + endif + + if (zlat <= -11._JPRB .and. zlat > -18._JPRB) then + zbndj= 294._JPRB+(-11._JPRB-zlat)*8._JPRB/7._JPRB + elseif (zlat <= -18._JPRB .and. zlat > -27._JPRB) then + zbndj= 302._JPRB+(-18._JPRB-zlat)*4._JPRB/9._JPRB + elseif (zlat <= -27._JPRB .and. zlat > -30._JPRB) then + zbndj= 306._JPRB-(-27._JPRB-zlat)*3._JPRB/3._JPRB + elseif (zlat <= -30._JPRB .and. zlat >= -34._JPRB) then + zbndj= 303._JPRB+(-30._JPRB-zlat)*4._JPRB/4._JPRB + endif + +!-- Northern border India + if (zlon > 70._JPRB .and. zlon <= 90._JPRB) then + zbndk= 35._JPRB-(zlon-70._JPRB)*0.5_JPRB + endif + +!-- South border of Asian deserts + if (zlon > 90._JPRB .and. zlon <= 135._JPRB) then + zbndl= 25._JPRB+(zlon-90._JPRB)*15._JPRB/45._JPRB + endif + +!-- North limit of the Argentinian pampas + if (zlon > 285._JPRB .and. zlon <= 297._JPRB) then + zbndm= -42._JPRB+(zlon-285._JPRB)*6._JPRB/12._JPRB + endif + + iff=0 + +!-- North America +!----- Canada + if ( zlat >= zbnde .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=1 +!----- USA + elseif ( (zlat >= zbndd .and. zlat < zbnde ) & + & .and. (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=3 + endif +!-- Alaska + if ( (zlat < 72._JPRB .and. zlat > 52._JPRB) & + & .and. (zlon > 190._JPRB .and. zlon <= 219._JPRB) ) then + iff=2 + endif + +!-- Central America + if (zlat < zbndd .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=4 + endif + +!-- South America + if ( zlat < 12._JPRB .and. & + & (zlon > 190._JPRB .and. zlon < 330._JPRB) ) then + iff=5 + endif +!-- Brazil + if ( (zlat <= 4._JPRB .and. zlat > 2._JPRB) & + & .and. (zlon >= 296._JPRB .and. zlon <= 300._JPRB) ) then + iff=6 + endif + if ( (zlat <= 2._JPRB .and. zlat > -11._JPRB) & + & .and. (zlon >= zbndi .and. zlon < 330._JPRB) ) then + iff=6 + endif + if ( (zlat <= -11._JPRB .and. zlat >= -34._JPRB) & + & .and. (zlon >= zbndj .and. zlon < 330._JPRB) ) then + iff=6 + endif + +!-- Western Europe + if ( zlat > 36._JPRB .and. ( zlon >= 330._JPRB .or. zlon <= 30._JPRB) ) then + iff=10 + endif + +!----- Iceland + if ( (zlat < 67._JPRB .and. zlat > 63._JPRB) & + & .and. ( zlon > 335._JPRB .and. zlon < 353._JPRB) ) then + iff=7 + endif +!----- Britain + if ( (zlat < 63._JPRB .and. zlat > zbndf) & + & .and. ( zlon > 354._JPRB .or. zlon < 3._JPRB) ) then + iff=9 + endif +!----- Ireland + if ( (zlat < zbndg .and. zlat > zbndh) & + & .and. ( zlon > 349._JPRB .and. zlon < 355._JPRB) ) then + iff=8 + endif + + +!-- Russia to Urals + if ( zlon > 30._JPRB .and. zlon <= 70._JPRB ) then + if ( zlat > 51._JPRB ) then + iff=11 + elseif ( zlat > 36._JPRB ) then + iff=12 + endif + endif + +!-- Northern Sahara +! if ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & +! & .and. ( zlon >= 330._JPRB .or. zlon <= zbnda) ) then +! iff=13 +!-- Northern Sahara (West) + if ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon < 4._JPRB) ) then + iff=36 +!-- Northern Sahara (East) + elseif ( ( zlat <= 36._JPRB .and. zlat >= 21._JPRB) & + & .and. ( zlon >= 4._JPRB .or. zlon <= zbnda) ) then + iff=37 +!-- Southern Sahara (West) + elseif ( ( zlat < 21._JPRB .and. zlat >= 12._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon < 15._JPRB) ) then + iff=34 +!-- Southern Sahara (East) + elseif ( ( zlat < 21._JPRB .and. zlat >= 12._JPRB) & + & .and. ( zlon >= 15._JPRB .and. zlon <= zbnda) ) then + iff=35 +!-- Central Africa + elseif ( (zlat < 12._JPRB .and. zlat >= -12._JPRB) & + & .and. ( zlon >= 330._JPRB .or. zlon <= 60._JPRB) ) then + iff=14 +!-- Southern Africa + elseif ( zlat < -12._JPRB .and. zlat >= -60._JPRB & + & .and. ( zlon >= 330._JPRB .or. zlon <= 60._JPRB) ) then + iff=15 + endif + + +!-- Australasia + if (zlon > 70._JPRB .and. zlon <= 190._JPRB) then + iff=26 + +!-- Siberia + if (zlat <= 90._JPRB .and. zlat > 51._JPRB) then + iff=16 + +!-- Australasia +!---- Tropical Pacific Islands + elseif ( zlat > -10.5_JPRB) then + iff=27 +!---- Australia + elseif ( zlat <= -10.5_JPRB .and. zlat >= -60._JPRB) then + iff=28 + endif + endif + +!-- Asian deserts + if ((zlon > 90._JPRB .and. zlon <= 135._JPRB) & + & .and. (zlat <= 51._JPRB .and. zlat > zbndl)) then + iff=17 + endif + + + +!-- Saudi Arabia + if ((zlat <= 36._JPRB .and. zlat >= 12._JPRB) & + & .and.( zlon > zbnda .and. zlon < zbndb) ) then + iff=18 + endif +!-- Irak, Iran, Pakistan + if ((zlat <= 36._JPRB .and. zlat >= 20._JPRB) & + & .and.( zlon > zbndb .and. zlon < 70._JPRB) ) then + iff=19 + endif + + + +!-- Central Asia and India + if ( zlon > 70._JPRB .and. zlon <= 90._JPRB) then +!----- Central Asia: Taklamakan + if (zlat <= 43._JPRB .and. zlat >= zbndk) then + iff=20 +!----- India + elseif (zlat <= zbndk .and. zlat > 7._JPRB) then + iff=21 + endif + endif +!-- other Gobi(s) in South Mongolia and Central China + if ( zlat <= 49._JPRB .and. zlat > 35._JPRB) then + if (zlon > 90._JPRB .and. zlon <= 110._JPRB) then + iff=22 + elseif (zlon > 110._JPRB .and. zlon <= 125._JPRB) then + iff=23 + endif + endif + +!-- South China + if ( (zlon > 90._JPRB .and. zlon <= 135._JPRB) .and. & + & (zlat <= zbndl .and. zlat > 7._JPRB) ) then + iff=24 + endif + + + +!-- Japan and S.Korea + if ( (zlon > 124._JPRB .and. zlon < 153._JPRB) & + & .and. (zlat > 24._JPRB .and. zlat < zbndc) ) then + iff=25 + endif + +!-- Greenland + if (zlat > 50._JPRB) then + zinclat=(90._JPRB-zlat)/40._JPRB*45._JPRB + zlonw=270._JPRB +zinclat + zlone=360._JPRB -zinclat + if ( zlon > zlonw .and. zlon < zlone ) then + iff=29 + endif + endif + +!-- Antarctica + if (zlat < -60._JPRB) then + iff=30 + endif + +!-- awaiting a proper recoding, new areas are set between iff=31 and 35 + + if ( zlon > 285._JPRB .and. zlon < 295._JPRB) then +!- Atacama desert and Salar de Uyuni + if ( zlat < -16._JPRB .and. zlat > -28._JPRB) then + iff=31 + endif +!- Salar de Pipanaco and other small ones + if ( zlat <= -28._JPRB .and. zlat > zbndm) then + iff=32 + endif + endif +!- Argentianian pampas + if ( (zlon > 285._JPRB .and. zlon < 297._JPRB) & + & .and. zlat <= zbndm ) then + iff=33 + endif + +!-- if area is recognized + IF (IFF /= 0) THEN +!-- either use the default value + IF (RDDUAER(iff) == 0._JPRB) THEN + RDDUAER(iff) = ZDDUAER(iff,IAERWND) + ELSE +!-- or what is read in via the namelist + ENDIF + ELSE + WRITE(NULOUT,FMT='(''su_aerw: Unassigned grid for Lat,Lon='',2F8.2)') ZLAT,ZLON + ENDIF +ENDDO + +! ------------------------------------------------------------------ + +!* 4. DEFINE VALUES OF PROGNOSTIC AEROSOL CONFIGURATION +! ------------------------------------------------- + +IF (.NOT.LE4ALB) THEN + NDDUST=2 +ENDIF + +WRITE(UNIT=NULOUT,FMT='(''NAERO='',I2,'' NACTAERO='',I2)') NAERO,NACTAERO + +IF (NACTAERO > 0) THEN + + WRITE(UNIT=NULOUT,FMT='(''NAERO='',I2,'' NACTAERO='',I2,3X,8I3)') NAERO,NACTAERO,(NTYPAER(JAER),JAER=1,8) + +! define a composite index for each bin of each different aerosol type to be used +! in source, sedimentation and deposition routines + + ICAER=0 + DO JAER=1,NMAXTAER + IF (NTYPAER(JAER) /= 0) THEN + NTAER=NTAER+1 + ITAER=NTYPAER(JAER) + DO IAER=1,ITAER + ICAER=ICAER+1 + NINDAER(ICAER)=JAER*10+IAER + NTYP(ICAER) =JAER + NBIN(ICAER) =IAER + ENDDO + ENDIF + ENDDO + +!-- if volcanic aerosols, define the model coordinates + +! IF (NTYPAER(8) /= 0) THEN +! RGEMUV=(RLATVOL+90._JPRB)*RPI/180._JPRB +! RGELAV=RLONVOL*RPI/180._JPRB +! RCLONV=COS(RGELAV) +! RSLONV=SIN(RGELAV) +! DO J=1,NGPTOT-1 +! IF (RGELAV > GELAM(J) .AND. RGELAV <= GELAM(J+1) .AND. & +! & RGEMUV < RMU(JL) .AND. RGEMUV >= RMU(JL+1) ) THEN +! RDGMUV=ABS( RMU(J+1) - RMU(J)) +! RDGLAV=ABS( GELAM(J+1)-GELAM(J) ) +! RDSLONV=ABS( SIN(GELAM(JL+1))-SIN(GELAM(JL)) ) +! RDCLONV=ABS( COS(GELAM(JL+1))-COS(GELAM(JL)) ) +! ENDIF +! ENDDO +! ENDIF + +! ------------------------------------------------------------------ + +!* 5. INITIALIZE PROGNOSTIC AEROSOL PHYSICAL AND OPTICAL PARAMETERS +! ------------------------------------------------------------- + + CALL SU_AERP + CALL SU_AEROP + + DO JAER=1,NMAXTAER + IF (LAEROPT(JAER)) THEN + LAERRAD=.TRUE. + ENDIF + ENDDO + +! ---------------------------------------------------------------- + +!* 6. PRINT FINAL VALUES. +! ------------------- + + WRITE(UNIT=NULOUT,FMT='('' LEPAERO = '',L5 & + & ,'' NTAER = '',I2 ,'' NDDUST = '',I1,'' NSSALT = '',I1,/& + & ,'' NTYPAER = '',8I3,/ & + & ,'' NINIDAY = '',I8 & + & ,'' NTYP = '',15I3,/& + & ,'' NBIN = '',15I3 & + & )')& + & LEPAERO,NTAER,NDDUST,NSSALT,(NTYPAER(JAER),JAER=1,8), & + & NINIDAY, (NTYP(JAER),JAER=1,15), (NBIN(JAER),JAER=1,15) + + WRITE(UNIT=NULOUT,FMT='('' NAERO = '',I2,'' NACTAERO = '',I2,& + &'' NXT3DAER = '',I2,'' NAERCONF = '',I3)') & + & NAERO,NACTAERO,NXT3DAER,NAERCONF + + WRITE(UNIT=NULOUT,FMT='('' LAERNGAT = '',L1 & + & ,'' LAERDRYDP= '',L1 & + & ,'' LAERSEDIM= '',L1 & + & ,'' LAERGTOP = '',L1 & + & ,'' LAERLISI = '',L1 & + & ,'' LAERHYGRO= '',L1 & + & ,'' LAERSCAV = '',L1 & + & ,'' LAER6SDIA= '',L1 & + & ,'' LAERCLIMZ= '',L1 & + & ,'' LAERCLIMG= '',L1 & + & ,'' LAERCLIST= '',L1 & + & )')& + & LAERNGAT, LAERDRYDP,LAERSEDIM,LAERGTOP,LAERHYGRO,LAERSCAV,LAER6SDIA, & + & LAERCLIMZ,LAERCLIMG,LAERCLIST + + WRITE(UNIT=NULOUT,FMT='('' RSSFLX= '',9E10.3)') RSSFLX + WRITE(UNIT=NULOUT,FMT='('' NAERWND= '',I1,'' RFCTSS= '',F4.1,'' RFCTDU= '',F4.1,2X,A45)') & + & NAERWND, RFCTSS, RFCTDU, CLAERWND(NAERWND) + WRITE(UNIT=NULOUT,FMT='('' NAERDUT= '',I2,'' RAERDUB= '',E10.3)') NAERDUT, RAERDUB + WRITE(UNIT=NULOUT,FMT='('' RDDUAER= '',25F6.3)') (RDDUAER(J),J= 1,25) + WRITE(UNIT=NULOUT,FMT='('' RDDUAER= '',25F6.3)') (RDDUAER(J),J=26,50) + WRITE(UNIT=NULOUT,FMT='('' LUVINDX= '',L3,'' LAERUVP= '',L3)') LUVINDX, LAERUVP + + WRITE(UNIT=NULOUT,FMT='('' Interaction prognostic aerosols and radiation: LAERRAD= '',L1,& + &'' LAEROPT= '',8L3)') LAERRAD,LAEROPT + WRITE(UNIT=NULOUT,FMT='('' Interaction prognostic aerosols and eff.radius of liq.wat.clouds: LAERCCN= '',& + &L1)') LAERCCN + + IF (NTYPAER(8) /= 0) THEN + WRITE(UNIT=NULOUT,FMT='('' RLATVOL= '',F5.2 & + & ,'' RLONVOL= '',F6.2,'' RGEMUV= '',F6.4,'' RGELAV= '',F6.4 & + & ,'' RCLONV = '',F6.4,'' RSLONV= '',F6.4,'' RDGMUV= '',F6.4 & + & ,'' RDGLAV = '',F6.4,'' RDCLONV= '',F6.4,'' RDSLONV= '',F6.4 & + & )')& + & RLATVOL,RLONVOL,RGEMUV,RGELAV,RCLONV,RSLONV,RDGMUV,RDGLAV,RDCLONV,RDSLONV + ENDIF +ENDIF + +! ---------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('SU_AERW',1,ZHOOK_HANDLE) +END SUBROUTINE SU_AERW + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..790ade444549cbd6f297d9e878d87c3c1c4bb9ac --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/ARCH/arch-ecconf.fcm.tmpl @@ -0,0 +1,40 @@ +# EC-EARTH3 ec-conf-based configuration +# NCDF_INC netcdf include file +# NCDF_LIB netcdf library +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L if you have libraries in a +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC additional include files for the compiler, e.g. -I +# USER_LIB additional libraries to pass to the linker, e.g. -l + +%OASIS_INC_DIR $(addsuffix /oasis3/ecconf/build/lib/psmile.MPI1,[[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]) +%OASIS_LIB_DIR $(addsuffix /oasis3/ecconf/lib,[[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]) +%OASIS_LIBS psmile.MPI1 mpp_io + +%NETCDF_INC_DIR $(addsuffix /,[[[PLT:ACTIVE:NETCDF_BASE_DIR]]])[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]] +%NETCDF_LIB_DIR $(addsuffix /,[[[PLT:ACTIVE:NETCDF_BASE_DIR]]])[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]] +%NETCDF_LIBS [[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]] + +%MPI_INC_DIR $(addsuffix /,[[[PLT:ACTIVE:MPI_BASE_DIR]]])[[[PLT:ACTIVE:MPI_INC_SUBDIR]]] +%MPI_LIB_DIR $(addsuffix /,[[[PLT:ACTIVE:MPI_BASE_DIR]]])[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]] +%MPI_LIBS [[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]] + +%USER_INC $(addprefix -I,%OASIS_INC_DIR %NETCDF_INC_DIR %MPI_INC_DIR) +%USER_LIB $(addprefix -L,%OASIS_LIB_DIR %NETCDF_LIB_DIR %MPI_LIB_DIR) \ + $(addprefix -l,%OASIS_LIBS %NETCDF_LIBS %MPI_LIBS) + +%MK [[[PLT:ACTIVE:MAKE]]] +%FC [[[PLT:ACTIVE:FC]]] +%FCFLAGS [[[PLT:ACTIVE:FFLAGS]]] [[[PLT:ACTIVE:NEMO_ADD_FFLAGS]]] +%FFLAGS %FCFLAGS +%FPPFLAGS [[[PLT:ACTIVE:CPPFLAGS]]] +%LD [[[PLT:ACTIVE:LD]]] +%LDFLAGS [[[PLT:ACTIVE:LDFLAGS]]] [[[PLT:ACTIVE:NEMO_ADD_LDFLAGS]]] +%AR [[[PLT:ACTIVE:AR]]] +%ARFLAGS [[[PLT:ACTIVE:ARFLAGS]]] diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/CONFIG/makenemo b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/CONFIG/makenemo new file mode 100755 index 0000000000000000000000000000000000000000..91259ee0ff0768e72be96f96ebd5a4aa50cc88ec --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/CONFIG/makenemo @@ -0,0 +1,314 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# makenemo +# =============== +# +# -------------------------- +# Compile NEMO +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ makenemo +# +# +# DESCRIPTION +# =========== +# +# +# This script aims : +# +# - to choose MYCONFIG +# - to choose compiler options +# - to create the CONFIG/MYCONFIG/WORK directory +# - to compile this configuration +# +# Variables used : +# +# From user input +# +# - NEW_CONF : configuration to be created +# - REF_CONF : reference configuration to build the new one +# - CMP_NAM : compiler name +# - NBR_PRC : number of processes used to compile +# - NEM_SUBDIR : NEMO subdirectory used (specified) +# +# Locally defined : +# +# - TAB : NEMO subdirectory used (read) +# - MAIN_DIR : self explaining +# - CONFIG_DIR : " " " +# - MODELES_DIR : " " " +# - TOOLS_DIR : " " " +# - NEMO_DIR : " " " +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./makenemo -m ifort_osx - j3 -n ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: makenemo 2731 2011-04-08 12:05:35Z rblod $ +# +# +# +# * creation +# +#- + +#- Local variables --- +b_n=$(basename ${0}) +OPTIND=1 +MAIN_DIR=$(cd $(dirname "$0"); pwd) +MAIN_DIR=${MAIN_DIR%/SETTE*} +MAIN_DIR=${MAIN_DIR%/TOOLS*} +MAIN_DIR=${MAIN_DIR%/CONFIG*} +export MAIN_DIR +# +export CONFIG_DIR=${MAIN_DIR}/CONFIG +export TOOLS_DIR=${MAIN_DIR}/TOOLS +export COMPIL_DIR=${MAIN_DIR}/TOOLS/COMPILE +export NEMO_DIR=${MAIN_DIR}/NEMO +export AGRIFUSE=10 + +declare -a TAB +#- +#- FCM and functions location --- +export PATH=${MAIN_DIR}/EXTERNAL/fcm/bin:$PATH + +#- +#- Choice of the options --- +x_d=""; +x_n=""; +x_r=""; +x_m=""; +x_t=""; +x_c=""; +x_j=1; +while getopts :hd:n:r:m:j:t: V +do + case $V in + (h) echo "Usage : "${b_n} \ + " [-h] [-n name] [-m arch] [-d "dir1 dir2"] [-r conf] [-j No]"; + echo " -h : help"; + echo " -n name : config name, [-n help] to list existing configurations"; + echo " -m arch : choose compiler, [-m help] to list existing compilers"; + echo " -d dir : choose NEMO sub-directories"; + echo " -r conf : choose reference configuration"; + echo " -j No : number of processes used to compile (0=nocompilation)"; + echo " -t dir : temporary directory for compilation" + echo ""; + echo "Example to install a new configuration MY_CONFIG"; + echo "with OPA_SRC and LIM_SRC_2 "; + echo "makenemo -n MY_CONFIG -d \"OPA_SRC LIM_SRC_2\""; + echo ""; + echo "Available configurations :"; cat ${COMPIL_DIR}/cfg.txt; + echo ""; + echo "Example to remove bad configuration "; + echo "./makenemo -n MY_CONFIG clean_config"; + echo ""; + echo "Example to clean "; + echo "./makenemo clean"; + echo ""; + echo "Example to add and remove keys"; + echo "./makenemo add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" "; + echo ""; + echo "Example to add and remove keys for a new configuration, and do not compile"; + echo "./makenemo -n MY_CONFIG -j0 add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" "; + echo ""; + . ${COMPIL_DIR}/Flist_archfile.sh ; + echo ""; + echo "Default : previous configuration and compiler"; + exit 0;; + (d) x_d=${OPTARG};; + (n) x_n=${OPTARG};; + (r) x_r=${OPTARG};; + (m) x_m=${OPTARG};; + (j) x_j=${OPTARG};; + (t) x_t=${OPTARG};; + (:) echo ${b_n}" : -"${OPTARG}" option : missing value" 1>&2; + exit 2;; + (\?) echo ${b_n}" : -"${OPTARG}" option : not supported" 1>&2; + exit 2;; + esac +done +shift $(($OPTIND-1)); + +while [ ${#1} -gt 0 ] # Get clean, clean_config options +do + case "$1" in + clean) + x_c="--$1" + ;; + clean_config) + . ${COMPIL_DIR}/Fclean_config.sh + exit + ;; + add_key) + list_add_key=$2 + export ${list_add_key} + shift + ;; + del_key) + list_del_key=$2 + export ${list_del_key} + shift + ;; + *) + echo " \"$1\" BAD OPTION" + exit + ;; + + esac + shift +done + + +#- +#- Go to NEMOGCM/config directory --- +cd ${CONFIG_DIR} + +#- +#- Initialisation from input --- +export NEW_CONF=${x_n} +NBR_PRC=${x_j} +CMP_NAM=${x_m} +NEM_SUBDIR=${x_d} +REF_CONF=${x_r} +NEMO_TDIR=${x_t:-$NEMO_TDIR} +export NEMO_TDIR=${NEMO_TDIR:-$CONFIG_DIR} + +#- Check if the tool or the compiler exist or list it +if [ "${NEW_CONF}" == help ] ; then + echo "Available configurations :" + cat ${COMPIL_DIR}/cfg.txt + exit +fi +[ "${CMP_NAM}" == help ] && . ${COMPIL_DIR}/Flist_archfile.sh && exit + +#- When used for the first time, choose a compiler --- +. ${COMPIL_DIR}/Fcheck_archfile.sh arch_nemo.fcm ${CMP_NAM} || exit + +#- +#- Choose a default configuration if needed --- +#- ORCA2_LIM or last one used --- +. ${COMPIL_DIR}/Fcheck_config.sh cfg.txt ${NEW_CONF} || exit + + +if [ ${#NEW_CONF} -eq 0 ] ; then + if [ ${#NEM_SUBDIR} -eq 0 -a ${#REF_CONF} -eq 0 ]; then + echo "You are installing a new configuration" + ind=0 + . ${COMPIL_DIR}/Fread_dir.sh OPA_SRC YES + . ${COMPIL_DIR}/Fread_dir.sh LIM_SRC_2 YES + . ${COMPIL_DIR}/Fread_dir.sh LIM_SRC_3 NO + . ${COMPIL_DIR}/Fread_dir.sh TOP_SRC NO + . ${COMPIL_DIR}/Fread_dir.sh NST_SRC YES + . ${COMPIL_DIR}/Fread_dir.sh OFF_SRC NO + REF_CONF=ORCA2_LIM + elif [ ${#NEM_SUBDIR} -gt 0 ] && [ ${#REF_CONF} -eq 0 ]; then + echo "You are installing a new configuration" + TAB=( ${NEM_SUBDIR} ) + REF_CONF=ORCA2_LIM + elif [ ${#NEM_SUBDIR} -eq 0 ] && [ ${#REF_CONF} -gt 0 ]; then + echo "You are installing a new configuration based on ${REF_CONF}" + . ${COMPIL_DIR}/Fcopy_dir.sh ${REF_CONF} + fi + NEW_CONF=${x_n} + . ${COMPIL_DIR}/Fmake_config.sh ${NEW_CONF} ${REF_CONF} +else + sed -e "/${NEW_CONF} /d" ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp + \mv ${COMPIL_DIR}/cfg.tmp ${COMPIL_DIR}/cfg.txt +fi + +#- +#- Save new configuration and directories names --- +echo ${NEW_CONF} ${TAB[*]} >> ${COMPIL_DIR}/cfg.txt + +#- +#- Create the WORK --- +#- Clean links and librairies --- +#- Creating the good links, at first on OPA_SRC --- +. ${COMPIL_DIR}/Fmake_WORK.sh ${NEW_CONF} ${TAB[*]} || exit + +. ${COMPIL_DIR}/Fmake_bld.sh ${CONFIG_DIR} ${NEW_CONF} ${NEMO_TDIR} || exit + +#- At this stage new configuration has been added, +#- We add or remove keys +if [ ${#list_add_key} -ne 0 ] ; then + . ${COMPIL_DIR}/Fadd_keys.sh ${NEW_CONF} add_key ${list_add_key} +fi + +if [ ${#list_del_key} -ne 0 ] ; then + . ${COMPIL_DIR}/Fdel_keys.sh ${NEW_CONF} del_key ${list_del_key} +fi + +#- At this stage the configuration has beeen chosen +#- We coose the default light file +export USEBLD=bldxioxag.cfg + +#- We look after agrif +grep key_agrif ${COMPIL_DIR}/cpp.fcm && export AGRIFUSE=1 && export USEBLD=${USEBLD/xag/} +. ${COMPIL_DIR}/Fprep_agrif.sh ${NEW_CONF} ${NEMO_TDIR} || exit + +#- and test whether we need to build the ioserver +grep key_iomput ${COMPIL_DIR}/cpp.fcm && export USEBLD=${USEBLD/xio/} + +#- +#_ END OF CONFIGURATION PHASE +#_ + +#- +#- Compile --- + +if [ "${NBR_PRC}" -gt 0 ]; then + cd ${NEMO_TDIR}/${NEW_CONF} || cd - + +#if AGRIF we do a first preprocessing + if [ ${#x_c} -eq 0 ]; then + [ "$AGRIFUSE" == 1 ] && fcm build --ignore-lock -s 2 ${COMPIL_DIR}/$USEBLD + [ "$AGRIFUSE" == 1 ] && rm -rf ${NEMO_TDIR}/${NEW_CONF}/BLD/* + fi + fcm build ${x_c} --ignore-lock -v 1 -j ${NBR_PRC} ${COMPIL_DIR}/$USEBLD || cd - + [ -f ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/nemo.exe ] && ln -sf ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/nemo.exe ${CONFIG_DIR}/${NEW_CONF}/EXP00/opa + [ -f ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/server.exe ] && ln -sf ${NEMO_TDIR}/${NEW_CONF}/BLD/bin/server.exe ${CONFIG_DIR}/${NEW_CONF}/EXP00/server.exe + +#add remove for clean option + if [ ${#x_c} -ne 0 ]; then + rm -rf ${NEMO_TDIR}/${NEW_CONF}/WORK + rm -rf ${NEMO_TDIR}/${NEW_CONF}/BLD + rm -rf ${NEMO_TDIR}/${NEW_CONF}/EXP00/opa + rm -rf ${NEMO_TDIR}/${NEW_CONF}/EXP00/server.exe + echo "cleaning ${NEW_CONF} WORK, BLD" + fi + +fi + +#- Come back to original directory --- +cd - + +#- +#- Unset variables +${COMPIL_DIR}/Fclean_var.sh + + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh new file mode 100755 index 0000000000000000000000000000000000000000..c552c7b07468512ad7eb5a04598f6ed82c5e2b72 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fadd_keys.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fadd_keys : add keys in cpp.fcm file +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fadd_keys.sh +# ============ +# +# -------------------- +# Add compilation keys +# -------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fadd_keys.sh CONFIG_NAME add_key "LIST_KEYS" +# +# +# DESCRIPTION +# =========== +# +# +# Script to add a set off key when compiling a configuration. +# The list off key to be added has to be enclosed with " ". +# A 'sed' is performed to modify the CONFIG_NAME/cpp.fcm file to +# add the new key(s). +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fadd_keys.sh ORCA2_LIM add_key "key_mpp_mpi key_nproci=1 key_nprocj=10" +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fadd_keys.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + echo "Adding keys in : ${NEW_CONF}" + for i in ${list_add_key} ; do + if [ "$(echo ${i} | grep -c key_nproc )" -ne 0 ] ; then + sed -e "s/key_nproc[ij]=.[0-9]* //" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo " " + sed -e "s/$/ ${i}/" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + elif [ "$(cat ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm | grep -c "$i" )" -ne 0 ] ; then + echo "key $i already present in cpp_${NEW_CONF}.fcm" + else + sed -e "s/$/ ${i}/" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo "added key $i in ${NEW_CONF}" + fi + done + + unset -v list_add_key + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh new file mode 100755 index 0000000000000000000000000000000000000000..c9a1e5080f3bf316a62be8a04b75546b267bee27 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_archfile.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================== +# Fcheck_archfile.sh +# ================== +# +# -------------------------- +# Check the compilation file +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_archfile.sh +# +# +# DESCRIPTION +# =========== +# +# +# Check the choice of the compiler. +# Three cases : +# +# - There was a previous choice +# - A new one has be specified, we use this one +# - No information, exit +# +# We use TOOLS/COMPILE/arch.fcm to see if something was chosen. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_archfile.sh ARCHFILE COMPILER +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_archfile.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +if [ ${#2} -eq 0 ]; then + if [ ! -f ${COMPIL_DIR}/$1 ]; then + echo "Warning !!!" + echo "NO compiler chosen" + echo "Try makenemo -h for help" + echo "EXITING..." + exit 1 + fi +else + ln -sf ${MAIN_DIR}/ARCH/arch-${2}.fcm ${COMPIL_DIR}/$1 +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..8a4524f02a9add48a0efac7924efebe206210632 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_config.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +###################################################### +# Author : Rachid Benshila for NEMO +# Contact : rblod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fcheck_config : config checking +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fcheck_config.sh +# ================ +# +# -------------------------- +# Check the configuration +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_config.sh FILENAME CONFNAME +# +# +# DESCRIPTION +# =========== +# +# +# Check the choice of the configuration: +# +# - Two cases +# - One is explicitely set +# - Nothing set, use the previous in use +# +# We use TOOLS/COMPILE/cfg.txt to check if the onfiguration exists. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_config.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_config.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +declare -a ZTAB +if [ ${#2} -eq 0 ]; then + tail -1 ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/cfg.tmp + read -a ZTAB < ${COMPIL_DIR}/cfg.tmp + NEW_CONF=${ZTAB[0]} ; TAB=( ${ZTAB[@]:1} ) + \rm ${COMPIL_DIR}/cfg.tmp + echo "Warning !!!" + echo "No configuration specified" + echo "Use makenemo -n MYCONFIG" + echo "or makenemo -h for help" + echo "Using defaut configuration : ${NEW_CONF}" +fi +if [ "$1" == cfg.txt ]; then + cat ${COMPIL_DIR}/$1 | grep "${NEW_CONF} " > ${COMPIL_DIR}/cfg.tmp + read -a ZTAB < ${COMPIL_DIR}/cfg.tmp + NEW_CONF=${ZTAB[0]} ; TAB=( ${ZTAB[@]:1} ) + \rm ${COMPIL_DIR}/cfg.tmp +fi + +unset -v ZTAB diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh new file mode 100755 index 0000000000000000000000000000000000000000..335ac0df272da243df09d4563a7c4c11a6f87d0d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcheck_script.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fcheck_script.sh +# ================ +# +# -------------------------- +# Check +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcheck_script.sh +# +# +# DESCRIPTION +# =========== +# +# +# Check if utilities are in the path, typically fcm. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcheck_script.sh fcm +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcheck_script.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +myscript=`which $1` +if [ ${#myscript} -eq 0 ]; then +echo "WARNING !!!" +echo "$1 has to be installed first" +echo "Exiting......................" +exit 1 +fi + +unset -v myscript diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..be9f3beda38e266feca0612f4752dfa573038616 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_config.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fclean_config : config removing +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fclean_config.sh +# ================ +# +# ------------------------ +# Remove the configuration +# ------------------------ +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fclean_config.sh CONFNAME +# +# +# DESCRIPTION +# =========== +# +# +# Remove the configuration: +# +# - remove CONFIG_NAME/WORK +# - remove CONFIG_NAME/BLD +# - remove CONFIG_NAME from TOOLS/TOOLS/COMPILE/cfg.txt +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fclean_config.sh ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fclean_config.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + NEW_CONF=${x_n} + echo "Are you sure that you want to remove this directory ? [y/n] " + read answer + answer=`echo $answer | sed 's/^[y].*$/y/'` + if [ -z "$answer" -o "x$answer" = "xy" ]; then + # testing if configuration exists + if [ "$(cat ${COMPIL_DIR}/cfg.txt | grep "${NEW_CONF} ")" == "" ] ; then + echo "The configuration ${NEW_CONF} does not exist in file cfg.txt" + echo "No removing configuration" + echo " " + else + rm -rf ${CONFIG_DIR}/${NEW_CONF} + sed -e "/${NEW_CONF} /d" ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp + mv ${COMPIL_DIR}/cfg.tmp ${COMPIL_DIR}/cfg.txt + echo "${NEW_CONF} configuration REMOVED" + fi + else + echo " " + echo "nothing to remove" + fi + + unset -v answer diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh new file mode 100755 index 0000000000000000000000000000000000000000..2ff65bd24fa37d39efebb7b8c91dad898608d0ea --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fclean_var.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============= +# Fclean_var.sh +# ============= +# +# ---------------------------- +# Clean environement variables +# ---------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fclean_var.sh +# +# +# DESCRIPTION +# =========== +# +# +# Clean environement variables +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fclean_var.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fclean_var.sh 2384 2010-11-15 03:20:07Z rblod $ +# +# +# +# * creation +# +#- +#- Unset variables + +unset -v NSTOP +unset -v TAB +unset -v NEW_CONF +unset -v REF_CONF +unset -v CMP_NAM +unset -v NBR_PRC +unset -v NEM_SUBDIR +unset -v MAIN_DIR +unset -v CONFIG_DIR +unset -v TOOLS_DIR +unset -v COMPIL_DIR +unset -v NEMO_DIR +unset -v USEBLD diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh new file mode 100755 index 0000000000000000000000000000000000000000..f4c57c8336785ba5d05e88baceb92beec282f659 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fcopy_dir.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fcopy_dir.sh +# ============ +# +# -------------------------- +# Copy a reference directory +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fcopy_dir.sh +# +# +# DESCRIPTION +# =========== +# +# +# When a refenrence configuration is set, +# Copy NEMO sub-directories needed (OPA_SRC, TOP_SRC ...) +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fcopy_dir.sh ORCA2_LIM +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fcopy_dir.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +declare -a ZTAB +grep "$1 " ${COMPIL_DIR}/cfg.txt > ${COMPIL_DIR}/cfg.tmp +read -a ZTAB < ${COMPIL_DIR}/cfg.tmp +TAB=( ${ZTAB[@]:1} ) +\rm ${COMPIL_DIR}/cfg.tmp + +unset -v ZTAB diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh new file mode 100755 index 0000000000000000000000000000000000000000..fe29c6844fd0b4fc19549074714228240a4d0c6b --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fdel_keys.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +###################################################### +# Author : Simona Flavoni for NEMO +# Contact : sflod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fdel_keys : del keys in cpp.fcm file +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================ +# Fdel_keys.sh +# ================ +# +# -------------------------- +# Add compilation keys +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fdel_keys.sh CONFIG_NAME del_key "LIST_KEYS" +# +# +# DESCRIPTION +# =========== +# +# +# Add cpp keys when compiling a configuration, key list has to be enclosed with " ". +# We perform a 'sed' on the CONFIG_NAME/CPP.fcm file, contianing the list of keys. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fdel_keys.sh CONFIG_NAME del_key "key_agrif" +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fdel_keys.sh 2158 2010-10-20 17:30:03Z sflod $ +# +# +# +# * creation +# +#- + echo "Removing keys in : ${NEW_CONF}" + for i in ${list_del_key} ; do + if [ "$(echo ${i} | grep -c key_nproc )" -ne 0 ] ; then + sed -e "s/key_nproc[ij]=.* //" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo " " + elif [ "$(cat ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm | grep -c "$i" )" -ne 0 ] ; then + sed -e "s/${i}//" ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm > ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp + mv ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm.tmp ${CONFIG_DIR}/${NEW_CONF}/cpp_${NEW_CONF}.fcm + echo "deleted key $i in ${NEW_CONF}" + fi + done + + unset -v list_del_key diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh new file mode 100755 index 0000000000000000000000000000000000000000..a9f9724c8e992a6d70501707b0f4e85edc050e18 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fgo_to_TOOLS.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# Fgo_to_tools.sh +# =============== +# +# -------------------------- +# Go to the TOOLS directory +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fgo_to_tools.sh +# +# +# DESCRIPTION +# =========== +# +# +# Go to the TOOLS directory +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fgo_to_tools.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fgo_to_TOOLS.sh 2263 2010-10-14 10:13:18Z rblod $ +# +# +# +# * creation +# +#- + +cd ${MAIN_DIR}/TOOLS diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh new file mode 100755 index 0000000000000000000000000000000000000000..06764d982b93fd5c9133ea8eeec5e4f2feda6b54 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Flist_archfile.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ================== +# Flist_archfile.sh +# ================== +# +# -------------------------- +# Check the compilation file +# -------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Flist_archfile.sh +# +# +# DESCRIPTION +# =========== +# +# +# List arch file available. +# The first line of each file in NEMO/ARCH directory is echoed. +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Flist_archfile.sh +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Flist_archfile.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +echo "Available compilers for -m option :" +for file in `ls ${MAIN_DIR}/ARCH` +do +zvar1=${file#arch-} +zvar2=$(head -1 ${MAIN_DIR}/ARCH/$file) +#echo "${zvar1%.fcm} : ${zvar2#\#}" +printf "%-20s %s %-s\n" "${zvar1%.fcm}" : "${zvar2#\#}" +done diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh new file mode 100755 index 0000000000000000000000000000000000000000..f2c9d149cfdf73255b4a7d3e923fa3c8066b33ba --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_WORK.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +###################################################### +# Author : Rachid Benshila for NEMO +# Contact : rblod@locean-ipsl.upmc.fr +# +# Some functions called from makenemo +# Fmake_WORK : create links in the WORK +###################################################### +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============= +# Fmake_WORK.sh +# ============= +# +# ----------------------- +# Make the WORK directory +# ----------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_WORK.sh +# +# +# DESCRIPTION +# =========== +# +# +# Make the WORK directory: +# +# - Create lin in NEW_CONF/WORK +# - Use specified sub-directories previously +# - OPA has to be done first !!! +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_WORK.sh ORCA2_LIM OPA_SRC LIM_SRC_2 +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_WORK.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +declare ZCONF=$1 ; shift +ZTAB=( $@ ) +declare i=0 ; declare NDIR=${#ZTAB[@]} + +echo "Creating ${ZCONF}/WORK = ${ZTAB[*]} for ${ZCONF}" +echo "" + +[ ! -d ${ZCONF}/MY_SRC ] && \mkdir ${ZCONF}/MY_SRC +[ -d ${ZCONF}/WORK ] || \mkdir ${ZCONF}/WORK + +\rm -f ../${1}/WORK/* + +while [ $i -lt $NDIR ] +do + [ "${ZTAB[i]}" = "OPA_SRC" ] && ln -sf ${NEMO_DIR}/OPA_SRC/*.[Ffh]90 ${ZCONF}/WORK + [ "${ZTAB[i]}" = "OPA_SRC" ] && ln -sf ${NEMO_DIR}/OPA_SRC/*/*.[Ffh]90 ${ZCONF}/WORK && break + let i=$i+1 +done + +i=0 +while [ $i -lt $NDIR ] +do + if [ "${ZTAB[i]}" != "OPA_SRC" ]; then + ln -sf ${NEMO_DIR}/${ZTAB[i]}/*.[Ffh]90 ${ZCONF}/WORK + ln -sf ${NEMO_DIR}/${ZTAB[i]}/*/*.[Ffh]90 ${ZCONF}/WORK 2>/dev/null + fi + let i=$i+1 +done + +for i in `(cd ${ZCONF}/MY_SRC ; ls *.[Ffh]90 2>/dev/null ) ` + do + [ -f ${ZCONF}/MY_SRC/$i ] && ln -sf $PWD/${ZCONF}/MY_SRC/${i} ${ZCONF}/WORK/. + done + +unset -v ZCONF +unset -v ZTAB +unset -v i +unset -v NDIR + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh new file mode 100755 index 0000000000000000000000000000000000000000..951961499535f93649bec3165ee4081ac5644b8d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_bld.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fmake_bld.sh +# ============ +# +# -------------------- +# Make build directory +# -------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_bld.sh +# +# +# DESCRIPTION +# =========== +# +# +# Under CONFIG_NAME : +# - Make the build directory +# - Create repositories needed : +# - BLD for compilation +# +# A tmpdir can be specified for memory issues. +# +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_bld.sh NEMOGCM/CONFIG GYRE /usr/tmp +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_bld.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +[ ! -d ${3}/${2} ] && \mkdir ${3}/${2} +[ ! -d ${3}/${2}/BLD ] && \mkdir ${3}/${2}/BLD +[ ! -d ${1}/${2}/BLD ] && ln -sf ${3}/${2}/BLD ${1}/${2}/BLD +[ -f ${1}/${NEW_CONF}/cpp_${NEW_CONF}.fcm ] && ln -sf ${1}/${NEW_CONF}/cpp_${NEW_CONF}.fcm ${COMPIL_DIR}/cpp.fcm +rm -f ${1}/${NEW_CONF}/BLD/fcm.bld.lock diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..604cd62077ac81063b6133e89afa95dbe0d970d2 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fmake_config.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# =============== +# Fmake_config.sh +# =============== +# +# --------------- +# Make the config +# --------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fmake_config.sh +# +# +# DESCRIPTION +# =========== +# +# +# - Make the config directory +# - Create repositories needed : +# +# - EXP00 for namelist +# - MY_SRC for user sources +# - BLD for compilation +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fmake_config.sh CONFIG_NAME REF_CONFIG_NAME +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fmake_config.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- +\mkdir ${1} +\mkdir ${1}/EXP00 +\mkdir ${1}/MY_SRC +\cp -R ${2}/cpp_${2}.fcm ${1}/cpp_${1}.fcm +\cp -R ${2}/EXP00/*namelist* ${1}/EXP00/. +[ -f ${2}/EXP00/AGRIF_FixedGrids.in ] && \cp -R ${2}/EXP00/AGRIF_FixedGrids.in ${1}/EXP00/. +[ -f ${2}/EXP00/iodef.xml ] && \cp -R ${2}/EXP00/iodef.xml ${1}/EXP00/. +[ -f ${2}/EXP00/xmlio_server.def ] && \cp -R ${2}/EXP00/xmlio_server.def ${1}/EXP00/. +[ -d ${2}/MY_SRC ] && \cp ${2}/MY_SRC/* ${1}/MY_SRC/. 2> /dev/null diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea397a27583c2c11338975d6618f6d3e2ed4ecfe --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fprep_agrif.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============== +# Fprep_agrif.sh +# ============== +# +# --------------------- +# Preparation for AGRIF +# --------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fprep_agrif.sh +# +# +# DESCRIPTION +# =========== +# +# +# Prepare directories for AGRIF and copy files needed +# +# Compile the conv +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fprep_agrif.sh CONFIG_NAME +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fprep_agrif.sh 2520 2010-12-27 14:43:36Z rblod $ +# +# +# +# * creation +# +#- + +#- AGRIF conv +if [ "$AGRIFUSE" == 1 ]; then + +#- CONV +#fcm build ${TOOLS_DIR}/conv.cfg || exit 1 +gmake -C ${MAIN_DIR}/EXTERNAL/AGRIF/LIB + +#- AGRIF sources +[ ! -d $2/$1/OPAFILES ] && mkdir $2/$1/OPAFILES +[ ! -d $2/$1/OPAFILES/AGRIF_INC ] && mkdir $2/$1/OPAFILES/AGRIF_INC +[ ! -d $2/$1/OPAFILES/AGRIF_MODELFILES ] && mkdir $2/$1/OPAFILES/AGRIF_MODELFILES +cp -f -r ${MAIN_DIR}/EXTERNAL/AGRIF/agrif_opa.in $2/$1/OPAFILES/ +cp -f -r ${MAIN_DIR}/EXTERNAL/AGRIF/conv $2/$1/OPAFILES/ + +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh new file mode 100755 index 0000000000000000000000000000000000000000..a8fd309b537b66d93d2bf761e33876a927b7ebcf --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/Fread_dir.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ============ +# Fread_dir.sh +# ============ +# +# --------------------- +# Read user directories +# --------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ Fread_dir.sh +# +# +# DESCRIPTION +# =========== +# +# +# Read directoires needed from standard input +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./Fread_dir.sh Directory_NAME YES/NO +# +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: Fread_dir.sh 2542 2011-01-10 13:18:31Z rblod $ +# +# +# +# * creation +# +#- + +if [ "$2" == "YES" ]; then + echo -n " $1 [Y/n] " + read answer + answer=`echo $answer | sed 's/^[yY].*$/y/'` + if [ -z "$answer" -o "x$answer" = "xy" ]; then + TAB[$ind]="$1" + let ind=ind+1 + echo " $1 selected " + echo " " + else + echo " $1 Not selected " + echo " " + fi + unset -v answer +else + echo -n " $1 [y/N] " + read answer + answer=`echo $answer | sed 's/^[nN].*$/N/'` + if [ "x$answer" = "xy" ]; then + TAB[$ind]="$1" + let ind=ind+1 + echo " $1 selected " + echo " " + else + echo " $1 Not selected " + echo " " + fi + unset -v answer +fi diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh new file mode 100755 index 0000000000000000000000000000000000000000..4f1188d6feef0600808cb70865c914b41113348d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/nemo-3.3.1/TOOLS/COMPILE/agrifpp.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +#set -x +set -o posix +#set -u +#set -e +#+ +# +# ========== +# agrifpp.sh +# ========== +# +# ---------------------------- +# Preform AGrif pre-processing +# ---------------------------- +# +# SYNOPSIS +# ======== +# +# :: +# +# $ agrifpp.sh +# +# +# DESCRIPTION +# =========== +# +# +# Look after key agrif, if yes the conv is used, otherwise standard pre-processing is performed. +# +# EXAMPLES +# ======== +# +# :: +# +# $ ./agrifpp.sh 1 -Dkey +# +# or +# +# $ ./agrifpp.sh -Dkey +# +# TODO +# ==== +# +# option debug +# +# +# EVOLUTIONS +# ========== +# +# $Id: agrifpp.sh 2143 2010-10-04 12:49:55Z rblod $ +# +# +# +# * creation +# +#- + +if [ "$1" == "1" ]; then + shift + MYFILE=`echo $* |awk -F" " '{print $NF}' ` + FPP_OPT=` echo $* |awk '{ for (i=1 ; i ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/par_oce.F90 + (cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES ; ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/conv agrif_opa.in -rm -comdirin ./ -comdirout AGRIF_MODELFILES/ -convfile par_oce.F90 > /dev/null ) + cpp ${FPP_OPT} -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_MODELFILES/par_oce.F90 > ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/par_oce.F90 + touch ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/param_done + elif [ "${MYFILE}" == "par_oce.F90" -a -f ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/param_done ] ; then + cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES + cpp ${FPP_OPT} -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC ${MYFILE} + exit + fi + + if [ "${MYFILE}" == agrif2model.F90 ]; then + cpp -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC $@ + exit + fi + + cpp -I${NEMO_TDIR}/${NEW_CONF}/OPAFILES/AGRIF_INC $@ > ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/${MYFILE} + ( cd ${NEMO_TDIR}/${NEW_CONF}/OPAFILES ; ${NEMO_TDIR}/${NEW_CONF}/OPAFILES/conv agrif_opa.in -rm -comdirin ./ -comdirout AGRIF_MODELFILES/ -convfile ${MYFILE} > /dev/null ) + cd ${NEMO_TDIR}/${NEW_CONF} + sed 's/[ ]*$//' OPAFILES/AGRIF_MODELFILES/${MYFILE}> OPAFILES/${MYFILE} + cpp ${FPP_OPT} -IOPAFILES/AGRIF_INC OPAFILES/${MYFILE} +else + shift + cpp $@ +fi + diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl b/deploy/patches/ecmwf/ecearth/v3.0.1/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..33160b5d6bd91afc180464c788fdccb258aa2f8a --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf.tmpl @@ -0,0 +1,65 @@ + +$(info --> Reading configuration from $(lastword $(MAKEFILE_LIST))) + +# ============================================================================ +# *** Configuration for gimle-intel-scampi +# ============================================================================ + +COUPLE := [[[PLT:ACTIVE:ECEARTH_SRC_DIR]]]/oasis3 + +# CHAN : MPI1/MPI2 +CHAN := MPI1 + +# MPI library +MPIDIR := [[[PLT:ACTIVE:MPI_BASE_DIR]]] +ifneq ($(strip $(MPIDIR)),) +MPIBIN := $(MPIDIR)/bin +MPI_INCLUDE := $(MPIDIR)$(addprefix /,[[[PLT:ACTIVE:MPI_INC_SUBDIR]]]) +MPILIB := -L$(MPIDIR)$(addprefix /,[[[PLT:ACTIVE:MPI_LIB_SUBDIR]]]) +endif +MPILIB += $(addprefix -l,[[[PLT:ACTIVE:MPI_LIBS_WITHOUT_L]]]) + +# NETCDF library +NETCDF_DIR := [[[PLT:ACTIVE:NETCDF_BASE_DIR]]] +ifneq ($(strip $(NETCDF_DIR)),) +NETCDF_INCLUDE := $(NETCDF_DIR)$(addprefix /,[[[PLT:ACTIVE:NETCDF_INC_SUBDIR]]]) +NETCDF_LIBRARY := -L$(NETCDF_DIR)$(addprefix /,[[[PLT:ACTIVE:NETCDF_LIB_SUBDIR]]]) +endif +NETCDF_LIBRARY += $(addprefix -l,[[[PLT:ACTIVE:NETCDF_LIBS_WITHOUT_L]]]) + +comma := , + +# Compiling and other commands +MAKE := [[[PLT:ACTIVE:MAKE]]] +F90 := [[[PLT:ACTIVE:FC]]] [[[PLT:ACTIVE:FFLAGS_FREEFORM]]] $(addprefix -I,$(MPI_INCLUDE)) +F := [[[PLT:ACTIVE:FC]]] [[[PLT:ACTIVE:FFLAGS_FIXEDFORM]]] +f90 := $(F90) +f := $(F) +CC := [[[PLT:ACTIVE:CC]]] $(addprefix -I,$(MPI_INCLUDE)) +LD := [[[PLT:ACTIVE:LD]]] +AR := [[[PLT:ACTIVE:AR]]] +ARFLAGS := [[[PLT:ACTIVE:ARFLAGS]]] + +# CPP/FPP macros +MACROS := use_libMPI use_comm_$(CHAN) use_netCDF TREAT_OVERLAY +MACROS += [[[PLT:ACTIVE:OASIS_ADD_PPDEFS]]] + +# Compiler options +F90FLAGS := [[[PLT:ACTIVE:FFLAGS]]] +F90FLAGS += [[[PLT:ACTIVE:OASIS_ADD_FFLAGS]]] +F90FLAGS += $(addprefix [[[PLT:ACTIVE:FFLAGS_FPP_PREFIX]]],$(MACROS)) +F90FLAGS += $(addprefix -I,$(NETCDF_INCLUDE)) + +f90FLAGS := $(F90FLAGS) +FFLAGS := $(F90FLAGS) +fFLAGS := $(F90FLAGS) + +CCFLAGS := [[[PLT:ACTIVE:CFLAGS]]] +CCFLAGS += $(addprefix [[[PLT:ACTIVE:CFLAGS_CPP_PREFIX]]],$(MACROS)) +CCFLAGS += $(addprefix -I,$(NETCDF_INCLUDE)) + +LDFLAGS := [[[PLT:ACTIVE:LDFLAGS]]] +LDFLAGS += [[[PLT:ACTIVE:OASIS_ADD_LDFLAGS]]] + +# MPP_IOOPT needed for compiling mpp_io +MPP_IOOPT := diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ctrl/namcouple.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd21a3c0aca088a645fb33e1649d47a37e4ebe34 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ctrl/namcouple.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run-atm.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run-atm.sh new file mode 100755 index 0000000000000000000000000000000000000000..c107b611ff162c7dc6c6db1d6da23ef31e2f1686 --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run-atm.sh @@ -0,0 +1,353 @@ +#@ shell = /usr/bin/ksh + + # Specifies the shell that parses the script. If not + # specified, your login shell will be used. + +#@ class = np + + # Specifies that your job should be run in the class (queue) + # np, which is used to run parallel jobs. + +#@ job_type = parallel + + # Specifies that your job is parallel + +#@ job_name = ecearth3 + + # Assigns the specified name to the request + +#@ output = $(job_name).$(schedd_host).$(jobid).out + + # Specifies the name and location of STDOUT. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ error = $(job_name).$(schedd_host).$(jobid).err + + # Specifies the name and location of STDERR. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ notification = always + + # Specifies that email should be sent only if the job fails. + # Other options include: always, complete, start, and + # never. The default is notification = complete. + +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) + + # Specifies quantities of the resources which will be 'consumed' + # by each process/task of a job step. ConsumableCpus and + # ConsumableMemory must be specified with a value which is + # greater than zero. + # The value ConsumableCpus indicates the number of threads per + # (MPI) process/task. This job will be run using 1 thread + # per MPI process/task. + # The value ConsumableMemory specifies the (real) memory per + # (MPI) process/task which is shared between threads. This job + # will request 100 megabytes of real memory. + +#@ node = 4 + + # Specifies that your job requires 2 nodes + +#@ tasks_per_node = 32 + + # Specifies the number of (MPI) processes/tasks of a parallel job + # you want to run per node. In this example your job requires + # 32 processes/tasks per node. + +#@ cpu_limit = 12:00:00 + + # Specifies the maximum CPU time in HH:MM:SS used by any single process. + # In this job 1 MPI process/task can use up to a total of 1 min CPU time. + # Note: All limits are capped by those specified in the class. + +#@ wall_clock_limit = 24:00:00 + + # Specifies that your job requires HH:MM:SS of wall clock + # time. This job requires 3 min of wall clock time. + # Note: All limits are capped by those specified in the class. + +#@ queue +set -xv +exp_name=IFS3 +alias gdate='/usr/local/apps/coreutils/8.20/bin/date' + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 10 years" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=true + +# Resolution +ifs_grid=T255L91 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 year" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +start_dir=${PWD} +ctrl_file_dir=${start_dir}/ctrl + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- + +# Configure paths for building/running EC-Earth +ecearth_source_dir=/perm/ms/se/sm0g/ecearth3/sources +run_dir=${TEMP}/${USER}/run/${exp_name} +ini_data_dir=${PERM}/ecearth3-release + +stdout_file=${start_dir}/out/out.out + +# Configure grib api paths +export GRIB_DEFINITION_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/share/definitions +export GRIB_SAMPLES_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/ifs_samples/grib1 +export GRIB_BIN_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64 + + +# Configure number of processors per node +#proc_per_node=32 + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +ifs_time_step_sec=2700 + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]\*\)L\([0-9]\*\):\2:') + +ifs_numproc=128 + +ifs_exe_file=${ecearth_source_dir}/ifs-${ifs_version}/bin/ifsmaster-${build_arch} + +ifs_lastout=false + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(gdate -uR -d "${run_start_date}") +run_end_date=$(gdate -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(gdate -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(gdate -d "${leg_end_date}" +%s) -gt $(gdate -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(gdate -d "${leg_start_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(gdate -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(gdate -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(gdate -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT \ + ICMSEA${exp_name}INIT + + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS namelist file +case ${ifs_grid} in + T255L91) . ${ctrl_file_dir}/namelist.ifs-T255L91.sh > fort.4 + ;; + *) . ${ctrl_file_dir}/namelist.ifs-default.sh > fort.4 + ;; +esac + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ +grib_set=${GRIB_BIN_PATH}${GRIB_BIN_PATH:+/}grib_set + +# Create data for december, the year before the leg starts +${grib_set} \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + ${grib_set} -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +${grib_set} -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + + +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=no + +./${ifs_exe_file##*/} -v ecmwf -e ${exp_name} diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run.sh b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea0fd6851a3f27f7addad916012a5844b89ffadc --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/runtime/ecmwf-run.sh @@ -0,0 +1,554 @@ +#@ shell = /usr/bin/ksh + + # Specifies the shell that parses the script. If not + # specified, your login shell will be used. + +#@ class = np + + # Specifies that your job should be run in the class (queue) + # np, which is used to run parallel jobs. + +#@ job_type = parallel + + # Specifies that your job is parallel + +#@ job_name = ecearth3 + + # Assigns the specified name to the request + +#@ output = $(job_name).$(schedd_host).$(jobid).out + + # Specifies the name and location of STDOUT. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ error = $(job_name).$(schedd_host).$(jobid).err + + # Specifies the name and location of STDERR. If not given, the + # default is /dev/null. The file will be written in the + # submitting directory, by default. + +#@ notification = always + + # Specifies that email should be sent only if the job fails. + # Other options include: always, complete, start, and + # never. The default is notification = complete. + +#@ resources = ConsumableCpus(1) ConsumableMemory(1200mb) + + # Specifies quantities of the resources which will be 'consumed' + # by each process/task of a job step. ConsumableCpus and + # ConsumableMemory must be specified with a value which is + # greater than zero. + # The value ConsumableCpus indicates the number of threads per + # (MPI) process/task. This job will be run using 1 thread + # per MPI process/task. + # The value ConsumableMemory specifies the (real) memory per + # (MPI) process/task which is shared between threads. This job + # will request 100 megabytes of real memory. + +#@ node = 2 + + # Specifies that your job requires 2 nodes + +#@ tasks_per_node = 32 + + # Specifies the number of (MPI) processes/tasks of a parallel job + # you want to run per node. In this example your job requires + # 32 processes/tasks per node. + +#@ cpu_limit = 12:00:00 + + # Specifies the maximum CPU time in HH:MM:SS used by any single process. + # In this job 1 MPI process/task can use up to a total of 1 min CPU time. + # Note: All limits are capped by those specified in the class. + +#@ wall_clock_limit = 24:00:00 + + # Specifies that your job requires HH:MM:SS of wall clock + # time. This job requires 3 min of wall clock time. + # Note: All limits are capped by those specified in the class. + +#@ queue + +set -vuex +alias gdate='/usr/local/apps/coreutils/8.20/bin/date' + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 1 years" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=true + +# Resolution +ifs_grid=T255L91 +nem_grid=ORCA1L46 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="2 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +start_dir=${PWD} +ctrl_file_dir=${start_dir}/ctrl + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +# Configure paths for building/running EC-Earth +ecearth_source_dir=${PERM}/ecearth3/sources +run_dir=${TEMP}/${USER}/run/${exp_name} +ini_data_dir=${PERM}/ecearth3-release + +# File for standard output. +stdout_file=${start_dir}/out/out.out + +# Configure grib api paths +export GRIB_DEFINITION_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/share/definitions +export GRIB_SAMPLES_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/ifs_samples/grib1 +export GRIB_BIN_PATH=/usr/local/lib/metaps/lib/grib_api/1.9.16/bin64 + + +# Configure and load modules +pre_load_modules_cmd="" +module_list="" + + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +ifs_time_step_sec=2700 + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=38 + +ifs_exe_file=${ecearth_source_dir}/ifs-${ifs_version}/bin/ifsmaster-${build_arch} + +ifs_lastout=false + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=3 + +nem_time_step_sec=3600 +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${ecearth_source_dir}/nemo-${nem_version}/CONFIG/${nem_grid}_LIM${lim_version}/BLD/bin/nemo.exe + +nem_numproc=18 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_source_dir}/util/namcouple-split/namsplit.pl + +oas_numproc=8 + +# Flux correction that compensates for the mismatch between P-E over the ocean, +# and run-off from land (necessary to avoid sea level rise). +# The RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_qs_fluxcorr=0.985 +oas_rnf_fluxcorr=0.87 + +oas_exe_file=${ecearth_source_dir}/oasis3/${build_arch}/bin/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(gdate -uR -d "${run_start_date}") +run_end_date=$(gdate -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(gdate -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(gdate -d "${leg_end_date}" +%s) -gt $(gdate -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(gdate -d "${leg_start_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(gdate -d "${leg_end_date}" +%s) - $(gdate -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(gdate -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(gdate -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(gdate -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1)) ) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +case ${ifs_grid} in + T255L91) . ${ctrl_file_dir}/namelist.ifs-T255L91.sh > fort.4 + ;; + *) . ${ctrl_file_dir}/namelist.ifs-default.sh > fort.4 + ;; +esac +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ +grib_set=${GRIB_BIN_PATH}${GRIB_BIN_PATH:+/}grib_set + +# Create data for december, the year before the leg starts +${grib_set} \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy} ) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + ${grib_set} -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +${grib_set} -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $( seq 0 $((nem_numproc-1)) ) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +# Use the launch function from the platform configuration file +t1=$(gdate +%s) +rm -f configmpmd +for node in $(seq 1 $oas_numproc) +do + echo "$oas_exe_file" >> configmpmd +done + +for node in $(seq 1 $ifs_numproc) +do + echo "$ifs_exe_file -v ecmwf -e $exp_name" >> configmpmd +done + +for node in $(seq 1 $nem_numproc) +do + echo "$nem_exe_file" >> configmpmd +done + +t2=$(gdate +%s) +/usr/bin/poe -pgmmodel mpmd -cmdfile configmpmd +tr=$(gdate -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `gdate '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +exit 0 diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/util/ec-conf/ec-conf b/deploy/patches/ecmwf/ecearth/v3.0.1/util/ec-conf/ec-conf new file mode 100755 index 0000000000000000000000000000000000000000..b0b2186dd6dbdaaf98fdad6dab9ef7b89e46933d --- /dev/null +++ b/deploy/patches/ecmwf/ecearth/v3.0.1/util/ec-conf/ec-conf @@ -0,0 +1,1067 @@ +#!/usr/bin/env python + +import sys,os,getopt,stat +# sys.path = ['/usr/local/apps/python/2.7.2-01/lib/python2.7', '/usr/local/apps/python/2.7.2-01/lib/python2.7/lib-dynload'] +sys.path.pop(sys.path.index('/usr/local/apps/python/2.7.2-01/lib/python2.7/site-packages')) +import xml.sax +import re +import operator + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION info <<< +# ------------------------------------------------------------------------------------------------- +def info(s,level=1): + """ @brief Print info to stdout + @param s string to print + """ + if VERBOSE>=level: + sys.stderr.write("*II* %s\n" % s) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION info >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION warning <<< +# ------------------------------------------------------------------------------------------------- +def warning(s): + """ @brief Print warning to stdout + @param s string to print + """ + if WARNING: + sys.stderr.write("*WW* %s\n" % s) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION warning >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION error <<< +# ------------------------------------------------------------------------------------------------- +def error(s): + """ @brief Print error to stdout + @param s string to print + """ + print "*EE* %s " % s + sys.exit(1) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION error >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION usage <<< +# ------------------------------------------------------------------------------------------------- +def usage(myname): + print "\nUsage: %s OPTIONS \n" % (myname) + + print "Read configuration from an XML file and create config files." + + print """ +%s reads a data base of configuration parameters from an XML file. +Subsequently, a number of template files are processed in order to create +configuration files (targets).""" % (myname) + + print """ +Options: -h|--help Print this help screen. + -p|--platform Set the active platform. See ... + -g|--gui Starts the graphical user interface. Turns off -x. + -x|--write-xml Writes the content of in XML format to stdout. + This can be used to normalise the XML file and for test purposes. + -v|--verbose Produces verbose output (stderr). To increase verbosity, + use more than once. + -w|--no-warning Turns off warnings (however, errors are displayed). + """ + sys.exit(2) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION usage >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** CLASS TextNode <<< +# ================================================================================================= +class TextNode(object): + def __init__(self): + self.text = "" + + def addText(self,content): + self.text += content +# ================================================================================================= +# *** END of CLASS TextNode >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS NamedNode <<< +# ================================================================================================= +class NamedNode(object): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self,attr=None): + + self.name = None + self.description = None + + if attr: + if 'name' in attr: + self.name = attr['name'] + + info('Create named node: '+self.name+' ('+self.__class__.__name__+')',level=2) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION set <<< +# ------------------------------------------------------------------------------------------------- + def set(self,key,value): + self.__dict__.__setitem__(key,value) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION set >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION xml <<< +# ------------------------------------------------------------------------------------------------- + def xml(self,level=0): + """Provides XML representation of the NamedNode as a string""" + + tabwidth = 4 + + s = ' '*level*tabwidth + s += '<' + self.__class__.__name__ + if 'name' in self.__dict__ and self.name: + s += ' name="' + self.name + '"' + s += '>\n' + + for e in 'description','template','target','type','value': + if e in self.__dict__: + s += ' '*(level+1)*tabwidth + s += '<' + e.capitalize() + '>' + if self.__dict__[e]: s += self.__dict__[e] + s += '\n' + + if level<=1: s+='\n' + + for e in 'translation','platform','model','parameter': + if e in self.__dict__: + for t in self.__dict__[e]: + s += t.xml(level+1) + + s += ' '*level*tabwidth + s += '\n' + + if level>0 and level<=2: s += '\n' + + return s +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION xml >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION plt <<< +# ------------------------------------------------------------------------------------------------- + def plt(self,name=None): + """Provides short-hand access to the Platform member with name 'name'.""" + if 'platform' in self.__dict__: + if name: + for p in self.platform: + if p.name == name: + return p + else: + return self.platform + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION plt >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION mod <<< +# ------------------------------------------------------------------------------------------------- + def mod(self,name=None): + """Provides short-hand access to the Model member with name 'name'.""" + + if 'model' in self.__dict__: + if name: + for m in self.model: + if m.name == name: + return m + else: + return self.model + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION mod >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION par <<< +# ------------------------------------------------------------------------------------------------- + def par(self,name=None): + """Provides short-hand access to the Parameter member with name 'name'.""" + + if 'parameter' in self.__dict__: + if name: + for p in self.parameter: + if p.name == name: + return p + else: + return self.parameter + return None +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION par >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS NamedNode >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Translation <<< +# ================================================================================================= +class Translation(NamedNode): + def __init__(self,attr): + super(Translation,self).__init__(attr) + self.template = None + self.target = None + self.properties = '' + self.isActive = 1 + + def setTarget(self,t): + self.target = t +# ================================================================================================= +# *** END of CLASS Translation >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Platform <<< +# ================================================================================================= +class Platform(NamedNode): + def __init__(self,attr): + super(Platform,self).__init__(attr) + self.parameter = [] + self.translation = [] +# ================================================================================================= +# *** END of CLASS Platform >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Model <<< +# ================================================================================================= +class Model(NamedNode): + def __init__(self,attr): + super(Model,self).__init__(attr) + self.parameter = [] +# ================================================================================================= +# *** END of CLASS Model >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Parameter <<< +# ================================================================================================= +class Parameter(NamedNode): + def __init__(self,attr): + super(Parameter,self).__init__(attr) + self.type = None + self.value = None +# ================================================================================================= +# *** END of CLASS Parameter >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS Configuration <<< +# ================================================================================================= +class Configuration(NamedNode,xml.sax.handler.ContentHandler): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self): + + self.translation = [] + self.platform = [] + self.model = [] + + self.xmlFile = None + self.activePlatform = None + + self.__stack = [] + self.__types = { 'Translation' : Translation, + 'Platform' : Platform, + 'Model' : Model, + 'Parameter' : Parameter } +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION xml <<< +# ------------------------------------------------------------------------------------------------- + def xml(self,level=0): + + s = '\n\n' + s += super(Configuration,self).xml(level) + + return s +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION xml >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION startElement <<< +# ------------------------------------------------------------------------------------------------- + def startElement(self,tag,attributes): + + info("Processing XML element '"+str(tag)+"'",level=3) + + if self.__stack: + if tag in self.__types: + info("Adding NamedNode for element '"+str(tag)+"'",level=3) + self.__stack.append(self.__types[tag](attributes)) + else: + info("Adding TextNode for element '"+str(tag)+"'",level=3) + self.__stack.append(TextNode()) + else: + self.__stack.append(self) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION startElement >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION characters <<< +# ------------------------------------------------------------------------------------------------- + def characters(self,content): + if isinstance(self.__stack[-1],TextNode): + self.__stack[-1].addText(content) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION characters >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION endElement <<< +# ------------------------------------------------------------------------------------------------- + def endElement(self,tag): + n = self.__stack.pop() + if self.__stack: + if isinstance(n,TextNode): + self.__stack[-1].__dict__[tag.lower()] = n.text + else: + self.__stack[-1].__dict__[tag.lower()].append(n) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION endElement >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION parse <<< +# ------------------------------------------------------------------------------------------------- + def parse(self,file): + + parser = xml.sax.make_parser() + parser.setContentHandler(self) + + info("Parsing XML file '%s'" % (file)) + + try: parser.parse(file) + except IOError: + error("Could not open file '"+file+"' for reading") + + info("Finished parsing '%s': Translation: %d Platform: %d Model: %d" % + (file,len(self.translation),len(self.platform),len(self.model))) + self.xmlFile = file +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION parse >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION translate <<< +# ------------------------------------------------------------------------------------------------- + def translate(self,translation): + + RPN_OPS = { + 'ADD' : operator.add, + 'SUB' : operator.sub, + 'MUL' : operator.mul, + 'DIV' : operator.truediv, + 'POW' : operator.pow, + 'MOD' : operator.mod + } + + substRE = re.compile(r"\[\[\[(?P[a-zA-Z0-9_:,]+)\]\]\]") + varRE = re.compile(r"^(\w{3}):([a-zA-Z0-9_]+):([a-zA-Z0-9_]+)$") + + def parseVar(s): # <<< + + while 1: + + m = varRE.search(s) + + if not m: break + + (category,component,parameter) = m.groups() + + if category.lower()=='plt' and component.lower() == 'active': + component = self.activePlatform + + try: s = getattr(self,category.lower())(component).par(parameter).value + except: + warning("Unable to process '%s' (Line %d in '%s')" % (s,line_number,template)) + return '[[['+s+']]]' + return s + # >>> + + def parseRNP(s): # <<< + + stack = [] + + for token in s.split(','): + + token = parseVar(token) + if not token: + warning("Substitute expression with empty string (Line %d in '%s')" % (line_number,template)) + + try: result = int(token) + except ValueError: + + try: result = float(token) + except ValueError: + + if token in RPN_OPS.keys(): + + try: result = RPN_OPS[token](stack.pop(-2),stack.pop()) + except IndexError: + warning("Too few arguments to execute '%s' (Line %d in '%s')" % (token,line_number,template)) + return "[[["+s+"]]]" + except: + warning("Unable to execute '%s' (Line %d in '%s')" % (token,line_number,template)) + return "[[["+s+"]]]" + else: + result = token + + stack.append(result) + + if len(stack)>1: + warning("Too many operands in '%s' (Line %d in '%s')" % (s,line_number,template)) + return "[[["+s+"]]]" + + return result + # >>> + + template = translation.template + target = translation.target.strip() + + info("Translate: '%s' --> '%s'" % (template,target)) + + try: input = open(template,'r') + except IOError: + error("Can't open template file '%s' for reading" % (template)) + + if target: + try: output = open(target,'w') + except IOError: + error("Can't open target file '%s' for writing" % (target)) + + if 'executable' in translation.properties.split(','): + os.chmod(target,stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH | \ + stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | \ + stat.S_IWUSR) + else: + output = sys.stdout + + line_number = 0 + for line in input: + line_number += 1 + ptr = 0 + buf = '' + for m in substRE.finditer(line): + buf += line[ptr:m.start()] + var = m.groupdict()['var'] + buf += str(parseRNP(var)) + ptr = m.end() + buf += line[ptr:] + + output.write(buf) + + input.close() + if target: output.close() + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION translate >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION translateAll <<< +# ------------------------------------------------------------------------------------------------- + def translateAll(self): + for t in self.translation: + self.translate(t) + + if self.activePlatform: + for t in self.plt(self.activePlatform).translation: + self.translate(t) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION translateAll >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS Configuration >>> +# ================================================================================================= + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION startGUI <<< +# ------------------------------------------------------------------------------------------------- +def startGUI(cfg): + + import Tkinter + import tkFileDialog + import tkMessageBox + +# ================================================================================================= +# *** CLASS VerticalScrolledFrame <<< +# ================================================================================================= + class VerticalScrolledFrame(Tkinter.Frame): + """A pure Tkinter scrollable frame that actually works! + + * Use the 'interior' attribute to place widgets inside the scrollable frame + * Construct and pack/place/grid normally + * This frame only allows vertical scrolling + + http://tkinter.unpythonic.net/wiki/VerticalScrolledFrame + + """ + def __init__(self, parent, *args, **kw): + Tkinter.Frame.__init__(self, parent, *args, **kw) + + # create a canvas object and a vertical scrollbar for scrolling it + vscrollbar = Tkinter.Scrollbar(self, orient=Tkinter.VERTICAL) + vscrollbar.pack(fill=Tkinter.Y, side=Tkinter.RIGHT, expand=Tkinter.FALSE) + canvas = Tkinter.Canvas(self, bd=0, highlightthickness=0, + yscrollcommand=vscrollbar.set) + canvas.pack(side=Tkinter.LEFT, fill=Tkinter.BOTH, expand=Tkinter.TRUE) + vscrollbar.config(command=canvas.yview) + + # reset the view + canvas.xview_moveto(0) + canvas.yview_moveto(0) + + # create a frame inside the canvas which will be scrolled with it + self.interior = interior = Tkinter.Frame(canvas) + interior_id = canvas.create_window(0, 0, window=interior, + anchor=Tkinter.NW) + + # track changes to the canvas and frame width and sync them, + # also updating the scrollbar + def _configure_interior(event): + # update the scrollbars to match the size of the inner frame + size = (interior.winfo_reqwidth(), interior.winfo_reqheight()) + canvas.config(scrollregion="0 0 %s %s" % size) + if interior.winfo_reqwidth() != canvas.winfo_width(): + # update the canvas's width to fit the inner frame + canvas.config(width=interior.winfo_reqwidth()) + interior.bind('', _configure_interior) + + def _configure_canvas(event): + if interior.winfo_reqwidth() != canvas.winfo_width(): + # update the inner frame's width to fill the canvas + canvas.itemconfigure(interior_id, width=canvas.winfo_width()) + canvas.bind('', _configure_canvas) + + return +# ================================================================================================= +# *** END of CLASS VerticalScrolledFrame >>> +# ================================================================================================= + +# ================================================================================================= +# *** CLASS GUI <<< +# ================================================================================================= + class GUI(Tkinter.Tk): + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __init__ <<< +# ------------------------------------------------------------------------------------------------- + def __init__(self,cfg): + + Tkinter.Tk.__init__(self) + + self.columnconfigure(1,weight=1) + self.rowconfigure(0,pad=10) + self.rowconfigure(2,weight=1) + + self.__cfg = cfg + self.__varList = [] + self.__varDict = {} + + for t in self.__cfg.translation + [t for p in self.__cfg.platform for t in p.translation]: + v = Tkinter.IntVar() + v.set(1) + v.trace('w',lambda n,i,m,t=t: t.set('isActive',int(self.globalgetvar(n)))) + self.__addVar(v,t) + + self.__activeComponent = Tkinter.StringVar() + + self.__status = Tkinter.StringVar() + + self.__componentFrame = None + self.__parameterFrame = None + self.__translationFrame = None + + self.__initTopPanel() + self.__initStatusPanel() + self.__initMainPanel() + + self.grid_propagate(flag=0) + + self.__setStatus("Welcome to EC-CONF's graphical user interface!",time=3000) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __init__ >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __addVar <<< +# ------------------------------------------------------------------------------------------------- + def __addVar(self,var,obj=None): + self.__varList.append(var) + if obj: + self.__varDict[obj] = len(self.__varList)-1 +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __addVar >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __setStatus <<< +# ------------------------------------------------------------------------------------------------- + def __setStatus(self,message,time=8000): + + try: self.after_cancel(self.__statusAfterID) + except: pass + + self.__defaultStatusMessage = 'Basic usage: SELECT XML database and template/target files, ' \ + ' CONFIGURE parameters, ' \ + ' and CREATE the configuration files.' + self.__status.set(message) + self.__statusAfterID = self.after(time,self.__status.set,self.__defaultStatusMessage) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __setStatus >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initTopPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initTopPanel(self): + + w = Tkinter.Label(text='The active platform is:') + w.grid(row=0,column=0) + + if not self.__cfg.activePlatform: + self.__cfg.activePlatform = self.__cfg.platform[0].name + + v = Tkinter.StringVar() + v.set(self.__cfg.activePlatform) + v.trace('w',lambda n,i,m: self.__setStatus("Active platform changed to '"+self.__cfg.activePlatform+"'")) + v.trace('w',lambda n,i,m: self.__fillParameterFrame(self.__parameterFrame)) + v.trace('w',lambda n,i,m: self.__fillComponentFrame(self.__componentFrame)) + v.trace('w',lambda n,i,m: self.__fillTranslationFrame(self.__translationFrame)) + v.trace('w',lambda n,i,m: self.__cfg.set('activePlatform',self.globalgetvar(n))) + self.__addVar(v) + + w = Tkinter.OptionMenu(None,v,*[p.name for p in self.__cfg.platform]) + w.grid(row=0,column=1,sticky='W',padx=8) + + w = Tkinter.Button(text='Select',width=10,height=2,bg='tan') + w['command'] = self.__doSelect + w.grid(row=0,column=2,padx=8) + + w = Tkinter.Button(text='Configure',width=10,height=2,bg='tan') + w['command'] = self.__doConfigure + w.grid(row=0,column=3,padx=8) + + w = Tkinter.Button(text='Create!',width=10,height=2,bg='darkgrey',fg='white') + w['command'] = self.__doCreate + w.grid(row=0,column=4,padx=8) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initTopPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initStatusPanel<<< +# ------------------------------------------------------------------------------------------------- + def __initStatusPanel(self): + w = Tkinter.Label(textvariable=self.__status,height=2,bg='orange') + w.grid(row=1,column=0,columnspan=5,sticky='EW',pady=5) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initStatusPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initMainPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initMainPanel(self): + + self.__initSelectPanel() + self.__initConfigurePanel() + + self.__selectPanel.grid_remove() + self.__configurePanel.grid_remove() + + self.__activeMainPanel = self.__selectPanel + self.__activeMainPanel.grid() +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initMainPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initSelectPanel <<< +# ------------------------------------------------------------------------------------------------- + def __initSelectPanel(self): + + self.__selectPanel = Tkinter.Frame() + self.__selectPanel.grid(row=2,column=0,columnspan=5,sticky='NEWS') + self.__selectPanel.columnconfigure(0,weight=1) + self.__selectPanel.rowconfigure(2,weight=1) + + f = Tkinter.LabelFrame(self.__selectPanel,text='XML database file') + f.grid(sticky='NEWS') + f.columnconfigure(1,weight=1) + + w = Tkinter.Label(f,text='The current file is: ') + w.grid(row=0,column=0,sticky='W') + + v = Tkinter.StringVar() + v.set(self.__cfg.xmlFile) + v.trace('w',lambda n,i,m: self.__cfg.set('xmlFile',self.globalgetvar(n))) + self.__addVar(v,'xmlFile') + + w = Tkinter.Label(f,textvariable=v,bg='darkgrey',fg='white') + w.grid(row=0,column=1,sticky='W') + + w = Tkinter.Button(f,text='Save as',width=8) + w['command'] = lambda :self.__saveAsXmlFile() + w.grid(row=0,column=2,sticky='E',padx=4,pady=5) + + w = Tkinter.Button(f,text='Save',width=8) + w['command'] = lambda :self.__saveXmlFile() + w.grid(row=0,column=3,sticky='E',padx=4,pady=5) + + Tkinter.Frame(self.__selectPanel).grid(pady=5) + + self.__translationFrame = Tkinter.LabelFrame(self.__selectPanel,text='Templates and Targets') + self.__translationFrame.grid(sticky='NEWS') + self.__translationFrame.columnconfigure(1,weight=1) + self.__translationFrame.columnconfigure(3,weight=9) + + self.__fillTranslationFrame(self.__translationFrame) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initSelectPanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __initConfigurePanel <<< +# ------------------------------------------------------------------------------------------------- + def __initConfigurePanel(self): + + self.__configurePanel = Tkinter.Frame() + self.__configurePanel.grid(row=2,column=0,columnspan=5,sticky='NEWS') + self.__configurePanel.rowconfigure(0,weight=1) + self.__configurePanel.columnconfigure(2,weight=1) + + # Component frame + self.__componentFrame = Tkinter.LabelFrame(self.__configurePanel,text='Configurable components') + self.__componentFrame.grid(sticky='NEWS') + + self.__fillComponentFrame(self.__componentFrame) + + # Spacer frame + f = Tkinter.Frame(self.__configurePanel) + f.grid(row=0,column=1,padx=2) + + # Parameter frame + f = Tkinter.LabelFrame(self.__configurePanel,text='Configuration parameters') + f.grid(row=0,column=2,sticky='NEWS') + + f = VerticalScrolledFrame(f) + f.pack(fill=Tkinter.BOTH,expand=Tkinter.TRUE) + + self.__parameterFrame = f.interior + self.__parameterFrame.columnconfigure(2,weight=1) + + self.__fillParameterFrame(self.__parameterFrame) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __initConfigurePanel >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillTranslationFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillTranslationFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + v = Tkinter.IntVar() + v.set(1) + v.trace('w',lambda n,i,m: [ self.__varList[self.__varDict[t]].set(self.globalgetvar(n)) + for t in self.__cfg.translation + + self.__cfg.plt(self.__cfg.activePlatform).translation ]) + self.__addVar(v) + + w = Tkinter.Checkbutton(frame,text='Activate/deactivate all',variable=v) + w.grid(row=0,column=0,sticky='W',pady=5) + + r = 1 + for t in self.__cfg.translation + self.__cfg.plt(self.__cfg.activePlatform).translation: + + w = Tkinter.Checkbutton(frame,text=t.description,variable=self.__varList[self.__varDict[t]]) + w.grid(row=r,column=0,sticky='W',pady=5) + + w = Tkinter.Label(frame,text=t.template,bg='darkgrey',fg='white') + w.grid(row=r,column=1,sticky='E') + + w = Tkinter.Label(frame,text=' --> ') + w.grid(row=r,column=2) + + v = Tkinter.StringVar() + v.set(t.target) + v.trace('w',lambda n,i,m,t=t: t.setTarget(self.globalgetvar(n))) + self.__addVar(v) + w = Tkinter.Entry(frame,textvariable=v) + + w.grid(row=r,column=3,sticky='EW') + r+=1 + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillTranslationFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillComponentFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillComponentFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + if self.__cfg.activePlatform: + + self.__activeComponent.set(self.__cfg.activePlatform) + + w = Tkinter.Label(frame,text='Active platform') + w.pack(anchor='w') + + c = self.__cfg.plt(self.__cfg.activePlatform) + w = Tkinter.Radiobutton(frame,text=c.name,variable=self.__activeComponent,value=c.name) + w['command'] = lambda:self.__fillParameterFrame(self.__parameterFrame) + w.pack(anchor='w',pady=5) + + if self.__cfg.model: + + if not self.__activeComponent.get(): + self.set(self.__cfg.model[0].name) + + w = Tkinter.Label(frame,text='Configurable models') + w.pack(anchor='w') + + for c in self.__cfg.model: + w = Tkinter.Radiobutton(frame,text=c.name,variable=self.__activeComponent,value=c.name) + w['command'] = lambda:self.__fillParameterFrame(self.__parameterFrame) + w.pack(anchor='w',pady=5) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillComponentFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __fillParameterFrame <<< +# ------------------------------------------------------------------------------------------------- + def __fillParameterFrame(self,frame): + + for w in frame.children.values(): + w.destroy() + + for (name,component) in [(c.name,c) for c in self.__cfg.platform + self.__cfg.model]: + if self.__activeComponent.get()==name: + break + + r = 0 + for p in component.par(): + + w = Tkinter.Label(frame,text=p.description,anchor="w",width=35) + w.grid(row=r,column=0,sticky='W') + + w = Tkinter.Label(frame,text='['+str(p.name)+']') + w.grid(row=r,column=1,sticky='W',padx=20) + + v = Tkinter.StringVar() + v.set(p.value) + v.trace('w',lambda n,i,m,p=p: p.set('value',self.globalgetvar(n))) + self.__addVar(v) + w = Tkinter.Entry(frame,textvariable=v) + w.grid(row=r,column=2,sticky='EW') + + r+=1 + + self.__setStatus('Configure parameters for component \''+self.__activeComponent.get()+'\'') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __fillParameterFrame >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doSelect <<< +# ------------------------------------------------------------------------------------------------- + def __doSelect(self): + self.__activeMainPanel.grid_remove() + self.__activeMainPanel = self.__selectPanel + self.__activeMainPanel.grid() + self.__setStatus('Select the XML data base file and active translations in the panel below.') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doSelect >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doConfigure <<< +# ------------------------------------------------------------------------------------------------- + def __doConfigure(self): + self.__activeMainPanel.grid_remove() + self.__activeMainPanel = self.__configurePanel + self.__activeMainPanel.grid() + self.__setStatus('Configure the configuration parameters for the available components in the panel below.') +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doConfigure >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __doCreate <<< +# ------------------------------------------------------------------------------------------------- + def __doCreate(self): + + fw = [] + for t in self.__cfg.translation + self.__cfg.plt(self.__cfg.activePlatform).translation: + if t.isActive: + self.__cfg.translate(t) + fw.append(t.target) + + if fw: + msg = 'Active target files written: '+fw.pop() + while fw: msg += ', '+fw.pop() + else: + msg = 'No targets where written' + + self.__setStatus(msg) +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __doCreate >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __saveAsXmlFile <<< +# ------------------------------------------------------------------------------------------------- + def __saveAsXmlFile(self): + f = tkFileDialog.asksaveasfilename(title='Select a file name for saving:', + filetypes=[('XML files','*.xml'),('All files','*')]) + if f: + try: + self.__varList[self.__varDict['xmlFile']].set(os.path.relpath(f)) + except AttributeError: + self.__varList[self.__varDict['xmlFile']].set(os.path.realpath(f)) + self.__saveXmlFile() + else: + self.__setStatus("Current XML file NOT saved") + +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __saveAsXmlFile >>> +# ------------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------------- +# *** FUNCTION __saveXmlFile <<< +# ------------------------------------------------------------------------------------------------- + def __saveXmlFile(self): + + if os.path.isfile(self.__cfg.xmlFile): + msg = "The file '"+self.__cfg.xmlFile+"' exists. Do you want to replace it?" + if not tkMessageBox.askyesno('Save XML file',msg): return + + try: f = open(self.__cfg.xmlFile,'w') + except IOError: + msg = "The file '"+self.__cfg.xmlFile+"' could not be opened for writing" + tkMessageBox.showerror('Save XML file',msg) + self.__setStatus("XML database NOT saved") + return + + f.write(self.__cfg.xml()) + f.close() + self.__setStatus("XML database saved to file '"+self.__cfg.xmlFile+"'") +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION __saveXmlFile >>> +# ------------------------------------------------------------------------------------------------- + +# ================================================================================================= +# *** END of CLASS GUI >>> +# ================================================================================================= + + root = GUI(cfg) + root.title('ec-conf GUI') + + minWindowWidth = min(900,int(0.9*root.winfo_screenwidth())) + minWindowHeight = min(800,int(0.9*root.winfo_screenheight())) + root.minsize(minWindowWidth,minWindowHeight) + + root.resizable() + root.mainloop() +# ------------------------------------------------------------------------------------------------- +# *** END of FUNCTION startGUI >>> +# ------------------------------------------------------------------------------------------------- + +if __name__ == "__main__": + + # Try to get command line options and arguments + try: opts,args = getopt.getopt(sys.argv[1:],"hp:gxvw",["help","platform=","gui","write-xml","verbose","no-warning"]) + except getopt.GetoptError: + usage(os.path.split(sys.argv[0])[-1]) + + # Default values, to be overwritten by command line options + WARNING = 1 + VERBOSE = 0 + writeXML = False + wantGUI = False + platform = None + + # Parse command line options + for opt,arg in opts: + if opt in ('-h','--help'): + usage(os.path.split(sys.argv[0])[-1]) + elif opt in ('-p','--platform'): + platform = arg + elif opt in ('-g','--gui'): + wantGUI = True + elif opt in ('-x','--write-xml'): + writeXML = True + elif opt in ('-v','--verbose'): + VERBOSE += 1 + elif opt in ('-w','--no-warning'): + WARNING=0 + + # The XML file is all that should be left on the command line + if len(args)!=1: + usage(os.path.split(sys.argv[0])[-1]) + + # Create the Configuration object and fill the data structures by parsing the XML file + cfg = Configuration() + + try: cfg.parse(args[0]) + except xml.sax._exceptions.SAXParseException, e: + msg = 'XML parse error: ' + msg += "'"+e._msg+"'" + msg += " (line %s, column %s in file '%s')" % (e._linenum,e._colnum,e._systemId) + error(msg) + + # If a platform was given on the command line, try to set it + if platform: + if cfg.plt(platform): + cfg.activePlatform = platform + else: + error("Platform '%s' not defined in the configuration file '%s'" % (platform,args[0])) + elif not wantGUI: + warning('No active platform given') + + # Select activity to be done according to the command line options + # Default is to translate all Translations in the Configuration + if wantGUI: + info("Starting GUI") + startGUI(cfg) + elif writeXML: + sys.stdout.write(cfg.xml()) + else: + cfg.translateAll() diff --git a/deploy/patches/ecmwf/ecearth/v3.0.1/util/makedepf90/bin/makedepf90-ecmwf b/deploy/patches/ecmwf/ecearth/v3.0.1/util/makedepf90/bin/makedepf90-ecmwf new file mode 100755 index 0000000000000000000000000000000000000000..660ffdd23ec67f6aaeb1ed36f07596b61142e90d Binary files /dev/null and b/deploy/patches/ecmwf/ecearth/v3.0.1/util/makedepf90/bin/makedepf90-ecmwf differ diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..1994feb37e86b4c3f2666d60a9e9ea00b9e403f4 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd @@ -0,0 +1,57 @@ +#!/bin/bash + +# Modify jpni, jpnj and jpnij in the following code +# according to no. of proc to be used. +# vi ../../modeles/NEMO/OPA_SRC/par_oce.F90 + +# Modify compiler options in the following configuration +# file. +# vi ../../util/AA_make.gdef + +nemo_i=6 +nemo_j=6 + +while getopts i:j: option +do + case $option in + i) nemo_i=$OPTARG;; + j) nemo_j=$OPTARG;; + \?) exit 1;; + esac +done + +sed -e "s/ABC/$nemo_i/" \ + -e "s/DEF/$nemo_j/" \ + -e "s/GEH/$((nemo_i*nemo_j))/" \ +../../modeles/NEMO/OPA_SRC/par_oce.F90.orig > ../../modeles/NEMO/OPA_SRC/tmp +mv ../../modeles/NEMO/OPA_SRC/tmp ../../modeles/NEMO/OPA_SRC/par_oce.F90 + +source /opt/modules/default/init/bash +module load xtpe-mc12 +module load netcdf + +set -xuve +date + +compile=linux + +# MODEL Compilation +# ================= +rm -rf ../../lib/* +gmake clean +cp scripts/BB_make.ldef_1st scripts/BB_make.ldef +../../util/ins_make -t $compile +cat Makefile +gmake +cp scripts/BB_make.ldef_2nd scripts/BB_make.ldef +../../util/ins_make -t $compile +cat Makefile +gmake + +# TOOLS Compilation +# ================ +cd ../../modeles/IOIPSL/tools +gmake clean +gmake + +date diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..98de043d1c359584afd821ffad10125569545c7e --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd @@ -0,0 +1,10 @@ +#!/bin/bash + +set -xuve + +mkdir -p ../../../../bin +ls -lrt ../../../../bin + +cp -pf ../../bin/* ../../../../bin + +ls -lrt ../../../../bin diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd new file mode 100755 index 0000000000000000000000000000000000000000..453b7f5d45792d823b0580cd9c2c6cf25bb1a7a2 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd @@ -0,0 +1,78 @@ +#!/bin/ksh +############################################################################### +# RUN NEMO +############################################################################### +# +#!/bin/ksh --login +##PBS -N run_nemo-v3.2-orca1 +#PBS -l mppwidth=36 +#PBS -l mppnppn=24 +#PBS -l walltime=00:30:00 +#PBS -A hpx1enes +# + +# General settings + +date +set -xuv + +NEMO=/work/e24/rzg35ene/$USER/tools/nemo/v3.2-orca1 +TESTDATADIR=/work/e24/rzg35ene/$USER/tools/nemo/inidata +FORCING=${TESTDATADIR}/DFS4.1 +WRITINGDIR=/work/e24/rzg35ene/$USER/scratch/test +RUN_dir=$WRITINGDIR/run_nemo-v3.2-orca1_$PBS_JOBID + +NPROCNEMO=36 +MPPNPPN=24 +YEAR=1990 + +mkdir -p ${RUN_dir} || true +cd ${RUN_dir} + +cp ${NEMO}/bin/opa opa.xx +chmod 770 opa.xx + +cp ${NEMO}/setup/namelist.v3.2.default namelist +cp ${NEMO}/setup/namelist_ice.v3.2.default namelist_ice + +cp ${TESTDATADIR}/EMPave_old.dat EMPave_old.dat +cp ${TESTDATADIR}/geothermal_heating_orca1.nc geothermal_heating.nc +cp ${TESTDATADIR}/coordinates_ukorca1.nc coordinates.nc +cp ${TESTDATADIR}/bathy_meter_050308_UKMO.nc bathy_meter.nc +cp ${TESTDATADIR}/basinmask_050308_UKMO.nc basinmasks.nc +cp ${TESTDATADIR}/runoff_1m_ORCA1.nc runoff_1m_nomask.nc +cp ${TESTDATADIR}/sst_1m_ORCA1.nc sst_1m.nc +cp ${TESTDATADIR}/sss_1m_ORCA1.nc sss_1m.nc +cp ${TESTDATADIR}/dust_1m_ORCA1.nc dust_1m.nc +cp ${TESTDATADIR}/ahmcoef ahmcoef + +cp ${TESTDATADIR}/bathy_level42_050308_UKMO.nc bathy_level.nc +cp ${TESTDATADIR}/potemp05_1m_z42_nomask.nc data_1m_potential_temperature_nomask.nc +cp ${TESTDATADIR}/salin05_1m_z42_nomask.nc data_1m_salinity_nomask.nc + +ln -s ${TESTDATADIR}/weights_grid02_bicubic_orca1.nc weights_grid02_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid02_bilinear_orca1.nc weights_grid02_bilinear_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bicubic_orca1.nc weights_grid03_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bilinear_orca1.nc weights_grid03_bilinear_orca1.nc + +ln -s ${FORCING}/${YEAR}_1d_DFS4.1_lwdn.nc qlw_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_1d_DFS4.1_swdn.nc qsw_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_q2m.nc q2_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_t2m.nc t2_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_u10.nc u10_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_v10.nc v10_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_1m_DFS4.1_precip.nc precip_core_y${YEAR}.nc +ln -s ${FORCING}/${YEAR}_1m_DFS4.1_snow.nc snow_core_y${YEAR}.nc + +for ((l=0; l<$NPROCNEMO; l++)); do + ln -sf coordinates.nc coordinates_$(printf "%03d" $l).nc + ln -sf geothermal_heating.nc geothermal_heating_$(printf "%03d" $l).nc +done + +ls -alF + +ulimit -s unlimited + +aprun -n $NPROCNEMO -N $MPPNPPN opa.xx + +date diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig new file mode 100755 index 0000000000000000000000000000000000000000..e08d5da00dbdcf2a95fa935d3c832c165970ade9 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_diahth key_iomput + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st new file mode 100755 index 0000000000000000000000000000000000000000..e04fc95ea6290b1e62c4422625725d68b4e46b43 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_mpp_mpi + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd new file mode 100755 index 0000000000000000000000000000000000000000..1aa899904d78cc68c37381cfc1b19c6fa2eee41d --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_orca_r1 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_mpp_mpi + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default new file mode 100755 index 0000000000000000000000000000000000000000..3df189403d5983af0fb42d8a005a53062d3f1f8c --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default @@ -0,0 +1,760 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namqsr, namsbc_rnf, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namtrd, namgap, namspr, namflo, namptr) +!! 9 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! CAUTION: some scripts does not support CAPITALs for logical use .true./.false., not .TRUE./.FALSE. + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== + +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 720 ! last time step (std 5475) + nn_date0 = 19900101 ! initial calendar date yymmdd (used if nrstdt=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 720 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = 120 ! frequency of write in the output file (modulo referenced to nit000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (working only with iom_nf90 routines) + ln_rstart = .false. ! start from rest (F) or from a restart file (T) + nn_rstctl = 2 ! restart control = 0 nit000 is not compared to the restart file value + ! = 1 use ndate0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) +/ +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!!====================================================================== + +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (0 5760 + nn_baro = 60 ! number of barotropic time step (for the split explicit algorithm) ("key_dynspg_ts") + rn_atfp = 0.1 ! asselin time filter parameter + nn_acc = 0 ! acceleration of convergence : =1 used, rdt < rdttra(k) + ! =0, not used, rdt = rdttra + rn_rdtmin = 3600. ! minimum time step on tracers (used if nacc=1) + rn_rdtmax = 3600. ! maximum time step on tracers (used if nacc=1) + rn_rdth = 800. ! depth variation of tracer time step (used if nacc=1) +/ +!!====================================================================== +!! *** Surface Boundary Condition namelists *** +!!====================================================================== +!! namsbc surface boundary condition +!! namsbc_ana analytical formulation +!! namsbc_flx flux formulation +!! namsbc_clio CLIO bulk formulea formulation +!! namsbc_core CORE bulk formulea formulation +!! namsbc_cpl CouPLed formulation ("key_coupled") +!! namtra_qsr penetrative solar radiation +!! namsbc_rnf river runoffs +!! namsbc_ssr sea surface restoring term (for T and/or S) +!! namsbc_alb albedo parameters +!!====================================================================== + +!----------------------------------------------------------------------- +&namsbc ! Surface Boundary Condition (surface module) +!----------------------------------------------------------------------- + nn_fsbc = 6 ! frequency of surface boundary condition computation + ! (= the frequency of sea-ice model call) + ln_ana = .false. ! analytical formulation (T => fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + nn_ico_cpl = 0 ! ice-ocean coupling : =0 each nn_fsbc + ! =1 stresses recomputed each ocean time step ("key_lim3" only) + ! =2 combination of 0 and 1 cases ("key_lim3" only) + ln_dm2dc = .false. ! daily mean to diurnal cycle short wave (qsr) + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked , + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false. , 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false. , 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false. , 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false. , 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux' , .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy' , .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi' , .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2' , .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu' , .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl' , .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl' , .false. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'swdn', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_qlw = 'qlw_core' , 24 , 'lwdn', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_tair = 't2_core' , 6 , 't2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_humi = 'q2_core' , 6 , 'q2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_prec = 'precip_core', -1 , 'precip', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_snow = 'snow_core', -1 , 'snow', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' +! + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +! katabatic winds +! ln_kata = .true. ! enhanced katabatic winds (T) or no (F). +! ! file name ! frequency (hours) ! variable ! time intepolation ! clim ! 'yearly' or ! weights ! vector +! ! ! (if <0 months) ! name ! (logical) ! (logical) ! 'monthly' ! filename ! identifier +! sn_kati = 'katamask' , 0. , 'katamaskx', .false. , .true. , 'yearly' , ' ' , ' ' +! sn_katj = 'katamask' , 0. , 'katamasky', .false. , .true. , 'yearly' , ' ' , ' ' +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- + ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' + ! receive +cn_rcv_w10m = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- +cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' +cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl = 'chlorophyll' , -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction + rn_si2 = 62.0 ! 3 bands: longest depth of extinction (for blue waveband & 0.01 mg/m2 Chl) +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc' , -1 , 'sorunoff' , .true. , .true. , 'yearly' , ' ' , ' ' + sn_cnf = 'runoff_1m_nomask.nc' , 0 , 'socoeff' , .false. , .true. , 'yearly' , ' ' , ' ' +! + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 1 ! add a damping term in the surface freshwater flux (=1) or not (=0) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day/psu] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=1) or not (=0) +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== + +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim= .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [s] +/ +!----------------------------------------------------------------------- +! nam_tide tide parameters (#ifdef key_tide) +!----------------------------------------------------------------------- +! ln_tide_obcramp= linearly apply tidal forcing on open boundaries (sea rdtideramp) +! ln_tide_pot = use tidal potential forcing +! ln_read_tide_elev = read tidal elevations (tide_elev.nc) as obc data +! ln_read_tide_trans = read tidal barotropic velocities (tide_ubar.nc/tide_vbar.nc) as obc data +! ln_compute_tide_trans = compute barotropic velocities from linear equations and elevation as obc data +! ln_read_pot_charge = read charge potential +! rdtideramp = Ramp length in days if ln_tide_obcramp=.true. +! nb_harmo = number of constituents used +! name(1) = 'M2', 'K1', etc name of constituent + +&nam_tide + ln_tide_obcramp = .false. + ln_tide_pot = .true. + ln_read_tide_elev = .false. + ln_read_tide_trans = .false. + ln_compute_tide_trans = .false. + ln_read_pot_charge = .false. + rdtideramp = 2. + nb_harmo = 1 + clname(1) = 'M2' +! nb_harmo = 11 +! clname(1) = 'M2' +! clname(2) = 'S2' +! clname(3) = 'N2' +! clname(4) = 'K1' +! clname(5) = 'O1' +! clname(6) = 'Q1' +! clname(7) = 'M4' +! clname(8) = 'K2' +! clname(9) = 'P1' +! clname(10) = 'Mf' +! clname(11) = 'Mm' +/ +&nam_diaharm +!----------------------------------------------------------------------- +! nam_diaharm online tidal analysis (#ifdef key_diaharm) +!----------------------------------------------------------------------- +! nit000_han = first step used for analysis +! nitend_han = last step used for analysis +! nstep_han = frequency in steps to perform analysis +! nb_ana = number of analysed frequencies +! tname = 'M2', 'K1', etc. Name of tidal constituent + nit000_han = 28801 + nitend_han = 30240 +! nit000_han = 1 +! nitend_han = 10 + nstep_han = 1 + nb_ana = 1 + tname(1) = 'M2' +! tname(2) = 'K1' +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + filbdy_mask = '' ! name of mask file (if ln_bdy_mask=.TRUE.) + filbdy_data_T = 'bdydata_grid_T.nc' ! name of data file (T-points) + filbdy_data_U = 'bdydata_grid_U.nc' ! name of data file (U-points) + filbdy_data_V = 'bdydata_grid_V.nc' ! name of data file (V-points) + ln_bdy_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_bdy_vol = .true. ! total volume correction (see volbdy parameter) + ln_bdy_mask = .false. ! boundary mask from filbdy_mask (T) or boundaries are on edges of domain (F) + ln_bdy_tides = .true. ! Apply tidal harmonic forcing with Flather condition + ln_bdy_dyn_fla = .true. ! Apply Flather condition to velocities + ln_bdy_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_bdy_dyn_frs = .false. ! Apply FRS condition to velocities + nbdy_dta = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nb_rimwidth = 9 ! width of the relaxation zone + volbdy = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date = .false. ! adjust tidal harmonics for start date of run +/ +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition ("key_trabbc") +!! nambbl bottom boundary layer scheme ("key_trabbl_dif","key_trabbl_adv") +!!====================================================================== + +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : no slip, = 2 : nonlinear friction + ! = 3 : free slip, = 1 : linear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m^2/s^2) + rn_bfeb2 = 0.0 ! bottom turbulent kinetic energy background (m^2/s^2) + ! Drakkar enhancement +! ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D file ) +! ln_bfr2d = .true. ! horizontal variation of the bottom friction coef (read a 2D file ) +! rn_bfrien = 50. ! multiplying factor of bfr +! rn_bfrien = 50. ! multiplying factor of bfr +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- +! ! diffusive bbl ("key_trabbl") +! ! advective bbl ("key_trabbl_adv") + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] +/ +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== + +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.e-4 ! thermal expension coefficient (neos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (neos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_aht_0 = 600. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 600. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 0 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== + +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) + nn_dynhpg_rst = 1 ! =1 dynhpg restartable restart or not (=0) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_ahm_0 = 20000. ! horizontal eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] +/ +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric" ) +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke" ) +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp" ) +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm" ) +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx" ) +!!====================================================================== + +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative algorithm (T) or not (F) + nn_npc = 0 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + rn_bshear = 1.e-20 ! background shear (>0) + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 same criteria as case 2 but applied in a different way + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! mixing length scale surface value as function of wind stress (T) or not (F) + rn_lmin = 0.001 ! interior buoyancy lenght scale minimum value + rn_lmin0 = 0.01 ! surface buoyancy lenght scale minimum value + nn_etau = 0 ! exponentially deceasing penetration of tke due to internal & intertial waves + ! = 0 no penetration ( O(2 km) resolution) + ! = 1 additional tke source + ! = 2 additional tke source applied only at the base of the mixed layer + nn_htau = 1 ! type of exponential decrease of tke penetration + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m at high latitudes + rn_efr = 0.05 ! fraction of surface tke value which penetrates inside the ocean + ln_lc = .true. ! Langmuir cell parameterisation + rn_lc = 0.15 ! coef. associated to Langmuir cells +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionnally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== + +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 16 ! number of processors in i-direction + nn_jsplt = 16 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) + nn_bit_cmp = 0 ! bit comparison mode (1/0): CAUTION use zero except for test + ! of comparison between single and multiple processor runs +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namgap level mean model-data gap ("key_diagap") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!!====================================================================== + +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ('key_trdmld' or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namgap ! level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- + nn_gap = 15 ! time-step frequency of model-data gap computation + nn_prg = 10 ! time-step frequency of gap print in model output +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl= 75 ! frequency of writing in float output file + nn_stockfl= 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + nf_ptr = 1 ! Frequency of ptr computation [time step] + nf_ptr_wri = 15 ! Frequency of ptr outputs +/ diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default new file mode 100755 index 0000000000000000000000000000000000000000..ae6409267ad7d1d5e0903a965a6b6b306079f9e5 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default @@ -0,0 +1,134 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 5 - ice advection (namicetrp) +!! 6 - thermodynamic (namicethd) +!! 7 - ice salinity (namicesal) +!! 8 - mechanical redistribution of ice (namiceitdme) +!! 3 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T) or not (F) + acrit = 2.0e-06 , 5.0e-06 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the ice initial state in the file 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 2.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 250.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- +! hmelt : maximum melting at the bottom +! hiccrit(1/2): ice thickness for lateral accretion in the Northern (Southern) Hemisphere +! caution 1.0, 1.0 best value to be used!!! (gilles G.) +! hicmin : ice thickness corr. to max. energy stored in brine pocket +! hiclim : minimum ice thickness +! amax : maximum lead fraction +! swiqst : energy stored in brine pocket (=1) or not (=0) +! sbeta : numerical caracteritic of the scheme for diffusion in ice +! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) +! parlat : percentage of energy used for lateral ablation +! hakspl : slope of distr. for Hakkinen-Mellor's lateral melting +! hibspl : slope of distribution for Hibler's lateral melting +! exld : exponent for leads-closure rate +! hakdif : coefficient for diffusions of ice and snow +! thth : threshold thickness for comp. of eq. thermal conductivity +! hnzst : thickness of the surf. layer in temp. computation +! parsub : switch for snow sublimation or not +! alphs : coefficient for snow density when snow ice formation +! + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + noumef = 19 ! number of fields +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +/ diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 new file mode 100644 index 0000000000000000000000000000000000000000..b600b437f90979651b8e79d93914347620d48067 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 @@ -0,0 +1,996 @@ +MODULE calendar +!- +!$Id: calendar.f90 1011 2010-05-07 13:05:34Z bellier $ +!- +! This software is governed by the CeCILL license +! See IOIPSL/IOIPSL_License_CeCILL.txt +!--------------------------------------------------------------------- +!- This is the calendar which going to be used to do all +!- calculations on time. Three types of calendars are possible : +!- +!- - gregorian : +!- The normal calendar. The time origin for the +!- julian day in this case is 24 Nov -4713 +!- (other names : 'standard','proleptic_gregorian') +!- - noleap : +!- A 365 day year without leap years. +!- The origin for the julian days is in this case 1 Jan 0 +!- (other names : '365_day','365d') +!- - all_leap : +!- A 366 day year with leap years. +!- The origin for the julian days is in this case ???? +!- (other names : '366_day','366d' +!- - julian : +!- same as gregorian, but with all leap century years +!- - xxxd : +!- Year of xxx days with month of equal length. +!- The origin for the julian days is then also 1 Jan 0 +!- +!- As one can see it is difficult to go from one calendar to the other. +!- All operations involving julian days will be wrong. +!- This calendar will lock as soon as possible +!- the length of the year and forbid any further modification. +!- +!- For the non leap-year calendar the method is still brute force. +!- We need to find an Integer series which takes care of the length +!- of the various month. (Jan) +!- +!- one_day : one day in seconds +!- one_year : one year in days +!--------------------------------------------------------------------- + USE stringop,ONLY : strlowercase + USE errioipsl,ONLY : ipslerr +!- + PRIVATE + PUBLIC :: ymds2ju,ju2ymds,tlen2itau,isittime,ioconf_calendar, & + & ioget_calendar,ioget_mon_len,ioget_year_len,itau2date, & + & ioget_timestamp,ioconf_startdate,itau2ymds, & + & time_diff,time_add,lock_calendar +!- + INTERFACE ioget_calendar + MODULE PROCEDURE & + & ioget_calendar_real1,ioget_calendar_real2,ioget_calendar_str + END INTERFACE +!- + INTERFACE ioconf_startdate + MODULE PROCEDURE & + & ioconf_startdate_simple,ioconf_startdate_internal, & + & ioconf_startdate_ymds + END INTERFACE +!- + REAL,PARAMETER :: one_day = 86400.0 + LOGICAL,SAVE :: lock_startdate = .FALSE. +!- + CHARACTER(LEN=30),SAVE :: time_stamp='XXXXXXXXXXXXXXXX' +!- +!- Description of calendar +!- + CHARACTER(LEN=20),SAVE :: calendar_used="gregorian" + LOGICAL,SAVE :: lock_one_year = .FALSE. + REAL,SAVE :: one_year = 365.2425 + INTEGER,SAVE :: mon_len(12)=(/31,28,31,30,31,30,31,31,30,31,30,31/) +!- + CHARACTER(LEN=3),PARAMETER :: & + & cal(12) = (/'JAN','FEB','MAR','APR','MAY','JUN', & + & 'JUL','AUG','SEP','OCT','NOV','DEC'/) +!- + REAL,SAVE :: start_day,start_sec +!- +CONTAINS +!- +!=== +!- +SUBROUTINE lock_calendar (new_status,old_status) +!!-------------------------------------------------------------------- +!! The "lock_calendar" routine +!! allows to lock or unlock the calendar, +!! and to know the current status of the calendar. +!! Be careful ! +!! +!! SUBROUTINE lock_calendar (new_status,old_status) +!! +!! Optional INPUT argument +!! +!! (L) new_status : new status of the calendar +!! +!! Optional OUTPUT argument +!! +!! (L) old_status : current status of the calendar +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + LOGICAL,OPTIONAL,INTENT(IN) :: new_status + LOGICAL,OPTIONAL,INTENT(OUT) :: old_status +!--------------------------------------------------------------------- + IF (PRESENT(old_status)) THEN + old_status = lock_one_year + ENDIF + IF (PRESENT(new_status)) THEN + lock_one_year = new_status + ENDIF +!--------------------------- +END SUBROUTINE lock_calendar +!- +!=== +!- +SUBROUTINE ymds2ju (year,month,day,sec,julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + REAL,INTENT(OUT) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + julian = julian_day+julian_sec/one_day +!--------------------- +END SUBROUTINE ymds2ju +!- +!=== +!- +SUBROUTINE ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!--------------------------------------------------------------------- +!- Converts year, month, day and seconds into a julian day +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. +!- This is the day at which Pope Gregory XIII introduced the +!- Gregorian calendar. +!- Compared to the true Julian calendar, which starts some +!- 7980 years ago, the Lilian days are smaler and are dealt with +!- easily on 32 bit machines. With the true Julian days you can only +!- the fraction of the day in the real part to a precision of +!- a 1/4 of a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER,INTENT(OUT) :: julian_day + REAL,INTENT(OUT) :: julian_sec +!- + INTEGER :: jd,m,y,d,ml +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + m = month + y = year + d = day +!- +!- We deduce the calendar from the length of the year as it +!- is faster than an INDEX on the calendar variable. +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- "Gregorian" + jd = (1461*(y+4800+INT((m-14)/12)))/4 & + & +(367*(m-2-12*(INT((m-14)/12))))/12 & + & -(3*((y+4900+INT((m-14)/12))/100))/4 & + & +d-32075 + jd = jd-2299160 + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- "No leap" or "All leap" + ml = SUM(mon_len(1:m-1)) + jd = y*NINT(one_year)+ml+(d-1) + ELSE +!-- Calendar with regular month + ml = NINT(one_year/12.) + jd = y*NINT(one_year)+(m-1)*ml+(d-1) + ENDIF +!- + julian_day = jd + julian_sec = sec +!------------------------------ +END SUBROUTINE ymds2ju_internal +!- +!=== +!- +SUBROUTINE ju2ymds (julian,year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ju2ymds_internal(julian_day,julian_sec,year,month,day,sec) +!--------------------- +END SUBROUTINE ju2ymds +!- +!=== +!- +SUBROUTINE ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine computes from the julian day the year, +!- month, day and seconds +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. This is the day at which Pope +!- Gregory XIII introduced the Gregorian calendar. +!- Compared to the true Julian calendar, which starts some 7980 +!- years ago, the Lilian days are smaler and are dealt with easily +!- on 32 bit machines. With the true Julian days you can only the +!- fraction of the day in the real part to a precision of a 1/4 of +!- a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: l,n,i,jd,j,d,m,y,ml + INTEGER :: add_day + REAL :: eps_day +!--------------------------------------------------------------------- + eps_day = SPACING(one_day) + lock_one_year = .TRUE. +!- + jd = julian_day + sec = julian_sec + IF (sec > (one_day-eps_day)) THEN + add_day = INT(sec/one_day) + sec = sec-add_day*one_day + jd = jd+add_day + ENDIF + IF (sec < -eps_day) THEN + sec = sec+one_day + jd = jd-1 + ENDIF +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- Gregorian + jd = jd+2299160 +!- + l = jd+68569 + n = (4*l)/146097 + l = l-(146097*n+3)/4 + i = (4000*(l+1))/1461001 + l = l-(1461*i)/4+31 + j = (80*l)/2447 + d = l-(2447*j)/80 + l = j/11 + m = j+2-(12*l) + y = 100*(n-49)+i+l + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- No leap or All leap + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = 1 + ml = 0 + DO WHILE (ml+mon_len(m) <= l) + ml = ml+mon_len(m) + m = m+1 + ENDDO + d = l-ml+1 + ELSE +!-- others + ml = NINT(one_year/12.) + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = (l/ml)+1 + d = l-(m-1)*ml+1 + ENDIF +!- + day = d + month = m + year = y +!------------------------------ +END SUBROUTINE ju2ymds_internal +!- +!=== +!- +SUBROUTINE tlen2itau (input_str,dt,date,itau) +!--------------------------------------------------------------------- +!- This subroutine transforms a string containing a time length +!- into a number of time steps. +!- To do this operation the date (in julian days is needed as the +!- length of the month varies. +!- The following convention is used : +!- n : n time steps +!- nS : n seconds is transformed into itaus +!- nH : n hours +!- nD : n days +!- nM : n month +!- nY : n years +!- Combinations are also possible +!- nYmD : nyears plus m days ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: input_str + REAL,INTENT(IN) :: dt,date +!- + INTEGER,INTENT(OUT) :: itau +!- + INTEGER :: y_pos,m_pos,d_pos,h_pos,s_pos + INTEGER :: read_time + CHARACTER(LEN=13) :: fmt + CHARACTER(LEN=80) :: tmp_str +!- + INTEGER :: year,month,day + REAL :: sec,date_new,dd,ss +!--------------------------------------------------------------------- + itau = 0 + CALL ju2ymds (date,year,month,day,sec) +!- + y_pos = MAX(INDEX(input_str,'y'),INDEX(input_str,'Y')) + m_pos = MAX(INDEX(input_str,'m'),INDEX(input_str,'M')) + d_pos = MAX(INDEX(input_str,'d'),INDEX(input_str,'D')) + h_pos = MAX(INDEX(input_str,'h'),INDEX(input_str,'H')) + s_pos = MAX(INDEX(input_str,'s'),INDEX(input_str,'S')) +!- + IF (MAX(y_pos,m_pos,d_pos,s_pos) > 0) THEN + tmp_str = input_str + DO WHILE ( MAX(y_pos,m_pos,d_pos,s_pos) > 0) +!---- WRITE(*,*) tmp_str +!---- WRITE(*,*) y_pos,m_pos,d_pos,s_pos + IF (y_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') y_pos-1 + READ(tmp_str(1:y_pos-1),fmt) read_time + CALL ymds2ju (year+read_time,month,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(y_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (m_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') m_pos-1 + READ(tmp_str(1:m_pos-1),fmt) read_time + CALL ymds2ju (year,month+read_time,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(m_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (d_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') d_pos-1 + READ(tmp_str(1:d_pos-1),fmt) read_time + itau = itau+NINT(read_time*one_day/dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (h_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') h_pos-1 + READ(tmp_str(1:h_pos-1),fmt) read_time + itau = itau+NINT(read_time*60.*60./dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (s_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') s_pos-1 + READ(tmp_str(1:s_pos-1),fmt) read_time + itau = itau+NINT(read_time/dt) + tmp_str = tmp_str(s_pos+1:LEN_TRIM(tmp_str)) + ENDIF +!- + y_pos = MAX(INDEX(tmp_str,'y'),INDEX(tmp_str,'Y')) + m_pos = MAX(INDEX(tmp_str,'m'),INDEX(tmp_str,'M')) + d_pos = MAX(INDEX(tmp_str,'d'),INDEX(tmp_str,'D')) + h_pos = MAX(INDEX(tmp_str,'h'),INDEX(tmp_str,'H')) + s_pos = MAX(INDEX(tmp_str,'s'),INDEX(tmp_str,'S')) + ENDDO + ELSE + WRITE(fmt,'("(I",I10.10,")")') LEN_TRIM(input_str) + READ(input_str(1:LEN_TRIM(input_str)),fmt) itau + ENDIF +!----------------------- +END SUBROUTINE tlen2itau +!- +!=== +!- +REAL FUNCTION itau2date (itau,date0,deltat) +!--------------------------------------------------------------------- +!- This function transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- deltat : time step between itau s +!- +!- OUTPUT +!- itau2date : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER :: itau + REAL :: date0,deltat +!--------------------------------------------------------------------- + itau2date = REAL(itau)*deltat/one_day+date0 +!--------------------- +END FUNCTION itau2date +!- +!=== +!- +SUBROUTINE itau2ymds (itau,deltat,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- deltat : time step between itau s +!- +!- OUTPUT +!- year : year +!- month : month +!- day : day +!- sec : seconds since midnight +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: deltat +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + CALL ipslerr (2,'itau2ymds', & + & 'You try to call this function, itau2ymds, but you didn''t', & + & ' call ioconf_startdate to initialize date0 in calendar.', & + & ' Please call ioconf_startdate before itau2ymds.') + ENDIF + julian_day = start_day + julian_sec = start_sec+REAL(itau)*deltat + CALL ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!----------------------- +END SUBROUTINE itau2ymds +!- +!=== +!- +REAL FUNCTION dtchdate (itau,date0,old_dt,new_dt) +!--------------------------------------------------------------------- +!- This function changes the date so that the simulation can +!- continue with the same itau but a different dt. +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- old_dt : Old time step between itaus +!- new_dt : New time step between itaus +!- +!- OUTPUT +!- dtchdate : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: date0,old_dt,new_dt +!- + REAL :: rtime +!--------------------------------------------------------------------- + rtime = itau2date (itau,date0,old_dt) + dtchdate = rtime-REAL(itau)*new_dt/one_day +!-------------------- +END FUNCTION dtchdate +!- +!=== +!- +SUBROUTINE isittime & + & (itau,date0,dt,freq,last_action,last_check,do_action) +!--------------------------------------------------------------------- +!- This subroutine checks the time as come for a given action. +!- This is computed from the current time-step(itau). +!- Thus we need to have the time delta (dt), the frequency +!- of the action (freq) and the last time it was done +!- (last_action in units of itau). +!- In order to extrapolate when will be the next check we need +!- the time step of the last call (last_check). +!- +!- The test is done on the following condition : +!- the distance from the current time to the time for the next +!- action is smaller than the one from the next expected +!- check to the next action. +!- When the test is done on the time steps simplifications make +!- it more difficult to read in the code. +!- For the real time case it is easier to understand ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: dt,freq + INTEGER,INTENT(IN) :: last_action,last_check + REAL,INTENT(IN) :: date0 +!- + LOGICAL,INTENT(OUT) :: do_action +!- + REAL :: dt_action,dt_check + REAL :: date_last_act,date_next_check,date_next_act, & + & date_now,date_mp1,date_mpf + INTEGER :: year,month,monthp1,day,next_check_itau,next_act_itau + INTEGER :: yearp,dayp + REAL :: sec,secp + LOGICAL :: check = .FALSE. +!--------------------------------------------------------------------- + IF (check) THEN + WRITE(*,*) & + & "isittime 1.0 ",itau,date0,dt,freq,last_action,last_check + ENDIF +!- + IF (last_check >= 0) THEN + dt_action = (itau-last_action)*dt + dt_check = (itau-last_check)*dt + next_check_itau = itau+(itau-last_check) +!- +!-- We are dealing with frequencies in seconds and thus operation +!-- can be done on the time steps. +!- + IF (freq > 0) THEN + IF (ABS(dt_action-freq) <= ABS(dt_action+dt_check-freq)) THEN + do_action = .TRUE. + ELSE + do_action = .FALSE. + ENDIF +!- +!---- Here we deal with frequencies in month and work on julian days. +!- + ELSE + date_now = itau2date (itau,date0,dt) +!KW! blow out part of the code, replace with a quick and dirty fix +!KW! that checks if month of next timestep is equal to current month +!KW! if this isn't true, then doaction=true + CALL ju2ymds (date_now,year,month,day,sec) + date_mp1 = itau2date (itau+1,date0,dt) + CALL ju2ymds (date_mp1,year,monthp1,day,sec) + IF (month /= monthp1) THEN + do_action = .TRUE. +!KW! end of changes + ELSE + do_action = .FALSE. + ENDIF + ENDIF +!- + IF (check) THEN + WRITE(*,*) "isittime 2.0 ", & + & date_next_check,date_next_act,ABS(dt_action-freq), & + & ABS(dt_action+dt_check-freq),dt_action,dt_check, & + & next_check_itau,do_action + ENDIF + ELSE + do_action=.FALSE. + ENDIF +!---------------------- +END SUBROUTINE isittime +!- +!=== +!- +SUBROUTINE ioconf_calendar (str) +!--------------------------------------------------------------------- +!- This routine allows to configure the calendar to be used. +!- This operation is only allowed once and the first call to +!- ymds2ju or ju2ymsd will lock the current configuration. +!- the argument to ioconf_calendar can be any of the following : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: str +!- + INTEGER :: leng,ipos + CHARACTER(LEN=20) :: str_w +!--------------------------------------------------------------------- +!- +! Clean up the string ! +!- + str_w = str + CALL strlowercase (str_w) +!- + IF (.NOT.lock_one_year) THEN +!--- + lock_one_year=.TRUE. +!--- + SELECT CASE(TRIM(str_w)) + CASE('gregorian','standard','proleptic_gregorian') + calendar_used = 'gregorian' + one_year = 365.2425 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('noleap','365_day','365d') + calendar_used = 'noleap' + one_year = 365.0 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('all_leap','366_day','366d') + calendar_used = 'all_leap' + one_year = 366.0 + mon_len(:)=(/31,29,31,30,31,30,31,31,30,31,30,31/) + CASE('360_day','360d') + calendar_used = '360d' + one_year = 360.0 + mon_len(:)=(/30,30,30,30,30,30,30,30,30,30,30,30/) + CASE('julian') + calendar_used = 'julian' + one_year = 365.25 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE DEFAULT + ipos = INDEX(str_w,'d') + IF (ipos == 4) THEN + READ(str_w(1:3),'(I3)') leng + IF ( (MOD(leng,12) == 0).AND.(leng > 1) ) THEN + calendar_used = str_w + one_year = leng + mon_len(:) = leng/12 + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'The length of the year as to be a modulo of 12', & + & 'so that it can be divided into 12 month of equal length', & + & TRIM(str_w)) + ENDIF + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'Unrecognized input, please check the man pages.', & + & TRIM(str_w),' ') + ENDIF + END SELECT + ELSE IF (TRIM(str_w) /= TRIM(calendar_used)) THEN + WRITE(str_w,'(f10.4)') one_year + CALL ipslerr (2,'ioconf_calendar', & + & 'The calendar was already used or configured to : '// & + & TRIM(calendar_used)//'.', & + & 'You are not allowed to change it to : '//TRIM(str)//'.', & + & 'The following length of year is used : '//TRIM(ADJUSTL(str_w))) + ENDIF +!----------------------------- +END SUBROUTINE ioconf_calendar +!- +!=== +!- +SUBROUTINE ioconf_startdate_simple (julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!------------------------------------- +END SUBROUTINE ioconf_startdate_simple +!- +!=== +!- +SUBROUTINE ioconf_startdate_ymds (year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!----------------------------------- +END SUBROUTINE ioconf_startdate_ymds +!- +!=== +!- +SUBROUTINE ioconf_startdate_internal (julian_day,julian_sec) +!--------------------------------------------------------------------- +! This subroutine allows to set the startdate for later +! use. It allows the applications to access the date directly from +! the timestep. In order to avoid any problems the start date will +! be locked and can not be changed once set. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + CHARACTER(len=70) :: str70a,str70b +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + start_day = julian_day + start_sec = julian_sec + lock_startdate = .TRUE. + ELSE + WRITE(str70a,'("The date you tried to set : ",f10.4)') & + & julian_day,julian_sec/one_day + WRITE(str70b, & + & '("The date which was already set in the calendar : ",f10.4)') & + & start_day+start_sec/one_day + CALL ipslerr (2,'ioconf_startdate', & + & 'The start date has already been set and you tried to change it', & + & str70a,str70b) + ENDIF +!--------------------------------------- +END SUBROUTINE ioconf_startdate_internal +!- +!=== +!- +SUBROUTINE ioget_calendar_str (str) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(OUT) :: str +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + str = calendar_used +!-------------------------------- +END SUBROUTINE ioget_calendar_str +!- +!=== +!- +SUBROUTINE ioget_calendar_real1 (long_year) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year +!--------------------------------------------------------------------- + long_year = one_year + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real1 +!- +!=== +!- +SUBROUTINE ioget_calendar_real2 (long_year,long_day) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year,long_day +!--------------------------------------------------------------------- + long_year = one_year + long_day = one_day + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real2 +!- +!=== +!- +INTEGER FUNCTION ioget_mon_len (year,month) +!!-------------------------------------------------------------------- +!! The "ioget_mon_len" function returns +!! the number of days in a "month" of a "year", +!! in the current calendar. +!! +!! INTEGER FUNCTION ioget_mon_len (year,month) +!! +!! INPUT +!! +!! (I) year : year +!! (I) month : month in the year (1 --> 12) +!! +!! OUTPUT +!! +!! (I) ioget_mon_len : number of days in the month +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month +!- + INTEGER :: ml +!--------------------------------------------------------------------- + IF ( (month >= 1).AND.(month <= 12) ) THEN + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!---- "Gregorian" or "Julian" + ml = mon_len(month) + IF (month == 2) THEN + IF (ABS(one_year-365.2425) <= EPSILON(one_year) ) THEN +!-------- "Gregorian" + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + ml = ml+1 + ENDIF + ELSE +!-------- "Julian" + IF (MOD(year,4) == 0) THEN + ml = ml+1 + ENDIF + ENDIF + ENDIF + ioget_mon_len = ml + ELSE +!---- "No leap" or "All leap" or "Calendar with regular month" + ioget_mon_len = mon_len(month) + ENDIF + ELSE + CALL ipslerr (3,'ioget_mon_len', & + & 'The number of the month','must be between','1 and 12') + ENDIF +!------------------------- +END FUNCTION ioget_mon_len +!- +!=== +!- +INTEGER FUNCTION ioget_year_len (year) +!!-------------------------------------------------------------------- +!! The "ioget_year_len" function returns +!! the number of days in "year", in the current calendar. +!! +!! INTEGER FUNCTION ioget_year_len (year) +!! +!! INPUT +!! +!! (I) year : year +!! +!! OUTPUT +!! +!! (I) ioget_year_len : number of days in the year +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year +!- + INTEGER :: yl +!--------------------------------------------------------------------- + SELECT CASE(TRIM(calendar_used)) + CASE('gregorian') + yl = 365 + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + yl = yl+1 + ENDIF + CASE('julian') + yl = 365 + IF (MOD(year,4) == 0) THEN + yl = yl+1 + ENDIF + CASE DEFAULT + yl = NINT(one_year) + END SELECT + ioget_year_len = yl +!-------------------------- +END FUNCTION ioget_year_len +!- +!=== +!- +SUBROUTINE ioget_timestamp (string) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=30),INTENT(OUT) :: string +!- + INTEGER :: date_time(8) + CHARACTER(LEN=10) :: bigben(3) +!--------------------------------------------------------------------- + IF (INDEX(time_stamp,'XXXXXX') > 0) THEN + CALL DATE_AND_TIME (bigben(1),bigben(2),bigben(3),date_time) +!--- + WRITE(time_stamp, & + & "(I4.4,'-',A3,'-',I2.2,' ',I2.2,':',I2.2,':',I2.2,' GMT',a5)") & + & date_time(1),cal(date_time(2)),date_time(3),date_time(5), & + & date_time(6),date_time(7),bigben(3) + ENDIF +!- + string = time_stamp +!----------------------------- +END SUBROUTINE ioget_timestamp +!- +!=== +!- +SUBROUTINE time_add & + & (year_s,month_s,day_s,sec_s,sec_increment, & + & year_e,month_e,day_e,sec_e) +!--------------------------------------------------------------------- +!- This subroutine allows to increment a date by a number of seconds. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s +!- +! Time in seconds to be added to the date +!- + REAL,INTENT(IN) :: sec_increment +!- + INTEGER,INTENT(OUT) :: year_e,month_e,day_e + REAL,INTENT(OUT) :: sec_e +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day,julian_sec) +!- + julian_sec = julian_sec+sec_increment +!- + CALL ju2ymds_internal & + & (julian_day,julian_sec,year_e,month_e,day_e,sec_e) +!---------------------- +END SUBROUTINE time_add +!- +!=== +!- +SUBROUTINE time_diff & + & (year_s,month_s,day_s,sec_s,year_e,month_e,day_e,sec_e,sec_diff) +!--------------------------------------------------------------------- +!- This subroutine allows to determine the number of seconds +!- between two dates. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s + INTEGER,INTENT(IN) :: year_e,month_e,day_e + REAL,INTENT(IN) :: sec_e +!- +! Time in seconds between the two dates +!- + REAL,INTENT(OUT) :: sec_diff +!- + INTEGER :: julian_day_s,julian_day_e,day_diff + REAL :: julian_sec_s,julian_sec_e +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day_s,julian_sec_s) + CALL ymds2ju_internal & + & (year_e,month_e,day_e,sec_e,julian_day_e,julian_sec_e) +!- + day_diff = julian_day_e-julian_day_s + sec_diff = julian_sec_e-julian_sec_s +!- + sec_diff = sec_diff+day_diff*one_day +!----------------------- +END SUBROUTINE time_diff +!- +!=== +!- +END MODULE calendar diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90 b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90 new file mode 100644 index 0000000000000000000000000000000000000000..5fe0d68cd63a279f8a354a51da76e57959b46200 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90 @@ -0,0 +1,582 @@ +MODULE limthd_2 + !!====================================================================== + !! *** MODULE limthd_2 *** + !! LIM thermo ice model : ice thermodynamic + !!====================================================================== + !! History : 1.0 ! 2000-01 (LIM) + !! 2.0 ! 2002-07 (C. Ethe, G. Madec) F90 + !! 2.0 ! 2003-08 (C. Ethe) add lim_thd_init + !! - ! 2008-2008 (A. Caubel, G. Madec, E. Maisonnave, S. Masson ) generic coupled interface + !!--------------------------------------------------------------------- +#if defined key_lim2 + !!---------------------------------------------------------------------- + !! 'key_lim2' : LIM 2.0 sea-ice model + !!---------------------------------------------------------------------- + !! lim_thd_2 : thermodynamic of sea ice + !! lim_thd_init_2 : initialisation of sea-ice thermodynamic + !!---------------------------------------------------------------------- + USE phycst ! physical constants + USE dom_oce ! ocean space and time domain variables + USE domvvl + USE lbclnk + USE in_out_manager ! I/O manager + USE lib_mpp + USE iom ! IOM library + USE ice_2 ! LIM sea-ice variables + USE sbc_oce ! + USE sbc_ice ! + USE thd_ice_2 ! LIM thermodynamic sea-ice variables + USE dom_ice_2 ! LIM sea-ice domain + USE limthd_zdf_2 + USE limthd_lac_2 + USE limtab_2 + USE prtctl ! Print control + USE cpl_oasis3, ONLY : lk_cpl + USE diaar5, ONLY : lk_diaar5 + + IMPLICIT NONE + PRIVATE + + PUBLIC lim_thd_2 ! called by lim_step + + REAL(wp) :: epsi20 = 1.e-20 ! constant values + REAL(wp) :: epsi16 = 1.e-16 ! + REAL(wp) :: epsi04 = 1.e-04 ! + REAL(wp) :: rzero = 0.e0 ! + REAL(wp) :: rone = 1.e0 ! + + !! * Substitutions +# include "domzgr_substitute.h90" +# include "vectopt_loop_substitute.h90" + !!-------- ------------------------------------------------------------- + !! NEMO/LIM 3.2, UCL-LOCEAN-IPSL (2009) + !! $Id: limthd_2.F90 1924 2010-06-09 14:12:23Z charris $ + !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) + !!---------------------------------------------------------------------- + +CONTAINS + + SUBROUTINE lim_thd_2( kt ) + !!------------------------------------------------------------------- + !! *** ROUTINE lim_thd_2 *** + !! + !! ** Purpose : This routine manages the ice thermodynamic. + !! + !! ** Action : - Initialisation of some variables + !! - Some preliminary computation (oceanic heat flux + !! at the ice base, snow acc.,heat budget of the leads) + !! - selection of the icy points and put them in an array + !! - call lim_vert_ther for vert ice thermodynamic + !! - back to the geographic grid + !! - selection of points for lateral accretion + !! - call lim_lat_acc for the ice accretion + !! - back to the geographic grid + !! + !! References : Goosse et al. 1996, Bul. Soc. Roy. Sc. Liege, 65, 87-90 + !!--------------------------------------------------------------------- + INTEGER, INTENT(in) :: kt ! number of iteration + !! + INTEGER :: ji, jj ! dummy loop indices + INTEGER :: nbpb ! nb of icy pts for thermo. cal. + INTEGER :: nbpac ! nb of pts for lateral accretion + CHARACTER (len=22) :: charout + REAL(wp) :: zfric_umin = 5e-03 ! lower bound for the friction velocity + REAL(wp) :: zfric_umax = 2e-02 ! upper bound for the friction velocity + REAL(wp) :: zinda ! switch for test. the val. of concen. + REAL(wp) :: zindb, zindg ! switches for test. the val of arg + REAL(wp) :: zfricp ! temporary scalar + REAL(wp) :: za , zh, zthsnice ! + REAL(wp) :: zfric_u ! friction velocity + REAL(wp) :: zfnsol ! total non solar heat + REAL(wp) :: zfontn ! heat flux from snow thickness + REAL(wp) :: zfntlat, zpareff ! test. the val. of lead heat budget + REAL(wp), DIMENSION(jpi,jpj) :: ztmp ! 2D workspace + REAL(wp), DIMENSION(jpi,jpj) :: zqlbsbq ! link with lead energy budget qldif + REAL(wp) :: zuice_m, zvice_m ! Sea-ice velocities at U & V-points + REAL(wp) :: zhice_u, zhice_v ! Sea-ice volume at U & V-points + REAL(wp) :: ztr_fram ! Sea-ice transport through Fram strait + REAL(wp) :: zrhoij, zrhoijm1 ! temporary scalars + REAL(wp) :: zztmp ! temporary scalars within a loop + REAL(wp), DIMENSION(jpi,jpj) :: zlicegr ! link with lateral ice growth + REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmsk ! 3D workspace +!!$ REAL(wp), DIMENSION(jpi,jpj) :: firic !: IR flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: fcsic !: Sensible heat flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: fleic !: Latent heat flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: qlatic !: latent flux (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvosif !: Variation of volume at surface (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvobif !: Variation of ice volume at the bottom ice (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvolif !: Total variation of ice volume (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvonif !: Surface accretion Snow to Ice transformation (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvomif !: Bottom variation of ice volume due to melting (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zu_imasstr !: Sea-ice transport along i-axis at U-point (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zv_imasstr !: Sea-ice transport along j-axis at V-point (outputs only) + !!------------------------------------------------------------------- + + IF( kt == nit000 ) CALL lim_thd_init_2 ! Initialization (first time-step only) + + !-------------------------------------------! + ! Initilization of diagnostic variables ! + !-------------------------------------------! + +!!gm needed? yes at least for some of these arrays + zdvosif(:,:) = 0.e0 ! variation of ice volume at surface + zdvobif(:,:) = 0.e0 ! variation of ice volume at bottom + zdvolif(:,:) = 0.e0 ! total variation of ice volume + zdvonif(:,:) = 0.e0 ! transformation of snow to sea-ice volume +! zdvonif(:,:) = 0.e0 ! lateral variation of ice volume + zlicegr(:,:) = 0.e0 ! lateral variation of ice volume + zdvomif(:,:) = 0.e0 ! variation of ice volume at bottom due to melting only + ztr_fram = 0.e0 ! sea-ice transport through Fram strait + fstric (:,:) = 0.e0 ! part of solar radiation absorbing inside the ice + fscmbq (:,:) = 0.e0 ! linked with fstric + ffltbif(:,:) = 0.e0 ! linked with fstric + qfvbq (:,:) = 0.e0 ! linked with fstric + rdmsnif(:,:) = 0.e0 ! variation of snow mass per unit area + rdmicif(:,:) = 0.e0 ! variation of ice mass per unit area + zmsk (:,:,:) = 0.e0 + + ! set to zero snow thickness smaller than epsi04 + DO jj = 1, jpj + DO ji = 1, jpi + hsnif(ji,jj) = hsnif(ji,jj) * MAX( rzero, SIGN( rone , hsnif(ji,jj) - epsi04 ) ) + END DO + END DO +!!gm better coded (do not use SIGN...) +! WHERE( hsnif(:,:) < epsi04 ) hsnif(:,:) = 0.e0 +!!gm + + IF(ln_ctl) CALL prt_ctl( tab2d_1=hsnif, clinfo1=' lim_thd: hsnif : ' ) + + !-----------------------------------! + ! Treatment of particular cases ! + !-----------------------------------! + + DO jj = 1, jpj + DO ji = 1, jpi + ! snow is transformed into ice if the original ice cover disappears. + zindg = tms(ji,jj) * MAX( rzero , SIGN( rone , -hicif(ji,jj) ) ) + hicif(ji,jj) = hicif(ji,jj) + zindg * rhosn * hsnif(ji,jj) / rau0 + hsnif(ji,jj) = ( rone - zindg ) * hsnif(ji,jj) + zindg * hicif(ji,jj) * ( rau0 - rhoic ) / rhosn + dmgwi(ji,jj) = zindg * (1.0 - frld(ji,jj)) * rhoic * hicif(ji,jj) ! snow/ice mass + + ! the lead fraction, frld, must be little than or equal to amax (ice ridging). + zthsnice = hsnif(ji,jj) + hicif(ji,jj) + zindb = tms(ji,jj) * ( 1.0 - MAX( rzero , SIGN( rone , - zthsnice ) ) ) + za = zindb * MIN( rone, ( 1.0 - frld(ji,jj) ) * uscomi ) + hsnif (ji,jj) = hsnif(ji,jj) * za + hicif (ji,jj) = hicif(ji,jj) * za + qstoif(ji,jj) = qstoif(ji,jj) * za + frld (ji,jj) = 1.0 - zindb * ( 1.0 - frld(ji,jj) ) / MAX( za, epsi20 ) + + ! the in situ ice thickness, hicif, must be equal to or greater than hiclim. + zh = MAX( rone , zindb * hiclim / MAX( hicif(ji,jj), epsi20 ) ) + hsnif (ji,jj) = hsnif(ji,jj) * zh + hicif (ji,jj) = hicif(ji,jj) * zh + qstoif(ji,jj) = qstoif(ji,jj) * zh + frld (ji,jj) = ( frld(ji,jj) + ( zh - 1.0 ) ) / zh + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl( tab2d_1=hicif , clinfo1=' lim_thd: hicif : ' ) + CALL prt_ctl( tab2d_1=hsnif , clinfo1=' lim_thd: hsnif : ' ) + CALL prt_ctl( tab2d_1=dmgwi , clinfo1=' lim_thd: dmgwi : ' ) + CALL prt_ctl( tab2d_1=qstoif, clinfo1=' lim_thd: qstoif : ' ) + CALL prt_ctl( tab2d_1=frld , clinfo1=' lim_thd: frld : ' ) + ENDIF + + + !-------------------------------! + ! Thermodynamics of sea ice ! + !-------------------------------! + + ! Partial computation of forcing for the thermodynamic sea ice model. + !-------------------------------------------------------------------------- + + sst_m(:,:) = sst_m(:,:) + rt0 + +!CDIR NOVERRCHK + DO jj = 1, jpj +!CDIR NOVERRCHK + DO ji = 1, jpi + zthsnice = hsnif(ji,jj) + hicif(ji,jj) + zindb = tms(ji,jj) * ( 1.0 - MAX( rzero , SIGN( rone , - zthsnice ) ) ) + pfrld(ji,jj) = frld(ji,jj) + zfricp = 1.0 - frld(ji,jj) + zinda = 1.0 - MAX( rzero , SIGN( rone , - zfricp ) ) + + ! solar irradiance transmission at the mixed layer bottom and used in the lead heat budget + thcm(ji,jj) = 0.e0 + + ! net downward heat flux from the ice to the ocean, expressed as a function of ocean + ! temperature and turbulent mixing (McPhee, 1992) + zfric_u = MAX ( MIN( SQRT( ust2s(ji,jj) ) , zfric_umax ) , zfric_umin ) ! friction velocity + fdtcn(ji,jj) = zindb * rau0 * rcp * 0.006 * zfric_u * ( sst_m(ji,jj) - tfu(ji,jj) ) + qdtcn(ji,jj) = zindb * fdtcn(ji,jj) * frld(ji,jj) * rdt_ice + + ! partial computation of the lead energy budget (qldif) +#if defined key_coupled + qldif(ji,jj) = tms(ji,jj) * rdt_ice & + & * ( ( qsr_tot(ji,jj) - qsr_ice(ji,jj,1) * zfricp ) * ( 1.0 - thcm(ji,jj) ) & + & + ( qns_tot(ji,jj) - qns_ice(ji,jj,1) * zfricp ) & + & + frld(ji,jj) * ( fdtcn(ji,jj) + ( 1.0 - zindb ) * fsbbq(ji,jj) ) ) +#else + zfontn = ( sprecip(ji,jj) / rhosn ) * xlsn ! energy for melting solid precipitation + zfnsol = qns(ji,jj) ! total non solar flux over the ocean + qldif(ji,jj) = tms(ji,jj) * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) ) & + & + zfnsol + fdtcn(ji,jj) - zfontn & + & + ( 1.0 - zindb ) * fsbbq(ji,jj) ) & + & * frld(ji,jj) * rdt_ice +!!$ qldif(ji,jj) = tms(ji,jj) * rdt_ice * frld(ji,jj) +!!$ & * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) ) & +!!$ & + qns(ji,jj) + fdtcn(ji,jj) - zfontn & +!!$ & + ( 1.0 - zindb ) * fsbbq(ji,jj) ) & +#endif + ! parlat : percentage of energy used for lateral ablation (0.0) + zfntlat = 1.0 - MAX( rzero , SIGN( rone , - qldif(ji,jj) ) ) + zpareff = 1.0 + ( parlat - 1.0 ) * zinda * zfntlat + zqlbsbq(ji,jj) = qldif(ji,jj) * ( 1.0 - zpareff ) / MAX( (1.0 - frld(ji,jj)) * rdt_ice , epsi16 ) + qldif (ji,jj) = zpareff * qldif(ji,jj) + qdtcn (ji,jj) = zpareff * qdtcn(ji,jj) + + ! energy needed to bring ocean surface layer until its freezing + qcmif (ji,jj) = rau0 * rcp * fse3t_m(ji,jj,1) & + & * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) + + ! calculate oceanic heat flux. + fbif (ji,jj) = zindb * ( fsbbq(ji,jj) / MAX( (1.0 - frld(ji,jj)) , epsi20 ) + fdtcn(ji,jj) ) + + ! computation of the thermodynamic ice production (only needed for output) + hicifp(ji,jj) = hicif(ji,jj) * ( 1.0 - frld(ji,jj) ) + END DO + END DO + + sst_m(:,:) = sst_m(:,:) - rt0 + + ! Select icy points and fulfill arrays for the vectorial grid. + !---------------------------------------------------------------------- + nbpb = 0 + DO jj = 1, jpj + DO ji = 1, jpi + IF ( frld(ji,jj) < 1.0 ) THEN + nbpb = nbpb + 1 + npb(nbpb) = (jj - 1) * jpi + ji + ENDIF + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl(tab2d_1=pfrld, clinfo1=' lim_thd: pfrld : ', tab2d_2=thcm , clinfo2=' thcm : ') + CALL prt_ctl(tab2d_1=fdtcn, clinfo1=' lim_thd: fdtcn : ', tab2d_2=qdtcn , clinfo2=' qdtcn : ') + CALL prt_ctl(tab2d_1=qldif, clinfo1=' lim_thd: qldif : ', tab2d_2=zqlbsbq, clinfo2=' zqlbsbq : ') + CALL prt_ctl(tab2d_1=qcmif, clinfo1=' lim_thd: qcmif : ', tab2d_2=fbif , clinfo2=' fbif : ') + zmsk(:,:,1) = tms(:,:) + CALL prt_ctl(tab2d_1=qcmif , clinfo1=' lim_thd: qcmif : ', mask1=zmsk) + CALL prt_ctl(tab2d_1=hicifp, clinfo1=' lim_thd: hicifp : ') + WRITE(charout, FMT="('lim_thd: nbpb = ',I4)") nbpb + CALL prt_ctl_info(charout) + ENDIF + + + ! If there is no ice, do nothing. Otherwise, compute Top and Bottom accretion/ablation + !------------------------------------------------------------------------------------ + + IF( nbpb > 0 ) THEN + ! + ! put the variable in a 1-D array for thermodynamics process + CALL tab_2d_1d_2( nbpb, frld_1d (1:nbpb) , frld , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, h_ice_1d (1:nbpb) , hicif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, h_snow_1d (1:nbpb) , hsnif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, sist_1d (1:nbpb) , sist , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 1 ), tbif(:,:,1) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 2 ), tbif(:,:,2) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 3 ), tbif(:,:,3) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb) , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fr1_i0_1d (1:nbpb) , fr1_i0 , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fr2_i0_1d (1:nbpb) , fr2_i0 , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qns_ice_1d(1:nbpb) , qns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb) , dqns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + IF( .NOT. lk_cpl ) THEN + CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb) , qla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb) , dqla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + ENDIF + CALL tab_2d_1d_2( nbpb, tfu_1d (1:nbpb) , tfu , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, sprecip_1d (1:nbpb) , sprecip , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fbif_1d (1:nbpb) , fbif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, thcm_1d (1:nbpb) , thcm , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qldif_1d (1:nbpb) , qldif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qstbif_1d (1:nbpb) , qstoif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, rdmicif_1d (1:nbpb) , rdmicif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dmgwi_1d (1:nbpb) , dmgwi , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qlbbq_1d (1:nbpb) , zqlbsbq , jpi, jpj, npb(1:nbpb) ) + ! + CALL lim_thd_zdf_2( 1, nbpb ) ! compute ice growth + ! + ! back to the geographic grid. + CALL tab_1d_2d_2( nbpb, frld , npb, frld_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, hicif , npb, h_ice_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, hsnif , npb, h_snow_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, sist , npb, sist_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,1), npb, tbif_1d (1:nbpb , 1 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,2), npb, tbif_1d (1:nbpb , 2 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,3), npb, tbif_1d (1:nbpb , 3 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, fscmbq , npb, fscbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, ffltbif , npb, fltbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, fstric , npb, fstbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qldif , npb, qldif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qfvbq , npb, qfvbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qstoif , npb, qstbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, rdmicif , npb, rdmicif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, dmgwi , npb, dmgwi_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, rdmsnif , npb, rdmsnif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvosif , npb, dvsbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvobif , npb, dvbbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvomif , npb, rdvomif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvolif , npb, dvlbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvonif , npb, dvnbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qns_ice(:,:,1), npb, qns_ice_1d(1:nbpb) , jpi, jpj ) + IF( .NOT. lk_cpl ) CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb) , jpi, jpj ) + ! + ENDIF + + ! Up-date sea ice thickness + !-------------------------- + DO jj = 1, jpj + DO ji = 1, jpi + phicif(ji,jj) = hicif(ji,jj) + hicif(ji,jj) = hicif(ji,jj) * ( rone - MAX( rzero, SIGN( rone, - ( 1.0 - frld(ji,jj) ) ) ) ) + END DO + END DO + + + ! Tricky trick : add 2 to frld in the Southern Hemisphere + !-------------------------------------------------------- + IF( fcor(1,1) < 0.e0 ) THEN + DO jj = 1, njeqm1 + DO ji = 1, jpi + frld(ji,jj) = frld(ji,jj) + 2.0 + END DO + END DO + ENDIF + + CALL lbc_lnk( frld , 'T', 1. ) + + ! Select points for lateral accretion (this occurs when heat exchange + ! between ice and ocean is negative; ocean losing heat) + !----------------------------------------------------------------- + nbpac = 0 + DO jj = 1, jpj + DO ji = 1, jpi +!i yes! IF ( ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN + IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN + nbpac = nbpac + 1 + npac( nbpac ) = (jj - 1) * jpi + ji + ENDIF + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl(tab2d_1=phicif, clinfo1=' lim_thd: phicif : ', tab2d_2=hicif, clinfo2=' hicif : ') + WRITE(charout, FMT="('lim_thd: nbpac = ',I4)") nbpac + CALL prt_ctl_info(charout) + ENDIF + + + ! If ocean gains heat do nothing ; otherwise, one performs lateral accretion + !-------------------------------------------------------------------------------- + IF( nbpac > 0 ) THEN + ! + zlicegr(:,:) = rdmicif(:,:) ! to output the lateral sea-ice growth + !...Put the variable in a 1-D array for lateral accretion + CALL tab_2d_1d_2( nbpac, frld_1d (1:nbpac) , frld , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, h_snow_1d (1:nbpac) , hsnif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, h_ice_1d (1:nbpac) , hicif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 1 ), tbif(:,:,1), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 2 ), tbif(:,:,2), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 3 ), tbif(:,:,3), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qldif_1d (1:nbpac) , qldif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qcmif_1d (1:nbpac) , qcmif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qstbif_1d (1:nbpac) , qstoif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, rdmicif_1d(1:nbpac) , rdmicif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, dvlbq_1d (1:nbpac) , zdvolif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tfu_1d (1:nbpac) , tfu , jpi, jpj, npac(1:nbpac) ) + ! + CALL lim_thd_lac_2( 1 , nbpac ) ! lateral accretion routine. + ! + ! back to the geographic grid + CALL tab_1d_2d_2( nbpac, frld , npac(1:nbpac), frld_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, hsnif , npac(1:nbpac), h_snow_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, hicif , npac(1:nbpac), h_ice_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,1), npac(1:nbpac), tbif_1d (1:nbpac , 1 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,2), npac(1:nbpac), tbif_1d (1:nbpac , 2 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,3), npac(1:nbpac), tbif_1d (1:nbpac , 3 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, qstoif , npac(1:nbpac), qstbif_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, rdmicif , npac(1:nbpac), rdmicif_1d(1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, zdvolif , npac(1:nbpac), dvlbq_1d (1:nbpac) , jpi, jpj ) + ! + ENDIF + + + ! Recover frld values between 0 and 1 in the Southern Hemisphere (tricky trick) + ! Update daily thermodynamic ice production. + !------------------------------------------------------------------------------ + DO jj = 1, jpj + DO ji = 1, jpi + frld (ji,jj) = MIN( frld(ji,jj), ABS( frld(ji,jj) - 2.0 ) ) + fr_i (ji,jj) = 1.0 - frld(ji,jj) + hicifp(ji,jj) = hicif(ji,jj) * fr_i(ji,jj) - hicifp(ji,jj) + END DO + END DO + + ! Outputs + !-------------------------------------------------------------------------------- + ztmp(:,:) = 1. - pfrld(:,:) ! fraction of ice after the dynamic, before the thermodynamic + CALL iom_put( 'ioceflxb', fbif ) ! Oceanic flux at the ice base [W/m2 ???] + CALL iom_put( 'ist_cea', (sist(:,:) - rt0) * ztmp(:,:) ) ! Ice surface temperature [Celius] + CALL iom_put( 'qsr_ai_cea', qsr_ice(:,:,1) * ztmp(:,:) ) ! Solar flux over the ice [W/m2] + CALL iom_put( 'qns_ai_cea', qns_ice(:,:,1) * ztmp(:,:) ) ! Non-solar flux over the ice [W/m2] + IF( .NOT. lk_cpl ) CALL iom_put( 'qla_ai_cea', qla_ice(:,:,1) * ztmp(:,:) ) ! Latent flux over the ice [W/m2] + ! + CALL iom_put( 'snowthic_cea', hsnif (:,:) * fr_i(:,:) ) ! Snow thickness [m] + CALL iom_put( 'icethic_cea' , hicif (:,:) * fr_i(:,:) ) ! Ice thickness [m] + zztmp = 1.0 / rdt_ice + CALL iom_put( 'iceprod_cea' , hicifp (:,:) * zztmp ) ! Ice produced [m/s] + IF( lk_diaar5 ) THEN + CALL iom_put( 'snowmel_cea' , rdmsnif(:,:) * zztmp ) ! Snow melt [kg/m2/s] + zztmp = rhoic / rdt_ice + CALL iom_put( 'sntoice_cea' , zdvonif(:,:) * zztmp ) ! Snow to Ice transformation [kg/m2/s] + CALL iom_put( 'ticemel_cea' , zdvosif(:,:) * zztmp ) ! Melt at Sea Ice top [kg/m2/s] + CALL iom_put( 'bicemel_cea' , zdvomif(:,:) * zztmp ) ! Melt at Sea Ice bottom [kg/m2/s] + zlicegr(:,:) = MAX( 0.e0, rdmicif(:,:)-zlicegr(:,:) ) + CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp ) ! Latereal sea ice growth [kg/m2/s] + ENDIF + ! + ! Compute the Eastward & Northward sea-ice transport + zztmp = 0.25 * rhoic + DO jj = 1, jpjm1 + DO ji = 1, jpim1 ! NO vector opt. + ! Ice velocities, volume & transport at U & V-points + zuice_m = u_ice(ji+1,jj+1) + u_ice(ji+1,jj ) + zvice_m = v_ice(ji+1,jj+1) + v_ice(ji ,jj+1) + zhice_u = hicif(ji,jj)*e2t(ji,jj)*fr_i(ji,jj) + hicif(ji+1,jj )*e2t(ji+1,jj )*fr_i(ji+1,jj ) + zhice_v = hicif(ji,jj)*e1t(ji,jj)*fr_i(ji,jj) + hicif(ji ,jj+1)*e1t(ji ,jj+1)*fr_i(ji ,jj+1) + zu_imasstr(ji,jj) = zztmp * zhice_u * zuice_m + zv_imasstr(ji,jj) = zztmp * zhice_v * zvice_m + END DO + END DO + CALL lbc_lnk( zu_imasstr, 'U', -1. ) ; CALL lbc_lnk( zv_imasstr, 'V', -1. ) + CALL iom_put( 'u_imasstr', zu_imasstr(:,:) ) ! Ice transport along i-axis at U-point [kg/s] + CALL iom_put( 'v_imasstr', zv_imasstr(:,:) ) ! Ice transport along j-axis at V-point [kg/s] + + !! Fram Strait sea-ice transport (sea-ice + snow) (in ORCA2 = 5 points) + IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN ! ORCA R2 configuration + DO jj = mj0(137), mj1(137) ! B grid + IF( mj0(jj-1) >= nldj ) THEN + DO ji = MAX(mi0(134),nldi), MIN(mi1(138),nlei) + zrhoij = e1t(ji,jj ) * fr_i(ji,jj ) * ( rhoic*hicif(ji,jj ) + rhosn*hsnif(ji,jj ) ) + zrhoijm1 = e1t(ji,jj-1) * fr_i(ji,jj-1) * ( rhoic*hicif(ji,jj-1) + rhosn*hsnif(ji,jj-1) ) + ztr_fram = ztr_fram - 0.25 * ( v_ice(ji,jj)+ v_ice(ji+1,jj) ) * ( zrhoij + zrhoijm1 ) + END DO + ENDIF + END DO + IF( lk_mpp ) CALL mpp_sum( ztr_fram ) + CALL iom_put( 'fram_trans', ztr_fram ) ! Ice transport through Fram strait [kg/s] + ENDIF + + !ztmp(:,:) = 1. - AINT( frld(:,:), wp ) ! return 1 as soon as there is ice + DO jj = 1, jpj + DO ji = 1, jpi + ztmp(ji,jj) = 1. - AINT( frld(ji,jj), wp ) ! return 1 as soon as there is ice + END DO + END DO + + + CALL iom_put( 'ice_pres' , ztmp ) ! Ice presence [-] + CALL iom_put( 'ist_ipa' , ( sist(:,:) - rt0 ) * ztmp(:,:) ) ! Ice surface temperature [Celius] + CALL iom_put( 'uice_ipa' , u_ice(:,:) * ztmp(:,:) ) ! Ice velocity along i-axis at I-point [m/s] + CALL iom_put( 'vice_ipa' , v_ice(:,:) * ztmp(:,:) ) ! Ice velocity along j-axis at I-point [m/s] + + IF(ln_ctl) THEN + CALL prt_ctl_info(' lim_thd end ') + CALL prt_ctl( tab2d_1=hicif , clinfo1=' lim_thd: hicif : ', tab2d_2=hsnif , clinfo2=' hsnif : ' ) + CALL prt_ctl( tab2d_1=frld , clinfo1=' lim_thd: frld : ', tab2d_2=hicifp, clinfo2=' hicifp : ' ) + CALL prt_ctl( tab2d_1=phicif , clinfo1=' lim_thd: phicif : ', tab2d_2=pfrld , clinfo2=' pfrld : ' ) + CALL prt_ctl( tab2d_1=sist , clinfo1=' lim_thd: sist : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,1), clinfo1=' lim_thd: tbif 1 : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,2), clinfo1=' lim_thd: tbif 2 : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,3), clinfo1=' lim_thd: tbif 3 : ' ) + CALL prt_ctl( tab2d_1=fdtcn , clinfo1=' lim_thd: fdtcn : ', tab2d_2=qdtcn , clinfo2=' qdtcn : ' ) + CALL prt_ctl( tab2d_1=qstoif , clinfo1=' lim_thd: qstoif : ', tab2d_2=fsbbq , clinfo2=' fsbbq : ' ) + ENDIF + ! + END SUBROUTINE lim_thd_2 + + + SUBROUTINE lim_thd_init_2 + !!------------------------------------------------------------------- + !! *** ROUTINE lim_thd_init_2 *** + !! + !! ** Purpose : Physical constants and parameters linked to the ice + !! thermodynamics + !! + !! ** Method : Read the namicethd namelist and check the ice-thermo + !! parameter values called at the first timestep (nit000) + !! + !! ** input : Namelist namicether + !!------------------------------------------------------------------- + NAMELIST/namicethd/ hmelt , hiccrit, hicmin, hiclim, amax , & + & swiqst, sbeta , parlat, hakspl, hibspl, exld, & + & hakdif, hnzst , thth , parsub, alphs + !!------------------------------------------------------------------- + ! + REWIND( numnam_ice ) ! read namelist + READ ( numnam_ice , namicethd ) + IF( lk_cpl .AND. parsub /= 0.0 ) CALL ctl_stop( 'In coupled mode, use parsub = 0. or send dqla' ) + ! + IF(lwp) THEN ! control print + WRITE(numout,*) + WRITE(numout,*)'lim_thd_init_2: ice parameters for ice thermodynamic computation ' + WRITE(numout,*)'~~~~~~~~~~~~~~' + WRITE(numout,*)' maximum melting at the bottom hmelt = ', hmelt + WRITE(numout,*)' ice thick. for lateral accretion in NH (SH) hiccrit(1/2) = ', hiccrit + WRITE(numout,*)' ice thick. corr. to max. energy stored in brine pocket hicmin = ', hicmin + WRITE(numout,*)' minimum ice thickness hiclim = ', hiclim + WRITE(numout,*)' maximum lead fraction amax = ', amax + WRITE(numout,*)' energy stored in brine pocket (=1) or not (=0) swiqst = ', swiqst + WRITE(numout,*)' numerical carac. of the scheme for diffusion in ice ' + WRITE(numout,*)' Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) sbeta = ', sbeta + WRITE(numout,*)' percentage of energy used for lateral ablation parlat = ', parlat + WRITE(numout,*)' slope of distr. for Hakkinen-Mellor lateral melting hakspl = ', hakspl + WRITE(numout,*)' slope of distribution for Hibler lateral melting hibspl = ', hibspl + WRITE(numout,*)' exponent for leads-closure rate exld = ', exld + WRITE(numout,*)' coefficient for diffusions of ice and snow hakdif = ', hakdif + WRITE(numout,*)' threshold thick. for comp. of eq. thermal conductivity zhth = ', thth + WRITE(numout,*)' thickness of the surf. layer in temp. computation hnzst = ', hnzst + WRITE(numout,*)' switch for snow sublimation (=1) or not (=0) parsub = ', parsub + WRITE(numout,*)' coefficient for snow density when snow ice formation alphs = ', alphs + ENDIF + ! + uscomi = 1.0 / ( 1.0 - amax ) ! inverse of minimum lead fraction + rcdsn = hakdif * rcdsn + rcdic = hakdif * rcdic + ! + IF( hsndif > 100.e0 .OR. hicdif > 100.e0 ) THEN + cnscg = 0.e0 + ELSE + cnscg = rcpsn / rcpic ! ratio rcpsn/rcpic + ENDIF + ! + END SUBROUTINE lim_thd_init_2 + +#else + !!---------------------------------------------------------------------- + !! Default option Dummy module NO LIM 2.0 sea-ice model + !!---------------------------------------------------------------------- +CONTAINS + SUBROUTINE lim_thd_2 ! Dummy routine + END SUBROUTINE lim_thd_2 +#endif + + !!====================================================================== +END MODULE limthd_2 diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90.orig b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90.orig new file mode 100644 index 0000000000000000000000000000000000000000..686a27e3799efd1a9460b8d7bc2a5ccd5cc68e13 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/LIM_SRC_2_old/limthd_2.F90.orig @@ -0,0 +1,575 @@ +MODULE limthd_2 + !!====================================================================== + !! *** MODULE limthd_2 *** + !! LIM thermo ice model : ice thermodynamic + !!====================================================================== + !! History : 1.0 ! 2000-01 (LIM) + !! 2.0 ! 2002-07 (C. Ethe, G. Madec) F90 + !! 2.0 ! 2003-08 (C. Ethe) add lim_thd_init + !! - ! 2008-2008 (A. Caubel, G. Madec, E. Maisonnave, S. Masson ) generic coupled interface + !!--------------------------------------------------------------------- +#if defined key_lim2 + !!---------------------------------------------------------------------- + !! 'key_lim2' : LIM 2.0 sea-ice model + !!---------------------------------------------------------------------- + !! lim_thd_2 : thermodynamic of sea ice + !! lim_thd_init_2 : initialisation of sea-ice thermodynamic + !!---------------------------------------------------------------------- + USE phycst ! physical constants + USE dom_oce ! ocean space and time domain variables + USE domvvl + USE lbclnk + USE in_out_manager ! I/O manager + USE lib_mpp + USE iom ! IOM library + USE ice_2 ! LIM sea-ice variables + USE sbc_oce ! + USE sbc_ice ! + USE thd_ice_2 ! LIM thermodynamic sea-ice variables + USE dom_ice_2 ! LIM sea-ice domain + USE limthd_zdf_2 + USE limthd_lac_2 + USE limtab_2 + USE prtctl ! Print control + USE cpl_oasis3, ONLY : lk_cpl + USE diaar5, ONLY : lk_diaar5 + + IMPLICIT NONE + PRIVATE + + PUBLIC lim_thd_2 ! called by lim_step + + REAL(wp) :: epsi20 = 1.e-20 ! constant values + REAL(wp) :: epsi16 = 1.e-16 ! + REAL(wp) :: epsi04 = 1.e-04 ! + REAL(wp) :: rzero = 0.e0 ! + REAL(wp) :: rone = 1.e0 ! + + !! * Substitutions +# include "domzgr_substitute.h90" +# include "vectopt_loop_substitute.h90" + !!-------- ------------------------------------------------------------- + !! NEMO/LIM 3.2, UCL-LOCEAN-IPSL (2009) + !! $Id: limthd_2.F90 1924 2010-06-09 14:12:23Z charris $ + !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) + !!---------------------------------------------------------------------- + +CONTAINS + + SUBROUTINE lim_thd_2( kt ) + !!------------------------------------------------------------------- + !! *** ROUTINE lim_thd_2 *** + !! + !! ** Purpose : This routine manages the ice thermodynamic. + !! + !! ** Action : - Initialisation of some variables + !! - Some preliminary computation (oceanic heat flux + !! at the ice base, snow acc.,heat budget of the leads) + !! - selection of the icy points and put them in an array + !! - call lim_vert_ther for vert ice thermodynamic + !! - back to the geographic grid + !! - selection of points for lateral accretion + !! - call lim_lat_acc for the ice accretion + !! - back to the geographic grid + !! + !! References : Goosse et al. 1996, Bul. Soc. Roy. Sc. Liege, 65, 87-90 + !!--------------------------------------------------------------------- + INTEGER, INTENT(in) :: kt ! number of iteration + !! + INTEGER :: ji, jj ! dummy loop indices + INTEGER :: nbpb ! nb of icy pts for thermo. cal. + INTEGER :: nbpac ! nb of pts for lateral accretion + CHARACTER (len=22) :: charout + REAL(wp) :: zfric_umin = 5e-03 ! lower bound for the friction velocity + REAL(wp) :: zfric_umax = 2e-02 ! upper bound for the friction velocity + REAL(wp) :: zinda ! switch for test. the val. of concen. + REAL(wp) :: zindb, zindg ! switches for test. the val of arg + REAL(wp) :: zfricp ! temporary scalar + REAL(wp) :: za , zh, zthsnice ! + REAL(wp) :: zfric_u ! friction velocity + REAL(wp) :: zfnsol ! total non solar heat + REAL(wp) :: zfontn ! heat flux from snow thickness + REAL(wp) :: zfntlat, zpareff ! test. the val. of lead heat budget + REAL(wp), DIMENSION(jpi,jpj) :: ztmp ! 2D workspace + REAL(wp), DIMENSION(jpi,jpj) :: zqlbsbq ! link with lead energy budget qldif + REAL(wp) :: zuice_m, zvice_m ! Sea-ice velocities at U & V-points + REAL(wp) :: zhice_u, zhice_v ! Sea-ice volume at U & V-points + REAL(wp) :: ztr_fram ! Sea-ice transport through Fram strait + REAL(wp) :: zrhoij, zrhoijm1 ! temporary scalars + REAL(wp) :: zztmp ! temporary scalars within a loop + REAL(wp), DIMENSION(jpi,jpj) :: zlicegr ! link with lateral ice growth + REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmsk ! 3D workspace +!!$ REAL(wp), DIMENSION(jpi,jpj) :: firic !: IR flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: fcsic !: Sensible heat flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: fleic !: Latent heat flux over the ice (outputs only) +!!$ REAL(wp), DIMENSION(jpi,jpj) :: qlatic !: latent flux (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvosif !: Variation of volume at surface (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvobif !: Variation of ice volume at the bottom ice (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvolif !: Total variation of ice volume (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvonif !: Surface accretion Snow to Ice transformation (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zdvomif !: Bottom variation of ice volume due to melting (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zu_imasstr !: Sea-ice transport along i-axis at U-point (outputs only) + REAL(wp), DIMENSION(jpi,jpj) :: zv_imasstr !: Sea-ice transport along j-axis at V-point (outputs only) + !!------------------------------------------------------------------- + + IF( kt == nit000 ) CALL lim_thd_init_2 ! Initialization (first time-step only) + + !-------------------------------------------! + ! Initilization of diagnostic variables ! + !-------------------------------------------! + +!!gm needed? yes at least for some of these arrays + zdvosif(:,:) = 0.e0 ! variation of ice volume at surface + zdvobif(:,:) = 0.e0 ! variation of ice volume at bottom + zdvolif(:,:) = 0.e0 ! total variation of ice volume + zdvonif(:,:) = 0.e0 ! transformation of snow to sea-ice volume +! zdvonif(:,:) = 0.e0 ! lateral variation of ice volume + zlicegr(:,:) = 0.e0 ! lateral variation of ice volume + zdvomif(:,:) = 0.e0 ! variation of ice volume at bottom due to melting only + ztr_fram = 0.e0 ! sea-ice transport through Fram strait + fstric (:,:) = 0.e0 ! part of solar radiation absorbing inside the ice + fscmbq (:,:) = 0.e0 ! linked with fstric + ffltbif(:,:) = 0.e0 ! linked with fstric + qfvbq (:,:) = 0.e0 ! linked with fstric + rdmsnif(:,:) = 0.e0 ! variation of snow mass per unit area + rdmicif(:,:) = 0.e0 ! variation of ice mass per unit area + zmsk (:,:,:) = 0.e0 + + ! set to zero snow thickness smaller than epsi04 + DO jj = 1, jpj + DO ji = 1, jpi + hsnif(ji,jj) = hsnif(ji,jj) * MAX( rzero, SIGN( rone , hsnif(ji,jj) - epsi04 ) ) + END DO + END DO +!!gm better coded (do not use SIGN...) +! WHERE( hsnif(:,:) < epsi04 ) hsnif(:,:) = 0.e0 +!!gm + + IF(ln_ctl) CALL prt_ctl( tab2d_1=hsnif, clinfo1=' lim_thd: hsnif : ' ) + + !-----------------------------------! + ! Treatment of particular cases ! + !-----------------------------------! + + DO jj = 1, jpj + DO ji = 1, jpi + ! snow is transformed into ice if the original ice cover disappears. + zindg = tms(ji,jj) * MAX( rzero , SIGN( rone , -hicif(ji,jj) ) ) + hicif(ji,jj) = hicif(ji,jj) + zindg * rhosn * hsnif(ji,jj) / rau0 + hsnif(ji,jj) = ( rone - zindg ) * hsnif(ji,jj) + zindg * hicif(ji,jj) * ( rau0 - rhoic ) / rhosn + dmgwi(ji,jj) = zindg * (1.0 - frld(ji,jj)) * rhoic * hicif(ji,jj) ! snow/ice mass + + ! the lead fraction, frld, must be little than or equal to amax (ice ridging). + zthsnice = hsnif(ji,jj) + hicif(ji,jj) + zindb = tms(ji,jj) * ( 1.0 - MAX( rzero , SIGN( rone , - zthsnice ) ) ) + za = zindb * MIN( rone, ( 1.0 - frld(ji,jj) ) * uscomi ) + hsnif (ji,jj) = hsnif(ji,jj) * za + hicif (ji,jj) = hicif(ji,jj) * za + qstoif(ji,jj) = qstoif(ji,jj) * za + frld (ji,jj) = 1.0 - zindb * ( 1.0 - frld(ji,jj) ) / MAX( za, epsi20 ) + + ! the in situ ice thickness, hicif, must be equal to or greater than hiclim. + zh = MAX( rone , zindb * hiclim / MAX( hicif(ji,jj), epsi20 ) ) + hsnif (ji,jj) = hsnif(ji,jj) * zh + hicif (ji,jj) = hicif(ji,jj) * zh + qstoif(ji,jj) = qstoif(ji,jj) * zh + frld (ji,jj) = ( frld(ji,jj) + ( zh - 1.0 ) ) / zh + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl( tab2d_1=hicif , clinfo1=' lim_thd: hicif : ' ) + CALL prt_ctl( tab2d_1=hsnif , clinfo1=' lim_thd: hsnif : ' ) + CALL prt_ctl( tab2d_1=dmgwi , clinfo1=' lim_thd: dmgwi : ' ) + CALL prt_ctl( tab2d_1=qstoif, clinfo1=' lim_thd: qstoif : ' ) + CALL prt_ctl( tab2d_1=frld , clinfo1=' lim_thd: frld : ' ) + ENDIF + + + !-------------------------------! + ! Thermodynamics of sea ice ! + !-------------------------------! + + ! Partial computation of forcing for the thermodynamic sea ice model. + !-------------------------------------------------------------------------- + + sst_m(:,:) = sst_m(:,:) + rt0 + +!CDIR NOVERRCHK + DO jj = 1, jpj +!CDIR NOVERRCHK + DO ji = 1, jpi + zthsnice = hsnif(ji,jj) + hicif(ji,jj) + zindb = tms(ji,jj) * ( 1.0 - MAX( rzero , SIGN( rone , - zthsnice ) ) ) + pfrld(ji,jj) = frld(ji,jj) + zfricp = 1.0 - frld(ji,jj) + zinda = 1.0 - MAX( rzero , SIGN( rone , - zfricp ) ) + + ! solar irradiance transmission at the mixed layer bottom and used in the lead heat budget + thcm(ji,jj) = 0.e0 + + ! net downward heat flux from the ice to the ocean, expressed as a function of ocean + ! temperature and turbulent mixing (McPhee, 1992) + zfric_u = MAX ( MIN( SQRT( ust2s(ji,jj) ) , zfric_umax ) , zfric_umin ) ! friction velocity + fdtcn(ji,jj) = zindb * rau0 * rcp * 0.006 * zfric_u * ( sst_m(ji,jj) - tfu(ji,jj) ) + qdtcn(ji,jj) = zindb * fdtcn(ji,jj) * frld(ji,jj) * rdt_ice + + ! partial computation of the lead energy budget (qldif) +#if defined key_coupled + qldif(ji,jj) = tms(ji,jj) * rdt_ice & + & * ( ( qsr_tot(ji,jj) - qsr_ice(ji,jj,1) * zfricp ) * ( 1.0 - thcm(ji,jj) ) & + & + ( qns_tot(ji,jj) - qns_ice(ji,jj,1) * zfricp ) & + & + frld(ji,jj) * ( fdtcn(ji,jj) + ( 1.0 - zindb ) * fsbbq(ji,jj) ) ) +#else + zfontn = ( sprecip(ji,jj) / rhosn ) * xlsn ! energy for melting solid precipitation + zfnsol = qns(ji,jj) ! total non solar flux over the ocean + qldif(ji,jj) = tms(ji,jj) * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) ) & + & + zfnsol + fdtcn(ji,jj) - zfontn & + & + ( 1.0 - zindb ) * fsbbq(ji,jj) ) & + & * frld(ji,jj) * rdt_ice +!!$ qldif(ji,jj) = tms(ji,jj) * rdt_ice * frld(ji,jj) +!!$ & * ( qsr(ji,jj) * ( 1.0 - thcm(ji,jj) ) & +!!$ & + qns(ji,jj) + fdtcn(ji,jj) - zfontn & +!!$ & + ( 1.0 - zindb ) * fsbbq(ji,jj) ) & +#endif + ! parlat : percentage of energy used for lateral ablation (0.0) + zfntlat = 1.0 - MAX( rzero , SIGN( rone , - qldif(ji,jj) ) ) + zpareff = 1.0 + ( parlat - 1.0 ) * zinda * zfntlat + zqlbsbq(ji,jj) = qldif(ji,jj) * ( 1.0 - zpareff ) / MAX( (1.0 - frld(ji,jj)) * rdt_ice , epsi16 ) + qldif (ji,jj) = zpareff * qldif(ji,jj) + qdtcn (ji,jj) = zpareff * qdtcn(ji,jj) + + ! energy needed to bring ocean surface layer until its freezing + qcmif (ji,jj) = rau0 * rcp * fse3t_m(ji,jj,1) & + & * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) + + ! calculate oceanic heat flux. + fbif (ji,jj) = zindb * ( fsbbq(ji,jj) / MAX( (1.0 - frld(ji,jj)) , epsi20 ) + fdtcn(ji,jj) ) + + ! computation of the thermodynamic ice production (only needed for output) + hicifp(ji,jj) = hicif(ji,jj) * ( 1.0 - frld(ji,jj) ) + END DO + END DO + + sst_m(:,:) = sst_m(:,:) - rt0 + + ! Select icy points and fulfill arrays for the vectorial grid. + !---------------------------------------------------------------------- + nbpb = 0 + DO jj = 1, jpj + DO ji = 1, jpi + IF ( frld(ji,jj) < 1.0 ) THEN + nbpb = nbpb + 1 + npb(nbpb) = (jj - 1) * jpi + ji + ENDIF + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl(tab2d_1=pfrld, clinfo1=' lim_thd: pfrld : ', tab2d_2=thcm , clinfo2=' thcm : ') + CALL prt_ctl(tab2d_1=fdtcn, clinfo1=' lim_thd: fdtcn : ', tab2d_2=qdtcn , clinfo2=' qdtcn : ') + CALL prt_ctl(tab2d_1=qldif, clinfo1=' lim_thd: qldif : ', tab2d_2=zqlbsbq, clinfo2=' zqlbsbq : ') + CALL prt_ctl(tab2d_1=qcmif, clinfo1=' lim_thd: qcmif : ', tab2d_2=fbif , clinfo2=' fbif : ') + zmsk(:,:,1) = tms(:,:) + CALL prt_ctl(tab2d_1=qcmif , clinfo1=' lim_thd: qcmif : ', mask1=zmsk) + CALL prt_ctl(tab2d_1=hicifp, clinfo1=' lim_thd: hicifp : ') + WRITE(charout, FMT="('lim_thd: nbpb = ',I4)") nbpb + CALL prt_ctl_info(charout) + ENDIF + + + ! If there is no ice, do nothing. Otherwise, compute Top and Bottom accretion/ablation + !------------------------------------------------------------------------------------ + + IF( nbpb > 0 ) THEN + ! + ! put the variable in a 1-D array for thermodynamics process + CALL tab_2d_1d_2( nbpb, frld_1d (1:nbpb) , frld , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, h_ice_1d (1:nbpb) , hicif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, h_snow_1d (1:nbpb) , hsnif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, sist_1d (1:nbpb) , sist , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 1 ), tbif(:,:,1) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 2 ), tbif(:,:,2) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, tbif_1d (1:nbpb , 3 ), tbif(:,:,3) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qsr_ice_1d (1:nbpb) , qsr_ice(:,:,1) , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fr1_i0_1d (1:nbpb) , fr1_i0 , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fr2_i0_1d (1:nbpb) , fr2_i0 , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qns_ice_1d(1:nbpb) , qns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dqns_ice_1d(1:nbpb) , dqns_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + IF( .NOT. lk_cpl ) THEN + CALL tab_2d_1d_2( nbpb, qla_ice_1d (1:nbpb) , qla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dqla_ice_1d(1:nbpb) , dqla_ice(:,:,1), jpi, jpj, npb(1:nbpb) ) + ENDIF + CALL tab_2d_1d_2( nbpb, tfu_1d (1:nbpb) , tfu , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, sprecip_1d (1:nbpb) , sprecip , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, fbif_1d (1:nbpb) , fbif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, thcm_1d (1:nbpb) , thcm , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qldif_1d (1:nbpb) , qldif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qstbif_1d (1:nbpb) , qstoif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, rdmicif_1d (1:nbpb) , rdmicif , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, dmgwi_1d (1:nbpb) , dmgwi , jpi, jpj, npb(1:nbpb) ) + CALL tab_2d_1d_2( nbpb, qlbbq_1d (1:nbpb) , zqlbsbq , jpi, jpj, npb(1:nbpb) ) + ! + CALL lim_thd_zdf_2( 1, nbpb ) ! compute ice growth + ! + ! back to the geographic grid. + CALL tab_1d_2d_2( nbpb, frld , npb, frld_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, hicif , npb, h_ice_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, hsnif , npb, h_snow_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, sist , npb, sist_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,1), npb, tbif_1d (1:nbpb , 1 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,2), npb, tbif_1d (1:nbpb , 2 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, tbif(:,:,3), npb, tbif_1d (1:nbpb , 3 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpb, fscmbq , npb, fscbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, ffltbif , npb, fltbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, fstric , npb, fstbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qldif , npb, qldif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qfvbq , npb, qfvbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qstoif , npb, qstbif_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, rdmicif , npb, rdmicif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, dmgwi , npb, dmgwi_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, rdmsnif , npb, rdmsnif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvosif , npb, dvsbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvobif , npb, dvbbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvomif , npb, rdvomif_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvolif , npb, dvlbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, zdvonif , npb, dvnbq_1d (1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qsr_ice(:,:,1), npb, qsr_ice_1d(1:nbpb) , jpi, jpj ) + CALL tab_1d_2d_2( nbpb, qns_ice(:,:,1), npb, qns_ice_1d(1:nbpb) , jpi, jpj ) + IF( .NOT. lk_cpl ) CALL tab_1d_2d_2( nbpb, qla_ice(:,:,1), npb, qla_ice_1d(1:nbpb) , jpi, jpj ) + ! + ENDIF + + ! Up-date sea ice thickness + !-------------------------- + DO jj = 1, jpj + DO ji = 1, jpi + phicif(ji,jj) = hicif(ji,jj) + hicif(ji,jj) = hicif(ji,jj) * ( rone - MAX( rzero, SIGN( rone, - ( 1.0 - frld(ji,jj) ) ) ) ) + END DO + END DO + + + ! Tricky trick : add 2 to frld in the Southern Hemisphere + !-------------------------------------------------------- + IF( fcor(1,1) < 0.e0 ) THEN + DO jj = 1, njeqm1 + DO ji = 1, jpi + frld(ji,jj) = frld(ji,jj) + 2.0 + END DO + END DO + ENDIF + + CALL lbc_lnk( frld , 'T', 1. ) + + ! Select points for lateral accretion (this occurs when heat exchange + ! between ice and ocean is negative; ocean losing heat) + !----------------------------------------------------------------- + nbpac = 0 + DO jj = 1, jpj + DO ji = 1, jpi +!i yes! IF ( ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN + IF ( tms(ji,jj) * ( qcmif(ji,jj) - qldif(ji,jj) ) > 0.e0 ) THEN + nbpac = nbpac + 1 + npac( nbpac ) = (jj - 1) * jpi + ji + ENDIF + END DO + END DO + + IF(ln_ctl) THEN + CALL prt_ctl(tab2d_1=phicif, clinfo1=' lim_thd: phicif : ', tab2d_2=hicif, clinfo2=' hicif : ') + WRITE(charout, FMT="('lim_thd: nbpac = ',I4)") nbpac + CALL prt_ctl_info(charout) + ENDIF + + + ! If ocean gains heat do nothing ; otherwise, one performs lateral accretion + !-------------------------------------------------------------------------------- + IF( nbpac > 0 ) THEN + ! + zlicegr(:,:) = rdmicif(:,:) ! to output the lateral sea-ice growth + !...Put the variable in a 1-D array for lateral accretion + CALL tab_2d_1d_2( nbpac, frld_1d (1:nbpac) , frld , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, h_snow_1d (1:nbpac) , hsnif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, h_ice_1d (1:nbpac) , hicif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 1 ), tbif(:,:,1), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 2 ), tbif(:,:,2), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tbif_1d (1:nbpac , 3 ), tbif(:,:,3), jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qldif_1d (1:nbpac) , qldif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qcmif_1d (1:nbpac) , qcmif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, qstbif_1d (1:nbpac) , qstoif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, rdmicif_1d(1:nbpac) , rdmicif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, dvlbq_1d (1:nbpac) , zdvolif , jpi, jpj, npac(1:nbpac) ) + CALL tab_2d_1d_2( nbpac, tfu_1d (1:nbpac) , tfu , jpi, jpj, npac(1:nbpac) ) + ! + CALL lim_thd_lac_2( 1 , nbpac ) ! lateral accretion routine. + ! + ! back to the geographic grid + CALL tab_1d_2d_2( nbpac, frld , npac(1:nbpac), frld_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, hsnif , npac(1:nbpac), h_snow_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, hicif , npac(1:nbpac), h_ice_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,1), npac(1:nbpac), tbif_1d (1:nbpac , 1 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,2), npac(1:nbpac), tbif_1d (1:nbpac , 2 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, tbif(:,:,3), npac(1:nbpac), tbif_1d (1:nbpac , 3 ), jpi, jpj ) + CALL tab_1d_2d_2( nbpac, qstoif , npac(1:nbpac), qstbif_1d (1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, rdmicif , npac(1:nbpac), rdmicif_1d(1:nbpac) , jpi, jpj ) + CALL tab_1d_2d_2( nbpac, zdvolif , npac(1:nbpac), dvlbq_1d (1:nbpac) , jpi, jpj ) + ! + ENDIF + + + ! Recover frld values between 0 and 1 in the Southern Hemisphere (tricky trick) + ! Update daily thermodynamic ice production. + !------------------------------------------------------------------------------ + DO jj = 1, jpj + DO ji = 1, jpi + frld (ji,jj) = MIN( frld(ji,jj), ABS( frld(ji,jj) - 2.0 ) ) + fr_i (ji,jj) = 1.0 - frld(ji,jj) + hicifp(ji,jj) = hicif(ji,jj) * fr_i(ji,jj) - hicifp(ji,jj) + END DO + END DO + + ! Outputs + !-------------------------------------------------------------------------------- + ztmp(:,:) = 1. - pfrld(:,:) ! fraction of ice after the dynamic, before the thermodynamic + CALL iom_put( 'ioceflxb', fbif ) ! Oceanic flux at the ice base [W/m2 ???] + CALL iom_put( 'ist_cea', (sist(:,:) - rt0) * ztmp(:,:) ) ! Ice surface temperature [Celius] + CALL iom_put( 'qsr_ai_cea', qsr_ice(:,:,1) * ztmp(:,:) ) ! Solar flux over the ice [W/m2] + CALL iom_put( 'qns_ai_cea', qns_ice(:,:,1) * ztmp(:,:) ) ! Non-solar flux over the ice [W/m2] + IF( .NOT. lk_cpl ) CALL iom_put( 'qla_ai_cea', qla_ice(:,:,1) * ztmp(:,:) ) ! Latent flux over the ice [W/m2] + ! + CALL iom_put( 'snowthic_cea', hsnif (:,:) * fr_i(:,:) ) ! Snow thickness [m] + CALL iom_put( 'icethic_cea' , hicif (:,:) * fr_i(:,:) ) ! Ice thickness [m] + zztmp = 1.0 / rdt_ice + CALL iom_put( 'iceprod_cea' , hicifp (:,:) * zztmp ) ! Ice produced [m/s] + IF( lk_diaar5 ) THEN + CALL iom_put( 'snowmel_cea' , rdmsnif(:,:) * zztmp ) ! Snow melt [kg/m2/s] + zztmp = rhoic / rdt_ice + CALL iom_put( 'sntoice_cea' , zdvonif(:,:) * zztmp ) ! Snow to Ice transformation [kg/m2/s] + CALL iom_put( 'ticemel_cea' , zdvosif(:,:) * zztmp ) ! Melt at Sea Ice top [kg/m2/s] + CALL iom_put( 'bicemel_cea' , zdvomif(:,:) * zztmp ) ! Melt at Sea Ice bottom [kg/m2/s] + zlicegr(:,:) = MAX( 0.e0, rdmicif(:,:)-zlicegr(:,:) ) + CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp ) ! Latereal sea ice growth [kg/m2/s] + ENDIF + ! + ! Compute the Eastward & Northward sea-ice transport + zztmp = 0.25 * rhoic + DO jj = 1, jpjm1 + DO ji = 1, jpim1 ! NO vector opt. + ! Ice velocities, volume & transport at U & V-points + zuice_m = u_ice(ji+1,jj+1) + u_ice(ji+1,jj ) + zvice_m = v_ice(ji+1,jj+1) + v_ice(ji ,jj+1) + zhice_u = hicif(ji,jj)*e2t(ji,jj)*fr_i(ji,jj) + hicif(ji+1,jj )*e2t(ji+1,jj )*fr_i(ji+1,jj ) + zhice_v = hicif(ji,jj)*e1t(ji,jj)*fr_i(ji,jj) + hicif(ji ,jj+1)*e1t(ji ,jj+1)*fr_i(ji ,jj+1) + zu_imasstr(ji,jj) = zztmp * zhice_u * zuice_m + zv_imasstr(ji,jj) = zztmp * zhice_v * zvice_m + END DO + END DO + CALL lbc_lnk( zu_imasstr, 'U', -1. ) ; CALL lbc_lnk( zv_imasstr, 'V', -1. ) + CALL iom_put( 'u_imasstr', zu_imasstr(:,:) ) ! Ice transport along i-axis at U-point [kg/s] + CALL iom_put( 'v_imasstr', zv_imasstr(:,:) ) ! Ice transport along j-axis at V-point [kg/s] + + !! Fram Strait sea-ice transport (sea-ice + snow) (in ORCA2 = 5 points) + IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN ! ORCA R2 configuration + DO jj = mj0(137), mj1(137) ! B grid + IF( mj0(jj-1) >= nldj ) THEN + DO ji = MAX(mi0(134),nldi), MIN(mi1(138),nlei) + zrhoij = e1t(ji,jj ) * fr_i(ji,jj ) * ( rhoic*hicif(ji,jj ) + rhosn*hsnif(ji,jj ) ) + zrhoijm1 = e1t(ji,jj-1) * fr_i(ji,jj-1) * ( rhoic*hicif(ji,jj-1) + rhosn*hsnif(ji,jj-1) ) + ztr_fram = ztr_fram - 0.25 * ( v_ice(ji,jj)+ v_ice(ji+1,jj) ) * ( zrhoij + zrhoijm1 ) + END DO + ENDIF + END DO + IF( lk_mpp ) CALL mpp_sum( ztr_fram ) + CALL iom_put( 'fram_trans', ztr_fram ) ! Ice transport through Fram strait [kg/s] + ENDIF + + ztmp(:,:) = 1. - AINT( frld(:,:), wp ) ! return 1 as soon as there is ice + CALL iom_put( 'ice_pres' , ztmp ) ! Ice presence [-] + CALL iom_put( 'ist_ipa' , ( sist(:,:) - rt0 ) * ztmp(:,:) ) ! Ice surface temperature [Celius] + CALL iom_put( 'uice_ipa' , u_ice(:,:) * ztmp(:,:) ) ! Ice velocity along i-axis at I-point [m/s] + CALL iom_put( 'vice_ipa' , v_ice(:,:) * ztmp(:,:) ) ! Ice velocity along j-axis at I-point [m/s] + + IF(ln_ctl) THEN + CALL prt_ctl_info(' lim_thd end ') + CALL prt_ctl( tab2d_1=hicif , clinfo1=' lim_thd: hicif : ', tab2d_2=hsnif , clinfo2=' hsnif : ' ) + CALL prt_ctl( tab2d_1=frld , clinfo1=' lim_thd: frld : ', tab2d_2=hicifp, clinfo2=' hicifp : ' ) + CALL prt_ctl( tab2d_1=phicif , clinfo1=' lim_thd: phicif : ', tab2d_2=pfrld , clinfo2=' pfrld : ' ) + CALL prt_ctl( tab2d_1=sist , clinfo1=' lim_thd: sist : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,1), clinfo1=' lim_thd: tbif 1 : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,2), clinfo1=' lim_thd: tbif 2 : ' ) + CALL prt_ctl( tab2d_1=tbif(:,:,3), clinfo1=' lim_thd: tbif 3 : ' ) + CALL prt_ctl( tab2d_1=fdtcn , clinfo1=' lim_thd: fdtcn : ', tab2d_2=qdtcn , clinfo2=' qdtcn : ' ) + CALL prt_ctl( tab2d_1=qstoif , clinfo1=' lim_thd: qstoif : ', tab2d_2=fsbbq , clinfo2=' fsbbq : ' ) + ENDIF + ! + END SUBROUTINE lim_thd_2 + + + SUBROUTINE lim_thd_init_2 + !!------------------------------------------------------------------- + !! *** ROUTINE lim_thd_init_2 *** + !! + !! ** Purpose : Physical constants and parameters linked to the ice + !! thermodynamics + !! + !! ** Method : Read the namicethd namelist and check the ice-thermo + !! parameter values called at the first timestep (nit000) + !! + !! ** input : Namelist namicether + !!------------------------------------------------------------------- + NAMELIST/namicethd/ hmelt , hiccrit, hicmin, hiclim, amax , & + & swiqst, sbeta , parlat, hakspl, hibspl, exld, & + & hakdif, hnzst , thth , parsub, alphs + !!------------------------------------------------------------------- + ! + REWIND( numnam_ice ) ! read namelist + READ ( numnam_ice , namicethd ) + IF( lk_cpl .AND. parsub /= 0.0 ) CALL ctl_stop( 'In coupled mode, use parsub = 0. or send dqla' ) + ! + IF(lwp) THEN ! control print + WRITE(numout,*) + WRITE(numout,*)'lim_thd_init_2: ice parameters for ice thermodynamic computation ' + WRITE(numout,*)'~~~~~~~~~~~~~~' + WRITE(numout,*)' maximum melting at the bottom hmelt = ', hmelt + WRITE(numout,*)' ice thick. for lateral accretion in NH (SH) hiccrit(1/2) = ', hiccrit + WRITE(numout,*)' ice thick. corr. to max. energy stored in brine pocket hicmin = ', hicmin + WRITE(numout,*)' minimum ice thickness hiclim = ', hiclim + WRITE(numout,*)' maximum lead fraction amax = ', amax + WRITE(numout,*)' energy stored in brine pocket (=1) or not (=0) swiqst = ', swiqst + WRITE(numout,*)' numerical carac. of the scheme for diffusion in ice ' + WRITE(numout,*)' Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) sbeta = ', sbeta + WRITE(numout,*)' percentage of energy used for lateral ablation parlat = ', parlat + WRITE(numout,*)' slope of distr. for Hakkinen-Mellor lateral melting hakspl = ', hakspl + WRITE(numout,*)' slope of distribution for Hibler lateral melting hibspl = ', hibspl + WRITE(numout,*)' exponent for leads-closure rate exld = ', exld + WRITE(numout,*)' coefficient for diffusions of ice and snow hakdif = ', hakdif + WRITE(numout,*)' threshold thick. for comp. of eq. thermal conductivity zhth = ', thth + WRITE(numout,*)' thickness of the surf. layer in temp. computation hnzst = ', hnzst + WRITE(numout,*)' switch for snow sublimation (=1) or not (=0) parsub = ', parsub + WRITE(numout,*)' coefficient for snow density when snow ice formation alphs = ', alphs + ENDIF + ! + uscomi = 1.0 / ( 1.0 - amax ) ! inverse of minimum lead fraction + rcdsn = hakdif * rcdsn + rcdic = hakdif * rcdic + ! + IF( hsndif > 100.e0 .OR. hicdif > 100.e0 ) THEN + cnscg = 0.e0 + ELSE + cnscg = rcpsn / rcpic ! ratio rcpsn/rcpic + ENDIF + ! + END SUBROUTINE lim_thd_init_2 + +#else + !!---------------------------------------------------------------------- + !! Default option Dummy module NO LIM 2.0 sea-ice model + !!---------------------------------------------------------------------- +CONTAINS + SUBROUTINE lim_thd_2 ! Dummy routine + END SUBROUTINE lim_thd_2 +#endif + + !!====================================================================== +END MODULE limthd_2 diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90 b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90 new file mode 100644 index 0000000000000000000000000000000000000000..b2058fb33e4c8dd7c964188113690111ee82368d --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90 @@ -0,0 +1,741 @@ +MODULE diawri + !!====================================================================== + !! *** MODULE diawri *** + !! Ocean diagnostics : write ocean output files + !!===================================================================== + + !!---------------------------------------------------------------------- + !! * Modules used + USE oce ! ocean dynamics and tracers + USE dom_oce ! ocean space and time domain + USE zdf_oce ! ocean vertical physics + USE ldftra_oce ! ocean active tracers: lateral physics + USE ldfdyn_oce ! ocean dynamics: lateral physics + USE sol_oce ! solver variables + USE sbc_oce ! Surface boundary condition: ocean fields + USE sbc_ice ! Surface boundary condition: ice fields + USE sbcssr ! restoring term toward SST/SSS climatology + USE phycst ! physical constants + USE zdfmxl ! mixed layer + USE dianam ! build name of file (routine) + USE zdfddm ! vertical physics: double diffusion + USE diahth ! thermocline diagnostics + USE lbclnk ! ocean lateral boundary conditions (or mpp link) + USE in_out_manager ! I/O manager + USE diadimg ! dimg direct access file format output + USE diaar5, ONLY : lk_diaar5 + USE iom + USE ioipsl +#if defined key_lim2 + USE limwri_2 +#endif + IMPLICIT NONE + PRIVATE + + !! * Accessibility + PUBLIC dia_wri ! routines called by step.F90 + PUBLIC dia_wri_state + + !! * Module variables + INTEGER :: & + nid_T, nz_T, nh_T, ndim_T, ndim_hT, & ! grid_T file + nid_U, nz_U, nh_U, ndim_U, ndim_hU, & ! grid_U file + nid_V, nz_V, nh_V, ndim_V, ndim_hV, & ! grid_V file + nid_W, nz_W, nh_W, & ! grid_W file + ndex(1) ! ??? + INTEGER, DIMENSION(jpi*jpj) :: & + ndex_hT, ndex_hU, ndex_hV + INTEGER, DIMENSION(jpi*jpj*jpk) :: & + ndex_T, ndex_U, ndex_V + + !! * Substitutions +# include "zdfddm_substitute.h90" +# include "domzgr_substitute.h90" +# include "vectopt_loop_substitute.h90" + !!---------------------------------------------------------------------- + !! OPA 9.0 , LOCEAN-IPSL (2005) + !! $Id: diawri.F90 1792 2009-12-21 15:05:15Z rblod $ + !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt + !!---------------------------------------------------------------------- + +CONTAINS + +#if defined key_dimgout + !!---------------------------------------------------------------------- + !! dia_wri : create the dimg direct access output file (mpp) + !!---------------------------------------------------------------------- +# include "diawri_dimg.h90" + +#else + !!---------------------------------------------------------------------- + !! Default option NetCDF output file + !!---------------------------------------------------------------------- + !! dia_wri : create the standart NetCDF output files + !! dia_wri_state : create an output NetCDF file for a single + !! instantaeous ocean state and forcing fields + !!---------------------------------------------------------------------- +# if defined key_iomput + SUBROUTINE dia_wri( kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri *** + !! + !! ** Purpose : Standard output of opa: dynamics and tracer fields + !! NETCDF format is used by default + !! + !! ** Method : use iom_put + !! + !! History : + !! 3.2 ! 05-11 (B. Lemaire) creation from old diawri + !!---------------------------------------------------------------------- + USE oce, ONLY : z3d => ta ! use ta as 3D workspace + !! + INTEGER, INTENT( in ) :: kt ! ocean time-step index + !! + INTEGER :: ji, jj, jk ! dummy loop indices + REAL(wp) :: zztmp, zztmpx, zztmpy ! + REAL(wp), DIMENSION(jpi,jpj) :: z2d ! + !!---------------------------------------------------------------------- + ! + ! Output the initial state and forcings + IF( ninist == 1 ) THEN + CALL dia_wri_state( 'output.init', kt ) + ninist = 0 + ENDIF + + CALL iom_put( "toce" , tn ) ! temperature + CALL iom_put( "soce" , sn ) ! salinity + CALL iom_put( "sst" , tn(:,:,1) ) ! sea surface temperature + CALL iom_put( "sst2" , tn(:,:,1) * tn(:,:,1) ) ! square of sea surface temperature + CALL iom_put( "sss" , sn(:,:,1) ) ! sea surface salinity + CALL iom_put( "sss2" , sn(:,:,1) * sn(:,:,1) ) ! square of sea surface salinity + CALL iom_put( "uoce" , un ) ! i-current + CALL iom_put( "voce" , vn ) ! j-current + + CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. + CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. + IF( lk_zdfddm ) THEN + CALL iom_put( "avs" , fsavs(:,:,:) ) ! S vert. eddy diff. coef. + ENDIF + + DO jj = 2, jpjm1 ! sst gradient + DO ji = fs_2, fs_jpim1 ! vector opt. + zztmp = tn(ji,jj,1) + zztmpx = ( tn(ji+1,jj ,1) - zztmp ) / e1u(ji,jj) + ( zztmp - tn(ji-1,jj ,1) ) / e1u(ji-1,jj ) + zztmpy = ( tn(ji ,jj+1,1) - zztmp ) / e2v(ji,jj) + ( zztmp - tn(ji ,jj-1,1) ) / e2v(ji ,jj-1) + z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & + & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) + END DO + END DO + CALL lbc_lnk( z2d, 'T', 1. ) + CALL iom_put( "|sstgrad|2", z2d ) ! square of module of sst gradient +!CDIR NOVERRCHK + z2d(:,:) = SQRT( z2d(:,:) ) + CALL iom_put( "|sstgrad|" , z2d ) ! module of sst gradient + + IF( lk_diaar5 ) THEN + z3d(:,:,jpk) = 0.e0 + DO jk = 1, jpkm1 + z3d(:,:,jk) = rau0 * un(:,:,jk) * e1u(:,:) * fse3u(:,:,jk) + END DO + CALL iom_put( "u_masstr", z3d ) ! mass transport in i-direction + zztmp = 0.5 * rcp + z2d(:,:) = 0.e0 + DO jk = 1, jpkm1 + DO jj = 2, jpjm1 + DO ji = fs_2, fs_jpim1 ! vector opt. + z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tn(ji,jj,jk) + tn(ji+1,jj,jk) ) + END DO + END DO + END DO + CALL lbc_lnk( z2d, 'U', -1. ) + CALL iom_put( "u_heattr", z2d ) ! heat transport in i-direction + DO jk = 1, jpkm1 + z3d(:,:,jk) = rau0 * vn(:,:,jk) * e2v(:,:) * fse3v(:,:,jk) + END DO + CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction + z2d(:,:) = 0.e0 + DO jk = 1, jpkm1 + DO jj = 2, jpjm1 + DO ji = fs_2, fs_jpim1 ! vector opt. + z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tn(ji,jj,jk) + tn(ji,jj+1,jk) ) + END DO + END DO + END DO + CALL lbc_lnk( z2d, 'V', -1. ) + CALL iom_put( "v_heattr", z2d ) ! heat transport in i-direction + ENDIF + + END SUBROUTINE dia_wri + +#else + SUBROUTINE dia_wri( kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri *** + !! + !! ** Purpose : Standard output of opa: dynamics and tracer fields + !! NETCDF format is used by default + !! + !! ** Method : At the beginning of the first time step (nit000), + !! define all the NETCDF files and fields + !! At each time step call histdef to compute the mean if ncessary + !! Each nwrite time step, output the instantaneous or mean fields + !! + !! History : + !! ! 91-03 (M.-A. Foujols) Original code + !! ! 91-11 (G. Madec) + !! ! 92-06 (M. Imbard) correction restart file + !! ! 92-07 (M. Imbard) split into diawri and rstwri + !! ! 93-03 (M. Imbard) suppress writibm + !! ! 98-01 (C. Levy) NETCDF format using ioipsl INTERFACE + !! ! 99-02 (E. Guilyardi) name of netCDF files + variables + !! 8.5 ! 02-09 (G. Madec) F90: Free form and module + !! 9.0 ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! * Arguments + INTEGER, INTENT( in ) :: kt ! ocean time-step index + + !! * Local declarations + LOGICAL :: ll_print = .FALSE. ! =T print and flush numout + CHARACTER (len=40) :: & + clhstnam, clop, clmx ! temporary names + INTEGER :: inum = 11 ! temporary logical unit + INTEGER :: & + iimi, iima, ipk, it, itmod, & ! temporary integers + ijmi, ijma ! " " + REAL(wp) :: & + zsto, zout, zmax, & ! temporary scalars + zjulian, zdt ! " " + REAL(wp), DIMENSION(jpi,jpj) :: & + zw2d ! temporary workspace + !!---------------------------------------------------------------------- + ! + ! Output the initial state and forcings + IF( ninist == 1 ) THEN + CALL dia_wri_state( 'output.init', kt ) + ninist = 0 + ENDIF + ! + ! 0. Initialisation + ! ----------------- + + ! local variable for debugging + ll_print = .FALSE. + ll_print = ll_print .AND. lwp + + ! Define frequency of output and means + zdt = rdt + IF( nacc == 1 ) zdt = rdtmin + IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) + ELSE ; clop = "x" ! no use of the mask value (require less cpu time) + ENDIF +#if defined key_diainstant + zsto = nwrite * zdt + clop = "inst("//TRIM(clop)//")" +#else + zsto=zdt + clop = "ave("//TRIM(clop)//")" +#endif + zout = nwrite * zdt + zmax = ( nitend - nit000 + 1 ) * zdt + + ! Define indices of the horizontal output zoom and vertical limit storage + iimi = 1 ; iima = jpi + ijmi = 1 ; ijma = jpj + ipk = jpk + + ! define time axis + it = kt + itmod = kt - nit000 + 1 + + + ! 1. Define NETCDF files and fields at beginning of first time step + ! ----------------------------------------------------------------- + + IF( kt == nit000 ) THEN + + ! Define the NETCDF files (one per grid) + + ! Compute julian date from starting date of the run + CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) + zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment + IF(lwp)WRITE(numout,*) + IF(lwp)WRITE(numout,*) 'Date 0 used :', nit000, ' YEAR ', nyear, & + & ' MONTH ', nmonth, ' DAY ', nday, 'Julian day : ', zjulian + IF(lwp)WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma, & + ' limit storage in depth = ', ipk + + ! WRITE root name in date.file for use by postpro + IF(lwp) THEN + CALL dia_nam( clhstnam, nwrite,' ' ) + CALL ctl_opn( inum, 'date.file', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) + WRITE(inum,*) clhstnam + CLOSE(inum) + ENDIF + + ! Define the T grid FILE ( nid_T ) + + CALL dia_nam( clhstnam, nwrite, 'grid_T' ) + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam ! filename + CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom ) + CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept + & "m", ipk, gdept_0, nz_T, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T ) ! volume + CALL wheneq( jpi*jpj , tmask, 1, 1., ndex_hT, ndim_hT ) ! surface + + ! Define the U grid FILE ( nid_U ) + + CALL dia_nam( clhstnam, nwrite, 'grid_U' ) + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam ! filename + CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu, & ! Horizontal grid: glamu and gphiu + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom ) + CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept + & "m", ipk, gdept_0, nz_U, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, umask, 1, 1., ndex_U , ndim_U ) ! volume + CALL wheneq( jpi*jpj , umask, 1, 1., ndex_hU, ndim_hU ) ! surface + + ! Define the V grid FILE ( nid_V ) + + CALL dia_nam( clhstnam, nwrite, 'grid_V' ) ! filename + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam + CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv, & ! Horizontal grid: glamv and gphiv + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom ) + CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept + & "m", ipk, gdept_0, nz_V, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, vmask, 1, 1., ndex_V , ndim_V ) ! volume + CALL wheneq( jpi*jpj , vmask, 1, 1., ndex_hV, ndim_hV ) ! surface + + ! Define the W grid FILE ( nid_W ) + + CALL dia_nam( clhstnam, nwrite, 'grid_W' ) ! filename + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam + CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom ) + CALL histvert( nid_W, "depthw", "Vertical W levels", & ! Vertical grid: gdepw + & "m", ipk, gdepw_0, nz_W, "down" ) + + + ! Declare all the output fields as NETCDF variables + + ! !!! nid_T : 3D + CALL histdef( nid_T, "votemper", "Temperature" , "C" , & ! tn + & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) + CALL histdef( nid_T, "vosaline", "Salinity" , "PSU" , & ! sn + & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) + ! !!! nid_T : 2D + CALL histdef( nid_T, "sosstsst", "Sea Surface temperature" , "C" , & ! sst + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosaline", "Sea Surface Salinity" , "PSU" , & ! sss + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sossheig", "Sea Surface Height" , "m" , & ! ssh + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$#if defined key_lim3 || defined key_lim2 +!!$ ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to +!!$ ! internal damping to Levitus that can be diagnosed from others +!!$ ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup +!!$ CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater" , "kg/m2/s", & ! fsalt +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$ CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater" , "kg/m2/s", & ! fmass +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$#endif + CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux" , "Kg/m2/s", & ! emp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$ CALL histdef( nid_T, "sorunoff", "Runoffs" , "Kg/m2/s", & ! runoffs +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux" , "kg/m2/s", & ! emps + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosalflx", "Surface Salt Flux" , "Kg/m2/s", & ! emps * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sohefldo", "Net Downward Heat Flux" , "W/m2" , & ! qns + qsr + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "soshfldo", "Shortwave Radiation" , "W/m2" , & ! qsr + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "somixhgt", "Turbocline Depth" , "m" , & ! hmld + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "somxl010", "Mixed Layer Depth 0.01" , "m" , & ! hmlp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "soicecov", "Ice fraction" , "[0,1]" , & ! fr_i + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowindsp", "wind speed at 10m" , "m/s" , & ! wndm + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#if ! defined key_coupled + CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping" , "Kg/m2/s", & ! erp * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + + + +#if ( defined key_coupled && ! defined key_lim3 && ! defined key_lim2 ) + CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosafldp", "Surface salt flux: Damping" , "Kg/m2/s", & ! erp * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif +#if defined key_diaspr + CALL histdef( nid_T, "sosurfps", "Surface Pressure" , "cm" , & ! sp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + clmx ="l_max(only(x))" ! max index on a period + CALL histdef( nid_T, "sobowlin", "Bowl Index" , "W-point", & ! bowl INDEX + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clmx, zsto, zout ) +#if defined key_diahth + CALL histdef( nid_T, "sothedep", "Thermocline Depth" , "m" , & ! hth + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "so20chgt", "Depth of 20C isotherm" , "m" , & ! hd20 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "so28chgt", "Depth of 28C isotherm" , "m" , & ! hd28 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sohtc300", "Heat content 300 m" , "W" , & ! htc3 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + +#if defined key_coupled +# if defined key_lim3 + Must be adapted to LIM3 +# else + CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature" , "K" , & ! tn_ice + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T,"soicealb" , "Ice Albedo" , "[0,1]" , & ! alb_ice + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +# endif +#endif + + CALL histend( nid_T ) + + ! !!! nid_U : 3D + CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! un + & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current" , "m/s" , & ! u_eiv + & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) +#endif + ! !!! nid_U : 2D + CALL histdef( nid_U, "sozotaux", "Wind Stress along i-axis" , "N/m2" , & ! utau + & jpi, jpj, nh_U, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) + + CALL histend( nid_U ) + + ! !!! nid_V : 3D + CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vn + & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current" , "m/s" , & ! v_eiv + & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) +#endif + ! !!! nid_V : 2D + CALL histdef( nid_V, "sometauy", "Wind Stress along j-axis" , "N/m2" , & ! vtau + & jpi, jpj, nh_V, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) + + CALL histend( nid_V ) + + ! !!! nid_W : 3D + CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! wn + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity" , "m/s" , & ! w_eiv + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) +#endif + CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + CALL histdef( nid_W, "votkeavm", "Vertical Eddy Viscosity" , "m2/s" , & ! avmu + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + + IF( lk_zdfddm ) THEN + CALL histdef( nid_W,"voddmavs","Salt Vertical Eddy Diffusivity" , "m2/s" , & ! avs + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + ENDIF + ! !!! nid_W : 2D +#if defined key_traldf_c2d + CALL histdef( nid_W, "soleahtw", "lateral eddy diffusivity" , "m2/s" , & ! ahtw + & jpi, jpj, nh_W, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) +# if defined key_traldf_eiv + CALL histdef( nid_W, "soleaeiw", "eddy induced vel. coeff. at w-point", "m2/s", & ! aeiw + & jpi, jpj, nh_W, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) +# endif +#endif + + CALL histend( nid_W ) + + IF(lwp) WRITE(numout,*) + IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization' + IF(ll_print) CALL FLUSH(numout ) + + ENDIF + + ! 2. Start writing data + ! --------------------- + + ! ndex(1) est utilise ssi l'avant dernier argument est diffferent de + ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument + ! donne le nombre d'elements, et ndex la liste des indices a sortir + + IF( lwp .AND. MOD( itmod, nwrite ) == 0 ) THEN + WRITE(numout,*) 'dia_wri : write model outputs in NetCDF files at ', kt, 'time-step' + WRITE(numout,*) '~~~~~~ ' + ENDIF + + ! Write fields on T grid + CALL histwrite( nid_T, "votemper", it, tn , ndim_T , ndex_T ) ! temperature + CALL histwrite( nid_T, "vosaline", it, sn , ndim_T , ndex_T ) ! salinity + CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface temperature + CALL histwrite( nid_T, "sosaline", it, sn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity + CALL histwrite( nid_T, "sossheig", it, sshn , ndim_hT, ndex_hT ) ! sea surface height +!!$#if defined key_lim3 || defined key_lim2 +!!$ CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:) , ndim_hT, ndex_hT ) ! ice=>ocean water flux +!!$ CALL histwrite( nid_T, "sowaflep", it, fmass(:,:) , ndim_hT, ndex_hT ) ! atmos=>ocean water flux +!!$#endif + CALL histwrite( nid_T, "sowaflup", it, emp , ndim_hT, ndex_hT ) ! upward water flux +!!$ CALL histwrite( nid_T, "sorunoff", it, runoff , ndim_hT, ndex_hT ) ! runoff + CALL histwrite( nid_T, "sowaflcd", it, emps , ndim_hT, ndex_hT ) ! c/d water flux + zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosalflx", it, zw2d , ndim_hT, ndex_hT ) ! c/d salt flux + CALL histwrite( nid_T, "sohefldo", it, qns + qsr , ndim_hT, ndex_hT ) ! total heat flux + CALL histwrite( nid_T, "soshfldo", it, qsr , ndim_hT, ndex_hT ) ! solar heat flux + CALL histwrite( nid_T, "somixhgt", it, hmld , ndim_hT, ndex_hT ) ! turbocline depth + CALL histwrite( nid_T, "somxl010", it, hmlp , ndim_hT, ndex_hT ) ! mixed layer depth + CALL histwrite( nid_T, "soicecov", it, fr_i , ndim_hT, ndex_hT ) ! ice fraction + CALL histwrite( nid_T, "sowindsp", it, wndm , ndim_hT, ndex_hT ) ! wind speed +#if ! defined key_coupled + CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping + CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping + zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping +#endif +#if ( defined key_coupled && ! defined key_lim3 && ! defined key_lim2 ) + CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping + CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping + zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping +#endif +#if defined key_diaspr + CALL histwrite( nid_T, "sosurfps", it, gps , ndim_hT, ndex_hT ) ! surface pressure +#endif + zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1) + CALL histwrite( nid_T, "sobowlin", it, zw2d , ndim_hT, ndex_hT ) ! ??? + +#if defined key_diahth + CALL histwrite( nid_T, "sothedep", it, hth , ndim_hT, ndex_hT ) ! depth of the thermocline + CALL histwrite( nid_T, "so20chgt", it, hd20 , ndim_hT, ndex_hT ) ! depth of the 20 isotherm + CALL histwrite( nid_T, "so28chgt", it, hd28 , ndim_hT, ndex_hT ) ! depth of the 28 isotherm + CALL histwrite( nid_T, "sohtc300", it, htc3 , ndim_hT, ndex_hT ) ! first 300m heaat content +#endif + +#if defined key_coupled +# if defined key_lim3 + Must be adapted for LIM3 + CALL histwrite( nid_T, "soicetem", it, tn_ice , ndim_hT, ndex_hT ) ! surf. ice temperature + CALL histwrite( nid_T, "soicealb", it, alb_ice , ndim_hT, ndex_hT ) ! ice albedo +# else + CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT ) ! surf. ice temperature + CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT ) ! ice albedo +# endif +#endif + ! Write fields on U grid + CALL histwrite( nid_U, "vozocrtx", it, un , ndim_U , ndex_U ) ! i-current +#if defined key_diaeiv + CALL histwrite( nid_U, "vozoeivu", it, u_eiv , ndim_U , ndex_U ) ! i-eiv current +#endif + CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress + + ! Write fields on V grid + CALL histwrite( nid_V, "vomecrty", it, vn , ndim_V , ndex_V ) ! j-current +#if defined key_diaeiv + CALL histwrite( nid_V, "vomeeivv", it, v_eiv , ndim_V , ndex_V ) ! j-eiv current +#endif + CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress + + ! Write fields on W grid + CALL histwrite( nid_W, "vovecrtz", it, wn , ndim_T, ndex_T ) ! vert. current +# if defined key_diaeiv + CALL histwrite( nid_W, "voveeivw", it, w_eiv , ndim_T, ndex_T ) ! vert. eiv current +# endif + CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. + CALL histwrite( nid_W, "votkeavm", it, avmu , ndim_T, ndex_T ) ! T vert. eddy visc. coef. + IF( lk_zdfddm ) THEN + CALL histwrite( nid_W, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T ) ! S vert. eddy diff. coef. + ENDIF +#if defined key_traldf_c2d + CALL histwrite( nid_W, "soleahtw", it, ahtw , ndim_hT, ndex_hT ) ! lateral eddy diff. coef. +# if defined key_traldf_eiv + CALL histwrite( nid_W, "soleaeiw", it, aeiw , ndim_hT, ndex_hT ) ! EIV coefficient at w-point +# endif +#endif + + ! 3. Synchronise and close all files + ! --------------------------------------- + IF( MOD( kt, nwrite ) == 0 .OR. kt < 0 ) THEN + CALL histsync( nid_T ) + CALL histsync( nid_U ) + CALL histsync( nid_V ) + CALL histsync( nid_W ) + ENDIF + + ! 3. Close all files + ! --------------------------------------- + IF( kt == nitend ) THEN + CALL histclo( nid_T ) + CALL histclo( nid_U ) + CALL histclo( nid_V ) + CALL histclo( nid_W ) + ENDIF + + END SUBROUTINE dia_wri +# endif + +#endif + + SUBROUTINE dia_wri_state( cdfile_name, kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri_state *** + !! + !! ** Purpose : create a NetCDF file named cdfile_name which contains + !! the instantaneous ocean state and forcing fields. + !! Used to find errors in the initial state or save the last + !! ocean state in case of abnormal end of a simulation + !! + !! ** Method : NetCDF files using ioipsl + !! File 'output.init.nc' is created if ninist = 1 (namelist) + !! File 'output.abort.nc' is created in case of abnormal job end + !! + !! History : + !! 8.2 ! 00-06 (M. Imbard) Original code (diabort.F) + !! 8.5 ! 02-06 (A.Bozec, E. Durand) Original code (diainit.F) + !! 9.0 ! 02-12 (G. Madec) merge of diabort and diainit, F90 + !! " ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! * Arguments + CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created + INTEGER , INTENT( in ) :: kt ! ocean time-step index + + !! * Local declarations + CHARACTER (len=32) :: clname + CHARACTER (len=40) :: clop + INTEGER :: & + id_i , nz_i, nh_i + INTEGER, DIMENSION(1) :: & + idex ! temprary workspace + REAL(wp) :: & + zsto, zout, zmax, & + zjulian, zdt + !!---------------------------------------------------------------------- + + ! 0. Initialisation + ! ----------------- + + ! Define name, frequency of output and means + clname = cdfile_name + IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) + zdt = rdt + zsto = rdt + clop = "inst(x)" ! no use of the mask value (require less cpu time) + zout = rdt + zmax = ( nitend - nit000 + 1 ) * zdt + + IF(lwp) WRITE(numout,*) + IF(lwp) WRITE(numout,*) 'dia_wri_state : single instantaneous ocean state' + IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ and forcing fields file created ' + IF(lwp) WRITE(numout,*) ' and named :', clname, '.nc' + + + ! 1. Define NETCDF files and fields at beginning of first time step + ! ----------------------------------------------------------------- + + ! Compute julian date from starting date of the run + CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) ! time axis + zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment + CALL histbeg( clname, jpi, glamt, jpj, gphit, & + 1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom ) ! Horizontal grid : glamt and gphit + CALL histvert( id_i, "deptht", "Vertical T levels", & ! Vertical grid : gdept + "m", jpk, gdept_0, nz_i, "down") + + ! Declare all the output fields as NetCDF variables + + CALL histdef( id_i, "vosaline", "Salinity" , "PSU" , & ! salinity + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "votemper", "Temperature" , "C" , & ! temperature + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "sossheig", "Sea Surface Height" , "m" , & ! ssh + & jpi, jpj, nh_i, 1 , 1, 1 , nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vozocrtx", "Zonal Current" , "m/s" , & ! zonal current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vomecrty", "Meridional Current" , "m/s" , & ! meridonal current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vovecrtz", "Vertical Velocity" , "m/s" , & ! vertical current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "sowaflup", "Net Upward Water Flux" , "Kg/m2/S", & ! net freshwater + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sohefldo", "Net Downward Heat Flux", "W/m2" , & ! net heat flux + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "soshfldo", "Shortwave Radiation" , "W/m2" , & ! solar flux + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "soicecov", "Ice fraction" , "[0,1]" , & ! fr_i + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sozotaux", "Zonal Wind Stress" , "N/m2" , & ! i-wind stress + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sometauy", "Meridional Wind Stress", "N/m2" , & ! j-wind stress + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + +#if defined key_lim2 + CALL lim_wri_state_2( kt, id_i, nh_i ) +#else + CALL histend( id_i ) +#endif + + ! 2. Start writing data + ! --------------------- + ! idex(1) est utilise ssi l'avant dernier argument est diffferent de + ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument + ! donne le nombre d'elements, et idex la liste des indices a sortir + idex(1) = 1 ! init to avoid compil warning + + ! Write all fields on T grid + CALL histwrite( id_i, "votemper", kt, tn , jpi*jpj*jpk, idex ) ! now temperature + CALL histwrite( id_i, "vosaline", kt, sn , jpi*jpj*jpk, idex ) ! now salinity + CALL histwrite( id_i, "sossheig", kt, sshn , jpi*jpj , idex ) ! sea surface height + CALL histwrite( id_i, "vozocrtx", kt, un , jpi*jpj*jpk, idex ) ! now i-velocity + CALL histwrite( id_i, "vomecrty", kt, vn , jpi*jpj*jpk, idex ) ! now j-velocity + CALL histwrite( id_i, "vovecrtz", kt, wn , jpi*jpj*jpk, idex ) ! now k-velocity + CALL histwrite( id_i, "sowaflup", kt, emp , jpi*jpj , idex ) ! freshwater budget + CALL histwrite( id_i, "sohefldo", kt, qsr + qns, jpi*jpj , idex ) ! total heat flux + CALL histwrite( id_i, "soshfldo", kt, qsr , jpi*jpj , idex ) ! solar heat flux + CALL histwrite( id_i, "soicecov", kt, fr_i , jpi*jpj , idex ) ! ice fraction + CALL histwrite( id_i, "sozotaux", kt, utau , jpi*jpj , idex ) ! i-wind stress + CALL histwrite( id_i, "sometauy", kt, vtau , jpi*jpj , idex ) ! j-wind stress + + ! 3. Synchronise and close all files + ! --------------------------------------- + IF( MOD( kt, nwrite ) == 0 .OR. kt < 0 ) THEN + CALL histsync( nid_T ) + CALL histsync( nid_U ) + CALL histsync( nid_V ) + CALL histsync( nid_W ) + ENDIF + + ! 3. Close the file + ! ----------------- + CALL histclo( id_i ) +#if ! defined key_iomput && ! defined key_dimgout + IF( ninist /= 1 ) THEN + CALL histclo( nid_T ) + CALL histclo( nid_U ) + CALL histclo( nid_V ) + CALL histclo( nid_W ) + ENDIF +#endif + + END SUBROUTINE dia_wri_state + !!====================================================================== +END MODULE diawri diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90.orig b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90.orig new file mode 100644 index 0000000000000000000000000000000000000000..abac6ad1af043a5cf3a91fbdc873eab6e8b6a50d --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/DIA_old/diawri.F90.orig @@ -0,0 +1,723 @@ +MODULE diawri + !!====================================================================== + !! *** MODULE diawri *** + !! Ocean diagnostics : write ocean output files + !!===================================================================== + + !!---------------------------------------------------------------------- + !! * Modules used + USE oce ! ocean dynamics and tracers + USE dom_oce ! ocean space and time domain + USE zdf_oce ! ocean vertical physics + USE ldftra_oce ! ocean active tracers: lateral physics + USE ldfdyn_oce ! ocean dynamics: lateral physics + USE sol_oce ! solver variables + USE sbc_oce ! Surface boundary condition: ocean fields + USE sbc_ice ! Surface boundary condition: ice fields + USE sbcssr ! restoring term toward SST/SSS climatology + USE phycst ! physical constants + USE zdfmxl ! mixed layer + USE dianam ! build name of file (routine) + USE zdfddm ! vertical physics: double diffusion + USE diahth ! thermocline diagnostics + USE lbclnk ! ocean lateral boundary conditions (or mpp link) + USE in_out_manager ! I/O manager + USE diadimg ! dimg direct access file format output + USE diaar5, ONLY : lk_diaar5 + USE iom + USE ioipsl +#if defined key_lim2 + USE limwri_2 +#endif + IMPLICIT NONE + PRIVATE + + !! * Accessibility + PUBLIC dia_wri ! routines called by step.F90 + PUBLIC dia_wri_state + + !! * Module variables + INTEGER :: & + nid_T, nz_T, nh_T, ndim_T, ndim_hT, & ! grid_T file + nid_U, nz_U, nh_U, ndim_U, ndim_hU, & ! grid_U file + nid_V, nz_V, nh_V, ndim_V, ndim_hV, & ! grid_V file + nid_W, nz_W, nh_W, & ! grid_W file + ndex(1) ! ??? + INTEGER, DIMENSION(jpi*jpj) :: & + ndex_hT, ndex_hU, ndex_hV + INTEGER, DIMENSION(jpi*jpj*jpk) :: & + ndex_T, ndex_U, ndex_V + + !! * Substitutions +# include "zdfddm_substitute.h90" +# include "domzgr_substitute.h90" +# include "vectopt_loop_substitute.h90" + !!---------------------------------------------------------------------- + !! OPA 9.0 , LOCEAN-IPSL (2005) + !! $Id: diawri.F90 1792 2009-12-21 15:05:15Z rblod $ + !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt + !!---------------------------------------------------------------------- + +CONTAINS + +#if defined key_dimgout + !!---------------------------------------------------------------------- + !! dia_wri : create the dimg direct access output file (mpp) + !!---------------------------------------------------------------------- +# include "diawri_dimg.h90" + +#else + !!---------------------------------------------------------------------- + !! Default option NetCDF output file + !!---------------------------------------------------------------------- + !! dia_wri : create the standart NetCDF output files + !! dia_wri_state : create an output NetCDF file for a single + !! instantaeous ocean state and forcing fields + !!---------------------------------------------------------------------- +# if defined key_iomput + SUBROUTINE dia_wri( kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri *** + !! + !! ** Purpose : Standard output of opa: dynamics and tracer fields + !! NETCDF format is used by default + !! + !! ** Method : use iom_put + !! + !! History : + !! 3.2 ! 05-11 (B. Lemaire) creation from old diawri + !!---------------------------------------------------------------------- + USE oce, ONLY : z3d => ta ! use ta as 3D workspace + !! + INTEGER, INTENT( in ) :: kt ! ocean time-step index + !! + INTEGER :: ji, jj, jk ! dummy loop indices + REAL(wp) :: zztmp, zztmpx, zztmpy ! + REAL(wp), DIMENSION(jpi,jpj) :: z2d ! + !!---------------------------------------------------------------------- + ! + ! Output the initial state and forcings + IF( ninist == 1 ) THEN + CALL dia_wri_state( 'output.init', kt ) + ninist = 0 + ENDIF + + CALL iom_put( "toce" , tn ) ! temperature + CALL iom_put( "soce" , sn ) ! salinity + CALL iom_put( "sst" , tn(:,:,1) ) ! sea surface temperature + CALL iom_put( "sst2" , tn(:,:,1) * tn(:,:,1) ) ! square of sea surface temperature + CALL iom_put( "sss" , sn(:,:,1) ) ! sea surface salinity + CALL iom_put( "sss2" , sn(:,:,1) * sn(:,:,1) ) ! square of sea surface salinity + CALL iom_put( "uoce" , un ) ! i-current + CALL iom_put( "voce" , vn ) ! j-current + + CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. + CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. + IF( lk_zdfddm ) THEN + CALL iom_put( "avs" , fsavs(:,:,:) ) ! S vert. eddy diff. coef. + ENDIF + + DO jj = 2, jpjm1 ! sst gradient + DO ji = fs_2, fs_jpim1 ! vector opt. + zztmp = tn(ji,jj,1) + zztmpx = ( tn(ji+1,jj ,1) - zztmp ) / e1u(ji,jj) + ( zztmp - tn(ji-1,jj ,1) ) / e1u(ji-1,jj ) + zztmpy = ( tn(ji ,jj+1,1) - zztmp ) / e2v(ji,jj) + ( zztmp - tn(ji ,jj-1,1) ) / e2v(ji ,jj-1) + z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & + & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) + END DO + END DO + CALL lbc_lnk( z2d, 'T', 1. ) + CALL iom_put( "|sstgrad|2", z2d ) ! square of module of sst gradient +!CDIR NOVERRCHK + z2d(:,:) = SQRT( z2d(:,:) ) + CALL iom_put( "|sstgrad|" , z2d ) ! module of sst gradient + + IF( lk_diaar5 ) THEN + z3d(:,:,jpk) = 0.e0 + DO jk = 1, jpkm1 + z3d(:,:,jk) = rau0 * un(:,:,jk) * e1u(:,:) * fse3u(:,:,jk) + END DO + CALL iom_put( "u_masstr", z3d ) ! mass transport in i-direction + zztmp = 0.5 * rcp + z2d(:,:) = 0.e0 + DO jk = 1, jpkm1 + DO jj = 2, jpjm1 + DO ji = fs_2, fs_jpim1 ! vector opt. + z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tn(ji,jj,jk) + tn(ji+1,jj,jk) ) + END DO + END DO + END DO + CALL lbc_lnk( z2d, 'U', -1. ) + CALL iom_put( "u_heattr", z2d ) ! heat transport in i-direction + DO jk = 1, jpkm1 + z3d(:,:,jk) = rau0 * vn(:,:,jk) * e2v(:,:) * fse3v(:,:,jk) + END DO + CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction + z2d(:,:) = 0.e0 + DO jk = 1, jpkm1 + DO jj = 2, jpjm1 + DO ji = fs_2, fs_jpim1 ! vector opt. + z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tn(ji,jj,jk) + tn(ji,jj+1,jk) ) + END DO + END DO + END DO + CALL lbc_lnk( z2d, 'V', -1. ) + CALL iom_put( "v_heattr", z2d ) ! heat transport in i-direction + ENDIF + + END SUBROUTINE dia_wri + +#else + SUBROUTINE dia_wri( kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri *** + !! + !! ** Purpose : Standard output of opa: dynamics and tracer fields + !! NETCDF format is used by default + !! + !! ** Method : At the beginning of the first time step (nit000), + !! define all the NETCDF files and fields + !! At each time step call histdef to compute the mean if ncessary + !! Each nwrite time step, output the instantaneous or mean fields + !! + !! History : + !! ! 91-03 (M.-A. Foujols) Original code + !! ! 91-11 (G. Madec) + !! ! 92-06 (M. Imbard) correction restart file + !! ! 92-07 (M. Imbard) split into diawri and rstwri + !! ! 93-03 (M. Imbard) suppress writibm + !! ! 98-01 (C. Levy) NETCDF format using ioipsl INTERFACE + !! ! 99-02 (E. Guilyardi) name of netCDF files + variables + !! 8.5 ! 02-09 (G. Madec) F90: Free form and module + !! 9.0 ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! * Arguments + INTEGER, INTENT( in ) :: kt ! ocean time-step index + + !! * Local declarations + LOGICAL :: ll_print = .FALSE. ! =T print and flush numout + CHARACTER (len=40) :: & + clhstnam, clop, clmx ! temporary names + INTEGER :: inum = 11 ! temporary logical unit + INTEGER :: & + iimi, iima, ipk, it, itmod, & ! temporary integers + ijmi, ijma ! " " + REAL(wp) :: & + zsto, zout, zmax, & ! temporary scalars + zjulian, zdt ! " " + REAL(wp), DIMENSION(jpi,jpj) :: & + zw2d ! temporary workspace + !!---------------------------------------------------------------------- + ! + ! Output the initial state and forcings + IF( ninist == 1 ) THEN + CALL dia_wri_state( 'output.init', kt ) + ninist = 0 + ENDIF + ! + ! 0. Initialisation + ! ----------------- + + ! local variable for debugging + ll_print = .FALSE. + ll_print = ll_print .AND. lwp + + ! Define frequency of output and means + zdt = rdt + IF( nacc == 1 ) zdt = rdtmin + IF( ln_mskland ) THEN ; clop = "only(x)" ! put 1.e+20 on land (very expensive!!) + ELSE ; clop = "x" ! no use of the mask value (require less cpu time) + ENDIF +#if defined key_diainstant + zsto = nwrite * zdt + clop = "inst("//TRIM(clop)//")" +#else + zsto=zdt + clop = "ave("//TRIM(clop)//")" +#endif + zout = nwrite * zdt + zmax = ( nitend - nit000 + 1 ) * zdt + + ! Define indices of the horizontal output zoom and vertical limit storage + iimi = 1 ; iima = jpi + ijmi = 1 ; ijma = jpj + ipk = jpk + + ! define time axis + it = kt + itmod = kt - nit000 + 1 + + + ! 1. Define NETCDF files and fields at beginning of first time step + ! ----------------------------------------------------------------- + + IF( kt == nit000 ) THEN + + ! Define the NETCDF files (one per grid) + + ! Compute julian date from starting date of the run + CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) + zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment + IF(lwp)WRITE(numout,*) + IF(lwp)WRITE(numout,*) 'Date 0 used :', nit000, ' YEAR ', nyear, & + & ' MONTH ', nmonth, ' DAY ', nday, 'Julian day : ', zjulian + IF(lwp)WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma, & + ' limit storage in depth = ', ipk + + ! WRITE root name in date.file for use by postpro + IF(lwp) THEN + CALL dia_nam( clhstnam, nwrite,' ' ) + CALL ctl_opn( inum, 'date.file', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) + WRITE(inum,*) clhstnam + CLOSE(inum) + ENDIF + + ! Define the T grid FILE ( nid_T ) + + CALL dia_nam( clhstnam, nwrite, 'grid_T' ) + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam ! filename + CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_T, nid_T, domain_id=nidom ) + CALL histvert( nid_T, "deptht", "Vertical T levels", & ! Vertical grid: gdept + & "m", ipk, gdept_0, nz_T, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, tmask, 1, 1., ndex_T , ndim_T ) ! volume + CALL wheneq( jpi*jpj , tmask, 1, 1., ndex_hT, ndim_hT ) ! surface + + ! Define the U grid FILE ( nid_U ) + + CALL dia_nam( clhstnam, nwrite, 'grid_U' ) + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam ! filename + CALL histbeg( clhstnam, jpi, glamu, jpj, gphiu, & ! Horizontal grid: glamu and gphiu + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_U, nid_U, domain_id=nidom ) + CALL histvert( nid_U, "depthu", "Vertical U levels", & ! Vertical grid: gdept + & "m", ipk, gdept_0, nz_U, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, umask, 1, 1., ndex_U , ndim_U ) ! volume + CALL wheneq( jpi*jpj , umask, 1, 1., ndex_hU, ndim_hU ) ! surface + + ! Define the V grid FILE ( nid_V ) + + CALL dia_nam( clhstnam, nwrite, 'grid_V' ) ! filename + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam + CALL histbeg( clhstnam, jpi, glamv, jpj, gphiv, & ! Horizontal grid: glamv and gphiv + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_V, nid_V, domain_id=nidom ) + CALL histvert( nid_V, "depthv", "Vertical V levels", & ! Vertical grid : gdept + & "m", ipk, gdept_0, nz_V, "down" ) + ! ! Index of ocean points + CALL wheneq( jpi*jpj*ipk, vmask, 1, 1., ndex_V , ndim_V ) ! volume + CALL wheneq( jpi*jpj , vmask, 1, 1., ndex_hV, ndim_hV ) ! surface + + ! Define the W grid FILE ( nid_W ) + + CALL dia_nam( clhstnam, nwrite, 'grid_W' ) ! filename + IF(lwp) WRITE(numout,*) " Name of NETCDF file ", clhstnam + CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & ! Horizontal grid: glamt and gphit + & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & + & nit000-1, zjulian, zdt, nh_W, nid_W, domain_id=nidom ) + CALL histvert( nid_W, "depthw", "Vertical W levels", & ! Vertical grid: gdepw + & "m", ipk, gdepw_0, nz_W, "down" ) + + + ! Declare all the output fields as NETCDF variables + + ! !!! nid_T : 3D + CALL histdef( nid_T, "votemper", "Temperature" , "C" , & ! tn + & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) + CALL histdef( nid_T, "vosaline", "Salinity" , "PSU" , & ! sn + & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) + ! !!! nid_T : 2D + CALL histdef( nid_T, "sosstsst", "Sea Surface temperature" , "C" , & ! sst + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosaline", "Sea Surface Salinity" , "PSU" , & ! sss + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sossheig", "Sea Surface Height" , "m" , & ! ssh + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$#if defined key_lim3 || defined key_lim2 +!!$ ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to +!!$ ! internal damping to Levitus that can be diagnosed from others +!!$ ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup +!!$ CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater" , "kg/m2/s", & ! fsalt +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$ CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater" , "kg/m2/s", & ! fmass +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$#endif + CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux" , "Kg/m2/s", & ! emp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +!!$ CALL histdef( nid_T, "sorunoff", "Runoffs" , "Kg/m2/s", & ! runoffs +!!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux" , "kg/m2/s", & ! emps + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosalflx", "Surface Salt Flux" , "Kg/m2/s", & ! emps * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sohefldo", "Net Downward Heat Flux" , "W/m2" , & ! qns + qsr + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "soshfldo", "Shortwave Radiation" , "W/m2" , & ! qsr + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "somixhgt", "Turbocline Depth" , "m" , & ! hmld + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "somxl010", "Mixed Layer Depth 0.01" , "m" , & ! hmlp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "soicecov", "Ice fraction" , "[0,1]" , & ! fr_i + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowindsp", "wind speed at 10m" , "m/s" , & ! wndm + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#if ! defined key_coupled + CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping" , "Kg/m2/s", & ! erp * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + + + +#if ( defined key_coupled && ! defined key_lim3 && ! defined key_lim2 ) + CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sosafldp", "Surface salt flux: Damping" , "Kg/m2/s", & ! erp * sn + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif +#if defined key_diaspr + CALL histdef( nid_T, "sosurfps", "Surface Pressure" , "cm" , & ! sp + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + clmx ="l_max(only(x))" ! max index on a period + CALL histdef( nid_T, "sobowlin", "Bowl Index" , "W-point", & ! bowl INDEX + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clmx, zsto, zout ) +#if defined key_diahth + CALL histdef( nid_T, "sothedep", "Thermocline Depth" , "m" , & ! hth + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "so20chgt", "Depth of 20C isotherm" , "m" , & ! hd20 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "so28chgt", "Depth of 28C isotherm" , "m" , & ! hd28 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T, "sohtc300", "Heat content 300 m" , "W" , & ! htc3 + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +#endif + +#if defined key_coupled +# if defined key_lim3 + Must be adapted to LIM3 +# else + CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature" , "K" , & ! tn_ice + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( nid_T,"soicealb" , "Ice Albedo" , "[0,1]" , & ! alb_ice + & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) +# endif +#endif + + CALL histend( nid_T ) + + ! !!! nid_U : 3D + CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! un + & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current" , "m/s" , & ! u_eiv + & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) +#endif + ! !!! nid_U : 2D + CALL histdef( nid_U, "sozotaux", "Wind Stress along i-axis" , "N/m2" , & ! utau + & jpi, jpj, nh_U, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) + + CALL histend( nid_U ) + + ! !!! nid_V : 3D + CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vn + & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current" , "m/s" , & ! v_eiv + & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) +#endif + ! !!! nid_V : 2D + CALL histdef( nid_V, "sometauy", "Wind Stress along j-axis" , "N/m2" , & ! vtau + & jpi, jpj, nh_V, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) + + CALL histend( nid_V ) + + ! !!! nid_W : 3D + CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! wn + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) +#if defined key_diaeiv + CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity" , "m/s" , & ! w_eiv + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) +#endif + CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + CALL histdef( nid_W, "votkeavm", "Vertical Eddy Viscosity" , "m2/s" , & ! avmu + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + + IF( lk_zdfddm ) THEN + CALL histdef( nid_W,"voddmavs","Salt Vertical Eddy Diffusivity" , "m2/s" , & ! avs + & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) + ENDIF + ! !!! nid_W : 2D +#if defined key_traldf_c2d + CALL histdef( nid_W, "soleahtw", "lateral eddy diffusivity" , "m2/s" , & ! ahtw + & jpi, jpj, nh_W, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) +# if defined key_traldf_eiv + CALL histdef( nid_W, "soleaeiw", "eddy induced vel. coeff. at w-point", "m2/s", & ! aeiw + & jpi, jpj, nh_W, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) +# endif +#endif + + CALL histend( nid_W ) + + IF(lwp) WRITE(numout,*) + IF(lwp) WRITE(numout,*) 'End of NetCDF Initialization' + IF(ll_print) CALL FLUSH(numout ) + + ENDIF + + ! 2. Start writing data + ! --------------------- + + ! ndex(1) est utilise ssi l'avant dernier argument est diffferent de + ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument + ! donne le nombre d'elements, et ndex la liste des indices a sortir + + IF( lwp .AND. MOD( itmod, nwrite ) == 0 ) THEN + WRITE(numout,*) 'dia_wri : write model outputs in NetCDF files at ', kt, 'time-step' + WRITE(numout,*) '~~~~~~ ' + ENDIF + + ! Write fields on T grid + CALL histwrite( nid_T, "votemper", it, tn , ndim_T , ndex_T ) ! temperature + CALL histwrite( nid_T, "vosaline", it, sn , ndim_T , ndex_T ) ! salinity + CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface temperature + CALL histwrite( nid_T, "sosaline", it, sn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity + CALL histwrite( nid_T, "sossheig", it, sshn , ndim_hT, ndex_hT ) ! sea surface height +!!$#if defined key_lim3 || defined key_lim2 +!!$ CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:) , ndim_hT, ndex_hT ) ! ice=>ocean water flux +!!$ CALL histwrite( nid_T, "sowaflep", it, fmass(:,:) , ndim_hT, ndex_hT ) ! atmos=>ocean water flux +!!$#endif + CALL histwrite( nid_T, "sowaflup", it, emp , ndim_hT, ndex_hT ) ! upward water flux +!!$ CALL histwrite( nid_T, "sorunoff", it, runoff , ndim_hT, ndex_hT ) ! runoff + CALL histwrite( nid_T, "sowaflcd", it, emps , ndim_hT, ndex_hT ) ! c/d water flux + zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosalflx", it, zw2d , ndim_hT, ndex_hT ) ! c/d salt flux + CALL histwrite( nid_T, "sohefldo", it, qns + qsr , ndim_hT, ndex_hT ) ! total heat flux + CALL histwrite( nid_T, "soshfldo", it, qsr , ndim_hT, ndex_hT ) ! solar heat flux + CALL histwrite( nid_T, "somixhgt", it, hmld , ndim_hT, ndex_hT ) ! turbocline depth + CALL histwrite( nid_T, "somxl010", it, hmlp , ndim_hT, ndex_hT ) ! mixed layer depth + CALL histwrite( nid_T, "soicecov", it, fr_i , ndim_hT, ndex_hT ) ! ice fraction + CALL histwrite( nid_T, "sowindsp", it, wndm , ndim_hT, ndex_hT ) ! wind speed +#if ! defined key_coupled + CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping + CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping + zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping +#endif +#if ( defined key_coupled && ! defined key_lim3 && ! defined key_lim2 ) + CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping + CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping + zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) + CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping +#endif +#if defined key_diaspr + CALL histwrite( nid_T, "sosurfps", it, gps , ndim_hT, ndex_hT ) ! surface pressure +#endif + zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1) + CALL histwrite( nid_T, "sobowlin", it, zw2d , ndim_hT, ndex_hT ) ! ??? + +#if defined key_diahth + CALL histwrite( nid_T, "sothedep", it, hth , ndim_hT, ndex_hT ) ! depth of the thermocline + CALL histwrite( nid_T, "so20chgt", it, hd20 , ndim_hT, ndex_hT ) ! depth of the 20 isotherm + CALL histwrite( nid_T, "so28chgt", it, hd28 , ndim_hT, ndex_hT ) ! depth of the 28 isotherm + CALL histwrite( nid_T, "sohtc300", it, htc3 , ndim_hT, ndex_hT ) ! first 300m heaat content +#endif + +#if defined key_coupled +# if defined key_lim3 + Must be adapted for LIM3 + CALL histwrite( nid_T, "soicetem", it, tn_ice , ndim_hT, ndex_hT ) ! surf. ice temperature + CALL histwrite( nid_T, "soicealb", it, alb_ice , ndim_hT, ndex_hT ) ! ice albedo +# else + CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT ) ! surf. ice temperature + CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT ) ! ice albedo +# endif +#endif + ! Write fields on U grid + CALL histwrite( nid_U, "vozocrtx", it, un , ndim_U , ndex_U ) ! i-current +#if defined key_diaeiv + CALL histwrite( nid_U, "vozoeivu", it, u_eiv , ndim_U , ndex_U ) ! i-eiv current +#endif + CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress + + ! Write fields on V grid + CALL histwrite( nid_V, "vomecrty", it, vn , ndim_V , ndex_V ) ! j-current +#if defined key_diaeiv + CALL histwrite( nid_V, "vomeeivv", it, v_eiv , ndim_V , ndex_V ) ! j-eiv current +#endif + CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress + + ! Write fields on W grid + CALL histwrite( nid_W, "vovecrtz", it, wn , ndim_T, ndex_T ) ! vert. current +# if defined key_diaeiv + CALL histwrite( nid_W, "voveeivw", it, w_eiv , ndim_T, ndex_T ) ! vert. eiv current +# endif + CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. + CALL histwrite( nid_W, "votkeavm", it, avmu , ndim_T, ndex_T ) ! T vert. eddy visc. coef. + IF( lk_zdfddm ) THEN + CALL histwrite( nid_W, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T ) ! S vert. eddy diff. coef. + ENDIF +#if defined key_traldf_c2d + CALL histwrite( nid_W, "soleahtw", it, ahtw , ndim_hT, ndex_hT ) ! lateral eddy diff. coef. +# if defined key_traldf_eiv + CALL histwrite( nid_W, "soleaeiw", it, aeiw , ndim_hT, ndex_hT ) ! EIV coefficient at w-point +# endif +#endif + + ! 3. Close all files + ! --------------------------------------- + IF( kt == nitend ) THEN + CALL histclo( nid_T ) + CALL histclo( nid_U ) + CALL histclo( nid_V ) + CALL histclo( nid_W ) + ENDIF + + END SUBROUTINE dia_wri +# endif + +#endif + + SUBROUTINE dia_wri_state( cdfile_name, kt ) + !!--------------------------------------------------------------------- + !! *** ROUTINE dia_wri_state *** + !! + !! ** Purpose : create a NetCDF file named cdfile_name which contains + !! the instantaneous ocean state and forcing fields. + !! Used to find errors in the initial state or save the last + !! ocean state in case of abnormal end of a simulation + !! + !! ** Method : NetCDF files using ioipsl + !! File 'output.init.nc' is created if ninist = 1 (namelist) + !! File 'output.abort.nc' is created in case of abnormal job end + !! + !! History : + !! 8.2 ! 00-06 (M. Imbard) Original code (diabort.F) + !! 8.5 ! 02-06 (A.Bozec, E. Durand) Original code (diainit.F) + !! 9.0 ! 02-12 (G. Madec) merge of diabort and diainit, F90 + !! " ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! * Arguments + CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created + INTEGER , INTENT( in ) :: kt ! ocean time-step index + + !! * Local declarations + CHARACTER (len=32) :: clname + CHARACTER (len=40) :: clop + INTEGER :: & + id_i , nz_i, nh_i + INTEGER, DIMENSION(1) :: & + idex ! temprary workspace + REAL(wp) :: & + zsto, zout, zmax, & + zjulian, zdt + !!---------------------------------------------------------------------- + + ! 0. Initialisation + ! ----------------- + + ! Define name, frequency of output and means + clname = cdfile_name + IF( .NOT. Agrif_Root() ) clname = TRIM(Agrif_CFixed())//'_'//TRIM(clname) + zdt = rdt + zsto = rdt + clop = "inst(x)" ! no use of the mask value (require less cpu time) + zout = rdt + zmax = ( nitend - nit000 + 1 ) * zdt + + IF(lwp) WRITE(numout,*) + IF(lwp) WRITE(numout,*) 'dia_wri_state : single instantaneous ocean state' + IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ and forcing fields file created ' + IF(lwp) WRITE(numout,*) ' and named :', clname, '.nc' + + + ! 1. Define NETCDF files and fields at beginning of first time step + ! ----------------------------------------------------------------- + + ! Compute julian date from starting date of the run + CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) ! time axis + zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment + CALL histbeg( clname, jpi, glamt, jpj, gphit, & + 1, jpi, 1, jpj, nit000-1, zjulian, zdt, nh_i, id_i, domain_id=nidom ) ! Horizontal grid : glamt and gphit + CALL histvert( id_i, "deptht", "Vertical T levels", & ! Vertical grid : gdept + "m", jpk, gdept_0, nz_i, "down") + + ! Declare all the output fields as NetCDF variables + + CALL histdef( id_i, "vosaline", "Salinity" , "PSU" , & ! salinity + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "votemper", "Temperature" , "C" , & ! temperature + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "sossheig", "Sea Surface Height" , "m" , & ! ssh + & jpi, jpj, nh_i, 1 , 1, 1 , nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vozocrtx", "Zonal Current" , "m/s" , & ! zonal current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vomecrty", "Meridional Current" , "m/s" , & ! meridonal current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "vovecrtz", "Vertical Velocity" , "m/s" , & ! vertical current + & jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) + CALL histdef( id_i, "sowaflup", "Net Upward Water Flux" , "Kg/m2/S", & ! net freshwater + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sohefldo", "Net Downward Heat Flux", "W/m2" , & ! net heat flux + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "soshfldo", "Shortwave Radiation" , "W/m2" , & ! solar flux + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "soicecov", "Ice fraction" , "[0,1]" , & ! fr_i + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sozotaux", "Zonal Wind Stress" , "N/m2" , & ! i-wind stress + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + CALL histdef( id_i, "sometauy", "Meridional Wind Stress", "N/m2" , & ! j-wind stress + & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) + +#if defined key_lim2 + CALL lim_wri_state_2( kt, id_i, nh_i ) +#else + CALL histend( id_i ) +#endif + + ! 2. Start writing data + ! --------------------- + ! idex(1) est utilise ssi l'avant dernier argument est diffferent de + ! la taille du tableau en sortie. Dans ce cas , l'avant dernier argument + ! donne le nombre d'elements, et idex la liste des indices a sortir + idex(1) = 1 ! init to avoid compil warning + + ! Write all fields on T grid + CALL histwrite( id_i, "votemper", kt, tn , jpi*jpj*jpk, idex ) ! now temperature + CALL histwrite( id_i, "vosaline", kt, sn , jpi*jpj*jpk, idex ) ! now salinity + CALL histwrite( id_i, "sossheig", kt, sshn , jpi*jpj , idex ) ! sea surface height + CALL histwrite( id_i, "vozocrtx", kt, un , jpi*jpj*jpk, idex ) ! now i-velocity + CALL histwrite( id_i, "vomecrty", kt, vn , jpi*jpj*jpk, idex ) ! now j-velocity + CALL histwrite( id_i, "vovecrtz", kt, wn , jpi*jpj*jpk, idex ) ! now k-velocity + CALL histwrite( id_i, "sowaflup", kt, emp , jpi*jpj , idex ) ! freshwater budget + CALL histwrite( id_i, "sohefldo", kt, qsr + qns, jpi*jpj , idex ) ! total heat flux + CALL histwrite( id_i, "soshfldo", kt, qsr , jpi*jpj , idex ) ! solar heat flux + CALL histwrite( id_i, "soicecov", kt, fr_i , jpi*jpj , idex ) ! ice fraction + CALL histwrite( id_i, "sozotaux", kt, utau , jpi*jpj , idex ) ! i-wind stress + CALL histwrite( id_i, "sometauy", kt, vtau , jpi*jpj , idex ) ! j-wind stress + + ! 3. Close the file + ! ----------------- + CALL histclo( id_i ) +#if ! defined key_iomput && ! defined key_dimgout + IF( ninist /= 1 ) THEN + CALL histclo( nid_T ) + CALL histclo( nid_U ) + CALL histclo( nid_V ) + CALL histclo( nid_W ) + ENDIF +#endif + + END SUBROUTINE dia_wri_state + !!====================================================================== +END MODULE diawri diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90 b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90 new file mode 100644 index 0000000000000000000000000000000000000000..dbb0e25d9ae926b889a20762fb2a1e37181ee7a7 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90 @@ -0,0 +1,230 @@ +MODULE par_oce + !!====================================================================== + !! *** par_oce *** + !! Ocean : set the ocean parameters + !!====================================================================== + !! History : + !! 4.0 ! 91 (Imbard, Levy, Madec) Original code + !! 9.0 ! 04-01 (G. Madec, J.-M. Molines) Free form and module + !! " ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! OPA 9.0 , LOCEAN-IPSL (2005) + !! $Id: par_oce.F90 1647 2009-10-07 15:15:07Z rblod $ + !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt + !!---------------------------------------------------------------------- + !! * Modules used + USE par_kind ! kind parameters + + IMPLICIT NONE + PUBLIC + + !!---------------------------------------------------------------------- + !! Domain decomposition + !!---------------------------------------------------------------------- + !! * if we dont use massively parallel computer (parameters jpni=jpnj=1) + !! so jpiglo=jpi and jpjglo=jpj + +#if ! defined key_mpp_dyndist + INTEGER, PUBLIC, PARAMETER :: & !: + jpni = 6, & !: number of processors following i + jpnj = 6, & !: number of processors following j + jpnij = 36 !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#else + INTEGER, PUBLIC :: & ! + jpni , & !: number of processors following i + jpnj , & !: number of processors following j + jpnij !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#endif + + INTEGER, PUBLIC, PARAMETER :: & !: + jpr2di = 0, & !: number of columns for extra outer halo + jpr2dj = 0, & !: number of rows for extra outer halo + jpreci = 1, & !: number of columns for overlap + jprecj = 1 !: number of rows for overlap + + !! Ocean Domain sizes + !! ------------------ + !! data domain (jpidta,jpjdta) + !! global or zoom domain (jpiglo,jpjglo) + !! local domain ( jpi , jpj ) + +#if defined key_orca_r4 + !!--------------------------------------------------------------------- + !! 'key_orca_r4' : global ocean : ORCA R4 + !!--------------------------------------------------------------------- +# include "par_ORCA_R4.h90" +#elif defined key_orca_r2 + !!--------------------------------------------------------------------- + !! 'key_orca_r2' : global ocean : ORCA R2 + !!--------------------------------------------------------------------- +# include "par_ORCA_R2.h90" +#elif defined key_orca_r1 + !!--------------------------------------------------------------------- + !! 'key_orca_r1' : global ocean : ORCA R1 + !!--------------------------------------------------------------------- +# include "par_ORCA_R1.h90" +#elif defined key_orca_r05 + !!--------------------------------------------------------------------- + !! 'key_orca_r05' : global ocean : ORCA R05 + !!--------------------------------------------------------------------- +# include "par_ORCA_R05.h90" +#elif defined key_orca_r025 + !!--------------------------------------------------------------------- + !! 'key_orca_r025' : global ocean : ORCA R025 + !!--------------------------------------------------------------------- +# include "par_ORCA_R025.h90" +#elif defined key_eel_r2 + !!--------------------------------------------------------------------- + !! 'key_eel_r2' : channel : EEL R2 + !!--------------------------------------------------------------------- +# include "par_EEL_R2.h90" +#elif defined key_eel_r5 + !!--------------------------------------------------------------------- + !! 'key_eel_r5' : channel : EEL R5 + !!--------------------------------------------------------------------- +# include "par_EEL_R5.h90" +#elif defined key_eel_r6 + !!--------------------------------------------------------------------- + !! 'key_eel_r6' : channel : EEL R6 + !!--------------------------------------------------------------------- +# include "par_EEL_R6.h90" +#elif defined key_gyre + !!--------------------------------------------------------------------- + !! 'key_gyre' : mid-latitude basin : GYRE + !!--------------------------------------------------------------------- +# include "par_GYRE.h90" +#elif defined key_pomme_r025 + !!--------------------------------------------------------------------- + !! 'key_pomme_r025': regional basin : POMME025 + !!--------------------------------------------------------------------- +# include "par_POMME_R025.h90" +#else + !!--------------------------------------------------------------------- + !! default option : small closed basin + !!--------------------------------------------------------------------- + CHARACTER(len=16), PUBLIC, PARAMETER :: & !: + cp_cfg = "default" !: name of the configuration + INTEGER, PARAMETER :: & !: + jp_cfg = 0 , & !: resolution of the configuration + + ! data size !!! * size of all input files * + jpidta = 10, & !: 1st lateral dimension ( >= jpi ) + jpjdta = 12, & !: 2nd " " ( >= jpj ) + jpkdta = 31, & !: number of levels ( >= jpk ) + + ! global or zoom domain size !!! * computational domain * + jpiglo = jpidta, & !: 1st dimension of global domain --> i + jpjglo = jpjdta, & !: 2nd " " --> j + jpk = jpkdta, & !: number of vertical levels + ! zoom starting position + jpizoom = 1 , & !: left bottom (i,j) indices of the zoom + jpjzoom = 1 , & !: in data domain indices + + ! Domain characteristics + jperio = 0 !: lateral cond. type (between 0 and 6) + ! ! = 0 closed + ! ! = 1 cyclic East-West + ! ! = 2 equatorial symmetric + ! ! = 3 North fold T-point pivot + ! ! = 4 cyclic East-West AND North fold T-point pivot + ! ! = 5 North fold F-point pivot + ! ! = 6 cyclic East-West AND North fold F-point pivot + + !! Values set to pp_not_used indicates that this parameter is not used in THIS config. + !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr + REAL(wp), PARAMETER :: & !: + pp_not_used = 999999._wp , & !: + pp_to_be_computed = 999999._wp !: + + + !! Horizontal grid parameters for domhgr + !! ===================================== + + INTEGER, PUBLIC, PARAMETER :: & !: + jphgr_msh = 0 !: type of horizontal mesh + ! ! = 0 curvilinear coordinate on the sphere + ! ! read in coordinate.nc file + ! ! = 1 geographical mesh on the sphere + ! ! with regular grid-spacing + ! ! = 2 f-plane with regular grid-spacing + ! ! = 3 beta-plane with regular grid-spacing + ! ! = 4 Mercator grid with T/U point at the equator with + ! ! isotropic resolution (e1_deg) + + REAL(wp) , PUBLIC, PARAMETER :: & !: + ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) + ppgphi0 = -35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) + ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) + ppe1_deg = 1.0_wp, & !: zonal grid-spacing (degrees) + ppe2_deg = 0.5_wp, & !: meridional grid-spacing (degrees) + ppe1_m = 5000.0_wp, & !: zonal grid-spacing (degrees) + ppe2_m = 5000.0_wp !: meridional grid-spacing (degrees) + + !! Vertical grid parameter for domzgr + !! ================================== + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients + & ppa0 = 255.58049070440_wp , & !: (default coefficients) + & ppa1 = 245.58132232490_wp , & !: + & ppkth = 21.43336197938_wp , & !: + & ppacr = 3.00000000000_wp !: + + !! If both ppa0 ppa1 and ppsur are specified to 0, then + !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppdzmin = 10._wp , & !: Minimum vertical spacing + & pphmax = 5000._wp !: Maximum depth + + !!--------------------------------------------------------------------- +#endif + + !!--------------------------------------------------------------------- + !! Domain Matrix size + !!--------------------------------------------------------------------- + INTEGER & !: +#if !defined key_agrif + ,PARAMETER & +#endif + :: & + jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci , & !: first dimension + jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj , & !: second dimension + jpim1 = jpi-1, & !: inner domain indices + jpjm1 = jpj-1, & !: " " + jpkm1 = jpk-1, & !: " " + jpij = jpi*jpj !: jpi x jpj + +#if defined key_agrif + !!--------------------------------------------------------------------- + !! Agrif variables + !!--------------------------------------------------------------------- + INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 + INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells + INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells +#endif + !!--------------------------------------------------------------------- + !! Optimization/control flags + !!--------------------------------------------------------------------- +#if defined key_esopa + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .TRUE. !: flag to activate the all options +#else + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .FALSE. !: flag to activate the all options +#endif + +#if defined key_vectopt_memory + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .FALSE. !: vector optimization flag +#endif + +#if defined key_vectopt_loop + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .FALSE. !: vector optimization flag +#endif + + !!====================================================================== +END MODULE par_oce diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig new file mode 100644 index 0000000000000000000000000000000000000000..ca02de333bf741a70598debd54cb69a6fbf02f8a --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig @@ -0,0 +1,225 @@ +MODULE par_oce + !!====================================================================== + !! *** par_oce *** + !! Ocean : set the ocean parameters + !!====================================================================== + !! History : + !! 4.0 ! 91 (Imbard, Levy, Madec) Original code + !! 9.0 ! 04-01 (G. Madec, J.-M. Molines) Free form and module + !! " ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! OPA 9.0 , LOCEAN-IPSL (2005) + !! $Id: par_oce.F90 1647 2009-10-07 15:15:07Z rblod $ + !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt + !!---------------------------------------------------------------------- + !! * Modules used + USE par_kind ! kind parameters + + IMPLICIT NONE + PUBLIC + + !!---------------------------------------------------------------------- + !! Domain decomposition + !!---------------------------------------------------------------------- + !! * if we dont use massively parallel computer (parameters jpni=jpnj=1) + !! so jpiglo=jpi and jpjglo=jpj + +#if ! defined key_mpp_dyndist + INTEGER, PUBLIC, PARAMETER :: & !: + jpni = ABC, & !: number of processors following i + jpnj = DEF, & !: number of processors following j + jpnij = GEH !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#else + INTEGER, PUBLIC :: & ! + jpni , & !: number of processors following i + jpnj , & !: number of processors following j + jpnij !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#endif + + INTEGER, PUBLIC, PARAMETER :: & !: + jpr2di = 0, & !: number of columns for extra outer halo + jpr2dj = 0, & !: number of rows for extra outer halo + jpreci = 1, & !: number of columns for overlap + jprecj = 1 !: number of rows for overlap + + !! Ocean Domain sizes + !! ------------------ + !! data domain (jpidta,jpjdta) + !! global or zoom domain (jpiglo,jpjglo) + !! local domain ( jpi , jpj ) + +#if defined key_orca_r4 + !!--------------------------------------------------------------------- + !! 'key_orca_r4' : global ocean : ORCA R4 + !!--------------------------------------------------------------------- +# include "par_ORCA_R4.h90" +#elif defined key_orca_r2 + !!--------------------------------------------------------------------- + !! 'key_orca_r2' : global ocean : ORCA R4 + !!--------------------------------------------------------------------- +# include "par_ORCA_R2.h90" +#elif defined key_orca_r05 + !!--------------------------------------------------------------------- + !! 'key_orca_r05' : global ocean : ORCA R05 + !!--------------------------------------------------------------------- +# include "par_ORCA_R05.h90" +#elif defined key_orca_r025 + !!--------------------------------------------------------------------- + !! 'key_orca_r025' : global ocean : ORCA R025 + !!--------------------------------------------------------------------- +# include "par_ORCA_R025.h90" +#elif defined key_eel_r2 + !!--------------------------------------------------------------------- + !! 'key_eel_r2' : channel : EEL R2 + !!--------------------------------------------------------------------- +# include "par_EEL_R2.h90" +#elif defined key_eel_r5 + !!--------------------------------------------------------------------- + !! 'key_eel_r5' : channel : EEL R5 + !!--------------------------------------------------------------------- +# include "par_EEL_R5.h90" +#elif defined key_eel_r6 + !!--------------------------------------------------------------------- + !! 'key_eel_r6' : channel : EEL R6 + !!--------------------------------------------------------------------- +# include "par_EEL_R6.h90" +#elif defined key_gyre + !!--------------------------------------------------------------------- + !! 'key_gyre' : mid-latitude basin : GYRE + !!--------------------------------------------------------------------- +# include "par_GYRE.h90" +#elif defined key_pomme_r025 + !!--------------------------------------------------------------------- + !! 'key_pomme_r025': regional basin : POMME025 + !!--------------------------------------------------------------------- +# include "par_POMME_R025.h90" +#else + !!--------------------------------------------------------------------- + !! default option : small closed basin + !!--------------------------------------------------------------------- + CHARACTER(len=16), PUBLIC, PARAMETER :: & !: + cp_cfg = "default" !: name of the configuration + INTEGER, PARAMETER :: & !: + jp_cfg = 0 , & !: resolution of the configuration + + ! data size !!! * size of all input files * + jpidta = 10, & !: 1st lateral dimension ( >= jpi ) + jpjdta = 12, & !: 2nd " " ( >= jpj ) + jpkdta = 31, & !: number of levels ( >= jpk ) + + ! global or zoom domain size !!! * computational domain * + jpiglo = jpidta, & !: 1st dimension of global domain --> i + jpjglo = jpjdta, & !: 2nd " " --> j + jpk = jpkdta, & !: number of vertical levels + ! zoom starting position + jpizoom = 1 , & !: left bottom (i,j) indices of the zoom + jpjzoom = 1 , & !: in data domain indices + + ! Domain characteristics + jperio = 0 !: lateral cond. type (between 0 and 6) + ! ! = 0 closed + ! ! = 1 cyclic East-West + ! ! = 2 equatorial symmetric + ! ! = 3 North fold T-point pivot + ! ! = 4 cyclic East-West AND North fold T-point pivot + ! ! = 5 North fold F-point pivot + ! ! = 6 cyclic East-West AND North fold F-point pivot + + !! Values set to pp_not_used indicates that this parameter is not used in THIS config. + !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr + REAL(wp), PARAMETER :: & !: + pp_not_used = 999999._wp , & !: + pp_to_be_computed = 999999._wp !: + + + !! Horizontal grid parameters for domhgr + !! ===================================== + + INTEGER, PUBLIC, PARAMETER :: & !: + jphgr_msh = 0 !: type of horizontal mesh + ! ! = 0 curvilinear coordinate on the sphere + ! ! read in coordinate.nc file + ! ! = 1 geographical mesh on the sphere + ! ! with regular grid-spacing + ! ! = 2 f-plane with regular grid-spacing + ! ! = 3 beta-plane with regular grid-spacing + ! ! = 4 Mercator grid with T/U point at the equator with + ! ! isotropic resolution (e1_deg) + + REAL(wp) , PUBLIC, PARAMETER :: & !: + ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) + ppgphi0 = -35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) + ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) + ppe1_deg = 1.0_wp, & !: zonal grid-spacing (degrees) + ppe2_deg = 0.5_wp, & !: meridional grid-spacing (degrees) + ppe1_m = 5000.0_wp, & !: zonal grid-spacing (degrees) + ppe2_m = 5000.0_wp !: meridional grid-spacing (degrees) + + !! Vertical grid parameter for domzgr + !! ================================== + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients + & ppa0 = 255.58049070440_wp , & !: (default coefficients) + & ppa1 = 245.58132232490_wp , & !: + & ppkth = 21.43336197938_wp , & !: + & ppacr = 3.00000000000_wp !: + + !! If both ppa0 ppa1 and ppsur are specified to 0, then + !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppdzmin = 10._wp , & !: Minimum vertical spacing + & pphmax = 5000._wp !: Maximum depth + + !!--------------------------------------------------------------------- +#endif + + !!--------------------------------------------------------------------- + !! Domain Matrix size + !!--------------------------------------------------------------------- + INTEGER & !: +#if !defined key_agrif + ,PARAMETER & +#endif + :: & + jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci , & !: first dimension + jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj , & !: second dimension + jpim1 = jpi-1, & !: inner domain indices + jpjm1 = jpj-1, & !: " " + jpkm1 = jpk-1, & !: " " + jpij = jpi*jpj !: jpi x jpj + +#if defined key_agrif + !!--------------------------------------------------------------------- + !! Agrif variables + !!--------------------------------------------------------------------- + INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 + INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells + INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells +#endif + !!--------------------------------------------------------------------- + !! Optimization/control flags + !!--------------------------------------------------------------------- +#if defined key_esopa + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .TRUE. !: flag to activate the all options +#else + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .FALSE. !: flag to activate the all options +#endif + +#if defined key_vectopt_memory + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .FALSE. !: vector optimization flag +#endif + +#if defined key_vectopt_loop + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .FALSE. !: vector optimization flag +#endif + + !!====================================================================== +END MODULE par_oce diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef b/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef new file mode 100644 index 0000000000000000000000000000000000000000..0fb268d040892f68aaa76d76a9794bc501eff00c --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef @@ -0,0 +1,926 @@ +#- +#- $Id: AA_make.gdef 1031 2010-05-21 09:25:35Z mafoipsl $ +#- +#- Validate the correlation between the target and the environment +#- +UTIL_DIR = '??' +WW_h_t = $(shell cat $(UTIL_DIR)/.host_target) +WW_h_w = $(shell $(UTIL_DIR)/w_i_h) +WW_t_e = $(shell $(UTIL_DIR)/w_i_e $(WW_h_t) $(WW_h_w)) +ifeq "$(WW_t_e)" "NO" + $(error ) +endif +#- +#-Q- Darwin #- Global definitions for Mac OSX, gfortran +#-Q- Darwin M_K = make +#-Q- Darwin P_C = cpp +#-Q- Darwin P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin F_C = gfortran -c +#-Q- Darwin #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- Darwin #-D- MN F_D = +#-Q- Darwin #-P- I4R4 F_P = +#-Q- Darwin #-P- I4R8 F_P = -fdefault-real-8 +#-Q- Darwin #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- Darwin w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin F_O = $(w_w) -J$(MODDIR) +#-Q- Darwin F_L = gfortran +#-Q- Darwin M_M = 0 +#-Q- Darwin L_X = 0 +#-Q- Darwin L_O = +#-Q- Darwin A_C = ar -rs +#-Q- Darwin A_G = ar -x +#-Q- Darwin C_C = cc -c +#-Q- Darwin C_O = +#-Q- Darwin C_L = cc +#-Q- Darwin #- +#-Q- Darwin NCDF_INC = /usr/install/include +#-Q- Darwin NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin #- +#-Q- Darwin_g95 #- Global definitions for Mac OSX, g95 +#-Q- Darwin_g95 M_K = make +#-Q- Darwin_g95 P_C = cpp +#-Q- Darwin_g95 P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin_g95 F_C = g95 -c +#-Q- Darwin_g95 #-D- MD F_D = -g -Wall -fbounds-check +#-Q- Darwin_g95 #-D- MN F_D = +#-Q- Darwin_g95 #-P- I4R4 F_P = -i4 +#-Q- Darwin_g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- Darwin_g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- Darwin_g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin_g95 F_O = $(w_w) -fmod=$(MODDIR) +#-Q- Darwin_g95 F_L = g95 +#-Q- Darwin_g95 M_M = 0 +#-Q- Darwin_g95 L_X = 0 +#-Q- Darwin_g95 L_O = +#-Q- Darwin_g95 A_C = ar -rs +#-Q- Darwin_g95 A_G = ar -x +#-Q- Darwin_g95 C_C = cc -c +#-Q- Darwin_g95 C_O = +#-Q- Darwin_g95 C_L = cc +#-Q- Darwin_g95 #- +#-Q- Darwin_g95 NCDF_INC = /usr/install/include +#-Q- Darwin_g95 NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin_g95 #- +#-Q- aix #- Global definitions for IBM AIX (MPP) +#-Q- aix LIB_MPI = MPI1 +#-Q- aix LIB_MPI_BIS = MPI1 +#-Q- aix PRISM_ARCH = AIX +#-Q- aix PRISM_NAME = zahir +#-Q- aix FCM_ARCH = AIX_ZAHIR +#-Q- aix M_K = gmake +#-Q- aix P_C = /usr/lib/cpp +#-Q- aix P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix F_C = mpxlf90_r -c +#-Q- aix #-D- MD F_D = +#-Q- aix #-D- MN F_D = +#-Q- aix #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix #-P- I8R8 F_P = +#-Q- aix w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- aix F_L = mpxlf90_r +#-Q- aix M_M = 0 +#-Q- aix L_X = 0 +#-Q- aix L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- aix A_C = ar -rs -X64 +#-Q- aix A_G = ar -x -X64 +#-Q- aix C_C = cc -c +#-Q- aix C_O = -O +#-Q- aix C_L = cc +#-Q- aix #- +#-Q- aix NCDF_INC = /usr/local/pub/include +#-Q- aix NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- aix #- +#-Q- aix6 #- Global definitions for IBM AIX Power6 (MPP) +#-Q- aix6 LIB_MPI = MPI1 +#-Q- aix6 LIB_MPI_BIS = MPI1 +#-Q- aix6 PRISM_ARCH = AIX6 +#-Q- aix6 PRISM_NAME = vargas +#-Q- aix6 FCM_ARCH = PW6_VARGAS +#-Q- aix6 M_K = gmake +#-Q- aix6 P_C = /usr/bin/cpp +#-Q- aix6 P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- aix6 F_C = mpif90 -c -g +#-Q- aix6 #-D- MD F_D = +#-Q- aix6 #-D- MN F_D = +#-Q- aix6 #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix6 #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix6 #-P- I8R8 F_P = +#-Q- aix6 #w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix6 w_w = $(F_P) -O3 -q64 -qsuffix=f=f90 -qarch=ppc970 -qtune=ppc970 -qfree=f90 +#-Q- aix6 F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- aix6 F_L = mpif90 +#-Q- aix6 M_M = 0 +#-Q- aix6 L_X = 0 +#-Q- aix6 L_O = $(F_P) -O3 -q64 +#-Q- aix6 A_C = ar -rs +#-Q- aix6 A_G = ar -x +#-Q- aix6 C_C = cc -c +#-Q- aix6 C_O = -O +#-Q- aix6 C_L = cc +#-Q- aix6 #- +#-Q- aix6 NCDF_INC = /gpfs/apps/NETCDF/3.6.2/64/include +#-Q- aix6 NCDF_LIB = -L/gpfs/apps/NETCDF/3.6.2/64/lib -lnetcdf +#-Q- aix6 #- +#-Q- ax_mono #- Global definitions for IBM AIX (monoprocessing) +#-Q- ax_mono M_K = gmake +#-Q- ax_mono P_C = /usr/lib/cpp +#-Q- ax_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax_mono F_C = xlf90_r -c +#-Q- ax_mono #-D- MD F_D = +#-Q- ax_mono #-D- MN F_D = +#-Q- ax_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax_mono #-P- I8R8 F_P = +#-Q- ax_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax_mono F_L = xlf90_r +#-Q- ax_mono M_M = 0 +#-Q- ax_mono L_X = 0 +#-Q- ax_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax_mono A_C = ar -rs -X64 +#-Q- ax_mono A_G = ar -x -X64 +#-Q- ax_mono C_C = cc -c +#-Q- ax_mono C_O = -O +#-Q- ax_mono C_L = cc +#-Q- ax_mono #- +#-Q- ax_mono NCDF_INC = /usr/local/pub/include +#-Q- ax_mono NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- ax_mono #- +#-Q- ax6_mono #- Global definitions for IBM AIX Power6 (monoprocessing) +#-Q- ax6_mono M_K = gmake +#-Q- ax6_mono P_C = /usr/lib/cpp +#-Q- ax6_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax6_mono F_C = xlf90_r -c +#-Q- ax6_mono #-D- MD F_D = +#-Q- ax6_mono #-D- MN F_D = +#-Q- ax6_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax6_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax6_mono #-P- I8R8 F_P = +#-Q- ax6_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax6_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax6_mono F_L = xlf90_r +#-Q- ax6_mono M_M = 0 +#-Q- ax6_mono L_X = 0 +#-Q- ax6_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax6_mono A_C = ar -rs -X64 +#-Q- ax6_mono A_G = ar -x -X64 +#-Q- ax6_mono C_C = cc -c +#-Q- ax6_mono C_O = -O +#-Q- ax6_mono C_L = cc +#-Q- ax6_mono #- +#-Q- ax6_mono NCDF_INC = /usr/local/pub/NetCDF/3.6.2/include +#-Q- ax6_mono NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.2/lib -lnetcdf +#-Q- ax6_mono #- +#-Q- babel #- Global definitions for IBM Blue Gene +#-Q- babel M_K = gmake +#-Q- babel P_C = /usr/bin/cpp +#-Q- babel P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- babel F_C = mpixlf90_r -c +#-Q- babel #-D- MD F_D = +#-Q- babel #-D- MN F_D = +#-Q- babel #-P- I4R4 F_P = -qrealsize=4 +#-Q- babel #-P- I4R8 F_P = -qrealsize=8 +#-Q- babel #-P- I8R8 F_P = +#-Q- babel w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- babel F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- babel F_L = mpixlf90_r +#-Q- babel M_M = 0 +#-Q- babel L_X = 0 +#-Q- babel L_O = $(F_P) -O3 +#-Q- babel A_C = ar -rs +#-Q- babel A_G = ar -x +#-Q- babel C_C = cc -c +#-Q- babel C_O = -O +#-Q- babel C_L = cc +#-Q- babel #- +#-Q- babel NCDF_INC = /bglocal/prod/tools_ibm/netcdf-3.6.1/include +#-Q- babel NCDF_LIB = -L/bglocal/prod/tools_ibm/netcdf-3.6.1/lib -lnetcdf +#-Q- babel #- +#-Q- bgfe #- Global definitions for IBM Blue Gene Front End +#-Q- bgfe M_K = gmake +#-Q- bgfe P_C = /usr/bin/cpp +#-Q- bgfe P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- bgfe F_C = mpif90 -c -g +#-Q- bgfe #-D- MD F_D = +#-Q- bgfe #-D- MN F_D = +#-Q- bgfe #-P- I4R4 F_P = -qrealsize=4 +#-Q- bgfe #-P- I4R8 F_P = -qrealsize=8 +#-Q- bgfe #-P- I8R8 F_P = +#-Q- bgfe w_w = $(F_P) -O3 -qsuffix=f=f90 -q64 -qarch=ppc970 -qtune=ppc970 -qfree=f90 +#-Q- bgfe F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- bgfe F_L = mpif90 +#-Q- bgfe M_M = 0 +#-Q- bgfe L_X = 0 +#-Q- bgfe L_O = $(F_P) -O3 -q64 +#-Q- bgfe A_C = ar -rs +#-Q- bgfe A_G = ar -x +#-Q- bgfe C_C = cc -c +#-Q- bgfe C_O = -O +#-Q- bgfe C_L = cc +#-Q- bgfe #- +#-Q- bgfe NCDF_INC = /gpfs/apps/NETCDF/3.6.2/64/include +#-Q- bgfe NCDF_LIB = -L/gpfs/apps/NETCDF/3.6.2/64/lib -lnetcdf +#-Q- bgfe #- +#-Q- cesium #- Global definitions for Cesium at CCRT +#-Q- cesium M_K = gmake +#-Q- cesium P_C = cpp +#-Q- cesium P_O = -P -C $(P_P) +#-Q- cesium F_C = ifort -c +#-Q- cesium #-D- MD F_D = -g +#-Q- cesium #-D- MN F_D = +#-Q- cesium #-P- I4R4 F_P = -i4 +#-Q- cesium #-P- I4R8 F_P = -i4 -r8 +#-Q- cesium #-P- I8R8 F_P = -i8 -r8 +#-Q- cesium F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- cesium F_L = ifort +#-Q- cesium M_M = 0 +#-Q- cesium L_X = 0 +#-Q- cesium L_O = -Vaxlib +#-Q- cesium A_C = ar -r +#-Q- cesium A_G = ar -x +#-Q- cesium C_C = cc -c +#-Q- cesium C_O = +#-Q- cesium C_L = cc +#-Q- cesium #- +#-Q- cesium NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- cesium NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- cesium #- +#-Q- cray #- Obsolete definitions for CRAY +#-Q- cray M_K = make +#-Q- cray P_C = cpp +#-Q- cray P_O = -P -C $(P_P) +#-Q- cray F_C = f90 -c +#-Q- cray #-D- MD F_D = +#-Q- cray #-D- MN F_D = +#-Q- cray #-P- I4R4 F_P = +#-Q- cray #-P- I4R8 F_P = +#-Q- cray #-P- I8R8 F_P = +#-Q- cray F_O = $(F_D) $(F_P) -v -p $(MODEL_LIB) +#-Q- cray F_L = f90 +#-Q- cray M_M = 0 +#-Q- cray L_X = 0 +#-Q- cray L_O = +#-Q- cray A_C = bld -r +#-Q- cray A_G = bld -x +#-Q- cray C_C = cc -c +#-Q- cray C_O = -Wall +#-Q- cray C_L = cc +#-Q- cray #- +#-Q- cray NCDF_INC = /usr/local/pub/include +#-Q- cray NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- cray #- +#-Q- eshpux #- Global definitions for hpux used as Earth Simulator front-end (moon) +#-Q- eshpux LIB_MPI = MPI1 +#-Q- eshpux LIB_MPI_BIS = MPI1 +#-Q- eshpux PRISM_ARCH = ES +#-Q- eshpux PRISM_NAME = moon +#-Q- eshpux FCM_ARCH = ES_MOON +#-Q- eshpux M_K = gmake +#-Q- eshpux P_C = escpp +#-Q- eshpux # FTRACE used for profiling +#-Q- eshpux FTRACE = -ftrace +#-Q- eshpux # FTRACE = +#-Q- eshpux P_O = -P -C $(P_P) +#-Q- eshpux F_C = esmpif90 -c +#-Q- eshpux #-D- MD F_D = +#-Q- eshpux #-D- MN F_D = +#-Q- eshpux #-P- I4R4 F_P = -dW +#-Q- eshpux #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- eshpux #-P- I8R8 F_P = -ew +#-Q- eshpux F_O = $(F_D) $(F_P) $(FTRACE) -Ep -DCPP_PARA -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- eshpux F_L = esmpif90 +#-Q- eshpux M_M = 1 +#-Q- eshpux L_X = 1 +#-Q- eshpux L_O = $(F_P) $(FTRACE) +#-Q- eshpux A_C = ar -rv +#-Q- eshpux A_G = ar -x +#-Q- eshpux A_X = esar -rv +#-Q- eshpux C_C = esmpicc -c +#-Q- eshpux C_O = +#-Q- eshpux C_L = esmpicc +#-Q- eshpux FC_C = cc -c +#-Q- eshpux FC_O = +#-Q- eshpux FC_L = cc +#-Q- eshpux #- +#-Q- eshpux NCDF_INC = /S/home010/c0010/ES/include +#-Q- eshpux NCDF_LIB = -L/S/home010/c0010/ES/lib -lnetcdf +#-Q- eshpux #- +#-Q- fjvpp #- Obsolete definitions for FUJITSU VPP +#-Q- fjvpp M_K = gmake +#-Q- fjvpp P_C = cpp +#-Q- fjvpp P_O = -P -C $(P_P) +#-Q- fjvpp F_C = frt -c +#-Q- fjvpp #-D- MD F_D = +#-Q- fjvpp #-D- MN F_D = +#-Q- fjvpp #-P- I4R4 F_P = -AD +#-Q- fjvpp #-P- I4R8 F_P = -Ad +#-Q- fjvpp #-P- I8R8 F_P = -Ad +#-Q- fjvpp w_w = -X9 -Oe -Sw $(F_D) $(F_P) -Am -M$(MODDIR) +#-Q- fjvpp F_O = $(w_w) -Of -Wv,-Of,-ilfunc,-preload +#-Q- fjvpp F_L = frt +#-Q- fjvpp M_M = 0 +#-Q- fjvpp L_X = 0 +#-Q- fjvpp L_O = -Wg,-c -Wl,-J,-t,-dy +#-Q- fjvpp A_C = ar -r +#-Q- fjvpp A_G = ar -x +#-Q- fjvpp C_C = cc -c +#-Q- fjvpp C_O = +#-Q- fjvpp C_L = cc +#-Q- fjvpp #- +#-Q- fjvpp NCDF_INC = /usr/local/include/netcdf +#-Q- fjvpp NCDF_LIB = /usr/local/lib/netcdf/libnetcdf.a +#-Q- fjvpp #- +#-Q- g95 #- Global definitions for gnu g95 compiler +#-Q- g95 M_K = gmake +#-Q- g95 P_C = cpp +#-Q- g95 P_O = -P -C -traditional $(P_P) +#-Q- g95 F_C = g95 -c +#-Q- g95 #-D- MD F_D = +#-Q- g95 #-D- MN F_D = +#-Q- g95 #-P- I4R4 F_P = -i4 +#-Q- g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- g95 F_O = $(w_w) -fmod=$(MODDIR) -fno-second-underscore +#-Q- g95 F_L = g95 +#-Q- g95 M_M = 0 +#-Q- g95 L_X = 0 +#-Q- g95 L_O = +#-Q- g95 A_C = ar -r +#-Q- g95 A_G = ar -x +#-Q- g95 C_C = cc -c +#-Q- g95 C_O = +#-Q- g95 C_L = cc +#-Q- g95 #- +#-Q- g95 NCDF_INC = /usr/local/include +#-Q- g95 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- g95 #- +#-Q- gfortran #- Global definitions for gfortran, generic system +#-Q- gfortran M_K = make +#-Q- gfortran P_C = cpp +#-Q- gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- gfortran F_C = gfortran -c +#-Q- gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- gfortran #-D- MN F_D = +#-Q- gfortran #-P- I4R4 F_P = +#-Q- gfortran #-P- I4R8 F_P = -fdefault-real-8 +#-Q- gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- gfortran F_O = $(w_w) -J$(MODDIR) +#-Q- gfortran F_L = gfortran +#-Q- gfortran M_M = 0 +#-Q- gfortran L_X = 0 +#-Q- gfortran L_O = +#-Q- gfortran A_C = ar -rs +#-Q- gfortran A_G = ar -x +#-Q- gfortran C_C = cc -c +#-Q- gfortran C_O = +#-Q- gfortran C_L = cc +#-Q- gfortran #- +#-Q- gfortran NCDF_INC = /usr/local/include +#-Q- gfortran NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- gfortran #- +#-Q- idris_tx7 #- Global definitions for NEC TX7 front-end (Brodie) at Idris, gfortran +#-Q- idris_tx7 M_K = gmake +#-Q- idris_tx7 P_C = cpp +#-Q- idris_tx7 P_O = -P -C $(P_P) +#-Q- idris_tx7 F_C = gfortran -c +#-Q- idris_tx7 #-D- MD F_D = -g +#-Q- idris_tx7 #-D- MN F_D = +#-Q- idris_tx7 #-P- I4R4 F_P = +#-Q- idris_tx7 #-P- I4R8 F_P = -fdefault-real-8 +#-Q- idris_tx7 #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- idris_tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -J$(MODDIR) +#-Q- idris_tx7 F_L = gfortran +#-Q- idris_tx7 M_M = 0 +#-Q- idris_tx7 L_X = 0 +#-Q- idris_tx7 L_O = +#-Q- idris_tx7 A_C = ar -r +#-Q- idris_tx7 A_G = ar -x +#-Q- idris_tx7 C_C = gcc -c +#-Q- idris_tx7 C_O = +#-Q- idris_tx7 C_L = gcc +#-Q- idris_tx7 #- +#-Q- idris_tx7 NCDF_INC = /TXlocal/pub/netcdf/netcdf-3.6.2/include +#-Q- idris_tx7 NCDF_LIB = -L/TXlocal/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- idris_tx7 #- +#-Q- linux #- Global definitions for Linux, pgf90 +#-Q- linux M_K = gmake +#-Q- linux P_C = /usr/bin/cpp +#-Q- linux P_O = -P -C -traditional $(P_P) +#-Q- linux F_C = ftn -c +#-Q- linux #-D- MD F_D = +#-Q- linux #-D- MN F_D = +#-Q- linux #-P- I4R4 F_P = -i4 +#-Q- linux #-P- I4R8 F_P = -i4 -r8 +#-Q- linux #-P- I8R8 F_P = -i8 -r8 +#-Q- linux F_O = $(F_D) $(F_P) -Mfree -module $(MODDIR) -fastsse +#-Q- linux F_L = ftn +#-Q- linux M_M = 0 +#-Q- linux L_X = 0 +#-Q- linux L_O = -Wl,-Bstatic -Mbounds +#-Q- linux A_C = ar -r +#-Q- linux A_G = ar -x +#-Q- linux C_C = gcc -c +#-Q- linux C_O = -Wall +#-Q- linux C_L = gcc +#-Q- linux #- +#-Q- linux NCDF_INC = /opt/cray/netcdf/4.1.1.0/netcdf-pgi/include +#-Q- linux NCDF_LIB = -L/opt/cray/netcdf/4.1.1.0/netcdf-pgi/lib -lnetcdf +#-Q- linux #- +#-Q- lxiv7 #- Global definitions for Linux, ifc +#-Q- lxiv7 M_K = gmake +#-Q- lxiv7 P_C = cpp +#-Q- lxiv7 P_O = -P -C $(P_P) +#-Q- lxiv7 F_C = ifc -c +#-Q- lxiv7 #-D- MD F_D = -g +#-Q- lxiv7 #-D- MN F_D = +#-Q- lxiv7 #-P- I4R4 F_P = -i4 +#-Q- lxiv7 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv7 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv7 F_L = ifc +#-Q- lxiv7 M_M = 0 +#-Q- lxiv7 L_X = 0 +#-Q- lxiv7 L_O = -Vaxlib +#-Q- lxiv7 A_C = ar -r +#-Q- lxiv7 A_G = ar -x +#-Q- lxiv7 C_C = cc -c +#-Q- lxiv7 C_O = +#-Q- lxiv7 C_L = cc +#-Q- lxiv7 #- +#-Q- lxiv7 NCDF_INC = /usr/local/include +#-Q- lxiv7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- lxiv7 #- +#-Q- lxiv8 #- Global definitions for Intel compiler (ifort) at LSCE +#-Q- lxiv8 M_K = gmake +#-Q- lxiv8 P_C = cpp +#-Q- lxiv8 P_O = -P -C $(P_P) +#-Q- lxiv8 F_C = ifort -c -cpp +#-Q- lxiv8 #-D- MD F_D = -g +#-Q- lxiv8 #-D- MN F_D = +#-Q- lxiv8 #-P- I4R4 F_P = -i4 +#-Q- lxiv8 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv8 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv8 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv8 F_L = ifort +#-Q- lxiv8 M_M = 0 +#-Q- lxiv8 L_X = 0 +#-Q- lxiv8 L_O = -Vaxlib +#-Q- lxiv8 A_C = ar -r +#-Q- lxiv8 A_G = ar -x +#-Q- lxiv8 C_C = cc -c +#-Q- lxiv8 C_O = +#-Q- lxiv8 C_L = cc +#-Q- lxiv8 #- +#-Q- lxiv8 NCDF_INC = /usr/local/include +#-Q- lxiv8 NCDF_LIB = -L/usr/local/lib -lnetcdff -lnetcdf +#-Q- lxiv8 #- +#-Q- osf1 #- Obsolete definitions for DEC OSF1 +#-Q- osf1 M_K = gmake +#-Q- osf1 P_C = cpp +#-Q- osf1 P_O = -P -C $(P_P) +#-Q- osf1 F_C = f90 -c +#-Q- osf1 #-D- MD F_D = -g +#-Q- osf1 #-D- MN F_D = +#-Q- osf1 #-P- I4R4 F_P = +#-Q- osf1 #-P- I4R8 F_P = -r8 +#-Q- osf1 #-P- I8R8 F_P = -i8 -r8 +#-Q- osf1 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- osf1 F_L = f90 +#-Q- osf1 M_M = 0 +#-Q- osf1 L_X = 0 +#-Q- osf1 L_O = +#-Q- osf1 A_C = ar -r +#-Q- osf1 A_G = ar -x +#-Q- osf1 C_C = cc -c +#-Q- osf1 C_O = +#-Q- osf1 C_L = cc +#-Q- osf1 #- +#-Q- osf1 NCDF_INC = /usr/local/include +#-Q- osf1 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- osf1 #- +#-Q- osxxlf #- Global definitions for Mac OS X and IBM xlf compiler +#-Q- osxxlf M_K = make +#-Q- osxxlf P_C = /usr/bin/cpp +#-Q- osxxlf P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- osxxlf F_C = xlf90 -c +#-Q- osxxlf #-D- MD F_D = -g -C +#-Q- osxxlf #-D- MN F_D = +#-Q- osxxlf #-P- I4R4 F_P = -qintsize=4 -qrealsize=4 +#-Q- osxxlf #-P- I4R8 F_P = -qintsize=4 -qrealsize=8 +#-Q- osxxlf #-P- I8R8 F_P = -qintsize=8 -qrealsize=8 +#-Q- osxxlf w_w = $(F_P) -O2 $(F_D) -qsuffix=f=f90 +#-Q- osxxlf F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- osxxlf F_L = xlf90 +#-Q- osxxlf M_M = 0 +#-Q- osxxlf L_X = 0 +#-Q- osxxlf L_O = $(F_P) -O2 +#-Q- osxxlf A_C = ar -rs +#-Q- osxxlf A_G = ar -x +#-Q- osxxlf C_C = cc -c +#-Q- osxxlf C_O = +#-Q- osxxlf C_L = cc +#-Q- osxxlf #- +#-Q- osxxlf NCDF_INC = /usr/local/install/netcdf-3.6.0-p1/include +#-Q- osxxlf NCDF_LIB = -L/usr/local/install/netcdf-3.6.0-p1/lib -lnetcdf +#-Q- osxxlf #- +#-Q- platine #- Global definitions for Bull (Itanium) at CCRT +#-Q- platine LIB_MPI = MPI1 +#-Q- platine LIB_MPI_BIS = MPI1 +#-Q- platine PRISM_ARCH = IA64 +#-Q- platine PRISM_NAME = platine +#-Q- platine FCM_ARCH = IA64_PLATINE +#-Q- platine M_K = gmake +#-Q- platine P_C = cpp +#-Q- platine P_O = -P -C $(P_P) +#-Q- platine F_C = mpif90 -c -cpp +#-Q- platine #-D- MD F_D = -g +#-Q- platine #-D- MN F_D = +#-Q- platine #-P- I4R4 F_P = -i4 +#-Q- platine #-P- I4R8 F_P = -i4 -r8 +#-Q- platine #-P- I8R8 F_P = -i8 -r8 +#-Q- platine F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- platine F_L = mpif90 +#-Q- platine M_M = 0 +#-Q- platine L_X = 0 +#-Q- platine L_O = +#-Q- platine A_C = ar -r +#-Q- platine A_G = ar -x +#-Q- platine C_C = cc -c +#-Q- platine C_O = +#-Q- platine C_L = cc +#-Q- platine #- +#-Q- platine NCDF_INC = /usr/include +#-Q- platine NCDF_LIB = -L/usr/lib -lnetcdff -lnetcdf +#-Q- platine #- +#-Q- sgi6 #- Global definitions for IRIX64 (sgi6) +#-Q- sgi6 M_K = gmake +#-Q- sgi6 P_C = cpp +#-Q- sgi6 P_O = -P -C $(P_P) +#-Q- sgi6 F_C = f90 -c +#-Q- sgi6 #-D- MD F_D = +#-Q- sgi6 #-D- MN F_D = +#-Q- sgi6 #-P- I4R4 F_P = -i4 -r4 +#-Q- sgi6 #-P- I4R8 F_P = -i4 -r8 +#-Q- sgi6 #-P- I8R8 F_P = -i8 -r8 +#-Q- sgi6 F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sgi6 F_L = f90 +#-Q- sgi6 M_M = 0 +#-Q- sgi6 L_X = 0 +#-Q- sgi6 L_O = +#-Q- sgi6 A_C = ar -r +#-Q- sgi6 A_G = ar -x +#-Q- sgi6 C_C = cc -c +#-Q- sgi6 C_O = +#-Q- sgi6 C_L = cc +#-Q- sgi6 #- +#-Q- sgi6 NCDF_INC = /usr/local/pub/include +#-Q- sgi6 NCDF_LIB = -L/usr/local/pub/lib64 -lnetcdf +#-Q- sgi6 #- +#-Q- solaris #- Global definitions for SOLARIS +#-Q- solaris M_K = make +#-Q- solaris P_C = cpp +#-Q- solaris P_O = -P -C $(P_P) +#-Q- solaris F_C = f90 -c +#-Q- solaris #-D- MD F_D = +#-Q- solaris #-D- MN F_D = +#-Q- solaris #-P- I4R4 F_P = +#-Q- solaris #-P- I4R8 F_P = -r8const +#-Q- solaris #-P- I8R8 F_P = -i8const -r8const +#-Q- solaris F_O = $(F_D) $(F_P) -M$(MODDIR) -fast +#-Q- solaris F_L = f90 +#-Q- solaris M_M = 1 +#-Q- solaris L_X = 0 +#-Q- solaris L_O = +#-Q- solaris A_C = ar -r +#-Q- solaris A_G = ar -x +#-Q- solaris C_C = cc -c +#-Q- solaris C_O = +#-Q- solaris C_L = cc +#-Q- solaris #- +#-Q- solaris NCDF_INC = /distrib/local/include +#-Q- solaris NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- solaris #- +#-Q- sx6nec #- Global definitions for NEC SX8 at CCRT (alias) +#-Q- sx6nec LIB_MPI = MPI1 +#-Q- sx6nec LIB_MPI_BIS = MPI1 +#-Q- sx6nec PRISM_ARCH = SX +#-Q- sx6nec PRISM_NAME = mercure +#-Q- sx6nec FCM_ARCH = SX8_MERCURE +#-Q- sx6nec M_K = sxgmake +#-Q- sx6nec P_C = cpp +#-Q- sx6nec P_O = -P -C $(P_P) +#-Q- sx6nec F_C = sxmpif90 -c +#-Q- sx6nec #-D- MD F_D = +#-Q- sx6nec #-D- MN F_D = +#-Q- sx6nec #-P- I4R4 F_P = -dW +#-Q- sx6nec #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx6nec #-P- I8R8 F_P = -ew +#-Q- sx6nec F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx6nec F_L = sxmpif90 +#-Q- sx6nec M_M = 1 +#-Q- sx6nec L_X = 0 +#-Q- sx6nec L_O = -size_t64 $(F_P) +#-Q- sx6nec A_C = sxar -rv +#-Q- sx6nec A_G = sxar -x +#-Q- sx6nec A_X = sxar -rv +#-Q- sx6nec C_C = sxcc -size_t64 -c +#-Q- sx6nec C_O = +#-Q- sx6nec C_L = sxcc -size_t64 +#-Q- sx6nec FC_C = gcc -c +#-Q- sx6nec FC_O = +#-Q- sx6nec FC_L = gcc +#-Q- sx6nec #- +#-Q- sx6nec NCDF_INC = /usr/local/SX8/soft/netcdf/include +#-Q- sx6nec NCDF_LIB = -L/usr/local/SX8/soft/netcdf/lib -lnetcdf +#-Q- sx6nec #- +#-Q- sx8brodie #- Global definitions for NEC SX8 at Idris +#-Q- sx8brodie LIB_MPI = MPI1 +#-Q- sx8brodie LIB_MPI_BIS = MPI1 +#-Q- sx8brodie PRISM_ARCH = SX +#-Q- sx8brodie PRISM_NAME = brodie +#-Q- sx8brodie FCM_ARCH = SX8_BRODIE +#-Q- sx8brodie M_K = sxgmake +#-Q- sx8brodie P_C = sxcpp +#-Q- sx8brodie P_O = -P -C $(P_P) +#-Q- sx8brodie F_C = sxmpif90 -c +#-Q- sx8brodie #-D- MD F_D = +#-Q- sx8brodie #-D- MN F_D = +#-Q- sx8brodie #-P- I4R4 F_P = -dW +#-Q- sx8brodie #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8brodie #-P- I8R8 F_P = -ew +#-Q- sx8brodie F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -I $(MODDIR) +#-Q- sx8brodie F_L = sxmpif90 +#-Q- sx8brodie M_M = 1 +#-Q- sx8brodie L_X = 0 +#-Q- sx8brodie L_O = $(F_P) +#-Q- sx8brodie A_C = sxar -rv +#-Q- sx8brodie A_G = sxar -x +#-Q- sx8brodie A_X = sxar -rv +#-Q- sx8brodie C_C = sxcc -c +#-Q- sx8brodie C_O = +#-Q- sx8brodie C_L = sxcc +#-Q- sx8brodie FC_C = gcc -c +#-Q- sx8brodie FC_O = +#-Q- sx8brodie FC_L = gcc +#-Q- sx8brodie #- +#-Q- sx8brodie NCDF_INC = /SXlocal/pub/netCDF/netCDF-3.6.1/include +#-Q- sx8brodie NCDF_LIB = -L/SXlocal/pub/netCDF/netCDF-3.6.1/lib -lnetcdf +#-Q- sx8brodie #- +#-Q- sx8mercure #- Global definitions for NEC SX8 at CCRT +#-Q- sx8mercure LIB_MPI = MPI1 +#-Q- sx8mercure LIB_MPI_BIS = MPI1 +#-Q- sx8mercure PRISM_ARCH = SX +#-Q- sx8mercure PRISM_NAME = mercure +#-Q- sx8mercure FCM_ARCH = SX8_MERCURE +#-Q- sx8mercure M_K = sxgmake +#-Q- sx8mercure P_C = cpp +#-Q- sx8mercure P_O = -P -C $(P_P) +#-Q- sx8mercure F_C = sxmpif90 -c +#-Q- sx8mercure #-D- MD F_D = +#-Q- sx8mercure #-D- MN F_D = +#-Q- sx8mercure #-P- I4R4 F_P = -dW +#-Q- sx8mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8mercure #-P- I8R8 F_P = -ew +#-Q- sx8mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx8mercure F_L = sxmpif90 +#-Q- sx8mercure M_M = 1 +#-Q- sx8mercure L_X = 0 +#-Q- sx8mercure L_O = -size_t64 $(F_P) +#-Q- sx8mercure A_C = sxar -rv +#-Q- sx8mercure A_G = sxar -x +#-Q- sx8mercure A_X = sxar -rv +#-Q- sx8mercure C_C = sxcc -size_t64 -c +#-Q- sx8mercure C_O = +#-Q- sx8mercure C_L = sxcc -size_t64 +#-Q- sx8mercure FC_C = gcc -c +#-Q- sx8mercure FC_O = +#-Q- sx8mercure FC_L = gcc +#-Q- sx8mercure #- +#-Q- sx8mercure NETCDF_SX_INCLUDEDIR ?= /usr/local/SX8/soft/netcdf/include +#-Q- sx8mercure NETCDF_SX_LIBDIR ?= /usr/local/SX8/soft/netcdf/lib +#-Q- sx8mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx8mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx8mercure #- +#-Q- sx9mercure #- Global definitions for NEC SX9 at CCRT +#-Q- sx9mercure LIB_MPI = MPI1 +#-Q- sx9mercure LIB_MPI_BIS = MPI1 +#-Q- sx9mercure PRISM_ARCH = SX +#-Q- sx9mercure PRISM_NAME = mercure +#-Q- sx9mercure FCM_ARCH = SX9_MERCURE +#-Q- sx9mercure M_K = sxgmake +#-Q- sx9mercure P_C = cpp +#-Q- sx9mercure P_O = -P -C $(P_P) +#-Q- sx9mercure F_C = sxmpif90 -c +#-Q- sx9mercure #-D- MD F_D = +#-Q- sx9mercure #-D- MN F_D = +#-Q- sx9mercure #-P- I4R4 F_P = -dW +#-Q- sx9mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx9mercure #-P- I8R8 F_P = -ew +#-Q- sx9mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx9mercure F_L = sxmpif90 +#-Q- sx9mercure M_M = 1 +#-Q- sx9mercure L_X = 0 +#-Q- sx9mercure L_O = -size_t64 $(F_P) +#-Q- sx9mercure A_C = sxar -rv +#-Q- sx9mercure A_G = sxar -x +#-Q- sx9mercure A_X = sxar -rv +#-Q- sx9mercure C_C = sxcc -size_t64 -c +#-Q- sx9mercure C_O = +#-Q- sx9mercure C_L = sxcc -size_t64 +#-Q- sx9mercure FC_C = gcc -c +#-Q- sx9mercure FC_O = +#-Q- sx9mercure FC_L = gcc +#-Q- sx9mercure #- +#-Q- sx9mercure NETCDF_SX_INCLUDEDIR ?= /ccc/applications/sx9/netcdf-3.6.1/include +#-Q- sx9mercure NETCDF_SX_LIBDIR ?= /ccc/applications/sx9/netcdf-3.6.1/lib +#-Q- sx9mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx9mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx9mercure #- +#-Q- sxdkrz #- Global definitions for NEC SX8 at DKRZ +#-Q- sxdkrz LIB_MPI = MPI1 +#-Q- sxdkrz LIB_MPI_BIS = MPI1 +#-Q- sxdkrz PRISM_ARCH = SX +#-Q- sxdkrz PRISM_NAME = ds +#-Q- sxdkrz M_K = sxgmake +#-Q- sxdkrz P_C = cpp +#-Q- sxdkrz P_O = -P -C $(P_P) +#-Q- sxdkrz F_C = sxmpif90 -c +#-Q- sxdkrz #-D- MD F_D = +#-Q- sxdkrz #-D- MN F_D = +#-Q- sxdkrz #-P- I4R4 F_P = -dw +#-Q- sxdkrz #-P- I4R8 F_P = -dw -Wf\"-A idbl4\" +#-Q- sxdkrz #-P- I8R8 F_P = -ew +#-Q- sxdkrz F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sxdkrz F_L = sxmpif90 +#-Q- sxdkrz M_M = 1 +#-Q- sxdkrz L_X = 0 +#-Q- sxdkrz L_O = $(F_P) +#-Q- sxdkrz A_C = ar -rv +#-Q- sxdkrz A_G = ar -x +#-Q- sxdkrz A_X = sxar -rv +#-Q- sxdkrz C_C = sxcc -c +#-Q- sxdkrz C_O = +#-Q- sxdkrz C_L = sxcc +#-Q- sxdkrz FC_C = cc -c +#-Q- sxdkrz FC_O = +#-Q- sxdkrz FC_L = cc +#-Q- sxdkrz #- +#-Q- sxdkrz NCDF_INC = /pool/SX-6/netcdf/netcdf-3.5.0/include +#-Q- sxdkrz NCDF_LIB = -L/pool/SX-6/netcdf/netcdf-3.5.0/lib -lnetcdf_A_idbl4 +#-Q- sxdkrz #- +#-Q- t3e #- Obsolete definitions for T3E +#-Q- t3e M_K = gmake +#-Q- t3e P_C = cpp +#-Q- t3e P_O = -P -C $(P_P) +#-Q- t3e F_C = f90 -c +#-Q- t3e #-D- MD F_D = +#-Q- t3e #-D- MN F_D = +#-Q- t3e #-P- I4R4 F_P = +#-Q- t3e #-P- I4R8 F_P = +#-Q- t3e #-P- I8R8 F_P = +#-Q- t3e w_w = $(F_D) $(F_P) -rm -O2 -Ounroll2 -Osplit2 -dp +#-Q- t3e F_O = $(w_w) -p $(MODEL_LIB) +#-Q- t3e F_L = f90 +#-Q- t3e M_M = 0 +#-Q- t3e L_X = 0 +#-Q- t3e L_O = -X 4 +#-Q- t3e A_C = ar -r +#-Q- t3e A_G = ar -x +#-Q- t3e C_C = cc -c +#-Q- t3e C_O = -Wall +#-Q- t3e C_L = cc +#-Q- t3e #- +#-Q- t3e NCDF_INC = /usr/local/pub/include +#-Q- t3e NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- t3e #- +#-Q- titane #- Global definitions for Bull (Xeon) at CCRT +#-Q- titane LIB_MPI = MPI1 +#-Q- titane LIB_MPI_BIS = MPI1 +#-Q- titane PRISM_ARCH = X64 +#-Q- titane PRISM_NAME = titane +#-Q- titane FCM_ARCH = X64_TITANE +#-Q- titane M_K = gmake +#-Q- titane P_C = cpp +#-Q- titane P_O = -P -C $(P_P) +#-Q- titane F_C = mpif90 -c -cpp +#-Q- titane #-D- MD F_D = -g +#-Q- titane #-D- MN F_D = +#-Q- titane #-P- I4R4 F_P = -i4 +#-Q- titane #-P- I4R8 F_P = -i4 -r8 +#-Q- titane #-P- I8R8 F_P = -i8 -r8 +#-Q- titane F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- titane F_L = mpif90 +#-Q- titane M_M = 0 +#-Q- titane L_X = 0 +#-Q- titane L_O = +#-Q- titane A_C = ar -r +#-Q- titane A_G = ar -x +#-Q- titane C_C = cc -c +#-Q- titane C_O = +#-Q- titane C_L = cc +#-Q- titane #- +#-Q- titane NCDF_INC = $(NETCDF_INCLUDEDIR) +#-Q- titane NCDF_LIB = -L$(NETCDF_LIBDIR) -lnetcdff -lnetcdf +#-Q- titane #- +#-Q- tx7 #- Global definitions for NEC TX7 front-end (Mercure) at CCRT, ifort +#-Q- tx7 M_K = gmake +#-Q- tx7 P_C = cpp +#-Q- tx7 P_O = -P -C $(P_P) +#-Q- tx7 F_C = ifort -c +#-Q- tx7 #-D- MD F_D = -g +#-Q- tx7 #-D- MN F_D = +#-Q- tx7 #-P- I4R4 F_P = -i4 +#-Q- tx7 #-P- I4R8 F_P = -i4 -r8 +#-Q- tx7 #-P- I8R8 F_P = -i8 -r8 +#-Q- tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- tx7 F_L = ifort +#-Q- tx7 M_M = 0 +#-Q- tx7 L_X = 0 +#-Q- tx7 L_O = -Vaxlib +#-Q- tx7 A_C = ar -r +#-Q- tx7 A_G = ar -x +#-Q- tx7 C_C = cc -c +#-Q- tx7 C_O = +#-Q- tx7 C_L = cc +#-Q- tx7 #- +#-Q- tx7 NCDF_INC = /usr/local/include +#-Q- tx7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- tx7 #- +#-Q- ulam #- Global definitions for ulam at IDRIS +#-Q- ulam M_K = gmake +#-Q- ulam P_C = cpp +#-Q- ulam P_O = -P -C $(P_P) +#-Q- ulam F_C = ifort -c -cpp +#-Q- ulam #-D- MD F_D = -g +#-Q- ulam #-D- MN F_D = +#-Q- ulam #-P- I4R4 F_P = -i4 +#-Q- ulam #-P- I4R8 F_P = -i4 -r8 +#-Q- ulam #-P- I8R8 F_P = -i8 -r8 +#-Q- ulam F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- ulam F_L = ifort +#-Q- ulam M_M = 0 +#-Q- ulam L_X = 0 +#-Q- ulam L_O = -Vaxlib +#-Q- ulam A_C = ar -r +#-Q- ulam A_G = ar -x +#-Q- ulam C_C = cc -c +#-Q- ulam C_O = +#-Q- ulam C_L = cc +#-Q- ulam #- +#-Q- ulam NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- ulam NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- ulam #- +#-Q- unix #- Skeleton definitions for UNIX +#-Q- unix M_K = make +#-Q- unix P_C = cpp +#-Q- unix P_O = -P -C $(P_P) +#-Q- unix F_C = f90 -c +#-Q- unix #-D- MD F_D = +#-Q- unix #-D- MN F_D = +#-Q- unix #-P- I4R4 F_P = +#-Q- unix #-P- I4R8 F_P = +#-Q- unix #-P- I8R8 F_P = +#-Q- unix F_O = $(F_D) $(F_P) -M$(MODDIR) +#-Q- unix F_L = f90 +#-Q- unix M_M = 0 +#-Q- unix L_X = 0 +#-Q- unix L_O = +#-Q- unix A_C = ar -r +#-Q- unix A_G = ar -x +#-Q- unix C_C = cc -c +#-Q- unix C_O = +#-Q- unix C_L = cc +#-Q- unix #- +#-Q- unix NCDF_INC = /distrib/local/include +#-Q- unix NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- unix #- +#-Q- x86_64 #- Global definitions for new mercure front-end at CCRT (05/2010) +#-Q- x86_64 M_K = gmake +#-Q- x86_64 P_C = cpp +#-Q- x86_64 P_O = -P -C $(P_P) +#-Q- x86_64 F_C = ifort -c +#-Q- x86_64 #-D- MD F_D = -g +#-Q- x86_64 #-D- MN F_D = +#-Q- x86_64 #-P- I4R4 F_P = -i4 +#-Q- x86_64 #-P- I4R8 F_P = -i4 -r8 +#-Q- x86_64 #-P- I8R8 F_P = -i8 -r8 +#-Q- x86_64 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- x86_64 F_L = ifort +#-Q- x86_64 M_M = 0 +#-Q- x86_64 L_X = 0 +#-Q- x86_64 L_O = -Vaxlib +#-Q- x86_64 A_C = ar -r +#-Q- x86_64 A_G = ar -x +#-Q- x86_64 C_C = cc -c +#-Q- x86_64 C_O = +#-Q- x86_64 C_L = cc +#-Q- x86_64 #- +#-Q- x86_64 NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- x86_64 NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- x86_64 #- +RM = rm -f +STRIP = strip +SIZE = size diff --git a/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef_orig b/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef_orig new file mode 100644 index 0000000000000000000000000000000000000000..3edfaf0eebf2b4c4b0b875d8677bfc539bd1e026 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.2/modipsl/util/AA_make.gdef_orig @@ -0,0 +1,926 @@ +#- +#- $Id: AA_make.gdef 1031 2010-05-21 09:25:35Z mafoipsl $ +#- +#- Validate the correlation between the target and the environment +#- +UTIL_DIR = '??' +WW_h_t = $(shell cat $(UTIL_DIR)/.host_target) +WW_h_w = $(shell $(UTIL_DIR)/w_i_h) +WW_t_e = $(shell $(UTIL_DIR)/w_i_e $(WW_h_t) $(WW_h_w)) +ifeq "$(WW_t_e)" "NO" + $(error ) +endif +#- +#-Q- Darwin #- Global definitions for Mac OSX, gfortran +#-Q- Darwin M_K = make +#-Q- Darwin P_C = cpp +#-Q- Darwin P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin F_C = gfortran -c +#-Q- Darwin #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- Darwin #-D- MN F_D = +#-Q- Darwin #-P- I4R4 F_P = +#-Q- Darwin #-P- I4R8 F_P = -fdefault-real-8 +#-Q- Darwin #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- Darwin w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin F_O = $(w_w) -J$(MODDIR) +#-Q- Darwin F_L = gfortran +#-Q- Darwin M_M = 0 +#-Q- Darwin L_X = 0 +#-Q- Darwin L_O = +#-Q- Darwin A_C = ar -rs +#-Q- Darwin A_G = ar -x +#-Q- Darwin C_C = cc -c +#-Q- Darwin C_O = +#-Q- Darwin C_L = cc +#-Q- Darwin #- +#-Q- Darwin NCDF_INC = /usr/install/include +#-Q- Darwin NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin #- +#-Q- Darwin_g95 #- Global definitions for Mac OSX, g95 +#-Q- Darwin_g95 M_K = make +#-Q- Darwin_g95 P_C = cpp +#-Q- Darwin_g95 P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin_g95 F_C = g95 -c +#-Q- Darwin_g95 #-D- MD F_D = -g -Wall -fbounds-check +#-Q- Darwin_g95 #-D- MN F_D = +#-Q- Darwin_g95 #-P- I4R4 F_P = -i4 +#-Q- Darwin_g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- Darwin_g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- Darwin_g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin_g95 F_O = $(w_w) -fmod=$(MODDIR) +#-Q- Darwin_g95 F_L = g95 +#-Q- Darwin_g95 M_M = 0 +#-Q- Darwin_g95 L_X = 0 +#-Q- Darwin_g95 L_O = +#-Q- Darwin_g95 A_C = ar -rs +#-Q- Darwin_g95 A_G = ar -x +#-Q- Darwin_g95 C_C = cc -c +#-Q- Darwin_g95 C_O = +#-Q- Darwin_g95 C_L = cc +#-Q- Darwin_g95 #- +#-Q- Darwin_g95 NCDF_INC = /usr/install/include +#-Q- Darwin_g95 NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin_g95 #- +#-Q- aix #- Global definitions for IBM AIX (MPP) +#-Q- aix LIB_MPI = MPI1 +#-Q- aix LIB_MPI_BIS = MPI1 +#-Q- aix PRISM_ARCH = AIX +#-Q- aix PRISM_NAME = zahir +#-Q- aix FCM_ARCH = AIX_ZAHIR +#-Q- aix M_K = gmake +#-Q- aix P_C = /usr/lib/cpp +#-Q- aix P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix F_C = mpxlf90_r -c +#-Q- aix #-D- MD F_D = +#-Q- aix #-D- MN F_D = +#-Q- aix #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix #-P- I8R8 F_P = +#-Q- aix w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- aix F_L = mpxlf90_r +#-Q- aix M_M = 0 +#-Q- aix L_X = 0 +#-Q- aix L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- aix A_C = ar -rs -X64 +#-Q- aix A_G = ar -x -X64 +#-Q- aix C_C = cc -c +#-Q- aix C_O = -O +#-Q- aix C_L = cc +#-Q- aix #- +#-Q- aix NCDF_INC = /usr/local/pub/include +#-Q- aix NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- aix #- +#-Q- aix6 #- Global definitions for IBM AIX Power6 (MPP) +#-Q- aix6 LIB_MPI = MPI1 +#-Q- aix6 LIB_MPI_BIS = MPI1 +#-Q- aix6 PRISM_ARCH = AIX6 +#-Q- aix6 PRISM_NAME = vargas +#-Q- aix6 FCM_ARCH = PW6_VARGAS +#-Q- aix6 M_K = gmake +#-Q- aix6 P_C = /usr/lib/cpp +#-Q- aix6 P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix6 F_C = mpxlf90_r -c +#-Q- aix6 #-D- MD F_D = +#-Q- aix6 #-D- MN F_D = +#-Q- aix6 #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix6 #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix6 #-P- I8R8 F_P = +#-Q- aix6 #w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix6 w_w = $(F_P) -O3 -qsuffix=cpp=f90 -qfree=f90 +#-Q- aix6 F_O = $(w_w) -WF,-DCPP_PARA -I$(MODDIR) -qmoddir=$(MODDIR) -qextname=flush +#-Q- aix6 F_L = mpxlf90_r +#-Q- aix6 M_M = 0 +#-Q- aix6 L_X = 0 +#-Q- aix6 L_O = $(F_P) -q64 -O3 +#-Q- aix6 A_C = ar -rs -X64 +#-Q- aix6 A_G = ar -x -X64 +#-Q- aix6 C_C = cc -c +#-Q- aix6 C_O = -O +#-Q- aix6 C_L = cc +#-Q- aix6 #- +#-Q- aix6 NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- aix6 NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- aix6 #- +#-Q- ax_mono #- Global definitions for IBM AIX (monoprocessing) +#-Q- ax_mono M_K = gmake +#-Q- ax_mono P_C = /usr/lib/cpp +#-Q- ax_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax_mono F_C = xlf90_r -c +#-Q- ax_mono #-D- MD F_D = +#-Q- ax_mono #-D- MN F_D = +#-Q- ax_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax_mono #-P- I8R8 F_P = +#-Q- ax_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax_mono F_L = xlf90_r +#-Q- ax_mono M_M = 0 +#-Q- ax_mono L_X = 0 +#-Q- ax_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax_mono A_C = ar -rs -X64 +#-Q- ax_mono A_G = ar -x -X64 +#-Q- ax_mono C_C = cc -c +#-Q- ax_mono C_O = -O +#-Q- ax_mono C_L = cc +#-Q- ax_mono #- +#-Q- ax_mono NCDF_INC = /usr/local/pub/include +#-Q- ax_mono NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- ax_mono #- +#-Q- ax6_mono #- Global definitions for IBM AIX Power6 (monoprocessing) +#-Q- ax6_mono M_K = gmake +#-Q- ax6_mono P_C = /usr/lib/cpp +#-Q- ax6_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax6_mono F_C = xlf90_r -c +#-Q- ax6_mono #-D- MD F_D = +#-Q- ax6_mono #-D- MN F_D = +#-Q- ax6_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax6_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax6_mono #-P- I8R8 F_P = +#-Q- ax6_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax6_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax6_mono F_L = xlf90_r +#-Q- ax6_mono M_M = 0 +#-Q- ax6_mono L_X = 0 +#-Q- ax6_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax6_mono A_C = ar -rs -X64 +#-Q- ax6_mono A_G = ar -x -X64 +#-Q- ax6_mono C_C = cc -c +#-Q- ax6_mono C_O = -O +#-Q- ax6_mono C_L = cc +#-Q- ax6_mono #- +#-Q- ax6_mono NCDF_INC = /usr/local/pub/NetCDF/3.6.2/include +#-Q- ax6_mono NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.2/lib -lnetcdf +#-Q- ax6_mono #- +#-Q- babel #- Global definitions for IBM Blue Gene +#-Q- babel M_K = gmake +#-Q- babel P_C = /usr/bin/cpp +#-Q- babel P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- babel F_C = mpixlf90_r -c +#-Q- babel #-D- MD F_D = +#-Q- babel #-D- MN F_D = +#-Q- babel #-P- I4R4 F_P = -qrealsize=4 +#-Q- babel #-P- I4R8 F_P = -qrealsize=8 +#-Q- babel #-P- I8R8 F_P = +#-Q- babel w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- babel F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- babel F_L = mpixlf90_r +#-Q- babel M_M = 0 +#-Q- babel L_X = 0 +#-Q- babel L_O = $(F_P) -O3 +#-Q- babel A_C = ar -rs +#-Q- babel A_G = ar -x +#-Q- babel C_C = cc -c +#-Q- babel C_O = -O +#-Q- babel C_L = cc +#-Q- babel #- +#-Q- babel NCDF_INC = /bglocal/prod/tools_ibm/netcdf-3.6.1/include +#-Q- babel NCDF_LIB = -L/bglocal/prod/tools_ibm/netcdf-3.6.1/lib -lnetcdf +#-Q- babel #- +#-Q- bgfe #- Global definitions for IBM Blue Gene Front End +#-Q- bgfe M_K = gmake +#-Q- bgfe P_C = /usr/bin/cpp +#-Q- bgfe P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- bgfe F_C = xlf90_r -c +#-Q- bgfe #-D- MD F_D = +#-Q- bgfe #-D- MN F_D = +#-Q- bgfe #-P- I4R4 F_P = -qrealsize=4 +#-Q- bgfe #-P- I4R8 F_P = -qrealsize=8 +#-Q- bgfe #-P- I8R8 F_P = +#-Q- bgfe w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- bgfe F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- bgfe F_L = xlf90_r +#-Q- bgfe M_M = 0 +#-Q- bgfe L_X = 0 +#-Q- bgfe L_O = $(F_P) -O3 +#-Q- bgfe A_C = ar -rs +#-Q- bgfe A_G = ar -x +#-Q- bgfe C_C = cc -c +#-Q- bgfe C_O = -O +#-Q- bgfe C_L = cc +#-Q- bgfe #- +#-Q- bgfe NCDF_INC = /local/pub/netcdf/netcdf-3.6.2/include +#-Q- bgfe NCDF_LIB = -L/local/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- bgfe #- +#-Q- cesium #- Global definitions for Cesium at CCRT +#-Q- cesium M_K = gmake +#-Q- cesium P_C = cpp +#-Q- cesium P_O = -P -C $(P_P) +#-Q- cesium F_C = ifort -c +#-Q- cesium #-D- MD F_D = -g +#-Q- cesium #-D- MN F_D = +#-Q- cesium #-P- I4R4 F_P = -i4 +#-Q- cesium #-P- I4R8 F_P = -i4 -r8 +#-Q- cesium #-P- I8R8 F_P = -i8 -r8 +#-Q- cesium F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- cesium F_L = ifort +#-Q- cesium M_M = 0 +#-Q- cesium L_X = 0 +#-Q- cesium L_O = -Vaxlib +#-Q- cesium A_C = ar -r +#-Q- cesium A_G = ar -x +#-Q- cesium C_C = cc -c +#-Q- cesium C_O = +#-Q- cesium C_L = cc +#-Q- cesium #- +#-Q- cesium NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- cesium NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- cesium #- +#-Q- cray #- Obsolete definitions for CRAY +#-Q- cray M_K = make +#-Q- cray P_C = cpp +#-Q- cray P_O = -P -C $(P_P) +#-Q- cray F_C = f90 -c +#-Q- cray #-D- MD F_D = +#-Q- cray #-D- MN F_D = +#-Q- cray #-P- I4R4 F_P = +#-Q- cray #-P- I4R8 F_P = +#-Q- cray #-P- I8R8 F_P = +#-Q- cray F_O = $(F_D) $(F_P) -v -p $(MODEL_LIB) +#-Q- cray F_L = f90 +#-Q- cray M_M = 0 +#-Q- cray L_X = 0 +#-Q- cray L_O = +#-Q- cray A_C = bld -r +#-Q- cray A_G = bld -x +#-Q- cray C_C = cc -c +#-Q- cray C_O = -Wall +#-Q- cray C_L = cc +#-Q- cray #- +#-Q- cray NCDF_INC = /usr/local/pub/include +#-Q- cray NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- cray #- +#-Q- eshpux #- Global definitions for hpux used as Earth Simulator front-end (moon) +#-Q- eshpux LIB_MPI = MPI1 +#-Q- eshpux LIB_MPI_BIS = MPI1 +#-Q- eshpux PRISM_ARCH = ES +#-Q- eshpux PRISM_NAME = moon +#-Q- eshpux FCM_ARCH = ES_MOON +#-Q- eshpux M_K = gmake +#-Q- eshpux P_C = escpp +#-Q- eshpux # FTRACE used for profiling +#-Q- eshpux FTRACE = -ftrace +#-Q- eshpux # FTRACE = +#-Q- eshpux P_O = -P -C $(P_P) +#-Q- eshpux F_C = esmpif90 -c +#-Q- eshpux #-D- MD F_D = +#-Q- eshpux #-D- MN F_D = +#-Q- eshpux #-P- I4R4 F_P = -dW +#-Q- eshpux #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- eshpux #-P- I8R8 F_P = -ew +#-Q- eshpux F_O = $(F_D) $(F_P) $(FTRACE) -Ep -DCPP_PARA -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- eshpux F_L = esmpif90 +#-Q- eshpux M_M = 1 +#-Q- eshpux L_X = 1 +#-Q- eshpux L_O = $(F_P) $(FTRACE) +#-Q- eshpux A_C = ar -rv +#-Q- eshpux A_G = ar -x +#-Q- eshpux A_X = esar -rv +#-Q- eshpux C_C = esmpicc -c +#-Q- eshpux C_O = +#-Q- eshpux C_L = esmpicc +#-Q- eshpux FC_C = cc -c +#-Q- eshpux FC_O = +#-Q- eshpux FC_L = cc +#-Q- eshpux #- +#-Q- eshpux NCDF_INC = /S/home010/c0010/ES/include +#-Q- eshpux NCDF_LIB = -L/S/home010/c0010/ES/lib -lnetcdf +#-Q- eshpux #- +#-Q- fjvpp #- Obsolete definitions for FUJITSU VPP +#-Q- fjvpp M_K = gmake +#-Q- fjvpp P_C = cpp +#-Q- fjvpp P_O = -P -C $(P_P) +#-Q- fjvpp F_C = frt -c +#-Q- fjvpp #-D- MD F_D = +#-Q- fjvpp #-D- MN F_D = +#-Q- fjvpp #-P- I4R4 F_P = -AD +#-Q- fjvpp #-P- I4R8 F_P = -Ad +#-Q- fjvpp #-P- I8R8 F_P = -Ad +#-Q- fjvpp w_w = -X9 -Oe -Sw $(F_D) $(F_P) -Am -M$(MODDIR) +#-Q- fjvpp F_O = $(w_w) -Of -Wv,-Of,-ilfunc,-preload +#-Q- fjvpp F_L = frt +#-Q- fjvpp M_M = 0 +#-Q- fjvpp L_X = 0 +#-Q- fjvpp L_O = -Wg,-c -Wl,-J,-t,-dy +#-Q- fjvpp A_C = ar -r +#-Q- fjvpp A_G = ar -x +#-Q- fjvpp C_C = cc -c +#-Q- fjvpp C_O = +#-Q- fjvpp C_L = cc +#-Q- fjvpp #- +#-Q- fjvpp NCDF_INC = /usr/local/include/netcdf +#-Q- fjvpp NCDF_LIB = /usr/local/lib/netcdf/libnetcdf.a +#-Q- fjvpp #- +#-Q- g95 #- Global definitions for gnu g95 compiler +#-Q- g95 M_K = gmake +#-Q- g95 P_C = cpp +#-Q- g95 P_O = -P -C -traditional $(P_P) +#-Q- g95 F_C = g95 -c +#-Q- g95 #-D- MD F_D = +#-Q- g95 #-D- MN F_D = +#-Q- g95 #-P- I4R4 F_P = -i4 +#-Q- g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- g95 F_O = $(w_w) -fmod=$(MODDIR) -fno-second-underscore +#-Q- g95 F_L = g95 +#-Q- g95 M_M = 0 +#-Q- g95 L_X = 0 +#-Q- g95 L_O = +#-Q- g95 A_C = ar -r +#-Q- g95 A_G = ar -x +#-Q- g95 C_C = cc -c +#-Q- g95 C_O = +#-Q- g95 C_L = cc +#-Q- g95 #- +#-Q- g95 NCDF_INC = /usr/local/include +#-Q- g95 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- g95 #- +#-Q- gfortran #- Global definitions for gfortran, generic system +#-Q- gfortran M_K = make +#-Q- gfortran P_C = cpp +#-Q- gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- gfortran F_C = gfortran -c +#-Q- gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- gfortran #-D- MN F_D = +#-Q- gfortran #-P- I4R4 F_P = +#-Q- gfortran #-P- I4R8 F_P = -fdefault-real-8 +#-Q- gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- gfortran F_O = $(w_w) -J$(MODDIR) +#-Q- gfortran F_L = gfortran +#-Q- gfortran M_M = 0 +#-Q- gfortran L_X = 0 +#-Q- gfortran L_O = +#-Q- gfortran A_C = ar -rs +#-Q- gfortran A_G = ar -x +#-Q- gfortran C_C = cc -c +#-Q- gfortran C_O = +#-Q- gfortran C_L = cc +#-Q- gfortran #- +#-Q- gfortran NCDF_INC = /usr/local/include +#-Q- gfortran NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- gfortran #- +#-Q- idris_tx7 #- Global definitions for NEC TX7 front-end (Brodie) at Idris, gfortran +#-Q- idris_tx7 M_K = gmake +#-Q- idris_tx7 P_C = cpp +#-Q- idris_tx7 P_O = -P -C $(P_P) +#-Q- idris_tx7 F_C = gfortran -c +#-Q- idris_tx7 #-D- MD F_D = -g +#-Q- idris_tx7 #-D- MN F_D = +#-Q- idris_tx7 #-P- I4R4 F_P = +#-Q- idris_tx7 #-P- I4R8 F_P = -fdefault-real-8 +#-Q- idris_tx7 #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- idris_tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -J$(MODDIR) +#-Q- idris_tx7 F_L = gfortran +#-Q- idris_tx7 M_M = 0 +#-Q- idris_tx7 L_X = 0 +#-Q- idris_tx7 L_O = +#-Q- idris_tx7 A_C = ar -r +#-Q- idris_tx7 A_G = ar -x +#-Q- idris_tx7 C_C = gcc -c +#-Q- idris_tx7 C_O = +#-Q- idris_tx7 C_L = gcc +#-Q- idris_tx7 #- +#-Q- idris_tx7 NCDF_INC = /TXlocal/pub/netcdf/netcdf-3.6.2/include +#-Q- idris_tx7 NCDF_LIB = -L/TXlocal/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- idris_tx7 #- +#-Q- linux #- Global definitions for Linux, pgf90 +#-Q- linux M_K = make +#-Q- linux P_C = /lib/cpp +#-Q- linux P_O = -P -C -traditional $(P_P) +#-Q- linux F_C = pgf90 -c +#-Q- linux #-D- MD F_D = +#-Q- linux #-D- MN F_D = +#-Q- linux #-P- I4R4 F_P = -i4 +#-Q- linux #-P- I4R8 F_P = -i4 -r8 +#-Q- linux #-P- I8R8 F_P = -i8 -r8 +#-Q- linux F_O = $(F_D) $(F_P) -Mfree -module $(MODDIR) +#-Q- linux F_L = pgf90 +#-Q- linux M_M = 0 +#-Q- linux L_X = 0 +#-Q- linux L_O = -Wl,-Bstatic -Mbounds +#-Q- linux A_C = ar -r +#-Q- linux A_G = ar -x +#-Q- linux C_C = gcc -c +#-Q- linux C_O = -Wall +#-Q- linux C_L = gcc +#-Q- linux #- +#-Q- linux NCDF_INC = /distrib/local/netcdf/pgf/include/ +#-Q- linux NCDF_LIB = -L/distrib/local/netcdf/pgf/lib/ -lnetcdf +#-Q- linux #- +#-Q- lxiv7 #- Global definitions for Linux, ifc +#-Q- lxiv7 M_K = gmake +#-Q- lxiv7 P_C = cpp +#-Q- lxiv7 P_O = -P -C $(P_P) +#-Q- lxiv7 F_C = ifc -c +#-Q- lxiv7 #-D- MD F_D = -g +#-Q- lxiv7 #-D- MN F_D = +#-Q- lxiv7 #-P- I4R4 F_P = -i4 +#-Q- lxiv7 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv7 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv7 F_L = ifc +#-Q- lxiv7 M_M = 0 +#-Q- lxiv7 L_X = 0 +#-Q- lxiv7 L_O = -Vaxlib +#-Q- lxiv7 A_C = ar -r +#-Q- lxiv7 A_G = ar -x +#-Q- lxiv7 C_C = cc -c +#-Q- lxiv7 C_O = +#-Q- lxiv7 C_L = cc +#-Q- lxiv7 #- +#-Q- lxiv7 NCDF_INC = /usr/local/include +#-Q- lxiv7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- lxiv7 #- +#-Q- lxiv8 #- Global definitions for Intel compiler (ifort) at LSCE +#-Q- lxiv8 M_K = gmake +#-Q- lxiv8 P_C = cpp +#-Q- lxiv8 P_O = -P -C $(P_P) +#-Q- lxiv8 F_C = ifort -c -cpp +#-Q- lxiv8 #-D- MD F_D = -g +#-Q- lxiv8 #-D- MN F_D = +#-Q- lxiv8 #-P- I4R4 F_P = -i4 +#-Q- lxiv8 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv8 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv8 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv8 F_L = ifort +#-Q- lxiv8 M_M = 0 +#-Q- lxiv8 L_X = 0 +#-Q- lxiv8 L_O = -Vaxlib +#-Q- lxiv8 A_C = ar -r +#-Q- lxiv8 A_G = ar -x +#-Q- lxiv8 C_C = cc -c +#-Q- lxiv8 C_O = +#-Q- lxiv8 C_L = cc +#-Q- lxiv8 #- +#-Q- lxiv8 NCDF_INC = /usr/local/include +#-Q- lxiv8 NCDF_LIB = -L/usr/local/lib -lnetcdff -lnetcdf +#-Q- lxiv8 #- +#-Q- osf1 #- Obsolete definitions for DEC OSF1 +#-Q- osf1 M_K = gmake +#-Q- osf1 P_C = cpp +#-Q- osf1 P_O = -P -C $(P_P) +#-Q- osf1 F_C = f90 -c +#-Q- osf1 #-D- MD F_D = -g +#-Q- osf1 #-D- MN F_D = +#-Q- osf1 #-P- I4R4 F_P = +#-Q- osf1 #-P- I4R8 F_P = -r8 +#-Q- osf1 #-P- I8R8 F_P = -i8 -r8 +#-Q- osf1 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- osf1 F_L = f90 +#-Q- osf1 M_M = 0 +#-Q- osf1 L_X = 0 +#-Q- osf1 L_O = +#-Q- osf1 A_C = ar -r +#-Q- osf1 A_G = ar -x +#-Q- osf1 C_C = cc -c +#-Q- osf1 C_O = +#-Q- osf1 C_L = cc +#-Q- osf1 #- +#-Q- osf1 NCDF_INC = /usr/local/include +#-Q- osf1 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- osf1 #- +#-Q- osxxlf #- Global definitions for Mac OS X and IBM xlf compiler +#-Q- osxxlf M_K = make +#-Q- osxxlf P_C = /usr/bin/cpp +#-Q- osxxlf P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- osxxlf F_C = xlf90 -c +#-Q- osxxlf #-D- MD F_D = -g -C +#-Q- osxxlf #-D- MN F_D = +#-Q- osxxlf #-P- I4R4 F_P = -qintsize=4 -qrealsize=4 +#-Q- osxxlf #-P- I4R8 F_P = -qintsize=4 -qrealsize=8 +#-Q- osxxlf #-P- I8R8 F_P = -qintsize=8 -qrealsize=8 +#-Q- osxxlf w_w = $(F_P) -O2 $(F_D) -qsuffix=f=f90 +#-Q- osxxlf F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- osxxlf F_L = xlf90 +#-Q- osxxlf M_M = 0 +#-Q- osxxlf L_X = 0 +#-Q- osxxlf L_O = $(F_P) -O2 +#-Q- osxxlf A_C = ar -rs +#-Q- osxxlf A_G = ar -x +#-Q- osxxlf C_C = cc -c +#-Q- osxxlf C_O = +#-Q- osxxlf C_L = cc +#-Q- osxxlf #- +#-Q- osxxlf NCDF_INC = /usr/local/install/netcdf-3.6.0-p1/include +#-Q- osxxlf NCDF_LIB = -L/usr/local/install/netcdf-3.6.0-p1/lib -lnetcdf +#-Q- osxxlf #- +#-Q- platine #- Global definitions for Bull (Itanium) at CCRT +#-Q- platine LIB_MPI = MPI1 +#-Q- platine LIB_MPI_BIS = MPI1 +#-Q- platine PRISM_ARCH = IA64 +#-Q- platine PRISM_NAME = platine +#-Q- platine FCM_ARCH = IA64_PLATINE +#-Q- platine M_K = gmake +#-Q- platine P_C = cpp +#-Q- platine P_O = -P -C $(P_P) +#-Q- platine F_C = mpif90 -c -cpp +#-Q- platine #-D- MD F_D = -g +#-Q- platine #-D- MN F_D = +#-Q- platine #-P- I4R4 F_P = -i4 +#-Q- platine #-P- I4R8 F_P = -i4 -r8 +#-Q- platine #-P- I8R8 F_P = -i8 -r8 +#-Q- platine F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- platine F_L = mpif90 +#-Q- platine M_M = 0 +#-Q- platine L_X = 0 +#-Q- platine L_O = +#-Q- platine A_C = ar -r +#-Q- platine A_G = ar -x +#-Q- platine C_C = cc -c +#-Q- platine C_O = +#-Q- platine C_L = cc +#-Q- platine #- +#-Q- platine NCDF_INC = /usr/include +#-Q- platine NCDF_LIB = -L/usr/lib -lnetcdff -lnetcdf +#-Q- platine #- +#-Q- sgi6 #- Global definitions for IRIX64 (sgi6) +#-Q- sgi6 M_K = gmake +#-Q- sgi6 P_C = cpp +#-Q- sgi6 P_O = -P -C $(P_P) +#-Q- sgi6 F_C = f90 -c +#-Q- sgi6 #-D- MD F_D = +#-Q- sgi6 #-D- MN F_D = +#-Q- sgi6 #-P- I4R4 F_P = -i4 -r4 +#-Q- sgi6 #-P- I4R8 F_P = -i4 -r8 +#-Q- sgi6 #-P- I8R8 F_P = -i8 -r8 +#-Q- sgi6 F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sgi6 F_L = f90 +#-Q- sgi6 M_M = 0 +#-Q- sgi6 L_X = 0 +#-Q- sgi6 L_O = +#-Q- sgi6 A_C = ar -r +#-Q- sgi6 A_G = ar -x +#-Q- sgi6 C_C = cc -c +#-Q- sgi6 C_O = +#-Q- sgi6 C_L = cc +#-Q- sgi6 #- +#-Q- sgi6 NCDF_INC = /usr/local/pub/include +#-Q- sgi6 NCDF_LIB = -L/usr/local/pub/lib64 -lnetcdf +#-Q- sgi6 #- +#-Q- solaris #- Global definitions for SOLARIS +#-Q- solaris M_K = make +#-Q- solaris P_C = cpp +#-Q- solaris P_O = -P -C $(P_P) +#-Q- solaris F_C = f90 -c +#-Q- solaris #-D- MD F_D = +#-Q- solaris #-D- MN F_D = +#-Q- solaris #-P- I4R4 F_P = +#-Q- solaris #-P- I4R8 F_P = -r8const +#-Q- solaris #-P- I8R8 F_P = -i8const -r8const +#-Q- solaris F_O = $(F_D) $(F_P) -M$(MODDIR) -fast +#-Q- solaris F_L = f90 +#-Q- solaris M_M = 1 +#-Q- solaris L_X = 0 +#-Q- solaris L_O = +#-Q- solaris A_C = ar -r +#-Q- solaris A_G = ar -x +#-Q- solaris C_C = cc -c +#-Q- solaris C_O = +#-Q- solaris C_L = cc +#-Q- solaris #- +#-Q- solaris NCDF_INC = /distrib/local/include +#-Q- solaris NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- solaris #- +#-Q- sx6nec #- Global definitions for NEC SX8 at CCRT (alias) +#-Q- sx6nec LIB_MPI = MPI1 +#-Q- sx6nec LIB_MPI_BIS = MPI1 +#-Q- sx6nec PRISM_ARCH = SX +#-Q- sx6nec PRISM_NAME = mercure +#-Q- sx6nec FCM_ARCH = SX8_MERCURE +#-Q- sx6nec M_K = sxgmake +#-Q- sx6nec P_C = cpp +#-Q- sx6nec P_O = -P -C $(P_P) +#-Q- sx6nec F_C = sxmpif90 -c +#-Q- sx6nec #-D- MD F_D = +#-Q- sx6nec #-D- MN F_D = +#-Q- sx6nec #-P- I4R4 F_P = -dW +#-Q- sx6nec #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx6nec #-P- I8R8 F_P = -ew +#-Q- sx6nec F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx6nec F_L = sxmpif90 +#-Q- sx6nec M_M = 1 +#-Q- sx6nec L_X = 0 +#-Q- sx6nec L_O = -size_t64 $(F_P) +#-Q- sx6nec A_C = sxar -rv +#-Q- sx6nec A_G = sxar -x +#-Q- sx6nec A_X = sxar -rv +#-Q- sx6nec C_C = sxcc -size_t64 -c +#-Q- sx6nec C_O = +#-Q- sx6nec C_L = sxcc -size_t64 +#-Q- sx6nec FC_C = gcc -c +#-Q- sx6nec FC_O = +#-Q- sx6nec FC_L = gcc +#-Q- sx6nec #- +#-Q- sx6nec NCDF_INC = /usr/local/SX8/soft/netcdf/include +#-Q- sx6nec NCDF_LIB = -L/usr/local/SX8/soft/netcdf/lib -lnetcdf +#-Q- sx6nec #- +#-Q- sx8brodie #- Global definitions for NEC SX8 at Idris +#-Q- sx8brodie LIB_MPI = MPI1 +#-Q- sx8brodie LIB_MPI_BIS = MPI1 +#-Q- sx8brodie PRISM_ARCH = SX +#-Q- sx8brodie PRISM_NAME = brodie +#-Q- sx8brodie FCM_ARCH = SX8_BRODIE +#-Q- sx8brodie M_K = sxgmake +#-Q- sx8brodie P_C = sxcpp +#-Q- sx8brodie P_O = -P -C $(P_P) +#-Q- sx8brodie F_C = sxmpif90 -c +#-Q- sx8brodie #-D- MD F_D = +#-Q- sx8brodie #-D- MN F_D = +#-Q- sx8brodie #-P- I4R4 F_P = -dW +#-Q- sx8brodie #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8brodie #-P- I8R8 F_P = -ew +#-Q- sx8brodie F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -I $(MODDIR) +#-Q- sx8brodie F_L = sxmpif90 +#-Q- sx8brodie M_M = 1 +#-Q- sx8brodie L_X = 0 +#-Q- sx8brodie L_O = $(F_P) +#-Q- sx8brodie A_C = sxar -rv +#-Q- sx8brodie A_G = sxar -x +#-Q- sx8brodie A_X = sxar -rv +#-Q- sx8brodie C_C = sxcc -c +#-Q- sx8brodie C_O = +#-Q- sx8brodie C_L = sxcc +#-Q- sx8brodie FC_C = gcc -c +#-Q- sx8brodie FC_O = +#-Q- sx8brodie FC_L = gcc +#-Q- sx8brodie #- +#-Q- sx8brodie NCDF_INC = /SXlocal/pub/netCDF/netCDF-3.6.1/include +#-Q- sx8brodie NCDF_LIB = -L/SXlocal/pub/netCDF/netCDF-3.6.1/lib -lnetcdf +#-Q- sx8brodie #- +#-Q- sx8mercure #- Global definitions for NEC SX8 at CCRT +#-Q- sx8mercure LIB_MPI = MPI1 +#-Q- sx8mercure LIB_MPI_BIS = MPI1 +#-Q- sx8mercure PRISM_ARCH = SX +#-Q- sx8mercure PRISM_NAME = mercure +#-Q- sx8mercure FCM_ARCH = SX8_MERCURE +#-Q- sx8mercure M_K = sxgmake +#-Q- sx8mercure P_C = cpp +#-Q- sx8mercure P_O = -P -C $(P_P) +#-Q- sx8mercure F_C = sxmpif90 -c +#-Q- sx8mercure #-D- MD F_D = +#-Q- sx8mercure #-D- MN F_D = +#-Q- sx8mercure #-P- I4R4 F_P = -dW +#-Q- sx8mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8mercure #-P- I8R8 F_P = -ew +#-Q- sx8mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx8mercure F_L = sxmpif90 +#-Q- sx8mercure M_M = 1 +#-Q- sx8mercure L_X = 0 +#-Q- sx8mercure L_O = -size_t64 $(F_P) +#-Q- sx8mercure A_C = sxar -rv +#-Q- sx8mercure A_G = sxar -x +#-Q- sx8mercure A_X = sxar -rv +#-Q- sx8mercure C_C = sxcc -size_t64 -c +#-Q- sx8mercure C_O = +#-Q- sx8mercure C_L = sxcc -size_t64 +#-Q- sx8mercure FC_C = gcc -c +#-Q- sx8mercure FC_O = +#-Q- sx8mercure FC_L = gcc +#-Q- sx8mercure #- +#-Q- sx8mercure NETCDF_SX_INCLUDEDIR ?= /usr/local/SX8/soft/netcdf/include +#-Q- sx8mercure NETCDF_SX_LIBDIR ?= /usr/local/SX8/soft/netcdf/lib +#-Q- sx8mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx8mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx8mercure #- +#-Q- sx9mercure #- Global definitions for NEC SX9 at CCRT +#-Q- sx9mercure LIB_MPI = MPI1 +#-Q- sx9mercure LIB_MPI_BIS = MPI1 +#-Q- sx9mercure PRISM_ARCH = SX +#-Q- sx9mercure PRISM_NAME = mercure +#-Q- sx9mercure FCM_ARCH = SX9_MERCURE +#-Q- sx9mercure M_K = sxgmake +#-Q- sx9mercure P_C = cpp +#-Q- sx9mercure P_O = -P -C $(P_P) +#-Q- sx9mercure F_C = sxmpif90 -c +#-Q- sx9mercure #-D- MD F_D = +#-Q- sx9mercure #-D- MN F_D = +#-Q- sx9mercure #-P- I4R4 F_P = -dW +#-Q- sx9mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx9mercure #-P- I8R8 F_P = -ew +#-Q- sx9mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx9mercure F_L = sxmpif90 +#-Q- sx9mercure M_M = 1 +#-Q- sx9mercure L_X = 0 +#-Q- sx9mercure L_O = -size_t64 $(F_P) +#-Q- sx9mercure A_C = sxar -rv +#-Q- sx9mercure A_G = sxar -x +#-Q- sx9mercure A_X = sxar -rv +#-Q- sx9mercure C_C = sxcc -size_t64 -c +#-Q- sx9mercure C_O = +#-Q- sx9mercure C_L = sxcc -size_t64 +#-Q- sx9mercure FC_C = gcc -c +#-Q- sx9mercure FC_O = +#-Q- sx9mercure FC_L = gcc +#-Q- sx9mercure #- +#-Q- sx9mercure NETCDF_SX_INCLUDEDIR ?= /ccc/applications/sx9/netcdf-3.6.1/include +#-Q- sx9mercure NETCDF_SX_LIBDIR ?= /ccc/applications/sx9/netcdf-3.6.1/lib +#-Q- sx9mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx9mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx9mercure #- +#-Q- sxdkrz #- Global definitions for NEC SX8 at DKRZ +#-Q- sxdkrz LIB_MPI = MPI1 +#-Q- sxdkrz LIB_MPI_BIS = MPI1 +#-Q- sxdkrz PRISM_ARCH = SX +#-Q- sxdkrz PRISM_NAME = ds +#-Q- sxdkrz M_K = sxgmake +#-Q- sxdkrz P_C = cpp +#-Q- sxdkrz P_O = -P -C $(P_P) +#-Q- sxdkrz F_C = sxmpif90 -c +#-Q- sxdkrz #-D- MD F_D = +#-Q- sxdkrz #-D- MN F_D = +#-Q- sxdkrz #-P- I4R4 F_P = -dw +#-Q- sxdkrz #-P- I4R8 F_P = -dw -Wf\"-A idbl4\" +#-Q- sxdkrz #-P- I8R8 F_P = -ew +#-Q- sxdkrz F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sxdkrz F_L = sxmpif90 +#-Q- sxdkrz M_M = 1 +#-Q- sxdkrz L_X = 0 +#-Q- sxdkrz L_O = $(F_P) +#-Q- sxdkrz A_C = ar -rv +#-Q- sxdkrz A_G = ar -x +#-Q- sxdkrz A_X = sxar -rv +#-Q- sxdkrz C_C = sxcc -c +#-Q- sxdkrz C_O = +#-Q- sxdkrz C_L = sxcc +#-Q- sxdkrz FC_C = cc -c +#-Q- sxdkrz FC_O = +#-Q- sxdkrz FC_L = cc +#-Q- sxdkrz #- +#-Q- sxdkrz NCDF_INC = /pool/SX-6/netcdf/netcdf-3.5.0/include +#-Q- sxdkrz NCDF_LIB = -L/pool/SX-6/netcdf/netcdf-3.5.0/lib -lnetcdf_A_idbl4 +#-Q- sxdkrz #- +#-Q- t3e #- Obsolete definitions for T3E +#-Q- t3e M_K = gmake +#-Q- t3e P_C = cpp +#-Q- t3e P_O = -P -C $(P_P) +#-Q- t3e F_C = f90 -c +#-Q- t3e #-D- MD F_D = +#-Q- t3e #-D- MN F_D = +#-Q- t3e #-P- I4R4 F_P = +#-Q- t3e #-P- I4R8 F_P = +#-Q- t3e #-P- I8R8 F_P = +#-Q- t3e w_w = $(F_D) $(F_P) -rm -O2 -Ounroll2 -Osplit2 -dp +#-Q- t3e F_O = $(w_w) -p $(MODEL_LIB) +#-Q- t3e F_L = f90 +#-Q- t3e M_M = 0 +#-Q- t3e L_X = 0 +#-Q- t3e L_O = -X 4 +#-Q- t3e A_C = ar -r +#-Q- t3e A_G = ar -x +#-Q- t3e C_C = cc -c +#-Q- t3e C_O = -Wall +#-Q- t3e C_L = cc +#-Q- t3e #- +#-Q- t3e NCDF_INC = /usr/local/pub/include +#-Q- t3e NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- t3e #- +#-Q- titane #- Global definitions for Bull (Xeon) at CCRT +#-Q- titane LIB_MPI = MPI1 +#-Q- titane LIB_MPI_BIS = MPI1 +#-Q- titane PRISM_ARCH = X64 +#-Q- titane PRISM_NAME = titane +#-Q- titane FCM_ARCH = X64_TITANE +#-Q- titane M_K = gmake +#-Q- titane P_C = cpp +#-Q- titane P_O = -P -C $(P_P) +#-Q- titane F_C = mpif90 -c -cpp +#-Q- titane #-D- MD F_D = -g +#-Q- titane #-D- MN F_D = +#-Q- titane #-P- I4R4 F_P = -i4 +#-Q- titane #-P- I4R8 F_P = -i4 -r8 +#-Q- titane #-P- I8R8 F_P = -i8 -r8 +#-Q- titane F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- titane F_L = mpif90 +#-Q- titane M_M = 0 +#-Q- titane L_X = 0 +#-Q- titane L_O = +#-Q- titane A_C = ar -r +#-Q- titane A_G = ar -x +#-Q- titane C_C = cc -c +#-Q- titane C_O = +#-Q- titane C_L = cc +#-Q- titane #- +#-Q- titane NCDF_INC = $(NETCDF_INCLUDEDIR) +#-Q- titane NCDF_LIB = -L$(NETCDF_LIBDIR) -lnetcdff -lnetcdf +#-Q- titane #- +#-Q- tx7 #- Global definitions for NEC TX7 front-end (Mercure) at CCRT, ifort +#-Q- tx7 M_K = gmake +#-Q- tx7 P_C = cpp +#-Q- tx7 P_O = -P -C $(P_P) +#-Q- tx7 F_C = ifort -c +#-Q- tx7 #-D- MD F_D = -g +#-Q- tx7 #-D- MN F_D = +#-Q- tx7 #-P- I4R4 F_P = -i4 +#-Q- tx7 #-P- I4R8 F_P = -i4 -r8 +#-Q- tx7 #-P- I8R8 F_P = -i8 -r8 +#-Q- tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- tx7 F_L = ifort +#-Q- tx7 M_M = 0 +#-Q- tx7 L_X = 0 +#-Q- tx7 L_O = -Vaxlib +#-Q- tx7 A_C = ar -r +#-Q- tx7 A_G = ar -x +#-Q- tx7 C_C = cc -c +#-Q- tx7 C_O = +#-Q- tx7 C_L = cc +#-Q- tx7 #- +#-Q- tx7 NCDF_INC = /usr/local/include +#-Q- tx7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- tx7 #- +#-Q- ulam #- Global definitions for ulam at IDRIS +#-Q- ulam M_K = gmake +#-Q- ulam P_C = cpp +#-Q- ulam P_O = -P -C $(P_P) +#-Q- ulam F_C = ifort -c -cpp +#-Q- ulam #-D- MD F_D = -g +#-Q- ulam #-D- MN F_D = +#-Q- ulam #-P- I4R4 F_P = -i4 +#-Q- ulam #-P- I4R8 F_P = -i4 -r8 +#-Q- ulam #-P- I8R8 F_P = -i8 -r8 +#-Q- ulam F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- ulam F_L = ifort +#-Q- ulam M_M = 0 +#-Q- ulam L_X = 0 +#-Q- ulam L_O = -Vaxlib +#-Q- ulam A_C = ar -r +#-Q- ulam A_G = ar -x +#-Q- ulam C_C = cc -c +#-Q- ulam C_O = +#-Q- ulam C_L = cc +#-Q- ulam #- +#-Q- ulam NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- ulam NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- ulam #- +#-Q- unix #- Skeleton definitions for UNIX +#-Q- unix M_K = make +#-Q- unix P_C = cpp +#-Q- unix P_O = -P -C $(P_P) +#-Q- unix F_C = f90 -c +#-Q- unix #-D- MD F_D = +#-Q- unix #-D- MN F_D = +#-Q- unix #-P- I4R4 F_P = +#-Q- unix #-P- I4R8 F_P = +#-Q- unix #-P- I8R8 F_P = +#-Q- unix F_O = $(F_D) $(F_P) -M$(MODDIR) +#-Q- unix F_L = f90 +#-Q- unix M_M = 0 +#-Q- unix L_X = 0 +#-Q- unix L_O = +#-Q- unix A_C = ar -r +#-Q- unix A_G = ar -x +#-Q- unix C_C = cc -c +#-Q- unix C_O = +#-Q- unix C_L = cc +#-Q- unix #- +#-Q- unix NCDF_INC = /distrib/local/include +#-Q- unix NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- unix #- +#-Q- x86_64 #- Global definitions for new mercure front-end at CCRT (05/2010) +#-Q- x86_64 M_K = gmake +#-Q- x86_64 P_C = cpp +#-Q- x86_64 P_O = -P -C $(P_P) +#-Q- x86_64 F_C = ifort -c +#-Q- x86_64 #-D- MD F_D = -g +#-Q- x86_64 #-D- MN F_D = +#-Q- x86_64 #-P- I4R4 F_P = -i4 +#-Q- x86_64 #-P- I4R8 F_P = -i4 -r8 +#-Q- x86_64 #-P- I8R8 F_P = -i8 -r8 +#-Q- x86_64 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- x86_64 F_L = ifort +#-Q- x86_64 M_M = 0 +#-Q- x86_64 L_X = 0 +#-Q- x86_64 L_O = -Vaxlib +#-Q- x86_64 A_C = ar -r +#-Q- x86_64 A_G = ar -x +#-Q- x86_64 C_C = cc -c +#-Q- x86_64 C_O = +#-Q- x86_64 C_L = cc +#-Q- x86_64 #- +#-Q- x86_64 NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- x86_64 NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- x86_64 #- +RM = rm -f +STRIP = strip +SIZE = size diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/ARCH/arch-pgf90_linux.fcm b/deploy/patches/hector/nemo/v3.3/NEMOGCM/ARCH/arch-pgf90_linux.fcm new file mode 100644 index 0000000000000000000000000000000000000000..2525d942c23f050bf6a91eda1c676cc0292f0c1b --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/ARCH/arch-pgf90_linux.fcm @@ -0,0 +1,30 @@ +# generic pgf90 compiler options for linux +# NCDF_INC netcdf include file +# NCDF_LIB netcdf library +# FC Fortran compiler command +# FCFLAGS Fortran compiler flags +# FFLAGS Fortran 77 compiler flags +# LD linker +# LDFLAGS linker flags, e.g. -L if you have libraries in a +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC additional include files for the compiler, e.g. -I +# USER_LIB additional libraries to pass to the linker, e.g. -l + + +%NCDF_INC -I/opt/cray/netcdf/4.1.1.0/netcdf-pgi/include +%NCDF_LIB -L/opt/cray/netcdf/4.1.1.0/netcdf-pgi/lib -lnetcdf +%FC ftn +%FCFLAGS -O3 -i4 -r8 +%FFLAGS %FCFLAGS +%LD ftn +%LDFLAGS +%FPPFLAGS -P -C -traditional +%AR ar +%ARFLAGS -rs +%MK gmake +%USER_INC %NCDF_INC +%USER_LIB %NCDF_LIB + diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm new file mode 100644 index 0000000000000000000000000000000000000000..4cc80c1a9fb418162eddf2247750cd75f25bf3dc --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm @@ -0,0 +1 @@ +bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r1 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_nproci=6 key_nprocj=6 key_mpp_mpi diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..0c01c2b6a1db1e5de78b751678f0ab953e1d0740 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd @@ -0,0 +1,37 @@ +#!/bin/bash + +# Modify key_nproci and key_nprocj in the following "fcm" +# file according to no. of proc to be used. +# vi ORCA2_LIM/cpp_ORCA2_LIM.fcm + +# Modify compiler options in the appropriat +# file located at the following path. +# vi ../ARCH/arch-*.fcm + +source /opt/modules/default/init/bash +module load xtpe-mc12 +module load netcdf + +compile=pgf90_linux +config=ORCA2_LIM +tools="REBUILD" + +cat<job +#!/bin/bash + +which ftn +which ncdump +cat ../ARCH/*$compile* +cat $config/cpp_$config.fcm +./makenemo clean +./makenemo -m $compile -n $config + +cd ../TOOLS +for l in $tools; do + ./maketools -m $compile -n \$l +done +EOJ + +chmod 775 job +nohup ./job >& compilation_$1.log & + diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/cp.cmd b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..8e3e3bbb2bd2516f00423c21ae37adaf070fd2ce --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/cp.cmd @@ -0,0 +1,13 @@ +#!/bin/bash + +set -xuve + +mkdir -p ../../../bin +ls -lrt ../../../bin + +for nemo_config in `ls -1 | grep ORCA1`; do + mkdir -p ../../../bin/$nemo_config + cp -pf $nemo_config/BLD/bin/*.exe ../../../bin/$nemo_config +done + +ls -lrt ../../../bin diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/run_nemo-v3.3-orca1.cmd b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/run_nemo-v3.3-orca1.cmd new file mode 100755 index 0000000000000000000000000000000000000000..9c461bfc0529dac94f96976aa824276e3961a109 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/run_nemo-v3.3-orca1.cmd @@ -0,0 +1,78 @@ +#!/bin/ksh +############################################################################### +# RUN NEMO +############################################################################### +# +#!/bin/ksh --login +##PBS -N run_nemo-v3.3-orca1 +#PBS -l mppwidth=36 +#PBS -l mppnppn=24 +#PBS -l walltime=00:30:00 +#PBS -A hpx1enes +# + +# General settings + +date +set -xuv + +NEMO=/work/e24/rzg35ene/$USER/tools/nemo/v3.3-orca1 +TESTDATADIR=/work/e24/rzg35ene/$USER/tools/nemo/inidata +FORCING=${TESTDATADIR}/DFS4.1 +WRITINGDIR=/work/e24/rzg35ene/$USER/scratch/test +RUN_dir=$WRITINGDIR/run_nemo-v3.3-orca1_$PBS_JOBID + +NPROCNEMO=36 +MPPNPPN=24 +YEAR=1990 + +mkdir -p ${RUN_dir} || true +cd ${RUN_dir} + +cp ${NEMO}/bin/nemo.exe opa.xx +chmod 770 opa.xx + +cp ${NEMO}/setup/namelist.v3.3.default namelist +cp ${NEMO}/setup/namelist_ice_lim2.v3.3.default namelist_ice + +cp ${TESTDATADIR}/EMPave_old.dat EMPave_old.dat +cp ${TESTDATADIR}/geothermal_heating_orca1.nc geothermal_heating.nc +cp ${TESTDATADIR}/coordinates_ukorca1.nc coordinates.nc +cp ${TESTDATADIR}/bathy_meter_050308_UKMO.nc bathy_meter.nc +cp ${TESTDATADIR}/basinmask_050308_UKMO.nc basinmasks.nc +cp ${TESTDATADIR}/runoff_1m_ORCA1.nc runoff_1m_nomask.nc +cp ${TESTDATADIR}/sst_1m_ORCA1.nc sst_1m.nc +cp ${TESTDATADIR}/sss_1m_ORCA1.nc sss_1m.nc +cp ${TESTDATADIR}/dust_1m_ORCA1.nc dust_1m.nc +cp ${TESTDATADIR}/ahmcoef ahmcoef + +cp ${TESTDATADIR}/bathy_level46_050308_UKMO.nc bathy_level.nc +cp ${TESTDATADIR}/potemp_1m_z46_nomask.nc data_1m_potential_temperature_nomask.nc +cp ${TESTDATADIR}/salin_1m_z46_nomask.nc data_1m_salinity_nomask.nc + +ln -s ${TESTDATADIR}/weights_grid02_bicubic_orca1.nc weights_grid02_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid02_bilinear_orca1.nc weights_grid02_bilinear_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bicubic_orca1.nc weights_grid03_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bilinear_orca1.nc weights_grid03_bilinear_orca1.nc + +ln -s ${FORCING}/${YEAR}_1d_DFS4.1_lwdn.nc qlw_core.nc +ln -s ${FORCING}/${YEAR}_1d_DFS4.1_swdn.nc qsw_core.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_q2m.nc q2_core.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_t2m.nc t2_core.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_u10.nc u10_core.nc +ln -s ${FORCING}/${YEAR}_6hr_DFS4.1_v10.nc v10_core.nc +ln -s ${FORCING}/${YEAR}_1m_DFS4.1_precip.nc precip_core.nc +ln -s ${FORCING}/${YEAR}_1m_DFS4.1_snow.nc snow_core.nc + +for ((l=0; l<$NPROCNEMO; l++)); do + ln -sf coordinates.nc coordinates_$(printf "%03d" $l).nc + ln -sf geothermal_heating.nc geothermal_heating_$(printf "%03d" $l).nc +done + +ls -alF + +ulimit -s unlimited + +aprun -n $NPROCNEMO -N $MPPNPPN opa.xx + +date diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default new file mode 100644 index 0000000000000000000000000000000000000000..b0d10dd5bab9cdae1daa4f578797fcf5b23697e4 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default @@ -0,0 +1,869 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 720 ! last time step (std 5475) + nn_date0 = 19900101 ! initial calendar date yymmdd (used if nn_rstctl=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + ln_rstart = .false. ! start from rest (F) or from a restart file (T) + nn_rstctl = 0 ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 720 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = 120 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'swdn' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_qlw = 'qlw_core' , 24 , 'lwdn' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tair = 't2_core' , 6 , 't2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_humi = 'q2_core' , 6 , 'q2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_prec = 'precip_core' , -1 , 'precip' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_snow = 'snow_core' , -1 , 'snow' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 0.98 ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask.nc', 0 , 'socoeff', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -66.0 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 5000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 1.67e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 0.78e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1000. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1000. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .true. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .false. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.001 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 2000 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 4 ! number of processors in i-direction + nn_jsplt = 4 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .true. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ diff --git a/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default new file mode 100644 index 0000000000000000000000000000000000000000..1c93adb16794c443b98c9cfb72c2998943a4cbc8 --- /dev/null +++ b/deploy/patches/hector/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default @@ -0,0 +1,129 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice_in" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 2.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 200.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ diff --git a/deploy/patches/ithaca/ecearth/v2.3.0/build/compilation.cmd b/deploy/patches/ithaca/ecearth/v2.3.0/build/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..b29bab07046dbc56a68c2dbc201102cdf5744b7f --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v2.3.0/build/compilation.cmd @@ -0,0 +1,85 @@ +#!/bin/ksh + +nemo_i=4 +nemo_j=4 + +while getopts i:j: option +do + case $option in + i) nemo_i=$OPTARG;; + j) nemo_j=$OPTARG;; + \?) exit 1;; + esac +done + +source /opt/modules/init/ksh +module load intel/13.0.1 +module load openmpi/1.6-intel # OpenMPI +#module load intel/4.0.3.008 # Intel MPI + +set -xuve +date + +MPI=/share/mpi/openmpi/1.6/ics2012.0.032 # OpenMPI +#MPI=/share/compilers/ics/2012.0.032/impi/4.0.3.008/intel64 # Intel MPI +NetCDF=/scratch/cfu/opt/netcdf-3.6.3/intel12 +UDUNITS=/scratch/cfu/opt/udunits-2.1.24/intel12 + +settings=settings.orca1.ithaca + +cd .. +ECEARTH=`pwd` +cd - + +cat > $settings <0)); then + NFRCO=$((NFRCO*3600/TSTEP)) + LMCCIEC=true + LMCCEC=true + LMCC04=false + NOACOMM=5 + LMCCICEIC=false + LECURR=false +else + LMCCIEC=true + LMCCEC=true + LMCC04=false + NOACOMM=0 + LMCCICEIC=false + LECURR=false +fi + +# WAM resolution +if [[ $WAMRESOL = global36 ]] ; then + rsoutw="-78.12" + rnortw="81.00" + rdegrew="0.36" +elif [[ $WAMRESOL = global50 ]] ; then + rsoutw="-81.00" + rnortw="81.00" + rdegrew="0.5" +elif [[ $WAMRESOL = global100 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="1.0" +elif [[ $WAMRESOL = global150 ]] ; then + rsoutw="-81.00" + rnortw="81." + rdegrew="1.5" +elif [[ $WAMRESOL = global300 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="3.0" +elif [[ $WAMRESOL = global511 ]] ; then + rsoutw="-89.731" + rnortw="89.731" + rdegrew="0.3514" +else + print - "$0: ERROR - WAMRESOL=$WAMRESOL. Invalid resolution." + print - "$0: ERROR - EXIT" + exit 1 +fi + +cat >namelistfc < WAMINPUT_CPLD_000<0)); then + NFRCO=$((NFRCO*3600/TSTEP)) + LMCCIEC=true + LMCCEC=true + LMCC04=true + NOACOMM=5 + LMCCICEIC=false + LECURR=true +else + LMCCIEC=true + LMCCEC=true + LMCC04=false + NOACOMM=0 + LMCCICEIC=false + LECURR=false +fi + +# WAM resolution +if [[ $WAMRESOL = global36 ]] ; then + rsoutw="-78.12" + rnortw="81.00" + rdegrew="0.36" +elif [[ $WAMRESOL = global50 ]] ; then + rsoutw="-81.00" + rnortw="81.00" + rdegrew="0.5" +elif [[ $WAMRESOL = global100 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="1.0" +elif [[ $WAMRESOL = global150 ]] ; then + rsoutw="-81.00" + rnortw="81." + rdegrew="1.5" +elif [[ $WAMRESOL = global300 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="3.0" +elif [[ $WAMRESOL = global511 ]] ; then + rsoutw="-89.731" + rnortw="89.731" + rdegrew="0.3514" +else + print - "$0: ERROR - WAMRESOL=$WAMRESOL. Invalid resolution." + print - "$0: ERROR - EXIT" + exit 1 +fi + +cat >namelistfc < WAMINPUT_CPLD_000<0)); then + NFRCO=$((NFRCO*3600/TSTEP)) + LMCCIEC=true + LMCCEC=true + LMCC04=true + NOACOMM=5 + LMCCICEIC=false + LECURR=true +else + LMCCIEC=true + LMCCEC=true + LMCC04=false + NOACOMM=0 + LMCCICEIC=false + LECURR=false +fi + +# WAM resolution +if [[ $WAMRESOL = global36 ]] ; then + rsoutw="-78.12" + rnortw="81.00" + rdegrew="0.36" +elif [[ $WAMRESOL = global50 ]] ; then + rsoutw="-81.00" + rnortw="81.00" + rdegrew="0.5" +elif [[ $WAMRESOL = global100 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="1.0" +elif [[ $WAMRESOL = global150 ]] ; then + rsoutw="-81.00" + rnortw="81." + rdegrew="1.5" +elif [[ $WAMRESOL = global300 ]] ; then + rsoutw="-78.00" + rnortw="81.00" + rdegrew="3.0" +elif [[ $WAMRESOL = global511 ]] ; then + rsoutw="-89.731" + rnortw="89.731" + rdegrew="0.3514" +else + print - "$0: ERROR - WAMRESOL=$WAMRESOL. Invalid resolution." + print - "$0: ERROR - EXIT" + exit 1 +fi + +cat >namelistfc < WAMINPUT_CPLD_000<namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA2" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = $(RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = ${NWRITE} + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 15 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 75 + nstockfl = 5475 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +if [[ $ORCARESOL = ORCA1 ]]; then +cat >namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA1" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = ${RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = ${NWRITE} + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 24 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 120 + nstockfl = 8760 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +cat >namelist_ice <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +! ICE namelist : ice model option and parameter input +! ------------- +! +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicerun Share parameters for dynamics/advection/thermo +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limdyn : switch for ice dynamics (true) or not (false) +! acrit(1/2) : minimum fraction for leads in the Northern (Southern) Hemisphere +! hnsdif : computation of temperature in snow (=0.0) or not (=9999.0) +! hicdif : computation of temperature in ice (=0.0) or not (=9999.0) +! +&namicerun + ln_limdyn = .true. + acrit = 1.0e-06 , 1.0e-06 + hsndif = 0.0 + hicdif = 0.0 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceini parameters for ice initialisation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limini : Ice initialization state flag +! ln_limdmp : restoring Ice thickness and Fraction leads flag +! ttest : threshold water temperature for initial sea ice +! hninn : initial snow thickness in the north +! hginn : initial ice thickness in the north +! alinn : initial leads area in the north +! hnins : initial snow thickness in the south +! hgins : initial ice thickness in the south +! alins : initial leads area in the south +! +&namiceini + ln_limini = .FALSE. + ln_limdmp = .FALSE. + ttest = 2.0 + hninn = 0.5 + hginn = 3.0 + alinn = 0.05 + hnins = 0.1 + hgins = 1.0 + alins = 0.1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedia parameters for ice diagnostics +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! fmtinf : format of the output values +! nfrinf : number of variables written in one line +! ntmoy : instantaneous values of ice evolution or averaging +! ninfo : frequency of ouputs on file ice_evolu in case of averaging +! +&namicedia + fmtinf = '1PE13.5 ' + nfrinf = 4 + ntmoy = 1 + ninfo = 1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedyn parameters for ice dynamic +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! epsd : tolerance parameter +! alpha : coefficient for semi-implicit coriolis +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +! dm : diffusion constant for dynamics. +! nbiter : number of sub-time steps for relaxation +! nbitdr : maximum number of iterations for relaxation +! om : relaxation constant +! resl : maximum value for the residual of relaxation +! cw : drag coefficient for oceanic stress +! angvg : turning angle for oceanic stress +! pstar : first bulk-rheology parameter +! c_rhg : second bulk-rhelogy parameter +! etamn : minimun value for viscosity +! creepl : creep limit +! ecc : eccentricity of the elliptical yield curve +! ahi0 : horizontal eddy diffusivity coefficient for sea-ice (m2/s) +! +&namicedyn + epsd = 1.0e-20 + alpha = 0.5 + dm = 0.6e+03 + nbiter = 1 + nbitdr = 100 + om = 0.5 + resl = 5.0e-05 + cw = 5.0e-03 + angvg = 0.0 + pstar = 1.0e+04 + c_rhg = 20.0 + etamn = 0.0e+07 + creepl = 2.0e-08 + ecc = 2.0 + ahi0 = 350.e0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicetrp parameters for ice advection +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +&namicetrp + bound = 0. +/ + +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicethd parameters for thermodynamic computation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! hmelt : maximum melting at the bottom +! hiccrit(1/2): ice thickness for lateral accretion in the Northern (Southern) Hemisphere +! caution 1.0, 1.0 best value to be used!!! (gilles G.) +! hicmin : ice thickness corr. to max. energy stored in brine pocket +! hiclim : minimum ice thickness +! amax : maximum lead fraction +! swiqst : energy stored in brine pocket (=1) or not (=0) +! sbeta : numerical caracteritic of the scheme for diffusion in ice +! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) +! parlat : percentage of energy used for lateral ablation +! hakspl : slope of distr. for Hakkinen-Mellor's lateral melting +! hibspl : slope of distribution for Hibler's lateral melting +! exld : exponent for leads-closure rate +! hakdif : coefficient for diffusions of ice and snow +! thth : threshold thickness for comp. of eq. thermal conductivity +! hnzst : thickness of the surf. layer in temp. computation +! parsub : switch for snow sublimation or not +! alphs : coefficient for snow density when snow ice formation +! +&namicethd + hmelt = -0.15 + hiccrit = 0.3 , 0.3 + hicmin = 0.2 + hiclim = 0.05 + amax = 0.999 + swiqst = 1. + sbeta = 1. + parlat = 0.0 + hakspl = 0.5 + hibspl = 0.5 + exld = 2.0 + hakdif = 1.0 + thth = 0.2 + hnzst = 0.1 + parsub = 0.0 + alphs = 1.0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceout parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! noumef : number of fields +! field +! title : title of the field +! name : name of the field +! unit : unit of the field +! nc : switch for saving field ( = 1 ) or not ( = 0 ) +! cmulti : multiplicative constant +! cadd : additive constant +! +&namiceout + noumef = 19 + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1, 1.0, 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1, 1.0, 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1, 1.0, 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1, -1.0, 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1, 1.0, -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1, 1.0, 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1, 1.0, 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1, 1.0, 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1, 1.0, -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1, 1.0, 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1, 1.0, 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1, 1.0, 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1, 1.0, 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1, 1.0, 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1, 1.0, 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1, 1.0, 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1, 1.0, 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1, 1.0, 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/s ', 1, 1.0, 0.0 +/ +EOF + +ln -sf $NEMODATA/* . +#ln -sf ${NEMOEXPVER}_19951101_EMPave_old.dat EMPave_old.dat + +set -x + +if [[ ${OCLENPRV} == 0 ]]; then + case ${ORCARESOL} in + ORCA2) + ln -sf ${NEMOEXPVER}_19951101_restart.nc restart.nc + ln -sf ORCA2_00000075_restart_ice.nc restart_ice_in.nc + ;; + ORCA1) + #ln -sf ORCA1_00271560_restart.nc restart.nc + #ln -sf ORCA1_00271560_restart_ice.nc restart_ice_in.nc + #for f in ORCA1_INIT_restart*.nc; do + # target=`echo $f | sed -e "s/ORCA1_INIT_//" -e "s/restart_ice/restart_ice_in/"` + # mv $f ${target} + #done + ln -sf ORCA1_INIT_restart.nc restart.nc + ln -sf ORCA1_INIT_restart_ice.nc restart_ice_in.nc + ;; + esac +else + rm -f restart.nc restart_ice_in.nc + restart_dir=${ORCARESOL}_Restart + mkdir -p ${restart_dir} + timestep=`printf "%08d" ${OCLENPRV}` + for f in ${ORCARESOL}_${timestep}_restart*.nc; do + target=`echo $f | sed -e "s/${ORCARESOL}_${timestep}_//" -e "s/restart_ice/restart_ice_in/"` +# mv $f ${restart_dir} + cp $f ${restart_dir} + ln -sf ${restart_dir}/$f ${target} + done +fi + diff --git a/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupnemo2.ksh b/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupnemo2.ksh new file mode 100755 index 0000000000000000000000000000000000000000..07775e04cb6ebda7d3b010027dabdc1dd2fa5dd8 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupnemo2.ksh @@ -0,0 +1,1884 @@ +#!/bin/ksh + +ECEARTH=unknown +OCLENPRV=0 +OCLENGTH=24 +ORCARESOL=ORCA2 +DATADIR=unknown +STARTDATE=19900101 +ADVSCH=cen2 +SAVEDDO=FALSE +GRESFILE='.false.' + +while getopts e:l:g:p:0:1:2:3:4: option +do + case $option in + e) ECEARTH=$OPTARG;; + l) OCLENGTH=$OPTARG;; + p) OCLENPRV=$OPTARG;; + g) ORCARESOL=$OPTARG;; + 0) DATADIR=$OPTARG;; + 1) STARTDATE=$OPTARG;; + 2) ADVSCH=$OPTARG;; + 3) SAVEDDO=$OPTARG;; + 4) GRESFILE=$OPTARG;; + \?) exit 1;; + esac +done + +case $ORCARESOL in + ORCA2) NEMOEXPVER=ew5k;; + ORCA1) NEMOEXPVER=ewho;; + * ) print "Unknown testcase in setupnemo.ksh" + exit 1;; +esac + +case $ADVSCH in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase in setupnemo.ksh" + exit 1;; +esac + +case $SAVEDDO in + 'TRUE' ) NWRITE=24 ;; + 'FALSE') NWRITE=-1 ;; +esac + +NEMODATA=${DATADIR}/nemo/${ORCARESOL} + +if [[ ${OCLENPRV} != 0 ]]; then + OCRESTART='.true.' + RESTART_MODE=2 + GLOBAL_RESTART_FILE=$GRESFILE + WRITE_MESH_FILES='0' +else + OCRESTART='.true.' # when starting from restart file +# OCRESTART='.false.' # set it to false to start from levitus + RESTART_MODE=0 + GLOBAL_RESTART_FILE='.true.' + WRITE_MESH_FILES='3' +fi + +if [[ ${ORCARESOL} = ORCA2 ]]; then +cat >namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA2" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = $(RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = ${NWRITE} + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 15 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 75 + nstockfl = 5475 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +if [[ $ORCARESOL = ORCA1 ]]; then +cat >namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA1" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = ${RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = ${NWRITE} + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 24 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 120 + nstockfl = 8760 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +cat >namelist_ice <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +! ICE namelist : ice model option and parameter input +! ------------- +! +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicerun Share parameters for dynamics/advection/thermo +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limdyn : switch for ice dynamics (true) or not (false) +! acrit(1/2) : minimum fraction for leads in the Northern (Southern) Hemisphere +! hnsdif : computation of temperature in snow (=0.0) or not (=9999.0) +! hicdif : computation of temperature in ice (=0.0) or not (=9999.0) +! +&namicerun + ln_limdyn = .true. + acrit = 1.0e-06 , 1.0e-06 + hsndif = 0.0 + hicdif = 0.0 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceini parameters for ice initialisation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limini : Ice initialization state flag +! ln_limdmp : restoring Ice thickness and Fraction leads flag +! ttest : threshold water temperature for initial sea ice +! hninn : initial snow thickness in the north +! hginn : initial ice thickness in the north +! alinn : initial leads area in the north +! hnins : initial snow thickness in the south +! hgins : initial ice thickness in the south +! alins : initial leads area in the south +! +&namiceini + ln_limini = .FALSE. + ln_limdmp = .FALSE. + ttest = 2.0 + hninn = 0.5 + hginn = 3.0 + alinn = 0.05 + hnins = 0.1 + hgins = 1.0 + alins = 0.1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedia parameters for ice diagnostics +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! fmtinf : format of the output values +! nfrinf : number of variables written in one line +! ntmoy : instantaneous values of ice evolution or averaging +! ninfo : frequency of ouputs on file ice_evolu in case of averaging +! +&namicedia + fmtinf = '1PE13.5 ' + nfrinf = 4 + ntmoy = 1 + ninfo = 1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedyn parameters for ice dynamic +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! epsd : tolerance parameter +! alpha : coefficient for semi-implicit coriolis +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +! dm : diffusion constant for dynamics. +! nbiter : number of sub-time steps for relaxation +! nbitdr : maximum number of iterations for relaxation +! om : relaxation constant +! resl : maximum value for the residual of relaxation +! cw : drag coefficient for oceanic stress +! angvg : turning angle for oceanic stress +! pstar : first bulk-rheology parameter +! c_rhg : second bulk-rhelogy parameter +! etamn : minimun value for viscosity +! creepl : creep limit +! ecc : eccentricity of the elliptical yield curve +! ahi0 : horizontal eddy diffusivity coefficient for sea-ice (m2/s) +! +&namicedyn + epsd = 1.0e-20 + alpha = 0.5 + dm = 0.6e+03 + nbiter = 1 + nbitdr = 100 + om = 0.5 + resl = 5.0e-05 + cw = 5.0e-03 + angvg = 0.0 + pstar = 1.0e+04 + c_rhg = 20.0 + etamn = 0.0e+07 + creepl = 2.0e-08 + ecc = 2.0 + ahi0 = 350.e0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicetrp parameters for ice advection +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +&namicetrp + bound = 0. +/ + +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicethd parameters for thermodynamic computation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! hmelt : maximum melting at the bottom +! hiccrit(1/2): ice thickness for lateral accretion in the Northern (Southern) Hemisphere +! caution 1.0, 1.0 best value to be used!!! (gilles G.) +! hicmin : ice thickness corr. to max. energy stored in brine pocket +! hiclim : minimum ice thickness +! amax : maximum lead fraction +! swiqst : energy stored in brine pocket (=1) or not (=0) +! sbeta : numerical caracteritic of the scheme for diffusion in ice +! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) +! parlat : percentage of energy used for lateral ablation +! hakspl : slope of distr. for Hakkinen-Mellor's lateral melting +! hibspl : slope of distribution for Hibler's lateral melting +! exld : exponent for leads-closure rate +! hakdif : coefficient for diffusions of ice and snow +! thth : threshold thickness for comp. of eq. thermal conductivity +! hnzst : thickness of the surf. layer in temp. computation +! parsub : switch for snow sublimation or not +! alphs : coefficient for snow density when snow ice formation +! +&namicethd + hmelt = -0.15 + hiccrit = 0.3 , 0.3 + hicmin = 0.2 + hiclim = 0.05 + amax = 0.999 + swiqst = 1. + sbeta = 1. + parlat = 0.0 + hakspl = 0.5 + hibspl = 0.5 + exld = 2.0 + hakdif = 1.0 + thth = 0.2 + hnzst = 0.1 + parsub = 0.0 + alphs = 1.0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceout parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! noumef : number of fields +! field +! title : title of the field +! name : name of the field +! unit : unit of the field +! nc : switch for saving field ( = 1 ) or not ( = 0 ) +! cmulti : multiplicative constant +! cadd : additive constant +! +&namiceout + noumef = 19 + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1, 1.0, 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1, 1.0, 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1, 1.0, 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1, -1.0, 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1, 1.0, -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1, 1.0, 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1, 1.0, 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1, 1.0, 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1, 1.0, -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1, 1.0, 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1, 1.0, 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1, 1.0, 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1, 1.0, 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1, 1.0, 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1, 1.0, 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1, 1.0, 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1, 1.0, 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1, 1.0, 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/s ', 1, 1.0, 0.0 +/ +EOF + +#ln -sf $NEMODATA/* . +#ln -sf ${NEMOEXPVER}_19951101_EMPave_old.dat EMPave_old.dat + +set -x + +if [[ ${OCLENPRV} == 0 ]]; then + case ${ORCARESOL} in + ORCA2) + ln -sf ${NEMOEXPVER}_19951101_restart.nc restart.nc + ln -sf ORCA2_00000075_restart_ice.nc restart_ice_in.nc + ;; + ORCA1) + #ln -sf ORCA1_00271560_restart.nc restart.nc + #ln -sf ORCA1_00271560_restart_ice.nc restart_ice_in.nc + #for f in ORCA1_INIT_restart*.nc; do + # target=`echo $f | sed -e "s/ORCA1_INIT_//" -e "s/restart_ice/restart_ice_in/"` + # mv $f ${target} + #done + ln -sf ORCA1_INIT_restart.nc restart.nc + ln -sf ORCA1_INIT_restart_ice.nc restart_ice_in.nc + ;; + esac +else + rm -f restart.nc restart_ice_in.nc + restart_dir=${ORCARESOL}_Restart + mkdir -p ${restart_dir} + timestep=`printf "%08d" ${OCLENPRV}` + for f in ${ORCARESOL}_${timestep}_restart*.nc; do + target=`echo $f | sed -e "s/${ORCARESOL}_${timestep}_//" -e "s/restart_ice/restart_ice_in/"` +# mv $f ${restart_dir} + cp $f ${restart_dir} + ln -sf ${restart_dir}/$f ${target} + done +fi + diff --git a/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupoasis3.ksh b/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupoasis3.ksh new file mode 100755 index 0000000000000000000000000000000000000000..ef962e8192033c71d8b152c485b70c48c1e4e5b4 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v2.3.0/build/setup/setupoasis3.ksh @@ -0,0 +1,748 @@ +#!/bin/ksh + +ECEARTH=unknown +FCLENGTH=24 +IFSRESOL=T21L31 +OCERESOL=ORCA2 +NPROCIFS=1 +NPROCOCE=1 +NFRCO=-1 +OASIS3OLDWEIGHTS=true +OASIS3WEIGHTSDIR=unknown +DATADIR=unknown +STARTDATE=19900101 + +while getopts e:l:r:g:n:p:c:wW:0:1: option +do + case $option in + e) ECEARTH=$OPTARG;; + l) FCLENGTH=$OPTARG;; + r) IFSRESOL=$OPTARG;; + g) OCERESOL=$OPTARG;; + n) NPROCIFS=$OPTARG;; + p) NPROCOCE=$OPTARG;; + c) NFRCO=$OPTARG;; + w) OASIS3OLDWEIGHTS=false;; + W) OASIS3WEIGHTSDIR=$OPTARG;; + 0) DATADIR=$OPTARG;; + 1) STARTDATE=$OPTARG;; + \?) exit 1;; + esac +done + +NFRCO=$((NFRCO*3600)) +OASIS3TIME=$((FCLENGTH*3600)) +OASIS3DATA=$DATADIR/oasis3 + +if [[ $OASIS3OLDWEIGHTS = "true" ]]; then + wwrite=1 +else + wwrite=0 + ln -sf $OASIS3WEIGHTSDIR/* . +fi + +case $IFSRESOL in + T21L31 ) nxa=2048 + nya=1;; + T42L40 ) nxa=8192 + nya=1;; + T95L40 ) nxa=13280 + nya=1;; + T159L62|T159L91) nxa=35718 + nya=1;; + T255L62) nxa=88838 + nya=1;; + T399L62) nxa=213988 + nya=1;; + * ) print "Unknown testcase in setupoasis3.ksh" + exit 1;; +esac + +case $OCERESOL in + ORCA2) ocean_model_name=opa9 + nxo=182 + nyo=149;; + ORCA1) ocean_model_name=opa9 + nxo=362 + nyo=292;; + FOcean) ocean_model_name=FOcean + nxo=96 + nyo=48 ;; + SlabOcean) ocean_model_name=SOcean + nxo=96 + nyo=48 ;; + * ) print "Unknown testcase in setupoasis3.ksh" + exit 1;; +esac + +case $OCERESOL in +FOcean|SlabOcean) + +cat >namcouple <namcouple <&2; + exit 2;; + (\?) echo ${b_n}" : option $OPTARG : not supported" 1>&2; + exit 2;; + esac + done +shift $(($OPTIND-1)); +#- +# Validate the number of arguments +#- +if [ ${#} -lt 1 ]; then + echo ${b_n}' : Too few arguments have been specified. (Use -h)' 1>&2; + exit 3; +fi +#- +# Check for the output file name +#- +if [ '\?'${r_o} = '\?' ]; then + echo ' ' 1>&2; + echo ${b_n}' : output_file_name not specified. (Use -h)' 1>&2; + echo ' "rebuilt_file.nc" should be created.' 1>&2; + echo ' ' 1>&2; + r_o='rebuilt_file.nc' +fi; +#- +# Validate the names of the input files +#- +qi=0; +for i in $*; + do ((qi=qi+1)); + [ ${qi} -le ${#} ] && [ ! -f ${i} ] && \ + { echo "${i} unreachable ..."; exit 3;} + done +#- +# Create the information file for the program +#- +echo ${r_v} > tmp.$$; +echo ${r_f} >> tmp.$$; +((qi=$#+1)); +echo ${qi} >> tmp.$$; +for i in $*; + do echo ${i} >> tmp.$$; + done +echo ${r_o} >> tmp.$$; +#- +# Create the output file +#- +${d_n}/../../../../nemo_build/flio_rbld < tmp.$$ +#- +# Clear +#- +rm -f tmp.$$ +#- +# End +#- +exit 0; diff --git a/deploy/patches/ithaca/ecearth/v2.3.0/oasis3/prism_2-5/prism/src/mod/oasis3/util/make_dir/make.ithaca b/deploy/patches/ithaca/ecearth/v2.3.0/oasis3/prism_2-5/prism/src/mod/oasis3/util/make_dir/make.ithaca new file mode 100755 index 0000000000000000000000000000000000000000..1ba1a34540c0a29177435743284e9c291e502eaa --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v2.3.0/oasis3/prism_2-5/prism/src/mod/oasis3/util/make_dir/make.ithaca @@ -0,0 +1,74 @@ +# +# Include file for OASIS3 Makefile for a Linux system using +# ifort and openmpi +# +############################################################################### +# +# Needed to work with SCE Makefile +COUPLE = oasis3 +I4mods = I +# +# CHAN : MPI1/MPI2 +CHAN = MPI1 +# +# Paths for libraries, object files and binaries +# +# PRISMHOME : path for the root of prism directory tree, can be anywhere +# ARCHDIR : directory created when compiling +# LIBPSMILE : list of oasis3 libraries +# PSMILE_INCDIR : includes all *o and *mod for each library +# BINDIR : directory for executables +# LIBBUILD : contains a directory for each library +# +PRISMHOME = $(TEMP)/prism +ARCHDIR = $(PRISMHOME)/${OASIS3ARCH} +# +LIBPSMILE = $(ARCHDIR)/lib/libanaisg.a $(ARCHDIR)/lib/libanaism.a $(ARCHDIR)/lib/libclim.$(CHAN).a $(ARCHDIR)/lib/libpsmile.$(CHAN).a $(ARCHDIR)/lib/libfscint.a $(ARCHDIR)/lib/libmpp_io.a $(ARCHDIR)/lib/libscrip.a +PSMILE_INCDIR = -I$(LIBBUILD)/psmile.$(CHAN) -I$(LIBBUILD)/clim.$(CHAN) -I$(LIBBUILD)/mpp_io +BINDIR = $(ARCHDIR)/bin +LIBBUILD = $(ARCHDIR)/build/lib +# +# NETCDF library +NETCDF_INCLUDE = ${NETCDFDIR}/include +NETCDF_LIBRARY = -L${NETCDFDIR}/lib ${NETCDFLIBS} +# +# MPI library +MPIBIN = $(MPIDIR)/bin +MPI_INCLUDE = $(MPIDIR)/include +MPILIB = -L$(MPIDIR)/lib ${MPILIBS} +# +# Compiling and other commands +MAKE = make +F90 = ifort -I$(MPI_INCLUDE) $(MPILIB) +F = $(F90) +f90 = $(F90) +f = $(F90) +CC = icc -I$(MPI_INCLUDE) +LD = ifort $(MPILIB) +AR = ar +ARFLAGS = -ruv +# +# compiler options and cpp keys +# +CPPDEF = -Duse_libMPI -Duse_netCDF -Duse_comm_$(CHAN) -DDEBUG +CCPPDEF = -Duse_libMPI -Duse_netCDF -Duse_comm_$(CHAN) -DDEBUG +# +# -g is necessary in F90FLAGS and LDFLAGS for pgf90 versions lower than 6.1 +# For compiling in double precision, put -r8 +# For compiling in single precision, remove -r8 and add -Duse_realtype_single +# +F90FLAGS = -g $(PSMILE_INCDIR) $(CPPDEF) -I$(NETCDF_INCLUDE) -fp-model precise -xSSSE3 -traceback -r8 -i4 -O2 +f90FLAGS = $(F90FLAGS) +FFLAGS = $(F90FLAGS) +fFLAGS = $(F90FLAGS) +CCFLAGS = $(PSMILE_INCDIR) $(CPPDEF) -I$(NETCDF_INCLUDE) +LDFLAGS = $(MPILIB) +# +# MPP_IOOPT needed for compiling mpp_io +MPP_IOOPT = -i4 -r8 +# +# External libraies for linking +FLIBS = $(NETCDF_LIBRARY) +# +# +############################################################################# diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/compilation.cmd b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..8f4c814c93974b6a8001b29c0b7b4ae928f333f8 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/compilation.cmd @@ -0,0 +1,367 @@ +#!/bin/bash + +# nohup ./compilation.cmd >& compiation.log & + +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +set -xuve +date + +MPI=/share/mpi/openmpi/1.6/ics2012.0.032 +LAPACK=/share/compilers/ics/2013.0.028/mkl +SZIP=/share/libs/szip/2.1 +HDF5=/share/libs/hdf5/1.8.10 +NetCDF=/share/libs/netcdf/4.1.3 +GribAPI=/scratch/cfu/opt/grib_api-1.9.9/intel-13 +GribEX=/scratch/cfu/opt/gribex_000370/intel-13 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=ithaca-intel-openmpi +CONFIG=config.xml + +cat > $CONFIG < + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + HOST: ic3.cat + ARCH: linux_x86_64 + CPU MODEL: Intel Xeon X5570 @ 2.93GHz + COMPILER: Intel (ifort and icc 13) + MPI: OpenMPI (1.6) + BLAS/LAPACK: Intel MKL + + + + EC-Earth base directory + PATH + $ECEARTH + + + + MPI base directory + PATH + $MPI + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi_f77 mpi + + + + LAPACK base directory + PATH + $LAPACK + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + $NetCDF + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + $GribAPI + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $GribEX + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L${HDF5}/lib -lhdf5 -lhdf5_hl -L${SZIP}/lib -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + \$(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + \$(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + +EOF +cat $CONFIG + +# MAKEDEP90 Compilation +# ===================== + +if [ ! -d makedepf90-2.8.8 ]; then + tar -zxvf ../util/makedepf90/src/makedepf90-2.8.8.tar.gz + cd makedepf90-2.8.8 + ./configure --prefix=$ECEARTH/util/makedepf90/ + make + make install + cd - +fi + +# EC-CONF Usage +# ============= + +cd .. +$ECEARTH/util/ec-conf/ec-conf --platform $PLATFORM build-config/$CONFIG +BA=ecconf # Build Arch +cd - + +# OASIS Compilation +# ================= + +cd $ECEARTH/oasis*/util/make_dir/ +#make realclean -f TopMakefileOasis3 BUILD_ARCH=$BA +make -f TopMakefileOasis3 BUILD_ARCH=$BA + +# NEMO Compilation +# ================ + +cd $ECEARTH/nemo*/CONFIG/ +nemo_configs=`ls -1 | grep ORCA` +#set +e +#./makenemo clean +#set -e +for nemo_config in $nemo_configs; do + ./makenemo -m $BA -n $nemo_config -j 8 +done + +# IFS Compilation +# =============== + +cd $ECEARTH/ifs*/ +#make clean BUILD_ARCH=$BA +#make realclean BUILD_ARCH=$BA +#make dep-clean BUILD_ARCH=$BA +make -j 8 BUILD_ARCH=$BA lib +make BUILD_ARCH=$BA master + +date diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/cp.cmd b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..39eb81d7274cb570ef9032940d18832ecbbbdc34 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/cp.cmd @@ -0,0 +1,25 @@ +#!/bin/ksh + +bin=bin + +while getopts b: option +do + case $option in + b) bin=$OPTARG;; + \?) exit 1;; + esac +done + +set -xuv + +mkdir -p ../../$bin +ls -lrt ../../$bin + +cp -p ../oasis3/*con*/bin/oasis3.MPI1.x ../../$bin +for nemo_config in `ls -1 ../nemo*/CONFIG | grep ORCA`; do + mkdir -p ../../bin/$nemo_config + cp -pf ../nemo*/CONFIG/$nemo_config/BLD/bin/*.exe ../../$bin/$nemo_config +done +cp -p ../ifs-36r4/bin/ifsmaster-*con* ../../$bin + +ls -lrt ../../$bin diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run-atm.cmd b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run-atm.cmd new file mode 100755 index 0000000000000000000000000000000000000000..4009b2b1c9a41c8cddbe389d19fa8f5f8c58e02c --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run-atm.cmd @@ -0,0 +1,365 @@ +#!/bin/bash +############################################################################### +# RUN EC_EARTH +############################################################################### +#$ -S /bin/sh +#$ -N run-atm +#$ -V +#$ -cwd +#$ -pe orte 48 +# + +# modules setup +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +# setup the grib_api env. +PATH=/scratch/cfu/opt/grib_api-1.9.9/intel-13/bin:$PATH + +set -xuve +module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# Switch between LOW, STANDARD and HIGH RESOLUTION by setting: +# +# -------------------------------------------------- +# Parameter lowres stdres highres +# -------------------------------------------------- +# ifs_grid T159L62 T255 T799 +# nem_grid ORCA1L46 ORCA1L46 ORCA025L46 +# ifs_time_step_sec 3600 2700 720 +# nem_time_step_sec 3600 3600 1200 +# -------------------------------------------------- +# +# Change also: +# exp_name +# run_start_date (lo:1990/std:1996/hi:1996) +# ifs_numproc +# nem_numproc +# run_dir +# and make sure to use the appropriate NEMO executable +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +ecearth_base_dir=/scratch/cfu/models/ecearth/v3.0-r1012 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/cfu/$USER/test/run_${ifs_grid}_atm_${JOB_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/scratch/cfu/opt/grib_api-1.9.9/intel-13 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=48 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE + +nprtrv=1 + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +ln -sf ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT ICMSEA${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=simulate +export OASIS3DEBUGLEVEL=3 + +### --- PLATFORM DEPENDENT CODE --- +ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +mpirun -np ${ifs_numproc} ${ifs_exe_file} -v ecmwf -e ${exp_name} +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run.cmd b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run.cmd new file mode 100755 index 0000000000000000000000000000000000000000..239c0ffffea7a2b4f34c73e9b4f74744b2412075 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/run.cmd @@ -0,0 +1,521 @@ +#!/bin/bash +############################################################################### +# RUN EC_EARTH +############################################################################### +#$ -S /bin/sh +#$ -N run +#$ -V +#$ -cwd +#$ -pe orte 56 +# + +# modules setup +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +# setup the grib_api env. +PATH=/scratch/cfu/opt/grib_api-1.9.9/intel-13/bin:$PATH + +set -xuve +module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# Switch between LOW, STANDARD and HIGH RESOLUTION by setting: +# +# -------------------------------------------------- +# Parameter lowres stdres highres +# -------------------------------------------------- +# ifs_grid T159L62 T255 T799 +# nem_grid ORCA1L46 ORCA1L46 ORCA025L46 +# ifs_time_step_sec 3600 2700 720 +# nem_time_step_sec 3600 3600 1200 +# -------------------------------------------------- +# +# Change also: +# exp_name +# run_start_date (lo:1990/std:1996/hi:1996) +# ifs_numproc +# nem_numproc +# run_dir +# and make sure to use the appropriate NEMO executable +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 +nem_grid=ORCA1L46 +lim=LIM2 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +ecearth_base_dir=/scratch/cfu/models/ecearth/v3.0-r1012 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/cfu/$USER/test/run_${ifs_grid}_${nem_grid}_${JOB_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/scratch/cfu/opt/grib_api-1.9.9/intel-13 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=32 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=FALSE +ifs_cmip5_rcp=0 +ifs_volcanoes=FALSE + +nprtrv=1 + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=`echo $lim | cut -d 'M' -f 2` + +case ${nem_grid} in + ORCA1*) nem_time_step_sec=3600 ;; + ORCA025*) nem_time_step_sec=1200 ;; + *) error "Unsupported grid type: ${nem_grid}" + ;; +esac +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${bin_dir}/${nem_grid}_${lim}/nemo.exe + +nem_numproc=16 + +advsch=tvd +rstctl=1 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_base_dir}/sources/util/namcouple-split/namsplit.pl + +oas_numproc=7 + +# Flux correction that compensates for the mismatch between P-E over the ocean, +# and run-off from land (necessary to avoid sea level rise). +# The RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_rnf_fluxcorr=0.87 + +oas_exe_file=${bin_dir}/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/postins + ln -s ${ini_data_dir}/ifs/dirlist + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # Initial data + ln -s ${ini_data_dir}/nemo/${nem_grid}/temperature_*.nc . + ln -s ${ini_data_dir}/nemo/${nem_grid}/salinity_*.nc . + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1))) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $(seq 0 $((nem_numproc-1))) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +### --- PLATFORM DEPENDENT CODE --- +ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +mpirun -np ${oas_numproc} ${oas_exe_file} : \ + -np ${ifs_numproc} ${ifs_exe_file} -v ecmwf -e ${exp_name} : \ + -np ${nem_numproc} ${nem_exe_file} +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4823c74dc6f56aae9bd92c89ce9193d895a4e464 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim2.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a13d1a731f3268c9352584795e262207c709aa7 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.lim3.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a45e9594c0a91d7a18ded340aa686c6c7a34e7e --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/iodef.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh new file mode 100755 index 0000000000000000000000000000000000000000..f8815bbfe74b6ccdca0c9993f91e5c9bc4e9888f --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple-real.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 4 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 4 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..c86a7153fbeadf88f38dfebc59e0f00236965313 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namcouple.sh @@ -0,0 +1,277 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ${exp_name} + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 4 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 4 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T159L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..225f543252c35ef12e0edff4ff16151c45260f61 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T255L91.sh @@ -0,0 +1,447 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAMGWWMS + GFLUXLAUN=0.002 + ZLAUNCHP=45000 + LOZPR=true + NGAUSS=4 + GGAUSSB=1.0 +/ +&NAMGWD + GTENLIM=0.02 +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T511L91.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..fadcdb8a4d3672efa15de8dc41e1288fb8cad0fd --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.ifs-T799L62.sh @@ -0,0 +1,437 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NPRTRV = $nprtrv, + NPRTRW = $(( ifs_numproc / nprtrv )), + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2da9b7b3d693a93e5d9132beefca0259a7abbc5 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA025.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.0e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 250 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-09 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 100.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.5 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..1731df051dd141d8f13f351f8b0b38f23583ef76 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim2-ORCA1.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 120 ! number of EVP subcycling iterations + telast = 9600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..a9a33ef6a65bfe1270a9d555cd2a43ae235914f8 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA025.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 5.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..70532ad8afb83cd26ea04420fcbf0201f59a145b --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.lim3-ORCA1.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..132e553607633a78d54f4d6eb5e0fe46ec18f985 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'none' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 1 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 2.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 3.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 1 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 300. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! laplacian operator + ln_dynldf_bilap = .true. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -1.5e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.4 ! surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-15 ! absolute precision of the solver + nn_nmin = 340 ! minimum of iterations for the SOR solver + nn_nmax = 15000 ! maximum of iterations for the SOR solver + nn_nmod = 5 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.975 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .true. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..a75d5712ed3d998b6dd070aedcea582a05c598c3 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -100.e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .true. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def new file mode 100644 index 0000000000000000000000000000000000000000..0a252038763a53bf0d1ca45ddeb0f356f17e7fd4 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0-r1012/build-config/setup/ctrl/xmlio_server.def @@ -0,0 +1,35 @@ +! xmlio_server namelist +! +! using_server: .TRUE.(.FALSE.) to use(bypass) the io_server +! using_oasis : .TRUE.(.FALSE.) if nemo is coupled through OASIS +! client_id : used only for OASIS, NEMO id in the namecouple +! server_id : used only for OASIS, io_server id in the namecouple +! +&coupling_param + using_server = .FALSE. + using_oasis = .TRUE. + client_id = 'nemo.x' + server_id = 'ionemo' +/ + +! global_mpi_buffer_size: size in Mo of the MPI buffer used by the io_server +&mpi_param + global_mpi_buffer_size = 512 +/ + +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings +!!====================================================================== +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings + ! (benign if "key_netcdf4" is not used) +!----------------------------------------------------------------------- + nn_nchunks_i = 4 ! number of chunks in i-dimension + nn_nchunks_j = 4 ! number of chunks in j-dimension + nn_nchunks_k = 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .TRUE. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/compilation.cmd b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..a7afcc5d8b487ae5ae9d17caf10f461f2fd548dc --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/compilation.cmd @@ -0,0 +1,370 @@ +#!/bin/bash + +# nohup ./compilation.cmd >& compiation.log & + +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +set -xuve +date + +MPI=/share/mpi/openmpi/1.6/ics2012.0.032 +LAPACK=/share/compilers/ics/2013.0.028/mkl +SZIP=/share/libs/szip/2.1 +HDF5=/share/libs/hdf5/1.8.10 +NetCDF=/share/libs/netcdf/4.1.3 +GribAPI=/scratch/cfu/opt/grib_api-1.9.9/intel-13 +GribEX=/scratch/cfu/opt/gribex_000370/intel-13 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=ithaca-intel-openmpi +CONFIG=config.xml + +cat > $CONFIG < + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + + HOST: ic3.cat + ARCH: linux_x86_64 + CPU MODEL: Intel Xeon X5570 @ 2.93GHz + COMPILER: Intel (ifort and icc 13) + MPI: OpenMPI (1.6) + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $ECEARTH + + + + MPI base directory + PATH + $MPI + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi_f77 mpi + + + + LAPACK base directory + PATH + $LAPACK + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + $NetCDF + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + $GribAPI + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $GribEX + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L${HDF5}/lib -lhdf5 -lhdf5_hl -L${SZIP}/lib -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + \$(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + \$(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + +EOF +cat $CONFIG + +# MAKEDEP90 Compilation +# ===================== + +if [ ! -d makedepf90-2.8.8 ]; then + tar -zxvf ../util/makedepf90/src/makedepf90-2.8.8.tar.gz + cd makedepf90-2.8.8 + ./configure --prefix=$ECEARTH/util/makedepf90/ + make + make install + cd - +fi + +# EC-CONF Usage +# ============= + +cd .. +$ECEARTH/util/ec-conf/ec-conf --platform $PLATFORM build-config/$CONFIG +BA=ecconf # Build Arch +cd - + +# OASIS Compilation +# ================= + +cd $ECEARTH/oasis*/util/make_dir/ +#make realclean -f TopMakefileOasis3 BUILD_ARCH=$BA +make -f TopMakefileOasis3 BUILD_ARCH=$BA + +# NEMO Compilation +# ================ + +cd $ECEARTH/nemo*/CONFIG/ +nemo_configs=`ls -1 | grep ORCA` +#set +e +#./makenemo clean +#set -e +for nemo_config in $nemo_configs; do + ./makenemo -m $BA -n $nemo_config -j 8 +done + +# IFS Compilation +# =============== + +cd $ECEARTH/ifs*/ +#make clean BUILD_ARCH=$BA +#make realclean BUILD_ARCH=$BA +#make dep-clean BUILD_ARCH=$BA +make -j 8 BUILD_ARCH=$BA lib +make BUILD_ARCH=$BA master + +date diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/cp.cmd b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..780e1c7d4bdea79f6d1d5c4ecc7139b766a3cbe5 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/cp.cmd @@ -0,0 +1,26 @@ +#!/bin/ksh + +bin=bin + +while getopts b: option +do + case $option in + b) bin=$OPTARG;; + \?) exit 1;; + esac +done + +set -xuve + +bin=../../$bin +mkdir -p $bin +ls -lrt $bin + +cp -p ../oasis3/*con*/bin/oasis3.MPI1.x $bin +for nemo_config in `ls -1 ../nemo*/CONFIG | grep ORCA`; do + mkdir -p $bin/$nemo_config + cp -pf ../nemo*/CONFIG/$nemo_config/BLD/bin/*.exe $bin/$nemo_config +done +cp -p ../ifs-36r4/bin/ifsmaster-*con* $bin + +ls -lrt $bin diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run-atm.cmd b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run-atm.cmd new file mode 100755 index 0000000000000000000000000000000000000000..02fc4a390d9afa1deb522cc372409492d98125c6 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run-atm.cmd @@ -0,0 +1,355 @@ +#!/bin/bash +############################################################################### +# RUN EC_EARTH +############################################################################### +#$ -S /bin/sh +#$ -N run-atm +#$ -V +#$ -cwd +#$ -pe orte 48 +# + +# modules setup +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +# setup the grib_api env. +PATH=/scratch/cfu/opt/grib_api-1.9.9/intel-13/bin:$PATH + +set -xuve +module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=0 + +# Directories +ecearth_base_dir=/scratch/cfu/models/ecearth/v3.0.1 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/cfu/$USER/test/run_${ifs_grid}_atm_${JOB_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/scratch/cfu/opt/grib_api-1.9.9/intel-13 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=48 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE +ifs_ncmip5fixyr=0 + + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/climate/ICMSEAECE3INIT \ + ICMSEA${exp_name}INIT + + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS namelist file +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=no + +### --- PLATFORM DEPENDENT CODE --- +ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +mpirun -np ${ifs_numproc} ${ifs_exe_file} -v ecmwf -e ${exp_name} +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToRename="NODE.001_01 rcf" +for file in ${filesToRename} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run.cmd b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run.cmd new file mode 100755 index 0000000000000000000000000000000000000000..33492a39de44368e0705549defe2ac7c2e6074d3 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/run.cmd @@ -0,0 +1,512 @@ +#!/bin/bash +############################################################################### +# RUN EC_EARTH +############################################################################### +#$ -S /bin/sh +#$ -N run +#$ -V +#$ -cwd +#$ -pe orte 56 +# + +# modules setup +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +# setup the grib_api env. +PATH=/scratch/cfu/opt/grib_api-1.9.9/intel-13/bin:$PATH + +set -xuve +module list + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +ifs_grid=T255L62 +nem_grid=ORCA1L46 +lim=LIM2 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Coupling frequency [hrs] +cpl_freq_hrs=3 + +# Directories +ecearth_base_dir=/scratch/cfu/models/ecearth/v3.0.1 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/cfu/$USER/test/run_${ifs_grid}_${nem_grid}_${JOB_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- +grib_api_path=/scratch/cfu/opt/grib_api-1.9.9/intel-13 + +export GRIB_DEFINITION_PATH=${grib_api_path}/share/definitions +export GRIB_SAMPLES_PATH=${grib_api_path}/ifs_samples/grib1 +export GRIB_BIN_PATH=${grib_api_path}/bin + +# ----------------------------------------------------------------------------- +# *** IFS configuration +# ----------------------------------------------------------------------------- + +ifs_version=36r4 + +case ${ifs_grid} in + T159*) ifs_time_step_sec=3600 ;; + T255*) ifs_time_step_sec=2700 ;; + T511*) ifs_time_step_sec=900 ;; + T799*) ifs_time_step_sec=720 ;; + *) error "Unsupported grid type: ${ifs_grid}" + ;; +esac + +ifs_output_freq=$(( 6 * 3600 / ifs_time_step_sec )) +ifs_di_freq=$(( 24 * 3600 / ifs_time_step_sec )) +ifs_ddh_freq=$(( 120 * 3600 / ifs_time_step_sec )) + +ifs_res_hor=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\1:') +ifs_res_ver=$(echo ${ifs_grid} | sed 's:T\([0-9]*\)L\([0-9]*\):\2:') + +ifs_numproc=32 + +ifs_exe_file=${bin_dir}/ifsmaster-${build_arch} + +ifs_lastout=true + +ifs_cmip5=TRUE +ifs_cmip5_rcp=0 +ifs_volcanoes=TRUE +ifs_ncmip5fixyr=0 + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=$(echo $lim | cut -d 'M' -f 2) + +case ${nem_grid} in + ORCA1*) nem_time_step_sec=3600 ;; + ORCA025*) nem_time_step_sec=1200 ;; + *) error "Unsupported grid type: ${nem_grid}" + ;; +esac +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${bin_dir}/${nem_grid}_${lim}/nemo.exe + +nem_numproc=16 + +advsch=tvd +rstctl=1 + +# ----------------------------------------------------------------------------- +# *** OASIS configuration +# ----------------------------------------------------------------------------- + +oas_namcut_script=${ecearth_base_dir}/sources/util/namcouple-split/namsplit.pl + +oas_numproc=7 + +# Flux correction that compensates for the mismatch in the LSM of IFS and NEMO +# The QS, RUNOFF and CALVING coupling fields are multiplied by this factor. See +# documentation on the EC-Earth 3 Wiki for more details. +oas_qs_fluxcorr=0.985 +oas_rnf_fluxcorr=0.985 + +oas_exe_file=${bin_dir}/oasis3.MPI1.x + +# Restart files for the coupling fields +oas_cpl_flds="TAUX_OCE TAUY_OCE TAUX_ICE TAUY_ICE \ + QS___OCE QS___ICE QNS__OCE QNS__ICE DQDT_ICE \ + PRCP_LIQ PRCP_SOL EVAP_TOT EVAP_ICE RNF__OCE CALV_OCE \ + O_SSTSST O_TepIce O_AlbIce OIceFrac O_IceTck O_SnwTck" + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${ifs_exe_file} + ln -s ${nem_exe_file} + ln -s ${oas_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for IFS (linked) + # ------------------------------------------------------------------------- + + # Initial data + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIUA \ + ICMGG${exp_name}INIUA + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMGGECE3INIT \ + ICMGG${exp_name}INIT + ln -s \ + ${ini_data_dir}/ifs/${ifs_grid}/${leg_start_date_yyyymmdd}/ICMSHECE3INIT \ + ICMSH${exp_name}INIT + # Other stuff + ln -s ${ini_data_dir}/ifs/rtables/* . + + # Output control (ppt files) + mkdir postins + cp ${ctrl_file_dir}/ppt* postins/ + f_min=$(( ifs_output_freq * ifs_time_step_sec / 60 )) + for t in $(seq $f_min $f_min 1439) + do + hh=$(printf %02d $((t/60)) ) + mm=$(printf %02d $((t%60)) ) + ln -s pptdddddd0000 postins/pptdddddd$hh$mm + done + /bin/ls -1 postins/* > dirlist + + # Run-off file + #ln -s ${ini_data_dir}/ifs/${ifs_grid}/runoff_maps.txt + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # Initial data + ln -s ${ini_data_dir}/nemo/${nem_grid}/temperature_*.nc . + ln -s ${ini_data_dir}/nemo/${nem_grid}/salinity_*.nc . + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # ------------------------------------------------------------------------- + # *** Files needed for OASIS (linked) + # ------------------------------------------------------------------------- + + # Name table file + ln -s ${ini_data_dir}/oasis/cf_name_table.txt + + oas_grid_dir=${ini_data_dir}/oasis/T${ifs_res_hor}-ORCA${nem_res_hor} + + # Run-off file + ln -s ${oas_grid_dir}/runoff_maps.txt + + # Grid definition files + ln -s ${oas_grid_dir}/areas.nc + ln -s ${oas_grid_dir}/grids.nc + ln -s ${oas_grid_dir}/masks.nc + + # Weight files + case ${ifs_res_hor} in + 159) oas_agrd=080 + ;; + 255) oas_agrd=128 + ;; + 511) oas_agrd=256 + ;; + 799) oas_agrd=400 + ;; + *) error "Unsupported horizontal resolution (IFS): ${ifs_res_hor}" + ;; + esac + + case ${nem_res_hor} in + 1) oas_ogrd=O1t0 + ;; + 025) oas_ogrd=Ot25 + ;; + *) error "Unsupported horizontal resolution (NEMO): ${nem_res_hor}" + ;; + esac + + for n in $(seq 0 $((oas_numproc-1))) + do + ln -s \ + ${oas_grid_dir}/rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT.nc \ + rmp_A${oas_agrd}_to_${oas_ogrd}_GAUSWGT_${n}.nc + ln -s \ + ${oas_grid_dir}/rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT.nc \ + rmp_${oas_ogrd}_to_L${oas_agrd}_GAUSWGT_${n}.nc + done + + for f in ${oas_cpl_flds} + do + cp ${oas_grid_dir}/rst/$f . + done + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +# IFS, NEMO, LIM namelist and OASIS namcouple files +. ${ctrl_file_dir}/namelist.ifs-${ifs_grid}.sh > fort.4 +. ${ctrl_file_dir}/namelist.nemo-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice +. ${ctrl_file_dir}/namcouple.sh > namcouple + +# Split OASIS namcouple file (if necessary) +if (( oas_numproc == 1 )) +then + ln -s namcouple namcouple_0 +elif [ -n "$oas_namcut_script" -a -x $oas_namcut_script ] +then + ${oas_namcut_script} ${oas_numproc} namcouple +else + error "Couldn't run script to split the OASIS namcouple file (\$oas_namcut_script)." +fi + +# ----------------------------------------------------------------------------- +# *** IFS climatology data +# ----------------------------------------------------------------------------- +icmclfile=${ini_data_dir}/ifs/${ifs_grid}/climate/ICMCL +tempfile=tmp.$$ + +# Create data for december, the year before the leg starts +grib_set \ +-s dataDate=$(printf "%04d" $((leg_start_date_yyyy-1)))1215 ${icmclfile}-12 \ + ICMCL${exp_name}INIT + +# Create data for all month in the years of the leg +for y in $(seq ${leg_start_date_yyyy} ${leg_end_date_yyyy}) +do + yy=$(printf "%04d" $y) + for m in $(seq 1 12) + do + mm=$(printf "%02d" $m) + grib_set -s dataDate=${yy}${mm}15 ${icmclfile}-${mm} ${tempfile} + cat ${tempfile} >> ICMCL${exp_name}INIT + done +done + +# Create data for january, the year after the leg ends +grib_set -s dataDate=$(printf "%04d" $((leg_end_date_yyyy+1)))0115 ${icmclfile}-01 \ + ${tempfile} +cat ${tempfile} >> ICMCL${exp_name}INIT + +# Clean up +rm -f ${tempfile} + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $(seq 0 $((nem_numproc-1))) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Remove some OASIS files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + rm -f anaisout_* +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- +export DR_HOOK_IGNORE_SIGNALS='-1' +export OASIS3=yes +export OASIS3DEBUGLEVEL=2 + +### --- PLATFORM DEPENDENT CODE --- +ulimit -s unlimited +### --- END of PLATFORM DEPENDENT CODE --- + +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +mpirun -np ${oas_numproc} ${oas_exe_file} : \ + -np ${ifs_numproc} ${ifs_exe_file} -v ecmwf -e ${exp_name} : \ + -np ${nem_numproc} ${nem_exe_file} +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="NODE.001_01 rcf $oas_cpl_flds fort.4 ifs.stat ocean.output" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f NODE.001_01 + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4823c74dc6f56aae9bd92c89ce9193d895a4e464 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim2.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a13d1a731f3268c9352584795e262207c709aa7 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.lim3.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml new file mode 100644 index 0000000000000000000000000000000000000000..48a0484df19f291cfd1a854089099d137a6af474 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/iodef.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh new file mode 100755 index 0000000000000000000000000000000000000000..00706d45b2f9e3b72f682df8bdf7c45bf1e2c8fc --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple-real.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..65ef0c2c8c525ffba283d9269110611c2f1b3888 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namcouple.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ${exp_name} + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T159L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..e46b31c194ee8709c93e8ad0314388a10b144d42 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh @@ -0,0 +1,446 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAMGWWMS + GFLUXLAUN=0.002 + ZLAUNCHP=45000 + LOZPR=true + NGAUSS=4 + GGAUSSB=1.0 +/ +&NAMGWD + GTENLIM=0.02 +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2da9b7b3d693a93e5d9132beefca0259a7abbc5 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.0e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 250 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-09 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 100.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.5 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2234c7d60ee5a1af0baf329c79cf70f4c48e72d --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 120 ! number of EVP subcycling iterations + telast = 9600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..43c245e80e4edd26379b58c9938a8e09f14f1cb3 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 5.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee5a8c37de6c8e91224ea17cf0c25f3ff90cd251 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..1d99d92c2a3b3a69c7b06cec699c7babb7a946f5 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'none' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 1 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 2.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 3.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 1 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 300. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! laplacian operator + ln_dynldf_bilap = .true. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -1.5e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.4 ! surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-15 ! absolute precision of the solver + nn_nmin = 340 ! minimum of iterations for the SOR solver + nn_nmax = 15000 ! maximum of iterations for the SOR solver + nn_nmod = 5 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.975 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh new file mode 100755 index 0000000000000000000000000000000000000000..7a7dbb3baa4d6febd89342e61fb4ce9608330751 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh @@ -0,0 +1,412 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!----------------------------------------------------------------------- +&namrun ! Parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! Job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! Start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! Restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! Suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! Suffix of ocean restart name (output) + nn_istate = 0 ! Output the initial state (1) or not (0) + nn_stock = 0 ! Frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! Frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) +/ +!----------------------------------------------------------------------- +&namzgr ! Vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namdom ! Space and time domain (bathymetry, mesh, timestep) +!----------------------------------------------------------------------- + nn_bathy = 1 ! Compute (=0) or read (=1) the bathymetry file + nn_closea = 0 ! Remove (=0) or keep (=1) closed seas and lakes (ORCA) + nn_msh = 0 ! Create (=1) a mesh file or not (=0) + ! + rn_e3zps_min= 25. ! Partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.2 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! Flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2") + ln_dm2dc = .false. ! Daily mean to diurnal cycle on short wave + ln_rnf = .false. ! Runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! Coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! SEND +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! RECEIVE +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! Bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! Runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_rnf_emp = .false. ! Runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! Specific treatment at rivers mouths + rn_hrnf = 0.e0 ! Depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! Value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! Albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! Cloud correction to snow and ice albedo + rn_albice = 0.53 ! Albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! Coefficients for linear interpolation used to + rn_alphc = 0.65 ! Compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ +!----------------------------------------------------------------------- +&namlbc ! Lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 : free slip + ! 0 < shlat < 2 : partial slip + ! shlat = 2 : no slip + ! 2 < shlat : strong slip +/ +!----------------------------------------------------------------------- +&namcla ! Cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! Advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&nambfr ! Bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! Type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! Bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! Bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! Bottom turbulent kinetic energy background (m2/s2) +/ +!----------------------------------------------------------------------- +&nambbc ! Bottom temperature boundary condition +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&nambbl ! Bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! Diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! Advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! Lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! Advective bbl coefficient [s] +/ +!----------------------------------------------------------------------- +&nameos ! Ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! Type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! Thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! Saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! Advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! Lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! Laplacian operator + ln_traldf_bilap = .false. ! Bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! Iso-level + ln_traldf_hor = .false. ! Horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! Iso-neutral (require "key_ldfslp") +! ! Coefficient + rn_aht_0 = 300. ! Horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! Background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! Eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namdyn_adv ! Formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! Vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! Flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! Flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! Option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! Enstrophy conserving scheme + ln_dynvor_ens = .false. ! Energy conserving scheme + ln_dynvor_mix = .false. ! Mixed scheme + ln_dynvor_een = .true. ! Energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! Weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! Hydrostatic pressure gradient: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +&namdyn_ldf ! Lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! Laplacian operator + ln_dynldf_bilap = .true. ! Bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! Iso-level + ln_dynldf_hor = .true. ! Horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! Iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! Horizontal laplacian eddy viscosity [m2/s] + rn_ahm_0_blp = -1.5e11 ! Horizontal bilaplacian eddy viscosity [m4/s] + rn_ahmb_0 = 0. ! Background eddy viscosity for ldf_iso [m2/s] +/ +!----------------------------------------------------------------------- +&namzdf ! Vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! Vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! Vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! Profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! Horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! Enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! Evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! Evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! Frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! Time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! Number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! Richardson number dependent vertical diffusion ("key_zdfric") +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! Maximum value of the vertical viscosity + rn_alp = 5. ! Coefficient of the parameterization + nn_ric = 2 ! Coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! Turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! Coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! Coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! Coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! Minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! Surface minimum value of tke [m2/s2] + nn_mxl = 3 ! Mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! Surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! Surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! Coef. associated to Langmuir cells + nn_etau = 1 ! Penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! Fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! Type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ + ln_kpprimix = .true. ! Shear instability mixing + rn_difmiw = 1.0e-04 ! Constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! Constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! Local Richardson Number limit for shear instability + rn_difri = 0.0050 ! Maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! Maximum mixing in interior convection [m2/s] + nn_avb = 0 ! Horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! Constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! Double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! Maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! Heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namsol ! Elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 2 ! Elliptic solver: =1 Preconditioned conjugate gradient (PCG) + ! =2 Successive-over-relaxation (SOR) + ! =3 FETI (fet) ("key_feti") + ! =4 SOR with extra outer halo + nn_sol_arp = 0 ! Absolute/relative (0/1) precision convergence test + nn_nmin = 340 ! Minimum of iterations for the SOR solver + nn_nmax = 15000 ! Maximum of iterations for the SOR solver + nn_nmod = 5 ! Frequency of test for the SOR solver + rn_eps = 1.e-15 ! Absolute precision of the solver + rn_resmax = 1.e-10 ! Absolute precision for the SOR solver + rn_sor = 1.975 ! Optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi") +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! MPI send/recieve type ='S', 'B', or 'I' for standard send, + ! Buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! Size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni Number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj Number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij Number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! Trends control print (expensive!) + nn_print = 0 ! Level of print (0 no extra print) + nn_ictls = 0 ! Start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! End i indice of control sum multi processor runs + nn_jctls = 0 ! Start j indice of control over a subdomain) + nn_jctle = 0 ! End j indice of control + nn_isplt = 1 ! Number of processors in i-direction + nn_jsplt = 1 ! Number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ +!----------------------------------------------------------------------- +&namtrd ! Diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! Time step frequency dynamics and tracers trends + nn_ctls = 0 ! Control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! Suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! Suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! Restart for ML diagnostics + ln_trdmld_instant = .false. ! Flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! Float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! Float restart (T) or not (F) + nn_writefl = 75 ! Frequency of writing in float output file + nn_stockfl = 5475 ! Frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! Trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- +! Use defaults +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..b07b13ae3cdbe85f55b0f6ce8063fa2b64ac8f5f --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -100.e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..a5d0ecc5a4290f0ad0de6a5a586262613c4acd4c --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh @@ -0,0 +1,854 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ +!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! +sn_wndi = 'u10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'u10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Uwnd' +sn_wndj = 'v10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'v10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Vwnd' +sn_qsr = 'radsw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radsw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_qlw = 'radlw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radlw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tair = 't2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 't2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_humi = 'q2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'q2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_prec = 'precip_DFS4.3_${leg_start_date_yyyy}' , -1, 'precip', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_snow = 'snow_DFS4.3_${leg_start_date_yyyy}' , -1, 'snow', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tdif = 'taudif_core' , 24, 'taudif', .false., .true., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = 0. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 new file mode 100644 index 0000000000000000000000000000000000000000..34ea69429f6d2534aa29c06262eadbc71e48fa5c --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/ppt0000000000 @@ -0,0 +1,32 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 53, + MFPPHY = 129,172,031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 new file mode 100644 index 0000000000000000000000000000000000000000..ffd51cca941e5b47fe4cdcf665905e29ea970af4 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/pptdddddd0000 @@ -0,0 +1,32 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 51, + MFPPHY = 031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def new file mode 100644 index 0000000000000000000000000000000000000000..3a6f0e234de9c8173fb30784d1fad6c72f8b1330 --- /dev/null +++ b/deploy/patches/ithaca/ecearth/v3.0.1/build-config/setup/ctrl/xmlio_server.def @@ -0,0 +1,35 @@ +! xmlio_server namelist +! +! using_server: .TRUE.(.FALSE.) to use(bypass) the io_server +! using_oasis : .TRUE.(.FALSE.) if nemo is coupled through OASIS +! client_id : used only for OASIS, NEMO id in the namecouple +! server_id : used only for OASIS, io_server id in the namecouple +! +&coupling_param + using_server = .FALSE. + using_oasis = .TRUE. + client_id = 'nemo.x' + server_id = 'ionemo' +/ + +! global_mpi_buffer_size: size in Mo of the MPI buffer used by the io_server +&mpi_param + global_mpi_buffer_size = 512 +/ + +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings +!!====================================================================== +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings + ! (benign if "key_netcdf4" is not used) +!----------------------------------------------------------------------- + nn_nchunks_i = 4 ! number of chunks in i-dimension + nn_nchunks_j = 4 ! number of chunks in j-dimension + nn_nchunks_k = 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .TRUE. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/compilation.cmd b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..7ab1258a1b12154254bbb8a21c424c6b39b0d036 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/compilation.cmd @@ -0,0 +1,378 @@ +#!/bin/bash + +# nohup ./compilation.cmd >& compiation.log & + +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +set -xuve +date + +MPI=/share/mpi/openmpi/1.6/ics2012.0.032 +LAPACK=/share/compilers/ics/2013.0.028/mkl +SZIP=/share/libs/szip/2.1 +HDF5=/share/libs/hdf5/1.8.10 +NetCDF=/share/libs/netcdf/4.1.3 +GribAPI=/scratch/cfu/opt/grib_api-1.9.9/intel-13 +GribEX=/scratch/cfu/opt/gribex_000370/intel-13 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=ithaca-intel-openmpi +CONFIG=config.xml + +cat > $CONFIG < + + + + + Nemo 3.3.1 config file + + nemo-3.3.1/ARCH/arch-ecconf.fcm + + + + + + IFS/36r4 makefile configuration + + ifs-36r4/Makefile.d/Makefile.config.ecconf + + + + + + OASIS makefile configuration + + oasis3/util/make_dir/Makefile.d/Makefile.config.ecconf + + + + + + + HOST: ic3.cat + ARCH: linux_x86_64 + CPU MODEL: Intel Xeon X5570 @ 2.93GHz + USER: masif + COMPILER: Intel (ifort and icc 12.1) + MPI: OpenMPI (1.6) + BLAS/LAPACK: Intel MKL + + + + Base directory for EC-Earth sources + PATH + $ECEARTH + + + + MPI base directory + PATH + $MPI + + + + MPI include directory relative to base dir + PATH + include + + + + MPI lib directory relative to base dir + PATH + lib + + + + MPI libraries (without -l prefix) + STRING + mpi_f77 mpi + + + + LAPACK base directory + PATH + $LAPACK + + + + LAPACK lib directory relative to base dir + PATH + lib/intel64 + + + + LAPACK libraries (without -l prefix) + STRING + mkl_intel_lp64 mkl_core mkl_sequential + + + + NetCDF base directory + PATH + $NetCDF + + + + NetCDF include directory relative to base dir + PATH + include + + + + NetCDF lib directory relative to base dir + PATH + lib + + + + NetCDF libraries (without -l prefix) + STRING + netcdf netcdff + + + + GRIB API base directory + PATH + $GribAPI + + + + GRIB API include directory relative to base dir + PATH + include + + + + GRIB API lib directory relative to base dir + PATH + lib + + + + GRIB_API libraries (without -l prefix) + STRING + grib_api_f90 grib_api + + + + GRIBEX base directory + PATH + $GribEX + + + + GRIBEX lib directory relative to base dir + PATH + lib + + + + GRIBEX libraries (without -l prefix) + STRING + gribexR64 + + + + Make command (GNU make >3.81 needed!) + STRING + make + + + + F90 Compiler + STRING + ifort + + + + General F90 flags for compiling + STRING + -O2 -g -traceback -vec-report0 -r8 + + + + C Compiler + STRING + icc + + + + General C flags for compiling + STRING + -O2 -g -traceback + + + + Linker + STRING + ifort + + + + General flags for linking + STRING + -O2 -g -traceback -L${HDF5}/lib -lhdf5 -lhdf5_hl -L${SZIP}/lib -lsz + + + + Command for building libraries from object files (usually ar) + STRING + ar + + + + Flags for library building command (When using ar: include u) + STRING + curv + + + + C preprocessor command + STRING + icc + + + + C preprocessor flags + STRING + -P -C + + + + More F90 flags for Oasis + STRING + -132 -check pointers -check uninit + + + + More CPP/FPP macros for Oasis + STRING + use_oasis_para + + + + More LD flags for Oasis + STRING + + + + + More F90 flags for Nemo + STRING + -check pointers -check uninit + + + + More LD flags for Nemo + STRING + + + + + Preprocessor defs for IFS sources + STRING + linux LINUX LITTLE LITTLE_ENDIAN POINTER_64 BLAS + + + + More F90 flags for ifs/ifsaux + STRING + + + + + Additional Fortran compiler flags for EMOSLIB + STRING + -i4 + + + + Fortran preprocessor defs for EMOSLIB + STRING + linux LITTLE_ENDIAN POINTER_64 INTEGER_IS_INT REAL_8 REAL_BIGGER_THAN_INTEGER + + + + C preprocessor defs for EMOSLIB + STRING + \$(EMOS_FPPDEFS) FOPEN64 + + + + F90 dependency generator + STRING + \$(ECEARTH_SRC_DIR)/util/makedepf90/bin/makedepf90 + + + + + +EOF +cat $CONFIG + +# MAKEDEP90 Compilation +# ===================== + +if [ ! -d makedepf90-2.8.8 ]; then + tar -zxvf ../util/makedepf90/src/makedepf90-2.8.8.tar.gz + cd makedepf90-2.8.8 + ./configure --prefix=$ECEARTH/util/makedepf90/ + make + make install + cd - +fi + +# EC-CONF Usage +# ============= + +cd .. +$ECEARTH/util/ec-conf/ec-conf --platform $PLATFORM build-config/$CONFIG +BA=ecconf # Build Arch +cd - + +# OASIS Compilation +# ================= + +cd $ECEARTH/oasis*/util/make_dir/ +#make realclean -f TopMakefileOasis3 BUILD_ARCH=$BA +make -f TopMakefileOasis3 BUILD_ARCH=$BA + +# NEMO Compilation +# ================ + +cd $ECEARTH/nemo*/CONFIG/ +for f in $(ls -1 */cpp*.fcm); do + cat $f + cat $f | sed -e 's/key_coupled //g' -e 's/key_oasis3 //g' > $f.tmp + mv $f.tmp $f + cat $f +done + +nemo_configs=`ls -1 | grep ORCA` +#set +e +# ./makenemo clean +#set -e +for nemo_config in $nemo_configs; do + ./makenemo -m $BA -n $nemo_config -j 8 +done + +# IFS Compilation +# =============== + +#cd $ECEARTH/ifs*/ +#make clean BUILD_ARCH=$BA +#make realclean BUILD_ARCH=$BA +#make dep-clean BUILD_ARCH=$BA +#make -j 8 BUILD_ARCH=$BA lib +#make BUILD_ARCH=$BA master + +date diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/cp.cmd b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..33f66b1035d558c43aeb2f6c8f8a3ebb77d49162 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/cp.cmd @@ -0,0 +1,24 @@ +#!/bin/bash + +bin=bin + +while getopts b: option +do + case $option in + b) bin=$OPTARG;; + \?) exit 1;; + esac +done + +set -xuve + +bin=../../$bin +mkdir -p $bin +ls -lrt $bin + +for nemo_config in `ls -1 ../nemo*/CONFIG | grep ORCA`; do + mkdir -p $bin/$nemo_config + cp -pf ../nemo*/CONFIG/$nemo_config/BLD/bin/*.exe $bin/$nemo_config +done + +ls -lrt $bin diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/run-oce.cmd b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/run-oce.cmd new file mode 100755 index 0000000000000000000000000000000000000000..072e68b76496c8df1fdf10a4de1554b12992855a --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/run-oce.cmd @@ -0,0 +1,334 @@ +#!/bin/bash +############################################################################### +# RUN EC_EARTH +############################################################################### +#$ -S /bin/sh +#$ -N run-oce +#$ -V +#$ -cwd +#$ -pe orte 16 +# + +# modules setup +source /opt/modules/init/bash +module load intel/13.0.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib +module load szip/2.1 +module load hdf5/1.8.10 +module load netcdf/4.1.3 + +set -xuve + +# ============================================================================= +# *** BEGIN User configuration +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** General configuration +# ----------------------------------------------------------------------------- +# Experiment name (exactly 4 letters!) +exp_name=ECE3 + +# Simulation start and end date. Use any (reasonable) syntax you want. +run_start_date="1990-01-01" +run_end_date="${run_start_date} + 5 days" + +# Set $force_run_from_scratch to 'true' if you want to force this run to start +# from scratch, possibly ignoring any restart files present in the run +# directory. Leave set to 'false' otherwise. +# NOTE: If set to 'true' the run directory $run_dir is cleaned! +force_run_from_scratch=false + +# Resolution +nem_grid=ORCA1L46 +lim=LIM3 + +# Restart frequency. Use any (reasonable) number and time unit you want. +# For runs without restart, leave this variable empty +rst_freq="1 month" + +# Directories +ecearth_base_dir=/scratch/cfu/models/nemo/ece-v3.0.1 +start_dir=${PWD} +ctrl_file_dir=${ecearth_base_dir}/setup/ctrl +run_dir=/scratch/cfu/$USER/test/run_${nem_grid}_oce_${JOB_ID} +ini_data_dir=${ecearth_base_dir}/inidata +bin_dir=${ecearth_base_dir}/bin + +# Architecture +build_arch=ecconf + +# This file is used to store information about restarts +ece_info_file="ece.info" + +# ----------------------------------------------------------------------------- +# *** Read platform dependent configuration +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# *** NEMO/LIM configuration +# ----------------------------------------------------------------------------- + +nem_version=3.3.1 +lim_version=$(echo $lim | cut -d 'M' -f 2) + +case ${nem_grid} in + ORCA1*) nem_time_step_sec=3600 ;; + ORCA025*) nem_time_step_sec=1200 ;; + *) error "Unsupported grid type: ${nem_grid}" + ;; +esac +lim_time_step_sec=3600 + +nem_res_hor=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\1:') +nem_res_ver=$(echo ${nem_grid} | sed 's:ORCA\([0-9]*\)L\([0-9]*\):\2:') + +nem_exe_file=${bin_dir}/${nem_grid}_${lim}/nemo.exe + +nem_numproc=16 + +advsch=tvd +rstctl=1 + + +# ============================================================================= +# *** END of User configuration +# ============================================================================= + +# ============================================================================= +# *** This is where the code begins ... +# ============================================================================= + +# ----------------------------------------------------------------------------- +# *** Define some helper functions +# ----------------------------------------------------------------------------- + +function info +{ + echo "*II* $@" +} + +function error +{ + echo "*EE* $@" + exit 1 +} + +function cleanup +{ + # Cleanup function, triggered by the traps set in the run-script + set +u + + if [ -r ${tempfile} ] + then + rm -f ${tempfile} + fi + + if [ -r ${stdout_file} -a -d ${run_dir} ] + then + cp ${stdout_file} ${run_dir} + fi +} + +# ----------------------------------------------------------------------------- +# *** Make sure to clean up on exit +# ----------------------------------------------------------------------------- + +trap 'cleanup' EXIT SIGHUP SIGINT SIGTERM + +# ----------------------------------------------------------------------------- +# *** Create the run dir if necessary and go there +# Everything is done from here. +# ----------------------------------------------------------------------------- +if [ ! -d ${run_dir} ] +then + mkdir -p ${run_dir} +fi +cd ${run_dir} + +# ----------------------------------------------------------------------------- +# *** Determine the time span of this run and whether it's a restart leg +# ----------------------------------------------------------------------------- + +# Regularise the format of the start and end date of the simulation +run_start_date=$(date -uR -d "${run_start_date}") +run_end_date=$(date -uR -d "${run_end_date}") + +# Check for restart information file and set the current leg start date +# Ignore restart information file if force_run_from_scratch is true +if ! $force_run_from_scratch && [ -r ${ece_info_file} ] +then + leg_is_restart=true + . ./${ece_info_file} + leg_start_date=${leg_end_date} + leg_number=$((leg_number+1)) +else + leg_is_restart=false + leg_start_date=${run_start_date} + leg_number=1 +fi + +# Compute the end date of the current leg +if [ -n "${rst_freq}" ] +then + leg_end_date=$(date -uR -d "${leg_start_date} + ${rst_freq}") +else + leg_end_date=${run_end_date} +fi + +if [ $(date -d "${leg_end_date}" +%s) -gt $(date -d "${run_end_date}" +%s) ] +then + leg_end_date=${run_end_date} +fi + +# Some time variables needed later +leg_length_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${leg_start_date}" +%s) )) +leg_start_sec=$(( $(date -d "${leg_start_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_end_sec=$(( $(date -d "${leg_end_date}" +%s) - $(date -d "${run_start_date}" +%s) )) +leg_start_date_yyyymmdd=$(date -u -d "${leg_start_date}" +%Y%m%d) +leg_start_date_yyyy=$(date -u -d "${leg_start_date}" +%Y) +leg_end_date_yyyy=$(date -u -d "${leg_end_date}" +%Y) + +# Check whether there's actually time left to simulate - exit otherwise +if [ ${leg_length_sec} -le 0 ] +then + info "Leg start date equal to or after end of simulation." + info "Nothing left to do. Exiting." + exit 0 +fi + +# ----------------------------------------------------------------------------- +# *** Prepare the run directory for a run from scratch +# ----------------------------------------------------------------------------- +if ! $leg_is_restart +then + # ------------------------------------------------------------------------- + # *** This is no restart, hence, clean the run dir and link the executables + # ------------------------------------------------------------------------- + rm -fr ${run_dir}/* + + ln -s ${nem_exe_file} + + # ------------------------------------------------------------------------- + # *** Files needed for NEMO (linked) + # ------------------------------------------------------------------------- + + # Various stuff + ln -s ${ini_data_dir}/nemo/${nem_grid}/bathy_meter.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/coordinates.nc + ln -s ${ini_data_dir}/nemo/${nem_grid}/ahmcoef + + # Initial data + ln -s ${ini_data_dir}/nemo/${nem_grid}/temperature_*.nc . + ln -s ${ini_data_dir}/nemo/${nem_grid}/salinity_*.nc . + + # IOM files + ln -s ${ctrl_file_dir}/xmlio_server.def + ln -s ${ctrl_file_dir}/iodef.xml + + # NEMO forcing files + case ${nem_res_hor} in + 1) nem_forcing=${ini_data_dir}/nemo/${nem_grid}/climate/DFS4.3 + if [ ${leg_start_date_yyyy} -le 1978 ]; then + ln -s ${nem_forcing}/precip/precip_DFS4.3_1958_to_1978.nc precip_DFS4.3_${leg_start_date_yyyy}.nc + else + ln -s ${nem_forcing}/precip/precip_DFS4.3_${leg_start_date_yyyy}.nc + fi + + if [ ${leg_start_date_yyyy} -le 1978 ]; then + ln -s ${nem_forcing}/snow/snow_DFS4.3_1958_to_1978.nc snow_DFS4.3_${leg_start_date_yyyy}.nc + else + ln -s ${nem_forcing}/snow/snow_DFS4.3_${leg_start_date_yyyy}.nc + fi + + if [ ${leg_start_date_yyyy} -le 1983 ]; then + ln -s ${nem_forcing}/radlw/radlw_DFS4.3_1958_to_1983.nc radlw_DFS4.3_${leg_start_date_yyyy}.nc + else + ln -s ${nem_forcing}/radlw/radlw_DFS4.3_${leg_start_date_yyyy}.nc + fi + + if [ ${leg_start_date_yyyy} -le 1983 ]; then + ln -s ${nem_forcing}/radsw/radsw_DFS4.3_1958_to_1983.nc radsw_DFS4.3_${leg_start_date_yyyy}.nc + else + ln -s ${nem_forcing}/radsw/radsw_DFS4.3_${leg_start_date_yyyy}.nc + fi + + ln -s ${nem_forcing}/q2/q2_DFS4.3_${leg_start_date_yyyy}_sht.nc* + ln -s ${nem_forcing}/t2/t2_DFS4.3_${leg_start_date_yyyy}_sht.nc + ln -s ${nem_forcing}/u10/u10_DFS4.3_${leg_start_date_yyyy}_sht.nc + ln -s ${nem_forcing}/v10/v10_DFS4.3_${leg_start_date_yyyy}_sht.nc + ln -s ${nem_forcing}/weights/weight_bicub_320x161-ORCA1.nc + ln -s ${nem_forcing}/weights/weight_bilin_320x161-ORCA1.nc + ln -s ${nem_forcing}/weights/weight_bilin_192x94-ORCA1.nc + ;; + *) error "Unsupported horizontal resolution (NEMO-standalone): ${nem_res_hor}" + ;; + esac + +fi # ! $leg_is_restart + +# ----------------------------------------------------------------------------- +# *** Create some control files +# ----------------------------------------------------------------------------- + +. ${ctrl_file_dir}/namelist.nemo-standalone-${nem_grid}.sh > namelist +. ${ctrl_file_dir}/namelist.lim${lim_version}-ORCA${nem_res_hor}.sh > namelist_ice + +# ----------------------------------------------------------------------------- +# *** Link the appropriate NEMO restart files of the previous leg +# ----------------------------------------------------------------------------- +if $leg_is_restart +then + ns=$(printf %08d $(( leg_start_sec / nem_time_step_sec ))) + for n in $(seq 0 $((nem_numproc-1))) + do + np=$(printf %04d ${n}) + ln -fs ${exp_name}_${ns}_restart_oce_${np}.nc restart_oce_${np}.nc + ln -fs ${exp_name}_${ns}_restart_ice_${np}.nc restart_ice_${np}.nc + done +fi + +# ----------------------------------------------------------------------------- +# *** Start the run +# ----------------------------------------------------------------------------- + +# Use the launch function from the platform configuration file +t1=$(date +%s) + +### --- PLATFORM DEPENDENT CODE --- +mpirun -np ${nem_numproc} ${nem_exe_file} +### --- END of PLATFORM DEPENDENT CODE --- + +t2=$(date +%s) + +tr=$(date -d "0 -$t1 sec + $t2 sec" +%T) + +# ----------------------------------------------------------------------------- +# *** Write the restart control file +# ----------------------------------------------------------------------------- +echo "#" | tee -a ${ece_info_file} +echo "# Finished leg at `date '+%F %T'` after ${tr} (hh:mm:ss)" \ + | tee -a ${ece_info_file} +echo "leg_number=${leg_number}" | tee -a ${ece_info_file} +echo "leg_start_date=\"${leg_start_date}\"" | tee -a ${ece_info_file} +echo "leg_end_date=\"${leg_end_date}\"" | tee -a ${ece_info_file} + +# ----------------------------------------------------------------------------- +# *** Platform independent finalising of the run +# ----------------------------------------------------------------------------- +# Rename run-files so they are not overwritten in the next leg +filesToCopy="ocean.output" +for file in ${filesToCopy} +do + cp ${file} ${file}.$(printf %03d $((leg_number))) +done +rm -f ocean.output + +# ----------------------------------------------------------------------------- +# *** Platform dependent finalising of the run +# ----------------------------------------------------------------------------- +finalise + +exit 0 diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim2.xml b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4823c74dc6f56aae9bd92c89ce9193d895a4e464 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim2.xml @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim3.xml b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim3.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a13d1a731f3268c9352584795e262207c709aa7 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.lim3.xml @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.xml b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.xml new file mode 100644 index 0000000000000000000000000000000000000000..48a0484df19f291cfd1a854089099d137a6af474 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/iodef.xml @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple-real.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple-real.sh new file mode 100755 index 0000000000000000000000000000000000000000..00706d45b2f9e3b72f682df8bdf7c45bf1e2c8fc --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple-real.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ECE3 + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} ${atm_grid/A/L} LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple.sh new file mode 100755 index 0000000000000000000000000000000000000000..65ef0c2c8c525ffba283d9269110611c2f1b3888 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namcouple.sh @@ -0,0 +1,279 @@ +#!/bin/sh + +cpl_freq_sec=$(( cpl_freq_hrs * 3600 )) + +lag_atm_oce=${ifs_time_step_sec} +lag_oce_atm=${nem_time_step_sec} + +case ${ifs_res_hor} in + 159) atm_grid=A080 + ;; + 255) atm_grid=A128 + ;; + 511) atm_grid=A256 + ;; + 799) atm_grid=A400 + ;; + *) echo "*EE* Unsupported horizontal resolution (IFS): ${ifs_res_hor}" 1>&2 + exit 1 + ;; +esac + +case ${nem_res_hor} in + 1) oce_grid=O1t0 + ;; + 025) oce_grid=Ot25 + ;; + *) echo "*EE* Unsupported horizontal resolution (NEMO): ${nem_res_hor}" 1>&2 + exit 1 + ;; +esac + +cat << EOF +# =============== + \$JOBNAME + ${exp_name} + \$END +# --------------- + \$CHANNEL + MPI1 NOBSEND + ${ifs_numproc} ${ifs_numproc} + ${nem_numproc} ${nem_numproc} + \$END +# --------------- + \$NBMODEL + 2 ifsmod oceanx 99 99 + \$END +# --------------- + \$NFIELDS + 21 21 + \$END +# --------------- + \$SEQMODE + 1 + \$END +# --------------- + \$RUNTIME + ${leg_length_sec} + \$END +# --------------- + \$INIDATE + ${leg_start_date_yyyymmdd} + \$END +# --------------- + \$MODINFO + NOT + \$END +# --------------- + \$NLOGPRT + 2 + \$END +# --------------- + \$CALTYPE + 1 + \$END +# =============== + \$STRINGS +# =============== +# Fields send from Atmosphere to Ocean +# =============== +# --------------- Field 1: Stress 1 (ocean) --------------- + TAUX_OCE O_OTaux1 50 ${cpl_freq_sec} 4 TAUX_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 2: Stress 2 (ocean) --------------- + TAUY_OCE O_OTauy1 51 ${cpl_freq_sec} 4 TAUY_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 3: Stress 1 (ice) --------------- + TAUX_ICE O_ITaux1 52 ${cpl_freq_sec} 4 TAUX_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 4: Stress 2 (ice) --------------- + TAUY_ICE O_ITauy1 53 ${cpl_freq_sec} 4 TAUY_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 5: Surface solar radiation (ocean) + QS___OCE O_QsrOce 251 ${cpl_freq_sec} 5 QS___OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 6: Surface solar radiation (ice) + QS___ICE O_QsrIce 251 ${cpl_freq_sec} 5 QS___ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_qs_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 7: Non-solar heat flux (ocean) + QNS__OCE O_QnsOce 249 ${cpl_freq_sec} 4 QNS__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 8: Non-solar heat flux (ice) + QNS__ICE O_QnsIce 249 ${cpl_freq_sec} 4 QNS__ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 9: Precip (rain) + PRCP_LIQ OTotRain 292 ${cpl_freq_sec} 4 PRCP_LIQ EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 10: Precip (snow) + PRCP_SOL OTotSnow 328 ${cpl_freq_sec} 4 PRCP_SOL EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 11: Evap (total) + EVAP_TOT OTotEvap 452 ${cpl_freq_sec} 4 EVAP_TOT EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 12: Evap (ice) + EVAP_ICE OIceEvap 41 ${cpl_freq_sec} 4 EVAP_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CONSERV CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 13: DQNSDT (ice) --------------- + DQDT_ICE O_dQnsdT 35 ${cpl_freq_sec} 3 DQDT_ICE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CHECKIN SCRIPR CHECKOUT + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 14: RUNOFF --------------- + RNF__OCE O_Runoff 32 ${cpl_freq_sec} 5 RNF__OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# --------------- Field 15: CALVING --------------- + CALV_OCE OCalving 36 ${cpl_freq_sec} 5 CALV_OCE EXPORTED + ${atm_grid} ${oce_grid} LAG=${lag_atm_oce} + P 0 P 2 + CORRECT CHECKIN SCRIPR CONSERV CHECKOUT + ${oas_rnf_fluxcorr} 0 + INT=1 + GAUSWGT D SCALAR LATITUDE 90 9 2.0 + GLOBAL + INT=1 +# =============== +# Fields send from Ocean to Atmosphere +# =============== +# --------------- Field 1: SST --------------- + O_SSTSST A_SSTSST 1 ${cpl_freq_sec} 5 O_SSTSST EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR MASKP CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + 999999. + INT=1 +# --------------- Field 2: Ice temperature --------------- + O_TepIce A_TepIce 34 ${cpl_freq_sec} 4 O_TepIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 3: Ice fraction --------------- + O_AlbIce A_AlbIce 31 ${cpl_freq_sec} 4 O_AlbIce EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 4: Ice albedo --------------- + OIceFrac AIceFrac 17 ${cpl_freq_sec} 4 OIceFrac EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 5: Ice thickness --------------- + O_IceTck A_IceTck 45 ${cpl_freq_sec} 4 O_IceTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- Field 6: Snow thickness (ice) --------------- + O_SnwTck A_SnwTck 46 ${cpl_freq_sec} 4 O_SnwTck EXPORTED + ${oce_grid} $(echo ${atm_grid} | sed 's/A/L/') LAG=${lag_oce_atm} + P 2 P 0 + LOCTRANS CHECKIN SCRIPR CHECKOUT + AVERAGE + INT=1 + GAUSWGT LR SCALAR LATITUDE 90 9 2.0 + INT=1 +# --------------- + \$END +# =============== +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..e46b31c194ee8709c93e8ad0314388a10b144d42 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T255L91.sh @@ -0,0 +1,446 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAMGWWMS + GFLUXLAUN=0.002 + ZLAUNCHP=45000 + LOZPR=true + NGAUSS=4 + GGAUSSB=1.0 +/ +&NAMGWD + GTENLIM=0.02 +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T511L91.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh new file mode 100755 index 0000000000000000000000000000000000000000..9fb9bfb5a0aecaab86e8f8cd4dafe9f76c930b29 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.ifs-T799L62.sh @@ -0,0 +1,436 @@ +#!/bin/sh + +cat << EOF +&NAMRES + NFRRES = 1, + NRESTS = -1,-$(( leg_end_sec / 3600 )), +/ +&NAERAD + NRPROMA = 0, + LCMIP5 = ${ifs_cmip5}, + CMIP5DATADIR = "${ini_data_dir}/ifs/cmip5-data", + NCMIP5FIXYR = ${ifs_ncmip5fixyr}, + NRCP = ${ifs_cmip5_rcp}, + LHVOLCA = ${ifs_volcanoes}, +/ +&NAEPHY + LEPHYS = TRUE, + LEVDIF = TRUE, + LESURF = TRUE, + LECOND = TRUE, + LECUMF = TRUE, + LEPCLD = TRUE, + LEEVAP = TRUE, + LEVGEN = TRUE, + LESSRO = TRUE, + LECURR = FALSE, + LEGWDG = TRUE, + LEGWWMS = TRUE, + LEOZOC = TRUE, + LEQNGT = TRUE, + LERADI = TRUE, + LERADS = TRUE, + LESICE = TRUE, + LEO3CH = FALSE, + LEDCLD = TRUE, + LDUCTDIA = FALSE, + LWCOU = FALSE, + LWCOU2W = TRUE, + NSTPW = 1, + RDEGREW = 1.5, + RSOUTW = -81.0, + RNORTW = 81.0, +/ +&NAMPAR1 + LSPLIT = TRUE, + NFLDIN = 0, + NFLDOUT = 50, + NSTRIN = 1, +/ +&NAMPAR0 + LSTATS = TRUE, + LDETAILED_STATS= FALSE, + LSYNCSTATS = FALSE, + LSTATSCPU = FALSE, + NPRNT_STATS = 32, + LBARRIER_STATS = FALSE, + LBARRIER_STATS2= FALSE, + NPROC = ${ifs_numproc}, + NOUTPUT = 1, + MP_TYPE = 2, + MBX_SIZE = 128000000, +/ +&NAMDYNCORE + LAQUA = FALSE, +/ +&NAMDYN + TSTEP = ${ifs_time_step_sec}.0, + LMASCOR = TRUE, + LMASDRY = TRUE, +/ +&NAMNMI + LASSI = FALSE, +/ +&NAMIOS + CFRCF = "rcf", + CIOSPRF = "srf", +/ +&NAMFPG +/ +&NAMCT0 + LNHDYN = FALSE, + NCONF = 1, + CTYPE = "fc", + CNMEXP = "test", + CFCLASS = "se", + LECMWF = TRUE, + LARPEGEF = FALSE, + LFDBOP = FALSE, + LFPOS = TRUE, + LSMSSIG = FALSE, + LSPRT = TRUE, + LSLAG = TRUE, + LTWOTL = TRUE, + LVERTFE = TRUE, + LAPRXPK = TRUE, + LOPT_SCALAR = TRUE, + LPC_FULL = FALSE, + LPC_CHEAP = FALSE, + LPC_NESC = FALSE, + LPC_NESCT = FALSE, + LSLPHY = TRUE, + LRFRIC = FALSE, + LFPSPEC = FALSE, + N3DINI = 0, + NSTOP = $(( leg_end_sec / ifs_time_step_sec )), + NFRDHP = ${ifs_ddh_freq} + NFRSDI = ${ifs_di_freq}, + NFRGDI = ${ifs_di_freq}, + NFRPOS = ${ifs_output_freq}, + NFRHIS = ${ifs_output_freq}, + NFRMASSCON = ${ifs_output_freq}, + NPOSTS = 0, + NHISTS = 0, + NMASSCONS = 0, + NFRCO = $(( cpl_freq_hrs * 3600 / ifs_time_step_sec )), + NFRDHFZ = 48, + NDHFZTS = 0, + NDHFDTS = 0, + LWROUTLAST = ${ifs_lastout}, + CFDIRLST = "dirlist", + CNPPATH = "postins", +/ +&NAMDDH + BDEDDH(1,1) = 4.0,1.0,0.0,50.0,0.0,49.0, + NDHKD = 120, + LHDZON = FALSE, + LHDEFZ = FALSE, + LHDDOP = FALSE, + LHDEFD = FALSE, + LHDGLB = TRUE, + LHDPRG = TRUE, + LHDHKS = TRUE, +/ +&NAMGFL + NERA40 = 0, + YQ_NL%LGP = TRUE, + YQ_NL%LSP = FALSE, + YL_NL%LGP = TRUE, + YI_NL%LGP = TRUE, + YA_NL%LGP = TRUE, + YO3_NL%LGP = FALSE, + YQ_NL%LGPINGP = TRUE, +/ +&NAMFPC + CFPFMT = "MODEL", + NFP3DFS = 5, + NFP3DFP = 7, + NFP3DFT = 1, + NFP3DFV = 1, + MFP3DFS = 130,135,138,155,133, + MFP3DFP = 129,130,135,138,155,157,133, + MFP3DFT = 60, + MFP3DFV = 133, + NFP2DF = 2, + MFP2DF = 129,152, + NFPPHY = 78, + MFPPHY = 31,32,33,34,35,36,37,38,39,40,41,42,44,45,49,50,57,58,59,78,79,129,136,137,139,141,142,143,144,145,146,147,148,151,159,164,165,166,167,168,169,170,172,175,176,177,178,179,180,181,182,183,186,187,188,189,195,196,197,198,201,202,205,208,209,210,211,235,236,238,243,244,245,229,230,231,232,213, + NRFP3S = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62, + RFP3P = 100000.0,92500.0,85000.0,70000.0,50000.0,40000.0,30000.0,25000.0,20000.0,15000.0,10000.0,7000.0,5000.0,3000.0,2000.0,1000.0,700.0,500.0,300.0,200.0,100.0, + LFITP = TRUE, + LFITT = FALSE, + LFITV = FALSE, + NFPCLI = 0, + LFPQ = FALSE, + LASQ = FALSE, + LTRACEFP = FALSE, + RFPCORR = 60000., +/ +&NAMFPD +/ +&NAMDIM + NPROMA = 0, + NUNDEFLD = 0, +/ +&NAMVAR + LMODERR = FALSE, + LJCDFI = FALSE, + LUSEJCDFI = FALSE, +/ +&NAMMCC + LMCCIEC = TRUE + LMCCEC = TRUE + LMCC04 = TRUE + NOACOMM = 5 + LMCCICEIC = FALSE +/ +&NAMPPC + LRSACC = TRUE +/ +&NAEAER +/ +&NALBAR +/ +&NALORI +/ +&NAM_DISTRIBUTED_VECTORS +/ +&NAM926 +/ +&NAMAFN +/ +&NAMANA +/ +&NAMARPHY +/ +&NAMCA +/ +&NAMCAPE +/ +&NAMCFU +/ +&NAMCHK +/ +&NAMCHET +/ +&NAMCLDP +/ +&NAMCLTC +/ +&NAMCOM +/ +&NAMCOS +/ +&NAMCTAN +/ +&NAMCUMF +/ +&NAMCUMFS +/ +&NAMCT1 +/ +&NAMCVA +/ +&NAMDFHD +/ +&NAMDFI +/ +&NAMDIF +/ +&NAMDIMO +/ +&NAMDMSP +/ +&NAMDPHY +/ +&NAMDYNA +/ +&NAMEMIS_CONF +/ +&NAMENKF +/ +&NAMFA +/ +&NAMFFT +/ +&NAMFPDY2 +/ +&NAMFPDYH +/ +&NAMFPDYP +/ +&NAMFPDYS +/ +&NAMFPDYT +/ +&NAMFPDYV +/ +&NAMFPEZO +/ +&NAMFPF +/ +&NAMFPIOS +/ +&NAMFPPHY +/ +&NAMFPSC2 +/ +&NAMFPSC2_DEP +/ +&NAMFY2 +/ +&NAMGEM +/ +&NAMGMS +/ +&NAMGOES +/ +&NAMGOM +/ +&NAMGRIB +/ +&NAMGWD +/ +&NAMGWWMS +/ +&NAMHLOPT +/ +&NAMINI +/ +&NAMIOMI +/ +&NAMJBCODES +/ +&NAMJFH +/ +&NAMJG +/ +&NAMJO +/ +&NAMKAP +/ +&NAMLCZ +/ +&NAMLEG +/ +&NAMLFI +/ +&NAMMCUF +/ +&NAMMETEOSAT +/ +&NAMMTS +/ +&NAMMTSAT +/ +&NAMMTT +/ +&NAMMUL +/ +&NAMNASA +/ +&NAMNN +/ +&NAMNPROF +/ +&NAMNUD +/ +&NAMOBS +/ +&NAMONEDVAR +/ +&NAMOPH +/ +&NAMPARAR +/ +&NAMPHY +/ +&NAMPHY0 +/ +&NAMPHY1 +/ +&NAMPHY2 +/ +&NAMPHY3 +/ +&NAMPHYDS +/ +&NAMPONG +/ +&NAMRAD15 +/ +&NAMRCOEF +/ +&NAMRINC +/ +&NAMRIP +/ +&NAMSCC +/ +&NAMSCEN +/ +&NAMSCM +/ +&NAMSENS +/ +&NAMSIMPHL +/ +&NAMSKF +/ +&NAMSPSDT +/ +&NAMSTA +/ +&NAMSTOPH +/ +&NAMTCWV +/ +&NAMTESTVAR +/ +&NAMTLEVOL +/ +&NAMTOPH +/ +&NAMTOVS +/ +&NAMTRAJP +/ +&NAMTRANS +/ +&NAMTRM +/ +&NAMVARBC +/ +&NAMVARBC_AIREP +/ +&NAMVARBC_ALLSKY +/ +&NAMVARBC_RAD +/ +&NAMVARBC_TCWV +/ +&NAMVARBC_TO3 +/ +&NAMVAREPS +/ +&NAMVDOZ +/ +&NAMVFP +/ +&NAMVRTL +/ +&NAMVV1 +/ +&NAMVV2 +/ +&NAMVWRK +/ +&NAMXFU +/ +&NAMZDI +/ +&NAPHLC +/ +&NAV1IS +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2da9b7b3d693a93e5d9132beefca0259a7abbc5 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA025.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.0e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 250 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-09 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 100.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.5 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2234c7d60ee5a1af0baf329c79cf70f4c48e72d --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim2-ORCA1.sh @@ -0,0 +1,133 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 120 ! number of EVP subcycling iterations + telast = 9600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 0.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh new file mode 100755 index 0000000000000000000000000000000000000000..43c245e80e4edd26379b58c9938a8e09f14f1cb3 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA025.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 5.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee5a8c37de6c8e91224ea17cf0c25f3ff90cd251 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.lim3-ORCA1.sh @@ -0,0 +1,197 @@ +#!/bin/sh + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM3 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice salinity (namicesal) +!! 7 - mechanical redistribution of ice (namiceitdme) +!! 8 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + acrit = 1.0e-02 , 1.0e-02 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) + cai = 1.40e-3 ! atmospheric drag over sea ice + cao = 1.00e-3 ! atmospheric drag over ocean + ln_nicep = .false. ! Ice points output for debug (yes or no) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.3 ! initial snow thickness in the north + hnins = 0.1 ! " " south + hginn_u = 3.50 ! initial undeformed ice thickness in the north + hgins_u = 1.0 ! " " " south + aginn_u = 0.95 ! initial undeformed ice concentration in the north + agins_u = 0.9 ! " " " south + hginn_d = 0.0 ! initial deformed ice thickness in the north + hgins_d = 0.0 ! + aginn_d = 0.00 ! initial deformed ice concentration in the north + agins_d = 0.00 ! " " " south + sinn = 6.301 ! initial salinity in the north + sins = 6.301 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 500 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 4.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 1.0e-12 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 90.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 300 ! number of iterations for subcycling in EVP, SB, 400 + telast =9600.0 ! timescale for elastic waves, SB, 720.0 + alphaevp = 1.0 ! coefficient for the solution of internal ice stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.1 , 0.1 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! caution 1.0, 1.0 best value to be used!!! (gilles G.) ???? + fraz_swi = 0.0 ! use of frazil ice collection thickness in function of wind (1.0) or not (0.0) + maxfrazb = 0.0 ! maximum portion of frazil ice collecting at the ice bottom + vfrazb = 0.4166667 ! thresold drift speed for frazil ice collecting at the ice bottom + Cfrazb = 5.0 ! squeezing coefficient for frazil ice collecting at the ice bottom + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.10 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.25 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation + betas = 0.6 ! exponent in lead-ice fractionation of snow precipitation 0.66 + ! betas = 1 -> equipartition, betas < 1 -> more on leads + kappa_i = 1.0 ! extinction radiation parameter in sea ice (1.0) + nconv_i_thd = 50 ! maximal number of iterations for heat diffusion computation + maxer_i_thd = 0.0001 ! maximal error in temperature for heat diffusion computation + thcon_i_swi = 1 ! switch for computation of thermal conductivity in the ice + ! (0) Untersteiner (1964), (1) Pringle et al. (2007) +/ +!----------------------------------------------------------------------- +&namicesal ! ice salinity +!----------------------------------------------------------------------- + num_sal = 2 ! salinity option: 1 -> S = bulk_sal + ! 2 -> S = S(z,t) with a simple parameterization + ! 3 -> S = S(z) profile of Scwharzacher [1959] + ! 4 -> S = S(h) Cox and Weeks [1974] + bulk_sal = 4.0 ! if 1 is used, it represents the ice salinity + sal_G = 5.00 ! restoring salinity for GD + time_G = 1.728e+6 ! restoring time for GD + sal_F = 2.00 ! restoring salinity for flushing + time_F = 8.640e+5 ! restoring time for flushing + s_i_max = 20.0 ! Maximum salinity + s_i_min = 0.1 ! Minimum tolerated ice salinity + s_i_0 = 3.5 ! 1st salinity for salinity profile + s_i_1 = 4.5 ! 2nd salinity for salinity profile +/ +!----------------------------------------------------------------------- +&namiceitdme ! parameters for mechanical redistribution of ice +!----------------------------------------------------------------------- + ridge_scheme_swi = 0 ! which ridging scheme using (1=Rothrock,else=Hibler79) + Cs = 0.50 ! shearing energy contribution to ridging + Cf = 17.0 ! ratio of ridging work to PE change in ridging + fsnowrdg = 0.5 ! snow fraction that survives in ridging + fsnowrft = 0.5 ! snow fraction that survives in rafting + Gstar = 0.15 ! fractional area of thin ice being ridged + astar = 0.05 ! equivalent of gstar (0.05 for TH75 and 0.03 for weaker ice) + Hstar = 100.0 ! parameter determining the maximum thickness of ridged ice + raftswi = 1 ! rafting or not + hparmeter = 0.75 ! threshold thickness for rafting or not + Craft = 5.0 ! coefficient used in the rafting function + ridge_por = 0.3 ! initial porosity of the ridged ice (typically 0.30) + sal_max_ridge = 15.0 ! maximum ridged ice salinity + partfun_swi = 1 ! participation function linear, TH75 (0) or exponential Letal07 (1) + transfun_swi = 0 ! transfer function uniform of H80 (0) or exponential Letal07 (1) + brinstren_swi = 0 ! (1) use brine volume to diminish ice strength +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!----------------------------------------------------------------------- +&namiceout ! parameters for outputs +!----------------------------------------------------------------------- + noumef = 37 ! number of fields + add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space + ! 0 -> only simple diagnostics +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'cm/day ', 1 , 100. , 0.0 + field_5 = 'Daily dynamic ice production ', 'iicedypr', 'cm/day ', 1 , 100. , 0.0 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , 0.0 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 + field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0 + field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0 + field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'cm/day ', 1 ,100. , 0.0 + field_23 = 'Daily snowice ice production ', 'iicesipr', 'cm/day ', 1 ,100. , 0.0 + field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0 + field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15 + field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15 + field_28 = 'Fsbri - brine salt flux ', 'iicfsbri', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_29 = 'Fseqv - equivalent FW salt flux ', 'iicfseqv', 'kg/m2/s ', 1 , 1.0 , 0.0 + field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0 + field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0 + field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0 + field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0 + field_34 = 'Surface melt ', 'iicesume', 'cm/day ', 1 ,100. , 0.0 + field_35 = 'Bottom melt ', 'iicebome', 'cm/day ', 1 ,100. , 0.0 + field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0 + field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0 +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..1d99d92c2a3b3a69c7b06cec699c7babb7a946f5 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'none' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 1 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 2.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 3.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 1 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 300. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! laplacian operator + ln_dynldf_bilap = .true. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -1.5e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.4 ! surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-15 ! absolute precision of the solver + nn_nmin = 340 ! minimum of iterations for the SOR solver + nn_nmax = 15000 ! maximum of iterations for the SOR solver + nn_nmod = 5 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.975 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh new file mode 100755 index 0000000000000000000000000000000000000000..7a7dbb3baa4d6febd89342e61fb4ce9608330751 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA025L75.sh @@ -0,0 +1,412 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!----------------------------------------------------------------------- +&namrun ! Parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! Job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! Start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! Restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! Suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! Suffix of ocean restart name (output) + nn_istate = 0 ! Output the initial state (1) or not (0) + nn_stock = 0 ! Frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! Frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) +/ +!----------------------------------------------------------------------- +&namzgr ! Vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namdom ! Space and time domain (bathymetry, mesh, timestep) +!----------------------------------------------------------------------- + nn_bathy = 1 ! Compute (=0) or read (=1) the bathymetry file + nn_closea = 0 ! Remove (=0) or keep (=1) closed seas and lakes (ORCA) + nn_msh = 0 ! Create (=1) a mesh file or not (=0) + ! + rn_e3zps_min= 25. ! Partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.2 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! Flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2") + ln_dm2dc = .false. ! Daily mean to diurnal cycle on short wave + ln_rnf = .false. ! Runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! Coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! SEND +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! RECEIVE +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! Bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! Runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + ! + cn_dir = './' ! Root directory for the location of the runoff files + ln_rnf_emp = .false. ! Runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! Specific treatment at rivers mouths + rn_hrnf = 0.e0 ! Depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! Value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! Albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! Cloud correction to snow and ice albedo + rn_albice = 0.53 ! Albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! Coefficients for linear interpolation used to + rn_alphc = 0.65 ! Compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ +!----------------------------------------------------------------------- +&namlbc ! Lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 0.5 ! shlat = 0 : free slip + ! 0 < shlat < 2 : partial slip + ! shlat = 2 : no slip + ! 2 < shlat : strong slip +/ +!----------------------------------------------------------------------- +&namcla ! Cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! Advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&nambfr ! Bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! Type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! Bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! Bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! Bottom turbulent kinetic energy background (m2/s2) +/ +!----------------------------------------------------------------------- +&nambbc ! Bottom temperature boundary condition +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&nambbl ! Bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! Diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! Advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! Lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! Advective bbl coefficient [s] +/ +!----------------------------------------------------------------------- +&nameos ! Ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! Type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! Thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! Saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! Advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! Lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! Laplacian operator + ln_traldf_bilap = .false. ! Bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! Iso-level + ln_traldf_hor = .false. ! Horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! Iso-neutral (require "key_ldfslp") +! ! Coefficient + rn_aht_0 = 300. ! Horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! Background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 0. ! Eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namdyn_adv ! Formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! Vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! Flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! Flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! Option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! Enstrophy conserving scheme + ln_dynvor_ens = .false. ! Energy conserving scheme + ln_dynvor_mix = .false. ! Mixed scheme + ln_dynvor_een = .true. ! Energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! Weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! Hydrostatic pressure gradient: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +&namdyn_ldf ! Lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .false. ! Laplacian operator + ln_dynldf_bilap = .true. ! Bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! Iso-level + ln_dynldf_hor = .true. ! Horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! Iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 0. ! Horizontal laplacian eddy viscosity [m2/s] + rn_ahm_0_blp = -1.5e11 ! Horizontal bilaplacian eddy viscosity [m4/s] + rn_ahmb_0 = 0. ! Background eddy viscosity for ldf_iso [m2/s] +/ +!----------------------------------------------------------------------- +&namzdf ! Vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.e-4 ! Vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.e-5 ! Vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! Profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! Horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! Enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! Evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 10. ! Evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! Frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! Time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! Number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! Richardson number dependent vertical diffusion ("key_zdfric") +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! Maximum value of the vertical viscosity + rn_alp = 5. ! Coefficient of the parameterization + nn_ric = 2 ! Coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! Turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! Coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! Coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! Coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! Minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! Surface minimum value of tke [m2/s2] + nn_mxl = 3 ! Mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! Surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! Surface buoyancy lenght scale minimum value + ln_lc = .false. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! Coef. associated to Langmuir cells + nn_etau = 1 ! Penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! Fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! Type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ + ln_kpprimix = .true. ! Shear instability mixing + rn_difmiw = 1.0e-04 ! Constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! Constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! Local Richardson Number limit for shear instability + rn_difri = 0.0050 ! Maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! Maximum mixing in interior convection [m2/s] + nn_avb = 0 ! Horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! Constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! Double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! Maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! Heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namsol ! Elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 2 ! Elliptic solver: =1 Preconditioned conjugate gradient (PCG) + ! =2 Successive-over-relaxation (SOR) + ! =3 FETI (fet) ("key_feti") + ! =4 SOR with extra outer halo + nn_sol_arp = 0 ! Absolute/relative (0/1) precision convergence test + nn_nmin = 340 ! Minimum of iterations for the SOR solver + nn_nmax = 15000 ! Maximum of iterations for the SOR solver + nn_nmod = 5 ! Frequency of test for the SOR solver + rn_eps = 1.e-15 ! Absolute precision of the solver + rn_resmax = 1.e-10 ! Absolute precision for the SOR solver + rn_sor = 1.975 ! Optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi") +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! MPI send/recieve type ='S', 'B', or 'I' for standard send, + ! Buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! Size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni Number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj Number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij Number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! Trends control print (expensive!) + nn_print = 0 ! Level of print (0 no extra print) + nn_ictls = 0 ! Start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! End i indice of control sum multi processor runs + nn_jctls = 0 ! Start j indice of control over a subdomain) + nn_jctle = 0 ! End j indice of control + nn_isplt = 1 ! Number of processors in i-direction + nn_jsplt = 1 ! Number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ +!----------------------------------------------------------------------- +&namtrd ! Diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! Time step frequency dynamics and tracers trends + nn_ctls = 0 ! Control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! Suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! Suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! Restart for ML diagnostics + ln_trdmld_instant = .false. ! Flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! Float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! Float restart (T) or not (F) + nn_writefl = 75 ! Frequency of writing in float output file + nn_stockfl = 5475 ! Frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! Trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- +! Use defaults +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- +! Use defaults +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..b07b13ae3cdbe85f55b0f6ce8063fa2b64ac8f5f --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-ORCA1L46.sh @@ -0,0 +1,888 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .false. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .true. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u_10.15JUNE2009_orca2' , 6 , 'U_10_MOD', .false. , .true. , 'yearly' , '' , 'Uwnd' + sn_wndj = 'v_10.15JUNE2009_orca2' , 6 , 'V_10_MOD', .false. , .true. , 'yearly' , '' , 'Vwnd' + sn_qsr = 'ncar_rad.15JUNE2009_orca2' , 24 , 'SWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_qlw = 'ncar_rad.15JUNE2009_orca2' , 24 , 'LWDN_MOD', .false. , .true. , 'yearly' , '' , '' + sn_tair = 't_10.15JUNE2009_orca2' , 6 , 'T_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_humi = 'q_10.15JUNE2009_orca2' , 6 , 'Q_10_MOD', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'ncar_precip.15JUNE2009_orca2', -1 , 'PRC_MOD1', .false. , .true. , 'yearly' , '' , '' + sn_snow = 'ncar_precip.15JUNE2009_orca2', -1 , 'SNOW' , .false. , .true. , 'yearly' , '' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .false. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'ice and snow' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'none' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce and ice' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'spherical' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'T' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = -100.e11 ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh new file mode 100755 index 0000000000000000000000000000000000000000..a5d0ecc5a4290f0ad0de6a5a586262613c4acd4c --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/namelist.nemo-standalone-ORCA1L46.sh @@ -0,0 +1,854 @@ +#!/bin/sh + +if $leg_is_restart +then + nemo_restart=".TRUE." +else + if [[ $rstctl -eq 1 ]]; then + nemo_restart=".FALSE." + else + nemo_restart=".TRUE." + fi +fi + +case $advsch in + cen2) LCEN2=.true. + LTVD=.false.;; + tvd) LCEN2=.false. + LTVD=.true.;; + * ) print "Unknown testcase" + exit 1;; +esac + +cat << EOF +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "${exp_name}" + nn_it000 = $(( leg_start_sec / nem_time_step_sec + 1 )) + nn_itend = $(( leg_end_sec / nem_time_step_sec )) + nn_date0 = ${leg_start_date_yyyymmdd} + nn_leapy = 1 ! Leap year calendar (1) or not (0) + ln_rstart = ${nemo_restart} ! start from rest (F) or from a restart file (T) + nn_rstctl = ${rstctl} ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart_oce" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart_oce" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 0 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ +!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24 , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24 , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24 , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24 , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24 , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1 , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1 , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1 , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1 , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1 , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1 , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1 , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulae +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! +sn_wndi = 'u10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'u10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Uwnd' +sn_wndj = 'v10_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'v10', .false., .true., 'yearly', 'weight_bicub_320x161-ORCA1', 'Vwnd' +sn_qsr = 'radsw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radsw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_qlw = 'radlw_DFS4.3_${leg_start_date_yyyy}' , 24, 'radlw', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tair = 't2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 't2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_humi = 'q2_DFS4.3_${leg_start_date_yyyy}_sht' , 6, 'q2', .false., .true., 'yearly', 'weight_bilin_320x161-ORCA1', '' +sn_prec = 'precip_DFS4.3_${leg_start_date_yyyy}' , -1, 'precip', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_snow = 'snow_DFS4.3_${leg_start_date_yyyy}' , -1, 'snow', .false., .true., 'yearly', 'weight_bilin_192x94-ORCA1', '' +sn_tdif = 'taudif_core' , 24, 'taudif', .false., .true., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namtra_qsr ! Penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask' , -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask' , 0 , 'socoefr0', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .false. ! specific treatment at rivers mouths + rn_hrnf = 15.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-3 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' + sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = 0. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -27.7 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.40 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.60 ! compute albedo between two extremes values + rn_alphdi = 0.67 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 1 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .true. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 1 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = $LCEN2 ! 2nd order centered scheme + ln_traadv_tvd = $LTVD ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUICKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1400. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1400. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.0e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.0e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 0 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 50. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 67.83 ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 2 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .true. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.04 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .false. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscellaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 1800 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'B' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 16000000 ! size in bytes of exported buffer ('B' case), 0 no exportation + jpni = 0 ! jpni number of processors following i (set automatically if < 1) + jpnj = 0 ! jpnj number of processors following j (set automatically if < 1) + jpnij = 0 ! jpnij number of local domains (set automatically if < 1) +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 1 ! number of processors in i-direction + nn_jsplt = 1 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .false. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ +EOF diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/ppt0000000000 b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/ppt0000000000 new file mode 100644 index 0000000000000000000000000000000000000000..eb6eaaceca713a7628291fdebef69b7808f82383 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/ppt0000000000 @@ -0,0 +1,64 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 53, + MFPPHY = 129,172,031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 53, + MFPPHY = 129,172,031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/pptdddddd0000 b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/pptdddddd0000 new file mode 100644 index 0000000000000000000000000000000000000000..68a026fc858a076eee55a1a4f44423194066f48b --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/pptdddddd0000 @@ -0,0 +1,64 @@ + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 51, + MFPPHY = 031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + + &NAMFPC + CFPFMT ='MODEL', + LFITP =true, + + NFP3DFP = 5, + MFP3DFP = 129,130,131,132,133, + RFP3P = 100000,92500,85000,70000,50000,40000,30000,20000,10000,5000,1000, + + NFP2DF = 1, + MFP2DF = 152, + + NFPPHY = 51, + MFPPHY = 031,032,034,035,039,040,041,042,078,079,136,137,139,141,142,143,144,146,147,151,164,165,166,167,168,169,170,175,176,177,178,179,180,181,182,183,186,187,188,201,202,205,208,209,210,211,212,235,236,238,243, + / + &NAMFPDY2 + / + &NAMFPDYP + / + &NAMFPDYH + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPDYS + / + &NAMFPPHY + / + &NAMPPC + LRSACC=.TRUE. + / + diff --git a/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/xmlio_server.def b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/xmlio_server.def new file mode 100644 index 0000000000000000000000000000000000000000..3a6f0e234de9c8173fb30784d1fad6c72f8b1330 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ece-v3.0.1/build-config/setup/ctrl/xmlio_server.def @@ -0,0 +1,35 @@ +! xmlio_server namelist +! +! using_server: .TRUE.(.FALSE.) to use(bypass) the io_server +! using_oasis : .TRUE.(.FALSE.) if nemo is coupled through OASIS +! client_id : used only for OASIS, NEMO id in the namecouple +! server_id : used only for OASIS, io_server id in the namecouple +! +&coupling_param + using_server = .FALSE. + using_oasis = .TRUE. + client_id = 'nemo.x' + server_id = 'ionemo' +/ + +! global_mpi_buffer_size: size in Mo of the MPI buffer used by the io_server +&mpi_param + global_mpi_buffer_size = 512 +/ + +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings +!!====================================================================== +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings + ! (benign if "key_netcdf4" is not used) +!----------------------------------------------------------------------- + nn_nchunks_i = 4 ! number of chunks in i-dimension + nn_nchunks_j = 4 ! number of chunks in j-dimension + nn_nchunks_k = 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .TRUE. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ + diff --git a/deploy/patches/ithaca/nemo/ecearth-v2.2/build/compilation.cmd b/deploy/patches/ithaca/nemo/ecearth-v2.2/build/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..42e1a582c7de6b0392371cd6cc0b7ebde0cd5b20 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ecearth-v2.2/build/compilation.cmd @@ -0,0 +1,79 @@ +#!/bin/ksh + +nemo_i=6 +nemo_j=6 + +while getopts i:j: option +do + case $option in + i) nemo_i=$OPTARG;; + j) nemo_j=$OPTARG;; + \?) exit 1;; + esac +done + +source /opt/modules/init/ksh +module load intel/13.0.1 +module load openmpi/1.6-intel # OpenMPI +#module load intel/4.0.3.008 # Intel MPI + +set -xuve +date + +MPI=/share/mpi/openmpi/1.6/ics2012.0.032 # OpenMPI +#MPI=/share/compilers/ics/2012.0.032/impi/4.0.3.008/intel64 # Intel MPI +NetCDF=/scratch/cfu/opt/netcdf-3.6.3/intel12 +UDUNITS=/scratch/cfu/opt/udunits-2.1.24/intel12 + +settings=settings.orca1.ithaca + +cd .. +ECEARTH=`pwd` +cd - + +cat > $settings <namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA2" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = $(RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = -1 + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 15 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 75 + nstockfl = 5475 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +if [[ $ORCARESOL = ORCA1 ]]; then +cat >namelist <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! OPA namelist : model option and parameter input +! ------------- +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!----------------------------------------------------------------------- +! namrun parameters of the run +!----------------------------------------------------------------------- +! no job number +! cexper experience name for vairmer format +! ln_rstart boolean term for restart (true or false) +! nrstdt control of the restart timestep: +! = 0 restart, do not control nit000 in the restart file. +! = 1 restart, control nit000 in the restart file. Do not +! use the date in the restart file (use ndate0 in namelist) +! = 2 restart, control nit000 in the restart file, use the date +! in the restart file. ndate0 in the namelist is ignored. +! nit000 number of the first time step +! nitend number of the last time step +! ndate0 initial calendar date aammjj +! nleapy Leap year calendar (0/1) +! ninist initial state output flag (0/1) +! nstock frequency of restart file +! nwrite frequency of OUTPUT file (set to -1 to select EC-EARTH monthly means) +! nrunoff = 0 no, 1 runoff, 2 runoff+river mouth ups adv +! +! CAUTION: for usual run scripts, logical value of +! ******* ln_rstart must be .true. or .false. +! and NOT .TRUE. or .FALSE. +&namrun + no = 0 + cexper = "ORCA1" + ln_rstart = ${OCRESTART} + ln_glorst = ${GLOBAL_RESTART_FILE} + nrstdt = ${RESTART_MODE} + nit000 = $((${OCLENPRV}+1)) + nitend = ${OCLENGTH} + ndate0 = ${STARTDATE} + nleapy = 1 + ninist = 0 + nstock = ${OCLENGTH} + nwrite = -1 + nrunoff = 2 +/ +!----------------------------------------------------------------------- +! nam_ctl Control prints & Benchmark +!----------------------------------------------------------------------- +! ln_ctl trends control print (expensive!) +! nprint level of print (0 no print) +! nictls start i indice to make the control SUM (very usefull to compare mono- +! nictle end i indice to make the control SUM (-versus multi processor runs) +! njctls start j indice to make the control SUM (very usefull to compare mono- +! njctle end j indice to make the control SUM (-versus multi processor runs) +! nisplt number of processors following i +! njsplt number of processors following j +! nbench Bench parameter (0/1): CAUTION it must be zero except for bench +! for which we dont care about physical meaning of the results +! nbit_cmp bit comparison mode parameter (0/1): enables bit comparison between +! single and multiple processor runs. +&namctl + ln_ctl = .false. + nprint = 0 + nictls = 0 + nictle = 0 + njctls = 0 + njctle = 0 + isplt = 1 + jsplt = 1 + nbench = 0 + nbit_cmp = 0 +/ +!----------------------------------------------------------------------- +! nam_mpp Massively Parallel Processing +!----------------------------------------------------------------------- +! c_mpi_send mpi send/recieve type +! = 'S' : standard blocking send +! = 'B' : buffer blocking send +! = 'I' : immediate non-blocking send +&nam_mpp + c_mpi_send = 'I' +/ +!----------------------------------------------------------------------- +! nam_zgr vertical coordinate +!----------------------------------------------------------------------- +! ln_zco z-coordinate - full steps (T/F) +! ln_zps z-coordinate - partial steps (T/F) +! ln_sco s- or hybrid z-s-coordinate (T/F) +&nam_zgr + ln_zco = .false. + ln_zps = .true. + ln_sco = .false. +/ +!----------------------------------------------------------------------- +! nam_zgr_sco s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- +! sbot_min minimum depth of s-bottom surface (>0) (m) +! sbot_max maximum depth of s-bottom surface (= ocean depth) (>0) (m) +! theta surface control parameter (0<=theta<=20) +! thetb bottom control parameter (0<=thetb<= 1) +! r_max maximum cut-off r-value allowed (05cm2/s ) +! (=2 no damping in the mixed layer defined rho /seconds | =86400. -> /day) +! ln_trdmld_instant flag to diagnose trends of instantantaneous or mean ML T/S +&namtrd + ntrd = 365 + nctls = 0 + ln_trdmld_restart = .false. + ucf = 1. + ln_trdmld_instant = .false. +/ +!----------------------------------------------------------------------- +! namgap level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- +! ngap time-step frequency of model-data gap computation +! nprg time-step frequency of gap print in model output +&namgap + ngap = 15 + nprg = 10 +/ +!----------------------------------------------------------------------- +! namznl zonal mean heat & freshwater fluxes computation +! (#ifdef "key_diaznl") +!----------------------------------------------------------------------- +! nfznl time-step frequency of zonal mean fluxes computation +&namznl + nfznl = 24 +/ +!----------------------------------------------------------------------- +! namspr surface pressure diagnostic +!----------------------------------------------------------------------- +! nmaxp maximum of iterations for the solver +! epsp absolute precision of the solver +! niterp number of iteration done by the solver +&namspr + nmaxp = 1000 + epsp = 1.e-3 + niterp = 400 +/ +!----------------------------------------------------------------------- +! namcpl coupled ocean/atmosphere model (#ifdef "key_coupled") +!----------------------------------------------------------------------- +! nexco coupling frequency in time steps +! cchan coupling technique 'PIPE' or 'CLIM' +&namcpl + nexco = 24 + cchan = 'PIPE' + nmodcpl = 2 + cplmodnam = 'opa.xx' + cploasis = 'Oasis' + nfldo2c = 2 + nflxc2o = 6 + ntauc2o = 4 + cpl_writ(1) = 'SOSSTSST' + cpl_f_writ(1) = 'ocesst' + cpl_writ(2) = 'SOICECOV' + cpl_f_writ(2) = 'oceice' + cpl_readflx(1) = 'SONSFLDO' + cpl_f_readflx(1) = 'oceflx' + cpl_readflx(2) = 'SOSHFLDO' + cpl_f_readflx(2) = 'oceflx' + cpl_readflx(3) = 'SOTOPRSU' + cpl_f_readflx(3) = 'oceflx' + cpl_readflx(4) = 'SOTFSHSU' + cpl_f_readflx(4) = 'oceflx' + cpl_readflx(5) = 'SORUNCOA' + cpl_f_readflx(5) = 'oceflx' + cpl_readflx(6) = 'SORIVFLU' + cpl_f_readflx(6) = 'oceflx' + cpl_readtau(1) = 'SOZOTAUX' + cpl_f_readtau(1) = 'ocetau' + cpl_readtau(2) = 'SOZOTAU2' + cpl_f_readtau(2) = 'ocetau' + cpl_readtau(3) = 'SOMETAUY' + cpl_f_readtau(3) = 'ocetau' + cpl_readtau(4) = 'SOMETAU2' + cpl_f_readtau(4) = 'ocetau' +/ +!----------------------------------------------------------------------- +! namobc open boundaries parameters (#ifdef key_obc) +!----------------------------------------------------------------------- +! nobc_dta = 0 the obc data are equal to the initial state +! = 1 the obc data are read in 'obc .dta' files +! rdpeob time relaxation (days) for the east open boundary +! rdpwob time relaxation (days) for the west open boundary +! rdpnob time relaxation (days) for the north open boundary +! rdpsob time relaxation (days) for the south open boundary +! zbsic1 barotropic stream function on isolated coastline 1 +! zbsic2 barotropic stream function on isolated coastline 2 +! zbsic3 barotropic stream function on isolated coastline 3 +! ln_obc_clim climatological obc data files (default T) +! ln_vol_cst total volume conserved +&namobc + nobc_dta = 0 + rdpein = 1. + rdpwin = 1. + rdpnin = 30. + rdpsin = 1. + rdpeob = 1500. + rdpwob = 15. + rdpnob = 150. + rdpsob = 15. + zbsic1 = 140.e+6 + zbsic2 = 1.e+6 + zbsic3 = 0. + ln_obc_clim = .true. + ln_vol_cst = .false. +/ +!----------------------------------------------------------------------- +! namflo float parameters (#ifdef key_float) +!----------------------------------------------------------------------- +! ln_rstflo boolean term for float restart (true or false) +! nwritefl frequency of float output file +! nstockfl frequency of float restart file +! ln_argo Argo type floats (stay at the surface each 10 days) +! ln_flork4 = T trajectories computed with a 4th order Runge-Kutta +! = F (default) computed with Blanke scheme +&namflo + ln_rstflo = .false. + nwritefl = 120 + nstockfl = 8760 + ln_argo = .false. + ln_flork4 = .false. +/ +!----------------------------------------------------------------------- +! namobs observation operator switch (#ifdef key_diaobs) +!----------------------------------------------------------------------- +! enactname Basename for ENACT input observation file +! ln_ena Logical switch for ENACT insitu data set +! ln_cor Logical switch for Coriolis insitu data set +! ln_t3d Logical switch for T profile observations +! ln_s3d Logical switch for S profile observations +! ln_pto Logical switch for gen profile T obs sfc +! ln_pro Logical switch for gen profile Rho obs sfc +! ln_pts Logical switch for gen profile T spec sfc +! ln_prs Logical switch for gen profile Rho spec sfc +! ln_pzm Logical switch for gen profile Z model lev +! ln_sla Logical switch for SLA observations +! ln_ssh Logical switch for SSH observations +! ln_sst Logical switch for SST observations +! ln_sss Logical switch for SSS observations +! dobsini Initial date in window YYYYMMDD.HHMMSS +! dobsend Final date in window YYYYMMDD.HHMMSS +! n1dint Type of vertical interpolation method +! 0 = Linear intepolation. +! 1 = Cubic spline interpolation. +! n2dint Type of horizontal interpolation method +! 0 = Distance-weighted interpolation +! 1 = Distance-weighted interpolation (small angle) +! 2 = Bilinear interpolation (geographical grid) +! 3 = Bilinear remapping interpolation (general grid) +! 4 = Polynomial interpolation +! ln_nea Logical switch to reject observations near land +! nslasets Number of SLA datasets +! nmsshc MSSH correction scheme +! 0 = no correction +! 1 = compute online +! 2 = set to mdtcorr +! mdtcutoff MDT cutoff for computed correction +! mdtcorr MDT correction factor (used if nmsshc = 2) +&namobs + ln_ena = .FALSE. + ln_cor = .FALSE. + ln_t3d = .FALSE. + ln_s3d = .FALSE. + ln_pto = .FALSE. + ln_pro = .FALSE. + ln_pts = .FALSE. + ln_prs = .FALSE. + ln_pzm = .FALSE. + ln_sla = .FALSE. + ln_ssh = .FALSE. + ln_sst = .FALSE. + ln_sss = .FALSE. + n1dint = 1 + n2dint = 3 + ln_nea = .FALSE. + nslasets = 1 + dobsini = 20010101 + dobsend = 20010101 + enactname = 'EN3_v1a_YYYY.MM.nc' + nmsshc = 1 + mdtcutoff = 65.0 + mdtcorr = 1.61 +/ +!----------------------------------------------------------------------- +! nam_asminc assimilation increment parameters (#ifdef key_asminc) +!----------------------------------------------------------------------- +! ln_bkgwri Logical switch for writing out background state +! ln_trjwri Logical switch for writing out state trajectory +! ln_trainc Logical switch for applying tracer increments +! ln_dyninc Logical switch for applying velocity increments +! ln_sshinc Logical switch for applying sea surface height increments +! ln_asmdin Logical switch for Direct Initialization (DI) +! ln_asmiau Logical switch for Incremental Analysis Updating (IAU) +! nitbkg Time step of the background state in [0,nitend-nit000-1] +! nitdin Time step of the background state for DI in [0,nitend-nit000-1] +! nitiaustr Time step of the start of the IAU interval in [0,nitend-nit000-1] +! nitiaufin Time step of the end of the IAU interval in [0,nitend-nit000-1] +! niaufn Type of IAU weighting function +! 0 = constant +! 1 = linear hat-like, centred in middle of IAU interval +&nam_asminc + ln_bkgwri = .FALSE + ln_trjwri = .FALSE. + ln_trainc = .FALSE. + ln_dyninc = .FALSE. + ln_sshinc = .FALSE. + ln_asmdin = .FALSE. + ln_asmiau = .FALSE. + nitbkg = 0 + nitdin = 0 + nitiaustr = 1 + nitiaufin = 150 + niaufn = 0 +/ +EOF +fi + +cat >namelist_ice <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +! ICE namelist : ice model option and parameter input +! ------------- +! +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicerun Share parameters for dynamics/advection/thermo +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limdyn : switch for ice dynamics (true) or not (false) +! acrit(1/2) : minimum fraction for leads in the Northern (Southern) Hemisphere +! hnsdif : computation of temperature in snow (=0.0) or not (=9999.0) +! hicdif : computation of temperature in ice (=0.0) or not (=9999.0) +! +&namicerun + ln_limdyn = .true. + acrit = 1.0e-06 , 1.0e-06 + hsndif = 0.0 + hicdif = 0.0 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceini parameters for ice initialisation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! ln_limini : Ice initialization state flag +! ln_limdmp : restoring Ice thickness and Fraction leads flag +! ttest : threshold water temperature for initial sea ice +! hninn : initial snow thickness in the north +! hginn : initial ice thickness in the north +! alinn : initial leads area in the north +! hnins : initial snow thickness in the south +! hgins : initial ice thickness in the south +! alins : initial leads area in the south +! +&namiceini + ln_limini = .FALSE. + ln_limdmp = .FALSE. + ttest = 2.0 + hninn = 0.5 + hginn = 3.0 + alinn = 0.05 + hnins = 0.1 + hgins = 1.0 + alins = 0.1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedia parameters for ice diagnostics +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! fmtinf : format of the output values +! nfrinf : number of variables written in one line +! ntmoy : instantaneous values of ice evolution or averaging +! ninfo : frequency of ouputs on file ice_evolu in case of averaging +! +&namicedia + fmtinf = '1PE13.5 ' + nfrinf = 4 + ntmoy = 1 + ninfo = 1 +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicedyn parameters for ice dynamic +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! epsd : tolerance parameter +! alpha : coefficient for semi-implicit coriolis +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +! dm : diffusion constant for dynamics. +! nbiter : number of sub-time steps for relaxation +! nbitdr : maximum number of iterations for relaxation +! om : relaxation constant +! resl : maximum value for the residual of relaxation +! cw : drag coefficient for oceanic stress +! angvg : turning angle for oceanic stress +! pstar : first bulk-rheology parameter +! c_rhg : second bulk-rhelogy parameter +! etamn : minimun value for viscosity +! creepl : creep limit +! ecc : eccentricity of the elliptical yield curve +! ahi0 : horizontal eddy diffusivity coefficient for sea-ice (m2/s) +! +&namicedyn + epsd = 1.0e-20 + alpha = 0.5 + dm = 0.6e+03 + nbiter = 1 + nbitdr = 100 + om = 0.5 + resl = 5.0e-05 + cw = 5.0e-03 + angvg = 0.0 + pstar = 1.0e+04 + c_rhg = 20.0 + etamn = 0.0e+07 + creepl = 2.0e-08 + ecc = 2.0 + ahi0 = 350.e0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicetrp parameters for ice advection +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! bound : boundary conditions (=0.0 no-slip, =1.0 free-slip) +&namicetrp + bound = 0. +/ + +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namicethd parameters for thermodynamic computation +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! hmelt : maximum melting at the bottom +! hiccrit(1/2): ice thickness for lateral accretion in the Northern (Southern) Hemisphere +! caution 1.0, 1.0 best value to be used!!! (gilles G.) +! hicmin : ice thickness corr. to max. energy stored in brine pocket +! hiclim : minimum ice thickness +! amax : maximum lead fraction +! swiqst : energy stored in brine pocket (=1) or not (=0) +! sbeta : numerical caracteritic of the scheme for diffusion in ice +! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) +! parlat : percentage of energy used for lateral ablation +! hakspl : slope of distr. for Hakkinen-Mellor's lateral melting +! hibspl : slope of distribution for Hibler's lateral melting +! exld : exponent for leads-closure rate +! hakdif : coefficient for diffusions of ice and snow +! thth : threshold thickness for comp. of eq. thermal conductivity +! hnzst : thickness of the surf. layer in temp. computation +! parsub : switch for snow sublimation or not +! alphs : coefficient for snow density when snow ice formation +! +&namicethd + hmelt = -0.15 + hiccrit = 0.3 , 0.3 + hicmin = 0.2 + hiclim = 0.05 + amax = 0.999 + swiqst = 1. + sbeta = 1. + parlat = 0.0 + hakspl = 0.5 + hibspl = 0.5 + exld = 2.0 + hakdif = 1.0 + thth = 0.2 + hnzst = 0.1 + parsub = 0.0 + alphs = 1.0 +/ +! +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +! namiceout parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! +! noumef : number of fields +! field +! title : title of the field +! name : name of the field +! unit : unit of the field +! nc : switch for saving field ( = 1 ) or not ( = 0 ) +! cmulti : multiplicative constant +! cadd : additive constant +! +&namiceout + noumef = 19 + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1, 1.0, 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1, 1.0, 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1, 1.0, 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1, -1.0, 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1, 1.0, -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1, 1.0, 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1, 1.0, 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1, 1.0, 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1, 1.0, -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1, 1.0, 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1, 1.0, 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1, 1.0, 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1, 1.0, 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1, 1.0, 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1, 1.0, 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1, 1.0, 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1, 1.0, 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1, 1.0, 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/s ', 1, 1.0, 0.0 +/ +EOF + +ln -sf $NEMODATA/* . +#ln -sf ${NEMOEXPVER}_19951101_EMPave_old.dat EMPave_old.dat + +set -x + +if [[ ${OCLENPRV} == 0 ]]; then + case ${ORCARESOL} in + ORCA2) + ln -sf ${NEMOEXPVER}_19951101_restart.nc restart.nc + ln -sf ORCA2_00000075_restart_ice.nc restart_ice_in.nc + ;; + ORCA1) + #ln -sf ORCA1_00271560_restart.nc restart.nc + #ln -sf ORCA1_00271560_restart_ice.nc restart_ice_in.nc + #for f in ORCA1_INIT_restart*.nc; do + # target=`echo $f | sed -e "s/ORCA1_INIT_//" -e "s/restart_ice/restart_ice_in/"` + # mv $f ${target} + #done + ln -sf ORCA1_INIT_restart.nc restart.nc + ln -sf ORCA1_INIT_restart_ice.nc restart_ice_in.nc + ;; + esac +else + rm -f restart.nc restart_ice_in.nc + restart_dir=${ORCARESOL}_Restart + mkdir -p ${restart_dir} + timestep=`printf "%08d" ${OCLENPRV}` + for f in ${ORCARESOL}_${timestep}_restart*.nc; do + target=`echo $f | sed -e "s/${ORCARESOL}_${timestep}_//" -e "s/restart_ice/restart_ice_in/"` + mv $f ${restart_dir} + ln -sf ${restart_dir}/$f ${target} + done +fi + diff --git a/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/CPP_keys.ORCA1_OASIS3 b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/CPP_keys.ORCA1_OASIS3 new file mode 100755 index 0000000000000000000000000000000000000000..da5e678daa468c7aaaa8182ea68c3ad5dcb32c48 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/CPP_keys.ORCA1_OASIS3 @@ -0,0 +1,29 @@ +CPPKEYS_OPA = \ +-Dkey_orca_r1 \ +-Dkey_diaeiv \ +-Dkey_dtatem \ +-Dkey_dtasal \ +-Dkey_dynldf_c3d \ +-Dkey_dynspg_flt \ +-Dkey_ice_lim \ +-Dkey_ldfslp \ +-Dkey_lim_fdd \ +-Dkey_trabbc \ +-Dkey_trabbl_adv \ +-Dkey_trabbl_dif \ +-Dkey_tradmp \ +-Dkey_traldf_c2d \ +-Dkey_traldf_eiv \ +-Dkey_zdftke \ +-Dkey_zdfddm \ +-Dkey_flx_core \ +-Dkey_abort + +#-Dkey_zdfric \ +#-Dkey_vectopt_loop \ +#-Dkey_vectopt_memory \ + +#-Dkey_diaobs +#-Dkey_partial_steps +#-Dkey_tau_daily +#-Dkey_flx_forced_daily diff --git a/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/config/ithaca.config b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/config/ithaca.config new file mode 100644 index 0000000000000000000000000000000000000000..b6eabb3eb300b04ed964f4555171349cfcbb015c --- /dev/null +++ b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/build/config/ithaca.config @@ -0,0 +1,20 @@ +NETCDF_INCLUDE = ${NETCDFDIR}/include +NETCDF_LIB = -L${NETCDFDIR}/lib ${NETCDFLIBS} + +#CHAN = MPI1 +#PSMILELIBS = -L$(PSMILE)/lib -lanaisg -lanaism -lclim.$(CHAN) -lpsmile.$(CHAN) -lfscint -lmpp_io -lscrip +#COUPLIBS = $(PSMILELIBS) +#COUPFCFLAGS = -DOASIS3 -I$(PSMILE)/build/lib/psmile.$(CHAN) -I$(PSMILE)/build/lib/clim.$(CHAN) -I$(PSMILE)/build/lib/mpp_io + +CPP = cpp +CPPFLAGS = -traditional -P -I${MPIDIR}/include -DNOIARGCPROTO +AR = ar +ARFLAGS = -r +FC = ifort -L${MPIDIR}/lib ${MPILIBS} +FCFLAGS = -c -O3 -g -fp-model precise -xSSSE3 -traceback -r8 -i4 -I$(NETCDF_INCLUDE) $(COUPFCFLAGS) +FCFLAGSF90 = -c -O3 -g -fp-model precise -xSSSE3 -traceback -r8 -i4 -I$(NETCDF_INCLUDE) $(COUPFCFLAGS) +LDFLAGS = -g -o +LDNOMPI = $(FC) + +CPPKEYS_ARCH = -DNC_DOUBLE -Dkey_mpp -Dkey_mpp_mpi -Dkey_mpi_isend + diff --git a/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/IOIPSL/tools/rebuild b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/IOIPSL/tools/rebuild new file mode 100755 index 0000000000000000000000000000000000000000..3a135ba130ec9b354cadbb27d4f258e53d807d5f --- /dev/null +++ b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/IOIPSL/tools/rebuild @@ -0,0 +1,91 @@ +#!/bin/ksh +#$Header: /home/ioipsl/CVSROOT/IOIPSL/tools/rebuild,v 1.2 2006/06/20 09:18:33 adm Exp $ +#--------------------------------------------------------------------- +# @(#)Rebuild IOIPSL domains +#--------------------------------------------------------------------- +#- +#set -xv +#- +# Extract the calling sequence for the script (d_n/b_n) +#- +d_n=$(dirname $0); b_n=$(basename $0); +#- +# Retrieving and validation of the options +#- +r_v='silencious'; r_f='noforce'; r_o=""; +while getopts :hvfo: V + do + case $V in + (h) echo ''; + echo '"'${b_n}'"'; + echo ' rebuild a model_file from several input files.'; + echo 'Each input file contains the model_data for a domain.'; + echo 'Usage :'; + echo ${b_n} '[-h]'; + echo ${b_n} '[-v] [-f] -o output_file_name input_file_names'; + echo ' -h : this help'; + echo ' -v : verbose mode'; + echo ' -f : executing mode'; + echo ' (execute the program even if the number of input files'; + echo ' is not equal to the total number of domains)'; + echo ''; + exit 0;; + (v) r_v='verbose';; + (f) r_f='force';; + (o) r_o=${OPTARG};; + (:) echo ${b_n}" : option $OPTARG : missing value" 1>&2; + exit 2;; + (\?) echo ${b_n}" : option $OPTARG : not supported" 1>&2; + exit 2;; + esac + done +shift $(($OPTIND-1)); +#- +# Validate the number of arguments +#- +if [ ${#} -lt 1 ]; then + echo ${b_n}' : Too few arguments have been specified. (Use -h)' 1>&2; + exit 3; +fi +#- +# Check for the output file name +#- +if [ '\?'${r_o} = '\?' ]; then + echo ' ' 1>&2; + echo ${b_n}' : output_file_name not specified. (Use -h)' 1>&2; + echo ' "rebuilt_file.nc" should be created.' 1>&2; + echo ' ' 1>&2; + r_o='rebuilt_file.nc' +fi; +#- +# Validate the names of the input files +#- +qi=0; +for i in $*; + do ((qi=qi+1)); + [ ${qi} -le ${#} ] && [ ! -f ${i} ] && \ + { echo "${i} unreachable ..."; exit 3;} + done +#- +# Create the information file for the program +#- +echo ${r_v} > tmp.$$; +echo ${r_f} >> tmp.$$; +((qi=$#+1)); +echo ${qi} >> tmp.$$; +for i in $*; + do echo ${i} >> tmp.$$; + done +echo ${r_o} >> tmp.$$; +#- +# Create the output file +#- +${d_n}/../../../../nemo_build/flio_rbld < tmp.$$ +#- +# Clear +#- +rm -f tmp.$$ +#- +# End +#- +exit 0; diff --git a/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/NEMO/OPA_SRC/SBC/flx_core.h90 b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/NEMO/OPA_SRC/SBC/flx_core.h90 new file mode 100755 index 0000000000000000000000000000000000000000..274991f52b0dc145d0c9b624d68490e8a5ae56d8 --- /dev/null +++ b/deploy/patches/ithaca/nemo/ecearth-v2.2/nemo/modipsl/modeles/NEMO/OPA_SRC/SBC/flx_core.h90 @@ -0,0 +1,1349 @@ + + !!---------------------------------------------------------------------- + !! *** flx_core.h90 *** + !!---------------------------------------------------------------------- + !! flx : update surface thermohaline fluxes from the NCAR data set + !! read in a NetCDF file + !! + !!---------------------------------------------------------------------- + !! * Modules used C A U T I O N already defined in flxmod.F90 + !! * Module variables + !!---------------------------------------------------------------------- + !! + !! 0PA9 : 12/2006 : Laurent Brodeau : bulk routine handles both 2m and 10m input + !! values for air temperature and humidity + !! through the logical flag 'ln_2m' + !! 2 bulk routines->'TURB_CORE_1Z' and 'TURB_CORE_2Z' + !! instead of former 'TURB_CORE' (='TURB_CORE_1Z') + !! + !! 0PA9 : 07/2006 : Pierre Mathiot, J.M. Molines : Katabatic winds enhancement + !! read logical flag in namelist namcore + !! read 2D scale factor for taux, tauy (at T points) + !! + !! + INTEGER , PARAMETER :: & + & jpfile = 8 ! maximum number of files to read + + INTEGER , DIMENSION(jpfile) :: & + & numflxall, & ! logical units for surface fluxes data + & nrecflx, nrecflx2 ! first and second record to be read in flux file + INTEGER :: numkata ! logical units for katabatic masks + + INTEGER :: isnap + + REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & + & gsss, & !: SSS mean on nfbulk ocean time step + & gu , & !: Un(jk=1) mean on nfbulk ocean time step + & gv !: Vn(jk=1) mean on nfbulk ocean time step + + REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & ! these variables are used for output in diawri + & qlw_oce , & !: long wave flx over ocean + & qla_oce , & !: latent heat flx over ocean + & qsb_oce , & !: sensible heat flx over ocean + & qlw_ice , & !: long wave flx over ice + & qsb_ice !: sensible heat flx over ice + + REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: & ! used for modif wind stress in the first sea points + rmskkatax, rmskkatay !: mask ocean to increase wind stress in first sea points + + + REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpfile,2) :: & + & flxdta !: set of NCAR 6hourly/daily/monthly fluxes + + CHARACTER(LEN=32), PUBLIC, DIMENSION (jpfile) :: clvarname + CHARACTER(LEN=256), PUBLIC, DIMENSION (jpfile) :: clname + CHARACTER (LEN=32) :: clvarkatax , clvarkatay ! variable name for katabatic masks + CHARACTER (LEN=256) :: clnamekata ! filename for katabatic masks + + ! frequency for each forcing file is given in hours (if positive). + ! a negative value -12 corresponds to monthly. + REAL(wp), PUBLIC, DIMENSION(jpfile) :: freqh ! Frequency for each forcing file. + + INTEGER, PUBLIC :: & + & ndtpd !: number of time steps per day + !! + !! Variables in namelist (namcore) + LOGICAL :: & + & ln_2m = .FALSE., & !: logical flag for height of air temp. and hum. + & ln_kata = .FALSE. !: logical flag for Katabatic winds enhancement. + !! + REAL(wp) :: & + & alpha_precip=1. !: multiplication factor for precipitation + + + !!---------------------------------------------------------------------- + !! OPA 9.0 , KIEL (Ulf Schweckendiek, aug 2004) + !! recent version of dec 2004 + !! + !! April 2005, Laurent Brodeau and A.M. Treguier: + !! - new bulk routine for efficiency + !! - WINDS ARE NOW ASSUMED TO BE AT T POINTS in input files !!!! + !! - file names and file characteristics in namelist + !! - Implement reading of 6-hourly fields + !! + !! December 2005, Laurent Brodeau : + !! - inter-annual forcing + !! --> nyear is used to call the netcdf files for the current year + !! at the first time step of a new year + !! --> used monthly files (precip) should have 14 records + !! * 13rd rec = december of former year + !! * 14rd rec = january of next year + !!---------------------------------------------------------------------- + !! + !! + CONTAINS + !! + SUBROUTINE flx( kt ) + !! + !!--------------------------------------------------------------------- + !! *** ROUTINE flx *** + !! + !! ** Purpose : provide the thermohaline fluxes (heat and freshwater) + !! and momentum fluxes (tau) + !! to the ocean at each time step. + !! + !! ** Method : Read NCAR data in a NetCDF file + !! (file names and frequency of inputs specified in namelist) + !! precipitation: total (rain+snow) + !! precipitation: snow only + !! u10,v10 -> scalar wind at 10m in m/s - ON 'T' GRID POINTS!!! + !! solar radiation (short wave) in W/m2 + !! thermal radiation (long wave) in W/m2 + !! specific humidity in % + !! temperature at 10m in degrees K + !! + !! ** Action : + !! call flx_blk_albedo to compute ocean and ice albedo + !! Calculates forcing fluxes to input into ice model + ! or to be used directly for the ocean in ocesbc. + !! + !! ** Outputs + !! COMMENTS TO BE ADDED -units to be verified! + !! + !! taux: zonal wind stress on "u" points (N/m2) + !! tauy: meridional wind stress on "v" points (N/m2) + !! qsr_oce: Solar flux over the ocean (W/m2) + !! qnsr_oce: longwave flux over the ocean (W/m2) + !! qsr_ice: solar flux over the ice (W/m2) + !! qnsr_ice: longwave flux over the ice (W/m2) + !! qla_ice: + !! dqns_ice: total heat fluxes sensitivity over ice (dQ/dT) + !! dqla_ice: latent heat flux sensitivity over ice (dQla/dT) + !! fr1_i0 + !! fr2_i0 + !! tprecip + !! sprecip + !! evap + !! + !! caution : now, in the opa global model, the net upward water flux is + !! ------- with mm/day unit. + !! + !! * modules used + !USE ioipsl + USE iom + USE par_oce + USE flx_oce + USE blk_oce ! bulk variable + USE taumod + USE bulk + USE phycst + USE lbclnk + ! FOR Ce = F(SST(levitus)): + USE dtatem + + !! * arguments + INTEGER, INTENT( in ) :: kt ! ocean time step + + !! * Local declarations + LOGICAL, PARAMETER :: & + & levol = .FALSE. ! some screen output to check if bulk are called + ! at proper time steps + INTEGER , PARAMETER :: & + & jpmaxtime = 366*4 ! max time steps in file for a 6 hourly field + ! and a leap year (necessary variable for flinopen??) + INTEGER :: & + & irectot, irecflx, & + & ihour, & ! current hour of the day at which we read the forcings + & ntstyear + + INTEGER :: & + & imois, imois13, itime, & ! temporary integers + & i15 , iman , & ! " " + & ipi , ipj , ipk, & ! " " + & ifpr , jfpr , & ! frequency of index for print in prihre + & jj , ji ! Loop indices + + INTEGER, DIMENSION(jpmaxtime) :: & + & istep ! Array passed to flinopen + + REAL(wp) :: & + & zadatrjb, & ! date (noninteger day) at which we read the forcings + & zsecond, zdate0, & ! temporary scalars + & zxy ! scalar for temporal interpolation + + REAL(wp), DIMENSION(jpk) :: & + & zlev ! depths for ioipsl + + REAL(wp), DIMENSION(jpi,jpj,jpfile) :: & + & flxnow ! flux values at current time step + + REAL(wp), DIMENSION(jpi,jpj) :: & + & sstk, t04 + + REAL(wp), DIMENSION(jpi,jpj) :: & + & qtune , & !: artifical field for tuning q + & dqlw_ice , & !: long wave heat flx sensitivity over ice + & dqsb_ice , & !: sensible heat flx sensitivity over ice + & alb_ice , & !: albedo of ice + & alb_oce_os, & !: albedo of the ocean under overcast sky + & alb_ice_os, & !: albedo of the ice under overcast sky + & alb_ice_cs, & !: albedo of ice under clear sky + & alb_oce_cs, & !: albedo of the ocean under clear sky + & zsstlev, & !: SST from Levitus in K + & zsst, & !: nfbulk : mean SST + & zsss, & !: nfbulk : mean tn_ice(:,:,1) + & zut, & !: nfbulk : mean U at T-point + & zvt, & !: nfbulk : mean V at T-point + & dUnormt, & !: scalar wind (norm) on T points + & tauxt, tauyt, & !: wind stress computed at T-point + & qsatw, & !: specific humidity at zSST + & qsat, & !: specific humidity at zsss + & Ch, & !: coefficient for sensible heat flux + & Ce, & !: coefficient for latent heat flux + & Cd, & !: coefficient for wind stress + & zt_zu, & !: air temperature at wind speed height + & zq_zu, & !: air spec. hum. at wind speed height + & rhoa, & + & Lv !: latent heat of vaporization + + REAL , PARAMETER :: & + & Patm = 101000., & + & Rgas = 287.04, & ! +! & rhoa = 1.22, & ! air density + & cp = 1000.5, & ! specific heat of air +! & Lv = 2.5e6, & ! latent heat of vaporization + & Ls = 2.839e6, & ! latent heat of sublimation + & Stef = 5.67e-8, & ! Stefan Boltzmann constant + & Cice = 1.63e-3 ! transfert coefficient over ice + + REAL(wp), DIMENSION(jpi,jpj) :: & + & zlon, zlat ,catm1 + + NAMELIST/namcore/ ln_2m, ln_kata, alpha_precip + + ! Number of time steps per day + ndtpd = 3600*24/rdt !lb + + !!--------------------------------------------------------------------- + !! PART A: READING FLUX FILES WHEN NECESSARY + !! + ! + ! calculation for monthly data + ! i15 = 0 if first half of current month + ! i15 = 1 if second half of current month + i15 = INT( 2 * FLOAT( nday ) / ( FLOAT( nobis(nmonth) ) + 0.5 ) ) + iman = 12 + imois = nmonth + i15 - 1 + imois13 = imois + IF( imois == 0 ) THEN + imois = iman + imois13 = 13 ! rec=13 -> december of former year !lb + END IF + + ! + ! Calculation for 6-hourly data + ! we need the fraction of day, measured in hours, for the date of forcings. + ! This is the time step before the date we are calculating, zadatrj + ! "adatrj" (real time in days (noninteger)) + zadatrjb = adatrj - rdt/rday + ihour = int( (zadatrjb -int(zadatrjb)) * 24 ) + + ! A.1 first call kt=nit000 + ! --------------------------- + ! + ! Which file for CORE + ! ******************* + ! + ! in 'daymod' : + ! + ! nyear !: current year + ! nmonth !: current month + ! nday !: current day of the month + ! nday_year !: curent day counted from jan 1st of the current year + ! ndastp !: time step date in year/month/day aammjj + ! + ! + !! + !! read namelist block namcore + IF ( kt == nit000 ) THEN + REWIND ( numnam ) + READ(numnam, namcore) + IF ( lwp) THEN + WRITE(numout,*) 'flx_core:' + WRITE(numout,*) '~~~~~~~~~' + WRITE(numout,*) ' Read in namelist namcore:' + WRITE(numout,*) ' ln_2m = ', ln_2m + WRITE(numout,*) ' ln_kata = ', ln_kata + WRITE(numout,*) ' alpha_precip = ', alpha_precip + ENDIF + ENDIF + + !! First time step of the new starting year : + IF ( (MOD(kt - 1 , ndtpd*int(raajj)) == 0) .OR. (kt == nit000) ) THEN !lb + !! + IF(lwp) THEN + PRINT *, '***********************************' + PRINT *, ' FLX_CORE : ' + PRINT *, 'kt =', kt + PRINT *, 'ndtpd =', ndtpd + PRINT *, 'Year =', nyear + PRINT *, 'nmonth =', nmonth + PRINT *, 'nday =', nday + PRINT *, 'nday_year =', nday_year + PRINT *, 'ndastp =', ndastp + PRINT *, '***********************************' + END IF + !! + !! Giving file names for current year 'ntrue_year' + WRITE(clname(1), '("precip_core_",i4,"_14.nc")' ) nyear + clname(1)='precip14_forcing.nc' + freqh(1) =-12. ; clvarname(1) = 'precip' ! month 14 records!!! + IF (lwp) PRINT *, 'Current file for precip = ', clname(1) + !! + WRITE(clname(2), '("u10_core_",i4,".nc")' ) nyear + clname(2)='u10_forcing.nc' + freqh(2) = 6. ; clvarname(2) = 'u10' ! 6 h + IF (lwp) PRINT *, 'Current file for u10 = ', clname(2) + !! + WRITE(clname(3), '("v10_core_",i4,".nc")' ) nyear + clname(3)='v10_forcing.nc' + freqh(3) = 6. ; clvarname(3) = 'v10' ! 6 h + IF (lwp) PRINT *, 'Current file for v10 = ', clname(3) + !! +! IF ( ln_2m ) THEN + WRITE(clname(4), '("q2_core_",i4,".nc")' ) nyear + clname(4)='q2_forcing.nc' + freqh(4) = 6. ; clvarname(4) = 'q2' ! 6 h + IF (lwp) PRINT *, 'Current file for q2 = ', clname(4) +! ELSE +! WRITE(clname(4), '(a, "/q10-6H-C/q10_ERA40-ORCA1_",i4,"_C.nc")' ) trim(cfil_turb_root), nyear +! freqh(4) = 6. ; clvarname(4) = 'q10' ! 6 h +! IF (lwp) PRINT *, 'Current file for q10 = ', clname(4) +! END IF + !! + WRITE(clname(5), '("qsw_core_",i4,".nc")' ) nyear + clname(5)='qsw_forcing.nc' + freqh(5) = 24. ; clvarname(5) = 'qsw' ! day + IF (lwp) PRINT *, 'Current file for radsw = ', clname(5) + !! + WRITE(clname(6), '("qlw_core_",i4,".nc")' ) nyear + clname(6)='qlw_forcing.nc' + freqh(6) = 24. ; clvarname(6) = 'qlw' ! day + IF (lwp) PRINT *, 'Current file for radlw = ', clname(6) + !! +! IF ( ln_2m ) THEN + WRITE(clname(7), '("t2_core_",i4,".nc")' ) nyear + clname(7)='t2_forcing.nc' + freqh(7) = 6. ; clvarname(7) = 't2' ! 6 h + IF (lwp) PRINT *, 'Current file for t2 = ', clname(7) +! ELSE +! WRITE(clname(7), '(a, "/t10-6H/t10_ERA40-ORCA1_",i4,".nc")' ) trim(cfil_turb_root), nyear +! freqh(7) = 6. ; clvarname(7) = 't10' ! 6 h +! IF (lwp) PRINT *, 'Current file for t10 = ', clname(7) +! END IF + !! + !! + WRITE(clname(8), '("snow_core_",i4,"_14.nc")' ) nyear + clname(8)='snow14_forcing.nc' + freqh(8) =-12. ; clvarname(8) = 'snow' ! month 14 records!!! + IF (lwp) PRINT *, 'Current file for snow = ', clname(8) + !! + IF (lwp) PRINT *, '' + !! + !! + qsr_oce (:,:) = 0.e0 + qsb_oce (:,:) = 0.e0 + qla_oce (:,:) = 0.e0 + qlw_oce (:,:) = 0.e0 + qnsr_oce(:,:) = 0.e0 + qsr_ice (:,:) = 0.e0 + qnsr_ice(:,:) = 0.e0 + qla_ice (:,:) = 0.e0 + qlw_ice (:,:) = 0.e0 + qsb_ice (:,:) = 0.e0 + !! + dqns_ice(:,:) = 0.e0 + dqla_ice(:,:) = 0.e0 + tprecip (:,:) = 0.e0 + sprecip (:,:) = 0.e0 + evap (:,:) = 0.e0 + flxnow(:,:,:) = 0.0 + !! + ! Non-zero value for flxdta initilization to avoid division by zero (T_vpot = 0 in some points) in MPI case. + flxdta(:,:,:,:) = 999999.0 + + nrecflx (:) = 0 !! switch for reading flux data for each file + nrecflx2(:) = 0 !! switch for reading flux data for each file + !! + IF(lwp) THEN + WRITE(numout,*) ' ' + WRITE(numout,*) ' routine flx_core.h90' + WRITE(numout,*) ' global CORE fields in NetCDF format' + WRITE(numout,*) ' ---------------------------------------------' + WRITE(numout,*) ' list of files and frequency (hour), or monthly (-12) ' + DO ji = 1, jpfile + WRITE(numout,*) trim(clname(ji)),' frequency:',freqh(ji) + END DO + ENDIF + + ! Open the files of the list + !! + ipi = jpiglo ; ipj = jpjglo ; ipk = jpk + !! + DO ji=1, jpfile + CALL iom_open( clname(ji), numflxall(ji) ) + !CALL flinopen(trim(clname(ji)),mig(1),nlci,mjg(1),nlcj,.FALSE.,ipi,ipj & + ! & ,ipk,zlon,zlat,zlev,itime,istep,zdate0,zsecond,numflxall(ji)) + END DO + !! + !! + ENDIF ! if first time step of current year + !! + !! + !! + ! A. 2. now every time step read data if necessary + ! checks each file in turn + ! ---------------------------------------------- + DO ji = 1,jpfile + !! + ! Case of 6-hourly flux data + !--------------------------------------- + IF ( (freqh(ji) > 0).AND.(freqh(ji) < 24) ) THEN + + ! calculate current snapshot from hour of day : + isnap = ihour/int(freqh(ji)) + 1 + + ! reading is necessary when nrecflx(ji) differs from isnap + IF( nrecflx(ji) /= isnap ) THEN + !! + nrecflx(ji) = isnap + irecflx = (nday_year-1)*24/freqh(ji) + isnap + irectot = 365*24/freqh(ji) + !! + CALL iom_get(numflxall(ji), jpdom_data, clvarname(ji), flxdta(:,:,ji,1), irecflx) + !CALL flinget(numflxall(ji),trim(clvarname(ji)),jpidta,jpjdta,jpk, & + ! & irectot,irecflx,irecflx,mig(1),nlci,mjg(1),nlcj, & + ! & flxdta(1:nlci,1:nlcj,ji,1)) + !! + ENDIF + + ! Case of daily flux data + !------------------------------------- + ELSE IF ( freqh(ji) .EQ. 24 ) THEN + !! + !! reading is necessary when nrecflx(ji) differs from nday + IF( nrecflx(ji) /= nday ) THEN + !! + nrecflx(ji) = nday !! remember present read day of the month + irecflx = nday_year + irectot = 365 + !! + CALL iom_get( numflxall(ji), jpdom_data, clvarname(ji), flxdta(:,:,ji,1), irecflx ) + !CALL flinget(numflxall(ji),trim(clvarname(ji)),jpidta,jpjdta,jpk, & + ! & irectot,irecflx,irecflx,mig(1),nlci,mjg(1),nlcj, & + ! & flxdta(1:nlci,1:nlcj,ji,1)) + ENDIF + !! + !! Case monthly data from CORE: we read two months all the time + !! although we could only read one and swap the arrays + !! -------------------------------------------------------------- + ELSE IF ( freqh(ji) .EQ. -12 ) THEN + !! + IF( (MOD(kt - 1 , ndtpd*int(raajj)) == 0).OR. (nrecflx(ji) /= imois13) ) THEN + !! + ! calendar computation + ! nrecflx number of the first file record used in the simulation + ! nrecflx2 number of the last file record + ! + nrecflx(ji) = imois13 + nrecflx2(ji) = imois13 + 1 + IF (imois13 == 12) nrecflx2(ji) = 14 ! December y and January y+1 + IF (imois13 == 13) nrecflx2(ji) = 1 ! Yes !, December y-1 and January y + !! + irectot = 14 + !! + CALL iom_get(numflxall(ji), jpdom_data, clvarname(ji), flxdta(:,:,ji,1), & + & nrecflx(ji)) + !! + !CALL flinget(numflxall(ji),trim(clvarname(ji)),jpidta,jpjdta,jpk, & + ! & irectot,nrecflx(ji),nrecflx(ji),mig(1),nlci,mjg(1), & + ! & nlcj,flxdta(1:nlci,1:nlcj,ji,1)) + !! + CALL iom_get(numflxall(ji), jpdom_data, clvarname(ji), flxdta(:,:,ji,2), & + & nrecflx2(ji) ) + !! + !CALL flinget(numflxall(ji),trim(clvarname(ji)),jpidta,jpjdta,jpk, & + ! & irectot,nrecflx2(ji),nrecflx2(ji),mig(1),nlci,mjg(1), & + ! & nlcj,flxdta(1:nlci,1:nlcj,ji,2)) + !! + ENDIF + ENDIF + END DO + !! + + !! + ! A.3 ------------ + ! + IF ( MOD(kt - 1 , ndtpd*int(raajj)) == 0 .OR. kt == nit000 ) THEN + !! + IF(lwp) THEN + WRITE(numout,*) + WRITE(numout,*) ' read daily and monthly CORE fluxes: ok' + WRITE(numout,*) + ifpr = int(jpi/8); jfpr = int(jpj/10); + DO ji = 1, jpfile + WRITE(numout,*) trim(clvarname(ji)),' day: ',ndastp + CALL prihre(flxdta(1,1,ji,1),jpi,jpj,1,jpi,ifpr,1,jpj,jfpr,0.,numout) + WRITE(numout,*) + END DO + ENDIF + ENDIF + !! + ! --------------------------------------------------------- + ! A.4 : Interpolates fluxes in time. + ! + ! For now, only monthly values are interpolated, and they + ! are interpolated to the current day, not to the time step. + ! + DO ji=1, jpfile + IF ( freqh(ji) .EQ. -12 ) THEN + zxy = FLOAT(nday) / FLOAT(nobis(imois)) + 0.5 - i15 + flxnow(:,:,ji) = (( 1. - zxy)*flxdta(:,:,ji,1) + zxy * flxdta(:,:,ji,2)) + ELSE + flxnow(:,:,ji) = flxdta(:,:,ji,1) + ENDIF + ENDDO + !! + ! JMM : add vatm needed in tracer routines + vatm(:,:) = SQRT( flxnow(:,:,2)*flxnow(:,:,2) + flxnow(:,:,3)*flxnow(:,:,3) ) + + + !------------------------------------------------------------------ + ! PART B: BULK CALCULATION + ! for other forcing cases this is done in modules bulk.F90 + ! and flxblk + ! + !---------------------------------------------------------- + ! INITIALIZATION FOR BULKS + ! code part from bulk.F90 : + + IF( kt == nit000) THEN + ! computation of rdtbs2 + IF( nacc == 1 ) THEN + rdtbs2 = nfbulk * rdtmin * 0.5 + ELSE + rdtbs2 = nfbulk * rdt * 0.5 + ENDIF + IF ( .NOT.ln_rstart ) THEN + gsst(:,:) = ( nfbulk - 1 ) * ( tn(:,:,1) + rt0 ) + gsss(:,:) = ( nfbulk - 1 ) * tn_ice(:,:) + gu(:,:) = ( nfbulk - 1 ) * un(:,:,1) + gv(:,:) = ( nfbulk - 1 ) * vn(:,:,1) + ENDIF + ENDIF + + gsst(:,:) = gsst(:,:) + (tn(:,:,1) + rt0 ) + gsss(:,:) = gsss(:,:) + tn_ice(:,:) + gu(:,:) = gu(:,:) + un(:,:,1) + gv(:,:) = gv(:,:) + vn(:,:,1) + + + !! Time step to process flux, every nfbulk : + IF( MOD( kt - 1 , nfbulk ) == 0 ) THEN + + IF (levol.and.lwp) PRINT *, 'This time step we bulk!, kt =', kt + + zsst(:,:) = gsst(:,:) / REAL( nfbulk ) * tmask(:,:,1) ! mean sst in K + zsss(:,:) = gsss(:,:) / REAL( nfbulk ) * tmask(:,:,1) ! mean tn_ice in K + + where (zsst(:,:) .eq. 0) zsst(:,:) = rt0 !lb vilain !!??? + where (zsss(:,:) .eq. 0) zsss(:,:) = rt0 !lb // + + + + ! lb + ! Interpolation of surface current at T-point, zut and zvt : + DO ji=2, jpi + zut(ji,:) = 0.5*(gu(ji-1,:) + gu(ji,:)) / REAL( nfbulk ) + END DO + DO jj=2, jpj + zvt(:,jj) = 0.5*(gv(:,jj-1) + gv(:,jj)) / REAL( nfbulk ) + END DO + CALL lbc_lnk( zut, 'T', -1. ) + CALL lbc_lnk( zvt, 'T', -1. ) + + + ! ------------------------------------------------------------------- + ! I Radiative FLUXES + ! --------------------------------------------------------------------- + ! + alb_ice_os(:,:) = 0. ; alb_oce_os(:,:) = 0. + alb_ice_cs(:,:) = 0. ; alb_oce_cs(:,:) = 0. + ! + CALL flx_blk_albedo (alb_ice_os, alb_oce_os, alb_ice_cs, alb_oce_cs) + ! + ! + ! I.1) Radiative fluxes over ocean + ! -------------------------------- + ! + ! Solar : + qsr_oce(:,:) = (1. - 0.066)*flxnow(:,:,5) ! right sign + ! + ! Infra-red : + qlw_oce(:,:) = flxnow(:,:,6) & + & - Stef*zsst(:,:)*zsst(:,:)*zsst(:,:)*zsst(:,:) ! right sign + ! + ! + ! I.2) Radiative fluxes over ice + ! ------------------------------- + ! + ! Solar : + qsr_ice(:,:) = (1. - alb_ice_cs(:,:))*flxnow(:,:,5) ! right sign + ! + ! Infra-red : + qlw_ice(:,:) = 0.95*(flxnow(:,:,6) & + & - Stef*zsss(:,:)*zsss(:,:)*zsss(:,:)*zsss(:,:)) ! right sign + ! + !---------------------------------------------------------------------- + ! + ! + ! -------------------------------------------------------------------- + ! II Turbulent FLUXES + ! -------------------------------------------------------------------- + ! + ! scalar wind ( = | U10m - SSU | ) + ! It is important to take into account the sea surface courant + ! lb + ! Now, wind components are provided on T-points within the netcdf input file. + ! Thus, the wind module is computded at T-points taking into account the sea + ! surface currents. + dUnormt(:,:) = sqrt( (flxnow(:,:,2) - zut(:,:))*(flxnow(:,:,2) - zut(:,:)) & + & + (flxnow(:,:,3) - zvt(:,:))*(flxnow(:,:,3) - zvt(:,:)) ) + ! lb + ! + + !! Air density according to temperature and specific humidity + rhoa(:,:) = Patm/(Rgas*flxnow(:,:,7)*(1. + 0.608*flxnow(:,:,4))) + !! + IF ( lwp ) THEN + PRINT *, ''; PRINT *, '!LB: kt, rhoa moyen =', kt + PRINT *, SUM(rhoa(:,:)*tmask(:,:,1))/SUM(tmask(:,:,1)); PRINT *, '' + END IF + !! + + ! specific humidity at temp SST over salt water : + qsatw(:,:) = 0.98*640380*exp(-5107.4/zsst(:,:))/rhoa + + ! specific humidity at temp tn_ice over ice : + qsat(:,:) = 11637800*exp(-5897.8/zsss(:,:))/rhoa + + + ! CORE iterartive algo for computation of Cd, Ch, Ce at T-point : + ! =============================================================== + IF ( ln_2m ) THEN + !! If air temp. and spec. hum. are given at different height (2m) than wind (10m) : + CALL TURB_CORE_2Z(2., 10., zsst(:,:), flxnow(:,:,7), qsatw(:,:), flxnow(:,:,4), & + & dUnormt(:,:), Cd(:,:), Ch(:,:), Ce(:,:), zt_zu(:,:), zq_zu(:,:)) + ELSE + IF(lwp) PRINT *, 'Calling TURB_CORE_1Z for bulk transfert coefficients' + !! If air temp. and spec. hum. are given at same height than wind (10m) : + CALL TURB_CORE_1Z(10., zsst(:,:), flxnow(:,:,7), qsatw(:,:), flxnow(:,:,4), & + & dUnormt(:,:), Cd(:,:), Ch(:,:), Ce(:,:) ) + END IF + + + !! + !! II.1) Momentum over ocean and ice + !! --------------------------------- + !! + !! Tau_x at T-point + tauxt(:,:) = rhoa*dUnormt(:,:)*( (1. - freeze(:,:))*Cd(:,:)* & + & (flxnow(:,:,2) - zut(:,:)) + freeze(:,:)*Cice*flxnow(:,:,2) ) + ! Tau_y at T-point + tauyt(:,:) = rhoa*dUnormt(:,:)*( (1. - freeze(:,:))*Cd(:,:)* & + & (flxnow(:,:,3) - zvt(:,:)) + freeze(:,:)*Cice*flxnow(:,:,3) ) + !! + CALL lbc_lnk( tauxt(:,:), 'T', -1. ) + CALL lbc_lnk( tauyt(:,:), 'T', -1. ) + !! + !! Tau_x at U-point + DO ji=1, jpi-1 + taux(ji,:) = 0.5*(tauxt(ji,:) + tauxt(ji+1,:)) + END DO + ! + ! Tau_y at V-point + DO jj=1, jpj-1 + tauy(:,jj) = 0.5*(tauyt(:,jj) + tauyt(:,jj+1)) + END DO + ! + ! lb : should we do this here? + tauxg(:,:) = taux(:,:) ! Save components in + tauyg(:,:) = tauy(:,:) ! geographical ref on U grid + ! + ! + + ! II.2) Turbulent fluxes over ocean + ! --------------------------------- + ! + IF ( ln_2m ) THEN + !! + !! Values of temp. and hum. adjusted to 10m must be used instead of 2m values + !! Sensible Heat : ! right sign for ocean + qsb_oce(:,:) = rhoa*cp*Ch(:,:)*(zt_zu(:,:) - zsst(:,:))*dUnormt(:,:) + !! + !! Latent Heat : ! wrong sign for ocean + evap(:,:) = rhoa*Ce(:,:)*(qsatw(:,:) - zq_zu(:,:))*dUnormt(:,:) + !! + ELSE + !! + !! Sensible Heat : ! right sign for ocean + qsb_oce(:,:) = rhoa*cp*Ch(:,:)*(flxnow(:,:,7) - zsst(:,:))*dUnormt(:,:) + !! + !! Latent Heat : ! wrong sign for ocean + evap(:,:) = rhoa*Ce(:,:)*(qsatw(:,:) - flxnow(:,:,4))*dUnormt(:,:) + !! + END IF + !! + !! Computing Latent heat flux from evaporation : + Lv(:,:) = (2.501 - 0.00237*(zsst(:,:) - rt0))*1.E6 ! SST in deg. C !LB + !! + IF ( lwp ) THEN + PRINT *, ''; PRINT *, '!LB: kt, Lv moyen =', kt + PRINT *, SUM(Lv(:,:)*tmask(:,:,1))/SUM(tmask(:,:,1)); PRINT *, '' + END IF + !! + qla_oce(:,:) = -Lv*evap(:,:) ! right sign for ocean + + + + ! II.3) Turbulent fluxes over ice + ! ------------------------------- + ! + ! Sensible Heat : + qsb_ice(:,:) = rhoa*cp*Cice*( flxnow(:,:,7) - zsss(:,:) )*dUnormt(:,:) + !lb use dUnormt??? or rather Unormt? + ! + ! Latent Heat : + qla_ice(:,:) = Ls*rhoa*Cice*( flxnow(:,:,4) - qsat(:,:) )*dUnormt(:,:) + ! !right sign for ocean + ! + !-------------------------------------------------------------------- + + + ! ------------------------------------------------------------------- + ! III Total FLUXES + ! ---------------------------------------------------------------------- + ! + ! III.1) Downward Non Solar flux over ocean + ! ----------------------------------------- + qnsr_oce(:,:) = qlw_oce(:,:) + qsb_oce(:,:) + qla_oce(:,:) + ! + ! III.1) Downward Non Solar flux over ice + ! --------------------------------------- + qnsr_ice(:,:) = qlw_ice(:,:) + qsb_ice(:,:) + qla_ice(:,:) + ! + !---------------------------------------------------------------------- + + + ! 6. TOTAL NON SOLAR SENSITIVITY + + dqlw_ice(:,:)= 4.0*0.95*Stef*zsss(:,:)*zsss(:,:)*zsss(:,:) + + ! d qla_ice/ d zsss +! dqla_ice(:,:) = -Ls*Cice*0.98*11637800/(rhoa*rhoa) & +! & * (-5897.8)/(zsss(:,:)*zsss(:,:)) & +! & * exp(-5897.8/zsss(:,:)) * dUnormt(:,:) +! +!!!LB + dqla_ice(:,:) = -Ls * Cice * 5897.8 * 11637800. / & + & (zsss(:,:)*zsss(:,:)) * exp(-5897.8/zsss(:,:)) * dUnormt(:,:) +!!!LB + + ! d qsb_ice/ d zsss + dqsb_ice(:,:) = rhoa * cp * Cice * dUnormt(:,:) + + dqns_ice(:,:) = - ( dqlw_ice(:,:) + dqsb_ice(:,:) + dqla_ice(:,:) ) + + + !-------------------------------------------------------------------- + ! FRACTION of net shortwave radiation which is not absorbed in the + ! thin surface layer and penetrates inside the ice cover + ! ( Maykut and Untersteiner, 1971 ; Elbert and Curry, 1993 ) + + !LB: Steve + catm1(:,:) = 1.0 - 0.3 + fr1_i0(:,:) = (0.18 * (1.0-catm1(:,:)) + 0.35 * catm1(:,:) ) + fr2_i0(:,:) = (0.82 * (1.0-catm1(:,:)) + 0.65 * catm1(:,:) ) + ! + ! + !catm1(:,:) = 1.0 - 0.3 ! flxnow(:,:,8) + !fr1_i0(:,:) = & + ! (0.18 * catm1(:,:) + 0.35 * flxnow(:,:,8)) + !fr2_i0(:,:) = & + ! (0.82 * catm1(:,:) + 0.65 * flxnow(:,:,8)) + ! + !! Precipitation (mm/s == kg/m2/s): (LB 04/2007) + !! =============================== + !! -> rename precipitation for freshwater budget calculations + !! -> applying alpha_precip only between -55N and 30N + DO ji = 1, jpi + DO jj = 1, jpj + IF( (gphit(ji,jj) > -55.).AND.(gphit(ji,jj) < 30.) ) THEN + tprecip(ji,jj) = alpha_precip*flxnow(ji,jj,1) + sprecip(ji,jj) = alpha_precip*flxnow(ji,jj,8) + ELSE + tprecip(ji,jj) = flxnow(ji,jj,1) + sprecip(ji,jj) = flxnow(ji,jj,8) + END IF + END DO + END DO + watm(:,:) = tprecip(:,:)*rday + !! + !!--------------------------------------------------------------------- + + + CALL lbc_lnk( taux (:,:) , 'U', -1. ) + CALL lbc_lnk( tauy (:,:) , 'V', -1. ) + CALL lbc_lnk( qsr_oce (:,:) , 'T', 1. ) + CALL lbc_lnk( qnsr_oce(:,:) , 'T', 1. ) + CALL lbc_lnk( qsr_ice (:,:) , 'T', 1. ) + CALL lbc_lnk( qnsr_ice(:,:) , 'T', 1. ) + CALL lbc_lnk( qla_ice (:,:) , 'T', 1. ) + CALL lbc_lnk( dqns_ice(:,:) , 'T', 1. ) + CALL lbc_lnk( dqla_ice(:,:) , 'T', 1. ) + CALL lbc_lnk( fr1_i0 (:,:) , 'T', 1. ) + CALL lbc_lnk( fr2_i0 (:,:) , 'T', 1. ) + CALL lbc_lnk( tprecip (:,:) , 'T', 1. ) + CALL lbc_lnk( sprecip (:,:) , 'T', 1. ) + CALL lbc_lnk( evap (:,:) , 'T', 1. ) + !! + !! + !! NEVER mask the windstress!! + qsr_oce (:,:) = qsr_oce (:,:)*tmask(:,:,1) + qnsr_oce(:,:) = qnsr_oce(:,:)*tmask(:,:,1) + qsr_ice (:,:) = qsr_ice (:,:)*tmask(:,:,1) + qnsr_ice(:,:) = qnsr_ice(:,:)*tmask(:,:,1) + qla_ice (:,:) = qla_ice (:,:)*tmask(:,:,1) + dqns_ice(:,:) = dqns_ice(:,:)*tmask(:,:,1) + dqla_ice(:,:) = dqla_ice(:,:)*tmask(:,:,1) + fr1_i0 (:,:) = fr1_i0 (:,:)*tmask(:,:,1) + fr2_i0 (:,:) = fr2_i0 (:,:)*tmask(:,:,1) + tprecip (:,:) = tprecip (:,:)*tmask(:,:,1) + sprecip (:,:) = sprecip (:,:)*tmask(:,:,1) + evap (:,:) = evap (:,:)*tmask(:,:,1) + gsst(:,:) = 0. + gsss(:,:) = 0. + gu(:,:) = 0. + gv(:,:) = 0. + + + ENDIF ! IF( MOD( kt - 1 , nfbulk ) == 0 ) THEN + + ! ------------------- ! + ! Last call kt=nitend ! + ! ------------------- ! + + ! Closing of the numflx file (required in mpp) + + IF( kt == nitend ) THEN + DO ji=1, jpfile + !CALL flinclo(numflxall(ji)) + CALL iom_close(numflxall(ji)) + ENDDO + ENDIF + !! + END SUBROUTINE flx + + +!!############################################################################################# + !! ====================== + !! | BULK SUBROUTINES: | + !! ====================== + SUBROUTINE TURB_CORE_2Z(zt, zu, sst, T_zt, q_sat, q_zt, dU, Cd, Ch, Ce, T_zu, q_zu) + !! + !! Author: Laurent Brodeau, 2006 / brodeau@gmail.com + !! + !!======================================================================= + !! + !! INPUT : + !! ------- + !! - zt = height for T_zt and q_zt [m] (scalar) + !! - zu = height for dU [m] (scalar) + !! - sst = sea surface temperature [Kelvin] (array 2D) + !! - T_zt = air temperature at zt [K] (array 2D) + !! - q_sat = spec. hum. at saturation at sst [kg/kg] (array 2D) + !! - q_zt = air spec. hum. at zt [kg/kg] (array 2D) + !! - dU = wind (mind sea currents !) at zu [m/s] (array 2D) + !! + !! + !! OUTPUT : + !! -------- + !! - Cd = momentum transfert coefficient at zu (array 2D) + !! - Ch = sensible heat transfert coefficient at zu (array 2D) + !! - Ce = evaporation transfert coefficient at zu (array 2D) + !! - T_zu = air temperature adjusted at zu [Kelvin] (array 2D) + !! - q_zu = air spec. hum. adjusted at z [kg/kg] (array 2D) + !! + !! + !!======================================================================== + !! + !! + !! Input variables : + !! ----------------- + REAL(wp), INTENT(in) :: & + & zt, & ! height for T_zt and q_zt [m] + & zu ! height for dU [m] + !! + REAL(wp), INTENT(in), DIMENSION(jpi,jpj) :: & + & sst, & ! sea surface temperature [Kelvin] + & T_zt, & ! potential air temperature [Kelvin] + & q_sat, & ! sea surface specific humidity [kg/kg] + & q_zt, & ! specific air humidity [kg/kg] + & dU ! wind module |U(zu)-U(0)| [m/s] + !! + !! OUTPUT : + !! -------- + REAL(wp), INTENT(out), DIMENSION(jpi,jpj) :: & + & Cd, Ch, Ce, & + & T_zu, & ! air temp. shifted at zu [K] + & q_zu ! spec. hum. shifted at zu [kg/kg] + !! + !! + !! LOCAL : + !! ------- + INTEGER, PARAMETER :: nb_itt = 3 ! number of itterations + !! + !! Some physical constants : + REAL(wp), PARAMETER :: & + & kappa = 0.4 ! von Karman's constant + !! + REAL(wp), DIMENSION(jpi,jpj) :: & + & dU10, & ! dU [m/s] + & dT, & ! air/sea temperature differeence [K] + & dq, & ! air/sea humidity difference [K] + & Cd_n10, & ! 10m neutral drag coefficient + & Ce_n10, & ! 10m neutral latent coefficient + & Ch_n10, & ! 10m neutral sensible coefficient + & sqrt_Cd_n10, & ! root square of Cd_n10 + & sqrt_Cd, & ! root square of Cd + & T_vpot_u, & ! virtual potential temperature [K] + & T_star, & ! turbulent scale of tem. fluct. + & q_star, & ! turbulent humidity of temp. fluct. + & U_star, & ! turb. scale of velocity fluct. + & L, & ! Monin-Obukov length [m] + & zeta_u, & ! stability parameter at height zu + & zeta_t, & ! stability parameter at height zt + & psi_m_u, psi_h_u, psi_h_t, & + & U_n10, & ! neutral wind velocity at 10m [m] + & xlogt, xct + !! + INTEGER :: j_itt + !! + !! Local integer arrays + INTEGER, DIMENSION(jpi,jpj) :: & + & stab ! 1st stability test integer + !! + !! + !! S T A R T + !! + !! Initial air/sea differences + dU10 = max(0.5, dU) ; dT = T_zt - sst ; dq = q_zt - q_sat + !! + !! Neutral Drag Coefficient : + stab = 0.5 + sign(0.5,dT) ! stab = 1 if dT > 0 -> STABLE + Cd_n10 = 1E-3*( 2.7/dU10 + 0.142 + dU10/13.09 ) + sqrt_Cd_n10 = sqrt(Cd_n10) + Ce_n10 = 1E-3*( 34.6 * sqrt_Cd_n10 ) + Ch_n10 = 1E-3*sqrt_Cd_n10*(18*stab + 32.7*(1 - stab)) + !! + !! Initializing transf. coeff. with their first guess neutral equivalents : + Cd = Cd_n10 ; Ce = Ce_n10 ; Ch = Ch_n10 ; sqrt_Cd = sqrt(Cd) + !! + !! Initializing z_u values with z_t values : + T_zu = T_zt ; q_zu = q_zt + !! + !! Now starting iteration loop + !! --------------------------- + DO j_itt=1, nb_itt + !! + !! Updating air/sea differences : + dT = T_zu - sst ; dq = q_zu - q_sat + !! + !! Updating virtual potential temperature at zu : + T_vpot_u = T_zu*(1. + 0.608*q_zu) + !! + !! Updating turbulent scales : (L & Y eq. (7)) + U_star = sqrt_Cd*dU10 ; T_star = Ch/sqrt_Cd*dT ; q_star = Ce/sqrt_Cd*dq + !! + !! Estimate the Monin-Obukov length at height zu : + L = (U_star*U_star) & + & / (kappa*grav/T_vpot_u*(T_star*(1.+0.608*q_zu) + 0.608*T_zu*q_star)) + !! + !! Stability parameters : + zeta_u = zu/L ; zeta_u = sign( min(abs(zeta_u),10.0), zeta_u ) + zeta_t = zt/L ; zeta_t = sign( min(abs(zeta_t),10.0), zeta_t ) + !! + psi_m_u = psi_m(zeta_u) ; psi_h_u = psi_h(zeta_u) + psi_h_t = psi_h(zeta_t) + !! + !! Shifting the wind speed to 10m and neutral stability : (L & Y eq.(9a)) + U_n10 = dU10/(1. + sqrt_Cd_n10/kappa*(log(zu/10.) - psi_m_u)) + !! + !! Shifting temperature and humidity at zu : (L & Y eq. (9b-9c)) + T_zu = T_zt - T_star/kappa*(log(zt/zu) + psi_h_u - psi_h_t) + q_zu = q_zt - q_star/kappa*(log(zt/zu) + psi_h_u - psi_h_t) + !! + !! q_zu cannot have a negative value : forcing 0 + stab = 0.5 + sign(0.5,q_zu) ; q_zu = stab*q_zu + !! + !! Updating the neutral 10m transfer coefficients : + Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! L & Y eq. (6a) + sqrt_Cd_n10 = sqrt(Cd_n10) + Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) + stab = 0.5 + sign(0.5,zeta_u) + Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! L & Y eq. (6c-6d) + !! + !! + !! Shifting the neutral 10m transfer coefficients to (zu,zeta_u) : + xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10.) - psi_m_u) + Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) + !! + xlogt = log(zu/10.) - psi_h_u + !! + xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 + Ch = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct + !! + xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 + Ce = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct + !! + !! + END DO + !! + END SUBROUTINE TURB_CORE_2Z + + SUBROUTINE TURB_CORE_1Z(zu, sst, T_a, q_sat, q_a, dU, Cd, Ch, Ce) + !! + !! Author: Laurent Brodeau, 2006 / brodeau@gmail.com + !! + !!=================================================================================== + !! + !! Caution: this procedure should only be used when air temperature (T_air), + !! specific humidity (q_air) and wind (dU) are given at the same height 'zu' (10m)! + !! + !! + !! INPUT : + !! ------- + !! - zu = height for given wind module [m] (scalar) + !! - sst = sea surface temperature [Kelvin] (array 2D) + !! - T_a = potential air temperature at zu [Kelvin] (array 2D) + !! - q_sat = spec. hum. at saturation at sst [kg/kg] (array 2D) + !! - q_a = specific air humidity at zu [kg/kg] (array 2D) + !! - dU = wind (mind sea currents !) at zu [m/s] (array 2D) + !! + !! OUTPUT : + !! -------- + !! - Cd = momentum transfert coefficient (array 2D) + !! - Ch = sensible heat transfert coefficient (array 2D) + !! - Ce = evaporation transfert coefficient (array 2D) + !! + !! + !!===================================================================================== + !! + !! Input variables : + !! ----------------- + REAL(wp), INTENT(in) :: zu ! altitude of wind measurement [m] + REAL(wp), INTENT(in), DIMENSION(jpi,jpj) :: & + & sst, & ! sea surface temperature [Kelvin] + & T_a, & ! potential air temperature [Kelvin] + & q_sat, & ! sea surface specific humidity [kg/kg] + & q_a, & ! specific air humidity [kg/kg] + & dU ! wind module |U(zu)-U(0)| [m/s] + !! + !! Output variables : + !! ------------------ + REAL(wp), intent(out), DIMENSION(jpi,jpj) :: & + & Cd, & ! transfer coefficient for momentum (tau) + & Ch, & ! transfer coefficient for temperature (Q_sens) + & Ce ! tansfert coefficient for evaporation (Q_lat) + !! + !! + !! Local variables : + !! ----------------- + !! + INTEGER, PARAMETER :: nb_itt = 3 + !! + !! Some physical constants : + REAL(wp), PARAMETER :: & + & grav = 9.8, & ! gravity + & kappa = 0.4 ! von Karman s constant + !! + REAL(wp), DIMENSION(jpi,jpj) :: & + & dU10, & ! dU [m/s] + & dT, & ! air/sea temperature differeence [K] + & dq, & ! air/sea humidity difference [K] + & Cd_n10, & ! 10m neutral drag coefficient + & Ce_n10, & ! 10m neutral latent coefficient + & Ch_n10, & ! 10m neutral sensible coefficient + & sqrt_Cd_n10, & ! root square of Cd_n10 + & sqrt_Cd, & ! root square of Cd + & T_vpot, & ! virtual potential temperature [K] + & T_star, & ! turbulent scale of tem. fluct. + & q_star, & ! turbulent humidity of temp. fluct. + & U_star, & ! turb. scale of velocity fluct. + & L, & ! Monin-Obukov length [m] + & zeta, & ! stability parameter at height zu + & psi_m_u, & + & U_n10, & ! neutral wind velocity at 10m [m] + & xlogt, xct + !! + INTEGER :: j_itt + !! + !! Local integer arrays + INTEGER, DIMENSION(jpi,jpj) :: & + & stab ! 1st guess stability test integer + !! + !! + !! Air/sea differences + dU10 = max(0.5, dU) ; dT = T_a - sst ; dq = q_a - q_sat + !! + !! Virtual potential temperature + T_vpot = T_a*(1. + 0.608*q_a) + !! + !! Neutral Drag Coefficient + stab = 0.5 + sign(0.5,dT) ! stable : stab = 1 ; unstable : stab = 0 + Cd_n10 = 1E-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 ) ! \\ L & Y eq. (6a) + sqrt_Cd_n10 = sqrt(Cd_n10) + Ce_n10 = 1E-3 * ( 34.6 * sqrt_Cd_n10 ) ! \\ L & Y eq. (6b) + Ch_n10 = 1E-3*sqrt_Cd_n10*(18*stab + 32.7*(1-stab)) ! \\ L & Y eq. (6c), (6d) + !! + !! Initializing transfert coefficients with their first guess neutral equivalents : + Cd = Cd_n10 ; Ce = Ce_n10 ; Ch = Ch_n10 ; sqrt_Cd = sqrt(Cd) + !! + !! + !! Now starting iteration loop + !! --------------------------- + DO j_itt=1, nb_itt + !! + !! Turbulent scales : + U_star = sqrt_Cd*dU10 ! \\ L & Y eq. (7a) + T_star = Ch/sqrt_Cd*dT ! \\ L & Y eq. (7b) + q_star = Ce/sqrt_Cd*dq ! \\ L & Y eq. (7c) + !! + !! Estimate the Monin-Obukov length : + L = (U_star**2)/( kappa*grav*(T_star/T_vpot + q_star/(q_a + 1./0.608)) ) + !! + !! Stability parameters : + zeta = zu/L ; zeta = sign( min(abs(zeta),10.0), zeta ) + !! + psi_m_u = psi_m(zeta) + + !! Shifting the wind speed to 10m and neutral stability : + U_n10 = dU10*1./(1. + sqrt_Cd_n10/kappa*(log(zu/10.) - psi_m_u)) ! \\ L & Y eq. (9a) + !! + !! Updating the neutral 10m transfer coefficients : + Cd_n10 = 1E-3 * (2.7/U_n10 + 0.142 + U_n10/13.09) ! \\ L & Y eq. (6a) + sqrt_Cd_n10 = sqrt(Cd_n10) + Ce_n10 = 1E-3 * (34.6 * sqrt_Cd_n10) ! \\ L & Y eq. (6b) + stab = 0.5 + sign(0.5,zeta) + Ch_n10 = 1E-3*sqrt_Cd_n10*(18.*stab + 32.7*(1-stab)) ! \\ L & Y eq. (6c), (6d) + !! + !! + !! Shifting the neutral 10m transfer coefficients to ( zu , zeta ) : + !! + xct = 1. + sqrt_Cd_n10/kappa*(log(zu/10) - psi_m_u) + Cd = Cd_n10/(xct*xct) ; sqrt_Cd = sqrt(Cd) + !! + xlogt = log(zu/10.) - psi_h(zeta) + !! + xct = 1. + Ch_n10*xlogt/kappa/sqrt_Cd_n10 + Ch = Ch_n10*sqrt_Cd/sqrt_Cd_n10/xct + !! + xct = 1. + Ce_n10*xlogt/kappa/sqrt_Cd_n10 + Ce = Ce_n10*sqrt_Cd/sqrt_Cd_n10/xct + !! + END DO + !! + END SUBROUTINE TURB_CORE_1Z + + FUNCTION psi_m(zta) !! Psis, L & Y eq. (8c), (8d), (8e) + REAL(wp), PARAMETER :: pi = 3.14159 + REAL(wp), DIMENSION(jpi,jpj) :: psi_m + REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: zta + REAL(wp), DIMENSION(jpi,jpj) :: X2, X, stabit + X2 = sqrt(abs(1. - 16.*zta)) ; X2 = max(X2 , 1.0) ; X = sqrt(X2) + stabit = 0.5 + sign(0.5,zta) + psi_m = -5.*zta*stabit & ! Stable + & + (1. - stabit)*(2*log((1. + X)/2) + log((1. + X2)/2) - 2*atan(X) + pi/2) ! Unstable + END FUNCTION psi_m + + FUNCTION psi_h(zta) !! Psis, L & Y eq. (8c), (8d), (8e) + REAL(wp), DIMENSION(jpi,jpj) :: psi_h + REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: zta + REAL(wp), DIMENSION(jpi,jpj) :: X2, X, stabit + X2 = sqrt(abs(1. - 16.*zta)) ; X2 = max(X2 , 1.) ; X = sqrt(X2) + stabit = 0.5 + sign(0.5,zta) + psi_h = -5.*zta*stabit & ! Stable + & + (1. - stabit)*(2.*log( (1. + X2)/2. )) ! Unstable + END FUNCTION psi_h + + +!!################################################################################################# + + + + + SUBROUTINE flx_blk_albedo( palb , palcn , palbp , palcnp ) + !!---------------------------------------------------------------------- + !! *** ROUTINE flx_blk_albedo *** + !! + !! ** Purpose : Computation of the albedo of the snow/ice system + !! as well as the ocean one + !! + !! ** Method : - Computation of the albedo of snow or ice (choose the + !! right one by a large number of tests + !! - Computation of the albedo of the ocean + !! + !! References : + !! Shine and Hendersson-Sellers 1985, JGR, 90(D1), 2243-2250. + !! + !! History : + !! 8.0 ! 01-04 (LIM 1.0) + !! 8.5 ! 03-07 (C. Ethe, G. Madec) Optimization (old name:shine) + !!---------------------------------------------------------------------- + !! * Modules used + USE ice ! ??? + + !! * Arguments + REAL(wp), DIMENSION(jpi,jpj), INTENT(out) :: & + palb , & ! albedo of ice under overcast sky + palcn , & ! albedo of ocean under overcast sky + palbp , & ! albedo of ice under clear sky + palcnp ! albedo of ocean under clear sky + + !! * Local variables + INTEGER :: & + ji, jj ! dummy loop indices + REAL(wp) :: & + c1 = 0.05 , & ! constants values + c2 = 0.1 , & + albice = 0.50 , & ! albedo of melting ice in the arctic and antarctic (Shine & Hendersson-Sellers) + cgren = 0.06 , & ! correction of the snow or ice albedo to take into account + ! effects of cloudiness (Grenfell & Perovich, 1984) + alphd = 0.80 , & ! coefficients for linear interpolation used to compute + alphdi = 0.72 , & ! albedo between two extremes values (Pyane, 1972) + alphc = 0.65 , & + zmue = 0.4 , & ! cosine of local solar altitude + zzero = 0.0 , & + zone = 1.0 + + REAL(wp) :: & + zmue14 , & ! zmue**1.4 + zalbpsnm , & ! albedo of ice under clear sky when snow is melting + zalbpsnf , & ! albedo of ice under clear sky when snow is freezing + zalbpsn , & ! albedo of snow/ice system when ice is coverd by snow + zalbpic , & ! albedo of snow/ice system when ice is free of snow + zithsn , & ! = 1 for hsn >= 0 ( ice is cov. by snow ) ; = 0 otherwise (ice is free of snow) + zitmlsn , & ! = 1 freezinz snow (sist >=rt0_snow) ; = 0 melting snow (sist c1 + zihsc2 ! = 1 hsn >= c2 ; = 0 hsn < c2 + REAL(wp), DIMENSION(jpi,jpj) :: & + zalbfz , & ! ( = alphdi for freezing ice ; = albice for melting ice ) + zficeth ! function of ice thickness + LOGICAL , DIMENSION(jpi,jpj) :: & + llmask + !! to be included for without seaice + !! REAL(wp), DIMENSION(jpi,jpj) :: & !: + !! sist , & !: Sea-Ice Surface Temperature (Kelvin ) + !! hsnif , & !: Snow thickness + !! hicif !: Ice thickness + + !!--------------------------------------------------------------------- + + !------------------------- + ! Computation of zficeth + !-------------------------- + + llmask = (hsnif == 0.0) .AND. ( sist >= rt0_ice ) + WHERE ( llmask ) ! ice free of snow and melts + zalbfz = albice + ELSEWHERE + zalbfz = alphdi + END WHERE + + DO jj = 1, jpj + DO ji = 1, jpi + IF( hicif(ji,jj) > 1.5 ) THEN + zficeth(ji,jj) = zalbfz(ji,jj) + ELSEIF( hicif(ji,jj) > 1.0 .AND. hicif(ji,jj) <= 1.5 ) THEN + zficeth(ji,jj) = 0.472 + 2.0 * ( zalbfz(ji,jj) - 0.472 ) * ( hicif(ji,jj) - 1.0 ) + ELSEIF( hicif(ji,jj) > 0.05 .AND. hicif(ji,jj) <= 1.0 ) THEN + zficeth(ji,jj) = 0.2467 + 0.7049 * hicif(ji,jj) & + & - 0.8608 * hicif(ji,jj) * hicif(ji,jj) & + & + 0.3812 * hicif(ji,jj) * hicif(ji,jj) * hicif (ji,jj) + ELSE + zficeth(ji,jj) = 0.1 + 3.6 * hicif(ji,jj) + ENDIF + END DO + END DO + + !----------------------------------------------- + ! Computation of the snow/ice albedo system + !-------------------------- --------------------- + + ! Albedo of snow-ice for clear sky. + !----------------------------------------------- + DO jj = 1, jpj + DO ji = 1, jpi + ! Case of ice covered by snow. + ! melting snow + zihsc1 = 1.0 - MAX ( zzero , SIGN ( zone , - ( hsnif(ji,jj) - c1 ) ) ) + zalbpsnm = ( 1.0 - zihsc1 ) & + * ( zficeth(ji,jj) + hsnif(ji,jj) * ( alphd - zficeth(ji,jj) ) / c1 ) & + & + zihsc1 * alphd + ! freezing snow + zihsc2 = MAX ( zzero , SIGN ( zone , hsnif(ji,jj) - c2 ) ) + zalbpsnf = ( 1.0 - zihsc2 ) * & + ( albice + hsnif(ji,jj) * ( alphc - albice ) / c2 ) & + & + zihsc2 * alphc + + zitmlsn = MAX ( zzero , SIGN ( zone , sist(ji,jj) - rt0_snow ) ) + zalbpsn = zitmlsn * zalbpsnf + ( 1.0 - zitmlsn ) * zalbpsnm + + ! Case of ice free of snow. + zalbpic = zficeth(ji,jj) + + ! albedo of the system + zithsn = 1.0 - MAX ( zzero , SIGN ( zone , - hsnif(ji,jj) ) ) + palbp(ji,jj) = zithsn * zalbpsn + ( 1.0 - zithsn ) * zalbpic + END DO + END DO + + ! Albedo of snow-ice for overcast sky. + !---------------------------------------------- + palb(:,:) = palbp(:,:) + cgren + + !-------------------------------------------- + ! Computation of the albedo of the ocean + !-------------------------- ----------------- + + + ! Parameterization of Briegled and Ramanathan, 1982 + zmue14 = zmue**1.4 + palcnp(:,:) = 0.05 / ( 1.1 * zmue14 + 0.15 ) + + ! Parameterization of Kondratyev, 1969 and Payne, 1972 + palcn(:,:) = 0.06 + + END SUBROUTINE flx_blk_albedo + + diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..47089a8227c1d947f4f5f2838f83f15a8b3b1302 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/compilation.cmd @@ -0,0 +1,59 @@ +#!/bin/bash + +# Modify jpni, jpnj and jpnij in the following code +# according to no. of proc to be used. +# vi ../../modeles/NEMO/OPA_SRC/par_oce.F90 + +# Modify compiler options in the following configuration +# file. +# vi ../../util/AA_make.gdef + +nemo_i=6 +nemo_j=6 + +while getopts i:j: option +do + case $option in + i) nemo_i=$OPTARG;; + j) nemo_j=$OPTARG;; + \?) exit 1;; + esac +done + +source /opt/modules/init/bash +module load intel/12.1 +module load openmpi/1.6-intel + +set -xuve +date + +sed -e "s/ABC/$nemo_i/" \ + -e "s/DEF/$nemo_j/" \ + -e "s/GHI/$((nemo_i*nemo_j))/" \ +../../modeles/NEMO/OPA_SRC/par_oce.F90.orig > ../../modeles/NEMO/OPA_SRC/tmp +mv ../../modeles/NEMO/OPA_SRC/tmp ../../modeles/NEMO/OPA_SRC/par_oce.F90 + +compile=platine + +# MODEL Compilation +# ================= +rm -rf ../../lib/* +set +e +gmake clean +cp scripts/BB_make.ldef_1st scripts/BB_make.ldef +../../util/ins_make -t $compile +cat Makefile +gmake +cp scripts/BB_make.ldef_2nd scripts/BB_make.ldef +../../util/ins_make -t $compile +cat Makefile +gmake +set -e + +# TOOLS Compilation +# ================ +cd ../../modeles/IOIPSL/tools +gmake clean +gmake + +date diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd new file mode 100755 index 0000000000000000000000000000000000000000..98de043d1c359584afd821ffad10125569545c7e --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/cp.cmd @@ -0,0 +1,10 @@ +#!/bin/bash + +set -xuve + +mkdir -p ../../../../bin +ls -lrt ../../../../bin + +cp -pf ../../bin/* ../../../../bin + +ls -lrt ../../../../bin diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd new file mode 100755 index 0000000000000000000000000000000000000000..8ee2468572c1c3676c226fd90a74cc4117fba6aa --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/run_nemo-v3.2-orca1.cmd @@ -0,0 +1,99 @@ +#!/bin/ksh +############################################################################### +# RUN NEMO +############################################################################### +# +#$ -N run_nemo-v3.2-orca1 +#$ -cwd +#$ -S /bin/ksh +#$ -V +#$ -pe orte 36 +# + +# General settings +source /opt/modules/init/ksh +module load intel/12.1 +module load openmpi/1.6-intel +# tell OpenMPI to only use infiniband +export OMPI_MCA_btl=sm,self,openib + +date +set -xuv + +NEMO=/scratch/cfu/models/nemo/v3.2 +TESTDATADIR=$NEMO/inidata +FORCED=DFS4.1 +FORCING=/share/data/cfu/common/nemo_forcing/$FORCED +WRITINGDIR=/scratch/cfu/$USER/test +RUN_dir=$WRITINGDIR/run_nemo-v3.2-orca1_$JOB_ID + +NPROCNEMO=36 +YEAR=1990 + +mkdir -p ${RUN_dir} || true +cd ${RUN_dir} + +cp ${NEMO}/bin/opa opa.xx +chmod 770 opa.xx + +cp ${NEMO}/setup/namelist.v3.2.default.${FORCED} namelist +cp ${NEMO}/setup/namelist_ice.v3.2.default namelist_ice + +cp ${TESTDATADIR}/EMPave_old.dat EMPave_old.dat +cp ${TESTDATADIR}/geothermal_heating.nc geothermal_heating.nc +cp ${TESTDATADIR}/coordinates_ukorca1.nc coordinates.nc +cp ${TESTDATADIR}/bathy_meter_050308_UKMO.nc bathy_meter.nc +cp ${TESTDATADIR}/basinmask_050308_UKMO.nc basinmasks.nc +cp ${TESTDATADIR}/runoff_1m_ORCA1.nc runoff_1m_nomask.nc +cp ${TESTDATADIR}/sst_1m_ORCA1.nc sst_1m.nc +cp ${TESTDATADIR}/sss_1m_ORCA1.nc sss_1m.nc +cp ${TESTDATADIR}/dust_1m_ORCA1.nc dust_1m.nc +cp ${TESTDATADIR}/ahmcoef ahmcoef + +cp ${TESTDATADIR}/bathy_level42_050308_UKMO.nc bathy_level.nc +cp ${TESTDATADIR}/potemp05_1m_z42_nomask.nc data_1m_potential_temperature_nomask.nc +cp ${TESTDATADIR}/salin05_1m_z42_nomask.nc data_1m_salinity_nomask.nc + +ln -s ${TESTDATADIR}/weights_grid02_bicubic_orca1.nc weights_grid02_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid02_bilinear_orca1.nc weights_grid02_bilinear_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bicubic_orca1.nc weights_grid03_bicubic_orca1.nc +ln -s ${TESTDATADIR}/weights_grid03_bilinear_orca1.nc weights_grid03_bilinear_orca1.nc + +case $FORCED in + DFS4.1) + ln -s ${FORCING}/${YEAR}_1d_${FORCED}_lwdn.nc qlw_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_1d_${FORCED}_swdn.nc qsw_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_6hr_${FORCED}_q2m.nc q2_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_6hr_${FORCED}_t2m.nc t2_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_6hr_${FORCED}_u10.nc u10_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_6hr_${FORCED}_v10.nc v10_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_1m_${FORCED}_precip.nc precip_core_y${YEAR}.nc + ln -s ${FORCING}/${YEAR}_1m_${FORCED}_snow.nc snow_core_y${YEAR}.nc + ;; + DFS4.3) + ln -s ${FORCING}/qlw_${FORCED}_${YEAR}.nc qlw_core_y${YEAR}.nc + ln -s ${FORCING}/qsw_${FORCED}_${YEAR}.nc qsw_core_y${YEAR}.nc + ln -s ${FORCING}/q2_${FORCED}_${YEAR}.nc q2_core_y${YEAR}.nc + ln -s ${FORCING}/t2_${FORCED}_${YEAR}.nc t2_core_y${YEAR}.nc + ln -s ${FORCING}/u10_${FORCED}_${YEAR}.nc u10_core_y${YEAR}.nc + ln -s ${FORCING}/v10_${FORCED}_${YEAR}.nc v10_core_y${YEAR}.nc + ln -s ${FORCING}/precip_${FORCED}_${YEAR}.nc precip_core_y${YEAR}.nc + ln -s ${FORCING}/snow_${FORCED}_${YEAR}.nc snow_core_y${YEAR}.nc + ;; + *) + echo "$FORCED is not available" + ;; +esac + +for ((l=0; l<$NPROCNEMO; l++)); do + ln -sf coordinates.nc coordinates_$(printf "%03d" $l).nc + ln -sf geothermal_heating.nc geothermal_heating_$(printf "%03d" $l).nc +done + +ls -alF + +ulimit -s unlimited + +time mpirun opa.xx + +date diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig new file mode 100755 index 0000000000000000000000000000000000000000..e08d5da00dbdcf2a95fa935d3c832c165970ade9 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef.orig @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_orca_r2 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_diahth key_iomput + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st new file mode 100755 index 0000000000000000000000000000000000000000..e04fc95ea6290b1e62c4422625725d68b4e46b43 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_1st @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_mpp_mpi + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd new file mode 100755 index 0000000000000000000000000000000000000000..1aa899904d78cc68c37381cfc1b19c6fa2eee41d --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/scripts/BB_make.ldef_2nd @@ -0,0 +1,50 @@ +#---------------------------------------------------------------------- +#- NEMO SYSTEM : Ocean model + Sea Ice Model (BB_make.ldef in scripts) +#---------------------------------------------------------------------- +SHELL = /bin/sh +#- +#-Q- t3e #--- Please use gmake instead of make +#-Q- fjvpp #--- Please use gmake instead of make + +#- +#- Define the libraries --- +LIBDIR = ../../../lib +MODDIR = $(LIBDIR) +MODEL_LIB = $(LIBDIR)/oce/libopa.a +IOIPSL_LIB = $(LIBDIR)/libioipsl.a +#-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +#-Q- es2 IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a +AGRIF_LIB = $(LIBDIR)/libagrif.a +#-Q- sxdkrz AGRIF_LIB = $(LIBDIR)/libsxagrif.a +#-Q- es2 AGRIF_LIB = $(LIBDIR)/libsxagrif.a +SXMODEL_LIB = $(MODEL_LIB) +#-Q- sxdkrz SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +#-Q- es2 SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a +OASISMPI2_LIB = +LIBMPI = +LIBMP = +EXEC_BIN = ../../../bin/opa + +#- +#- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO) +# Keys have to be written on one single line (does NOT accept "\") + +P_P = key_trabbl_dif key_vectopt_loop key_vectopt_memory key_orca_r1 key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_trabbc key_zdftke key_zdfddm key_mpp_mpi + +#- +#- Prefix for preprocessing --- +#-Q- sx8mercure prefix = -D +#-Q- sx9mercure prefix = -D +#-Q- sx8brodie prefix = -D +#-Q- es2 prefix = -D +#-Q- sxdkrz prefix = -D +#-Q- linux prefix = -D +#-Q- lxiv7 prefix = -D +#-Q- lxiv8 prefix = -D +#-Q- g95 prefix = -D +#-Q- gfortran prefix = -D +#-Q- aix prefix = -WF,-D +#-Q- aix6 prefix = -WF,-D +#-Q- babel prefix = -WF,-D +#-Q- osxxlf prefix = -WF,-D +#-Q- platine prefix= -Wp,-D diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.1 b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.1 new file mode 100755 index 0000000000000000000000000000000000000000..03a6d0570629d0e7c2d52daa98e2163659728c9d --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.1 @@ -0,0 +1,762 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namqsr, namsbc_rnf, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namtrd, namgap, namspr, namflo, namptr) +!! 9 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! CAUTION: some scripts does not support CAPITALs for logical use .true./.false., not .TRUE./.FALSE. + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== + +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 1416 ! last time step (std 5475) + nn_date0 = 19900101 ! initial calendar date yymmdd (used if nrstdt=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 1416 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nit000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (working only with iom_nf90 routines) + ln_rstart = .fasle. ! start from rest (F) or from a restart file (T) + nn_rstctl = 2 ! restart control = 0 nit000 is not compared to the restart file value + ! = 1 use ndate0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) +/ +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== + +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (0 5760 + nn_baro = 60 ! number of barotropic time step (for the split explicit algorithm) ("key_dynspg_ts") + rn_atfp = 0.1 ! asselin time filter parameter + nn_acc = 0 ! acceleration of convergence : =1 used, rdt < rdttra(k) + ! =0, not used, rdt = rdttra + rn_rdtmin = 3600. ! minimum time step on tracers (used if nacc=1) + rn_rdtmax = 3600. ! maximum time step on tracers (used if nacc=1) + rn_rdth = 800. ! depth variation of tracer time step (used if nacc=1) +/ +!!====================================================================== +!! *** Surface Boundary Condition namelists *** +!!====================================================================== +!! namsbc surface boundary condition +!! namsbc_ana analytical formulation +!! namsbc_flx flux formulation +!! namsbc_clio CLIO bulk formulea formulation +!! namsbc_core CORE bulk formulea formulation +!! namsbc_cpl CouPLed formulation ("key_coupled") +!! namtra_qsr penetrative solar radiation +!! namsbc_rnf river runoffs +!! namsbc_ssr sea surface restoring term (for T and/or S) +!! namsbc_alb albedo parameters +!!====================================================================== + +!----------------------------------------------------------------------- +&namsbc ! Surface Boundary Condition (surface module) +!----------------------------------------------------------------------- + nn_fsbc = 2 ! frequency of surface boundary condition computation + ! (= the frequency of sea-ice model call) + ln_ana = .false. ! analytical formulation (T => fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + nn_ico_cpl = 0 ! ice-ocean coupling : =0 each nn_fsbc + ! =1 stresses recomputed each ocean time step ("key_lim3" only) + ! =2 combination of 0 and 1 cases ("key_lim3" only) + ln_dm2dc = .true. ! daily mean to diurnal cycle short wave (qsr) + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked , + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.e0 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false. , 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false. , 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false. , 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false. , 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux' , .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy' , .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi' , .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2' , .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu' , .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl' , .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl' , .false. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'swdn', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_qlw = 'qlw_core' , 24 , 'lwdn', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_tair = 't2_core' , 6 , 't2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_humi = 'q2_core' , 6 , 'q2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_prec = 'precip_core', -1 , 'precip', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_snow = 'snow_core', -1 , 'snow', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' +! + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +! katabatic winds +! ln_kata = .true. ! enhanced katabatic winds (T) or no (F). +! ! file name ! frequency (hours) ! variable ! time intepolation ! clim ! 'yearly' or ! weights ! vector +! ! ! (if <0 months) ! name ! (logical) ! (logical) ! 'monthly' ! filename ! identifier +! sn_kati = 'katamask' , 0. , 'katamaskx', .false. , .true. , 'yearly' , ' ' , ' ' +! sn_katj = 'katamask' , 0. , 'katamasky', .false. , .true. , 'yearly' , ' ' , ' ' +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- + ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' + ! receive +cn_rcv_w10m = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- +cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' +cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl = 'chlorophyll' , -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction + rn_si2 = 62.0 ! 3 bands: longest depth of extinction (for blue waveband & 0.01 mg/m2 Chl) +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc' , -1 , 'sorunoff' , .true. , .true. , 'yearly' , ' ' , ' ' + sn_cnf = 'runoff_1m_nomask.nc' , -1 , 'socoeff' , .false. , .true. , 'yearly' , ' ' , ' ' +! + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 2 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=1) or not (=0) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -150.0 ! magnitude of the damping on salinity [mm/day/psu] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=1) or not (=0) +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== + +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim= .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [s] +/ +!----------------------------------------------------------------------- +! nam_tide tide parameters (#ifdef key_tide) +!----------------------------------------------------------------------- +! ln_tide_obcramp= linearly apply tidal forcing on open boundaries (sea rdtideramp) +! ln_tide_pot = use tidal potential forcing +! ln_read_tide_elev = read tidal elevations (tide_elev.nc) as obc data +! ln_read_tide_trans = read tidal barotropic velocities (tide_ubar.nc/tide_vbar.nc) as obc data +! ln_compute_tide_trans = compute barotropic velocities from linear equations and elevation as obc data +! ln_read_pot_charge = read charge potential +! rdtideramp = Ramp length in days if ln_tide_obcramp=.true. +! nb_harmo = number of constituents used +! name(1) = 'M2', 'K1', etc name of constituent + +&nam_tide + ln_tide_obcramp = .false. + ln_tide_pot = .true. + ln_read_tide_elev = .false. + ln_read_tide_trans = .false. + ln_compute_tide_trans = .false. + ln_read_pot_charge = .false. + rdtideramp = 2. + nb_harmo = 1 + clname(1) = 'M2' +! nb_harmo = 11 +! clname(1) = 'M2' +! clname(2) = 'S2' +! clname(3) = 'N2' +! clname(4) = 'K1' +! clname(5) = 'O1' +! clname(6) = 'Q1' +! clname(7) = 'M4' +! clname(8) = 'K2' +! clname(9) = 'P1' +! clname(10) = 'Mf' +! clname(11) = 'Mm' +/ +&nam_diaharm +!----------------------------------------------------------------------- +! nam_diaharm online tidal analysis (#ifdef key_diaharm) +!----------------------------------------------------------------------- +! nit000_han = first step used for analysis +! nitend_han = last step used for analysis +! nstep_han = frequency in steps to perform analysis +! nb_ana = number of analysed frequencies +! tname = 'M2', 'K1', etc. Name of tidal constituent + nit000_han = 28801 + nitend_han = 30240 +! nit000_han = 1 +! nitend_han = 10 + nstep_han = 1 + nb_ana = 1 + tname(1) = 'M2' +! tname(2) = 'K1' +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + filbdy_mask = '' ! name of mask file (if ln_bdy_mask=.TRUE.) + filbdy_data_T = 'bdydata_grid_T.nc' ! name of data file (T-points) + filbdy_data_U = 'bdydata_grid_U.nc' ! name of data file (U-points) + filbdy_data_V = 'bdydata_grid_V.nc' ! name of data file (V-points) + ln_bdy_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_bdy_vol = .true. ! total volume correction (see volbdy parameter) + ln_bdy_mask = .false. ! boundary mask from filbdy_mask (T) or boundaries are on edges of domain (F) + ln_bdy_tides = .true. ! Apply tidal harmonic forcing with Flather condition + ln_bdy_dyn_fla = .true. ! Apply Flather condition to velocities + ln_bdy_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_bdy_dyn_frs = .false. ! Apply FRS condition to velocities + nbdy_dta = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nb_rimwidth = 9 ! width of the relaxation zone + volbdy = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date = .false. ! adjust tidal harmonics for start date of run +/ +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition ("key_trabbc") +!! nambbl bottom boundary layer scheme ("key_trabbl_dif","key_trabbl_adv") +!!====================================================================== + +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : no slip, = 2 : nonlinear friction + ! = 3 : free slip, = 1 : linear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m^2/s^2) + rn_bfeb2 = 0.0 ! bottom turbulent kinetic energy background (m^2/s^2) + ! Drakkar enhancement +! ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D file ) +! ln_bfr2d = .true. ! horizontal variation of the bottom friction coef (read a 2D file ) +! rn_bfrien = 50. ! multiplying factor of bfr +! rn_bfrien = 50. ! multiplying factor of bfr +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- +! ! diffusive bbl ("key_trabbl") +! ! advective bbl ("key_trabbl_adv") + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] +/ +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== + +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 1.67e-4 ! thermal expension coefficient (neos= 1 or 2) + rn_beta = 7.8e-4 ! saline expension coefficient (neos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_aht_0 = 1000. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1000. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 0 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== + +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) + nn_dynhpg_rst = 1 ! =1 dynhpg restartable restart or not (=0) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_ahm_0 = 10000. ! horizontal eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] +/ +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric" ) +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke" ) +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp" ) +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm" ) +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx" ) +!!====================================================================== + +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative algorithm (T) or not (F) + nn_npc = 0 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + rn_bshear = 1.e-20 ! background shear (>0) + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 same criteria as case 2 but applied in a different way + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! mixing length scale surface value as function of wind stress (T) or not (F) + rn_lmin = 0.001 ! interior buoyancy lenght scale minimum value + rn_lmin0 = 0.01 ! surface buoyancy lenght scale minimum value + nn_etau = 1 ! exponentially deceasing penetration of tke due to internal & intertial waves + ! = 0 no penetration ( O(2 km) resolution) + ! = 1 additional tke source + ! = 2 additional tke source applied only at the base of the mixed layer + nn_htau = 1 ! type of exponential decrease of tke penetration + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m at high latitudes + rn_efr = 0.05 ! fraction of surface tke value which penetrates inside the ocean + ln_lc = .true. ! Langmuir cell parameterisation + rn_lc = 0.15 ! coef. associated to Langmuir cells +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionnally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== + +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 2000 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 6 ! number of processors in i-direction + nn_jsplt = 6 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) + nn_bit_cmp = 0 ! bit comparison mode (1/0): CAUTION use zero except for test + ! of comparison between single and multiple processor runs +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namgap level mean model-data gap ("key_diagap") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!!====================================================================== + +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ('key_trdmld' or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namgap ! level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- + nn_gap = 15 ! time-step frequency of model-data gap computation + nn_prg = 10 ! time-step frequency of gap print in model output +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl= 75 ! frequency of writing in float output file + nn_stockfl= 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .true. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + nf_ptr = 1 ! Frequency of ptr computation [time step] + nf_ptr_wri = -1 ! Frequency of ptr outputs +/ diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.3 b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.3 new file mode 100755 index 0000000000000000000000000000000000000000..b34eff4a3b0554085afb55d8dc0e51e0269bdee5 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist.v3.2.default.DFS4.3 @@ -0,0 +1,762 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namqsr, namsbc_rnf, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namtrd, namgap, namspr, namflo, namptr) +!! 9 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +! CAUTION: some scripts does not support CAPITALs for logical use .true./.false., not .TRUE./.FALSE. + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== + +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 1416 ! last time step (std 5475) + nn_date0 = 19680101 ! initial calendar date yymmdd (used if nrstdt=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 1416 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nit000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (working only with iom_nf90 routines) + ln_rstart = .fasle. ! start from rest (F) or from a restart file (T) + nn_rstctl = 2 ! restart control = 0 nit000 is not compared to the restart file value + ! = 1 use ndate0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) +/ +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== + +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (0 5760 + nn_baro = 60 ! number of barotropic time step (for the split explicit algorithm) ("key_dynspg_ts") + rn_atfp = 0.1 ! asselin time filter parameter + nn_acc = 0 ! acceleration of convergence : =1 used, rdt < rdttra(k) + ! =0, not used, rdt = rdttra + rn_rdtmin = 3600. ! minimum time step on tracers (used if nacc=1) + rn_rdtmax = 3600. ! maximum time step on tracers (used if nacc=1) + rn_rdth = 800. ! depth variation of tracer time step (used if nacc=1) +/ +!!====================================================================== +!! *** Surface Boundary Condition namelists *** +!!====================================================================== +!! namsbc surface boundary condition +!! namsbc_ana analytical formulation +!! namsbc_flx flux formulation +!! namsbc_clio CLIO bulk formulea formulation +!! namsbc_core CORE bulk formulea formulation +!! namsbc_cpl CouPLed formulation ("key_coupled") +!! namtra_qsr penetrative solar radiation +!! namsbc_rnf river runoffs +!! namsbc_ssr sea surface restoring term (for T and/or S) +!! namsbc_alb albedo parameters +!!====================================================================== + +!----------------------------------------------------------------------- +&namsbc ! Surface Boundary Condition (surface module) +!----------------------------------------------------------------------- + nn_fsbc = 2 ! frequency of surface boundary condition computation + ! (= the frequency of sea-ice model call) + ln_ana = .false. ! analytical formulation (T => fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + nn_ico_cpl = 0 ! ice-ocean coupling : =0 each nn_fsbc + ! =1 stresses recomputed each ocean time step ("key_lim3" only) + ! =2 combination of 0 and 1 cases ("key_lim3" only) + ln_dm2dc = .true. ! daily mean to diurnal cycle short wave (qsr) + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked , + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.e0 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false. , 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false. , 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false. , 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false. , 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux' , .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy' , .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi' , .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2' , .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu' , .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl' , .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl' , .false. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10', .false., .false. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'qsw', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_qlw = 'qlw_core' , 24 , 'qlw', .false., .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_tair = 't2_core' , 6 , 't2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_humi = 'q2_core' , 6 , 'q2', .false., .false. , 'yearly' , 'weights_grid02_bilinear_orca1.nc', '' + sn_prec = 'precip_core', -1 , 'precip', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' + sn_snow = 'snow_core', -1 , 'snow', .true. , .false. , 'yearly' , 'weights_grid03_bilinear_orca1.nc', '' +! + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + rn_pfac = 1. ! multiplicative factor for precipitation (total & snow) +! katabatic winds +! ln_kata = .true. ! enhanced katabatic winds (T) or no (F). +! ! file name ! frequency (hours) ! variable ! time intepolation ! clim ! 'yearly' or ! weights ! vector +! ! ! (if <0 months) ! name ! (logical) ! (logical) ! 'monthly' ! filename ! identifier +! sn_kati = 'katamask' , 0. , 'katamaskx', .false. , .true. , 'yearly' , ' ' , ' ' +! sn_katj = 'katamask' , 0. , 'katamasky', .false. , .true. , 'yearly' , ' ' , ' ' +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- + ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' + ! receive +cn_rcv_w10m = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- +cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' +cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl = 'chlorophyll' , -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction + rn_si2 = 62.0 ! 3 bands: longest depth of extinction (for blue waveband & 0.01 mg/m2 Chl) +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc' , -1 , 'sorunoff' , .true. , .true. , 'yearly' , ' ' , ' ' + sn_cnf = 'runoff_1m_nomask.nc' , -1 , 'socoeff' , .false. , .true. , 'yearly' , ' ' , ' ' +! + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 2 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=1) or not (=0) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -150.0 ! magnitude of the damping on salinity [mm/day/psu] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] + nn_sssr = 0 ! add a damping term in the surface freshwater flux (=1) or not (=0) +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== + +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim= .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [s] +/ +!----------------------------------------------------------------------- +! nam_tide tide parameters (#ifdef key_tide) +!----------------------------------------------------------------------- +! ln_tide_obcramp= linearly apply tidal forcing on open boundaries (sea rdtideramp) +! ln_tide_pot = use tidal potential forcing +! ln_read_tide_elev = read tidal elevations (tide_elev.nc) as obc data +! ln_read_tide_trans = read tidal barotropic velocities (tide_ubar.nc/tide_vbar.nc) as obc data +! ln_compute_tide_trans = compute barotropic velocities from linear equations and elevation as obc data +! ln_read_pot_charge = read charge potential +! rdtideramp = Ramp length in days if ln_tide_obcramp=.true. +! nb_harmo = number of constituents used +! name(1) = 'M2', 'K1', etc name of constituent + +&nam_tide + ln_tide_obcramp = .false. + ln_tide_pot = .true. + ln_read_tide_elev = .false. + ln_read_tide_trans = .false. + ln_compute_tide_trans = .false. + ln_read_pot_charge = .false. + rdtideramp = 2. + nb_harmo = 1 + clname(1) = 'M2' +! nb_harmo = 11 +! clname(1) = 'M2' +! clname(2) = 'S2' +! clname(3) = 'N2' +! clname(4) = 'K1' +! clname(5) = 'O1' +! clname(6) = 'Q1' +! clname(7) = 'M4' +! clname(8) = 'K2' +! clname(9) = 'P1' +! clname(10) = 'Mf' +! clname(11) = 'Mm' +/ +&nam_diaharm +!----------------------------------------------------------------------- +! nam_diaharm online tidal analysis (#ifdef key_diaharm) +!----------------------------------------------------------------------- +! nit000_han = first step used for analysis +! nitend_han = last step used for analysis +! nstep_han = frequency in steps to perform analysis +! nb_ana = number of analysed frequencies +! tname = 'M2', 'K1', etc. Name of tidal constituent + nit000_han = 28801 + nitend_han = 30240 +! nit000_han = 1 +! nitend_han = 10 + nstep_han = 1 + nb_ana = 1 + tname(1) = 'M2' +! tname(2) = 'K1' +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + filbdy_mask = '' ! name of mask file (if ln_bdy_mask=.TRUE.) + filbdy_data_T = 'bdydata_grid_T.nc' ! name of data file (T-points) + filbdy_data_U = 'bdydata_grid_U.nc' ! name of data file (U-points) + filbdy_data_V = 'bdydata_grid_V.nc' ! name of data file (V-points) + ln_bdy_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_bdy_vol = .true. ! total volume correction (see volbdy parameter) + ln_bdy_mask = .false. ! boundary mask from filbdy_mask (T) or boundaries are on edges of domain (F) + ln_bdy_tides = .true. ! Apply tidal harmonic forcing with Flather condition + ln_bdy_dyn_fla = .true. ! Apply Flather condition to velocities + ln_bdy_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_bdy_dyn_frs = .false. ! Apply FRS condition to velocities + nbdy_dta = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nb_rimwidth = 9 ! width of the relaxation zone + volbdy = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date = .false. ! adjust tidal harmonics for start date of run +/ +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition ("key_trabbc") +!! nambbl bottom boundary layer scheme ("key_trabbl_dif","key_trabbl_adv") +!!====================================================================== + +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : no slip, = 2 : nonlinear friction + ! = 3 : free slip, = 1 : linear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m^2/s^2) + rn_bfeb2 = 0.0 ! bottom turbulent kinetic energy background (m^2/s^2) + ! Drakkar enhancement +! ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D file ) +! ln_bfr2d = .true. ! horizontal variation of the bottom friction coef (read a 2D file ) +! rn_bfrien = 50. ! multiplying factor of bfr +! rn_bfrien = 50. ! multiplying factor of bfr +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- +! ! diffusive bbl ("key_trabbl") +! ! advective bbl ("key_trabbl_adv") + rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] +/ +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== + +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 1.67e-4 ! thermal expension coefficient (neos= 1 or 2) + rn_beta = 7.8e-4 ! saline expension coefficient (neos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_aht_0 = 1000. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1000. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 0 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== + +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .false. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .true. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .true. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) + nn_dynhpg_rst = 1 ! =1 dynhpg restartable restart or not (=0) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! Coefficient + rn_ahm_0 = 10000. ! horizontal eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] +/ +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric" ) +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke" ) +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp" ) +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm" ) +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx" ) +!!====================================================================== + +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative algorithm (T) or not (F) + nn_npc = 0 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + rn_bshear = 1.e-20 ! background shear (>0) + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 same criteria as case 2 but applied in a different way + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! mixing length scale surface value as function of wind stress (T) or not (F) + rn_lmin = 0.001 ! interior buoyancy lenght scale minimum value + rn_lmin0 = 0.01 ! surface buoyancy lenght scale minimum value + nn_etau = 1 ! exponentially deceasing penetration of tke due to internal & intertial waves + ! = 0 no penetration ( O(2 km) resolution) + ! = 1 additional tke source + ! = 2 additional tke source applied only at the base of the mixed layer + nn_htau = 1 ! type of exponential decrease of tke penetration + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m at high latitudes + rn_efr = 0.05 ! fraction of surface tke value which penetrates inside the ocean + ln_lc = .true. ! Langmuir cell parameterisation + rn_lc = 0.15 ! coef. associated to Langmuir cells +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionnally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== + +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 2000 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 6 ! number of processors in i-direction + nn_jsplt = 6 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) + nn_bit_cmp = 0 ! bit comparison mode (1/0): CAUTION use zero except for test + ! of comparison between single and multiple processor runs +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namgap level mean model-data gap ("key_diagap") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!!====================================================================== + +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ('key_trdmld' or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namgap ! level mean model-data gap ('key_diagap') +!----------------------------------------------------------------------- + nn_gap = 15 ! time-step frequency of model-data gap computation + nn_prg = 10 ! time-step frequency of gap print in model output +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl= 75 ! frequency of writing in float output file + nn_stockfl= 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .true. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + nf_ptr = 1 ! Frequency of ptr computation [time step] + nf_ptr_wri = -1 ! Frequency of ptr outputs +/ diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default new file mode 100755 index 0000000000000000000000000000000000000000..ae6409267ad7d1d5e0903a965a6b6b306079f9e5 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/config/ORCA2_LIM/setup/namelist_ice.v3.2.default @@ -0,0 +1,134 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 5 - ice advection (namicetrp) +!! 6 - thermodynamic (namicethd) +!! 7 - ice salinity (namicesal) +!! 8 - mechanical redistribution of ice (namiceitdme) +!! 3 - ice diagnostics (namicedia) +!! 9 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T) or not (F) + acrit = 2.0e-06 , 5.0e-06 ! minimum fraction for leads in the Northern (Southern) Hemisphere + hsndif = 0.0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the ice initial state in the file 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 2.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 2.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 250.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0. ! boundary conditions (=0.0 no-slip, =1.0 free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- +! hmelt : maximum melting at the bottom +! hiccrit(1/2): ice thickness for lateral accretion in the Northern (Southern) Hemisphere +! caution 1.0, 1.0 best value to be used!!! (gilles G.) +! hicmin : ice thickness corr. to max. energy stored in brine pocket +! hiclim : minimum ice thickness +! amax : maximum lead fraction +! swiqst : energy stored in brine pocket (=1) or not (=0) +! sbeta : numerical caracteritic of the scheme for diffusion in ice +! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) +! parlat : percentage of energy used for lateral ablation +! hakspl : slope of distr. for Hakkinen-Mellor's lateral melting +! hibspl : slope of distribution for Hibler's lateral melting +! exld : exponent for leads-closure rate +! hakdif : coefficient for diffusions of ice and snow +! thth : threshold thickness for comp. of eq. thermal conductivity +! hnzst : thickness of the surf. layer in temp. computation +! parsub : switch for snow sublimation or not +! alphs : coefficient for snow density when snow ice formation +! + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.6 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf ='1PE13.5 ' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + noumef = 19 ! number of fields +! +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +/ diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 b/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 new file mode 100755 index 0000000000000000000000000000000000000000..b600b437f90979651b8e79d93914347620d48067 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/IOIPSL/src/calendar.f90 @@ -0,0 +1,996 @@ +MODULE calendar +!- +!$Id: calendar.f90 1011 2010-05-07 13:05:34Z bellier $ +!- +! This software is governed by the CeCILL license +! See IOIPSL/IOIPSL_License_CeCILL.txt +!--------------------------------------------------------------------- +!- This is the calendar which going to be used to do all +!- calculations on time. Three types of calendars are possible : +!- +!- - gregorian : +!- The normal calendar. The time origin for the +!- julian day in this case is 24 Nov -4713 +!- (other names : 'standard','proleptic_gregorian') +!- - noleap : +!- A 365 day year without leap years. +!- The origin for the julian days is in this case 1 Jan 0 +!- (other names : '365_day','365d') +!- - all_leap : +!- A 366 day year with leap years. +!- The origin for the julian days is in this case ???? +!- (other names : '366_day','366d' +!- - julian : +!- same as gregorian, but with all leap century years +!- - xxxd : +!- Year of xxx days with month of equal length. +!- The origin for the julian days is then also 1 Jan 0 +!- +!- As one can see it is difficult to go from one calendar to the other. +!- All operations involving julian days will be wrong. +!- This calendar will lock as soon as possible +!- the length of the year and forbid any further modification. +!- +!- For the non leap-year calendar the method is still brute force. +!- We need to find an Integer series which takes care of the length +!- of the various month. (Jan) +!- +!- one_day : one day in seconds +!- one_year : one year in days +!--------------------------------------------------------------------- + USE stringop,ONLY : strlowercase + USE errioipsl,ONLY : ipslerr +!- + PRIVATE + PUBLIC :: ymds2ju,ju2ymds,tlen2itau,isittime,ioconf_calendar, & + & ioget_calendar,ioget_mon_len,ioget_year_len,itau2date, & + & ioget_timestamp,ioconf_startdate,itau2ymds, & + & time_diff,time_add,lock_calendar +!- + INTERFACE ioget_calendar + MODULE PROCEDURE & + & ioget_calendar_real1,ioget_calendar_real2,ioget_calendar_str + END INTERFACE +!- + INTERFACE ioconf_startdate + MODULE PROCEDURE & + & ioconf_startdate_simple,ioconf_startdate_internal, & + & ioconf_startdate_ymds + END INTERFACE +!- + REAL,PARAMETER :: one_day = 86400.0 + LOGICAL,SAVE :: lock_startdate = .FALSE. +!- + CHARACTER(LEN=30),SAVE :: time_stamp='XXXXXXXXXXXXXXXX' +!- +!- Description of calendar +!- + CHARACTER(LEN=20),SAVE :: calendar_used="gregorian" + LOGICAL,SAVE :: lock_one_year = .FALSE. + REAL,SAVE :: one_year = 365.2425 + INTEGER,SAVE :: mon_len(12)=(/31,28,31,30,31,30,31,31,30,31,30,31/) +!- + CHARACTER(LEN=3),PARAMETER :: & + & cal(12) = (/'JAN','FEB','MAR','APR','MAY','JUN', & + & 'JUL','AUG','SEP','OCT','NOV','DEC'/) +!- + REAL,SAVE :: start_day,start_sec +!- +CONTAINS +!- +!=== +!- +SUBROUTINE lock_calendar (new_status,old_status) +!!-------------------------------------------------------------------- +!! The "lock_calendar" routine +!! allows to lock or unlock the calendar, +!! and to know the current status of the calendar. +!! Be careful ! +!! +!! SUBROUTINE lock_calendar (new_status,old_status) +!! +!! Optional INPUT argument +!! +!! (L) new_status : new status of the calendar +!! +!! Optional OUTPUT argument +!! +!! (L) old_status : current status of the calendar +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + LOGICAL,OPTIONAL,INTENT(IN) :: new_status + LOGICAL,OPTIONAL,INTENT(OUT) :: old_status +!--------------------------------------------------------------------- + IF (PRESENT(old_status)) THEN + old_status = lock_one_year + ENDIF + IF (PRESENT(new_status)) THEN + lock_one_year = new_status + ENDIF +!--------------------------- +END SUBROUTINE lock_calendar +!- +!=== +!- +SUBROUTINE ymds2ju (year,month,day,sec,julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + REAL,INTENT(OUT) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + julian = julian_day+julian_sec/one_day +!--------------------- +END SUBROUTINE ymds2ju +!- +!=== +!- +SUBROUTINE ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!--------------------------------------------------------------------- +!- Converts year, month, day and seconds into a julian day +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. +!- This is the day at which Pope Gregory XIII introduced the +!- Gregorian calendar. +!- Compared to the true Julian calendar, which starts some +!- 7980 years ago, the Lilian days are smaler and are dealt with +!- easily on 32 bit machines. With the true Julian days you can only +!- the fraction of the day in the real part to a precision of +!- a 1/4 of a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER,INTENT(OUT) :: julian_day + REAL,INTENT(OUT) :: julian_sec +!- + INTEGER :: jd,m,y,d,ml +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + m = month + y = year + d = day +!- +!- We deduce the calendar from the length of the year as it +!- is faster than an INDEX on the calendar variable. +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- "Gregorian" + jd = (1461*(y+4800+INT((m-14)/12)))/4 & + & +(367*(m-2-12*(INT((m-14)/12))))/12 & + & -(3*((y+4900+INT((m-14)/12))/100))/4 & + & +d-32075 + jd = jd-2299160 + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- "No leap" or "All leap" + ml = SUM(mon_len(1:m-1)) + jd = y*NINT(one_year)+ml+(d-1) + ELSE +!-- Calendar with regular month + ml = NINT(one_year/12.) + jd = y*NINT(one_year)+(m-1)*ml+(d-1) + ENDIF +!- + julian_day = jd + julian_sec = sec +!------------------------------ +END SUBROUTINE ymds2ju_internal +!- +!=== +!- +SUBROUTINE ju2ymds (julian,year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ju2ymds_internal(julian_day,julian_sec,year,month,day,sec) +!--------------------- +END SUBROUTINE ju2ymds +!- +!=== +!- +SUBROUTINE ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine computes from the julian day the year, +!- month, day and seconds +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. This is the day at which Pope +!- Gregory XIII introduced the Gregorian calendar. +!- Compared to the true Julian calendar, which starts some 7980 +!- years ago, the Lilian days are smaler and are dealt with easily +!- on 32 bit machines. With the true Julian days you can only the +!- fraction of the day in the real part to a precision of a 1/4 of +!- a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: l,n,i,jd,j,d,m,y,ml + INTEGER :: add_day + REAL :: eps_day +!--------------------------------------------------------------------- + eps_day = SPACING(one_day) + lock_one_year = .TRUE. +!- + jd = julian_day + sec = julian_sec + IF (sec > (one_day-eps_day)) THEN + add_day = INT(sec/one_day) + sec = sec-add_day*one_day + jd = jd+add_day + ENDIF + IF (sec < -eps_day) THEN + sec = sec+one_day + jd = jd-1 + ENDIF +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- Gregorian + jd = jd+2299160 +!- + l = jd+68569 + n = (4*l)/146097 + l = l-(146097*n+3)/4 + i = (4000*(l+1))/1461001 + l = l-(1461*i)/4+31 + j = (80*l)/2447 + d = l-(2447*j)/80 + l = j/11 + m = j+2-(12*l) + y = 100*(n-49)+i+l + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- No leap or All leap + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = 1 + ml = 0 + DO WHILE (ml+mon_len(m) <= l) + ml = ml+mon_len(m) + m = m+1 + ENDDO + d = l-ml+1 + ELSE +!-- others + ml = NINT(one_year/12.) + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = (l/ml)+1 + d = l-(m-1)*ml+1 + ENDIF +!- + day = d + month = m + year = y +!------------------------------ +END SUBROUTINE ju2ymds_internal +!- +!=== +!- +SUBROUTINE tlen2itau (input_str,dt,date,itau) +!--------------------------------------------------------------------- +!- This subroutine transforms a string containing a time length +!- into a number of time steps. +!- To do this operation the date (in julian days is needed as the +!- length of the month varies. +!- The following convention is used : +!- n : n time steps +!- nS : n seconds is transformed into itaus +!- nH : n hours +!- nD : n days +!- nM : n month +!- nY : n years +!- Combinations are also possible +!- nYmD : nyears plus m days ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: input_str + REAL,INTENT(IN) :: dt,date +!- + INTEGER,INTENT(OUT) :: itau +!- + INTEGER :: y_pos,m_pos,d_pos,h_pos,s_pos + INTEGER :: read_time + CHARACTER(LEN=13) :: fmt + CHARACTER(LEN=80) :: tmp_str +!- + INTEGER :: year,month,day + REAL :: sec,date_new,dd,ss +!--------------------------------------------------------------------- + itau = 0 + CALL ju2ymds (date,year,month,day,sec) +!- + y_pos = MAX(INDEX(input_str,'y'),INDEX(input_str,'Y')) + m_pos = MAX(INDEX(input_str,'m'),INDEX(input_str,'M')) + d_pos = MAX(INDEX(input_str,'d'),INDEX(input_str,'D')) + h_pos = MAX(INDEX(input_str,'h'),INDEX(input_str,'H')) + s_pos = MAX(INDEX(input_str,'s'),INDEX(input_str,'S')) +!- + IF (MAX(y_pos,m_pos,d_pos,s_pos) > 0) THEN + tmp_str = input_str + DO WHILE ( MAX(y_pos,m_pos,d_pos,s_pos) > 0) +!---- WRITE(*,*) tmp_str +!---- WRITE(*,*) y_pos,m_pos,d_pos,s_pos + IF (y_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') y_pos-1 + READ(tmp_str(1:y_pos-1),fmt) read_time + CALL ymds2ju (year+read_time,month,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(y_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (m_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') m_pos-1 + READ(tmp_str(1:m_pos-1),fmt) read_time + CALL ymds2ju (year,month+read_time,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(m_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (d_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') d_pos-1 + READ(tmp_str(1:d_pos-1),fmt) read_time + itau = itau+NINT(read_time*one_day/dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (h_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') h_pos-1 + READ(tmp_str(1:h_pos-1),fmt) read_time + itau = itau+NINT(read_time*60.*60./dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (s_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') s_pos-1 + READ(tmp_str(1:s_pos-1),fmt) read_time + itau = itau+NINT(read_time/dt) + tmp_str = tmp_str(s_pos+1:LEN_TRIM(tmp_str)) + ENDIF +!- + y_pos = MAX(INDEX(tmp_str,'y'),INDEX(tmp_str,'Y')) + m_pos = MAX(INDEX(tmp_str,'m'),INDEX(tmp_str,'M')) + d_pos = MAX(INDEX(tmp_str,'d'),INDEX(tmp_str,'D')) + h_pos = MAX(INDEX(tmp_str,'h'),INDEX(tmp_str,'H')) + s_pos = MAX(INDEX(tmp_str,'s'),INDEX(tmp_str,'S')) + ENDDO + ELSE + WRITE(fmt,'("(I",I10.10,")")') LEN_TRIM(input_str) + READ(input_str(1:LEN_TRIM(input_str)),fmt) itau + ENDIF +!----------------------- +END SUBROUTINE tlen2itau +!- +!=== +!- +REAL FUNCTION itau2date (itau,date0,deltat) +!--------------------------------------------------------------------- +!- This function transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- deltat : time step between itau s +!- +!- OUTPUT +!- itau2date : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER :: itau + REAL :: date0,deltat +!--------------------------------------------------------------------- + itau2date = REAL(itau)*deltat/one_day+date0 +!--------------------- +END FUNCTION itau2date +!- +!=== +!- +SUBROUTINE itau2ymds (itau,deltat,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- deltat : time step between itau s +!- +!- OUTPUT +!- year : year +!- month : month +!- day : day +!- sec : seconds since midnight +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: deltat +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + CALL ipslerr (2,'itau2ymds', & + & 'You try to call this function, itau2ymds, but you didn''t', & + & ' call ioconf_startdate to initialize date0 in calendar.', & + & ' Please call ioconf_startdate before itau2ymds.') + ENDIF + julian_day = start_day + julian_sec = start_sec+REAL(itau)*deltat + CALL ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!----------------------- +END SUBROUTINE itau2ymds +!- +!=== +!- +REAL FUNCTION dtchdate (itau,date0,old_dt,new_dt) +!--------------------------------------------------------------------- +!- This function changes the date so that the simulation can +!- continue with the same itau but a different dt. +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- old_dt : Old time step between itaus +!- new_dt : New time step between itaus +!- +!- OUTPUT +!- dtchdate : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: date0,old_dt,new_dt +!- + REAL :: rtime +!--------------------------------------------------------------------- + rtime = itau2date (itau,date0,old_dt) + dtchdate = rtime-REAL(itau)*new_dt/one_day +!-------------------- +END FUNCTION dtchdate +!- +!=== +!- +SUBROUTINE isittime & + & (itau,date0,dt,freq,last_action,last_check,do_action) +!--------------------------------------------------------------------- +!- This subroutine checks the time as come for a given action. +!- This is computed from the current time-step(itau). +!- Thus we need to have the time delta (dt), the frequency +!- of the action (freq) and the last time it was done +!- (last_action in units of itau). +!- In order to extrapolate when will be the next check we need +!- the time step of the last call (last_check). +!- +!- The test is done on the following condition : +!- the distance from the current time to the time for the next +!- action is smaller than the one from the next expected +!- check to the next action. +!- When the test is done on the time steps simplifications make +!- it more difficult to read in the code. +!- For the real time case it is easier to understand ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: dt,freq + INTEGER,INTENT(IN) :: last_action,last_check + REAL,INTENT(IN) :: date0 +!- + LOGICAL,INTENT(OUT) :: do_action +!- + REAL :: dt_action,dt_check + REAL :: date_last_act,date_next_check,date_next_act, & + & date_now,date_mp1,date_mpf + INTEGER :: year,month,monthp1,day,next_check_itau,next_act_itau + INTEGER :: yearp,dayp + REAL :: sec,secp + LOGICAL :: check = .FALSE. +!--------------------------------------------------------------------- + IF (check) THEN + WRITE(*,*) & + & "isittime 1.0 ",itau,date0,dt,freq,last_action,last_check + ENDIF +!- + IF (last_check >= 0) THEN + dt_action = (itau-last_action)*dt + dt_check = (itau-last_check)*dt + next_check_itau = itau+(itau-last_check) +!- +!-- We are dealing with frequencies in seconds and thus operation +!-- can be done on the time steps. +!- + IF (freq > 0) THEN + IF (ABS(dt_action-freq) <= ABS(dt_action+dt_check-freq)) THEN + do_action = .TRUE. + ELSE + do_action = .FALSE. + ENDIF +!- +!---- Here we deal with frequencies in month and work on julian days. +!- + ELSE + date_now = itau2date (itau,date0,dt) +!KW! blow out part of the code, replace with a quick and dirty fix +!KW! that checks if month of next timestep is equal to current month +!KW! if this isn't true, then doaction=true + CALL ju2ymds (date_now,year,month,day,sec) + date_mp1 = itau2date (itau+1,date0,dt) + CALL ju2ymds (date_mp1,year,monthp1,day,sec) + IF (month /= monthp1) THEN + do_action = .TRUE. +!KW! end of changes + ELSE + do_action = .FALSE. + ENDIF + ENDIF +!- + IF (check) THEN + WRITE(*,*) "isittime 2.0 ", & + & date_next_check,date_next_act,ABS(dt_action-freq), & + & ABS(dt_action+dt_check-freq),dt_action,dt_check, & + & next_check_itau,do_action + ENDIF + ELSE + do_action=.FALSE. + ENDIF +!---------------------- +END SUBROUTINE isittime +!- +!=== +!- +SUBROUTINE ioconf_calendar (str) +!--------------------------------------------------------------------- +!- This routine allows to configure the calendar to be used. +!- This operation is only allowed once and the first call to +!- ymds2ju or ju2ymsd will lock the current configuration. +!- the argument to ioconf_calendar can be any of the following : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: str +!- + INTEGER :: leng,ipos + CHARACTER(LEN=20) :: str_w +!--------------------------------------------------------------------- +!- +! Clean up the string ! +!- + str_w = str + CALL strlowercase (str_w) +!- + IF (.NOT.lock_one_year) THEN +!--- + lock_one_year=.TRUE. +!--- + SELECT CASE(TRIM(str_w)) + CASE('gregorian','standard','proleptic_gregorian') + calendar_used = 'gregorian' + one_year = 365.2425 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('noleap','365_day','365d') + calendar_used = 'noleap' + one_year = 365.0 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('all_leap','366_day','366d') + calendar_used = 'all_leap' + one_year = 366.0 + mon_len(:)=(/31,29,31,30,31,30,31,31,30,31,30,31/) + CASE('360_day','360d') + calendar_used = '360d' + one_year = 360.0 + mon_len(:)=(/30,30,30,30,30,30,30,30,30,30,30,30/) + CASE('julian') + calendar_used = 'julian' + one_year = 365.25 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE DEFAULT + ipos = INDEX(str_w,'d') + IF (ipos == 4) THEN + READ(str_w(1:3),'(I3)') leng + IF ( (MOD(leng,12) == 0).AND.(leng > 1) ) THEN + calendar_used = str_w + one_year = leng + mon_len(:) = leng/12 + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'The length of the year as to be a modulo of 12', & + & 'so that it can be divided into 12 month of equal length', & + & TRIM(str_w)) + ENDIF + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'Unrecognized input, please check the man pages.', & + & TRIM(str_w),' ') + ENDIF + END SELECT + ELSE IF (TRIM(str_w) /= TRIM(calendar_used)) THEN + WRITE(str_w,'(f10.4)') one_year + CALL ipslerr (2,'ioconf_calendar', & + & 'The calendar was already used or configured to : '// & + & TRIM(calendar_used)//'.', & + & 'You are not allowed to change it to : '//TRIM(str)//'.', & + & 'The following length of year is used : '//TRIM(ADJUSTL(str_w))) + ENDIF +!----------------------------- +END SUBROUTINE ioconf_calendar +!- +!=== +!- +SUBROUTINE ioconf_startdate_simple (julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!------------------------------------- +END SUBROUTINE ioconf_startdate_simple +!- +!=== +!- +SUBROUTINE ioconf_startdate_ymds (year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!----------------------------------- +END SUBROUTINE ioconf_startdate_ymds +!- +!=== +!- +SUBROUTINE ioconf_startdate_internal (julian_day,julian_sec) +!--------------------------------------------------------------------- +! This subroutine allows to set the startdate for later +! use. It allows the applications to access the date directly from +! the timestep. In order to avoid any problems the start date will +! be locked and can not be changed once set. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + CHARACTER(len=70) :: str70a,str70b +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + start_day = julian_day + start_sec = julian_sec + lock_startdate = .TRUE. + ELSE + WRITE(str70a,'("The date you tried to set : ",f10.4)') & + & julian_day,julian_sec/one_day + WRITE(str70b, & + & '("The date which was already set in the calendar : ",f10.4)') & + & start_day+start_sec/one_day + CALL ipslerr (2,'ioconf_startdate', & + & 'The start date has already been set and you tried to change it', & + & str70a,str70b) + ENDIF +!--------------------------------------- +END SUBROUTINE ioconf_startdate_internal +!- +!=== +!- +SUBROUTINE ioget_calendar_str (str) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(OUT) :: str +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + str = calendar_used +!-------------------------------- +END SUBROUTINE ioget_calendar_str +!- +!=== +!- +SUBROUTINE ioget_calendar_real1 (long_year) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year +!--------------------------------------------------------------------- + long_year = one_year + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real1 +!- +!=== +!- +SUBROUTINE ioget_calendar_real2 (long_year,long_day) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year,long_day +!--------------------------------------------------------------------- + long_year = one_year + long_day = one_day + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real2 +!- +!=== +!- +INTEGER FUNCTION ioget_mon_len (year,month) +!!-------------------------------------------------------------------- +!! The "ioget_mon_len" function returns +!! the number of days in a "month" of a "year", +!! in the current calendar. +!! +!! INTEGER FUNCTION ioget_mon_len (year,month) +!! +!! INPUT +!! +!! (I) year : year +!! (I) month : month in the year (1 --> 12) +!! +!! OUTPUT +!! +!! (I) ioget_mon_len : number of days in the month +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month +!- + INTEGER :: ml +!--------------------------------------------------------------------- + IF ( (month >= 1).AND.(month <= 12) ) THEN + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!---- "Gregorian" or "Julian" + ml = mon_len(month) + IF (month == 2) THEN + IF (ABS(one_year-365.2425) <= EPSILON(one_year) ) THEN +!-------- "Gregorian" + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + ml = ml+1 + ENDIF + ELSE +!-------- "Julian" + IF (MOD(year,4) == 0) THEN + ml = ml+1 + ENDIF + ENDIF + ENDIF + ioget_mon_len = ml + ELSE +!---- "No leap" or "All leap" or "Calendar with regular month" + ioget_mon_len = mon_len(month) + ENDIF + ELSE + CALL ipslerr (3,'ioget_mon_len', & + & 'The number of the month','must be between','1 and 12') + ENDIF +!------------------------- +END FUNCTION ioget_mon_len +!- +!=== +!- +INTEGER FUNCTION ioget_year_len (year) +!!-------------------------------------------------------------------- +!! The "ioget_year_len" function returns +!! the number of days in "year", in the current calendar. +!! +!! INTEGER FUNCTION ioget_year_len (year) +!! +!! INPUT +!! +!! (I) year : year +!! +!! OUTPUT +!! +!! (I) ioget_year_len : number of days in the year +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year +!- + INTEGER :: yl +!--------------------------------------------------------------------- + SELECT CASE(TRIM(calendar_used)) + CASE('gregorian') + yl = 365 + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + yl = yl+1 + ENDIF + CASE('julian') + yl = 365 + IF (MOD(year,4) == 0) THEN + yl = yl+1 + ENDIF + CASE DEFAULT + yl = NINT(one_year) + END SELECT + ioget_year_len = yl +!-------------------------- +END FUNCTION ioget_year_len +!- +!=== +!- +SUBROUTINE ioget_timestamp (string) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=30),INTENT(OUT) :: string +!- + INTEGER :: date_time(8) + CHARACTER(LEN=10) :: bigben(3) +!--------------------------------------------------------------------- + IF (INDEX(time_stamp,'XXXXXX') > 0) THEN + CALL DATE_AND_TIME (bigben(1),bigben(2),bigben(3),date_time) +!--- + WRITE(time_stamp, & + & "(I4.4,'-',A3,'-',I2.2,' ',I2.2,':',I2.2,':',I2.2,' GMT',a5)") & + & date_time(1),cal(date_time(2)),date_time(3),date_time(5), & + & date_time(6),date_time(7),bigben(3) + ENDIF +!- + string = time_stamp +!----------------------------- +END SUBROUTINE ioget_timestamp +!- +!=== +!- +SUBROUTINE time_add & + & (year_s,month_s,day_s,sec_s,sec_increment, & + & year_e,month_e,day_e,sec_e) +!--------------------------------------------------------------------- +!- This subroutine allows to increment a date by a number of seconds. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s +!- +! Time in seconds to be added to the date +!- + REAL,INTENT(IN) :: sec_increment +!- + INTEGER,INTENT(OUT) :: year_e,month_e,day_e + REAL,INTENT(OUT) :: sec_e +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day,julian_sec) +!- + julian_sec = julian_sec+sec_increment +!- + CALL ju2ymds_internal & + & (julian_day,julian_sec,year_e,month_e,day_e,sec_e) +!---------------------- +END SUBROUTINE time_add +!- +!=== +!- +SUBROUTINE time_diff & + & (year_s,month_s,day_s,sec_s,year_e,month_e,day_e,sec_e,sec_diff) +!--------------------------------------------------------------------- +!- This subroutine allows to determine the number of seconds +!- between two dates. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s + INTEGER,INTENT(IN) :: year_e,month_e,day_e + REAL,INTENT(IN) :: sec_e +!- +! Time in seconds between the two dates +!- + REAL,INTENT(OUT) :: sec_diff +!- + INTEGER :: julian_day_s,julian_day_e,day_diff + REAL :: julian_sec_s,julian_sec_e +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day_s,julian_sec_s) + CALL ymds2ju_internal & + & (year_e,month_e,day_e,sec_e,julian_day_e,julian_sec_e) +!- + day_diff = julian_day_e-julian_day_s + sec_diff = julian_sec_e-julian_sec_s +!- + sec_diff = sec_diff+day_diff*one_day +!----------------------- +END SUBROUTINE time_diff +!- +!=== +!- +END MODULE calendar diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig b/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig new file mode 100755 index 0000000000000000000000000000000000000000..a150e85caa4c11d0e5a7d6f14cc7497ce5d4f68d --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/modeles/NEMO/OPA_SRC/par_oce.F90.orig @@ -0,0 +1,230 @@ +MODULE par_oce + !!====================================================================== + !! *** par_oce *** + !! Ocean : set the ocean parameters + !!====================================================================== + !! History : + !! 4.0 ! 91 (Imbard, Levy, Madec) Original code + !! 9.0 ! 04-01 (G. Madec, J.-M. Molines) Free form and module + !! " ! 05-11 (V. Garnier) Surface pressure gradient organization + !!---------------------------------------------------------------------- + !! OPA 9.0 , LOCEAN-IPSL (2005) + !! $Id: par_oce.F90 1647 2009-10-07 15:15:07Z rblod $ + !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt + !!---------------------------------------------------------------------- + !! * Modules used + USE par_kind ! kind parameters + + IMPLICIT NONE + PUBLIC + + !!---------------------------------------------------------------------- + !! Domain decomposition + !!---------------------------------------------------------------------- + !! * if we dont use massively parallel computer (parameters jpni=jpnj=1) + !! so jpiglo=jpi and jpjglo=jpj + +#if ! defined key_mpp_dyndist + INTEGER, PUBLIC, PARAMETER :: & !: + jpni = ABC, & !: number of processors following i + jpnj = DEF, & !: number of processors following j + jpnij = GHI !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#else + INTEGER, PUBLIC :: & ! + jpni , & !: number of processors following i + jpnj , & !: number of processors following j + jpnij !: nb of local domain = nb of processors + ! ! ( <= jpni x jpnj ) +#endif + + INTEGER, PUBLIC, PARAMETER :: & !: + jpr2di = 0, & !: number of columns for extra outer halo + jpr2dj = 0, & !: number of rows for extra outer halo + jpreci = 1, & !: number of columns for overlap + jprecj = 1 !: number of rows for overlap + + !! Ocean Domain sizes + !! ------------------ + !! data domain (jpidta,jpjdta) + !! global or zoom domain (jpiglo,jpjglo) + !! local domain ( jpi , jpj ) + +#if defined key_orca_r4 + !!--------------------------------------------------------------------- + !! 'key_orca_r4' : global ocean : ORCA R4 + !!--------------------------------------------------------------------- +# include "par_ORCA_R4.h90" +#elif defined key_orca_r2 + !!--------------------------------------------------------------------- + !! 'key_orca_r2' : global ocean : ORCA R2 + !!--------------------------------------------------------------------- +# include "par_ORCA_R2.h90" +#elif defined key_orca_r1 + !!--------------------------------------------------------------------- + !! 'key_orca_r1' : global ocean : ORCA R1 + !!--------------------------------------------------------------------- +# include "par_ORCA_R1.h90" +#elif defined key_orca_r05 + !!--------------------------------------------------------------------- + !! 'key_orca_r05' : global ocean : ORCA R05 + !!--------------------------------------------------------------------- +# include "par_ORCA_R05.h90" +#elif defined key_orca_r025 + !!--------------------------------------------------------------------- + !! 'key_orca_r025' : global ocean : ORCA R025 + !!--------------------------------------------------------------------- +# include "par_ORCA_R025.h90" +#elif defined key_eel_r2 + !!--------------------------------------------------------------------- + !! 'key_eel_r2' : channel : EEL R2 + !!--------------------------------------------------------------------- +# include "par_EEL_R2.h90" +#elif defined key_eel_r5 + !!--------------------------------------------------------------------- + !! 'key_eel_r5' : channel : EEL R5 + !!--------------------------------------------------------------------- +# include "par_EEL_R5.h90" +#elif defined key_eel_r6 + !!--------------------------------------------------------------------- + !! 'key_eel_r6' : channel : EEL R6 + !!--------------------------------------------------------------------- +# include "par_EEL_R6.h90" +#elif defined key_gyre + !!--------------------------------------------------------------------- + !! 'key_gyre' : mid-latitude basin : GYRE + !!--------------------------------------------------------------------- +# include "par_GYRE.h90" +#elif defined key_pomme_r025 + !!--------------------------------------------------------------------- + !! 'key_pomme_r025': regional basin : POMME025 + !!--------------------------------------------------------------------- +# include "par_POMME_R025.h90" +#else + !!--------------------------------------------------------------------- + !! default option : small closed basin + !!--------------------------------------------------------------------- + CHARACTER(len=16), PUBLIC, PARAMETER :: & !: + cp_cfg = "default" !: name of the configuration + INTEGER, PARAMETER :: & !: + jp_cfg = 0 , & !: resolution of the configuration + + ! data size !!! * size of all input files * + jpidta = 10, & !: 1st lateral dimension ( >= jpi ) + jpjdta = 12, & !: 2nd " " ( >= jpj ) + jpkdta = 31, & !: number of levels ( >= jpk ) + + ! global or zoom domain size !!! * computational domain * + jpiglo = jpidta, & !: 1st dimension of global domain --> i + jpjglo = jpjdta, & !: 2nd " " --> j + jpk = jpkdta, & !: number of vertical levels + ! zoom starting position + jpizoom = 1 , & !: left bottom (i,j) indices of the zoom + jpjzoom = 1 , & !: in data domain indices + + ! Domain characteristics + jperio = 0 !: lateral cond. type (between 0 and 6) + ! ! = 0 closed + ! ! = 1 cyclic East-West + ! ! = 2 equatorial symmetric + ! ! = 3 North fold T-point pivot + ! ! = 4 cyclic East-West AND North fold T-point pivot + ! ! = 5 North fold F-point pivot + ! ! = 6 cyclic East-West AND North fold F-point pivot + + !! Values set to pp_not_used indicates that this parameter is not used in THIS config. + !! Values set to pp_to_be_computed indicates that variables will be computed in domzgr + REAL(wp), PARAMETER :: & !: + pp_not_used = 999999._wp , & !: + pp_to_be_computed = 999999._wp !: + + + !! Horizontal grid parameters for domhgr + !! ===================================== + + INTEGER, PUBLIC, PARAMETER :: & !: + jphgr_msh = 0 !: type of horizontal mesh + ! ! = 0 curvilinear coordinate on the sphere + ! ! read in coordinate.nc file + ! ! = 1 geographical mesh on the sphere + ! ! with regular grid-spacing + ! ! = 2 f-plane with regular grid-spacing + ! ! = 3 beta-plane with regular grid-spacing + ! ! = 4 Mercator grid with T/U point at the equator with + ! ! isotropic resolution (e1_deg) + + REAL(wp) , PUBLIC, PARAMETER :: & !: + ppglam0 = 0.0_wp, & !: longitude of first raw and column T-point (jphgr_msh = 1) + ppgphi0 = -35.0_wp, & !: latitude of first raw and column T-point (jphgr_msh = 1) + ! ! latitude for the Coriolis or Beta parameter (jphgr_msh = 2 or 3) + ppe1_deg = 1.0_wp, & !: zonal grid-spacing (degrees) + ppe2_deg = 0.5_wp, & !: meridional grid-spacing (degrees) + ppe1_m = 5000.0_wp, & !: zonal grid-spacing (degrees) + ppe2_m = 5000.0_wp !: meridional grid-spacing (degrees) + + !! Vertical grid parameter for domzgr + !! ================================== + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppsur = -4762.96143546300_wp , & !: ORCA r4, r2 and r05 coefficients + & ppa0 = 255.58049070440_wp , & !: (default coefficients) + & ppa1 = 245.58132232490_wp , & !: + & ppkth = 21.43336197938_wp , & !: + & ppacr = 3.00000000000_wp !: + + !! If both ppa0 ppa1 and ppsur are specified to 0, then + !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr + + REAL(wp), PUBLIC, PARAMETER :: & !: + & ppdzmin = 10._wp , & !: Minimum vertical spacing + & pphmax = 5000._wp !: Maximum depth + + !!--------------------------------------------------------------------- +#endif + + !!--------------------------------------------------------------------- + !! Domain Matrix size + !!--------------------------------------------------------------------- + INTEGER & !: +#if !defined key_agrif + ,PARAMETER & +#endif + :: & + jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci , & !: first dimension + jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj , & !: second dimension + jpim1 = jpi-1, & !: inner domain indices + jpjm1 = jpj-1, & !: " " + jpkm1 = jpk-1, & !: " " + jpij = jpi*jpj !: jpi x jpj + +#if defined key_agrif + !!--------------------------------------------------------------------- + !! Agrif variables + !!--------------------------------------------------------------------- + INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 + INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells + INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells +#endif + !!--------------------------------------------------------------------- + !! Optimization/control flags + !!--------------------------------------------------------------------- +#if defined key_esopa + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .TRUE. !: flag to activate the all options +#else + LOGICAL, PUBLIC, PARAMETER :: lk_esopa = .FALSE. !: flag to activate the all options +#endif + +#if defined key_vectopt_memory + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_mem = .FALSE. !: vector optimization flag +#endif + +#if defined key_vectopt_loop + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .TRUE. !: vector optimization flag +#else + LOGICAL, PUBLIC, PARAMETER :: lk_vopt_loop = .FALSE. !: vector optimization flag +#endif + + !!====================================================================== +END MODULE par_oce diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef b/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef new file mode 100755 index 0000000000000000000000000000000000000000..cba98cd362f7231e58655dde061e45833156a895 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef @@ -0,0 +1,925 @@ +#- +#- $Id: AA_make.gdef 1031 2010-05-21 09:25:35Z mafoipsl $ +#- +#- Validate the correlation between the target and the environment +#- +UTIL_DIR = '??' +WW_h_t = $(shell cat $(UTIL_DIR)/.host_target) +WW_h_w = $(shell $(UTIL_DIR)/w_i_h) +WW_t_e = $(shell $(UTIL_DIR)/w_i_e $(WW_h_t) $(WW_h_w)) +ifeq "$(WW_t_e)" "NO" + $(error ) +endif +#- +#-Q- Darwin #- Global definitions for Mac OSX, gfortran +#-Q- Darwin M_K = make +#-Q- Darwin P_C = cpp +#-Q- Darwin P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin F_C = gfortran -c +#-Q- Darwin #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- Darwin #-D- MN F_D = +#-Q- Darwin #-P- I4R4 F_P = +#-Q- Darwin #-P- I4R8 F_P = -fdefault-real-8 +#-Q- Darwin #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- Darwin w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin F_O = $(w_w) -J$(MODDIR) +#-Q- Darwin F_L = gfortran +#-Q- Darwin M_M = 0 +#-Q- Darwin L_X = 0 +#-Q- Darwin L_O = +#-Q- Darwin A_C = ar -rs +#-Q- Darwin A_G = ar -x +#-Q- Darwin C_C = cc -c +#-Q- Darwin C_O = +#-Q- Darwin C_L = cc +#-Q- Darwin #- +#-Q- Darwin NCDF_INC = /usr/install/include +#-Q- Darwin NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin #- +#-Q- Darwin_g95 #- Global definitions for Mac OSX, g95 +#-Q- Darwin_g95 M_K = make +#-Q- Darwin_g95 P_C = cpp +#-Q- Darwin_g95 P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin_g95 F_C = g95 -c +#-Q- Darwin_g95 #-D- MD F_D = -g -Wall -fbounds-check +#-Q- Darwin_g95 #-D- MN F_D = +#-Q- Darwin_g95 #-P- I4R4 F_P = -i4 +#-Q- Darwin_g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- Darwin_g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- Darwin_g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin_g95 F_O = $(w_w) -fmod=$(MODDIR) +#-Q- Darwin_g95 F_L = g95 +#-Q- Darwin_g95 M_M = 0 +#-Q- Darwin_g95 L_X = 0 +#-Q- Darwin_g95 L_O = +#-Q- Darwin_g95 A_C = ar -rs +#-Q- Darwin_g95 A_G = ar -x +#-Q- Darwin_g95 C_C = cc -c +#-Q- Darwin_g95 C_O = +#-Q- Darwin_g95 C_L = cc +#-Q- Darwin_g95 #- +#-Q- Darwin_g95 NCDF_INC = /usr/install/include +#-Q- Darwin_g95 NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin_g95 #- +#-Q- aix #- Global definitions for IBM AIX (MPP) +#-Q- aix LIB_MPI = MPI1 +#-Q- aix LIB_MPI_BIS = MPI1 +#-Q- aix PRISM_ARCH = AIX +#-Q- aix PRISM_NAME = zahir +#-Q- aix FCM_ARCH = AIX_ZAHIR +#-Q- aix M_K = gmake +#-Q- aix P_C = /usr/lib/cpp +#-Q- aix P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix F_C = mpxlf90_r -c +#-Q- aix #-D- MD F_D = +#-Q- aix #-D- MN F_D = +#-Q- aix #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix #-P- I8R8 F_P = +#-Q- aix w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- aix F_L = mpxlf90_r +#-Q- aix M_M = 0 +#-Q- aix L_X = 0 +#-Q- aix L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- aix A_C = ar -rs -X64 +#-Q- aix A_G = ar -x -X64 +#-Q- aix C_C = cc -c +#-Q- aix C_O = -O +#-Q- aix C_L = cc +#-Q- aix #- +#-Q- aix NCDF_INC = /usr/local/pub/include +#-Q- aix NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- aix #- +#-Q- aix6 #- Global definitions for IBM AIX Power6 (MPP) +#-Q- aix6 LIB_MPI = MPI1 +#-Q- aix6 LIB_MPI_BIS = MPI1 +#-Q- aix6 PRISM_ARCH = AIX6 +#-Q- aix6 PRISM_NAME = vargas +#-Q- aix6 FCM_ARCH = PW6_VARGAS +#-Q- aix6 M_K = gmake +#-Q- aix6 P_C = /usr/lib/cpp +#-Q- aix6 P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix6 F_C = mpxlf90_r -c +#-Q- aix6 #-D- MD F_D = +#-Q- aix6 #-D- MN F_D = +#-Q- aix6 #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix6 #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix6 #-P- I8R8 F_P = +#-Q- aix6 #w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix6 w_w = $(F_P) -O3 -qsuffix=cpp=f90 -qfree=f90 +#-Q- aix6 F_O = $(w_w) -WF,-DCPP_PARA -I$(MODDIR) -qmoddir=$(MODDIR) -qextname=flush +#-Q- aix6 F_L = mpxlf90_r +#-Q- aix6 M_M = 0 +#-Q- aix6 L_X = 0 +#-Q- aix6 L_O = $(F_P) -q64 -O3 +#-Q- aix6 A_C = ar -rs -X64 +#-Q- aix6 A_G = ar -x -X64 +#-Q- aix6 C_C = cc -c +#-Q- aix6 C_O = -O +#-Q- aix6 C_L = cc +#-Q- aix6 #- +#-Q- aix6 NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- aix6 NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- aix6 #- +#-Q- ax_mono #- Global definitions for IBM AIX (monoprocessing) +#-Q- ax_mono M_K = gmake +#-Q- ax_mono P_C = /usr/lib/cpp +#-Q- ax_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax_mono F_C = xlf90_r -c +#-Q- ax_mono #-D- MD F_D = +#-Q- ax_mono #-D- MN F_D = +#-Q- ax_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax_mono #-P- I8R8 F_P = +#-Q- ax_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax_mono F_L = xlf90_r +#-Q- ax_mono M_M = 0 +#-Q- ax_mono L_X = 0 +#-Q- ax_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax_mono A_C = ar -rs -X64 +#-Q- ax_mono A_G = ar -x -X64 +#-Q- ax_mono C_C = cc -c +#-Q- ax_mono C_O = -O +#-Q- ax_mono C_L = cc +#-Q- ax_mono #- +#-Q- ax_mono NCDF_INC = /usr/local/pub/include +#-Q- ax_mono NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- ax_mono #- +#-Q- ax6_mono #- Global definitions for IBM AIX Power6 (monoprocessing) +#-Q- ax6_mono M_K = gmake +#-Q- ax6_mono P_C = /usr/lib/cpp +#-Q- ax6_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax6_mono F_C = xlf90_r -c +#-Q- ax6_mono #-D- MD F_D = +#-Q- ax6_mono #-D- MN F_D = +#-Q- ax6_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax6_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax6_mono #-P- I8R8 F_P = +#-Q- ax6_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax6_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax6_mono F_L = xlf90_r +#-Q- ax6_mono M_M = 0 +#-Q- ax6_mono L_X = 0 +#-Q- ax6_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax6_mono A_C = ar -rs -X64 +#-Q- ax6_mono A_G = ar -x -X64 +#-Q- ax6_mono C_C = cc -c +#-Q- ax6_mono C_O = -O +#-Q- ax6_mono C_L = cc +#-Q- ax6_mono #- +#-Q- ax6_mono NCDF_INC = /usr/local/pub/NetCDF/3.6.2/include +#-Q- ax6_mono NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.2/lib -lnetcdf +#-Q- ax6_mono #- +#-Q- babel #- Global definitions for IBM Blue Gene +#-Q- babel M_K = gmake +#-Q- babel P_C = /usr/bin/cpp +#-Q- babel P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- babel F_C = mpixlf90_r -c +#-Q- babel #-D- MD F_D = +#-Q- babel #-D- MN F_D = +#-Q- babel #-P- I4R4 F_P = -qrealsize=4 +#-Q- babel #-P- I4R8 F_P = -qrealsize=8 +#-Q- babel #-P- I8R8 F_P = +#-Q- babel w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- babel F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- babel F_L = mpixlf90_r +#-Q- babel M_M = 0 +#-Q- babel L_X = 0 +#-Q- babel L_O = $(F_P) -O3 +#-Q- babel A_C = ar -rs +#-Q- babel A_G = ar -x +#-Q- babel C_C = cc -c +#-Q- babel C_O = -O +#-Q- babel C_L = cc +#-Q- babel #- +#-Q- babel NCDF_INC = /bglocal/prod/tools_ibm/netcdf-3.6.1/include +#-Q- babel NCDF_LIB = -L/bglocal/prod/tools_ibm/netcdf-3.6.1/lib -lnetcdf +#-Q- babel #- +#-Q- bgfe #- Global definitions for IBM Blue Gene Front End +#-Q- bgfe M_K = gmake +#-Q- bgfe P_C = /usr/bin/cpp +#-Q- bgfe P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- bgfe F_C = xlf90_r -c +#-Q- bgfe #-D- MD F_D = +#-Q- bgfe #-D- MN F_D = +#-Q- bgfe #-P- I4R4 F_P = -qrealsize=4 +#-Q- bgfe #-P- I4R8 F_P = -qrealsize=8 +#-Q- bgfe #-P- I8R8 F_P = +#-Q- bgfe w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- bgfe F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- bgfe F_L = xlf90_r +#-Q- bgfe M_M = 0 +#-Q- bgfe L_X = 0 +#-Q- bgfe L_O = $(F_P) -O3 +#-Q- bgfe A_C = ar -rs +#-Q- bgfe A_G = ar -x +#-Q- bgfe C_C = cc -c +#-Q- bgfe C_O = -O +#-Q- bgfe C_L = cc +#-Q- bgfe #- +#-Q- bgfe NCDF_INC = /local/pub/netcdf/netcdf-3.6.2/include +#-Q- bgfe NCDF_LIB = -L/local/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- bgfe #- +#-Q- cesium #- Global definitions for Cesium at CCRT +#-Q- cesium M_K = gmake +#-Q- cesium P_C = cpp +#-Q- cesium P_O = -P -C $(P_P) +#-Q- cesium F_C = ifort -c +#-Q- cesium #-D- MD F_D = -g +#-Q- cesium #-D- MN F_D = +#-Q- cesium #-P- I4R4 F_P = -i4 +#-Q- cesium #-P- I4R8 F_P = -i4 -r8 +#-Q- cesium #-P- I8R8 F_P = -i8 -r8 +#-Q- cesium F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- cesium F_L = ifort +#-Q- cesium M_M = 0 +#-Q- cesium L_X = 0 +#-Q- cesium L_O = -Vaxlib +#-Q- cesium A_C = ar -r +#-Q- cesium A_G = ar -x +#-Q- cesium C_C = cc -c +#-Q- cesium C_O = +#-Q- cesium C_L = cc +#-Q- cesium #- +#-Q- cesium NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- cesium NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- cesium #- +#-Q- cray #- Obsolete definitions for CRAY +#-Q- cray M_K = make +#-Q- cray P_C = cpp +#-Q- cray P_O = -P -C $(P_P) +#-Q- cray F_C = f90 -c +#-Q- cray #-D- MD F_D = +#-Q- cray #-D- MN F_D = +#-Q- cray #-P- I4R4 F_P = +#-Q- cray #-P- I4R8 F_P = +#-Q- cray #-P- I8R8 F_P = +#-Q- cray F_O = $(F_D) $(F_P) -v -p $(MODEL_LIB) +#-Q- cray F_L = f90 +#-Q- cray M_M = 0 +#-Q- cray L_X = 0 +#-Q- cray L_O = +#-Q- cray A_C = bld -r +#-Q- cray A_G = bld -x +#-Q- cray C_C = cc -c +#-Q- cray C_O = -Wall +#-Q- cray C_L = cc +#-Q- cray #- +#-Q- cray NCDF_INC = /usr/local/pub/include +#-Q- cray NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- cray #- +#-Q- eshpux #- Global definitions for hpux used as Earth Simulator front-end (moon) +#-Q- eshpux LIB_MPI = MPI1 +#-Q- eshpux LIB_MPI_BIS = MPI1 +#-Q- eshpux PRISM_ARCH = ES +#-Q- eshpux PRISM_NAME = moon +#-Q- eshpux FCM_ARCH = ES_MOON +#-Q- eshpux M_K = gmake +#-Q- eshpux P_C = escpp +#-Q- eshpux # FTRACE used for profiling +#-Q- eshpux FTRACE = -ftrace +#-Q- eshpux # FTRACE = +#-Q- eshpux P_O = -P -C $(P_P) +#-Q- eshpux F_C = esmpif90 -c +#-Q- eshpux #-D- MD F_D = +#-Q- eshpux #-D- MN F_D = +#-Q- eshpux #-P- I4R4 F_P = -dW +#-Q- eshpux #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- eshpux #-P- I8R8 F_P = -ew +#-Q- eshpux F_O = $(F_D) $(F_P) $(FTRACE) -Ep -DCPP_PARA -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- eshpux F_L = esmpif90 +#-Q- eshpux M_M = 1 +#-Q- eshpux L_X = 1 +#-Q- eshpux L_O = $(F_P) $(FTRACE) +#-Q- eshpux A_C = ar -rv +#-Q- eshpux A_G = ar -x +#-Q- eshpux A_X = esar -rv +#-Q- eshpux C_C = esmpicc -c +#-Q- eshpux C_O = +#-Q- eshpux C_L = esmpicc +#-Q- eshpux FC_C = cc -c +#-Q- eshpux FC_O = +#-Q- eshpux FC_L = cc +#-Q- eshpux #- +#-Q- eshpux NCDF_INC = /S/home010/c0010/ES/include +#-Q- eshpux NCDF_LIB = -L/S/home010/c0010/ES/lib -lnetcdf +#-Q- eshpux #- +#-Q- fjvpp #- Obsolete definitions for FUJITSU VPP +#-Q- fjvpp M_K = gmake +#-Q- fjvpp P_C = cpp +#-Q- fjvpp P_O = -P -C $(P_P) +#-Q- fjvpp F_C = frt -c +#-Q- fjvpp #-D- MD F_D = +#-Q- fjvpp #-D- MN F_D = +#-Q- fjvpp #-P- I4R4 F_P = -AD +#-Q- fjvpp #-P- I4R8 F_P = -Ad +#-Q- fjvpp #-P- I8R8 F_P = -Ad +#-Q- fjvpp w_w = -X9 -Oe -Sw $(F_D) $(F_P) -Am -M$(MODDIR) +#-Q- fjvpp F_O = $(w_w) -Of -Wv,-Of,-ilfunc,-preload +#-Q- fjvpp F_L = frt +#-Q- fjvpp M_M = 0 +#-Q- fjvpp L_X = 0 +#-Q- fjvpp L_O = -Wg,-c -Wl,-J,-t,-dy +#-Q- fjvpp A_C = ar -r +#-Q- fjvpp A_G = ar -x +#-Q- fjvpp C_C = cc -c +#-Q- fjvpp C_O = +#-Q- fjvpp C_L = cc +#-Q- fjvpp #- +#-Q- fjvpp NCDF_INC = /usr/local/include/netcdf +#-Q- fjvpp NCDF_LIB = /usr/local/lib/netcdf/libnetcdf.a +#-Q- fjvpp #- +#-Q- g95 #- Global definitions for gnu g95 compiler +#-Q- g95 M_K = gmake +#-Q- g95 P_C = cpp +#-Q- g95 P_O = -P -C -traditional $(P_P) +#-Q- g95 F_C = g95 -c +#-Q- g95 #-D- MD F_D = +#-Q- g95 #-D- MN F_D = +#-Q- g95 #-P- I4R4 F_P = -i4 +#-Q- g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- g95 F_O = $(w_w) -fmod=$(MODDIR) -fno-second-underscore +#-Q- g95 F_L = g95 +#-Q- g95 M_M = 0 +#-Q- g95 L_X = 0 +#-Q- g95 L_O = +#-Q- g95 A_C = ar -r +#-Q- g95 A_G = ar -x +#-Q- g95 C_C = cc -c +#-Q- g95 C_O = +#-Q- g95 C_L = cc +#-Q- g95 #- +#-Q- g95 NCDF_INC = /usr/local/include +#-Q- g95 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- g95 #- +#-Q- gfortran #- Global definitions for gfortran, generic system +#-Q- gfortran M_K = make +#-Q- gfortran P_C = cpp +#-Q- gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- gfortran F_C = gfortran -c +#-Q- gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- gfortran #-D- MN F_D = +#-Q- gfortran #-P- I4R4 F_P = +#-Q- gfortran #-P- I4R8 F_P = -fdefault-real-8 +#-Q- gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- gfortran F_O = $(w_w) -J$(MODDIR) +#-Q- gfortran F_L = gfortran +#-Q- gfortran M_M = 0 +#-Q- gfortran L_X = 0 +#-Q- gfortran L_O = +#-Q- gfortran A_C = ar -rs +#-Q- gfortran A_G = ar -x +#-Q- gfortran C_C = cc -c +#-Q- gfortran C_O = +#-Q- gfortran C_L = cc +#-Q- gfortran #- +#-Q- gfortran NCDF_INC = /usr/local/include +#-Q- gfortran NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- gfortran #- +#-Q- idris_tx7 #- Global definitions for NEC TX7 front-end (Brodie) at Idris, gfortran +#-Q- idris_tx7 M_K = gmake +#-Q- idris_tx7 P_C = cpp +#-Q- idris_tx7 P_O = -P -C $(P_P) +#-Q- idris_tx7 F_C = gfortran -c +#-Q- idris_tx7 #-D- MD F_D = -g +#-Q- idris_tx7 #-D- MN F_D = +#-Q- idris_tx7 #-P- I4R4 F_P = +#-Q- idris_tx7 #-P- I4R8 F_P = -fdefault-real-8 +#-Q- idris_tx7 #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- idris_tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -J$(MODDIR) +#-Q- idris_tx7 F_L = gfortran +#-Q- idris_tx7 M_M = 0 +#-Q- idris_tx7 L_X = 0 +#-Q- idris_tx7 L_O = +#-Q- idris_tx7 A_C = ar -r +#-Q- idris_tx7 A_G = ar -x +#-Q- idris_tx7 C_C = gcc -c +#-Q- idris_tx7 C_O = +#-Q- idris_tx7 C_L = gcc +#-Q- idris_tx7 #- +#-Q- idris_tx7 NCDF_INC = /TXlocal/pub/netcdf/netcdf-3.6.2/include +#-Q- idris_tx7 NCDF_LIB = -L/TXlocal/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- idris_tx7 #- +#-Q- linux #- Global definitions for Linux, pgf90 +#-Q- linux M_K = make +#-Q- linux P_C = /lib/cpp +#-Q- linux P_O = -P -C -traditional $(P_P) +#-Q- linux F_C = pgf90 -c +#-Q- linux #-D- MD F_D = +#-Q- linux #-D- MN F_D = +#-Q- linux #-P- I4R4 F_P = -i4 +#-Q- linux #-P- I4R8 F_P = -i4 -r8 +#-Q- linux #-P- I8R8 F_P = -i8 -r8 +#-Q- linux F_O = $(F_D) $(F_P) -Mfree -module $(MODDIR) +#-Q- linux F_L = pgf90 +#-Q- linux M_M = 0 +#-Q- linux L_X = 0 +#-Q- linux L_O = -Wl,-Bstatic -Mbounds +#-Q- linux A_C = ar -r +#-Q- linux A_G = ar -x +#-Q- linux C_C = gcc -c +#-Q- linux C_O = -Wall +#-Q- linux C_L = gcc +#-Q- linux #- +#-Q- linux NCDF_INC = /distrib/local/netcdf/pgf/include/ +#-Q- linux NCDF_LIB = -L/distrib/local/netcdf/pgf/lib/ -lnetcdf +#-Q- linux #- +#-Q- lxiv7 #- Global definitions for Linux, ifc +#-Q- lxiv7 M_K = gmake +#-Q- lxiv7 P_C = cpp +#-Q- lxiv7 P_O = -P -C $(P_P) +#-Q- lxiv7 F_C = ifc -c +#-Q- lxiv7 #-D- MD F_D = -g +#-Q- lxiv7 #-D- MN F_D = +#-Q- lxiv7 #-P- I4R4 F_P = -i4 +#-Q- lxiv7 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv7 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv7 F_L = ifc +#-Q- lxiv7 M_M = 0 +#-Q- lxiv7 L_X = 0 +#-Q- lxiv7 L_O = -Vaxlib +#-Q- lxiv7 A_C = ar -r +#-Q- lxiv7 A_G = ar -x +#-Q- lxiv7 C_C = cc -c +#-Q- lxiv7 C_O = +#-Q- lxiv7 C_L = cc +#-Q- lxiv7 #- +#-Q- lxiv7 NCDF_INC = /usr/local/include +#-Q- lxiv7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- lxiv7 #- +#-Q- lxiv8 #- Global definitions for Intel compiler (ifort) at LSCE +#-Q- lxiv8 M_K = gmake +#-Q- lxiv8 P_C = cpp +#-Q- lxiv8 P_O = -P -C $(P_P) +#-Q- lxiv8 F_C = ifort -c -cpp +#-Q- lxiv8 #-D- MD F_D = -g +#-Q- lxiv8 #-D- MN F_D = +#-Q- lxiv8 #-P- I4R4 F_P = -i4 +#-Q- lxiv8 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv8 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv8 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv8 F_L = ifort +#-Q- lxiv8 M_M = 0 +#-Q- lxiv8 L_X = 0 +#-Q- lxiv8 L_O = -Vaxlib +#-Q- lxiv8 A_C = ar -r +#-Q- lxiv8 A_G = ar -x +#-Q- lxiv8 C_C = cc -c +#-Q- lxiv8 C_O = +#-Q- lxiv8 C_L = cc +#-Q- lxiv8 #- +#-Q- lxiv8 NCDF_INC = /usr/local/include +#-Q- lxiv8 NCDF_LIB = -L/usr/local/lib -lnetcdff -lnetcdf +#-Q- lxiv8 #- +#-Q- osf1 #- Obsolete definitions for DEC OSF1 +#-Q- osf1 M_K = gmake +#-Q- osf1 P_C = cpp +#-Q- osf1 P_O = -P -C $(P_P) +#-Q- osf1 F_C = f90 -c +#-Q- osf1 #-D- MD F_D = -g +#-Q- osf1 #-D- MN F_D = +#-Q- osf1 #-P- I4R4 F_P = +#-Q- osf1 #-P- I4R8 F_P = -r8 +#-Q- osf1 #-P- I8R8 F_P = -i8 -r8 +#-Q- osf1 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- osf1 F_L = f90 +#-Q- osf1 M_M = 0 +#-Q- osf1 L_X = 0 +#-Q- osf1 L_O = +#-Q- osf1 A_C = ar -r +#-Q- osf1 A_G = ar -x +#-Q- osf1 C_C = cc -c +#-Q- osf1 C_O = +#-Q- osf1 C_L = cc +#-Q- osf1 #- +#-Q- osf1 NCDF_INC = /usr/local/include +#-Q- osf1 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- osf1 #- +#-Q- osxxlf #- Global definitions for Mac OS X and IBM xlf compiler +#-Q- osxxlf M_K = make +#-Q- osxxlf P_C = /usr/bin/cpp +#-Q- osxxlf P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- osxxlf F_C = xlf90 -c +#-Q- osxxlf #-D- MD F_D = -g -C +#-Q- osxxlf #-D- MN F_D = +#-Q- osxxlf #-P- I4R4 F_P = -qintsize=4 -qrealsize=4 +#-Q- osxxlf #-P- I4R8 F_P = -qintsize=4 -qrealsize=8 +#-Q- osxxlf #-P- I8R8 F_P = -qintsize=8 -qrealsize=8 +#-Q- osxxlf w_w = $(F_P) -O2 $(F_D) -qsuffix=f=f90 +#-Q- osxxlf F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- osxxlf F_L = xlf90 +#-Q- osxxlf M_M = 0 +#-Q- osxxlf L_X = 0 +#-Q- osxxlf L_O = $(F_P) -O2 +#-Q- osxxlf A_C = ar -rs +#-Q- osxxlf A_G = ar -x +#-Q- osxxlf C_C = cc -c +#-Q- osxxlf C_O = +#-Q- osxxlf C_L = cc +#-Q- osxxlf #- +#-Q- osxxlf NCDF_INC = /usr/local/install/netcdf-3.6.0-p1/include +#-Q- osxxlf NCDF_LIB = -L/usr/local/install/netcdf-3.6.0-p1/lib -lnetcdf +#-Q- osxxlf #- +#-Q- platine #- Global definitions for Bull (Itanium) at CCRT +#-Q- platine #LIB_MPI = MPI1 +#-Q- platine #LIB_MPI_BIS = MPI1 +#-Q- platine #PRISM_ARCH = IA64 +#-Q- platine #PRISM_NAME = platine +#-Q- platine #FCM_ARCH = IA64_PLATINE +#-Q- platine M_K = gmake +#-Q- platine P_C = cpp +#-Q- platine P_O = -P -C $(P_P) +#-Q- platine F_C = mpif90 -c -cpp +#-Q- platine #-D- MD F_D = -g +#-Q- platine #-D- MN F_D = +#-Q- platine #-P- I4R4 F_P = -i4 +#-Q- platine #-P- I4R8 F_P = -i4 -r8 +#-Q- platine #-P- I8R8 F_P = -i8 -r8 +#-Q- platine F_O = -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- platine F_L = mpif90 +#-Q- platine M_M = 0 +#-Q- platine L_X = 0 +#-Q- platine L_O = +#-Q- platine A_C = ar -r +#-Q- platine A_G = ar -x +#-Q- platine C_C = cc -c +#-Q- platine C_O = +#-Q- platine C_L = cc +#-Q- platine #- +#-Q- platine NCDF_INC = /scratch/cfu/opt/netcdf-3.6.3/intel12/include +#-Q- platine NCDF_LIB = -L/scratch/cfu/opt/netcdf-3.6.3/intel12/lib -lnetcdf +#-Q- sgi6 #- Global definitions for IRIX64 (sgi6) +#-Q- sgi6 M_K = gmake +#-Q- sgi6 P_C = cpp +#-Q- sgi6 P_O = -P -C $(P_P) +#-Q- sgi6 F_C = f90 -c +#-Q- sgi6 #-D- MD F_D = +#-Q- sgi6 #-D- MN F_D = +#-Q- sgi6 #-P- I4R4 F_P = -i4 -r4 +#-Q- sgi6 #-P- I4R8 F_P = -i4 -r8 +#-Q- sgi6 #-P- I8R8 F_P = -i8 -r8 +#-Q- sgi6 F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sgi6 F_L = f90 +#-Q- sgi6 M_M = 0 +#-Q- sgi6 L_X = 0 +#-Q- sgi6 L_O = +#-Q- sgi6 A_C = ar -r +#-Q- sgi6 A_G = ar -x +#-Q- sgi6 C_C = cc -c +#-Q- sgi6 C_O = +#-Q- sgi6 C_L = cc +#-Q- sgi6 #- +#-Q- sgi6 NCDF_INC = /usr/local/pub/include +#-Q- sgi6 NCDF_LIB = -L/usr/local/pub/lib64 -lnetcdf +#-Q- sgi6 #- +#-Q- solaris #- Global definitions for SOLARIS +#-Q- solaris M_K = make +#-Q- solaris P_C = cpp +#-Q- solaris P_O = -P -C $(P_P) +#-Q- solaris F_C = f90 -c +#-Q- solaris #-D- MD F_D = +#-Q- solaris #-D- MN F_D = +#-Q- solaris #-P- I4R4 F_P = +#-Q- solaris #-P- I4R8 F_P = -r8const +#-Q- solaris #-P- I8R8 F_P = -i8const -r8const +#-Q- solaris F_O = $(F_D) $(F_P) -M$(MODDIR) -fast +#-Q- solaris F_L = f90 +#-Q- solaris M_M = 1 +#-Q- solaris L_X = 0 +#-Q- solaris L_O = +#-Q- solaris A_C = ar -r +#-Q- solaris A_G = ar -x +#-Q- solaris C_C = cc -c +#-Q- solaris C_O = +#-Q- solaris C_L = cc +#-Q- solaris #- +#-Q- solaris NCDF_INC = /distrib/local/include +#-Q- solaris NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- solaris #- +#-Q- sx6nec #- Global definitions for NEC SX8 at CCRT (alias) +#-Q- sx6nec LIB_MPI = MPI1 +#-Q- sx6nec LIB_MPI_BIS = MPI1 +#-Q- sx6nec PRISM_ARCH = SX +#-Q- sx6nec PRISM_NAME = mercure +#-Q- sx6nec FCM_ARCH = SX8_MERCURE +#-Q- sx6nec M_K = sxgmake +#-Q- sx6nec P_C = cpp +#-Q- sx6nec P_O = -P -C $(P_P) +#-Q- sx6nec F_C = sxmpif90 -c +#-Q- sx6nec #-D- MD F_D = +#-Q- sx6nec #-D- MN F_D = +#-Q- sx6nec #-P- I4R4 F_P = -dW +#-Q- sx6nec #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx6nec #-P- I8R8 F_P = -ew +#-Q- sx6nec F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx6nec F_L = sxmpif90 +#-Q- sx6nec M_M = 1 +#-Q- sx6nec L_X = 0 +#-Q- sx6nec L_O = -size_t64 $(F_P) +#-Q- sx6nec A_C = sxar -rv +#-Q- sx6nec A_G = sxar -x +#-Q- sx6nec A_X = sxar -rv +#-Q- sx6nec C_C = sxcc -size_t64 -c +#-Q- sx6nec C_O = +#-Q- sx6nec C_L = sxcc -size_t64 +#-Q- sx6nec FC_C = gcc -c +#-Q- sx6nec FC_O = +#-Q- sx6nec FC_L = gcc +#-Q- sx6nec #- +#-Q- sx6nec NCDF_INC = /usr/local/SX8/soft/netcdf/include +#-Q- sx6nec NCDF_LIB = -L/usr/local/SX8/soft/netcdf/lib -lnetcdf +#-Q- sx6nec #- +#-Q- sx8brodie #- Global definitions for NEC SX8 at Idris +#-Q- sx8brodie LIB_MPI = MPI1 +#-Q- sx8brodie LIB_MPI_BIS = MPI1 +#-Q- sx8brodie PRISM_ARCH = SX +#-Q- sx8brodie PRISM_NAME = brodie +#-Q- sx8brodie FCM_ARCH = SX8_BRODIE +#-Q- sx8brodie M_K = sxgmake +#-Q- sx8brodie P_C = sxcpp +#-Q- sx8brodie P_O = -P -C $(P_P) +#-Q- sx8brodie F_C = sxmpif90 -c +#-Q- sx8brodie #-D- MD F_D = +#-Q- sx8brodie #-D- MN F_D = +#-Q- sx8brodie #-P- I4R4 F_P = -dW +#-Q- sx8brodie #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8brodie #-P- I8R8 F_P = -ew +#-Q- sx8brodie F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -I $(MODDIR) +#-Q- sx8brodie F_L = sxmpif90 +#-Q- sx8brodie M_M = 1 +#-Q- sx8brodie L_X = 0 +#-Q- sx8brodie L_O = $(F_P) +#-Q- sx8brodie A_C = sxar -rv +#-Q- sx8brodie A_G = sxar -x +#-Q- sx8brodie A_X = sxar -rv +#-Q- sx8brodie C_C = sxcc -c +#-Q- sx8brodie C_O = +#-Q- sx8brodie C_L = sxcc +#-Q- sx8brodie FC_C = gcc -c +#-Q- sx8brodie FC_O = +#-Q- sx8brodie FC_L = gcc +#-Q- sx8brodie #- +#-Q- sx8brodie NCDF_INC = /SXlocal/pub/netCDF/netCDF-3.6.1/include +#-Q- sx8brodie NCDF_LIB = -L/SXlocal/pub/netCDF/netCDF-3.6.1/lib -lnetcdf +#-Q- sx8brodie #- +#-Q- sx8mercure #- Global definitions for NEC SX8 at CCRT +#-Q- sx8mercure LIB_MPI = MPI1 +#-Q- sx8mercure LIB_MPI_BIS = MPI1 +#-Q- sx8mercure PRISM_ARCH = SX +#-Q- sx8mercure PRISM_NAME = mercure +#-Q- sx8mercure FCM_ARCH = SX8_MERCURE +#-Q- sx8mercure M_K = sxgmake +#-Q- sx8mercure P_C = cpp +#-Q- sx8mercure P_O = -P -C $(P_P) +#-Q- sx8mercure F_C = sxmpif90 -c +#-Q- sx8mercure #-D- MD F_D = +#-Q- sx8mercure #-D- MN F_D = +#-Q- sx8mercure #-P- I4R4 F_P = -dW +#-Q- sx8mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8mercure #-P- I8R8 F_P = -ew +#-Q- sx8mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx8mercure F_L = sxmpif90 +#-Q- sx8mercure M_M = 1 +#-Q- sx8mercure L_X = 0 +#-Q- sx8mercure L_O = -size_t64 $(F_P) +#-Q- sx8mercure A_C = sxar -rv +#-Q- sx8mercure A_G = sxar -x +#-Q- sx8mercure A_X = sxar -rv +#-Q- sx8mercure C_C = sxcc -size_t64 -c +#-Q- sx8mercure C_O = +#-Q- sx8mercure C_L = sxcc -size_t64 +#-Q- sx8mercure FC_C = gcc -c +#-Q- sx8mercure FC_O = +#-Q- sx8mercure FC_L = gcc +#-Q- sx8mercure #- +#-Q- sx8mercure NETCDF_SX_INCLUDEDIR ?= /usr/local/SX8/soft/netcdf/include +#-Q- sx8mercure NETCDF_SX_LIBDIR ?= /usr/local/SX8/soft/netcdf/lib +#-Q- sx8mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx8mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx8mercure #- +#-Q- sx9mercure #- Global definitions for NEC SX9 at CCRT +#-Q- sx9mercure LIB_MPI = MPI1 +#-Q- sx9mercure LIB_MPI_BIS = MPI1 +#-Q- sx9mercure PRISM_ARCH = SX +#-Q- sx9mercure PRISM_NAME = mercure +#-Q- sx9mercure FCM_ARCH = SX9_MERCURE +#-Q- sx9mercure M_K = sxgmake +#-Q- sx9mercure P_C = cpp +#-Q- sx9mercure P_O = -P -C $(P_P) +#-Q- sx9mercure F_C = sxmpif90 -c +#-Q- sx9mercure #-D- MD F_D = +#-Q- sx9mercure #-D- MN F_D = +#-Q- sx9mercure #-P- I4R4 F_P = -dW +#-Q- sx9mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx9mercure #-P- I8R8 F_P = -ew +#-Q- sx9mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx9mercure F_L = sxmpif90 +#-Q- sx9mercure M_M = 1 +#-Q- sx9mercure L_X = 0 +#-Q- sx9mercure L_O = -size_t64 $(F_P) +#-Q- sx9mercure A_C = sxar -rv +#-Q- sx9mercure A_G = sxar -x +#-Q- sx9mercure A_X = sxar -rv +#-Q- sx9mercure C_C = sxcc -size_t64 -c +#-Q- sx9mercure C_O = +#-Q- sx9mercure C_L = sxcc -size_t64 +#-Q- sx9mercure FC_C = gcc -c +#-Q- sx9mercure FC_O = +#-Q- sx9mercure FC_L = gcc +#-Q- sx9mercure #- +#-Q- sx9mercure NETCDF_SX_INCLUDEDIR ?= /ccc/applications/sx9/netcdf-3.6.1/include +#-Q- sx9mercure NETCDF_SX_LIBDIR ?= /ccc/applications/sx9/netcdf-3.6.1/lib +#-Q- sx9mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx9mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx9mercure #- +#-Q- sxdkrz #- Global definitions for NEC SX8 at DKRZ +#-Q- sxdkrz LIB_MPI = MPI1 +#-Q- sxdkrz LIB_MPI_BIS = MPI1 +#-Q- sxdkrz PRISM_ARCH = SX +#-Q- sxdkrz PRISM_NAME = ds +#-Q- sxdkrz M_K = sxgmake +#-Q- sxdkrz P_C = cpp +#-Q- sxdkrz P_O = -P -C $(P_P) +#-Q- sxdkrz F_C = sxmpif90 -c +#-Q- sxdkrz #-D- MD F_D = +#-Q- sxdkrz #-D- MN F_D = +#-Q- sxdkrz #-P- I4R4 F_P = -dw +#-Q- sxdkrz #-P- I4R8 F_P = -dw -Wf\"-A idbl4\" +#-Q- sxdkrz #-P- I8R8 F_P = -ew +#-Q- sxdkrz F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sxdkrz F_L = sxmpif90 +#-Q- sxdkrz M_M = 1 +#-Q- sxdkrz L_X = 0 +#-Q- sxdkrz L_O = $(F_P) +#-Q- sxdkrz A_C = ar -rv +#-Q- sxdkrz A_G = ar -x +#-Q- sxdkrz A_X = sxar -rv +#-Q- sxdkrz C_C = sxcc -c +#-Q- sxdkrz C_O = +#-Q- sxdkrz C_L = sxcc +#-Q- sxdkrz FC_C = cc -c +#-Q- sxdkrz FC_O = +#-Q- sxdkrz FC_L = cc +#-Q- sxdkrz #- +#-Q- sxdkrz NCDF_INC = /pool/SX-6/netcdf/netcdf-3.5.0/include +#-Q- sxdkrz NCDF_LIB = -L/pool/SX-6/netcdf/netcdf-3.5.0/lib -lnetcdf_A_idbl4 +#-Q- sxdkrz #- +#-Q- t3e #- Obsolete definitions for T3E +#-Q- t3e M_K = gmake +#-Q- t3e P_C = cpp +#-Q- t3e P_O = -P -C $(P_P) +#-Q- t3e F_C = f90 -c +#-Q- t3e #-D- MD F_D = +#-Q- t3e #-D- MN F_D = +#-Q- t3e #-P- I4R4 F_P = +#-Q- t3e #-P- I4R8 F_P = +#-Q- t3e #-P- I8R8 F_P = +#-Q- t3e w_w = $(F_D) $(F_P) -rm -O2 -Ounroll2 -Osplit2 -dp +#-Q- t3e F_O = $(w_w) -p $(MODEL_LIB) +#-Q- t3e F_L = f90 +#-Q- t3e M_M = 0 +#-Q- t3e L_X = 0 +#-Q- t3e L_O = -X 4 +#-Q- t3e A_C = ar -r +#-Q- t3e A_G = ar -x +#-Q- t3e C_C = cc -c +#-Q- t3e C_O = -Wall +#-Q- t3e C_L = cc +#-Q- t3e #- +#-Q- t3e NCDF_INC = /usr/local/pub/include +#-Q- t3e NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- t3e #- +#-Q- titane #- Global definitions for Bull (Xeon) at CCRT +#-Q- titane #LIB_MPI = MPI1 +#-Q- titane #LIB_MPI_BIS = MPI1 +#-Q- titane #PRISM_ARCH = X64 +#-Q- titane #PRISM_NAME = titane +#-Q- titane #FCM_ARCH = X64_TITANE +#-Q- titane M_K = gmake +#-Q- titane P_C = cpp +#-Q- titane P_O = -P -C $(P_P) +#-Q- titane F_C = mpif90 -c -cpp +#-Q- titane #-D- MD F_D = -g +#-Q- titane #-D- MN F_D = +#-Q- titane #-P- I4R4 F_P = -i4 +#-Q- titane #-P- I4R8 F_P = -i4 -r8 +#-Q- titane #-P- I8R8 F_P = -i8 -r8 +#-Q- titane F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- titane F_L = mpif90 +#-Q- titane M_M = 0 +#-Q- titane L_X = 0 +#-Q- titane L_O = +#-Q- titane A_C = ar -r +#-Q- titane A_G = ar -x +#-Q- titane C_C = cc -c +#-Q- titane C_O = +#-Q- titane C_L = cc +#-Q- titane #- +#-Q- titane NCDF_INC = /share/apps/netcdf-3.6.3/intel11/include +#-Q- titane NCDF_LIB = -L/share/apps/netcdf-3.6.3/intel11/lib -lnetcdff -lnetcdf +#-Q- titane #- +#-Q- tx7 #- Global definitions for NEC TX7 front-end (Mercure) at CCRT, ifort +#-Q- tx7 M_K = gmake +#-Q- tx7 P_C = cpp +#-Q- tx7 P_O = -P -C $(P_P) +#-Q- tx7 F_C = ifort -c +#-Q- tx7 #-D- MD F_D = -g +#-Q- tx7 #-D- MN F_D = +#-Q- tx7 #-P- I4R4 F_P = -i4 +#-Q- tx7 #-P- I4R8 F_P = -i4 -r8 +#-Q- tx7 #-P- I8R8 F_P = -i8 -r8 +#-Q- tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- tx7 F_L = ifort +#-Q- tx7 M_M = 0 +#-Q- tx7 L_X = 0 +#-Q- tx7 L_O = -Vaxlib +#-Q- tx7 A_C = ar -r +#-Q- tx7 A_G = ar -x +#-Q- tx7 C_C = cc -c +#-Q- tx7 C_O = +#-Q- tx7 C_L = cc +#-Q- tx7 #- +#-Q- tx7 NCDF_INC = /usr/local/include +#-Q- tx7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- tx7 #- +#-Q- ulam #- Global definitions for ulam at IDRIS +#-Q- ulam M_K = gmake +#-Q- ulam P_C = cpp +#-Q- ulam P_O = -P -C $(P_P) +#-Q- ulam F_C = ifort -c -cpp +#-Q- ulam #-D- MD F_D = -g +#-Q- ulam #-D- MN F_D = +#-Q- ulam #-P- I4R4 F_P = -i4 +#-Q- ulam #-P- I4R8 F_P = -i4 -r8 +#-Q- ulam #-P- I8R8 F_P = -i8 -r8 +#-Q- ulam F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- ulam F_L = ifort +#-Q- ulam M_M = 0 +#-Q- ulam L_X = 0 +#-Q- ulam L_O = -Vaxlib +#-Q- ulam A_C = ar -r +#-Q- ulam A_G = ar -x +#-Q- ulam C_C = cc -c +#-Q- ulam C_O = +#-Q- ulam C_L = cc +#-Q- ulam #- +#-Q- ulam NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- ulam NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- ulam #- +#-Q- unix #- Skeleton definitions for UNIX +#-Q- unix M_K = make +#-Q- unix P_C = cpp +#-Q- unix P_O = -P -C $(P_P) +#-Q- unix F_C = f90 -c +#-Q- unix #-D- MD F_D = +#-Q- unix #-D- MN F_D = +#-Q- unix #-P- I4R4 F_P = +#-Q- unix #-P- I4R8 F_P = +#-Q- unix #-P- I8R8 F_P = +#-Q- unix F_O = $(F_D) $(F_P) -M$(MODDIR) +#-Q- unix F_L = f90 +#-Q- unix M_M = 0 +#-Q- unix L_X = 0 +#-Q- unix L_O = +#-Q- unix A_C = ar -r +#-Q- unix A_G = ar -x +#-Q- unix C_C = cc -c +#-Q- unix C_O = +#-Q- unix C_L = cc +#-Q- unix #- +#-Q- unix NCDF_INC = /distrib/local/include +#-Q- unix NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- unix #- +#-Q- x86_64 #- Global definitions for new mercure front-end at CCRT (05/2010) +#-Q- x86_64 M_K = gmake +#-Q- x86_64 P_C = cpp +#-Q- x86_64 P_O = -P -C $(P_P) +#-Q- x86_64 F_C = ifort -c +#-Q- x86_64 #-D- MD F_D = -g +#-Q- x86_64 #-D- MN F_D = +#-Q- x86_64 #-P- I4R4 F_P = -i4 +#-Q- x86_64 #-P- I4R8 F_P = -i4 -r8 +#-Q- x86_64 #-P- I8R8 F_P = -i8 -r8 +#-Q- x86_64 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- x86_64 F_L = ifort +#-Q- x86_64 M_M = 0 +#-Q- x86_64 L_X = 0 +#-Q- x86_64 L_O = -Vaxlib +#-Q- x86_64 A_C = ar -r +#-Q- x86_64 A_G = ar -x +#-Q- x86_64 C_C = cc -c +#-Q- x86_64 C_O = +#-Q- x86_64 C_L = cc +#-Q- x86_64 #- +#-Q- x86_64 NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- x86_64 NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- x86_64 #- +RM = rm -f +STRIP = strip +SIZE = size diff --git a/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef_orig b/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef_orig new file mode 100755 index 0000000000000000000000000000000000000000..3edfaf0eebf2b4c4b0b875d8677bfc539bd1e026 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.2/modipsl/util/AA_make.gdef_orig @@ -0,0 +1,926 @@ +#- +#- $Id: AA_make.gdef 1031 2010-05-21 09:25:35Z mafoipsl $ +#- +#- Validate the correlation between the target and the environment +#- +UTIL_DIR = '??' +WW_h_t = $(shell cat $(UTIL_DIR)/.host_target) +WW_h_w = $(shell $(UTIL_DIR)/w_i_h) +WW_t_e = $(shell $(UTIL_DIR)/w_i_e $(WW_h_t) $(WW_h_w)) +ifeq "$(WW_t_e)" "NO" + $(error ) +endif +#- +#-Q- Darwin #- Global definitions for Mac OSX, gfortran +#-Q- Darwin M_K = make +#-Q- Darwin P_C = cpp +#-Q- Darwin P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin F_C = gfortran -c +#-Q- Darwin #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- Darwin #-D- MN F_D = +#-Q- Darwin #-P- I4R4 F_P = +#-Q- Darwin #-P- I4R8 F_P = -fdefault-real-8 +#-Q- Darwin #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- Darwin w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin F_O = $(w_w) -J$(MODDIR) +#-Q- Darwin F_L = gfortran +#-Q- Darwin M_M = 0 +#-Q- Darwin L_X = 0 +#-Q- Darwin L_O = +#-Q- Darwin A_C = ar -rs +#-Q- Darwin A_G = ar -x +#-Q- Darwin C_C = cc -c +#-Q- Darwin C_O = +#-Q- Darwin C_L = cc +#-Q- Darwin #- +#-Q- Darwin NCDF_INC = /usr/install/include +#-Q- Darwin NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin #- +#-Q- Darwin_g95 #- Global definitions for Mac OSX, g95 +#-Q- Darwin_g95 M_K = make +#-Q- Darwin_g95 P_C = cpp +#-Q- Darwin_g95 P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- Darwin_g95 F_C = g95 -c +#-Q- Darwin_g95 #-D- MD F_D = -g -Wall -fbounds-check +#-Q- Darwin_g95 #-D- MN F_D = +#-Q- Darwin_g95 #-P- I4R4 F_P = -i4 +#-Q- Darwin_g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- Darwin_g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- Darwin_g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- Darwin_g95 F_O = $(w_w) -fmod=$(MODDIR) +#-Q- Darwin_g95 F_L = g95 +#-Q- Darwin_g95 M_M = 0 +#-Q- Darwin_g95 L_X = 0 +#-Q- Darwin_g95 L_O = +#-Q- Darwin_g95 A_C = ar -rs +#-Q- Darwin_g95 A_G = ar -x +#-Q- Darwin_g95 C_C = cc -c +#-Q- Darwin_g95 C_O = +#-Q- Darwin_g95 C_L = cc +#-Q- Darwin_g95 #- +#-Q- Darwin_g95 NCDF_INC = /usr/install/include +#-Q- Darwin_g95 NCDF_LIB = -L/usr/install/lib -lnetcdf +#-Q- Darwin_g95 #- +#-Q- aix #- Global definitions for IBM AIX (MPP) +#-Q- aix LIB_MPI = MPI1 +#-Q- aix LIB_MPI_BIS = MPI1 +#-Q- aix PRISM_ARCH = AIX +#-Q- aix PRISM_NAME = zahir +#-Q- aix FCM_ARCH = AIX_ZAHIR +#-Q- aix M_K = gmake +#-Q- aix P_C = /usr/lib/cpp +#-Q- aix P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix F_C = mpxlf90_r -c +#-Q- aix #-D- MD F_D = +#-Q- aix #-D- MN F_D = +#-Q- aix #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix #-P- I8R8 F_P = +#-Q- aix w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- aix F_L = mpxlf90_r +#-Q- aix M_M = 0 +#-Q- aix L_X = 0 +#-Q- aix L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- aix A_C = ar -rs -X64 +#-Q- aix A_G = ar -x -X64 +#-Q- aix C_C = cc -c +#-Q- aix C_O = -O +#-Q- aix C_L = cc +#-Q- aix #- +#-Q- aix NCDF_INC = /usr/local/pub/include +#-Q- aix NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- aix #- +#-Q- aix6 #- Global definitions for IBM AIX Power6 (MPP) +#-Q- aix6 LIB_MPI = MPI1 +#-Q- aix6 LIB_MPI_BIS = MPI1 +#-Q- aix6 PRISM_ARCH = AIX6 +#-Q- aix6 PRISM_NAME = vargas +#-Q- aix6 FCM_ARCH = PW6_VARGAS +#-Q- aix6 M_K = gmake +#-Q- aix6 P_C = /usr/lib/cpp +#-Q- aix6 P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- aix6 F_C = mpxlf90_r -c +#-Q- aix6 #-D- MD F_D = +#-Q- aix6 #-D- MN F_D = +#-Q- aix6 #-P- I4R4 F_P = -qrealsize=4 +#-Q- aix6 #-P- I4R8 F_P = -qrealsize=8 +#-Q- aix6 #-P- I8R8 F_P = +#-Q- aix6 #w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- aix6 w_w = $(F_P) -O3 -qsuffix=cpp=f90 -qfree=f90 +#-Q- aix6 F_O = $(w_w) -WF,-DCPP_PARA -I$(MODDIR) -qmoddir=$(MODDIR) -qextname=flush +#-Q- aix6 F_L = mpxlf90_r +#-Q- aix6 M_M = 0 +#-Q- aix6 L_X = 0 +#-Q- aix6 L_O = $(F_P) -q64 -O3 +#-Q- aix6 A_C = ar -rs -X64 +#-Q- aix6 A_G = ar -x -X64 +#-Q- aix6 C_C = cc -c +#-Q- aix6 C_O = -O +#-Q- aix6 C_L = cc +#-Q- aix6 #- +#-Q- aix6 NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- aix6 NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- aix6 #- +#-Q- ax_mono #- Global definitions for IBM AIX (monoprocessing) +#-Q- ax_mono M_K = gmake +#-Q- ax_mono P_C = /usr/lib/cpp +#-Q- ax_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax_mono F_C = xlf90_r -c +#-Q- ax_mono #-D- MD F_D = +#-Q- ax_mono #-D- MN F_D = +#-Q- ax_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax_mono #-P- I8R8 F_P = +#-Q- ax_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax_mono F_L = xlf90_r +#-Q- ax_mono M_M = 0 +#-Q- ax_mono L_X = 0 +#-Q- ax_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax_mono A_C = ar -rs -X64 +#-Q- ax_mono A_G = ar -x -X64 +#-Q- ax_mono C_C = cc -c +#-Q- ax_mono C_O = -O +#-Q- ax_mono C_L = cc +#-Q- ax_mono #- +#-Q- ax_mono NCDF_INC = /usr/local/pub/include +#-Q- ax_mono NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- ax_mono #- +#-Q- ax6_mono #- Global definitions for IBM AIX Power6 (monoprocessing) +#-Q- ax6_mono M_K = gmake +#-Q- ax6_mono P_C = /usr/lib/cpp +#-Q- ax6_mono P_O = -P -I/usr/lpp/ppe.poe/include/thread64 -C $(P_P:-WF,-D%=-D%) +#-Q- ax6_mono F_C = xlf90_r -c +#-Q- ax6_mono #-D- MD F_D = +#-Q- ax6_mono #-D- MN F_D = +#-Q- ax6_mono #-P- I4R4 F_P = -qrealsize=4 +#-Q- ax6_mono #-P- I4R8 F_P = -qrealsize=8 +#-Q- ax6_mono #-P- I8R8 F_P = +#-Q- ax6_mono w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- ax6_mono F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- ax6_mono F_L = xlf90_r +#-Q- ax6_mono M_M = 0 +#-Q- ax6_mono L_X = 0 +#-Q- ax6_mono L_O = $(F_P) -q64 -bmaxdata:2000000000 -O3 +#-Q- ax6_mono A_C = ar -rs -X64 +#-Q- ax6_mono A_G = ar -x -X64 +#-Q- ax6_mono C_C = cc -c +#-Q- ax6_mono C_O = -O +#-Q- ax6_mono C_L = cc +#-Q- ax6_mono #- +#-Q- ax6_mono NCDF_INC = /usr/local/pub/NetCDF/3.6.2/include +#-Q- ax6_mono NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.2/lib -lnetcdf +#-Q- ax6_mono #- +#-Q- babel #- Global definitions for IBM Blue Gene +#-Q- babel M_K = gmake +#-Q- babel P_C = /usr/bin/cpp +#-Q- babel P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- babel F_C = mpixlf90_r -c +#-Q- babel #-D- MD F_D = +#-Q- babel #-D- MN F_D = +#-Q- babel #-P- I4R4 F_P = -qrealsize=4 +#-Q- babel #-P- I4R8 F_P = -qrealsize=8 +#-Q- babel #-P- I8R8 F_P = +#-Q- babel w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- babel F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- babel F_L = mpixlf90_r +#-Q- babel M_M = 0 +#-Q- babel L_X = 0 +#-Q- babel L_O = $(F_P) -O3 +#-Q- babel A_C = ar -rs +#-Q- babel A_G = ar -x +#-Q- babel C_C = cc -c +#-Q- babel C_O = -O +#-Q- babel C_L = cc +#-Q- babel #- +#-Q- babel NCDF_INC = /bglocal/prod/tools_ibm/netcdf-3.6.1/include +#-Q- babel NCDF_LIB = -L/bglocal/prod/tools_ibm/netcdf-3.6.1/lib -lnetcdf +#-Q- babel #- +#-Q- bgfe #- Global definitions for IBM Blue Gene Front End +#-Q- bgfe M_K = gmake +#-Q- bgfe P_C = /usr/bin/cpp +#-Q- bgfe P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- bgfe F_C = xlf90_r -c +#-Q- bgfe #-D- MD F_D = +#-Q- bgfe #-D- MN F_D = +#-Q- bgfe #-P- I4R4 F_P = -qrealsize=4 +#-Q- bgfe #-P- I4R8 F_P = -qrealsize=8 +#-Q- bgfe #-P- I8R8 F_P = +#-Q- bgfe w_w = $(F_P) -O3 -qsuffix=f=f90 +#-Q- bgfe F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- bgfe F_L = xlf90_r +#-Q- bgfe M_M = 0 +#-Q- bgfe L_X = 0 +#-Q- bgfe L_O = $(F_P) -O3 +#-Q- bgfe A_C = ar -rs +#-Q- bgfe A_G = ar -x +#-Q- bgfe C_C = cc -c +#-Q- bgfe C_O = -O +#-Q- bgfe C_L = cc +#-Q- bgfe #- +#-Q- bgfe NCDF_INC = /local/pub/netcdf/netcdf-3.6.2/include +#-Q- bgfe NCDF_LIB = -L/local/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- bgfe #- +#-Q- cesium #- Global definitions for Cesium at CCRT +#-Q- cesium M_K = gmake +#-Q- cesium P_C = cpp +#-Q- cesium P_O = -P -C $(P_P) +#-Q- cesium F_C = ifort -c +#-Q- cesium #-D- MD F_D = -g +#-Q- cesium #-D- MN F_D = +#-Q- cesium #-P- I4R4 F_P = -i4 +#-Q- cesium #-P- I4R8 F_P = -i4 -r8 +#-Q- cesium #-P- I8R8 F_P = -i8 -r8 +#-Q- cesium F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- cesium F_L = ifort +#-Q- cesium M_M = 0 +#-Q- cesium L_X = 0 +#-Q- cesium L_O = -Vaxlib +#-Q- cesium A_C = ar -r +#-Q- cesium A_G = ar -x +#-Q- cesium C_C = cc -c +#-Q- cesium C_O = +#-Q- cesium C_L = cc +#-Q- cesium #- +#-Q- cesium NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- cesium NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- cesium #- +#-Q- cray #- Obsolete definitions for CRAY +#-Q- cray M_K = make +#-Q- cray P_C = cpp +#-Q- cray P_O = -P -C $(P_P) +#-Q- cray F_C = f90 -c +#-Q- cray #-D- MD F_D = +#-Q- cray #-D- MN F_D = +#-Q- cray #-P- I4R4 F_P = +#-Q- cray #-P- I4R8 F_P = +#-Q- cray #-P- I8R8 F_P = +#-Q- cray F_O = $(F_D) $(F_P) -v -p $(MODEL_LIB) +#-Q- cray F_L = f90 +#-Q- cray M_M = 0 +#-Q- cray L_X = 0 +#-Q- cray L_O = +#-Q- cray A_C = bld -r +#-Q- cray A_G = bld -x +#-Q- cray C_C = cc -c +#-Q- cray C_O = -Wall +#-Q- cray C_L = cc +#-Q- cray #- +#-Q- cray NCDF_INC = /usr/local/pub/include +#-Q- cray NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- cray #- +#-Q- eshpux #- Global definitions for hpux used as Earth Simulator front-end (moon) +#-Q- eshpux LIB_MPI = MPI1 +#-Q- eshpux LIB_MPI_BIS = MPI1 +#-Q- eshpux PRISM_ARCH = ES +#-Q- eshpux PRISM_NAME = moon +#-Q- eshpux FCM_ARCH = ES_MOON +#-Q- eshpux M_K = gmake +#-Q- eshpux P_C = escpp +#-Q- eshpux # FTRACE used for profiling +#-Q- eshpux FTRACE = -ftrace +#-Q- eshpux # FTRACE = +#-Q- eshpux P_O = -P -C $(P_P) +#-Q- eshpux F_C = esmpif90 -c +#-Q- eshpux #-D- MD F_D = +#-Q- eshpux #-D- MN F_D = +#-Q- eshpux #-P- I4R4 F_P = -dW +#-Q- eshpux #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- eshpux #-P- I8R8 F_P = -ew +#-Q- eshpux F_O = $(F_D) $(F_P) $(FTRACE) -Ep -DCPP_PARA -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- eshpux F_L = esmpif90 +#-Q- eshpux M_M = 1 +#-Q- eshpux L_X = 1 +#-Q- eshpux L_O = $(F_P) $(FTRACE) +#-Q- eshpux A_C = ar -rv +#-Q- eshpux A_G = ar -x +#-Q- eshpux A_X = esar -rv +#-Q- eshpux C_C = esmpicc -c +#-Q- eshpux C_O = +#-Q- eshpux C_L = esmpicc +#-Q- eshpux FC_C = cc -c +#-Q- eshpux FC_O = +#-Q- eshpux FC_L = cc +#-Q- eshpux #- +#-Q- eshpux NCDF_INC = /S/home010/c0010/ES/include +#-Q- eshpux NCDF_LIB = -L/S/home010/c0010/ES/lib -lnetcdf +#-Q- eshpux #- +#-Q- fjvpp #- Obsolete definitions for FUJITSU VPP +#-Q- fjvpp M_K = gmake +#-Q- fjvpp P_C = cpp +#-Q- fjvpp P_O = -P -C $(P_P) +#-Q- fjvpp F_C = frt -c +#-Q- fjvpp #-D- MD F_D = +#-Q- fjvpp #-D- MN F_D = +#-Q- fjvpp #-P- I4R4 F_P = -AD +#-Q- fjvpp #-P- I4R8 F_P = -Ad +#-Q- fjvpp #-P- I8R8 F_P = -Ad +#-Q- fjvpp w_w = -X9 -Oe -Sw $(F_D) $(F_P) -Am -M$(MODDIR) +#-Q- fjvpp F_O = $(w_w) -Of -Wv,-Of,-ilfunc,-preload +#-Q- fjvpp F_L = frt +#-Q- fjvpp M_M = 0 +#-Q- fjvpp L_X = 0 +#-Q- fjvpp L_O = -Wg,-c -Wl,-J,-t,-dy +#-Q- fjvpp A_C = ar -r +#-Q- fjvpp A_G = ar -x +#-Q- fjvpp C_C = cc -c +#-Q- fjvpp C_O = +#-Q- fjvpp C_L = cc +#-Q- fjvpp #- +#-Q- fjvpp NCDF_INC = /usr/local/include/netcdf +#-Q- fjvpp NCDF_LIB = /usr/local/lib/netcdf/libnetcdf.a +#-Q- fjvpp #- +#-Q- g95 #- Global definitions for gnu g95 compiler +#-Q- g95 M_K = gmake +#-Q- g95 P_C = cpp +#-Q- g95 P_O = -P -C -traditional $(P_P) +#-Q- g95 F_C = g95 -c +#-Q- g95 #-D- MD F_D = +#-Q- g95 #-D- MN F_D = +#-Q- g95 #-P- I4R4 F_P = -i4 +#-Q- g95 #-P- I4R8 F_P = -i4 -r8 +#-Q- g95 #-P- I8R8 F_P = -i8 -r8 +#-Q- g95 w_w = -O5 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- g95 F_O = $(w_w) -fmod=$(MODDIR) -fno-second-underscore +#-Q- g95 F_L = g95 +#-Q- g95 M_M = 0 +#-Q- g95 L_X = 0 +#-Q- g95 L_O = +#-Q- g95 A_C = ar -r +#-Q- g95 A_G = ar -x +#-Q- g95 C_C = cc -c +#-Q- g95 C_O = +#-Q- g95 C_L = cc +#-Q- g95 #- +#-Q- g95 NCDF_INC = /usr/local/include +#-Q- g95 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- g95 #- +#-Q- gfortran #- Global definitions for gfortran, generic system +#-Q- gfortran M_K = make +#-Q- gfortran P_C = cpp +#-Q- gfortran P_O = -fpreprocessed -P -C -traditional $(P_P) +#-Q- gfortran F_C = gfortran -c +#-Q- gfortran #-D- MD F_D = -g -Wall -fbounds-check -pedantic -finit-real=nan +#-Q- gfortran #-D- MN F_D = +#-Q- gfortran #-P- I4R4 F_P = +#-Q- gfortran #-P- I4R8 F_P = -fdefault-real-8 +#-Q- gfortran #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- gfortran w_w = -O3 -funroll-all-loops $(F_D) $(F_P) -I$(MODDIR) +#-Q- gfortran F_O = $(w_w) -J$(MODDIR) +#-Q- gfortran F_L = gfortran +#-Q- gfortran M_M = 0 +#-Q- gfortran L_X = 0 +#-Q- gfortran L_O = +#-Q- gfortran A_C = ar -rs +#-Q- gfortran A_G = ar -x +#-Q- gfortran C_C = cc -c +#-Q- gfortran C_O = +#-Q- gfortran C_L = cc +#-Q- gfortran #- +#-Q- gfortran NCDF_INC = /usr/local/include +#-Q- gfortran NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- gfortran #- +#-Q- idris_tx7 #- Global definitions for NEC TX7 front-end (Brodie) at Idris, gfortran +#-Q- idris_tx7 M_K = gmake +#-Q- idris_tx7 P_C = cpp +#-Q- idris_tx7 P_O = -P -C $(P_P) +#-Q- idris_tx7 F_C = gfortran -c +#-Q- idris_tx7 #-D- MD F_D = -g +#-Q- idris_tx7 #-D- MN F_D = +#-Q- idris_tx7 #-P- I4R4 F_P = +#-Q- idris_tx7 #-P- I4R8 F_P = -fdefault-real-8 +#-Q- idris_tx7 #-P- I8R8 F_P = -fdefault-integer-8 -fdefault-real-8 +#-Q- idris_tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -J$(MODDIR) +#-Q- idris_tx7 F_L = gfortran +#-Q- idris_tx7 M_M = 0 +#-Q- idris_tx7 L_X = 0 +#-Q- idris_tx7 L_O = +#-Q- idris_tx7 A_C = ar -r +#-Q- idris_tx7 A_G = ar -x +#-Q- idris_tx7 C_C = gcc -c +#-Q- idris_tx7 C_O = +#-Q- idris_tx7 C_L = gcc +#-Q- idris_tx7 #- +#-Q- idris_tx7 NCDF_INC = /TXlocal/pub/netcdf/netcdf-3.6.2/include +#-Q- idris_tx7 NCDF_LIB = -L/TXlocal/pub/netcdf/netcdf-3.6.2/lib -lnetcdf +#-Q- idris_tx7 #- +#-Q- linux #- Global definitions for Linux, pgf90 +#-Q- linux M_K = make +#-Q- linux P_C = /lib/cpp +#-Q- linux P_O = -P -C -traditional $(P_P) +#-Q- linux F_C = pgf90 -c +#-Q- linux #-D- MD F_D = +#-Q- linux #-D- MN F_D = +#-Q- linux #-P- I4R4 F_P = -i4 +#-Q- linux #-P- I4R8 F_P = -i4 -r8 +#-Q- linux #-P- I8R8 F_P = -i8 -r8 +#-Q- linux F_O = $(F_D) $(F_P) -Mfree -module $(MODDIR) +#-Q- linux F_L = pgf90 +#-Q- linux M_M = 0 +#-Q- linux L_X = 0 +#-Q- linux L_O = -Wl,-Bstatic -Mbounds +#-Q- linux A_C = ar -r +#-Q- linux A_G = ar -x +#-Q- linux C_C = gcc -c +#-Q- linux C_O = -Wall +#-Q- linux C_L = gcc +#-Q- linux #- +#-Q- linux NCDF_INC = /distrib/local/netcdf/pgf/include/ +#-Q- linux NCDF_LIB = -L/distrib/local/netcdf/pgf/lib/ -lnetcdf +#-Q- linux #- +#-Q- lxiv7 #- Global definitions for Linux, ifc +#-Q- lxiv7 M_K = gmake +#-Q- lxiv7 P_C = cpp +#-Q- lxiv7 P_O = -P -C $(P_P) +#-Q- lxiv7 F_C = ifc -c +#-Q- lxiv7 #-D- MD F_D = -g +#-Q- lxiv7 #-D- MN F_D = +#-Q- lxiv7 #-P- I4R4 F_P = -i4 +#-Q- lxiv7 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv7 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv7 F_L = ifc +#-Q- lxiv7 M_M = 0 +#-Q- lxiv7 L_X = 0 +#-Q- lxiv7 L_O = -Vaxlib +#-Q- lxiv7 A_C = ar -r +#-Q- lxiv7 A_G = ar -x +#-Q- lxiv7 C_C = cc -c +#-Q- lxiv7 C_O = +#-Q- lxiv7 C_L = cc +#-Q- lxiv7 #- +#-Q- lxiv7 NCDF_INC = /usr/local/include +#-Q- lxiv7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- lxiv7 #- +#-Q- lxiv8 #- Global definitions for Intel compiler (ifort) at LSCE +#-Q- lxiv8 M_K = gmake +#-Q- lxiv8 P_C = cpp +#-Q- lxiv8 P_O = -P -C $(P_P) +#-Q- lxiv8 F_C = ifort -c -cpp +#-Q- lxiv8 #-D- MD F_D = -g +#-Q- lxiv8 #-D- MN F_D = +#-Q- lxiv8 #-P- I4R4 F_P = -i4 +#-Q- lxiv8 #-P- I4R8 F_P = -i4 -r8 +#-Q- lxiv8 #-P- I8R8 F_P = -i8 -r8 +#-Q- lxiv8 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- lxiv8 F_L = ifort +#-Q- lxiv8 M_M = 0 +#-Q- lxiv8 L_X = 0 +#-Q- lxiv8 L_O = -Vaxlib +#-Q- lxiv8 A_C = ar -r +#-Q- lxiv8 A_G = ar -x +#-Q- lxiv8 C_C = cc -c +#-Q- lxiv8 C_O = +#-Q- lxiv8 C_L = cc +#-Q- lxiv8 #- +#-Q- lxiv8 NCDF_INC = /usr/local/include +#-Q- lxiv8 NCDF_LIB = -L/usr/local/lib -lnetcdff -lnetcdf +#-Q- lxiv8 #- +#-Q- osf1 #- Obsolete definitions for DEC OSF1 +#-Q- osf1 M_K = gmake +#-Q- osf1 P_C = cpp +#-Q- osf1 P_O = -P -C $(P_P) +#-Q- osf1 F_C = f90 -c +#-Q- osf1 #-D- MD F_D = -g +#-Q- osf1 #-D- MN F_D = +#-Q- osf1 #-P- I4R4 F_P = +#-Q- osf1 #-P- I4R8 F_P = -r8 +#-Q- osf1 #-P- I8R8 F_P = -i8 -r8 +#-Q- osf1 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- osf1 F_L = f90 +#-Q- osf1 M_M = 0 +#-Q- osf1 L_X = 0 +#-Q- osf1 L_O = +#-Q- osf1 A_C = ar -r +#-Q- osf1 A_G = ar -x +#-Q- osf1 C_C = cc -c +#-Q- osf1 C_O = +#-Q- osf1 C_L = cc +#-Q- osf1 #- +#-Q- osf1 NCDF_INC = /usr/local/include +#-Q- osf1 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- osf1 #- +#-Q- osxxlf #- Global definitions for Mac OS X and IBM xlf compiler +#-Q- osxxlf M_K = make +#-Q- osxxlf P_C = /usr/bin/cpp +#-Q- osxxlf P_O = -P -C $(P_P:-WF,-D%=-D%) +#-Q- osxxlf F_C = xlf90 -c +#-Q- osxxlf #-D- MD F_D = -g -C +#-Q- osxxlf #-D- MN F_D = +#-Q- osxxlf #-P- I4R4 F_P = -qintsize=4 -qrealsize=4 +#-Q- osxxlf #-P- I4R8 F_P = -qintsize=4 -qrealsize=8 +#-Q- osxxlf #-P- I8R8 F_P = -qintsize=8 -qrealsize=8 +#-Q- osxxlf w_w = $(F_P) -O2 $(F_D) -qsuffix=f=f90 +#-Q- osxxlf F_O = $(w_w) -I$(MODDIR) -qmoddir=$(MODDIR) +#-Q- osxxlf F_L = xlf90 +#-Q- osxxlf M_M = 0 +#-Q- osxxlf L_X = 0 +#-Q- osxxlf L_O = $(F_P) -O2 +#-Q- osxxlf A_C = ar -rs +#-Q- osxxlf A_G = ar -x +#-Q- osxxlf C_C = cc -c +#-Q- osxxlf C_O = +#-Q- osxxlf C_L = cc +#-Q- osxxlf #- +#-Q- osxxlf NCDF_INC = /usr/local/install/netcdf-3.6.0-p1/include +#-Q- osxxlf NCDF_LIB = -L/usr/local/install/netcdf-3.6.0-p1/lib -lnetcdf +#-Q- osxxlf #- +#-Q- platine #- Global definitions for Bull (Itanium) at CCRT +#-Q- platine LIB_MPI = MPI1 +#-Q- platine LIB_MPI_BIS = MPI1 +#-Q- platine PRISM_ARCH = IA64 +#-Q- platine PRISM_NAME = platine +#-Q- platine FCM_ARCH = IA64_PLATINE +#-Q- platine M_K = gmake +#-Q- platine P_C = cpp +#-Q- platine P_O = -P -C $(P_P) +#-Q- platine F_C = mpif90 -c -cpp +#-Q- platine #-D- MD F_D = -g +#-Q- platine #-D- MN F_D = +#-Q- platine #-P- I4R4 F_P = -i4 +#-Q- platine #-P- I4R8 F_P = -i4 -r8 +#-Q- platine #-P- I8R8 F_P = -i8 -r8 +#-Q- platine F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- platine F_L = mpif90 +#-Q- platine M_M = 0 +#-Q- platine L_X = 0 +#-Q- platine L_O = +#-Q- platine A_C = ar -r +#-Q- platine A_G = ar -x +#-Q- platine C_C = cc -c +#-Q- platine C_O = +#-Q- platine C_L = cc +#-Q- platine #- +#-Q- platine NCDF_INC = /usr/include +#-Q- platine NCDF_LIB = -L/usr/lib -lnetcdff -lnetcdf +#-Q- platine #- +#-Q- sgi6 #- Global definitions for IRIX64 (sgi6) +#-Q- sgi6 M_K = gmake +#-Q- sgi6 P_C = cpp +#-Q- sgi6 P_O = -P -C $(P_P) +#-Q- sgi6 F_C = f90 -c +#-Q- sgi6 #-D- MD F_D = +#-Q- sgi6 #-D- MN F_D = +#-Q- sgi6 #-P- I4R4 F_P = -i4 -r4 +#-Q- sgi6 #-P- I4R8 F_P = -i4 -r8 +#-Q- sgi6 #-P- I8R8 F_P = -i8 -r8 +#-Q- sgi6 F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sgi6 F_L = f90 +#-Q- sgi6 M_M = 0 +#-Q- sgi6 L_X = 0 +#-Q- sgi6 L_O = +#-Q- sgi6 A_C = ar -r +#-Q- sgi6 A_G = ar -x +#-Q- sgi6 C_C = cc -c +#-Q- sgi6 C_O = +#-Q- sgi6 C_L = cc +#-Q- sgi6 #- +#-Q- sgi6 NCDF_INC = /usr/local/pub/include +#-Q- sgi6 NCDF_LIB = -L/usr/local/pub/lib64 -lnetcdf +#-Q- sgi6 #- +#-Q- solaris #- Global definitions for SOLARIS +#-Q- solaris M_K = make +#-Q- solaris P_C = cpp +#-Q- solaris P_O = -P -C $(P_P) +#-Q- solaris F_C = f90 -c +#-Q- solaris #-D- MD F_D = +#-Q- solaris #-D- MN F_D = +#-Q- solaris #-P- I4R4 F_P = +#-Q- solaris #-P- I4R8 F_P = -r8const +#-Q- solaris #-P- I8R8 F_P = -i8const -r8const +#-Q- solaris F_O = $(F_D) $(F_P) -M$(MODDIR) -fast +#-Q- solaris F_L = f90 +#-Q- solaris M_M = 1 +#-Q- solaris L_X = 0 +#-Q- solaris L_O = +#-Q- solaris A_C = ar -r +#-Q- solaris A_G = ar -x +#-Q- solaris C_C = cc -c +#-Q- solaris C_O = +#-Q- solaris C_L = cc +#-Q- solaris #- +#-Q- solaris NCDF_INC = /distrib/local/include +#-Q- solaris NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- solaris #- +#-Q- sx6nec #- Global definitions for NEC SX8 at CCRT (alias) +#-Q- sx6nec LIB_MPI = MPI1 +#-Q- sx6nec LIB_MPI_BIS = MPI1 +#-Q- sx6nec PRISM_ARCH = SX +#-Q- sx6nec PRISM_NAME = mercure +#-Q- sx6nec FCM_ARCH = SX8_MERCURE +#-Q- sx6nec M_K = sxgmake +#-Q- sx6nec P_C = cpp +#-Q- sx6nec P_O = -P -C $(P_P) +#-Q- sx6nec F_C = sxmpif90 -c +#-Q- sx6nec #-D- MD F_D = +#-Q- sx6nec #-D- MN F_D = +#-Q- sx6nec #-P- I4R4 F_P = -dW +#-Q- sx6nec #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx6nec #-P- I8R8 F_P = -ew +#-Q- sx6nec F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx6nec F_L = sxmpif90 +#-Q- sx6nec M_M = 1 +#-Q- sx6nec L_X = 0 +#-Q- sx6nec L_O = -size_t64 $(F_P) +#-Q- sx6nec A_C = sxar -rv +#-Q- sx6nec A_G = sxar -x +#-Q- sx6nec A_X = sxar -rv +#-Q- sx6nec C_C = sxcc -size_t64 -c +#-Q- sx6nec C_O = +#-Q- sx6nec C_L = sxcc -size_t64 +#-Q- sx6nec FC_C = gcc -c +#-Q- sx6nec FC_O = +#-Q- sx6nec FC_L = gcc +#-Q- sx6nec #- +#-Q- sx6nec NCDF_INC = /usr/local/SX8/soft/netcdf/include +#-Q- sx6nec NCDF_LIB = -L/usr/local/SX8/soft/netcdf/lib -lnetcdf +#-Q- sx6nec #- +#-Q- sx8brodie #- Global definitions for NEC SX8 at Idris +#-Q- sx8brodie LIB_MPI = MPI1 +#-Q- sx8brodie LIB_MPI_BIS = MPI1 +#-Q- sx8brodie PRISM_ARCH = SX +#-Q- sx8brodie PRISM_NAME = brodie +#-Q- sx8brodie FCM_ARCH = SX8_BRODIE +#-Q- sx8brodie M_K = sxgmake +#-Q- sx8brodie P_C = sxcpp +#-Q- sx8brodie P_O = -P -C $(P_P) +#-Q- sx8brodie F_C = sxmpif90 -c +#-Q- sx8brodie #-D- MD F_D = +#-Q- sx8brodie #-D- MN F_D = +#-Q- sx8brodie #-P- I4R4 F_P = -dW +#-Q- sx8brodie #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8brodie #-P- I8R8 F_P = -ew +#-Q- sx8brodie F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -I $(MODDIR) +#-Q- sx8brodie F_L = sxmpif90 +#-Q- sx8brodie M_M = 1 +#-Q- sx8brodie L_X = 0 +#-Q- sx8brodie L_O = $(F_P) +#-Q- sx8brodie A_C = sxar -rv +#-Q- sx8brodie A_G = sxar -x +#-Q- sx8brodie A_X = sxar -rv +#-Q- sx8brodie C_C = sxcc -c +#-Q- sx8brodie C_O = +#-Q- sx8brodie C_L = sxcc +#-Q- sx8brodie FC_C = gcc -c +#-Q- sx8brodie FC_O = +#-Q- sx8brodie FC_L = gcc +#-Q- sx8brodie #- +#-Q- sx8brodie NCDF_INC = /SXlocal/pub/netCDF/netCDF-3.6.1/include +#-Q- sx8brodie NCDF_LIB = -L/SXlocal/pub/netCDF/netCDF-3.6.1/lib -lnetcdf +#-Q- sx8brodie #- +#-Q- sx8mercure #- Global definitions for NEC SX8 at CCRT +#-Q- sx8mercure LIB_MPI = MPI1 +#-Q- sx8mercure LIB_MPI_BIS = MPI1 +#-Q- sx8mercure PRISM_ARCH = SX +#-Q- sx8mercure PRISM_NAME = mercure +#-Q- sx8mercure FCM_ARCH = SX8_MERCURE +#-Q- sx8mercure M_K = sxgmake +#-Q- sx8mercure P_C = cpp +#-Q- sx8mercure P_O = -P -C $(P_P) +#-Q- sx8mercure F_C = sxmpif90 -c +#-Q- sx8mercure #-D- MD F_D = +#-Q- sx8mercure #-D- MN F_D = +#-Q- sx8mercure #-P- I4R4 F_P = -dW +#-Q- sx8mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx8mercure #-P- I8R8 F_P = -ew +#-Q- sx8mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx8mercure F_L = sxmpif90 +#-Q- sx8mercure M_M = 1 +#-Q- sx8mercure L_X = 0 +#-Q- sx8mercure L_O = -size_t64 $(F_P) +#-Q- sx8mercure A_C = sxar -rv +#-Q- sx8mercure A_G = sxar -x +#-Q- sx8mercure A_X = sxar -rv +#-Q- sx8mercure C_C = sxcc -size_t64 -c +#-Q- sx8mercure C_O = +#-Q- sx8mercure C_L = sxcc -size_t64 +#-Q- sx8mercure FC_C = gcc -c +#-Q- sx8mercure FC_O = +#-Q- sx8mercure FC_L = gcc +#-Q- sx8mercure #- +#-Q- sx8mercure NETCDF_SX_INCLUDEDIR ?= /usr/local/SX8/soft/netcdf/include +#-Q- sx8mercure NETCDF_SX_LIBDIR ?= /usr/local/SX8/soft/netcdf/lib +#-Q- sx8mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx8mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx8mercure #- +#-Q- sx9mercure #- Global definitions for NEC SX9 at CCRT +#-Q- sx9mercure LIB_MPI = MPI1 +#-Q- sx9mercure LIB_MPI_BIS = MPI1 +#-Q- sx9mercure PRISM_ARCH = SX +#-Q- sx9mercure PRISM_NAME = mercure +#-Q- sx9mercure FCM_ARCH = SX9_MERCURE +#-Q- sx9mercure M_K = sxgmake +#-Q- sx9mercure P_C = cpp +#-Q- sx9mercure P_O = -P -C $(P_P) +#-Q- sx9mercure F_C = sxmpif90 -c +#-Q- sx9mercure #-D- MD F_D = +#-Q- sx9mercure #-D- MN F_D = +#-Q- sx9mercure #-P- I4R4 F_P = -dW +#-Q- sx9mercure #-P- I4R8 F_P = -dW -Wf\"-A idbl4\" +#-Q- sx9mercure #-P- I8R8 F_P = -ew +#-Q- sx9mercure F_O = $(F_D) $(F_P) -Ep -DCPP_PARA -size_t64 -Wf,"-pvctl loopcnt=999999" -I $(MODDIR) +#-Q- sx9mercure F_L = sxmpif90 +#-Q- sx9mercure M_M = 1 +#-Q- sx9mercure L_X = 0 +#-Q- sx9mercure L_O = -size_t64 $(F_P) +#-Q- sx9mercure A_C = sxar -rv +#-Q- sx9mercure A_G = sxar -x +#-Q- sx9mercure A_X = sxar -rv +#-Q- sx9mercure C_C = sxcc -size_t64 -c +#-Q- sx9mercure C_O = +#-Q- sx9mercure C_L = sxcc -size_t64 +#-Q- sx9mercure FC_C = gcc -c +#-Q- sx9mercure FC_O = +#-Q- sx9mercure FC_L = gcc +#-Q- sx9mercure #- +#-Q- sx9mercure NETCDF_SX_INCLUDEDIR ?= /ccc/applications/sx9/netcdf-3.6.1/include +#-Q- sx9mercure NETCDF_SX_LIBDIR ?= /ccc/applications/sx9/netcdf-3.6.1/lib +#-Q- sx9mercure NCDF_INC = ${NETCDF_SX_INCLUDEDIR} +#-Q- sx9mercure NCDF_LIB = -L${NETCDF_SX_LIBDIR} -lnetcdf +#-Q- sx9mercure #- +#-Q- sxdkrz #- Global definitions for NEC SX8 at DKRZ +#-Q- sxdkrz LIB_MPI = MPI1 +#-Q- sxdkrz LIB_MPI_BIS = MPI1 +#-Q- sxdkrz PRISM_ARCH = SX +#-Q- sxdkrz PRISM_NAME = ds +#-Q- sxdkrz M_K = sxgmake +#-Q- sxdkrz P_C = cpp +#-Q- sxdkrz P_O = -P -C $(P_P) +#-Q- sxdkrz F_C = sxmpif90 -c +#-Q- sxdkrz #-D- MD F_D = +#-Q- sxdkrz #-D- MN F_D = +#-Q- sxdkrz #-P- I4R4 F_P = -dw +#-Q- sxdkrz #-P- I4R8 F_P = -dw -Wf\"-A idbl4\" +#-Q- sxdkrz #-P- I8R8 F_P = -ew +#-Q- sxdkrz F_O = $(F_D) $(F_P) -I $(MODDIR) +#-Q- sxdkrz F_L = sxmpif90 +#-Q- sxdkrz M_M = 1 +#-Q- sxdkrz L_X = 0 +#-Q- sxdkrz L_O = $(F_P) +#-Q- sxdkrz A_C = ar -rv +#-Q- sxdkrz A_G = ar -x +#-Q- sxdkrz A_X = sxar -rv +#-Q- sxdkrz C_C = sxcc -c +#-Q- sxdkrz C_O = +#-Q- sxdkrz C_L = sxcc +#-Q- sxdkrz FC_C = cc -c +#-Q- sxdkrz FC_O = +#-Q- sxdkrz FC_L = cc +#-Q- sxdkrz #- +#-Q- sxdkrz NCDF_INC = /pool/SX-6/netcdf/netcdf-3.5.0/include +#-Q- sxdkrz NCDF_LIB = -L/pool/SX-6/netcdf/netcdf-3.5.0/lib -lnetcdf_A_idbl4 +#-Q- sxdkrz #- +#-Q- t3e #- Obsolete definitions for T3E +#-Q- t3e M_K = gmake +#-Q- t3e P_C = cpp +#-Q- t3e P_O = -P -C $(P_P) +#-Q- t3e F_C = f90 -c +#-Q- t3e #-D- MD F_D = +#-Q- t3e #-D- MN F_D = +#-Q- t3e #-P- I4R4 F_P = +#-Q- t3e #-P- I4R8 F_P = +#-Q- t3e #-P- I8R8 F_P = +#-Q- t3e w_w = $(F_D) $(F_P) -rm -O2 -Ounroll2 -Osplit2 -dp +#-Q- t3e F_O = $(w_w) -p $(MODEL_LIB) +#-Q- t3e F_L = f90 +#-Q- t3e M_M = 0 +#-Q- t3e L_X = 0 +#-Q- t3e L_O = -X 4 +#-Q- t3e A_C = ar -r +#-Q- t3e A_G = ar -x +#-Q- t3e C_C = cc -c +#-Q- t3e C_O = -Wall +#-Q- t3e C_L = cc +#-Q- t3e #- +#-Q- t3e NCDF_INC = /usr/local/pub/include +#-Q- t3e NCDF_LIB = -L/usr/local/pub/lib -lnetcdf +#-Q- t3e #- +#-Q- titane #- Global definitions for Bull (Xeon) at CCRT +#-Q- titane LIB_MPI = MPI1 +#-Q- titane LIB_MPI_BIS = MPI1 +#-Q- titane PRISM_ARCH = X64 +#-Q- titane PRISM_NAME = titane +#-Q- titane FCM_ARCH = X64_TITANE +#-Q- titane M_K = gmake +#-Q- titane P_C = cpp +#-Q- titane P_O = -P -C $(P_P) +#-Q- titane F_C = mpif90 -c -cpp +#-Q- titane #-D- MD F_D = -g +#-Q- titane #-D- MN F_D = +#-Q- titane #-P- I4R4 F_P = -i4 +#-Q- titane #-P- I4R8 F_P = -i4 -r8 +#-Q- titane #-P- I8R8 F_P = -i8 -r8 +#-Q- titane F_O = -DCPP_PARA -O3 $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- titane F_L = mpif90 +#-Q- titane M_M = 0 +#-Q- titane L_X = 0 +#-Q- titane L_O = +#-Q- titane A_C = ar -r +#-Q- titane A_G = ar -x +#-Q- titane C_C = cc -c +#-Q- titane C_O = +#-Q- titane C_L = cc +#-Q- titane #- +#-Q- titane NCDF_INC = $(NETCDF_INCLUDEDIR) +#-Q- titane NCDF_LIB = -L$(NETCDF_LIBDIR) -lnetcdff -lnetcdf +#-Q- titane #- +#-Q- tx7 #- Global definitions for NEC TX7 front-end (Mercure) at CCRT, ifort +#-Q- tx7 M_K = gmake +#-Q- tx7 P_C = cpp +#-Q- tx7 P_O = -P -C $(P_P) +#-Q- tx7 F_C = ifort -c +#-Q- tx7 #-D- MD F_D = -g +#-Q- tx7 #-D- MN F_D = +#-Q- tx7 #-P- I4R4 F_P = -i4 +#-Q- tx7 #-P- I4R8 F_P = -i4 -r8 +#-Q- tx7 #-P- I8R8 F_P = -i8 -r8 +#-Q- tx7 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- tx7 F_L = ifort +#-Q- tx7 M_M = 0 +#-Q- tx7 L_X = 0 +#-Q- tx7 L_O = -Vaxlib +#-Q- tx7 A_C = ar -r +#-Q- tx7 A_G = ar -x +#-Q- tx7 C_C = cc -c +#-Q- tx7 C_O = +#-Q- tx7 C_L = cc +#-Q- tx7 #- +#-Q- tx7 NCDF_INC = /usr/local/include +#-Q- tx7 NCDF_LIB = -L/usr/local/lib -lnetcdf +#-Q- tx7 #- +#-Q- ulam #- Global definitions for ulam at IDRIS +#-Q- ulam M_K = gmake +#-Q- ulam P_C = cpp +#-Q- ulam P_O = -P -C $(P_P) +#-Q- ulam F_C = ifort -c -cpp +#-Q- ulam #-D- MD F_D = -g +#-Q- ulam #-D- MN F_D = +#-Q- ulam #-P- I4R4 F_P = -i4 +#-Q- ulam #-P- I4R8 F_P = -i4 -r8 +#-Q- ulam #-P- I8R8 F_P = -i8 -r8 +#-Q- ulam F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- ulam F_L = ifort +#-Q- ulam M_M = 0 +#-Q- ulam L_X = 0 +#-Q- ulam L_O = -Vaxlib +#-Q- ulam A_C = ar -r +#-Q- ulam A_G = ar -x +#-Q- ulam C_C = cc -c +#-Q- ulam C_O = +#-Q- ulam C_L = cc +#-Q- ulam #- +#-Q- ulam NCDF_INC = /usr/local/pub/NetCDF/3.6.3/include +#-Q- ulam NCDF_LIB = -L/usr/local/pub/NetCDF/3.6.3/lib -lnetcdf +#-Q- ulam #- +#-Q- unix #- Skeleton definitions for UNIX +#-Q- unix M_K = make +#-Q- unix P_C = cpp +#-Q- unix P_O = -P -C $(P_P) +#-Q- unix F_C = f90 -c +#-Q- unix #-D- MD F_D = +#-Q- unix #-D- MN F_D = +#-Q- unix #-P- I4R4 F_P = +#-Q- unix #-P- I4R8 F_P = +#-Q- unix #-P- I8R8 F_P = +#-Q- unix F_O = $(F_D) $(F_P) -M$(MODDIR) +#-Q- unix F_L = f90 +#-Q- unix M_M = 0 +#-Q- unix L_X = 0 +#-Q- unix L_O = +#-Q- unix A_C = ar -r +#-Q- unix A_G = ar -x +#-Q- unix C_C = cc -c +#-Q- unix C_O = +#-Q- unix C_L = cc +#-Q- unix #- +#-Q- unix NCDF_INC = /distrib/local/include +#-Q- unix NCDF_LIB = -L/distrib/local/lib -lnetcdf +#-Q- unix #- +#-Q- x86_64 #- Global definitions for new mercure front-end at CCRT (05/2010) +#-Q- x86_64 M_K = gmake +#-Q- x86_64 P_C = cpp +#-Q- x86_64 P_O = -P -C $(P_P) +#-Q- x86_64 F_C = ifort -c +#-Q- x86_64 #-D- MD F_D = -g +#-Q- x86_64 #-D- MN F_D = +#-Q- x86_64 #-P- I4R4 F_P = -i4 +#-Q- x86_64 #-P- I4R8 F_P = -i4 -r8 +#-Q- x86_64 #-P- I8R8 F_P = -i8 -r8 +#-Q- x86_64 F_O = -O $(F_D) $(F_P) -I$(MODDIR) -module $(MODDIR) +#-Q- x86_64 F_L = ifort +#-Q- x86_64 M_M = 0 +#-Q- x86_64 L_X = 0 +#-Q- x86_64 L_O = -Vaxlib +#-Q- x86_64 A_C = ar -r +#-Q- x86_64 A_G = ar -x +#-Q- x86_64 C_C = cc -c +#-Q- x86_64 C_O = +#-Q- x86_64 C_L = cc +#-Q- x86_64 #- +#-Q- x86_64 NCDF_INC = /applications/netcdf-3.6.3/include +#-Q- x86_64 NCDF_LIB = -L/applications/netcdf-3.6.3/lib -lnetcdff -lnetcdf +#-Q- x86_64 #- +RM = rm -f +STRIP = strip +SIZE = size diff --git a/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..92e3f935b01fcf6f3ea467f78d26ab7c0e6c55ea --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/compilation.cmd @@ -0,0 +1,88 @@ +#!/bin/bash + +# ./compilation.sh >& compile.log & +# or +# ./compilation.sh -i 6 -j 6 >& compile.log & + +# Modify key_nproci and key_nprocj in the following "fcm" +# file according to no. of proc to be used. +# vi ORCA2_LIM/cpp_ORCA2_LIM.fcm + +# Modify compiler options in the appropriat +# file located at the following path. +# vi ../ARCH/arch-*.fcm + +nemo_i=6 +nemo_j=6 + +while getopts i:j: option +do + case $option in + i) nemo_i=$OPTARG;; + j) nemo_j=$OPTARG;; + \?) exit 1;; + esac +done + +source /opt/modules/init/bash +module load intel/12.1 +module load openmpi/1.6-intel + +set -xuve +date + +compile=ifort_linux +cat > ../ARCH/arch-${compile}.fcm < if you have libraries in a +# FPPFLAGS pre-processing flags +# AR assembler +# ARFLAGS assembler flags +# MK make +# USER_INC additional include files for the compiler, e.g. -I +# USER_LIB additional libraries to pass to the linker, e.g. -l + + +%NCDF_INC -I/scratch/cfu/opt/netcdf-3.6.3/intel12/include +%NCDF_LIB -L/scratch/cfu/opt/netcdf-3.6.3/intel12/lib -lnetcdf +%FC mpif90 +%FCFLAGS -r8 -O3 -traceback +%FFLAGS -r8 -O3 -traceback +%LD mpif90 +%FPPFLAGS -P -C -traditional +%LDFLAGS +%AR ar +%ARFLAGS -r +%MK gmake +%USER_INC %NCDF_INC +%USER_LIB %NCDF_LIB +EOF +cat ../ARCH/arch-${compile}.fcm + +set +e +./makenemo clean +set -e + +config=ORCA1_LIM2 +./makenemo -n $config -d "OPA_SRC LIM_SRC_2" +cat > $config/cpp_${config}.fcm < $config/cpp_${config}.fcm <>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 1416 ! last time step (std 5475) + nn_date0 = 19900101 ! initial calendar date yymmdd (used if nn_rstctl=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + ln_rstart = .false. ! start from rest (F) or from a restart file (T) + nn_rstctl = 0 ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 1416 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'swdn' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_qlw = 'qlw_core' , 24 , 'lwdn' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tair = 't2_core' , 6 , 't2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_humi = 'q2_core' , 6 , 'q2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_prec = 'precip_core' , -1 , 'precip' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_snow = 'snow_core' , -1 , 'snow' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 0.98 ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask.nc', -1 , 'socoeff', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -66.0 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 5000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 1.67e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 0.78e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1000. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1000. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .true. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .false. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.001 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 2000 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 6 ! number of processors in i-direction + nn_jsplt = 6 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .true. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ diff --git a/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default.DFS4.3 b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default.DFS4.3 new file mode 100755 index 0000000000000000000000000000000000000000..ca8bf8f5248f297cdc92073a74426d15e4ab77a5 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist.v3.3.default.DFS4.3 @@ -0,0 +1,869 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/OPA : 1 - run manager (namrun) +!! namelists 2 - Domain (namzgr, namzgr_sco, namdom, namdta_tem, namdta_sal) +!! 3 - Surface boundary (namsbc, namsbc_ana, namsbc_flx, namsbc_clio, namsbc_core +!! namsbc_cpl, namsbc_cpl_co2 namtra_qsr, namsbc_rnf, +!! namsbc_apr, namsbc_ssr, namsbc_alb) +!! 4 - lateral boundary (namlbc, namcla, namobc, namagrif, nambdy, nambdy_tide) +!! 5 - bottom boundary (nambfr, nambbc, nambbl) +!! 6 - Tracer (nameos, namtra_adv, namtra_ldf, namtra_dmp) +!! 7 - dynamics (namdyn_adv, namdyn_vor, namdyn_hpg, namdyn_spg, namdyn_ldf) +!! 8 - Verical physics (namzdf, namzdf_ric, namzdf_tke, namzdf_kpp, namzdf_ddm, namzdf_tmx) +!! 9 - diagnostics (namnc4, namtrd, namspr, namflo, namptr, namhsb) +!! 10 - miscellaneous (namsol, nammpp, nammpp_dyndist, namctl) +!! 11 - Obs & Assim (namobs, nam_asminc) +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!!====================================================================== +!! *** Run management namelists *** +!!====================================================================== +!! namrun parameters of the run +!!====================================================================== +! +!----------------------------------------------------------------------- +&namrun ! parameters of the run +!----------------------------------------------------------------------- + nn_no = 0 ! job number + cn_exp = "ORCA1" ! experience name + nn_it000 = 1 ! first time step + nn_itend = 1416 ! last time step (std 5475) + nn_date0 = 19900101 ! initial calendar date yymmdd (used if nn_rstctl=1) + nn_leapy = 0 ! Leap year calendar (1) or not (0) + ln_rstart = .false. ! start from rest (F) or from a restart file (T) + nn_rstctl = 0 ! restart control = 0 nn_it000 is not compared to the restart file value + ! = 1 use nn_date0 in namelist (not the value in the restart file) + ! = 2 calendar parameters read in the restart file + cn_ocerst_in = "restart" ! suffix of ocean restart name (input) + cn_ocerst_out = "restart" ! suffix of ocean restart name (output) + nn_istate = 0 ! output the initial state (1) or not (0) + nn_stock = 1416 ! frequency of creation of a restart file (modulo referenced to 1) + nn_write = -1 ! frequency of write in the output file (modulo referenced to nn_it000) + ln_dimgnnn = .false. ! DIMG file format: 1 file for all processors (F) or by processor (T) + ln_mskland = .false. ! mask land points in NetCDF outputs (costly: + ~15%) + ln_clobber = .false. ! clobber (overwrite) an existing file + nn_chunksz = 0 ! chunksize (bytes) for NetCDF file (works only with iom_nf90 routines) +/ + +!!====================================================================== +!! *** Domain namelists *** +!!====================================================================== +!! namzgr vertical coordinate +!! namzgr_sco s-coordinate or hybrid z-s-coordinate +!! namdom space and time domain (bathymetry, mesh, timestep) +!! namdta_tem data: temperature ("key_dtatem") +!! namdta_sal data: salinity ("key_dtasal") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzgr ! vertical coordinate +!----------------------------------------------------------------------- + ln_zco = .false. ! z-coordinate - full steps (T/F) ("key_zco" may also be defined) + ln_zps = .true. ! z-coordinate - partial steps (T/F) + ln_sco = .false. ! s- or hybrid z-s-coordinate (T/F) +/ +!----------------------------------------------------------------------- +&namzgr_sco ! s-coordinate or hybrid z-s-coordinate +!----------------------------------------------------------------------- + rn_sbot_min = 300. ! minimum depth of s-bottom surface (>0) (m) + rn_sbot_max = 5250. ! maximum depth of s-bottom surface (= ocean depth) (>0) (m) + rn_theta = 6.0 ! surface control parameter (0<=rn_theta<=20) + rn_thetb = 0.75 ! bottom control parameter (0<=rn_thetb<= 1) + rn_rmax = 0.15 ! maximum cut-off r-value allowed (00) or min number of ocean level (<0) + rn_e3zps_min= 20. ! partial step thickness is set larger than the minimum of + rn_e3zps_rat= 0.1 ! rn_e3zps_min and rn_e3zps_rat*e3t, with 0 fill namsbc_ana ) + ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) + ln_blk_clio = .false. ! CLIO bulk formulation (T => fill namsbc_clio) + ln_blk_core = .true. ! CORE bulk formulation (T => fill namsbc_core) + ln_cpl = .false. ! Coupled formulation (T => fill namsbc_cpl ) + ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) + nn_ice = 2 ! =0 no ice boundary condition , + ! =1 use observed ice-cover , + ! =2 ice-model used ("key_lim3" or "key_lim2) + ln_dm2dc = .false. ! daily mean to diurnal cycle on short wave + ln_rnf = .true. ! runoffs (T => fill namsbc_rnf) + ln_ssr = .true. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) + nn_fwb = 0 ! FreshWater Budget: =0 unchecked + ! =1 global mean of e-p-r set to zero at each time step + ! =2 annual global mean of e-p-r set to zero + ! =3 global emp set to zero and spread out over erp area +/ +!----------------------------------------------------------------------- +&namsbc_ana ! analytical surface boundary condition +!----------------------------------------------------------------------- + nn_tau000 = 0 ! gently increase the stress over the first ntau_rst time-steps + rn_utau0 = 0.5 ! uniform value for the i-stress + rn_vtau0 = 0.e0 ! uniform value for the j-stress + rn_qns0 = 0.e0 ! uniform value for the total heat flux + rn_qsr0 = 0.e0 ! uniform value for the solar radiation + rn_emp0 = 0.e0 ! uniform value for the freswater budget (E-P) +/ +!----------------------------------------------------------------------- +&namsbc_flx ! surface boundary condition : flux formulation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'utau' , 24. , 'utau' , .false. , .false., 'yearly' , '' , '' + sn_vtau = 'vtau' , 24. , 'vtau' , .false. , .false., 'yearly' , '' , '' + sn_qtot = 'qtot' , 24. , 'qtot' , .false. , .false., 'yearly' , '' , '' + sn_qsr = 'qsr' , 24. , 'qsr' , .false. , .false., 'yearly' , '' , '' + sn_emp = 'emp' , 24. , 'emp' , .false. , .false., 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the flux files +/ +!----------------------------------------------------------------------- +&namsbc_clio ! namsbc_clio CLIO bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_utau = 'taux_1m' , -1. , 'sozotaux', .true. , .true. , 'yearly' , '' , '' + sn_vtau = 'tauy_1m' , -1. , 'sometauy', .true. , .true. , 'yearly' , '' , '' + sn_wndm = 'flx' , -1. , 'socliowi', .true. , .true. , 'yearly' , '' , '' + sn_tair = 'flx' , -1. , 'socliot2', .true. , .true. , 'yearly' , '' , '' + sn_humi = 'flx' , -1. , 'socliohu', .true. , .true. , 'yearly' , '' , '' + sn_ccov = 'flx' , -1. , 'socliocl', .false. , .true. , 'yearly' , '' , '' + sn_prec = 'flx' , -1. , 'socliopl', .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files are +/ +!----------------------------------------------------------------------- +&namsbc_core ! namsbc_core CORE bulk formulea +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_wndi = 'u10_core' , 6 , 'u10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Ume' + sn_wndj = 'v10_core' , 6 , 'v10' , .false. , .true. , 'yearly' , 'weights_grid02_bicubic_orca1.nc' , 'Vme' + sn_qsr = 'qsw_core' , 24 , 'qsw' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_qlw = 'qlw_core' , 24 , 'qlw' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tair = 't2_core' , 6 , 't2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_humi = 'q2_core' , 6 , 'q2' , .false. , .true. , 'yearly' , 'weights_grid02_bilinear_orca1.nc' , '' + sn_prec = 'precip_core' , -1 , 'precip' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_snow = 'snow_core' , -1 , 'snow' , .false. , .true. , 'yearly' , 'weights_grid03_bilinear_orca1.nc' , '' + sn_tdif = 'taudif_core' , 24 , 'taudif' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_2m = .true. ! air temperature and humidity referenced at 2m (T) instead 10m (F) + ln_taudif = .false. ! HF tau contribution: use "mean of stress module - module of the mean stress" data + rn_pfac = 0.98 ! multiplicative factor for precipitation (total & snow) +/ +!----------------------------------------------------------------------- +&namsbc_cpl ! coupled ocean/atmosphere model ("key_coupled") +!----------------------------------------------------------------------- +! ! send +cn_snd_temperature= 'weighted oce and ice' ! 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_albedo = 'weighted ice' ! 'none' 'weighted ice' 'mixed oce-ice' +cn_snd_thickness = 'none' ! 'none' 'weighted ice and snow' +cn_snd_crt_nature = 'none' ! 'none' 'oce only' 'weighted oce and ice' 'mixed oce-ice' +cn_snd_crt_refere = 'spherical' ! 'spherical' 'cartesian' +cn_snd_crt_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_snd_crt_grid = 'T' ! 'T' +! ! receive +cn_rcv_w10m = 'none' ! 'none' 'coupled' +cn_rcv_taumod = 'coupled' ! 'none' 'coupled' +cn_rcv_tau_nature = 'oce only' ! 'oce only' 'oce and ice' 'mixed oce-ice' +cn_rcv_tau_refere = 'cartesian' ! 'spherical' 'cartesian' +cn_rcv_tau_orient = 'eastward-northward' ! 'eastward-northward' or 'local grid' +cn_rcv_tau_grid = 'U,V' ! 'T' 'U,V' 'U,V,F' 'U,V,I' 'T,F' 'T,I' 'T,U,V' +cn_rcv_dqnsdt = 'coupled' ! 'none' 'coupled' +cn_rcv_qsr = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_qns = 'oce and ice' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_emp = 'conservative' ! 'conservative' 'oce and ice' 'mixed oce-ice' +cn_rcv_rnf = 'coupled' ! 'coupled' 'climato' 'mixed' +cn_rcv_cal = 'coupled' ! 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namsbc_cpl_co2 ! coupled ocean/biogeo/atmosphere model ("key_cpl_carbon_cycle") +!----------------------------------------------------------------------- + cn_snd_co2 = 'coupled' ! send : 'none' 'coupled' + cn_rcv_co2 = 'coupled' ! receive : 'none' 'coupled' +/ +!----------------------------------------------------------------------- +&namtra_qsr ! penetrative solar radiation +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_chl ='chlorophyll', -1 , 'CHLA' , .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_traqsr = .true. ! Light penetration (T) or not (F) + ln_qsr_rgb = .false. ! RGB (Red-Green-Blue) light penetration + ln_qsr_2bd = .true. ! 2 bands light penetration + ln_qsr_bio = .false. ! bio-model light penetration + nn_chldta = 0 ! RGB : Chl data (=1) or cst value (=0) + rn_abs = 0.58 ! RGB & 2 bands: fraction of light (rn_si1) + rn_si0 = 0.35 ! RGB & 2 bands: shortess depth of extinction + rn_si1 = 23.0 ! 2 bands: longest depth of extinction +/ +!----------------------------------------------------------------------- +&namsbc_rnf ! runoffs namelist surface boundary condition +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_rnf = 'runoff_1m_nomask.nc', -1 , 'sorunoff', .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'runoff_1m_nomask.nc', -1 , 'socoeff', .false. , .true. , 'yearly' , '' , '' + sn_s_rnf = 'runoffs' , 24 , 'rosaline', .true. , .true. , 'yearly' , '' , '' + sn_t_rnf = 'runoffs' , 24 , 'rotemper', .true. , .true. , 'yearly' , '' , '' + sn_dep_rnf = 'runoffs' , 0 , 'rodepth' , .false. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the runoff files + ln_rnf_emp = .false. ! runoffs included into precipitation field (T) or into a file (F) + ln_rnf_mouth = .true. ! specific treatment at rivers mouths + rn_hrnf = 10.e0 ! depth over which enhanced vertical mixing is used + rn_avt_rnf = 1.e-4 ! value of the additional vertical mixing coef. [m2/s] + rn_rfact = 1.e0 ! multiplicative factor for runoff + ln_rnf_depth = .false. ! read in depth information for runoff + ln_rnf_tem = .false. ! read in temperature information for runoff + ln_rnf_sal = .false. ! read in salinity information for runoff +/ +!----------------------------------------------------------------------- +&namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_apr = 'patm' , -1 ,'somslpre', .true. , .true. , 'yearly' , '' , '' + + cn_dir = './' ! root directory for the location of the bulk files + ln_ref_apr = .false. ! ref. pressure: global mean Patm (T) or a constant (F) +/ +!----------------------------------------------------------------------- +&namsbc_ssr ! surface boundary condition : sea surface restoring +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_sst = 'sst_1m.nc' , -1 , 'votemper', .false. , .false., 'yearly' , ' ' , ' ' + sn_sss = 'sss_1m.nc' , -1 , 'vosaline', .true. , .true. , 'yearly' , ' ' , ' ' + + cn_dir = './' ! root directory for the location of the runoff files + nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) + nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) + ! or to SSS only (=1) or no damping term (=0) + rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] + rn_deds = -66.0 ! magnitude of the damping on salinity [mm/day] + ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) + rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] +/ +!----------------------------------------------------------------------- +&namsbc_alb ! albedo parameters +!----------------------------------------------------------------------- + rn_cloud = 0.06 ! cloud correction to snow and ice albedo + rn_albice = 0.53 ! albedo of melting ice in the arctic and antarctic + rn_alphd = 0.80 ! coefficients for linear interpolation used to + rn_alphc = 0.65 ! compute albedo between two extremes values + rn_alphdi = 0.72 ! (Pyane, 1972) +/ + +!!====================================================================== +!! *** Lateral boundary condition *** +!!====================================================================== +!! namlbc lateral momentum boundary condition +!! namcla cross land advection +!! namobc open boundaries parameters ("key_obc") +!! namagrif agrif nested grid ( read by child model only ) ("key_agrif") +!! nambdy Unstructured open boundaries ("key_bdy") +!! namtide Tidal forcing at open boundaries ("key_bdy_tides") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namlbc ! lateral momentum boundary condition +!----------------------------------------------------------------------- + rn_shlat = 2. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat + ! free slip ! partial slip ! no slip ! strong slip +/ +!----------------------------------------------------------------------- +&namcla ! cross land advection +!----------------------------------------------------------------------- + nn_cla = 0 ! advection between 2 ocean pts separates by land +/ +!----------------------------------------------------------------------- +&namobc ! open boundaries parameters ("key_obc") +!----------------------------------------------------------------------- + ln_obc_clim = .false. ! climatological obc data files (T) or not (F) + ln_vol_cst = .true. ! impose the total volume conservation (T) or not (F) + ln_obc_fla = .false. ! Flather open boundary condition + nn_obcdta = 1 ! = 0 the obc data are equal to the initial state + ! = 1 the obc data are read in 'obc.dta' files + cn_obcdta = 'annual' ! set to annual if obc datafile hold 1 year of data + ! set to monthly if obc datafile hold 1 month of data + rn_dpein = 1. ! damping time scale for inflow at east open boundary + rn_dpwin = 1. ! - - - west - - + rn_dpnin = 1. ! - - - north - - + rn_dpsin = 1. ! - - - south - - + rn_dpeob = 3000. ! time relaxation (days) for the east open boundary + rn_dpwob = 15. ! - - - west - - + rn_dpnob = 3000. ! - - - north - - + rn_dpsob = 15. ! - - - south - - + rn_volemp = 1. ! = 0 the total volume change with the surface flux (E-P-R) + ! = 1 the total volume remains constant +/ +!----------------------------------------------------------------------- +&namagrif ! AGRIF zoom ("key_agrif") +!----------------------------------------------------------------------- + nn_cln_update = 3 ! baroclinic update frequency + ln_spc_dyn = .true. ! use 0 as special value for dynamics + rn_sponge_tra = 2880. ! coefficient for tracer sponge layer [m2/s] + rn_sponge_dyn = 2880. ! coefficient for dynamics sponge layer [m2/s] +/ +!----------------------------------------------------------------------- +&nambdy ! unstructured open boundaries ("key_bdy") +!----------------------------------------------------------------------- + cn_mask = '' ! name of mask file (ln_mask=T) + cn_dta_frs_T= 'bdydata_grid_T.nc' ! name of data file (T-points) + cn_dta_frs_U= 'bdydata_grid_U.nc' ! name of data file (U-points) + cn_dta_frs_V= 'bdydata_grid_V.nc' ! name of data file (V-points) + cn_dta_fla_T= 'bdydata_bt_grid_T.nc' ! name of data file for Flather condition (T-points) + cn_dta_fla_U= 'bdydata_bt_grid_U.nc' ! name of data file for Flather condition (U-points) + cn_dta_fla_V= 'bdydata_bt_grid_V.nc' ! name of data file for Flather condition (V-points) + + ln_clim = .false. ! contain 1 (T) or 12 (F) time dumps and be cyclic + ln_vol = .false. ! total volume correction (see volbdy parameter) + ln_mask = .false. ! boundary mask from filbdy_mask (T), boundaries are on edges of domain (F) + ln_tides = .false. ! Apply tidal harmonic forcing with Flather condition + ln_dyn_fla = .false. ! Apply Flather condition to velocities + ln_tra_frs = .false. ! Apply FRS condition to temperature and salinity + ln_dyn_frs = .false. ! Apply FRS condition to velocities + nn_rimwidth = 9 ! width of the relaxation zone + nn_dtactl = 1 ! = 0, bdy data are equal to the initial state + ! = 1, bdy data are read in 'bdydata .nc' files + nn_volctl = 0 ! = 0, the total water flux across open boundaries is zero + ! = 1, the total volume of the system is conserved +/ +!----------------------------------------------------------------------- +&nambdy_tide ! tidal forcing at unstructured boundaries +!----------------------------------------------------------------------- + filtide = 'bdytide_' ! file name root of tidal forcing files + tide_cpt = 'M2','S1' ! names of tidal components used + tide_speed = 28.984106, 15.000001 ! phase speeds of tidal components (deg/hour) + ln_tide_date= .false. ! adjust tidal harmonics for start date of run +/ + +!!====================================================================== +!! *** Bottom boundary condition *** +!!====================================================================== +!! nambfr bottom friction +!! nambbc bottom temperature boundary condition +!! nambbl bottom boundary layer scheme ("key_trabbl") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nambfr ! bottom friction +!----------------------------------------------------------------------- + nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction + ! = 2 : nonlinear friction + rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) + rn_bfri2 = 1.e-3 ! bottom drag coefficient (non linear case) + rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) + ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) + rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) +/ +!----------------------------------------------------------------------- +&nambbc ! bottom temperature boundary condition +!----------------------------------------------------------------------- + ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom + nn_geoflx = 0 ! geothermal heat flux: = 0 no flux + ! = 1 constant flux + ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) + rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] +/ +!----------------------------------------------------------------------- +&nambbl ! bottom boundary layer scheme +!----------------------------------------------------------------------- + nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) + nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) + rn_ahtbbl = 5000. ! lateral mixing coefficient in the bbl [m2/s] + rn_gambbl = 10. ! advective bbl coefficient [s] +/ + +!!====================================================================== +!! Tracer (T & S ) namelists +!!====================================================================== +!! nameos equation of state +!! namtra_adv advection scheme +!! namtra_ldf lateral diffusion scheme +!! namtra_dmp T & S newtonian damping ("key_tradmp") +!!====================================================================== +! +!----------------------------------------------------------------------- +&nameos ! ocean physical parameters +!----------------------------------------------------------------------- + nn_eos = 0 ! type of equation of state and Brunt-Vaisala frequency + ! = 0, UNESCO (formulation of Jackett and McDougall (1994) and of McDougall (1987) ) + ! = 1, linear: rho(T) = rau0 * ( 1.028 - ralpha * T ) + ! = 2, linear: rho(T,S) = rau0 * ( rbeta * S - ralpha * T ) + rn_alpha = 1.67e-4 ! thermal expension coefficient (nn_eos= 1 or 2) + rn_beta = 0.78e-4 ! saline expension coefficient (nn_eos= 2) +/ +!----------------------------------------------------------------------- +&namtra_adv ! advection scheme for tracer +!----------------------------------------------------------------------- + ln_traadv_cen2 = .false. ! 2nd order centered scheme + ln_traadv_tvd = .true. ! TVD scheme + ln_traadv_muscl = .false. ! MUSCL scheme + ln_traadv_muscl2 = .false. ! MUSCL2 scheme + cen2 at boundaries + ln_traadv_ubs = .false. ! UBS scheme + ln_traadv_qck = .false. ! QUCIKEST scheme +/ +!----------------------------------------------------------------------- +&namtra_ldf ! lateral diffusion scheme for tracer +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_traldf_lap = .true. ! laplacian operator + ln_traldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_traldf_level = .false. ! iso-level + ln_traldf_hor = .false. ! horizontal (geopotential) (require "key_ldfslp" when ln_sco=T) + ln_traldf_iso = .true. ! iso-neutral (require "key_ldfslp") + ln_traldf_grif = .false. ! griffies skew flux formulation (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ln_traldf_gdia = .false. ! griffies operator strfn diagnostics (require "key_ldfslp") ! UNDER TEST, DO NOT USE + ! ! Coefficient + rn_aht_0 = 1000. ! horizontal eddy diffusivity for tracers [m2/s] + rn_ahtb_0 = 0. ! background eddy diffusivity for ldf_iso [m2/s] + rn_aeiv_0 = 1000. ! eddy induced velocity coefficient [m2/s] (require "key_traldf_eiv") +/ +!----------------------------------------------------------------------- +&namtra_dmp ! tracer: T & S newtonian damping ('key_tradmp') +!----------------------------------------------------------------------- + nn_hdmp = -1 ! horizontal shape =-1, damping in Med and Red Seas only + ! =XX, damping poleward of XX degrees (XX>0) + ! + F(distance-to-coast) + Red and Med Seas + nn_zdmp = 1 ! vertical shape =0 damping throughout the water column + ! =1 no damping in the mixing layer (kz criteria) + ! =2 no damping in the mixed layer (rho crieria) + rn_surf = 50. ! surface time scale of damping [days] + rn_bot = 360. ! bottom time scale of damping [days] + rn_dep = 800. ! depth of transition between rn_surf and rn_bot [meters] + nn_file = 0 ! create a damping.coeff NetCDF file (=1) or not (=0) +/ + +!!====================================================================== +!! *** Dynamics namelists *** +!!====================================================================== +!! namdyn_adv formulation of the momentum advection +!! namdyn_vor advection scheme +!! namdyn_hpg hydrostatic pressure gradient +!! namdyn_spg surface pressure gradient (CPP key only) +!! namdyn_ldf lateral diffusion scheme +!!====================================================================== +! +!----------------------------------------------------------------------- +&namdyn_adv ! formulation of the momentum advection +!----------------------------------------------------------------------- + ln_dynadv_vec = .true. ! vector form (T) or flux form (F) + ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme + ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme +/ +!----------------------------------------------------------------------- +&namdyn_vor ! option of physics/algorithm (not control by CPP keys) +!----------------------------------------------------------------------- + ln_dynvor_ene = .false. ! enstrophy conserving scheme + ln_dynvor_ens = .true. ! energy conserving scheme + ln_dynvor_mix = .false. ! mixed scheme + ln_dynvor_een = .false. ! energy & enstrophy scheme +/ +!----------------------------------------------------------------------- +&namdyn_hpg ! Hydrostatic pressure gradient option +!----------------------------------------------------------------------- + ln_hpg_zco = .false. ! z-coordinate - full steps + ln_hpg_zps = .true. ! z-coordinate - partial steps (interpolation) + ln_hpg_sco = .false. ! s-coordinate (standard jacobian formulation) + ln_hpg_hel = .false. ! s-coordinate (helsinki modification) + ln_hpg_wdj = .false. ! s-coordinate (weighted density jacobian) + ln_hpg_djc = .false. ! s-coordinate (Density Jacobian with Cubic polynomial) + ln_hpg_rot = .false. ! s-coordinate (ROTated axes scheme) + rn_gamma = 0.e0 ! weighting coefficient (wdj scheme) + ln_dynhpg_imp = .false. ! time stepping: semi-implicit time scheme (T) + ! centered time scheme (F) +/ +!----------------------------------------------------------------------- +!namdyn_spg ! surface pressure gradient (CPP key only) +!----------------------------------------------------------------------- +! ! explicit free surface ("key_dynspg_exp") +! ! filtered free surface ("key_dynspg_flt") +! ! split-explicit free surface ("key_dynspg_ts") + +!----------------------------------------------------------------------- +&namdyn_ldf ! lateral diffusion on momentum +!----------------------------------------------------------------------- + ! ! Type of the operator : + ln_dynldf_lap = .true. ! laplacian operator + ln_dynldf_bilap = .false. ! bilaplacian operator + ! ! Direction of action : + ln_dynldf_level = .false. ! iso-level + ln_dynldf_hor = .true. ! horizontal (geopotential) (require "key_ldfslp" in s-coord.) + ln_dynldf_iso = .false. ! iso-neutral (require "key_ldfslp") + ! ! Coefficient + rn_ahm_0_lap = 10000. ! horizontal laplacian eddy viscosity [m2/s] + rn_ahmb_0 = 0. ! background eddy viscosity for ldf_iso [m2/s] + rn_ahm_0_blp = 0. ! horizontal bilaplacian eddy viscosity [m4/s] +/ + +!!====================================================================== +!! Tracers & Dynamics vertical physics namelists +!!====================================================================== +!! namzdf vertical physics +!! namzdf_ric richardson number dependent vertical mixing ("key_zdfric") +!! namzdf_tke TKE dependent vertical mixing ("key_zdftke") +!! namzdf_kpp KPP dependent vertical mixing ("key_zdfkpp") +!! namzdf_ddm double diffusive mixing parameterization ("key_zdfddm") +!! namzdf_tmx tidal mixing parameterization ("key_zdftmx") +!!====================================================================== +! +!----------------------------------------------------------------------- +&namzdf ! vertical physics +!----------------------------------------------------------------------- + rn_avm0 = 1.2e-4 ! vertical eddy viscosity [m2/s] (background Kz if not "key_zdfcst") + rn_avt0 = 1.2e-5 ! vertical eddy diffusivity [m2/s] (background Kz if not "key_zdfcst") + nn_avb = 0 ! profile for background avt & avm (=1) or not (=0) + nn_havtb = 0 ! horizontal shape for avtb (=1) or not (=0) + ln_zdfevd = .true. ! enhanced vertical diffusion (evd) (T) or not (F) + nn_evdm = 1 ! evd apply on tracer (=0) or on tracer and momentum (=1) + rn_avevd = 100. ! evd mixing coefficient [m2/s] + ln_zdfnpc = .false. ! Non-Penetrative Convective algorithm (T) or not (F) + nn_npc = 1 ! frequency of application of npc + nn_npcp = 365 ! npc control print frequency + ln_zdfexp = .false. ! time-stepping: split-explicit (T) or implicit (F) time stepping + nn_zdfexp = 3 ! number of sub-timestep for ln_zdfexp=T +/ +!----------------------------------------------------------------------- +&namzdf_ric ! richardson number dependent vertical diffusion ("key_zdfric" ) +!----------------------------------------------------------------------- + rn_avmri = 100.e-4 ! maximum value of the vertical viscosity + rn_alp = 5. ! coefficient of the parameterization + nn_ric = 2 ! coefficient of the parameterization +/ +!----------------------------------------------------------------------- +&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion ("key_zdftke") +!----------------------------------------------------------------------- + rn_ediff = 0.1 ! coef. for vertical eddy coef. (avt=rn_ediff*mxl*sqrt(e) ) + rn_ediss = 0.7 ! coef. of the Kolmogoroff dissipation + rn_ebb = 60. ! coef. of the surface input of tke (=67.83 suggested when ln_mxl0=T) + rn_emin = 1.e-6 ! minimum value of tke [m2/s2] + rn_emin0 = 1.e-4 ! surface minimum value of tke [m2/s2] + nn_mxl = 3 ! mixing length: = 0 bounded by the distance to surface and bottom + ! = 1 bounded by the local vertical scale factor + ! = 2 first vertical derivative of mixing length bounded by 1 + ! = 3 as =2 with distinct disspipative an mixing length scale + nn_pdl = 1 ! Prandtl number function of richarson number (=1, avt=pdl(Ri)*avm) or not (=0, avt=avm) + ln_mxl0 = .false. ! surface mixing length scale = F(wind stress) (T) or not (F) + rn_mxl0 = 0.001 ! surface buoyancy lenght scale minimum value + ln_lc = .true. ! Langmuir cell parameterisation (Axell 2002) + rn_lc = 0.15 ! coef. associated to Langmuir cells + nn_etau = 1 ! penetration of tke below the mixed layer (ML) due to internal & intertial waves + ! = 0 no penetration + ! = 1 add a tke source below the ML + ! = 2 add a tke source just at the base of the ML + ! = 3 as = 1 applied on HF part of the stress ("key_coupled") + rn_efr = 0.05 ! fraction of surface tke value which penetrates below the ML (nn_etau=1 or 2) + nn_htau = 1 ! type of exponential decrease of tke penetration below the ML + ! = 0 constant 10 m length scale + ! = 1 0.5m at the equator to 30m poleward of 40 degrees +/ +!------------------------------------------------------------------------ +&namzdf_kpp ! K-Profile Parameterization dependent vertical mixing ("key_zdfkpp", and optionally: +!------------------------------------------------------------------------ "key_kppcustom" or "key_kpplktb") + ln_kpprimix = .true. ! shear instability mixing + rn_difmiw = 1.0e-04 ! constant internal wave viscosity [m2/s] + rn_difsiw = 0.1e-04 ! constant internal wave diffusivity [m2/s] + rn_riinfty = 0.8 ! local Richardson Number limit for shear instability + rn_difri = 0.0050 ! maximum shear mixing at Rig = 0 [m2/s] + rn_bvsqcon = -0.01e-07 ! Brunt-Vaisala squared for maximum convection [1/s2] + rn_difcon = 1. ! maximum mixing in interior convection [m2/s] + nn_avb = 0 ! horizontal averaged (=1) or not (=0) on avt and amv + nn_ave = 1 ! constant (=0) or profile (=1) background on avt +/ +!----------------------------------------------------------------------- +&namzdf_gls ! GLS vertical diffusion ("key_zdfgls") +!----------------------------------------------------------------------- + rn_emin = 1.e-6 ! minimum value of e [m2/s2] + rn_epsmin = 1.e-12 ! minimum value of eps [m2/s3] + ln_length_lim = .true. ! limit on the dissipation rate under stable stratification (Galperin et al., 1988) + rn_clim_galp = 0.53 ! galperin limit + ln_crban = .true. ! Use Craig & Banner (1994) surface wave mixing parametrisation + ln_sigpsi = .true. ! Activate or not Burchard 2001 mods on psi schmidt number in the wb case + rn_crban = 100. ! Craig and Banner 1994 constant for wb tke flux + rn_charn = 70000. ! Charnock constant for wb induced roughness length + nn_tkebc_surf = 1 ! surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_tkebc_bot = 1 ! bottom tke condition (0/1=Dir/Neum) + nn_psibc_surf = 1 ! surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) + nn_psibc_bot = 1 ! bottom psi condition (0/1=Dir/Neum) + nn_stab_func = 2 ! stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) + nn_clos = 1 ! predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) +/ +!----------------------------------------------------------------------- +&namzdf_ddm ! double diffusive mixing parameterization ("key_zdfddm") +!----------------------------------------------------------------------- + rn_avts = 1.e-4 ! maximum avs (vertical mixing on salinity) + rn_hsbfr = 1.6 ! heat/salt buoyancy flux ratio +/ +!----------------------------------------------------------------------- +&namzdf_tmx ! tidal mixing parameterization ("key_zdftmx") +!----------------------------------------------------------------------- + rn_htmx = 500. ! vertical decay scale for turbulence (meters) + rn_n2min = 1.e-8 ! threshold of the Brunt-Vaisala frequency (s-1) + rn_tfe = 0.333 ! tidal dissipation efficiency + rn_me = 0.2 ! mixing efficiency + ln_tmx_itf = .FALSE. ! ITF specific parameterisation + rn_tfe_itf = 1. ! ITF tidal dissipation efficiency +/ + +!!====================================================================== +!! *** Miscelaneous namelists *** +!!====================================================================== +!! nammpp Massively Parallel Processing ("key_mpp_mpi) +!! nammpp_dyndist Massively Parallel domain decomposition ("key_agrif" && "key_mpp_dyndist") +!! namctl Control prints & Benchmark +!! namsol elliptic solver / island / free surface +!!====================================================================== +! +!----------------------------------------------------------------------- +&namsol ! elliptic solver / island / free surface +!----------------------------------------------------------------------- + nn_solv = 1 ! elliptic solver: =1 preconditioned conjugate gradient (pcg) + ! =2 successive-over-relaxation (sor) + nn_sol_arp = 0 ! absolute/relative (0/1) precision convergence test + rn_eps = 1.e-6 ! absolute precision of the solver + nn_nmin = 300 ! minimum of iterations for the SOR solver + nn_nmax = 2000 ! maximum of iterations for the SOR solver + nn_nmod = 10 ! frequency of test for the SOR solver + rn_resmax = 1.e-10 ! absolute precision for the SOR solver + rn_sor = 1.92 ! optimal coefficient for SOR solver (to be adjusted with the domain) +/ +!----------------------------------------------------------------------- +&nammpp ! Massively Parallel Processing ("key_mpp_mpi) +!----------------------------------------------------------------------- + cn_mpi_send = 'I' ! mpi send/recieve type ='S', 'B', or 'I' for standard send, + ! buffer blocking send or immediate non-blocking sends, resp. + nn_buffer = 0 ! size in bytes of exported buffer ('B' case), 0 no exportation +/ +!----------------------------------------------------------------------- +&nammpp_dyndist ! Massively Parallel Distribution for AGRIF zoom ("key_agrif" && "key_mpp_dyndist") +!----------------------------------------------------------------------- + jpni = 6 ! jpni number of processors following i + jpnj = 6 ! jpnj number of processors following j + jpnij = 36 ! jpnij number of local domains +/ +!----------------------------------------------------------------------- +&namctl ! Control prints & Benchmark +!----------------------------------------------------------------------- + ln_ctl = .false. ! trends control print (expensive!) + nn_print = 0 ! level of print (0 no extra print) + nn_ictls = 0 ! start i indice of control sum (use to compare mono versus + nn_ictle = 0 ! end i indice of control sum multi processor runs + nn_jctls = 0 ! start j indice of control over a subdomain) + nn_jctle = 0 ! end j indice of control + nn_isplt = 6 ! number of processors in i-direction + nn_jsplt = 6 ! number of processors in j-direction + nn_bench = 0 ! Bench mode (1/0): CAUTION use zero except for bench + ! (no physical validity of the results) +/ + +!!====================================================================== +!! *** Diagnostics namelists *** +!!====================================================================== +!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") +!! namtrd dynamics and/or tracer trends ("key_trddyn","key_trdtra","key_trdmld") +!! namflo float parameters ("key_float") +!! namptr Poleward Transport Diagnostics +!! namhsb Heat and salt budgets +!!====================================================================== +! +!----------------------------------------------------------------------- +&namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") +!----------------------------------------------------------------------- + nn_nchunks_i= 4 ! number of chunks in i-dimension + nn_nchunks_j= 4 ! number of chunks in j-dimension + nn_nchunks_k= 31 ! number of chunks in k-dimension + ! setting nn_nchunks_k = jpk will give a chunk size of 1 in the vertical which + ! is optimal for postprocessing which works exclusively with horizontal slabs + ln_nc4zip = .true. ! (T) use netcdf4 chunking and compression + ! (F) ignore chunking information and produce netcdf3-compatible files +/ +!----------------------------------------------------------------------- +&namtrd ! diagnostics on dynamics and/or tracer trends ("key_trddyn" and/or "key_trdtra") +! ! or mixed-layer trends or barotropic vorticity ("key_trdmld" or "key_trdvor") +!----------------------------------------------------------------------- + nn_trd = 365 ! time step frequency dynamics and tracers trends + nn_ctls = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day) + cn_trdrst_in = "restart_mld" ! suffix of ocean restart name (input) + cn_trdrst_out = "restart_mld" ! suffix of ocean restart name (output) + ln_trdmld_restart = .false. ! restart for ML diagnostics + ln_trdmld_instant = .false. ! flag to diagnose trends of instantantaneous or mean ML T/S +/ +!----------------------------------------------------------------------- +&namflo ! float parameters ("key_float") +!----------------------------------------------------------------------- + ln_rstflo = .false. ! float restart (T) or not (F) + nn_writefl = 75 ! frequency of writing in float output file + nn_stockfl = 5475 ! frequency of creation of the float restart file + ln_argo = .false. ! Argo type floats (stay at the surface each 10 days) + ln_flork4 = .false. ! trajectories computed with a 4th order Runge-Kutta (T) + ! or computed with Blanke' scheme (F) +/ +!----------------------------------------------------------------------- +&namptr ! Poleward Transport Diagnostic +!----------------------------------------------------------------------- + ln_diaptr = .false. ! Poleward heat and salt transport (T) or not (F) + ln_diaznl = .false. ! Add zonal means and meridional stream functions + ln_subbas = .false. ! Atlantic/Pacific/Indian basins computation (T) or not + ! (orca configuration only, need input basins mask file named "subbasins.nc" + ln_ptrcomp = .true. ! Add decomposition : overturning + nn_fptr = 1 ! Frequency of ptr computation [time step] + nn_fwri = 15 ! Frequency of ptr outputs [time step] +/ +!----------------------------------------------------------------------- +&namhsb ! Heat and salt budgets +!----------------------------------------------------------------------- + ln_diahsb = .false. ! check the heat and salt budgets (T) or not (F) +/ + +!!====================================================================== +!! *** Observation & Assimilation namelists *** +!!====================================================================== +!! namobs observation and model comparison ('key_diaobs') +!! nam_asminc assimilation increments ('key_asminc') +!!====================================================================== +! +!----------------------------------------------------------------------- +&namobs ! observation usage switch ('key_diaobs') +!----------------------------------------------------------------------- + ln_t3d = .false. ! Logical switch for T profile observations + ln_s3d = .false. ! Logical switch for S profile observations + ln_ena = .false. ! Logical switch for ENACT insitu data set + ! ! ln_cor Logical switch for Coriolis insitu data set + ln_profb = .false. ! Logical switch for feedback insitu data set + ln_sla = .false. ! Logical switch for SLA observations + + ln_sladt = .false. ! Logical switch for AVISO SLA data + + ln_slafb = .false. ! Logical switch for feedback SLA data + ! ln_ssh Logical switch for SSH observations + + ln_sst = .false. ! Logical switch for SST observations + ! ln_reysst Logical switch for Reynolds observations + ! ln_ghrsst Logical switch for GHRSST observations + + ln_sstfb = .false. ! Logical switch for feedback SST data + ! ln_sss Logical switch for SSS observations + ! ln_seaice Logical switch for Sea Ice observations + ! ln_vel3d Logical switch for velocity observations + ! ln_velavcur Logical switch for velocity daily av. cur. + ! ln_velhrcur Logical switch for velocity high freq. cur. + ! ln_velavadcp Logical switch for velocity daily av. ADCP + ! ln_velhradcp Logical switch for velocity high freq. ADCP + ! ln_velfb Logical switch for feedback velocity data + ! ln_grid_global Global distribtion of observations + ! ln_grid_search_lookup Logical switch for obs grid search w/lookup table + ! grid_search_file Grid search lookup file header + ! enactfiles ENACT input observation file names + ! coriofiles Coriolis input observation file name + ! ! profbfiles: Profile feedback input observation file name + profbfiles = 'profiles_01.nc' + ! ln_profb_enatim Enact feedback input time setting switch + ! slafilesact Active SLA input observation file name + ! slafilespas Passive SLA input observation file name + ! ! slafbfiles: Feedback SLA input observation file name + slafbfiles = 'sla_01.nc' + ! sstfiles GHRSST input observation file name + ! ! sstfbfiles: Feedback SST input observation file name + sstfbfiles = 'sst_01.nc' 'sst_02.nc' 'sst_03.nc' 'sst_04.nc' 'sst_05.nc' + ! seaicefiles Sea Ice input observation file name + ! velavcurfiles Vel. cur. daily av. input file name + ! velhvcurfiles Vel. cur. high freq. input file name + ! velavadcpfiles Vel. ADCP daily av. input file name + ! velhvadcpfiles Vel. ADCP high freq. input file name + ! velfbfiles Vel. feedback input observation file name + ! dobsini Initial date in window YYYYMMDD.HHMMSS + ! dobsend Final date in window YYYYMMDD.HHMMSS + ! n1dint Type of vertical interpolation method + ! n2dint Type of horizontal interpolation method + ! ln_nea Rejection of observations near land switch + nmsshc = 0 ! MSSH correction scheme + ! mdtcorr MDT correction + ! mdtcutoff MDT cutoff for computed correction + ln_altbias = .false. ! Logical switch for alt bias + ln_ignmis = .true. ! Logical switch for ignoring missing files + ! endailyavtypes ENACT daily average types + ln_grid_global = .true. + ln_grid_search_lookup = .false. +/ +!----------------------------------------------------------------------- +&nam_asminc ! assimilation increments ('key_asminc') +!----------------------------------------------------------------------- + ln_bkgwri = .false. ! Logical switch for writing out background state + ln_trjwri = .false. ! Logical switch for writing out state trajectory + ln_trainc = .false. ! Logical switch for applying tracer increments + ln_dyninc = .false. ! Logical switch for applying velocity increments + ln_sshinc = .false. ! Logical switch for applying SSH increments + ln_asmdin = .false. ! Logical switch for Direct Initialization (DI) + ln_asmiau = .false. ! Logical switch for Incremental Analysis Updating (IAU) + nitbkg = 0 ! Timestep of background in [0,nitend-nit000-1] + nitdin = 0 ! Timestep of background for DI in [0,nitend-nit000-1] + nitiaustr = 1 ! Timestep of start of IAU interval in [0,nitend-nit000-1] + nitiaufin = 15 ! Timestep of end of IAU interval in [0,nitend-nit000-1] + niaufn = 0 ! Type of IAU weighting function + nittrjfrq = 0 ! Frequency of trajectory output for 4D-VAR + ln_salfix = .false. ! Logical switch for ensuring that the sa > salfixmin + salfixmin = -9999 ! Minimum salinity after applying the increments +/ diff --git a/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default new file mode 100755 index 0000000000000000000000000000000000000000..1c93adb16794c443b98c9cfb72c2998943a4cbc8 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/CONFIG/setup/namelist_ice_lim2.v3.3.default @@ -0,0 +1,129 @@ +!!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +!! NEMO/LIM-2 : 1 - dynamics/advection/thermo (namicerun) +!! namelists 2 - ice intialisation (namiceini) +!! 3 - ice dynamic (namicedyn) +!! 4 - ice advection (namicetrp) +!! 5 - thermodynamic (namicethd) +!! 6 - ice damping (namice_dmp) +!! 7 - ice diagnostics (namicedia) +!! 8 - ice outputs (namiceout) +!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +!----------------------------------------------------------------------- +&namicerun ! Share parameters for dynamics/advection/thermo +!----------------------------------------------------------------------- + cn_icerst_in = "restart_ice_in" ! suffix of ice restart name (input) + cn_icerst_out = "restart_ice" ! suffix of ice restart name (output) + ln_limdyn = .true. ! ice dynamics (T) or thermodynamics only (F) + ln_limdmp = .false. ! restoring ice thickness and fraction leads (T => fill namice_dmp) + acrit = 1.0e-06 , 1.0e-06 ! minimum lead fraction in the Northern & Southern Hemispheres + hsndif = 0.e0 ! computation of temperature in snow (=0.0) or not + hicdif = 0.e0 ! computation of temperature in ice (=0.0) or not (=9999.0) +/ +!----------------------------------------------------------------------- +&namiceini ! ice initialisation +!----------------------------------------------------------------------- + ln_limini = .false. ! read the initial state in 'Ice_initialization.nc' (T) or not (F) + ttest = 2.0 ! threshold water temperature for initial sea ice + hninn = 0.5 ! initial snow thickness in the north + hginn = 3.0 ! initial ice thickness in the north + alinn = 0.05 ! initial leads area in the north + hnins = 0.1 ! same three parameter in the south + hgins = 1.0 ! " " south + alins = 0.1 ! " " south +/ +!----------------------------------------------------------------------- +&namicedyn ! ice dynamic +!----------------------------------------------------------------------- + epsd = 1.0e-20 ! tolerance parameter + alpha = 0.5 ! coefficient for semi-implicit coriolis + dm = 0.6e+03 ! diffusion constant for dynamics + nbiter = 1 ! number of sub-time steps for relaxation + nbitdr = 100 ! maximum number of iterations for relaxation + om = 0.5 ! relaxation constant + resl = 5.0e-05 ! maximum value for the residual of relaxation + cw = 5.0e-03 ! drag coefficient for oceanic stress + angvg = 0.0 ! turning angle for oceanic stress + pstar = 1.0e+04 ! 1st bulk-rheology parameter + c_rhg = 20.0 ! 2nd bulk-rhelogy parameter + etamn = 0.0e+07 ! minimun value for viscosity + creepl = 2.0e-08 ! creep limit + ecc = 2.0 ! eccentricity of the elliptical yield curve + ahi0 = 200.e0 ! horizontal eddy diffusivity coefficient for sea-ice [m2/s] + nevp = 360 ! number of EVP subcycling iterations + telast = 3600 ! timescale for EVP elastic waves + alphaevp = 1.0 ! coefficient for the solution of EVP int. stresses +/ +!----------------------------------------------------------------------- +&namicetrp ! ice transport +!----------------------------------------------------------------------- + bound = 0.0 ! boundary conditions (=0. no-slip, =1. free-slip) +/ +!----------------------------------------------------------------------- +&namicethd ! ice thermodynamic +!----------------------------------------------------------------------- + hmelt = -0.15 ! maximum melting at the bottom + hiccrit = 0.3 , 0.3 ! ice thickness for lateral accretion in the Northern (Southern) Hemisphere + ! ! (caution 1.0, 1.0 best value to be used!!! (gilles G.)) + hicmin = 0.2 ! ice thickness corr. to max. energy stored in brine pocket + hiclim = 0.05 ! minimum ice thickness + amax = 0.999 ! maximum lead fraction + swiqst = 1. ! energy stored in brine pocket (=1) or not (=0) + sbeta = 1. ! numerical caracteritic of the scheme for diffusion in ice + ! Cranck-Nicholson (=0.5), implicit (=1), explicit (=0) + parlat = 0.0 ! percentage of energy used for lateral ablation + hakspl = 0.5 ! slope of distr. for Hakkinen-Mellor's lateral melting + hibspl = 0.5 ! slope of distribution for Hibler's lateral melting + exld = 2.0 ! exponent for leads-closure rate + hakdif = 1.0 ! coefficient for diffusions of ice and snow + thth = 0.2 ! threshold thickness for comp. of eq. thermal conductivity + hnzst = 0.1 ! thickness of the surf. layer in temp. computation + parsub = 1.0 ! switch for snow sublimation or not + alphs = 1.0 ! coefficient for snow density when snow ice formation +/ +!----------------------------------------------------------------------- +&namice_dmp ! damping of sea ice alone open boundaries +! ! (hard coded damping area: check if it fit your config) +!----------------------------------------------------------------------- +! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! +! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! + sn_hicif = 'ice_damping', -1. , 'hicif' , .true. , .true. , 'yearly' , '' , '' + sn_cnf = 'ice_damping', -1. , 'frld' , .true. , .true. , 'yearly' , '' , '' +! + cn_dir = './' ! root directory for the location of the runoff files +/ +!----------------------------------------------------------------------- +&namicedia ! ice diagnostics +!----------------------------------------------------------------------- + fmtinf = '1PE13.5' ! format of the output values + nfrinf = 4 ! number of variables written in one line + ntmoy = 1 ! instantaneous values of ice evolution or averaging + ninfo = 1 ! frequency of ouputs on file ice_evolu in case of averaging +/ +!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +&namiceout ! parameters for outputs +!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +! ! title of the field ! name ! units ! save ! multipl. ! additive ! +! ! ! ! ! or not ! factor ! factor ! + field_1 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0 + field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0 + field_3 = 'Ice produced ', 'iiceprod', 'm/kt ', 1 , 1.0 , 0.0 + field_4 = 'Ice concentration ', 'ileadfra', '% ', 1 , -1.0 , 1.0 + field_5 = 'Ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15 + field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0 + field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0 + field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0 + field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15 + field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0 + field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0 + field_14 = 'Salt flux at ocean surface ', 'iocesafl', 'kg/m2/kt', 1 , 1.0 , 0.0 + field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0 + field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0 + field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0 + field_19 = 'Snow precipitation ', 'isnowpre', 'kg/day ', 1 , 1.0 , 0.0 +! + noumef = 19 ! number of fields +/ diff --git a/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/EXTERNAL/IOIPSL/src/calendar.f90 b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/EXTERNAL/IOIPSL/src/calendar.f90 new file mode 100755 index 0000000000000000000000000000000000000000..b600b437f90979651b8e79d93914347620d48067 --- /dev/null +++ b/deploy/patches/ithaca/nemo/v3.3/NEMOGCM/EXTERNAL/IOIPSL/src/calendar.f90 @@ -0,0 +1,996 @@ +MODULE calendar +!- +!$Id: calendar.f90 1011 2010-05-07 13:05:34Z bellier $ +!- +! This software is governed by the CeCILL license +! See IOIPSL/IOIPSL_License_CeCILL.txt +!--------------------------------------------------------------------- +!- This is the calendar which going to be used to do all +!- calculations on time. Three types of calendars are possible : +!- +!- - gregorian : +!- The normal calendar. The time origin for the +!- julian day in this case is 24 Nov -4713 +!- (other names : 'standard','proleptic_gregorian') +!- - noleap : +!- A 365 day year without leap years. +!- The origin for the julian days is in this case 1 Jan 0 +!- (other names : '365_day','365d') +!- - all_leap : +!- A 366 day year with leap years. +!- The origin for the julian days is in this case ???? +!- (other names : '366_day','366d' +!- - julian : +!- same as gregorian, but with all leap century years +!- - xxxd : +!- Year of xxx days with month of equal length. +!- The origin for the julian days is then also 1 Jan 0 +!- +!- As one can see it is difficult to go from one calendar to the other. +!- All operations involving julian days will be wrong. +!- This calendar will lock as soon as possible +!- the length of the year and forbid any further modification. +!- +!- For the non leap-year calendar the method is still brute force. +!- We need to find an Integer series which takes care of the length +!- of the various month. (Jan) +!- +!- one_day : one day in seconds +!- one_year : one year in days +!--------------------------------------------------------------------- + USE stringop,ONLY : strlowercase + USE errioipsl,ONLY : ipslerr +!- + PRIVATE + PUBLIC :: ymds2ju,ju2ymds,tlen2itau,isittime,ioconf_calendar, & + & ioget_calendar,ioget_mon_len,ioget_year_len,itau2date, & + & ioget_timestamp,ioconf_startdate,itau2ymds, & + & time_diff,time_add,lock_calendar +!- + INTERFACE ioget_calendar + MODULE PROCEDURE & + & ioget_calendar_real1,ioget_calendar_real2,ioget_calendar_str + END INTERFACE +!- + INTERFACE ioconf_startdate + MODULE PROCEDURE & + & ioconf_startdate_simple,ioconf_startdate_internal, & + & ioconf_startdate_ymds + END INTERFACE +!- + REAL,PARAMETER :: one_day = 86400.0 + LOGICAL,SAVE :: lock_startdate = .FALSE. +!- + CHARACTER(LEN=30),SAVE :: time_stamp='XXXXXXXXXXXXXXXX' +!- +!- Description of calendar +!- + CHARACTER(LEN=20),SAVE :: calendar_used="gregorian" + LOGICAL,SAVE :: lock_one_year = .FALSE. + REAL,SAVE :: one_year = 365.2425 + INTEGER,SAVE :: mon_len(12)=(/31,28,31,30,31,30,31,31,30,31,30,31/) +!- + CHARACTER(LEN=3),PARAMETER :: & + & cal(12) = (/'JAN','FEB','MAR','APR','MAY','JUN', & + & 'JUL','AUG','SEP','OCT','NOV','DEC'/) +!- + REAL,SAVE :: start_day,start_sec +!- +CONTAINS +!- +!=== +!- +SUBROUTINE lock_calendar (new_status,old_status) +!!-------------------------------------------------------------------- +!! The "lock_calendar" routine +!! allows to lock or unlock the calendar, +!! and to know the current status of the calendar. +!! Be careful ! +!! +!! SUBROUTINE lock_calendar (new_status,old_status) +!! +!! Optional INPUT argument +!! +!! (L) new_status : new status of the calendar +!! +!! Optional OUTPUT argument +!! +!! (L) old_status : current status of the calendar +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + LOGICAL,OPTIONAL,INTENT(IN) :: new_status + LOGICAL,OPTIONAL,INTENT(OUT) :: old_status +!--------------------------------------------------------------------- + IF (PRESENT(old_status)) THEN + old_status = lock_one_year + ENDIF + IF (PRESENT(new_status)) THEN + lock_one_year = new_status + ENDIF +!--------------------------- +END SUBROUTINE lock_calendar +!- +!=== +!- +SUBROUTINE ymds2ju (year,month,day,sec,julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + REAL,INTENT(OUT) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + julian = julian_day+julian_sec/one_day +!--------------------- +END SUBROUTINE ymds2ju +!- +!=== +!- +SUBROUTINE ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!--------------------------------------------------------------------- +!- Converts year, month, day and seconds into a julian day +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. +!- This is the day at which Pope Gregory XIII introduced the +!- Gregorian calendar. +!- Compared to the true Julian calendar, which starts some +!- 7980 years ago, the Lilian days are smaler and are dealt with +!- easily on 32 bit machines. With the true Julian days you can only +!- the fraction of the day in the real part to a precision of +!- a 1/4 of a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER,INTENT(OUT) :: julian_day + REAL,INTENT(OUT) :: julian_sec +!- + INTEGER :: jd,m,y,d,ml +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + m = month + y = year + d = day +!- +!- We deduce the calendar from the length of the year as it +!- is faster than an INDEX on the calendar variable. +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- "Gregorian" + jd = (1461*(y+4800+INT((m-14)/12)))/4 & + & +(367*(m-2-12*(INT((m-14)/12))))/12 & + & -(3*((y+4900+INT((m-14)/12))/100))/4 & + & +d-32075 + jd = jd-2299160 + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- "No leap" or "All leap" + ml = SUM(mon_len(1:m-1)) + jd = y*NINT(one_year)+ml+(d-1) + ELSE +!-- Calendar with regular month + ml = NINT(one_year/12.) + jd = y*NINT(one_year)+(m-1)*ml+(d-1) + ENDIF +!- + julian_day = jd + julian_sec = sec +!------------------------------ +END SUBROUTINE ymds2ju_internal +!- +!=== +!- +SUBROUTINE ju2ymds (julian,year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ju2ymds_internal(julian_day,julian_sec,year,month,day,sec) +!--------------------- +END SUBROUTINE ju2ymds +!- +!=== +!- +SUBROUTINE ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine computes from the julian day the year, +!- month, day and seconds +!- +!- In 1968 in a letter to the editor of Communications of the ACM +!- (CACM, volume 11, number 10, October 1968, p.657) Henry F. Fliegel +!- and Thomas C. Van Flandern presented such an algorithm. +!- +!- See also : http://www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm +!- +!- In the case of the Gregorian calendar we have chosen to use +!- the Lilian day numbers. This is the day counter which starts +!- on the 15th October 1582. This is the day at which Pope +!- Gregory XIII introduced the Gregorian calendar. +!- Compared to the true Julian calendar, which starts some 7980 +!- years ago, the Lilian days are smaler and are dealt with easily +!- on 32 bit machines. With the true Julian days you can only the +!- fraction of the day in the real part to a precision of a 1/4 of +!- a day with 32 bits. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: l,n,i,jd,j,d,m,y,ml + INTEGER :: add_day + REAL :: eps_day +!--------------------------------------------------------------------- + eps_day = SPACING(one_day) + lock_one_year = .TRUE. +!- + jd = julian_day + sec = julian_sec + IF (sec > (one_day-eps_day)) THEN + add_day = INT(sec/one_day) + sec = sec-add_day*one_day + jd = jd+add_day + ENDIF + IF (sec < -eps_day) THEN + sec = sec+one_day + jd = jd-1 + ENDIF +!- + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!-- Gregorian + jd = jd+2299160 +!- + l = jd+68569 + n = (4*l)/146097 + l = l-(146097*n+3)/4 + i = (4000*(l+1))/1461001 + l = l-(1461*i)/4+31 + j = (80*l)/2447 + d = l-(2447*j)/80 + l = j/11 + m = j+2-(12*l) + y = 100*(n-49)+i+l + ELSE IF ( (ABS(one_year-365.0) <= EPSILON(one_year)) & + & .OR.(ABS(one_year-366.0) <= EPSILON(one_year)) ) THEN +!-- No leap or All leap + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = 1 + ml = 0 + DO WHILE (ml+mon_len(m) <= l) + ml = ml+mon_len(m) + m = m+1 + ENDDO + d = l-ml+1 + ELSE +!-- others + ml = NINT(one_year/12.) + y = jd/NINT(one_year) + l = jd-y*NINT(one_year) + m = (l/ml)+1 + d = l-(m-1)*ml+1 + ENDIF +!- + day = d + month = m + year = y +!------------------------------ +END SUBROUTINE ju2ymds_internal +!- +!=== +!- +SUBROUTINE tlen2itau (input_str,dt,date,itau) +!--------------------------------------------------------------------- +!- This subroutine transforms a string containing a time length +!- into a number of time steps. +!- To do this operation the date (in julian days is needed as the +!- length of the month varies. +!- The following convention is used : +!- n : n time steps +!- nS : n seconds is transformed into itaus +!- nH : n hours +!- nD : n days +!- nM : n month +!- nY : n years +!- Combinations are also possible +!- nYmD : nyears plus m days ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: input_str + REAL,INTENT(IN) :: dt,date +!- + INTEGER,INTENT(OUT) :: itau +!- + INTEGER :: y_pos,m_pos,d_pos,h_pos,s_pos + INTEGER :: read_time + CHARACTER(LEN=13) :: fmt + CHARACTER(LEN=80) :: tmp_str +!- + INTEGER :: year,month,day + REAL :: sec,date_new,dd,ss +!--------------------------------------------------------------------- + itau = 0 + CALL ju2ymds (date,year,month,day,sec) +!- + y_pos = MAX(INDEX(input_str,'y'),INDEX(input_str,'Y')) + m_pos = MAX(INDEX(input_str,'m'),INDEX(input_str,'M')) + d_pos = MAX(INDEX(input_str,'d'),INDEX(input_str,'D')) + h_pos = MAX(INDEX(input_str,'h'),INDEX(input_str,'H')) + s_pos = MAX(INDEX(input_str,'s'),INDEX(input_str,'S')) +!- + IF (MAX(y_pos,m_pos,d_pos,s_pos) > 0) THEN + tmp_str = input_str + DO WHILE ( MAX(y_pos,m_pos,d_pos,s_pos) > 0) +!---- WRITE(*,*) tmp_str +!---- WRITE(*,*) y_pos,m_pos,d_pos,s_pos + IF (y_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') y_pos-1 + READ(tmp_str(1:y_pos-1),fmt) read_time + CALL ymds2ju (year+read_time,month,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(y_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (m_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') m_pos-1 + READ(tmp_str(1:m_pos-1),fmt) read_time + CALL ymds2ju (year,month+read_time,day,sec,date_new) + dd = date_new-date + ss = INT(dd)*one_day+dd-INT(dd) + itau = itau+NINT(ss/dt) + tmp_str = tmp_str(m_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (d_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') d_pos-1 + READ(tmp_str(1:d_pos-1),fmt) read_time + itau = itau+NINT(read_time*one_day/dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (h_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') h_pos-1 + READ(tmp_str(1:h_pos-1),fmt) read_time + itau = itau+NINT(read_time*60.*60./dt) + tmp_str = tmp_str(d_pos+1:LEN_TRIM(tmp_str)) + ELSE IF (s_pos > 0) THEN + WRITE(fmt,'("(I",I10.10,")")') s_pos-1 + READ(tmp_str(1:s_pos-1),fmt) read_time + itau = itau+NINT(read_time/dt) + tmp_str = tmp_str(s_pos+1:LEN_TRIM(tmp_str)) + ENDIF +!- + y_pos = MAX(INDEX(tmp_str,'y'),INDEX(tmp_str,'Y')) + m_pos = MAX(INDEX(tmp_str,'m'),INDEX(tmp_str,'M')) + d_pos = MAX(INDEX(tmp_str,'d'),INDEX(tmp_str,'D')) + h_pos = MAX(INDEX(tmp_str,'h'),INDEX(tmp_str,'H')) + s_pos = MAX(INDEX(tmp_str,'s'),INDEX(tmp_str,'S')) + ENDDO + ELSE + WRITE(fmt,'("(I",I10.10,")")') LEN_TRIM(input_str) + READ(input_str(1:LEN_TRIM(input_str)),fmt) itau + ENDIF +!----------------------- +END SUBROUTINE tlen2itau +!- +!=== +!- +REAL FUNCTION itau2date (itau,date0,deltat) +!--------------------------------------------------------------------- +!- This function transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- deltat : time step between itau s +!- +!- OUTPUT +!- itau2date : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER :: itau + REAL :: date0,deltat +!--------------------------------------------------------------------- + itau2date = REAL(itau)*deltat/one_day+date0 +!--------------------- +END FUNCTION itau2date +!- +!=== +!- +SUBROUTINE itau2ymds (itau,deltat,year,month,day,sec) +!--------------------------------------------------------------------- +!- This subroutine transforms itau into a date. The date with which +!- the time axis is going to be labeled +!- +!- INPUT +!- itau : current time step +!- deltat : time step between itau s +!- +!- OUTPUT +!- year : year +!- month : month +!- day : day +!- sec : seconds since midnight +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: deltat +!- + INTEGER,INTENT(OUT) :: year,month,day + REAL,INTENT(OUT) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + CALL ipslerr (2,'itau2ymds', & + & 'You try to call this function, itau2ymds, but you didn''t', & + & ' call ioconf_startdate to initialize date0 in calendar.', & + & ' Please call ioconf_startdate before itau2ymds.') + ENDIF + julian_day = start_day + julian_sec = start_sec+REAL(itau)*deltat + CALL ju2ymds_internal (julian_day,julian_sec,year,month,day,sec) +!----------------------- +END SUBROUTINE itau2ymds +!- +!=== +!- +REAL FUNCTION dtchdate (itau,date0,old_dt,new_dt) +!--------------------------------------------------------------------- +!- This function changes the date so that the simulation can +!- continue with the same itau but a different dt. +!- +!- INPUT +!- itau : current time step +!- date0 : Date at which itau was equal to 0 +!- old_dt : Old time step between itaus +!- new_dt : New time step between itaus +!- +!- OUTPUT +!- dtchdate : Date for the given itau +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: date0,old_dt,new_dt +!- + REAL :: rtime +!--------------------------------------------------------------------- + rtime = itau2date (itau,date0,old_dt) + dtchdate = rtime-REAL(itau)*new_dt/one_day +!-------------------- +END FUNCTION dtchdate +!- +!=== +!- +SUBROUTINE isittime & + & (itau,date0,dt,freq,last_action,last_check,do_action) +!--------------------------------------------------------------------- +!- This subroutine checks the time as come for a given action. +!- This is computed from the current time-step(itau). +!- Thus we need to have the time delta (dt), the frequency +!- of the action (freq) and the last time it was done +!- (last_action in units of itau). +!- In order to extrapolate when will be the next check we need +!- the time step of the last call (last_check). +!- +!- The test is done on the following condition : +!- the distance from the current time to the time for the next +!- action is smaller than the one from the next expected +!- check to the next action. +!- When the test is done on the time steps simplifications make +!- it more difficult to read in the code. +!- For the real time case it is easier to understand ! +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: itau + REAL,INTENT(IN) :: dt,freq + INTEGER,INTENT(IN) :: last_action,last_check + REAL,INTENT(IN) :: date0 +!- + LOGICAL,INTENT(OUT) :: do_action +!- + REAL :: dt_action,dt_check + REAL :: date_last_act,date_next_check,date_next_act, & + & date_now,date_mp1,date_mpf + INTEGER :: year,month,monthp1,day,next_check_itau,next_act_itau + INTEGER :: yearp,dayp + REAL :: sec,secp + LOGICAL :: check = .FALSE. +!--------------------------------------------------------------------- + IF (check) THEN + WRITE(*,*) & + & "isittime 1.0 ",itau,date0,dt,freq,last_action,last_check + ENDIF +!- + IF (last_check >= 0) THEN + dt_action = (itau-last_action)*dt + dt_check = (itau-last_check)*dt + next_check_itau = itau+(itau-last_check) +!- +!-- We are dealing with frequencies in seconds and thus operation +!-- can be done on the time steps. +!- + IF (freq > 0) THEN + IF (ABS(dt_action-freq) <= ABS(dt_action+dt_check-freq)) THEN + do_action = .TRUE. + ELSE + do_action = .FALSE. + ENDIF +!- +!---- Here we deal with frequencies in month and work on julian days. +!- + ELSE + date_now = itau2date (itau,date0,dt) +!KW! blow out part of the code, replace with a quick and dirty fix +!KW! that checks if month of next timestep is equal to current month +!KW! if this isn't true, then doaction=true + CALL ju2ymds (date_now,year,month,day,sec) + date_mp1 = itau2date (itau+1,date0,dt) + CALL ju2ymds (date_mp1,year,monthp1,day,sec) + IF (month /= monthp1) THEN + do_action = .TRUE. +!KW! end of changes + ELSE + do_action = .FALSE. + ENDIF + ENDIF +!- + IF (check) THEN + WRITE(*,*) "isittime 2.0 ", & + & date_next_check,date_next_act,ABS(dt_action-freq), & + & ABS(dt_action+dt_check-freq),dt_action,dt_check, & + & next_check_itau,do_action + ENDIF + ELSE + do_action=.FALSE. + ENDIF +!---------------------- +END SUBROUTINE isittime +!- +!=== +!- +SUBROUTINE ioconf_calendar (str) +!--------------------------------------------------------------------- +!- This routine allows to configure the calendar to be used. +!- This operation is only allowed once and the first call to +!- ymds2ju or ju2ymsd will lock the current configuration. +!- the argument to ioconf_calendar can be any of the following : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(IN) :: str +!- + INTEGER :: leng,ipos + CHARACTER(LEN=20) :: str_w +!--------------------------------------------------------------------- +!- +! Clean up the string ! +!- + str_w = str + CALL strlowercase (str_w) +!- + IF (.NOT.lock_one_year) THEN +!--- + lock_one_year=.TRUE. +!--- + SELECT CASE(TRIM(str_w)) + CASE('gregorian','standard','proleptic_gregorian') + calendar_used = 'gregorian' + one_year = 365.2425 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('noleap','365_day','365d') + calendar_used = 'noleap' + one_year = 365.0 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE('all_leap','366_day','366d') + calendar_used = 'all_leap' + one_year = 366.0 + mon_len(:)=(/31,29,31,30,31,30,31,31,30,31,30,31/) + CASE('360_day','360d') + calendar_used = '360d' + one_year = 360.0 + mon_len(:)=(/30,30,30,30,30,30,30,30,30,30,30,30/) + CASE('julian') + calendar_used = 'julian' + one_year = 365.25 + mon_len(:)=(/31,28,31,30,31,30,31,31,30,31,30,31/) + CASE DEFAULT + ipos = INDEX(str_w,'d') + IF (ipos == 4) THEN + READ(str_w(1:3),'(I3)') leng + IF ( (MOD(leng,12) == 0).AND.(leng > 1) ) THEN + calendar_used = str_w + one_year = leng + mon_len(:) = leng/12 + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'The length of the year as to be a modulo of 12', & + & 'so that it can be divided into 12 month of equal length', & + & TRIM(str_w)) + ENDIF + ELSE + CALL ipslerr (3,'ioconf_calendar', & + & 'Unrecognized input, please check the man pages.', & + & TRIM(str_w),' ') + ENDIF + END SELECT + ELSE IF (TRIM(str_w) /= TRIM(calendar_used)) THEN + WRITE(str_w,'(f10.4)') one_year + CALL ipslerr (2,'ioconf_calendar', & + & 'The calendar was already used or configured to : '// & + & TRIM(calendar_used)//'.', & + & 'You are not allowed to change it to : '//TRIM(str)//'.', & + & 'The following length of year is used : '//TRIM(ADJUSTL(str_w))) + ENDIF +!----------------------------- +END SUBROUTINE ioconf_calendar +!- +!=== +!- +SUBROUTINE ioconf_startdate_simple (julian) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(IN) :: julian +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + julian_day = INT(julian) + julian_sec = (julian-julian_day)*one_day +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!------------------------------------- +END SUBROUTINE ioconf_startdate_simple +!- +!=== +!- +SUBROUTINE ioconf_startdate_ymds (year,month,day,sec) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month,day + REAL,INTENT(IN) :: sec +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal (year,month,day,sec,julian_day,julian_sec) +!- + CALL ioconf_startdate_internal (julian_day,julian_sec) +!----------------------------------- +END SUBROUTINE ioconf_startdate_ymds +!- +!=== +!- +SUBROUTINE ioconf_startdate_internal (julian_day,julian_sec) +!--------------------------------------------------------------------- +! This subroutine allows to set the startdate for later +! use. It allows the applications to access the date directly from +! the timestep. In order to avoid any problems the start date will +! be locked and can not be changed once set. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: julian_day + REAL,INTENT(IN) :: julian_sec +!- + CHARACTER(len=70) :: str70a,str70b +!--------------------------------------------------------------------- + IF (.NOT.lock_startdate) THEN + start_day = julian_day + start_sec = julian_sec + lock_startdate = .TRUE. + ELSE + WRITE(str70a,'("The date you tried to set : ",f10.4)') & + & julian_day,julian_sec/one_day + WRITE(str70b, & + & '("The date which was already set in the calendar : ",f10.4)') & + & start_day+start_sec/one_day + CALL ipslerr (2,'ioconf_startdate', & + & 'The start date has already been set and you tried to change it', & + & str70a,str70b) + ENDIF +!--------------------------------------- +END SUBROUTINE ioconf_startdate_internal +!- +!=== +!- +SUBROUTINE ioget_calendar_str (str) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=*),INTENT(OUT) :: str +!--------------------------------------------------------------------- + lock_one_year = .TRUE. +!- + str = calendar_used +!-------------------------------- +END SUBROUTINE ioget_calendar_str +!- +!=== +!- +SUBROUTINE ioget_calendar_real1 (long_year) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year +!--------------------------------------------------------------------- + long_year = one_year + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real1 +!- +!=== +!- +SUBROUTINE ioget_calendar_real2 (long_year,long_day) +!--------------------------------------------------------------------- +!- This subroutine returns the name of the calendar used here. +!- Three options exist : +!- - gregorian : This is the gregorian calendar (default here) +!- - noleap : A calendar without leap years = 365 days +!- - xxxd : A calendar of xxx days (has to be a modulo of 12) +!- with 12 month of equal length +!- +!- This routine will lock the calendar. +!- You do not want it to change after your inquiry. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + REAL,INTENT(OUT) :: long_year,long_day +!--------------------------------------------------------------------- + long_year = one_year + long_day = one_day + lock_one_year = .TRUE. +!---------------------------------- +END SUBROUTINE ioget_calendar_real2 +!- +!=== +!- +INTEGER FUNCTION ioget_mon_len (year,month) +!!-------------------------------------------------------------------- +!! The "ioget_mon_len" function returns +!! the number of days in a "month" of a "year", +!! in the current calendar. +!! +!! INTEGER FUNCTION ioget_mon_len (year,month) +!! +!! INPUT +!! +!! (I) year : year +!! (I) month : month in the year (1 --> 12) +!! +!! OUTPUT +!! +!! (I) ioget_mon_len : number of days in the month +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year,month +!- + INTEGER :: ml +!--------------------------------------------------------------------- + IF ( (month >= 1).AND.(month <= 12) ) THEN + IF ( (one_year > 365.0).AND.(one_year < 366.0) ) THEN +!---- "Gregorian" or "Julian" + ml = mon_len(month) + IF (month == 2) THEN + IF (ABS(one_year-365.2425) <= EPSILON(one_year) ) THEN +!-------- "Gregorian" + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + ml = ml+1 + ENDIF + ELSE +!-------- "Julian" + IF (MOD(year,4) == 0) THEN + ml = ml+1 + ENDIF + ENDIF + ENDIF + ioget_mon_len = ml + ELSE +!---- "No leap" or "All leap" or "Calendar with regular month" + ioget_mon_len = mon_len(month) + ENDIF + ELSE + CALL ipslerr (3,'ioget_mon_len', & + & 'The number of the month','must be between','1 and 12') + ENDIF +!------------------------- +END FUNCTION ioget_mon_len +!- +!=== +!- +INTEGER FUNCTION ioget_year_len (year) +!!-------------------------------------------------------------------- +!! The "ioget_year_len" function returns +!! the number of days in "year", in the current calendar. +!! +!! INTEGER FUNCTION ioget_year_len (year) +!! +!! INPUT +!! +!! (I) year : year +!! +!! OUTPUT +!! +!! (I) ioget_year_len : number of days in the year +!!-------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year +!- + INTEGER :: yl +!--------------------------------------------------------------------- + SELECT CASE(TRIM(calendar_used)) + CASE('gregorian') + yl = 365 + IF ( ((MOD(year,4) == 0).AND.(MOD(year,100) /= 0)) & + .OR.(MOD(year,400) == 0) ) THEN + yl = yl+1 + ENDIF + CASE('julian') + yl = 365 + IF (MOD(year,4) == 0) THEN + yl = yl+1 + ENDIF + CASE DEFAULT + yl = NINT(one_year) + END SELECT + ioget_year_len = yl +!-------------------------- +END FUNCTION ioget_year_len +!- +!=== +!- +SUBROUTINE ioget_timestamp (string) +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + CHARACTER(LEN=30),INTENT(OUT) :: string +!- + INTEGER :: date_time(8) + CHARACTER(LEN=10) :: bigben(3) +!--------------------------------------------------------------------- + IF (INDEX(time_stamp,'XXXXXX') > 0) THEN + CALL DATE_AND_TIME (bigben(1),bigben(2),bigben(3),date_time) +!--- + WRITE(time_stamp, & + & "(I4.4,'-',A3,'-',I2.2,' ',I2.2,':',I2.2,':',I2.2,' GMT',a5)") & + & date_time(1),cal(date_time(2)),date_time(3),date_time(5), & + & date_time(6),date_time(7),bigben(3) + ENDIF +!- + string = time_stamp +!----------------------------- +END SUBROUTINE ioget_timestamp +!- +!=== +!- +SUBROUTINE time_add & + & (year_s,month_s,day_s,sec_s,sec_increment, & + & year_e,month_e,day_e,sec_e) +!--------------------------------------------------------------------- +!- This subroutine allows to increment a date by a number of seconds. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s +!- +! Time in seconds to be added to the date +!- + REAL,INTENT(IN) :: sec_increment +!- + INTEGER,INTENT(OUT) :: year_e,month_e,day_e + REAL,INTENT(OUT) :: sec_e +!- + INTEGER :: julian_day + REAL :: julian_sec +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day,julian_sec) +!- + julian_sec = julian_sec+sec_increment +!- + CALL ju2ymds_internal & + & (julian_day,julian_sec,year_e,month_e,day_e,sec_e) +!---------------------- +END SUBROUTINE time_add +!- +!=== +!- +SUBROUTINE time_diff & + & (year_s,month_s,day_s,sec_s,year_e,month_e,day_e,sec_e,sec_diff) +!--------------------------------------------------------------------- +!- This subroutine allows to determine the number of seconds +!- between two dates. +!--------------------------------------------------------------------- + IMPLICIT NONE +!- + INTEGER,INTENT(IN) :: year_s,month_s,day_s + REAL,INTENT(IN) :: sec_s + INTEGER,INTENT(IN) :: year_e,month_e,day_e + REAL,INTENT(IN) :: sec_e +!- +! Time in seconds between the two dates +!- + REAL,INTENT(OUT) :: sec_diff +!- + INTEGER :: julian_day_s,julian_day_e,day_diff + REAL :: julian_sec_s,julian_sec_e +!--------------------------------------------------------------------- + CALL ymds2ju_internal & + & (year_s,month_s,day_s,sec_s,julian_day_s,julian_sec_s) + CALL ymds2ju_internal & + & (year_e,month_e,day_e,sec_e,julian_day_e,julian_sec_e) +!- + day_diff = julian_day_e-julian_day_s + sec_diff = julian_sec_e-julian_sec_s +!- + sec_diff = sec_diff+day_diff*one_day +!----------------------- +END SUBROUTINE time_diff +!- +!=== +!- +END MODULE calendar diff --git a/deploy/patches/jaguar/ecearth/v3-r719/build-config/compilation.cmd b/deploy/patches/jaguar/ecearth/v3-r719/build-config/compilation.cmd new file mode 100755 index 0000000000000000000000000000000000000000..c1dcec3aa7fbe7b0c468494fc75792d3f370d646 --- /dev/null +++ b/deploy/patches/jaguar/ecearth/v3-r719/build-config/compilation.cmd @@ -0,0 +1,353 @@ +#!/bin/bash + +# nohup ./compilation.cmd >& compiation.log & + +source /opt/modules/default/etc/modules.sh +module swap PrgEnv-pgi PrgEnv-intel + +set -xuve +date + +MPI=/opt/cray/mpt/5.4.1/xt/gemini/mpich2-intel/120 +LAPACK= +NetCDF=/tmp/proj/cli055/opt/netcdf-3.6.3/intel-12.1 +GribAPI=/tmp/proj/cli055/opt/grib_api-1.9.16/intel-12.1 +GribEX=/tmp/proj/cli055/opt/gribex_000370/intel-12.1 + +cd .. +export ECEARTH=$(pwd) +cd - + +PLATFORM=jaguar-intel-craympi +CONFIG=config.xml + +cat > $CONFIG < + + + + + + +