Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (150)
Showing
with 1353 additions and 162 deletions
**Contents**
NEMO
====
.. contents::
:local:
.. _`Former web platform forge`: https://forge.ipsl.jussieu.fr/nemo
.. _`NEMO users' guide`: https://sites.nemo-ocean.io/user-guide
.. _`Migration Guide`: https://sites.nemo-ocean.io/user-guide/migration.html
.. _`Change list`: https://sites.nemo-ocean.io/user-guide/changes.html
.. _`Test case repository`: https://github.com/NEMO-ocean/NEMO-examples
.. _`How to cite`: https://www.nemo-ocean.eu/bibliography/how-to-cite/
.. _`NEMO forums`: https://nemo-ocean.discourse.group
.. _`NEMO newsletter`: https://listes.ipsl.fr/sympa/subscribe/nemo-newsletter
.. _`NEMO publications`: https://www.nemo-ocean.eu/bibliography/publications/add
.. _`NEMO projects`: https://www.nemo-ocean.eu/projects/add
.. _`Special Issue`: https://gmd.copernicus.org/articles/special_issue40.html
.. _`NEMO System Team wiki`: https://forge.nemo-ocean.eu/developers/home/-/wikis/Home
.. _`NEMO ocean engine`: https://zenodo.org/record/1464816
.. _`NEMO Tracers engine` : https://zenodo.org/record/1471700
.. _`NEMO Sea Ice engine`: https://zenodo.org/record/1471689
**Welcome to NEMO home page!**
NEMO (*Nucleus for European Modelling of the Ocean*) is a state-of-the-art modelling
*Nucleus for European Modelling of the Ocean* (NEMO) is a state-of-the-art modelling
framework for research activities and forecasting services in ocean and climate sciences,
developed in a sustainable way by the NEMO European consortium since 2008.
This page intends to help you to get started using the NEMO platform and to introduce you
to the different levels of information available. It starts here with NEMO release 4.2.0.
Reminder: Our `Former web platform forge`_ (SVN+Trac) contains the previous documentation
and releases made available from the beginning of the project up to of NEMO 4.0.
Getting started
===============
Getting your hands on NEMO: the first steps are described in detail in the
`NEMO users' guide`_ . This explains how to download the code, build the environment,
create the executable, and perform a first integration.
If you are already using a previous release of NEMO, please refer to the
`Migration Guide`_ which aims to help you to make the move to 4.2.0.
The above users guides cover in detail what is available from gitlab and supported by NEMO
System Team. Aside from this web platform, a set of test cases is also available from the
`Test case repository`_ . These test cases can be useful for students, outreach, and
exploring specific aspects of NEMO with light configurations. The web page also allows you
to submit test cases you have developed and want to share with the community. Feel free to
contribute!
Project documentation
=====================
Reference manuals fully describing NEMO for the three main component
* |OCE| models the ocean {thermo}dynamics and solves the primitive equations (`./src/OCE <./src/OCE>`_)
* |ICE| simulates sea-ice {thermo}dynamics, brine inclusions and subgrid-scale thickness
variations (`./src/ICE <./src/ICE>`_)
* |MBG| models the {on,off}line oceanic tracers transport and biogeochemical processes
(`./src/TOP <./src/TOP>`_)
are available from Zenodo:
============ ======================== =====
Component Reference Manual DOI
============ ======================== =====
|NEMO-OCE| `NEMO ocean engine`_ .. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6334656.svg
:target: https://doi.org/10.5281/zenodo.6334656
|NEMO-ICE| `NEMO Sea Ice engine`_ *not yet available*
|NEMO-MBG| `NEMO Tracers engine`_ .. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1471700.svg
:target: https://doi.org/10.5281/zenodo.1471700
============ ======================== =====
These reference manuals are the publications that should be cited in your own
publications. Please visit `How to cite`_? for details.
New features of 4.2.0 release are described in the `Change list`_ section of the `NEMO users' guide`_
Asking questions, and exchanging information
============================================
- Register once for all and use the `NEMO forums`_ on discourse to share and discuss with the NEMO community.
- Register once for all and receive by mail the `NEMO newsletter`_ : recommended for all
users to receive the major announcements from the project (new releases, open meetings and
main informations). Low traffic: about ten messages a year.
Contributing to NEMO visibility: projects and publications
==========================================================
Please help us justifying the NEMO development efforts by
- Adding your publications using NEMO and its outputs to the `NEMO publications`_ page
- Describing your project using NEMO on the `NEMO projects`_ page
NEMO also has a `Special Issue`_ in the open-access journal
Geoscientific Model Development (GMD) from the European Geosciences Union
The main scope is to collect relevant manuscripts covering various topics and
to provide a single portal to assess the model potential and evolution.
Contributing to NEMO development
================================
For all information please refer to the `NEMO wiki <https://forge.nemo-ocean.eu/nemo/nemo/-/wikis/home>`_
NEMO strives to be written in a way which allows the easy incorporation of developments.
You are welcome to contribute to the development of the NEMO Shared reference. NEMO
development is driven by NEMO Consortium planning and producing NEMO's sustainable
development in order to keep a reliable evolving framework. Development is organised and
scheduled through a five years development strategy, Working groups and the activities of
the development team (named NEMO System Team) in a yearly workplan. More information is
available on the `NEMO System Team wiki`_
How to cite
===========
To acknowledge the sustainable development efforts of the NEMO Consortium, please quote `these references <https://www.nemo-ocean.eu/bibliography/how-to-cite/>`_ in your publications and presentations using NEMO.
Disclaimer
==========
......
module purge
module load intel-2021.6.0/cmake/3.25.1-7wfsx
module load oneapi-2022.1.0/compiler-rt/2022.1.0
module load intel-2021.6.0/2021.6.0
module load impi-2021.6.0/2021.6.0
module load intel-2021.6.0/impi-2021.6.0/hdf5-threadsafe/1.13.3-zbgha
module load intel-2021.6.0/impi-2021.6.0/netcdf-c-threadsafe/4.9.0-wpe4t
module load intel-2021.6.0/impi-2021.6.0/netcdf-fortran-threadsafe/4.6.0-75oow
module load intel-2021.6.0/impi-2021.6.0/parallel-netcdf/1.12.3-eshb5
module load intel-2021.6.0/perl/5.36.0-jj4hw
module load intel-2021.6.0/perl-uri/1.72-6at2i
module load intel-2021.6.0/impi-2021.6.0/xios/2.5-36kwn
# set linker path to 64-bit libraries
export LD_LIBRARY_PATH="/lib64/":$LD_LIBRARY_PATH
# mpi ifort compiler options for ZEUS cluster + XIOS
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
#
# CPP Pre-processor
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# FPPFLAGS pre-processing flags
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# AR assembler
# ARFLAGS assembler flags
# MK make (usually GNU make)
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
# Environment variables are set automatically when loading modules on JUNO cluster (see arch-X64_JUNO.env)
%NCDF_INC -I${NETCDF_FORTRAN}/include -I${NETCDF_C}/include -I${PARALLEL_NETCDF}/include
%NCDF_LIB -L${NETCDF_FORTRAN}/lib -lnetcdff -L${NETCDF_C}/lib -lnetcdf -L${PARALLEL_NETCDF}/lib -lpnetcdf
%HDF5_INC -I${HDF5}/include
%HDF5_LIB -L${HDF5}/lib -lhdf5_hl -lhdf5
%XIOS_INC -I${XIOS}/inc
%XIOS_LIB -L${XIOS}/lib -lxios
%USER_INC %XIOS_INC %NCDF_INC %HDF5_INC
%USER_LIB %XIOS_LIB %NCDF_LIB %HDF5_LIB
%FC mpiifort
%FCFLAGS -r8 -O3 -fp-model source -traceback -qmkl=cluster -march=icelake-client -mtune=icelake-client -qopt-zmm-usage=low -no-fma
%FFLAGS %FCFLAGS
%CC mpiicc
%CFLAGS -O0
%LD mpiifort
%LDFLAGS -lstdc++ -lgpfs
%AR ar
%ARFLAGS -r
%CPP icc
%FPPFLAGS -E -P -traditional
%MK gmake
arch-X64_JUNO.env
\ No newline at end of file
# mpi ifort compiler options for ZEUS cluster + XIOS
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
#
# CPP Pre-processor
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# FPPFLAGS pre-processing flags
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# AR assembler
# ARFLAGS assembler flags
# MK make (usually GNU make)
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
# Environment variables are set automatically when loading modules on JUNO cluster (see arch-X64_JUNO.env)
%NCDF_INC -I${NETCDF_FORTRAN}/include -I${NETCDF_C}/include -I${PARALLEL_NETCDF}/include
%NCDF_LIB -L${NETCDF_FORTRAN}/lib -lnetcdff -L${NETCDF_C}/lib -lnetcdf -L${PARALLEL_NETCDF}/lib -lpnetcdf
%HDF5_INC -I${HDF5}/include
%HDF5_LIB -L${HDF5}/lib -lhdf5_hl -lhdf5
%XIOS_INC -I${XIOS}/inc
%XIOS_LIB -L${XIOS}/lib -lxios
%USER_INC %XIOS_INC %NCDF_INC %HDF5_INC
%USER_LIB %XIOS_LIB %NCDF_LIB %HDF5_LIB
%FC mpiifort
%FCFLAGS -r8 -g -O0 -check all -fp-model source -traceback -qmkl=cluster -march=icelake-client -mtune=icelake-client -qopt-zmm-usage=low -no-fma
%FFLAGS %FCFLAGS
%CC mpiicc
%CFLAGS -O0
%LD mpiifort
%LDFLAGS -lstdc++ -lgpfs
%AR ar
%ARFLAGS -r
%CPP icc
%FPPFLAGS -E -P -traditional
%MK gmake
......@@ -54,5 +54,5 @@
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC cc
%CC icc
%CFLAGS -O0
......@@ -54,5 +54,5 @@
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC cc
%CC icc
%CFLAGS -O0
# compiler options for AA (using GCC compiler)
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated)
# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated)
#
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# FPPFLAGS pre-processing flags
# AR assembler
# ARFLAGS assembler flags
# MK make
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
# All NETCDF and HDF paths are empty as they are automatically defined through environment
# variables by the load of modules
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
#
#
%NCDF_INC ${NETCDF4_INCLUDE}
%NCDF_LIB -L${NETCDF4_DIR}/lib -lnetcdff -lnetcdf -L${HDF5_DIR}/lib -lhdf5_hl -lm
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_nosignedzero
%FC mpif90 -c -cpp
# O3 breaks reproduci/restartabi-lity with gcc/12.2.0
%FCFLAGS -fdefault-real-8 -O2 -funroll-all-loops -fcray-pointer -ffree-line-length-none -fallow-argument-mismatch -Wno-missing-include-dirs
%FFLAGS %FCFLAGS
%LD mpif90
%LDFLAGS -Wl,-rpath,${HDF5_DIR}/lib -Wl,-rpath=${NETCDF4_DIR}/lib -Wl,-rpath=${XIOS_DIR}/lib
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK make
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC gcc
%CFLAGS -O0 -fcommon
# compiler options for AA (using GCC compiler)
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated)
# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated)
#
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# FPPFLAGS pre-processing flags
# AR assembler
# ARFLAGS assembler flags
# MK make
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
# All NETCDF and HDF paths are empty as they are automatically defined through environment
# variables by the load of modules
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
#
#
%NCDF_INC ${NETCDF4_INCLUDE}
%NCDF_LIB -L${NETCDF4_DIR}/lib -lnetcdff -lnetcdf -L${HDF5_DIR}/lib -lhdf5_hl -lm
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_nosignedzero
%FC mpif90 -c -cpp
%FCFLAGS -fdefault-real-8 -Og -g -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all,no-array-temps -finit-real=nan -ffpe-trap=invalid,zero,overflow -ffpe-summary=invalid,zero,overflow -fallow-argument-mismatch -Wno-missing-include-dirs
%FFLAGS %FCFLAGS
%LD mpif90
%LDFLAGS -Wl,-rpath,${HDF5_DIR}/lib -Wl,-rpath=${NETCDF4_DIR}/lib -Wl,-rpath=${XIOS_DIR}/lib
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK make
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC gcc
%CFLAGS -O0 -fcommon
# compiler options for AA (using INTEL compiler & OpenMPI)
#
# module purge
# module use /home/ar0s/modules
# module load prgenv/intel intel/2021.4.0 openmpi/4.1.1.1 hdf5-parallel/1.10.6 netcdf4-parallel/4.7.4 xios/trunk/rev2320-nmpi
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated)
# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated)
#
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# FPPFLAGS pre-processing flags
# AR assembler
# ARFLAGS assembler flags
# MK make
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
# All NETCDF and HDF paths are empty as they are automatically defined through environment
# variables by the load of modules
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
#
#
%NCDF_INC ${NETCDF4_INCLUDE}
%NCDF_LIB ${NETCDF4_LIB} -L${HDF5_DIR}/lib -Wl,-rpath,${HDF5_DIR}/lib -lhdf5_hl -lhdf5 -lz
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/include
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC mpifort -c -cpp
%FCFLAGS -march=core-avx2 -i4 -r8 -O3 -fp-model strict -fno-alias -align array64byte
%FFLAGS %FCFLAGS
%LD mpifort
%LDFLAGS
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK gmake
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC mpicc
%CFLAGS -O0
# compiler options for AA (using INTEL compiler & OpenMPI)
#
# module purge
# module use /home/ar0s/modules
# module load prgenv/intel intel/2021.4.0 openmpi/4.1.1.1 hdf5-parallel/1.10.6 netcdf4-parallel/4.7.4 xios/trunk/rev2320-nmpi
#
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
# XIOS_INC xios include file (taken into accound only if key_xios is activated)
# XIOS_LIB xios library (taken into accound only if key_xios is activated)
# OASIS_INC oasis include file (taken into accound only if key_oasis3 is activated)
# OASIS_LIB oasis library (taken into accound only if key_oasis3 is activated)
#
# FC Fortran compiler command
# FCFLAGS Fortran compiler flags
# FFLAGS Fortran 77 compiler flags
# LD linker
# LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries
# FPPFLAGS pre-processing flags
# AR assembler
# ARFLAGS assembler flags
# MK make
# USER_INC complete list of include files
# USER_LIB complete list of libraries to pass to the linker
# CC C compiler used to compile conv for AGRIF
# CFLAGS compiler flags used with CC
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
# All NETCDF and HDF paths are empty as they are automatically defined through environment
# variables by the load of modules
#---------------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------------
#
#
%NCDF_INC ${NETCDF4_INCLUDE}
%NCDF_LIB ${NETCDF4_LIB} -L${HDF5_DIR}/lib -Wl,-rpath,${HDF5_DIR}/lib -lhdf5_hl -lhdf5 -lz
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/include
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC mpifort -c -cpp
%FCFLAGS -march=core-avx2 -i4 -r8 -g -O0 -debug all -traceback -fp-model strict -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge
%FFLAGS %FCFLAGS
%LD mpifort
%LDFLAGS
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK gmake
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC mpicc
%CFLAGS -O0
# compiler options for BELENOS/TARANIS (using INTEL compiler)
# compiler options for BELENOS/TARANIS (using INTEL compiler + INTEL MPI)
#
# INTEL_IMPI (XIOS-2.5)
# intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios-2.5_rev1903
# --------------------------------
# INTEL_IMPI (NEMO 4.0 + XIOS-2.5)
# --------------------------------
# module use /home/ext/mr/smer/samsong/modules
# module load intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/2.5/rev1903
#
# INTEL_IMPI (XIOS-TRUNK must be compiled)
# gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2
# ----------------------------------
# INTEL_IMPI (NEMO 4.2 + XIOS-TRUNK)
# ----------------------------------
# module use /home/ext/mr/smer/samsong/modules
# module load gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/trunk/rev2134
#
#
# NCDF_INC netcdf4 include file
......@@ -44,7 +50,7 @@
%NCDF_LIB -L${NETCDF_LIB} -lnetcdff -lnetcdf -L${PHDF5_LIB_DIR} -lhdf5_hl -lhdf5
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_INC -I${OASIS_DIR}/include
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
......
# compiler options for BELENOS/TARANIS (using INTEL compiler)
# compiler options for BELENOS/TARANIS (using INTEL compiler + INTEL MPI)
#
# INTEL_IMPI (XIOS-2.5)
# intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios-2.5_rev1903
# --------------------------------
# INTEL_IMPI (NEMO 4.0 + XIOS-2.5)
# --------------------------------
# module use /home/ext/mr/smer/samsong/modules
# module load intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/2.5/rev1903
#
# INTEL_IMPI (XIOS-TRUNK must be compiled)
# gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2
# ----------------------------------
# INTEL_IMPI (NEMO 4.2 + XIOS-TRUNK)
# ----------------------------------
# module use /home/ext/mr/smer/samsong/modules
# module load gcc/9.2.0 intel/2018.5.274 intelmpi/2018.5.274 phdf5/1.8.18 netcdf_par/4.7.1_V2 xios/trunk/rev2134
#
#
# NCDF_INC netcdf4 include file
......@@ -44,7 +50,7 @@
%NCDF_LIB -L${NETCDF_LIB} -lnetcdff -lnetcdf -L${PHDF5_LIB_DIR} -lhdf5_hl -lhdf5
%XIOS_INC -I${XIOS_INC}
%XIOS_LIB -L${XIOS_LIB} -lxios -lstdc++
%OASIS_INC -I${OASIS_DIR}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_INC -I${OASIS_DIR}/include
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
......
#!/bin/bash
#
set -u
#
#- Choice of the options ---
#
while [ $# -gt 0 ]
do
case $( echo $1 | tr '[:upper:]' '[:lower:]' ) in
-h|--help) cat <<'EOF'
Usage:
------
./build_arch-auto.sh
build_arch-auto.sh should automatically find all necessary information by itself...
However the following environment variables or their corresponding optional arguments can be used
to force the default and automatic definition of the variables used by build_arch-auto.sh
Environment variables that can be defined
-----------------------------------------
NETCDF_C_prefix : prefix of the NetCDF-C library ($NCDF_F_PREFIX/lib) and include ($NCDF_C_PREFIX/include)
- set it to "no" if you don't want to use NetCDF library
- if not defined : we use "nc-config --prefix"
Can also be specified with the optional argument --NETCDF_C_prefix
NETCDF_F_prefix : prefix of the NetCDF-Fortran library ($NCDF_F_PREFIX/lib) and include ($NCDF_F_PREFIX/include)
- if not defined : we use "nf-config --prefix"
- if nf-config not found : we use "nc-config --flibs" to find it
- not used if NETCDF_C_prefix="no"
Can also be specified with the optional argument --NETCDF_F_prefix
HDF5_prefix : prefix of the HFD5 library ($HDF5_PREFIX/lib)
- if not defined : we use "nc-config --cflags" and "h5pcc -showconfig" to find it
- not used if NETCDF_C_prefix="no"
Can also be specified with the optional argument --HDF5_prefix
XIOS_prefix : prefix of the XIOS library ($XIOS_PREFIX/lib) and include ($XIOS_PREFIX/inc)
Can also be specified with the optional argument --XIOS_prefix
OASIS_prefix : prefix of the OASIS library ($OASIS_PREFIX/lib) and
include ($OASIS_PREFIX/build/lib/mct and $OASIS_PREFIX/build/lib/psmile.MPI1)
Can also be specified with the optional argument --OASIS_prefix
LIBMpath : path of the m library (standard C library of basic mathematical functions)
Can also be specified with the optional argument --LIBMpath
CURLpath : path of the curl library
Can also be specified with the optional argument --CURLpath
ZLIBpath : path of the z library
Can also be specified with the optional argument --ZLIBpath
FCnemo : fortran compiler
Can also be specified with the optional argument --FCnemo
CCnemo : C compiler (used only for AGRIF conv)
Can also be specified with the optional argument --CCnemo
CPPnemo : cpp compiler
Can also be specified with the optional argument --CPPnemo
MKnemo : make
Can also be specified with the optional argument --MKnemo
ARnemo : archiver
Can also be specified with the optional argument --ARnemo
EOF
exit 0 ;;
--netcdf_c_prefix) NETCDF_C_prefix=${2} ; shift ;;
--netcdf_f_prefix) NETCDF_F_prefix=${2} ; shift ;;
--hdf5_prefix) HDF5_prefix=${2} ; shift ;;
--xios_prefix) XIOS_prefix=${2} ; shift ;;
--oasis_prefix) OASIS_prefix=${2} ; shift ;;
--libmpath) LIBMpath=${2} ; shift ;;
--curlpath) CURLpath=${2} ; shift ;;
--zlibpath) ZLIBpath=${2} ; shift ;;
--fcnemo) FCnemo=${2} ; shift ;;
--ccnemo) CCnemo=${2} ; shift ;;
--cppnemo) CPPnemo=${2} ; shift ;;
--mknemo) MKnemo=${2} ; shift ;;
--arnemo) ARnemo=${2} ; shift ;;
*) echo -e "\033[0;31m\nERROR: \"$1\" BAD OPTION\033[0m\n"
exit 2 ;;
esac
shift
done
#
#-----------------------------------------------------
#
echo_red () {
echo
while [ $# -gt 0 ] ; do echo -e "\033[0;31m$1\033[0m" ; shift ; done
}
echo_green () {
echo
while [ $# -gt 0 ] ; do echo -e "\033[0;32m$1\033[0m" ; shift ; done
}
#
echo_orange () {
echo
while [ $# -gt 0 ] ; do echo -e "\033[0;33m$1\033[0m" ; shift ; done
}
#
# check the exit status of which
err_which () { which ${1} > /dev/null 2>&1 ; echo $? ; }
#
# call err_which and print and error message
chk_which () {
if [ $( err_which ${!1} ) -ne 0 ]
then
echo_red "ERROR: ${2^} ${!1} not found." \
" please define your ${2,} path with 'export $1=...'"
exit 1
fi
}
#
# find fortran wrapper
find_fortran_wrapper () {
if [ $( err_which mpiifort ) -eq 0 ] ; then FCnemo=mpiifort
elif [ $( err_which mpif90 ) -eq 0 ] ; then FCnemo=mpif90
elif [ $( err_which ftn ) -eq 0 ] ; then FCnemo=ftn
else
echo_red "ERROR: we found neither \"mpiifort\" nor \"mpif90\" nor \"ftn\"." \
" please define your fortran compiler path with 'export FCnemo=...'"
exit 1
fi
}
# find the fortran compiler associated with the fortran wrapper $FCnemo
find_fortran_compiler () {
if [ $( $FCnemo --version | head -n 1 | grep -ci "\(gcc\|gnu\)" ) -eq 1 ] ; then ftncomp="gnu"
elif [ $( $FCnemo --version | head -n 1 | grep -ci "ifort" ) -eq 1 ] ; then ftncomp="intel"
elif [ $( $FCnemo --version | head -n 1 | grep -ci "Cray Fortran" ) -eq 1 ] ; then ftncomp="cray"
else
echo_red "ERROR: the fortran wrapper $FCnemo does not correspond to the gnu, the intel or the cray compiler" \
" please use one of these compilers or add your compiler in $0"
exit 1
fi
}
#
#-----------------------------------------------------
# NetCDF
#-----------------------------------------------------
#
NETCDF_C_prefix=${NETCDF_C_prefix:-notdef}
NETCDF_F_prefix=${NETCDF_F_prefix:-notdef}
if [ "$NETCDF_C_prefix" == "no" ]
then
echo_orange "WARNING: You chose to compile without any NetCDF Library" \
" 1) You must use --nonetcdf when calling makenemo" \
" 2) You won't be able to read/write any input/output file when running nemo" \
" -> You can run only the BENCH test" \
" 3) You can neither use XIOS nor OASIS" \
NETCDF_F_prefix=no
HDF5_prefix=no
XIOS_prefix=no
OASIS_prefix=no
NCDF_INC=""
NCDF_LIB=""
XIOS_INC=""
XIOS_LIB=""
OASIS_INC=""
OASIS_LIB=""
else
# find NETCDF_C_prefix and NC_CONFIG
if [ "$NETCDF_C_prefix" == "notdef" ] # use nc-config to define NETCDF_C_prefix
then
if [ $( err_which nc-config ) -ne 0 ] # nc-config not found in $PATH
then
echo_red "ERROR: nc-config not found." \
" please define either your path to the NetCDF-C library with 'export NETCDF_C_prefix=...'" \
" or specify you don't want to use NetCDF with 'export NETCDF_C_prefix=no'" \
exit 2
fi
NC_CONFIG=nc-config
NETCDF_C_prefix=$( $NC_CONFIG --prefix )
else # use NETCDF_C_prefix to define NC_CONFIG
NC_CONFIG=$NETCDF_C_prefix/bin/nc-config # assume that nc-config is in $NETCDF_C_prefix/bin
nbok=$( ls $NC_CONFIG 2>/dev/null | wc -l ) # check if we have nc-config
if [ $nbok -eq 0 ]
then
echo_red "ERROR: nc-config not found in $NETCDF_C_prefix/bin" ; exit 2
fi
fi
# find NETCDF_F_prefix and NF_CONFIG
if [ "$NETCDF_F_prefix" == "notdef" ] # use nf-config to define NETCDF_F_prefix
then
if [ $( err_which nf-config ) -ne 0 ] # nf-config not found in $PATH
then
NF_CONFIG=${NC_CONFIG/nc-config/nf-config} # try to find nf-config at the same place than nc-config
if [ $( err_which $NF_CONFIG ) -ne 0 ] # nf-config not located at the same place than nc-config
then
if [ "$( $NC_CONFIG --all | grep -c "has-fortran" )" -gt 0 ] # we can use nc-config instead of nf-config?
then
# do we have NetCDF-Fortran?
if [ "$( $NC_CONFIG --has-fortran )" != "yes" ]
then
echo_red "ERROR: no netcdf-fortran " ; exit 2
fi
NF_CONFIG=$NC_CONFIG # use nc-config instead of nf-config
# define NETCDF_F_prefix with nc-config
NETCDF_F_prefix=$( $NF_CONFIG --flibs | sed -e "s/.*\(-L\|-rpath,\)\([^ ]*\)\/lib *-lnetcdff.*/\2/" )
[ -z $NETCDF_F_prefix ] && NETCDF_F_prefix=$NETCDF_C_prefix # empty -> we try NETCDF_C_prefix
else
echo_red "ERROR: nf-config not found." \
" please define either your path to the NetCDF-Fortran library with 'export NETCDF_F_prefix=...'" \
" or specify you don't want to use NetCDF with 'export NETCDF_C_prefix=no'" \
exit 2
fi
else
NETCDF_F_prefix=$( $NF_CONFIG --prefix ) # use nf-config to define NETCDF_F_prefix
fi
else
NF_CONFIG=nf-config
NETCDF_F_prefix=$( $NF_CONFIG --prefix ) # use nf-config to define NETCDF_F_prefix
fi
else
NF_CONFIG=$NETCDF_F_prefix/bin/nf-config # assume that nf-config is in $NETCDF_F_prefix/bin
nbok=$( ls $NF_CONFIG 2>/dev/null | wc -l ) # check if we have nf-config
if [ $nbok -eq 0 ]
then
echo_red "ERROR: nf-config not found in $NETCDF_F_prefix/bin" ; exit 2
fi
fi
# do we have the proper path to the netcdf library?
nbok=$( ls $NETCDF_C_prefix/lib/libnetcdf* 2>/dev/null | wc -l )
if [ $nbok -eq 0 ]
then
echo_red "ERROR: netcdf library not found in $NETCDF_C_prefix/lib" ; exit 2
else
echo_green "NETCDF_C_prefix=$NETCDF_C_prefix"
fi
# do we have NetCDF-F90 interface?
if [ "$( $NF_CONFIG --has-f03 )" != "yes" ]
then
if [ "$( $NF_CONFIG --has-f90 )" != "yes" ]
then
echo_red "ERROR: no netcdf-fortran F90 interface" ; exit 2
fi
fi
# do we have the proper path to the netcdff library?
nbok=$( ls $NETCDF_F_prefix/lib/libnetcdff* 2>/dev/null | wc -l )
if [ $nbok -eq 0 ]
then
echo_red "ERROR: netcdff library not found in $NETCDF_F_prefix/lib" ; exit 2
else
echo_green "NETCDF_F_prefix=$NETCDF_F_prefix"
fi
# do we have nc4?
if [ "$( $NC_CONFIG --has-nc4 )" != "yes" ]
then
echo_red "ERROR: no nc4 interface in your netcdf library" ; exit 2
fi
# do we have hdf5?
if [ "$( $NC_CONFIG --has-hdf5 )" != "yes" ]
then
echo_red "ERROR: no hdf5 interface in your netcdf library" ; exit 2
fi
HDF5_prefix=${HDF5_prefix:-notdef}
if [ "$HDF5_prefix" == "notdef" ]
then
# look for libhdf5 in the paths found in nc-config --cflags
for dd in $( $NC_CONFIG --cflags | sed -e "s/-I//g" )
do
nbok=$( ls $dd/../lib/libhdf5* 2>/dev/null | wc -l )
[ $nbok -gt 0 ] && HDF5_prefix=$( dirname $dd )
done
fi
if [ "$HDF5_prefix" == "notdef" ] # not found any libhdf5 file... try "h5pcc -showconfig"
then
if [ $( err_which h5pcc ) -eq 0 ] # do we have h5pcc?
then
HDF5_prefix=$( h5pcc -showconfig | grep "Installation point" | sed -e "s/.*: //" )
[ -z $HDF5_prefix ] && HDF5_prefix=notdef # empty -> back to "notdef"
fi
fi
if [ "$HDF5_prefix" == "notdef" ] # still not found any libhdf5 file... try $NETCDF_C_prefix
then
nbok=$( ls $NETCDF_C_prefix/lib/libhdf5* 2>/dev/null | wc -l )
[ $nbok -gt 0 ] && HDF5_prefix=$NETCDF_C_prefix
fi
if [ "$HDF5_prefix" == "notdef" ] # still not found any libhdf5 file...
then
echo_red "ERROR: HDF5_prefix not found." \
" please define it with 'export HDF5_prefix=...'" ; exit 2
fi
# do we have the proper path to the hdf5 library?
nbok=$( ls $HDF5_prefix/lib/libhdf5* 2>/dev/null | wc -l )
if [ $nbok -eq 0 ]
then
echo_red "ERROR: hdf5 library not found in $HDF5_prefix/lib" ; exit 2
else
echo_green "HDF5_prefix=$HDF5_prefix"
fi
# do we have netcdf parallel?
if [ "$( $NC_CONFIG --has-parallel )" != "yes" ]
then
echo_orange "WARNING: your netcdf library cannot write in parallel" \
" you can use only 'the one_file' mode in XOS"
fi
if [ $( err_which h5pcc ) -eq 0 ]
then
if [ $( h5pcc -showconfig | grep "Parallel HDF5" | grep -c yes ) -ne 1 ]
then
echo_orange "WARNING: your hdf5 library was configured without --enable-parallel" \
" you cannot use only the 'one_file' mode in XOS"
fi
fi
# curl
CURLpath=${CURLpath:-notdef}
if [ "$( $NC_CONFIG --dap )" == "yes" ]
then
if [ "$CURLpath" == "notdef" ]
then
if [ $( err_which curl ) -eq 0 ]
then
CURLpath="-L$( dirname $( ls -1 $( dirname $( dirname $( which curl ) ) )/*/libcurl* | head -n 1 ) )"
echo_green "CURLpath=$CURLpath"
else
CURLpath=""
fi
fi
CURLlib="${CURLpath:-""} -lcurl"
else
CURLlib=""
fi
# Zlib: compression library
Zlib="${ZLIBpath:-""} -lz"
# libM: standard C library of basic mathematical functions
libM="${LIBMpath:-""} -lm"
# NCDF_INC and NCDF_LIB
NCDF_INC="-I%NCDF_F_PREFIX/include -I%NCDF_C_PREFIX/include"
#NCDF_LIB="-L%NCDF_F_PREFIX/lib -lnetcdff -L%NCDF_C_PREFIX/lib -lnetcdf -Wl,-rpath=%NCDF_F_PREFIX/lib -L%HDF5_PREFIX/lib -lhdf5_hl -lhdf5 $CURLlib $Zlib $libM -Wl,-rpath=%HDF5_PREFIX/lib"
NCDF_LIB="-L%NCDF_F_PREFIX/lib -lnetcdff -L%NCDF_C_PREFIX/lib -lnetcdf -L%HDF5_PREFIX/lib -lhdf5_hl -lhdf5 $CURLlib $Zlib $libM"
fi
#
#-----------------------------------------------------
# fortran Compileur
#-----------------------------------------------------
#
nompi=0 # default
FCnemo=${FCnemo:-notdef}
if [ "$FCnemo" == "notdef" ]
then
if [ "$NETCDF_C_prefix" == "no" ]
then
find_fortran_wrapper
else
FCnemo=$( $NC_CONFIG --fc ) # use nc-config to find the fortran compiler
[ -z $FCnemo ] && find_fortran_wrapper # if $FCnemo is empty try to find it...
chk_which FCnemo "fortran compiler"
# does the fortran compiler start with the 3 letters mpi or ftn
ismpi=$( basename $FCnemo | cut -c 1-3 | grep -Ec 'mpi|ftn' )
if [ $ismpi -eq 0 ]
then
echo_orange "WARNING: the fortran compiler provided by $( basename $NF_CONFIG ), \"$FCnemo\", is not starting with \"mpi\" or \"ftn\"." \
" we look for mpiifort, mpif90 or ftn..."
FCnemo_org=$FCnemo
find_fortran_compiler
ftncomp_org=$ftncomp
find_fortran_wrapper
find_fortran_compiler
if [ "$ftncomp" != "$ftncomp_org" ]
then
echo_red "ERROR: \"$FCnemo\" and \"$FCnemo_org\" are refering to different compilers: \"$ftncomp\" and \"$ftncomp_org\"" \
" please define your fortran compiler path with 'export FCnemo=...'"
exit 1
fi
fi
fi
else
ismpi=$( basename $FCnemo | cut -c 1-3 | grep -Ec 'mpi|ftn' ) # the fortran compiler does not start with mpi or ftn...
if [ $ismpi -eq 0 ]
then
echo_orange "WARNING: the fortran compiler you provided does not start with mpi or ftn." \
" you must compile nemo with key_mpi_off and you cannot run nemo in parallel"
nompi=1
fi
fi
echo_green "FCnemo=$FCnemo"
find_fortran_compiler
#
#-----------------------------------------------------
# C Compileur (not critical, needed only for the conv of AGRIF)
#-----------------------------------------------------
#
# first guess
case "$ftncomp" in
intel) guess=${CCnemo:-icc} ;;
gnu) guess=${CCnemo:-gcc} ;;
cray) guess=${CCnemo:-cc} ;;
*) guess=${CCnemo:-""} ;;
esac
listcc="$guess gcc cc icc" # try $guess and other usuals C compilers...
CCnemo="notfound"
for ii in $listcc
do
[ $( err_which $ii ) -eq 0 ] && [ "$CCnemo" == "notfound" ] && CCnemo=$ii
done
if [ "$CCnemo" == "notfound" ]
then
echo_red "ERROR: we found neither \"gcc\" nor \"icc\" nor \"cc\"." \
" please define your C compiler with 'export CCnemo=...'"
exit 1
fi
#
#-----------------------------------------------------
# CPP
#-----------------------------------------------------
#
CPPnemo=${CPPnemo:-cpp}
chk_which CPPnemo "pre-compiler"
echo_green "CPPnemo=$CPPnemo"
[ "$ftncomp" == "gnu" ] || [ "$ftncomp" == "cray" ] && CPPnemo="$CPPnemo -Dkey_nosignedzero"
[ $nompi -eq 1 ] && CPPnemo="$CPPnemo -Dkey_mpi_off"
#
#-----------------------------------------------------
# FCFLAGS
#-----------------------------------------------------
#
case "$ftncomp" in
intel)
PROD_FCFLAGS="-i4 -r8 -O3 -fp-model strict -xHost -fno-alias"
DEBUG_FCFLAGS="-i4 -r8 -g -O0 -debug all -traceback -fp-model strict -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge"
echo_orange "WARNING: We assume you will execute NEMO on the same machine you compiled it. " \
" If it is not the case, replace -xHost by the appropiate option in PROD_FCFLAGS"
;;
gnu)
PROD_FCFLAGS="-fdefault-real-8 -O3 -march=native -funroll-all-loops -fcray-pointer -ffree-line-length-none"
DEBUG_FCFLAGS="-fdefault-real-8 -Og -g -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all -finit-real=nan -ffpe-trap=invalid,zero,overflow -ffpe-summary=invalid,zero,overflow"
rev=$( $FCnemo --version | head -n 1 | sed -e "s/.* \([0-9]*\).*/\1/" )
# if gfortran version >= 10 : add -fallow-argument-mismatch
if [ $rev -ge 10 ]
then
PROD_FCFLAGS="$PROD_FCFLAGS -fallow-argument-mismatch"
DEBUG_FCFLAGS="$DEBUG_FCFLAGS -fallow-argument-mismatch"
fi
echo_orange "WARNING: We assume you will execute NEMO on the same machine you compiled it. " \
" If it is not the case, replace -march=native by the appropiate option in PROD_FCFLAGS"
;;
cray)
PROD_FCFLAGS="-s real64 -s integer32 -O2 -hflex_mp=intolerant"
DEBUG_FCFLAGS="-s real64 -s integer32 -Ovector0 -hfp0 -O0 -hflex_mp=intolerant -e mCI -G0 -m2 -rl -Rcdsp -N1023"
;;
*)
echo_red "ERROR: compilation options for $ftncomp are not defined..."
exit 1
;;
esac
#
#-----------------------------------------------------
# CFLAGS
#-----------------------------------------------------
#
case "${ftncomp}" in
gnu)
PROD_CFLAGS="-O0 -fcommon"
;;
*)
PROD_CFLAGS="-O0"
;;
esac
#
#-----------------------------------------------------
# XIOS and OASIS
#-----------------------------------------------------
#
if [ "$NETCDF_C_prefix" != "no" ]
then
# XIOS
XIOS_prefix=${XIOS_prefix:-notdef}
if [ "$XIOS_prefix" == "notdef" ]
then
echo_orange "WARNING: XIOS_prefix not specified" \
" either define it with 'export XIOS_prefix=...'" \
" or don't use key_xios when compiling nemo (-> you will not be able to use XIOS)."
XIOS_INC=""
XIOS_LIB=""
else
XIOS_INC="-I%XIOS_PREFIX/inc"
#XIOS_LIB="-L%XIOS_PREFIX/lib -lxios -lstdc++ -Wl,-rpath=%XIOS_PREFIX/lib"
XIOS_LIB="-L%XIOS_PREFIX/lib -lxios -lstdc++"
fi
# OASIS
OASIS_prefix=${OASIS_prefix:-notdef}
if [ "$OASIS_prefix" == "notdef" ]
then
echo_orange "WARNING: OASIS_prefix not specified" \
" either define it with 'export OASIS_prefix=...'" \
" or don't use key_oasis3 when compiling nemo (-> you will not be able to run coupled simulations)."
OASIS_INC=""
OASIS_LIB=""
else
OASIS_INC="-I%OASIS_PREFIX/build/lib/mct -I%OASIS_PREFIX/build/lib/psmile.MPI1"
OASIS_LIB="-L%OASIS_PREFIX/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip"
fi
fi
#
#-----------------------------------------------------
# make
#-----------------------------------------------------
#
MKnemo=${MKnemo:-make}
mkerr=$( err_which make )
gmkerr=$( err_which gmake )
if [ $( err_which $MKnemo ) -ne 0 ] # no make found
then
if [ $mkerr -eq 0 ] # make found
then
echo_orange "WARNING: $MKnemo not found, we switch to make"
MKnemo=make
else
if [ $gmkerr -ne 0 ] # gmake found
then
echo_orange "WARNING: $MKnemo not found, we switch to gmake"
MKnemo=gmake
else
echo_red "ERROR: gnu make not found, please define its path with 'export MKnemo=...'"
exit 1
fi
fi
fi
#
isgnu=$( $MKnemo --version | head -n 1 | grep -ic gnu ) # make is gmake
if [ $isgnu -ne 1 ]
then
if [ $gmkerr -ne 0 ] # gmake found
then
echo_orange "WARNING: $MKnemo is not gnu make, we switch to gmake"
MKnemo=gmake
else
echo_red "ERROR: $MKnemo is not gnu make and gmake not found." \
" please define gnu make path with 'export MKnemo=...'"
exit 1
fi
fi
echo_green "MKnemo=$MKnemo"
#
#-----------------------------------------------------
# ar command
#-----------------------------------------------------
#
ARnemo=${ARnemo:-ar}
chk_which ARnemo "archiver"
echo_green "ARnemo=$ARnemo"
#
#
#-----------------------------------------------------
#-----------------------------------------------------
# write arch file
#-----------------------------------------------------
#-----------------------------------------------------
#
#
archname=arch-auto.fcm
cat > $archname << EOF
#
# This arch file was automatically created by $0
# $( date )
#
%NCDF_C_PREFIX $NETCDF_C_prefix
%NCDF_F_PREFIX $NETCDF_F_prefix
%HDF5_PREFIX $HDF5_prefix
%XIOS_PREFIX $XIOS_prefix
%OASIS_PREFIX $OASIS_prefix
%NCDF_INC $NCDF_INC
%NCDF_LIB $NCDF_LIB
%XIOS_INC $XIOS_INC
%XIOS_LIB $XIOS_LIB
%OASIS_INC $OASIS_INC
%OASIS_LIB $OASIS_LIB
%CPP $CPPnemo
%FC $FCnemo
%FCFLAGS $PROD_FCFLAGS
### comment out the following line if you want to use the debugging compilation options
#%FCFLAGS $DEBUG_FCFLAGS
%FFLAGS %FCFLAGS
%LD %FC
%LDFLAGS -Wl,-rpath=%HDF5_PREFIX/lib -Wl,-rpath=%NCDF_F_PREFIX/lib -Wl,-rpath=%XIOS_PREFIX/lib
%FPPFLAGS -P -traditional
%AR $ARnemo
%ARFLAGS rs
%MK $MKnemo
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC $CCnemo
%CFLAGS $PROD_CFLAGS
EOF
#
# Additional module search command for Cray Fortran to enable successful parallel builds
if [ $ftncomp == "cray" ] ; then
echo "bld::tool::fc_modsearch -J" >> $archname
fi
#
echo
echo "Content of the created $archname:"
echo "-------------------------------------"
echo
cat $archname
echo
<!--
==============================================================================================
NEMO context
==============================================================================================
-->
<context id="nemo">
<!-- $id$ -->
<!-- Fields definition -->
<field_definition src="./field_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<field_definition src="./field_def_nemo-ice.xml"/> <!-- NEMO ocean sea ice -->
<!-- <field_definition src="./field_def_nemo-bgc.xml"/> --> <!-- NEMO ocean biogeochemistry with PISCES -->
<!-- Files definition -->
<file_definition src="./file_def_nemo-oce-BASIC.xml"/> <!-- NEMO ocean dynamics -->
<file_definition src="./file_def_nemo-ice-BASIC.xml"/> <!-- NEMO ocean sea ice -->
<!-- <file_definition src="./file_def_nemo-bgc.xml"/> --> <!-- NEMO ocean biogeochemistry with PISCES -->
<!--
============================================================================================================
= grid definition = = DO NOT CHANGE =
============================================================================================================
-->
<axis_definition>
<axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" />
<axis id="deptht300" axis_ref="deptht" >
<zoom_axis begin="0" n="35" />
</axis>
<axis id="depthu" long_name="Vertical U levels" unit="m" positive="down" />
<axis id="depthv" long_name="Vertical V levels" unit="m" positive="down" />
<axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" />
<axis id="nfloat" long_name="Float number" unit="-" />
<axis id="icbcla" long_name="Iceberg class" unit="1" />
<axis id="ncatice" long_name="Ice category" unit="1" />
<axis id="iax_20C" long_name="20 degC isotherm" unit="degC" />
<axis id="iax_28C" long_name="28 degC isotherm" unit="degC" />
<axis id="deptht_surface" axis_ref="deptht" >
<zoom_axis begin=" 0 " n=" 1 " />
</axis>
</axis_definition>
<domain_definition src="./domain_def_nemo.xml"/>
<grid_definition src="./grid_def_nemo.xml"/>
</context>
<!--
==============================================================================================
NEMO context
==============================================================================================
-->
<context id="nemo">
<!-- $id$ -->
<!-- Fields definition -->
<field_definition src="./field_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<field_definition src="./field_def_nemo-ice.xml"/> <!-- NEMO ocean sea ice -->
<!-- <field_definition src="./field_def_nemo-bgc.xml"/> <!-- NEMO ocean biogeochemistry with PISCES -->
<!-- Files definition -->
<file_definition src="./file_def_nemo-oce-CMIP6.xml"/> <!-- NEMO ocean dynamics -->
<file_definition src="./file_def_nemo-ice-CMIP6.xml"/> <!-- NEMO ocean sea ice -->
<!-- <file_definition src="./file_def_nemo-bgc.xml"/> <!-- NEMO ocean biogeochemistry with PISCES -->
<!--
============================================================================================================
= grid definition = = DO NOT CHANGE =
============================================================================================================
-->
<axis_definition>
<axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" />
<axis id="deptht300" axis_ref="deptht" >
<zoom_axis begin="0" n="35" />
</axis>
<axis id="depthu" long_name="Vertical U levels" unit="m" positive="down" />
<axis id="depthv" long_name="Vertical V levels" unit="m" positive="down" />
<axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" />
<axis id="nfloat" long_name="Float number" unit="-" />
<axis id="icbcla" long_name="Iceberg class" unit="1" />
<axis id="ncatice" long_name="Ice category" unit="1" />
<axis id="iax_20C" long_name="20 degC isotherm" unit="degC" />
<axis id="iax_28C" long_name="28 degC isotherm" unit="degC" />
<axis id="deptht_surface" axis_ref="deptht" >
<zoom_axis begin=" 0 " n=" 1 " />
</axis>
</axis_definition>
<domain_definition src="./domain_def_nemo.xml"/>
<grid_definition src="./grid_def_nemo.xml"/>
</context>
......@@ -6,12 +6,15 @@
<context id="nemo">
<!-- $id$ -->
<!-- Fields definition -->
<field_definition src="./field_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<field_definition src="./field_def_nemo-ice.xml"/> <!-- NEMO sea-ice model -->
<field_definition src="./field_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<field_definition src="./field_def_nemo-ice.xml"/> <!-- NEMO ocean sea ice -->
<!-- <field_definition src="./field_def_nemo-bgc.xml"/> <!-- NEMO ocean biogeochemistry with PISCES -->
<!-- Files definition -->
<file_definition src="./file_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<file_definition src="./file_def_nemo-ice.xml"/> <!-- NEMO sea-ice model -->
<file_definition src="./file_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics -->
<file_definition src="./file_def_nemo-ice.xml"/> <!-- NEMO ocean sea ice -->
<!-- <file_definition src="./file_def_nemo-bgc.xml"/> <!-- NEMO ocean biogeochemistry with PISCES -->
<!--
============================================================================================================
= grid definition = = DO NOT CHANGE =
......@@ -20,22 +23,24 @@
<axis_definition>
<axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" />
<axis id="deptht300" axis_ref="deptht" >
<zoom_axis begin="0" n="35" />
</axis>
<axis id="depthu" long_name="Vertical U levels" unit="m" positive="down" />
<axis id="depthv" long_name="Vertical V levels" unit="m" positive="down" />
<axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" />
<axis id="profsed" long_name="Vertical S levels" unit="cm" positive="down" />
<axis id="nfloat" long_name="Float number" unit="-" />
<axis id="icbcla" long_name="Iceberg class" unit="1" />
<axis id="ncatice" long_name="Ice category" unit="1" />
<axis id="iax_20C" long_name="20 degC isotherm" unit="degC" />
<axis id="iax_28C" long_name="28 degC isotherm" unit="degC" />
<!-- ABL vertical axis definition -->
<axis id="ght_abl" long_name="ABL Vertical T levels" unit="m" positive="up" />
<axis id="ghw_abl" long_name="ABL Vertical W levels" unit="m" positive="up" />
<axis id="deptht_surface" axis_ref="deptht" >
<zoom_axis begin=" 0 " n=" 1 " />
</axis>
</axis_definition>
<domain_definition src="./domain_def_nemo.xml"/>
<grid_definition src="./grid_def_nemo.xml"/>
</context>
<?xml version="1.0"?>
<!-- $id$ -->
<!--
============================================================================================================
= output files definition =
= Define your own files for sea ice =
= put the variables you want... =
============================================================================================================
-->
<file_definition type="one_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="1mo" min_digits="4">
<file_group id="10d" output_freq="10d" output_level="10" enabled=".TRUE."> <!-- 10d files -->
<file id="file21" name_suffix="_icemod" description="ice variables" enabled=".true." >
<!-- ice mask -->
<field field_ref="icemask" name="simsk" />
<field field_ref="icemask05" name="simsk05" />
<field field_ref="icemask15" name="simsk15" />
<!-- general -->
<field field_ref="snwvolu" name="snvolu" />
<field field_ref="icethic" name="sithic" />
<field field_ref="icevolu" name="sivolu" />
<field field_ref="iceconc" name="siconc" />
<field field_ref="icesalt" name="sisali" />
<field field_ref="iceapnd" name="siapnd" />
<field field_ref="icevpnd" name="sivpnd" />
<field field_ref="iceepnd" name="siepnd" />
<field field_ref="icevlid" name="sivlid" />
<!-- sst_m is always the potential temperature even when using teos10 -->
<field field_ref="sst_m_pot" name="sst_m_pot" />
<field field_ref="sss_m_abs" name="sss_m_abs" />
<!-- heat -->
<field field_ref="icetemp" name="sitemp" />
<field field_ref="icettop" name="sittop" />
<field field_ref="icetbot" name="sitbot" />
<field field_ref="icetsni" name="sitsni" />
<!-- ponds -->
<field field_ref="dvpn_mlt" name="dvpn_mlt" />
<field field_ref="dvpn_lid" name="dvpn_lid" />
<field field_ref="dvpn_rnf" name="dvpn_rnf" />
<field field_ref="dvpn_drn" name="dvpn_drn" />
<!-- momentum -->
<field field_ref="uice" name="sivelu" />
<field field_ref="vice" name="sivelv" />
<field field_ref="icevel" name="sivelo" />
<field field_ref="utau_ai" name="utau_ai" />
<field field_ref="vtau_ai" name="vtau_ai" />
<field field_ref="utau_oi" name="utau_oi" />
<field field_ref="vtau_oi" name="vtau_oi" />
<!-- rheology -->
<field field_ref="icediv" name="sidive" />
<field field_ref="iceshe" name="sishea" />
<field field_ref="icestr" name="sistre" />
<field field_ref="normstr" name="normstr" />
<field field_ref="sheastr" name="sheastr" />
<field field_ref="isig1" name="isig1" />
<field field_ref="isig2" name="isig2" />
<field field_ref="isig3" name="isig3" />
<!-- heat fluxes -->
<field field_ref="qt_oce_ai" name="qt_oce_ai" />
<field field_ref="qt_atm_oi" name="qt_atm_oi" />
<field field_ref="qtr_ice_top" name="qtr_ice_top"/>
<field field_ref="qtr_ice_bot" name="qtr_ice_bot"/>
<field field_ref="qt_ice" name="qt_ice" />
<field field_ref="qsr_ice" name="qsr_ice" />
<field field_ref="qns_ice" name="qns_ice" />
<field field_ref="qemp_ice" name="qemp_ice" />
<field field_ref="albedo" name="albedo" />
<field field_ref="hfxcndtop" name="hfxcndtop" />
<field field_ref="hfxcndbot" name="hfxcndbot" />
<field field_ref="hfxsensib" name="hfxsensib" />
<!-- salt fluxes -->
<field field_ref="sfxice" name="sfxice" />
<!-- mass fluxes -->
<field field_ref="vfxice" name="vfxice" />
<field field_ref="vfxsnw" name="vfxsnw" />
<!-- categories -->
<field field_ref="icemask_cat" name="simskcat"/>
<field field_ref="snwthic_cat" name="snthicat"/>
<field field_ref="iceconc_cat" name="siconcat"/>
<field field_ref="icethic_cat" name="sithicat"/>
<field field_ref="icesalt_cat" name="sisalcat"/>
<field field_ref="icetemp_cat" name="sitemcat"/>
<field field_ref="iceapnd_cat" name="siapncat"/>
<field field_ref="icevpnd_cat" name="sivpncat"/>
<field field_ref="snwtemp_cat" name="sntemcat"/>
<!-- mass balance -->
<field field_ref="dmithd" name="sidmassth" />
<field field_ref="dmidyn" name="sidmassdyn" />
<field field_ref="dmiopw" name="sidmassgrowthwat" />
<field field_ref="dmibog" name="sidmassgrowthbot" />
<field field_ref="dmisni" name="sidmasssi" />
<field field_ref="dmisub" name="sidmassevapsubl" />
<field field_ref="dmisum" name="sidmassmelttop" />
<field field_ref="dmibom" name="sidmassmeltbot" />
<field field_ref="dmilam" name="sidmassmeltlat" />
<field field_ref="dmsspr" name="sndmasssnf" />
<field field_ref="dmsmel" name="sndmassmelt" />
<field field_ref="dmssub" name="sndmasssubl" />
<field field_ref="dmsdyn" name="sndmassdyn" />
<field field_ref="dmsssi" name="sndmasssi" />
</file>
<file id="file22" name_suffix="_SBC_scalar" description="scalar variables" enabled=".true." >
<!-- global contents -->
<field field_ref="ibgvol_tot" name="ibgvol_tot" />
<field field_ref="sbgvol_tot" name="sbgvol_tot" />
<field field_ref="ibgarea_tot" name="ibgarea_tot" />
<field field_ref="ibgsalt_tot" name="ibgsalt_tot" />
<field field_ref="ibgheat_tot" name="ibgheat_tot" />
<field field_ref="sbgheat_tot" name="sbgheat_tot" />
<!-- global drifts (conservation checks) -->
<field field_ref="ibgvolume" name="ibgvolume" />
<field field_ref="ibgsaltco" name="ibgsaltco" />
<field field_ref="ibgheatco" name="ibgheatco" />
<field field_ref="ibgheatfx" name="ibgheatfx" />
<!-- global forcings -->
<field field_ref="ibgfrcvoltop" name="ibgfrcvoltop" />
<field field_ref="ibgfrcvolbot" name="ibgfrcvolbot" />
<field field_ref="ibgfrctemtop" name="ibgfrctemtop" />
<field field_ref="ibgfrctembot" name="ibgfrctembot" />
<field field_ref="ibgfrcsal" name="ibgfrcsal" />
<field field_ref="ibgfrchfxtop" name="ibgfrchfxtop" />
<field field_ref="ibgfrchfxbot" name="ibgfrchfxbot" />
</file>
</file_group>
<file_group id="1ts" output_freq="1ts" output_level="10" enabled=".TRUE."/> <!-- 1 time step files -->
<file_group id="1h" output_freq="1h" output_level="10" enabled=".TRUE."/> <!-- 1h files -->
<file_group id="2h" output_freq="2h" output_level="10" enabled=".TRUE."/> <!-- 2h files -->
<file_group id="3h" output_freq="3h" output_level="10" enabled=".TRUE."/> <!-- 3h files -->
<file_group id="4h" output_freq="4h" output_level="10" enabled=".TRUE."/> <!-- 4h files -->
<file_group id="6h" output_freq="6h" output_level="10" enabled=".TRUE."/> <!-- 6h files -->
<file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."/> <!-- real monthly files -->
<file_group id="2m" output_freq="2mo" output_level="10" enabled=".TRUE."/> <!-- real 2m files -->
<file_group id="3m" output_freq="3mo" output_level="10" enabled=".TRUE."/> <!-- real 3m files -->
<file_group id="4m" output_freq="4mo" output_level="10" enabled=".TRUE."/> <!-- real 4m files -->
<file_group id="6m" output_freq="6mo" output_level="10" enabled=".TRUE."/> <!-- real 6m files -->
<file_group id="1y" output_freq="1y" output_level="10" enabled=".TRUE."/> <!-- real yearly files -->
<file_group id="2y" output_freq="2y" output_level="10" enabled=".TRUE."/> <!-- real 2y files -->
<file_group id="5y" output_freq="5y" output_level="10" enabled=".TRUE."/> <!-- real 5y files -->
<file_group id="10y" output_freq="10y" output_level="10" enabled=".TRUE."/> <!-- real 10y files -->
</file_definition>
......@@ -11,7 +11,7 @@
<file_definition type="one_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="1mo" min_digits="4">
<file_group id="5d" output_freq="5d" output_level="10" enabled=".TRUE."> <!-- 5d files -->
<file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."> <!-- 1m files -->
<file id="file21" name_suffix="_icemod" description="ice variables" enabled=".true." >
<!-- ice mask -->
......@@ -27,15 +27,23 @@
<field field_ref="icesalt" name="sisali" />
<field field_ref="iceapnd" name="siapnd" />
<field field_ref="icevpnd" name="sivpnd" />
<field field_ref="sst_m" name="sst_m" />
<field field_ref="sss_m" name="sss_m" />
<field field_ref="iceepnd" name="siepnd" />
<field field_ref="icevlid" name="sivlid" />
<!-- sst_m is always the potential temperature even when using teos10 -->
<field field_ref="sst_m_pot" name="sst_m_pot" />
<field field_ref="sss_m_abs" name="sss_m_abs" />
<!-- heat -->
<field field_ref="icetemp" name="sitemp" />
<field field_ref="snwtemp" name="sntemp" />
<field field_ref="icettop" name="sittop" />
<field field_ref="icetbot" name="sitbot" />
<field field_ref="icetsni" name="sitsni" />
<!-- ponds -->
<field field_ref="dvpn_mlt" name="dvpn_mlt" />
<field field_ref="dvpn_lid" name="dvpn_lid" />
<field field_ref="dvpn_rnf" name="dvpn_rnf" />
<field field_ref="dvpn_drn" name="dvpn_drn" />
<!-- momentum -->
<field field_ref="uice" name="sivelu" />
......@@ -52,8 +60,8 @@
<field field_ref="icestr" name="sistre" />
<field field_ref="normstr" name="normstr" />
<field field_ref="sheastr" name="sheastr" />
<field field_ref="sig1_pnorm" name="sig1_pnorm"/>
<field field_ref="sig2_pnorm" name="sig2_pnorm"/>
<field field_ref="sig1_pnorm" name="isig1" />
<field field_ref="sig2_pnorm" name="isig2" />
<!-- heat fluxes -->
<field field_ref="qt_oce_ai" name="qt_oce_ai" />
......@@ -84,34 +92,51 @@
<field field_ref="icethic_cat" name="sithicat"/>
<field field_ref="icesalt_cat" name="sisalcat"/>
<field field_ref="icetemp_cat" name="sitemcat"/>
<field field_ref="iceapnd_cat" name="siapncat"/>
<field field_ref="icevpnd_cat" name="sivpncat"/>
<field field_ref="snwtemp_cat" name="sntemcat"/>
<field field_ref="icettop_cat" name="sitopcat"/>
<!-- mass balance -->
<field field_ref="dmithd" name="sidmassth" />
<field field_ref="dmidyn" name="sidmassdyn" />
<field field_ref="dmiopw" name="sidmassgrowthwat" />
<field field_ref="dmibog" name="sidmassgrowthbot" />
<field field_ref="dmisni" name="sidmasssi" />
<field field_ref="dmisub" name="sidmassevapsubl" />
<field field_ref="dmisum" name="sidmassmelttop" />
<field field_ref="dmibom" name="sidmassmeltbot" />
<field field_ref="dmilam" name="sidmassmeltlat" />
<field field_ref="dmsspr" name="sndmasssnf" />
<field field_ref="dmsmel" name="sndmassmelt" />
<field field_ref="dmssub" name="sndmasssubl" />
<field field_ref="dmsdyn" name="sndmassdyn" />
<field field_ref="dmsssi" name="sndmasssi" />
</file>
<file id="file22" name_suffix="_SBC_scalar" description="scalar variables" enabled=".true." >
<!-- global contents -->
<field field_ref="ibgvol_tot" name="ibgvol_tot" />
<field field_ref="sbgvol_tot" name="sbgvol_tot" />
<field field_ref="ibgarea_tot" name="ibgarea_tot" />
<field field_ref="ibgsalt_tot" name="ibgsalt_tot" />
<field field_ref="ibgheat_tot" name="ibgheat_tot" />
<field field_ref="sbgheat_tot" name="sbgheat_tot" />
<field field_ref="ibgvol_tot" name="ibgvol_tot" />
<field field_ref="sbgvol_tot" name="sbgvol_tot" />
<field field_ref="ibgarea_tot" name="ibgarea_tot" />
<field field_ref="ibgsalt_tot" name="ibgsalt_tot" />
<field field_ref="ibgheat_tot" name="ibgheat_tot" />
<field field_ref="sbgheat_tot" name="sbgheat_tot" />
<!-- global drifts (conservation checks) -->
<field field_ref="ibgvolume" name="ibgvolume" />
<field field_ref="ibgsaltco" name="ibgsaltco" />
<field field_ref="ibgheatco" name="ibgheatco" />
<field field_ref="ibgheatfx" name="ibgheatfx" />
<field field_ref="ibgvolume" name="ibgvolume" />
<field field_ref="ibgsaltco" name="ibgsaltco" />
<field field_ref="ibgheatco" name="ibgheatco" />
<field field_ref="ibgheatfx" name="ibgheatfx" />
<!-- global forcings -->
<field field_ref="ibgfrcvoltop" name="ibgfrcvoltop" />
<field field_ref="ibgfrcvolbot" name="ibgfrcvolbot" />
<field field_ref="ibgfrctemtop" name="ibgfrctemtop" />
<field field_ref="ibgfrctembot" name="ibgfrctembot" />
<field field_ref="ibgfrcsal" name="ibgfrcsal" />
<field field_ref="ibgfrchfxtop" name="ibgfrchfxtop" />
<field field_ref="ibgfrchfxbot" name="ibgfrchfxbot" />
<field field_ref="ibgfrcvoltop" name="ibgfrcvoltop" />
<field field_ref="ibgfrcvolbot" name="ibgfrcvolbot" />
<field field_ref="ibgfrctemtop" name="ibgfrctemtop" />
<field field_ref="ibgfrctembot" name="ibgfrctembot" />
<field field_ref="ibgfrcsal" name="ibgfrcsal" />
<field field_ref="ibgfrchfxtop" name="ibgfrchfxtop" />
<field field_ref="ibgfrchfxbot" name="ibgfrchfxbot" />
</file>
</file_group>
......
You can't use the standard diagnostic options with the current cycling period.
Choose the "Custom" option, copy the file_def*.xml files that
you want to use into the Rose app and adjust the meaning period
accordingly.