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
  • nemo/nemo
  • sparonuz/nemo
  • hatfield/nemo
  • extdevs/nemo
4 results
Show changes
Showing
with 994 additions and 119 deletions
# compiler options for BELENOS/TARANIS (using INTEL compiler)
#
# 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 (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
#
# compiler options for BELENOS/TARANIS (using INTEL compiler + Open MPI)
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
......@@ -44,12 +37,15 @@
%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}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_INC -I${OASIS_DIR}/build-static/mct -I${OASIS_DIR}/build-static/lib/psmile.MPI1
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC mpiifort -c -cpp
%FCFLAGS -march=core-avx2 -i4 -r8 -O3 -fp-model strict -fno-alias -align array64byte
%BASE_FCFLAGS -march=core-avx2 -i4 -r8 -fp-model strict -fno-alias -align array64byte
%PROD_FCFLAGS %BASE_FCFLAGS -O3
%DEBUG_FCFLAGS %BASE_FCFLAGS -O0 -g -debug all -traceback -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge
%FFLAGS %FCFLAGS
%LD mpiifort
%LDFLAGS
......@@ -60,5 +56,5 @@
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC mpiicc
%CFLAGS -O0
%CC gcc
%CFLAGS -O0 -fcommon
if ! grep -qi xios <<< $(module list 2>&1); then
module purge
module use /home/ext/mr/smer/samsong/modules
module load git/2.27.0 gcc/9.2.0 intel/2018.5.274 openmpi/intel/4.0.2.2 hdf5/1.8.18-ompi netcdf/4.7.1-ompi_V2 xios/trunk/r2515_intel-ompi &> /dev/null
export OMPI_CC=icc
export OMPI_CXX=icpc
export OMPI_FC=ifort
export OMPI_F77=ifort
export OMPI_F90=ifort
if ! grep -qi xios <<< $(module list 2>&1); then echo 'module error'; exit 1; fi
else
echo 'xios module already loaded'
fi
module list
# compiler options for BELENOS/TARANIS (using INTEL compiler)
#
# INTEL_OMPI (XIOS-2.5)
# intel/2018.5.274 openmpi/intel/4.0.2.2 hdf5-1.8.18-ompi netcdf-4.7.1-ompi_V2 xios-2.5_rev1903-ompi
#
# INTEL_MVAPICH2 (XIOS-2.5)
# intel/2018.5.274 mvapich2-2.3.5 hdf5-1.8.18-mvapich2 netcdf-4.7.1-mvapich2 xios-2.5_rev1903-mvapich2
#
# compiler options for BELENOS/TARANIS (using INTEL compiler + Open MPI)
#
# NCDF_INC netcdf4 include file
# NCDF_LIB netcdf4 library
......@@ -44,12 +37,15 @@
%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}/build/lib/mct -I${OASIS_DIR}/build/lib/psmile.MPI1
%OASIS_INC -I${OASIS_DIR}/build-static/mct -I${OASIS_DIR}/build-static/lib/psmile.MPI1
%OASIS_LIB -L${OASIS_DIR}/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC mpifort -c -cpp
%FCFLAGS -march=core-avx2 -i4 -r8 -O3 -fp-model strict -fno-alias -align array64byte
%BASE_FCFLAGS -march=core-avx2 -i4 -r8 -fp-model strict -fno-alias -align array64byte
%PROD_FCFLAGS %BASE_FCFLAGS -O3
%DEBUG_FCFLAGS %BASE_FCFLAGS -O0 -g -debug all -traceback -ftrapuv -check all,noarg_temp_created -fpe-all0 -ftz -init=arrays,snan,huge
%FFLAGS %FCFLAGS
%LD mpifort
%LDFLAGS
......@@ -60,5 +56,5 @@
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC mpicc
%CFLAGS -O0
%CC gcc
%CFLAGS -O0 -fcommon
......@@ -49,8 +49,9 @@
%CPP cpp -Dkey_nosignedzero
%FC mpif90 -c -cpp
#%FCFLAGS -fdefault-real-8 -O2 -ftree-vectorize -funroll-all-loops -march=skylake-avx512 -ffree-line-length-none -Wno-missing-include-dirs
%FCFLAGS -fdefault-real-8 -O1 -march=skylake-avx512 -ffree-line-length-none -Wno-missing-include-dirs
#%PROD_FCFLAGS -fdefault-real-8 -O2 -ftree-vectorize -funroll-all-loops -march=skylake-avx512 -ffree-line-length-none -Wno-missing-include-dirs
%PROD_FCFLAGS -fdefault-real-8 -O2 -ffp-contract=off -march=skylake-avx512 -ffree-line-length-none -Wno-missing-include-dirs
%DEBUG_FCFLAGS -fdefault-real-8 -O0 -g -fbacktrace -ftree-vectorize -funroll-all-loops -march=skylake-avx512 -ffree-line-length-none -fcheck=all -finit-real=snan -Wno-missing-include-dirs -ffpe-trap=invalid,zero,overflow
%FFLAGS %FCFLAGS
%LD mpif90
%LDFLAGS -lstdc++
......
# generic ifort compiler options for linux
#
# NCDF_HOME root directory containing lib and include subdirectories for netcdf4
# HDF5_HOME root directory containing lib and include subdirectories for HDF5
# XIOS_HOME root directory containing lib for XIOS
# OASIS_HOME root directory containing lib for OASIS
#
# 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 $)
#
%NCDF_HOME $EBROOTNETCDF
%HDF5_HOME $EBROOTHDF5
%XIOS_HOME /home/acc/xios3-trunk
#%OASIS_HOME /not/defined
%NCDF_INC -I%NCDF_HOME/include
%NCDF_LIB -L%NCDF_HOME/lib -lnetcdff -lnetcdf -L%HDF5_HOME/lib -lhdf5_hl -lhdf5 -lhdf5
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
#%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIB
%OASIS_INC
#%OASIS_LIB -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_xios3
%FC mpiifort -c -fpp -fpp-name:/opt/software/eb/software/GCCcore/11.2.0/bin/cpp -Wp,-P,-traditional
%PROD_FCFLAGS -i4 -r8 -O3 -fp-model precise -fno-alias
%DEBUG_FCFLAGS -i4 -r8 -g -fp-trap=common -traceback -fp-model precise -fno-alias
%FFLAGS %FCFLAGS
%LD mpiifort
%LDFLAGS
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK gmake
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC cc -Wl,--allow-multiple-definition
%CFLAGS -O0
# generic ifort compiler options for linux
#
# NCDF_HOME root directory containing lib and include subdirectories for netcdf4
# HDF5_HOME root directory containing lib and include subdirectories for HDF5
# XIOS_HOME root directory containing lib for XIOS
# OASIS_HOME root directory containing lib for OASIS
#
# 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 $)
#
%NCDF_HOME $EBROOTNETCDF
%HDF5_HOME $EBROOTHDF5
%XIOS_HOME /home/acc/xios-trunk
#%OASIS_HOME /not/defined
%NCDF_INC -I%NCDF_HOME/include
%NCDF_LIB -L%NCDF_HOME/lib -lnetcdff -lnetcdf -L%HDF5_HOME/lib -lhdf5_hl -lhdf5 -lhdf5
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
#%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIB
%OASIS_INC
#%OASIS_LIB -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC mpiifort -c -fpp -fpp-name:/opt/software/eb/software/GCCcore/11.2.0/bin/cpp -Wp,-P,-traditional
%PROD_FCFLAGS -i4 -r8 -O3 -fp-model precise -fno-alias
%DEBUG_FCFLAGS -i4 -r8 -g -fp-trap=common -traceback -fp-model precise -fno-alias
%FFLAGS %FCFLAGS
%LD mpiifort
%LDFLAGS
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK gmake
%USER_INC %XIOS_INC %OASIS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %OASIS_LIB %NCDF_LIB
%CC cc -Wl,--allow-multiple-definition
%CFLAGS -O0
......@@ -44,8 +44,9 @@
%CPP cpp -Dkey_nosignedzero
%FC ftn
%FCFLAGS -em -s integer32 -s real64 -O0 -hflex_mp=intolerant -N1023
%FFLAGS -em -s integer32 -s real64 -O0 -hflex_mp=intolerant -N1023
%PROD_FCFLAGS -em -s integer32 -s real64 -O2 -hvector_classic -hflex_mp=intolerant -N1023 -M878
%DEBUG_FCFLAGS -em -s integer32 -s real64 -O0 -hvector_classic -hflex_mp=intolerant -N1023 -M878 -hfp0 -e mCI -G0 -m2 -rl -Rcdsp
%FFLAGS %FCFLAGS
%LD CC -Wl,"--allow-multiple-definition"
%FPPFLAGS -P -traditional
%LDFLAGS -lmpifort_cray
......
# compiler options for Archer CRAY XC-30 (using crayftn compiler)
# compiler options for Archer2 CRAY XC-30 (using GNU compiler)
#
# NCDF_HOME root directory containing lib and include subdirectories for netcdf4
# HDF5_HOME root directory containing lib and include subdirectories for HDF5
......@@ -32,7 +32,7 @@
#
%NCDF_HOME $NETCDF_DIR
%HDF5_HOME $HDF5_DIR
%XIOS_HOME /work/n01/shared/nemo/xios-trunk
%XIOS_HOME /work/n01/shared/nemo/xios-trunk-gnu
#OASIS_HOME
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
......@@ -44,13 +44,13 @@
%CPP cpp -Dkey_nosignedzero
%FC ftn
%FCFLAGS -s real64 -s integer32 -Ovector0 -hfp0 -O0 -hflex_mp=intolerant -e mCI -G0 -m2 -rl -Rcdsp -N1023
%FFLAGS -s real64 -s integer32 -Ovector0 -hfp0 -O0 -hflex_mp=intolerant -e mCI -G0 -m2 -rl -Rcdsp -N1023
%LD CC -Wl,"--allow-multiple-definition"
%FCFLAGS -fdefault-real-8 -O0 -g -fallow-argument-mismatch -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all -finit-real=nan
%FFLAGS %FCFLAGS
%LD CC
%FPPFLAGS -P -traditional
%LDFLAGS -lmpifort_cray
%LDFLAGS -lmpichf90
%AR ar
%ARFLAGS -r
%ARFLAGS rs
%MK gmake
%USER_INC %XIOS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %NCDF_LIB
......
# compiler options for Archer CRAY XC-40 (using crayftn compiler)
#
# NCDF_HOME root directory containing lib and include subdirectories for netcdf4
# HDF5_HOME root directory containing lib and include subdirectories for HDF5
# XIOS_HOME root directory containing lib for XIOS
# OASIS_HOME root directory containing lib for OASIS
#
# 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 $)
#
# This arch file depends on loading XIOS-PrgEnv/2.0/24708
%NCDF_HOME $NETCDF_DIR
%HDF5_HOME $HDF5_DIR
%XIOS_HOME $xios_path
%OASIS_HOME $prism_path
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
%NCDF_LIB -L%HDF5_HOME/lib -L%NCDF_HOME/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIBDIR -L%OASIS_HOME/lib
%OASIS_LIB -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp
%FC ftn
%FCFLAGS -r8 -i4 -init=arrays,snan,huge -traceback -debug all -debug inline-debug-info -g -O0 -fp-model strict -check all,noarg_temp_created -fpe-all0 -ftz -ftrapuv
%FFLAGS %FCFLAGS
%LD ftn
%FPPFLAGS -P -E -traditional-cpp
%LDFLAGS -hbyteswapio
%AR ar
%ARFLAGS -r
%MK gmake
%USER_INC %NCDF_INC %XIOS_INC
%USER_LIB %NCDF_LIB %XIOS_LIB
%CC cc
%CFLAGS -O0
# generic gfortran compiler options for linux
#
# NCDF_HOME root directory containing lib and include subdirectories for netcdf4
# HDF5_HOME root directory containing lib and include subdirectories for HDF5
# XIOS_HOME root directory containing lib for XIOS
# OASIS_HOME root directory containing lib for OASIS
#
# 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 $)
#
# =======================================================================================
# The following envirnment was used to compile NEMO with this arch file on a UKMO VDI:
#
# module purge
# module load libraries/gcc/6.4.0
# module load gcc/6.4.0
# module load mpi/mpich/3.2.1/gnu/6.4.0
# module load hdf5/1.8.20/gnu/6.4.0
# module load netcdf/4.6.1/gnu/6.4.0
# module load xios/r1063/gnu/6.4.0
# module list
# export xios_path=/project/ukmo/rhel7/fortran/opt/gfortran/packages/gnu/6.4.0/xios/r1063
# =======================================================================================
%NCDF_HOME $NETCDF_DIR
%HDF5_HOME $HDF5_DIR
%XIOS_HOME $xios_path
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
%NCDF_LIB -L%NCDF_HOME/lib -lnetcdff -lnetcdf
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIB -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_nosignedzero
%FC mpif90 -c -cpp
%FCFLAGS -fdefault-real-8 -O3 -funroll-all-loops -fcray-pointer -ffree-line-length-none
%FFLAGS %FCFLAGS
%LD mpif90
%LDFLAGS
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK make
%USER_INC %XIOS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %NCDF_LIB
%CC cc
%CFLAGS -O0
......@@ -30,32 +30,31 @@
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
%NCDF_HOME /usr/local/netcdf
%HDF5_HOME /usr/local/hdf5
%XIOS_HOME $HOME/xios-2.5
%OASIS_HOME /not/defined
#%HDF5_HOME $HOME/MODNUM/util/hdf5-1.8.13
#%NCDF_C_HOME $HOME/MODNUM/util/netcdf-c-4.3.3.1
#%NCDF_F_HOME $HOME/MODNUM/util/netcdf-fortran-4.4.2
#%XIOS_HOME $HOME/MODNUM/xios-trunk
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
%NCDF_LIB -L%NCDF_HOME/lib -lnetcdff -lnetcdf
%NCDF_INC -I%NCDF_F_HOME/include -I%NCDF_C_HOME/include -I%HDF5_HOME/include
%NCDF_LIB -L%NCDF_F_HOME/lib -lnetcdff -L%NCDF_C_HOME/lib -lnetcdf
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -L/usr/lib/gcc/x86_64-linux-gnu/5 -lstdc++
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIB -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_nosignedzero
%FC /usr/bin/mpif90 -c -cpp
%FC mpif90 -c -cpp
%FCFLAGS -fdefault-real-8 -O3 -funroll-all-loops -fcray-pointer -ffree-line-length-none
%FFLAGS %FCFLAGS
#%LD /usr/bin/mpif90 -Wl,-rpath=$HOME/INSTALL/lib:/usr/lib
%LD /usr/bin/mpif90
%LD mpif90
%LDFLAGS
%FPPFLAGS -P -C -traditional
%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
%USER_INC %XIOS_INC %NCDF_INC
%USER_LIB %XIOS_LIB %NCDF_LIB
%CC cc
%CFLAGS -O0
......@@ -48,7 +48,7 @@
%FFLAGS %FCFLAGS
%LD ftn
%LDFLAGS
%FPPFLAGS -P -C -traditional
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS rs
%MK gmake
......
......@@ -20,7 +20,7 @@
%FCFLAGS -r8 -O3 -traceback -openmp
%FFLAGS -r8 -O3 -traceback -openmp
%LD ifort
%FPPFLAGS -P -C -traditional
%FPPFLAGS -P -traditional
%LDFLAGS
%AR ar
%ARFLAGS -r
......
......@@ -21,7 +21,7 @@
%FFLAGS %FCFLAGS
%LD pgf90
%LDFLAGS
%FPPFLAGS -P -C -traditional
%FPPFLAGS -P -traditional
%AR ar
%ARFLAGS -rs
%MK gmake
......
......@@ -23,7 +23,7 @@
#
%NCDF_HOME /opt/local
%HDF5_HOME /opt/local
%XIOS_HOME /Users/$( whoami )/xios-2.5
%XIOS_HOME /Users/$( whoami )/xios-trunk
%OASIS_HOME /not/defined
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
......@@ -35,7 +35,8 @@
%CPP cpp -Dkey_nosignedzero
%FC mpif90
%FCFLAGS -fdefault-real-8 -O3 -funroll-all-loops -fcray-pointer -ffree-line-length-none
%PROD_FCFLAGS -fdefault-real-8 -O3 -funroll-all-loops -fcray-pointer -ffree-line-length-none -fallow-argument-mismatch
%DEBUG_FCFLAGS -fdefault-real-8 -O0 -g -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all -finit-real=nan -fallow-argument-mismatch
%FFLAGS %FCFLAGS
%LD %FC
%LDFLAGS
......
# generic gfortran compiler options for OSX installed with macport, http://www.macports.org/
#
# Prerequisite softwares installed with MacPorts :
# Prerequisite softwares installed with MacPorts :
# sudo port install gcc9
# sudo port install gcc_select
# sudo port select --set gcc mp-gcc9
# sudo port install mpich-gcc9
# sudo port install mpi_select
# sudo port select --set mpi mpich-gcc9-fortran
# sudo port install hdf5 +gcc9 +mpich +szip
# sudo port install netcdf +gcc9 +mpich
# sudo port install netcdf-fortran +gcc9 +mpich
# sudo port install p5.30-uri
#
# $ port select --show mpi
# The currently selected version for 'mpi' is 'mpich-gcc9-fortran'.
# $ port select --show gcc
# The currently selected version for 'gcc' is 'mp-gcc9'.
#
# Note that:
# - unix variables "$..." are accpeted and will be evaluated before calling fcm.
# - fcm variables are starting with a % (and not a $)
#
%NCDF_HOME /opt/local
%HDF5_HOME /opt/local
%XIOS_HOME /Users/$( whoami )/xios-2.5
%OASIS_HOME /not/defined
%NCDF_INC -I%NCDF_HOME/include -I%HDF5_HOME/include
%NCDF_LIB -L%NCDF_HOME/lib -lnetcdff -lnetcdf
%XIOS_INC -I%XIOS_HOME/inc
%XIOS_LIB -L%XIOS_HOME/lib -lxios -lstdc++
%OASIS_INC -I%OASIS_HOME/build/lib/mct -I%OASIS_HOME/build/lib/psmile.MPI1
%OASIS_LIB -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip
%CPP cpp -Dkey_nosignedzero
%FC mpif90
%FCFLAGS -fdefault-real-8 -O0 -g -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all -finit-real=nan
%FFLAGS %FCFLAGS
%LD %FC
%LDFLAGS
%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 cc
%CFLAGS -O0
#!/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
PSYCLONE_prefix : path to a PSyclone installation; also configurable with argument '--PSYCLONE_prefix <path>'
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 ;;
--psyclone_prefix) PSYCLONE_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=$( $NF_CONFIG --fc ) # use nf-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 -march=native -O2 -fno-expensive-optimizations -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="-em -s real64 -s integer32 -O2 -hvector_classic -hflex_mp=intolerant -N1023 -M878"
DEBUG_FCFLAGS="-s real64 -s integer32 -O0 -hvector_classic -hflex_mp=intolerant -N1023 -M878 -hfp0 -e mCI -G0 -m2 -rl -Rcdsp"
;;
*)
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
#
#-----------------------------------------------------
# PSyclone
#-----------------------------------------------------
#
PSYCLONE_prefix=${PSYCLONE_prefix:-notdef}
if [ "${PSYCLONE_prefix}" == "notdef" ]; then
if [ $( err_which psyclone ) -eq 0 ]; then
PSYCLONE_cmd=`which psyclone`
PSYCLONE_prefix=${PSYCLONE_cmd%/bin/psyclone}
if [ "${PSYCLONE_prefix}/bin/psyclone" == "${PSYCLONE_cmd}" ]; then
echo_green "PSYCLONE_prefix=${PSYCLONE_prefix}"
else
PSYCLONE_prefix="notdef"
fi
fi
fi
if [ "${PSYCLONE_prefix}" == "notdef" ]; then
echo_orange "WARNING: PSYCLONE_prefix is not specified (only required for PSyclone processing)"
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
%PSYCLONE_HOME $PSYCLONE_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
%PROD_FCFLAGS $PROD_FCFLAGS
%DEBUG_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
......@@ -20,7 +20,7 @@
%FFLAGS %FCFLAGS
%LD scorep-mpiifort
%LDFLAGS -lstdc++
%FPPFLAGS -P -C -traditional -std=c99
%FPPFLAGS -P -traditional -std=c99
%AR ar
%ARFLAGS rs
%MK gmake
......
......@@ -4,7 +4,7 @@
==============================================================================================
-->
<context id="nemo">
<!-- $id$ -->
<variable_definition>
<!-- Year/Month/Day of time origin for NetCDF files; defaults to 1800-01-01 -->
<variable id="ref_year" type="int"> 1900 </variable>
......@@ -24,10 +24,8 @@
<field_definition src="./field_def_nemo-pisces.xml"/> <!-- NEMO ocean biogeochemical -->
<field_definition src="./field_def_nemo-innerttrc.xml"/> <!-- NEMO ocean inert passive tracer -->
<!-- Files definition -->
<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-innerttrc.xml"/> <!-- NEMO ocean inert passive tracer -->
<!-- Axis definition -->
......@@ -38,6 +36,5 @@
<!-- Grids definition -->
<grid_definition src="./grid_def_nemo.xml"/>
</context>
......@@ -10,7 +10,6 @@
!! namcfg parameters of the configuration (default: user defined GYRE)
!! namwad Wetting and drying (default: OFF)
!! namtsd data: temperature & salinity (default: OFF)
!! namcrs coarsened grid (for outputs and/or TOP) (ln_crs =T)
!! namc1d 1D configuration options (ln_c1d =T)
!! namc1d_dyndmp 1D newtonian damping applied on currents (ln_c1d =T)
!! namc1d_uvd 1D data (currents) (ln_c1d =T)
......@@ -27,9 +26,8 @@
!-----------------------------------------------------------------------
&namdom ! time and space domain
!-----------------------------------------------------------------------
ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time
!
rn_Dt = 5400. ! time step for the dynamics and tracer
!MLF rn_Dt = 5400. ! time step for the dynamics and tracer
rn_Dt = 10800. ! time step for the dynamics and tracer
ln_meshmask = .false. ! =T create a mesh file
/
!-----------------------------------------------------------------------
......@@ -85,7 +83,7 @@
! Type of air-sea fluxes
ln_blk = .true. ! Bulk formulation (T => fill namsbc_blk )
! Sea-ice :
nn_ice = 2 ! =0 no ice boundary condition
nn_ice = 0 ! =0 no ice boundary condition
! ! =1 use observed ice-cover ( => fill namsbc_iif )
! ! =2 or 3 for SI3 and CICE, respectively
! Misc. options of sbc :
......@@ -273,8 +271,6 @@
! ! time invariant coefficients: aei0 = 1/2 Ue*Le
rn_Ue = 0.03 ! lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30)
rn_Le = 200.e+3 ! lateral diffusive length [m] (nn_aht_ijk_t= 0, 10)
!
ln_ldfeiv_dia =.true. ! diagnose eiv stream function and velocities
/
!-----------------------------------------------------------------------
&namtra_dmp ! tracer: T & S newtonian damping (default: OFF)
......@@ -318,6 +314,10 @@
&namdyn_spg ! surface pressure gradient (default: NO selection)
!-----------------------------------------------------------------------
ln_dynspg_ts = .true. ! split-explicit free surface
!MLF nn_bt_flt = 1 ! Time filtering with nn_e width boxcar averaging
!MLF rn_bt_alpha = 0. ! Dissipative Forward Backward parameter
nn_bt_flt = 3 ! Time filtering with dissipative Forward Backward
rn_bt_alpha = 0.09 ! Dissipative Forward Backward parameter
/
!-----------------------------------------------------------------------
&namdyn_ldf ! lateral diffusion on momentum (default: NO selection)
......@@ -361,17 +361,18 @@
!-----------------------------------------------------------------------
&namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion (ln_zdftke =T)
!-----------------------------------------------------------------------
nn_mxlice = 0 ! type of scaling under sea-ice
! ! = 0 no scaling under sea-ice
! ! = 1 scaling with constant sea-ice thickness
! ! = 2 scaling with mean sea-ice thickness ( only with SI3 sea-ice model )
/
!!======================================================================
!! *** Diagnostics namelists *** !!
!! !!
!! namtrd dynamics and/or tracer trends (default: OFF)
!! namhsb Heat and salt budgets (default: OFF)
!! namdiu Cool skin and warm layer models (default: OFF)
!! namdiu Cool skin and warm layer models (default: OFF)
!! namflo float parameters (default: OFF)
!! nam_diadct transports through some sections (default: OFF)
!! nam_dia25h 25h Mean Output (default: OFF)
!! namnc4 netcdf4 chunking and compression settings ("key_netcdf4")
!!======================================================================
!
......