Skip to content
Snippets Groups Projects
Commit 6b7061e7 authored by Aimie Moulin's avatar Aimie Moulin Committed by Clement Rousset
Browse files

Resolve "Issue in Richardson number"

parent 07a8af10
No related branches found
No related tags found
No related merge requests found
# 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 $)
#
# NETCDF, PNETCDF, HDF5 should be set automatically when loading modules on ZEUS cluster
# User should set the path of xios compiled code (after r2134)
#export XIOS=<path-to-xios>/xios
# and load the same gcc version used to compile xios (e.g., module load gcc_9.1.0/9.1.0)
%NCDF_INC -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
%CPP cpp
%FC mpiifort
%FCFLAGS -r8 -O3 -fp-model source -traceback -mkl=cluster -xSKYLAKE-AVX512 -qopt-zmm-usage=low -no-fma
%FFLAGS %FCFLAGS
%LD mpiifort
%FPPFLAGS -P -traditional
%LDFLAGS -lstdc++ -lz -lgpfs
%AR ar
%ARFLAGS -r
%MK gmake
%USER_INC %XIOS_INC %NCDF_INC %HDF5_INC
%USER_LIB %XIOS_LIB %NCDF_LIB %HDF5_LIB
%CC icc
%CFLAGS -O0
# 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 $)
#
# NETCDF, PNETCDF, HDF5 should be set automatically when loading modules on ZEUS cluster
# User should set the path of xios compiled code (after r2134)
#export XIOS=<path-to-xios>/xios
# and load the same gcc version used to compile xios (e.g., module load gcc_9.1.0/9.1.0)
%NCDF_INC -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
%CPP cpp
%FC mpiifort
%FCFLAGS -r8 -O0 -fp-model source -traceback -mkl=cluster -xSKYLAKE-AVX512 -qopt-zmm-usage=low -no-fma -g -debug all -traceback -check all
%FFLAGS %FCFLAGS
%LD mpiifort
%FPPFLAGS -P -traditional
%LDFLAGS -lstdc++ -lz -lgpfs
%AR ar
%ARFLAGS -r
%MK gmake
%USER_INC %XIOS_INC %NCDF_INC %HDF5_INC
%USER_LIB %XIOS_LIB %NCDF_LIB %HDF5_LIB
%CC icc
%CFLAGS -O0
......@@ -304,7 +304,7 @@ CONTAINS
ENDIF
!
SELECT CASE ( nzdf_phy ) !* Vertical eddy viscosity and diffusivity coefficients at w-points
CASE( np_RIC ) ; CALL zdf_ric( kt, Kmm, zsh2, avm_k, avt_k ) ! Richardson number dependent Kz
CASE( np_RIC ) ; CALL zdf_ric( kt, Kbb, Kmm, avm_k, avt_k ) ! Richardson number dependent Kz
CASE( np_TKE ) ; CALL zdf_tke( kt, Kbb, Kmm, zsh2, avm_k, avt_k ) ! TKE closure scheme for Kz
CASE( np_GLS ) ; CALL zdf_gls( kt, Kbb, Kmm, zsh2, avm_k, avt_k ) ! GLS closure scheme for Kz
CASE( np_OSM ) ; CALL zdf_osm( kt, Kbb, Kmm, Krhs, avm_k, avt_k ) ! OSMOSIS closure scheme for Kz
......
......@@ -106,7 +106,7 @@ CONTAINS
END SUBROUTINE zdf_ric_init
SUBROUTINE zdf_ric( kt, Kmm, p_sh2, p_avm, p_avt )
SUBROUTINE zdf_ric( kt, Kbb, Kmm, p_avm, p_avt )
!!----------------------------------------------------------------------
!! *** ROUTINE zdfric ***
!!
......@@ -146,18 +146,22 @@ CONTAINS
!! PFJ Lermusiaux 2001.
!!----------------------------------------------------------------------
INTEGER , INTENT(in ) :: kt ! ocean time-step
INTEGER , INTENT(in ) :: Kmm ! ocean time level index
REAL(wp), DIMENSION(A2D(nn_hls),jpk), INTENT(in ) :: p_sh2 ! shear production term
INTEGER , INTENT(in ) :: Kmm , Kbb ! ocean time level index
REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avm, p_avt ! momentum and tracer Kz (w-points)
!!
INTEGER :: ji, jj, jk ! dummy loop indices
REAL(wp) :: zcfRi, zav, zustar, zhek ! local scalars
REAL(wp) :: zcfRi, zav, zustar, zhek, zdku, zdkv, zwx ! local scalars
REAL(wp), DIMENSION(A2D(nn_hls)) :: zh_ekm ! 2D workspace
!!----------------------------------------------------------------------
!
! !== avm and avt = F(Richardson number) ==!
DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) ! coefficient = F(richardson number) (avm-weighted Ri)
zcfRi = 1._wp / ( 1._wp + rn_alp * MAX( 0._wp , avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) ) )
zdku = 0.5 / e3uw(ji,jj,jk,Kbb) * ( uu(ji-1,jj,jk-1,Kbb) + uu(ji,jj,jk-1,Kbb) &
& - uu(ji-1,jj,jk,Kbb) - uu(ji,jj,jk,Kbb) ) * wumask(ji,jj,jk)
zdkv = 0.5 / e3vw(ji,jj,jk,Kbb) * ( vv(ji,jj-1,jk-1,Kbb) + vv(ji,jj,jk-1,Kbb) &
& - vv(ji,jj-1,jk,Kbb) - vv(ji,jj,jk,Kbb) ) * wvmask(ji,jj,jk)
zwx = zdku*zdku + zdkv*zdkv
zcfRi = 1._wp / ( 1._wp + rn_alp * MAX( 0._wp , rn2(ji,jj,jk) / ( zwx + 1.e-20 ) ) )
zav = rn_avmri * zcfRi**nn_ric
! ! avm and avt coefficients
p_avm(ji,jj,jk) = MAX( zav , avmb(jk) ) * wmask(ji,jj,jk)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment