Skip to content
Snippets Groups Projects
Commit fc7d4b25 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Revert "Quentin 27/01/2022: Merge branch QR_turb into main"

Cas test AROME non bit-repro

This reverts commit 6050b2b6, reversing
changes made to 71f963d8.
parent 6050b2b6
No related branches found
No related tags found
No related merge requests found
Showing
with 32 additions and 471 deletions
......@@ -59,5 +59,5 @@ Budgets/DDH
SPP
- modd_spp_type est pour l'instant dans mpa/micro/externals mais n'est pas de la microphysique
Nettoyage apl_arome non fait (pb a la compilation) ==> 4 arguments dans aro_turb_mnh supprimés (non utilisés)
turb.F90 : il reste un CALL à SOURCES_NEG_CORRECT à ajouter. Besoin de récupérer CCLOUD dans apl_arome : comment ?
Gradients/shuman:
- essayer de mettre des abort dans les routines arome (shuman doit suffire)
......@@ -105,17 +105,8 @@ IF (SIZE(PVARS,3)==NFLEVGDDH+2) THEN
ELSE
IOFF=0
ENDIF
!if length is less than 4, fill with budget old names
IF(LEN(HBUVAR)==1) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_BU'
ELSE IF(LEN(HBUVAR)==2) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_B'
ELSE IF(LEN(HBUVAR)==3) THEN
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_'
ELSE
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))
END IF
!
CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//REPEAT('_', MAX(0, 4-LEN(HBUVAR))) !if length is less than 4, fill with '_'
IF (YDLDDH%LDDH_OMP) THEN
CLDDH='T'//YDDDH%YVARMULT(KBUDN)%CNAME//CLPROC
ELSE
......
!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! Modifications:
! P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
!-----------------------------------------------------------------
! ####################
MODULE MODI_GET_HALO
! ####################
!
INTERFACE
!
SUBROUTINE GET_HALO(PSRC)
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t
!
END SUBROUTINE GET_HALO
!
END INTERFACE
!
END MODULE MODI_GET_HALO
!
!-------------------------------------------------------------------------------
! #########################
SUBROUTINE GET_HALO(PSRC)
! #########################
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PSRC ! variable at t
!
END SUBROUTINE GET_HALO
!-----------------------------------------------------------------------
......@@ -70,8 +70,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZX ! metric coefficient dzx
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
!
REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_M_M ! result mass point
......@@ -101,7 +101,7 @@ END IF
IF (LHOOK) CALL DR_HOOK('GX_M_M',1,ZHOOK_HANDLE)
END FUNCTION GX_M_M
! ######spl
FUNCTION GX_M_U(KKA, KKU, KL,PY,PDXX,PDZZ,PDZX) RESULT(PGX_M_U)
FUNCTION GX_M_U(PY,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_M_U)
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! ##################################################
......@@ -329,8 +329,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZY ! metric coefficient dzy
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
!
REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_M_M ! result mass point
!
......@@ -359,7 +359,7 @@ ENDIF
IF (LHOOK) CALL DR_HOOK('GY_M_M',1,ZHOOK_HANDLE)
END FUNCTION GY_M_M
! ######spl
FUNCTION GY_M_V(KKA,KKU,KL,PY,PDYY,PDZZ,PDZY) RESULT(PGY_M_V)
FUNCTION GY_M_V(PY,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_M_V)
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! ##################################################
......@@ -551,8 +551,8 @@ IMPLICIT NONE
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
!
REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_M_M ! result mass point
!
......@@ -575,7 +575,7 @@ PGZ_M_M(:,:,:)= MZF(DZM(PA(:,:,:), KKA, KKU, KL)/PDZZ(:,:,:), KKA, KKU, KL)
IF (LHOOK) CALL DR_HOOK('GZ_M_M',1,ZHOOK_HANDLE)
END FUNCTION GZ_M_M
! ######spl
FUNCTION GZ_M_W(KKA, KKU, KL,PY,PDZZ) RESULT(PGZ_M_W)
FUNCTION GZ_M_W(PY,PDZZ, KKA, KKU, KL) RESULT(PGZ_M_W)
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! #########################################
......
......@@ -66,8 +66,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the U point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -168,8 +168,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the U point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -261,8 +261,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the U point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
!
......
......@@ -66,8 +66,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the V point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -165,8 +165,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the V point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -260,8 +260,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the V point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
!
......
......@@ -56,8 +56,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the W point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -147,8 +147,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the W point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dxx
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
......@@ -236,8 +236,8 @@ IMPLICIT NONE
!
!* 0.1 declarations of arguments and result
!
INTEGER, INTENT(IN),OPTIONAL :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN),OPTIONAL :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes
INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise
REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the W point
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz
!
......
!MNH_LIC Copyright 2019-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
!
! ############################
MODULE MODI_IBM_MIXINGLENGTH
! ############################
!
INTERFACE
!
SUBROUTINE IBM_MIXINGLENGTH(PLM,PLEPS,PMU,PHI,PTKE)
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PMU
REAL, DIMENSION(:,:,:), INTENT(IN) :: PHI
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
!
END SUBROUTINE IBM_MIXINGLENGTH
!
END INTERFACE
END MODULE MODI_IBM_MIXINGLENGTH
!
SUBROUTINE IBM_MIXINGLENGTH(PLM,PLEPS,PMU,PHI,PTKE)
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS
REAL, DIMENSION(:,:,:), INTENT(OUT) :: PMU
REAL, DIMENSION(:,:,:), INTENT(IN) :: PHI
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
!
END SUBROUTINE IBM_MIXINGLENGTH
!
MODULE MODD_ARGSLIST_ll
IMPLICIT NONE
TYPE LIST_ll
END TYPE LIST_ll
CONTAINS
END MODULE MODD_ARGSLIST_ll
MODULE MODD_FIELD
USE MODD_PARAMETERS, ONLY: NGRIDUNKNOWN, NMNHNAMELGTMAX, NSTDNAMELGTMAX
INTEGER, PARAMETER :: NMNHDIM_UNKNOWN = -2
INTEGER, PARAMETER :: NMNHMAXDIMS = 6 ! Cannot be less than 6
INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
!
TYPE TFIELDDATA
CHARACTER(LEN=NMNHNAMELGTMAX) :: CMNHNAME = '' !Name of the field (for MesoNH, non CF convention)
CHARACTER(LEN=NSTDNAMELGTMAX) :: CSTDNAME = '' !Standard name (CF convention)
CHARACTER(LEN=32) :: CLONGNAME = '' !Long name (CF convention)
CHARACTER(LEN=40) :: CUNITS = '' !Canonical units (CF convention)
CHARACTER(LEN=100) :: CCOMMENT = '' !Comment (for MesoNH, non CF convention)
INTEGER :: NGRID = NGRIDUNKNOWN !Localization on the model grid
INTEGER :: NTYPE = TYPEUNDEF !Datatype
INTEGER :: NDIMS = 0 !Number of dimensions
INTEGER, DIMENSION(NMNHMAXDIMS) :: NDIMLIST = NMNHDIM_UNKNOWN ! List of dimensions of the data field
!
INTEGER :: NFILLVALUE = -2147483647 !Fill value for integer fields
REAL :: XFILLVALUE = 9.9692099683868690e+36 !Fill value for real fields
INTEGER :: NVALIDMIN = -2147483646 !Minimum valid value for integer fields
INTEGER :: NVALIDMAX = 2147483647 !Maximum valid value for integer fields
REAL :: XVALIDMIN = -1.E36 !Minimum valid value for real fields
REAL :: XVALIDMAX = 1.E36 !Maximum valid value for real fields
CHARACTER(LEN=2) :: CDIR = '' !Type of the data field (XX,XY,--...)
CHARACTER(LEN=4) :: CLBTYPE = 'NONE' !Type of the lateral boundary (LBX,LBY,LBXU,LBYV)
LOGICAL :: LTIMEDEP = .FALSE. !Is the field time-dependent?
END TYPE TFIELDDATA
!
END MODULE MODD_FIELD
!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! ###############
MODULE MODD_FRC
! ###############
!
!!*** *MODD_FRC - Declarative module for the forcing fields
!!
!! PURPOSE
!! -------
! This module contains NFRC 1D-arrays used by FORCING (geostrophic wind
! components, large scale vertical wind, theta and humidity profiles when
! the relaxation option is used,large scale theta and humidity gradients
! and the translation speed of the domain of simulation.
! The following control parameters are used by FORCING:
! - LGEOST_UV_FRC and LGEOST_TH_FRC
! - LTEND_THRV_FRC and LTEND_UV_FRC
! - LVERT_MOTION_FRC
! - LRELAX_THRV_FRC, LRELAX_UV_FRC and LRELAX_UVMEAN_FRC using:
! XRELAX_TIME_FRC, XRELAX_HEIGHT_FRC and CRELAX_HEIGHT_TYPE
! - LTRANS
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!! Book2 of documentation of Meso-NH (module MODD_FRC)
!!
!!
!! AUTHOR
!! ------
!! Marc Georgelin Labo d'aerologie
!!
!! MODIFICATIONS
!! -------------
!! Original 29/07/96
!! 29/07/96 (Pinty&Suhre) revised
!! 18/11/96 J.-P. Pinty addition of the translation
!! 27/01/98 P. Bechtold use tendency forcing
!! add SST and surface pressure forcing
!! 01/2004 V. Masson surface externalization: removes SST forcing
!! 09/2017 Q.Rodier add LTEND_UV_FRC
!! 03/2021 JL Redelsperger Parameters defining sfc forcing shape for idealized ocean case
!! 06/2021 F. Couvreux add LRELAX_UVMEAN_FRC
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
!USE MODD_TYPE_DATE
!
IMPLICIT NONE
!
!* fields for FORCING
! ------------------
!
INTEGER, SAVE :: NFRC ! number of forcing profiles
!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TDTFRC ! date of
! each forcing profile
!
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XUFRC, &! geostrophic wind
XVFRC, &! components U and V
XWFRC ! large scale vertical wind
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTHFRC, &! large scale TH profile
XRVFRC ! large scale RV profile
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XGXTHFRC,&! large scale TH gradient
XGYTHFRC ! along the X and Y axis
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDTHFRC,&! large scale TH tendency
XTENDRVFRC ! large scale RV tendency
REAL, SAVE :: XUTRANS, &! horizontal components of
XVTRANS ! a constant
! Galilean TRANSlation
REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XPGROUNDFRC! surf. pressure
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDUFRC ! large scale U tendency
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDVFRC ! large scale V tendency
!
!* control parameters for FORCING
! ------------------------------
!
LOGICAL, SAVE :: LGEOST_UV_FRC ! enables geostrophic wind term
LOGICAL, SAVE :: LGEOST_TH_FRC ! enables thermal wind advection
LOGICAL, SAVE :: LTEND_THRV_FRC ! enables tendency forcing
LOGICAL, SAVE :: LTEND_UV_FRC ! enables tendency forcing of the wind
LOGICAL, SAVE :: LVERT_MOTION_FRC ! enables prescribed a forced vertical
! transport for all prognostic variables
LOGICAL, SAVE :: LRELAX_THRV_FRC ! enables temp. and humidity relaxation
LOGICAL, SAVE :: LRELAX_UV_FRC ! enables horizontal wind relaxation applied to the full wind field
LOGICAL, SAVE :: LRELAX_UVMEAN_FRC ! enables horizontal wind relaxation applied to the horiz. avg. wind
!
REAL, SAVE :: XRELAX_TIME_FRC ! e-folding time for relaxation
REAL, SAVE :: XRELAX_HEIGHT_FRC ! height below which relaxation
! is never applied
CHARACTER(len=4), SAVE :: CRELAX_HEIGHT_TYPE ! "THGR" relax. above maximal dTH/dz
! (but always above XRELAX_HEIGHT_FRC)
! "FIXE" relax. above XRELAX_HEIGHT_FRC
!
LOGICAL, SAVE :: LTRANS ! enables a Galilean translation of the
! domain of simulation
LOGICAL, SAVE :: LPGROUND_FRC ! enables surf. pressure forcing
!
LOGICAL, SAVE :: LDEEPOC ! activates sfc forcing for ideal ocean deep conv
REAL, SAVE :: XCENTX_OC ! center of sfc forc for ideal ocean
REAL, SAVE :: XRADX_OC ! radius of sfc forc for ideal ocean
REAL, SAVE :: XCENTY_OC ! center of sfc forc for ideal ocean
REAL, SAVE :: XRADY_OC ! radius of sfc forc for ideal ocean
!
END MODULE MODD_FRC
!MNH_LIC Copyright 2019-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
!
! #######################
MODULE MODD_IBM_PARAM_n
! #######################
IMPLICIT NONE
LOGICAL :: LIBM,LIBM_TROUBLE
REAL, DIMENSION(:,:,:,:) , POINTER :: XIBM_LS=>NULL() ! LSF for MNH
REAL, DIMENSION(:,:,:) , POINTER :: XIBM_XMUT=>NULL()
END MODULE MODD_IBM_PARAM_n
!
!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! #################
MODULE MODD_OCEANH
! #################
!
!!**** *MODD_OCEAN* - declaration of variables used in ocean version
!!
!! PURPOSE
!! -------
! Declarative module for the variables
!! at interface for OCEAN LES MESONH version including auto-coupling O-A LES
!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! AUTHOR
!! ------
!! JL Redelsperger LOPS
!!
!! MODIFICATIONS
!! -------------
!! Original 03/2021
!
!* 0. DECLARATIONS
! ------------
!
!USE MODD_TYPE_DATE
!
IMPLICIT NONE
!
!* fields for Sea Sfc FORCINGs
! ------------------
!
INTEGER, SAVE :: NFRCLT ! number of sea surface forcings PLUS 1
INTEGER, SAVE :: NINFRT ! Interval in second between forcings
!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TFRCLT ! date/time of sea surface forcings
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL,XSSVFL,XSSTFL,XSSOLA ! Time evol Flux U V T Solar_Rad at sea surface
REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL_XY,XSSVFL_XY,XSSTFL_XY! XY flux shape
REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XSSUFL_T,XSSVFL_T,XSSTFL_T,XSSOLA_T ! given time forcing fluxes
!
END MODULE MODD_OCEANH
MODULE MODE_ARGSLIST_ll
USE MODD_ARGSLIST_ll, ONLY : LIST_ll
CONTAINS
!
SUBROUTINE CLEANLIST_ll(TPLIST)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! List of fields
CALL ABORT
END SUBROUTINE CLEANLIST_ll
!
SUBROUTINE ADD2DFIELD_ll(TPLIST, PFIELD, HNAME)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! list of fields
REAL, DIMENSION(:,:), TARGET :: PFIELD ! field to be added to the list
! of fields
character(len=*), intent(in) :: HNAME ! Name of the field to be added
!
CALL ABORT
END SUBROUTINE ADD2DFIELD_ll
!
SUBROUTINE ADD3DFIELD_ll(TPLIST, PFIELD, HNAME)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! list of fields
REAL, DIMENSION(:,:,:), TARGET :: PFIELD ! field to be added to the list
! of fields
character(len=*), intent(in) :: HNAME ! Name of the field to be added
!
CALL ABORT
END SUBROUTINE ADD3DFIELD_ll
!
SUBROUTINE ADD4DFIELD_ll(TPLIST, PFIELD, HNAME)
IMPLICIT NONE
TYPE(LIST_ll), POINTER :: TPLIST ! list of fields
REAL, DIMENSION(:,:,:,:), TARGET :: PFIELD ! field to be added to the list
! of fields
character(len=*), intent(in) :: HNAME ! Name of the field to be added
!
CALL ABORT
END SUBROUTINE ADD4DFIELD_ll
END MODULE MODE_ARGSLIST_ll
MODULE MODE_GATHER_ll
IMPLICIT NONE
INTERFACE GATHERALL_FIELD_ll
MODULE PROCEDURE &
GATHERALL_X1, GATHERALL_X3
END INTERFACE
CONTAINS
SUBROUTINE GATHERALL_X3(HDIR,PSEND,PRECV,KRESP)
CHARACTER(LEN=*), INTENT(IN) :: HDIR
REAL,DIMENSION(:,:,:), INTENT(IN) :: PSEND
REAL,DIMENSION(:,:,:), INTENT(INOUT):: PRECV
INTEGER, INTENT(INOUT):: KRESP
CALL ABORT
END SUBROUTINE GATHERALL_X3
!
SUBROUTINE GATHERALL_X1(HDIR,PSEND,PRECV,KRESP)
CHARACTER(LEN=*), INTENT(IN) :: HDIR
REAL,DIMENSION(:), INTENT(IN) :: PSEND
REAL,DIMENSION(:), INTENT(INOUT):: PRECV
INTEGER, INTENT(INOUT):: KRESP
CALL ABORT
END SUBROUTINE GATHERALL_X1
!
END MODULE MODE_GATHER_ll
MODULE MODE_IO_FIELD_WRITE
USE MODD_IO, ONLY: TFILEDATA
USE MODD_FIELD, ONLY: TFIELDDATA
CONTAINS
SUBROUTINE IO_FIELD_WRITE(TPFILE,TZFIELD,PFIELD)
!
!* 0.1 Declarations of arguments
!
TYPE(TFILEDATA), INTENT(IN) :: TPFILE
TYPE(TFIELDDATA), INTENT(IN) :: TZFIELD
REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field
!
CALL ABORT
END SUBROUTINE IO_FIELD_WRITE
END MODULE MODE_IO_FIELD_WRITE
MODULE MODE_ll
USE MODE_ARGSLIST_ll
USE MODE_TOOLS
IMPLICIT NONE
CONTAINS
SUBROUTINE GET_INDICE_ll(KXOR, KYOR, KXEND, KYEND, KSIZE1, KSIZE2)
USE MODD_PARAMETERS, ONLY : JPHEXT
IMPLICIT NONE
INTEGER, INTENT(IN),OPTIONAL :: KSIZE1, KSIZE2
INTEGER, INTENT(IN) :: KSIZE1, KSIZE2
INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
KXOR=1+JPHEXT
KYOR=1+JPHEXT
KXEND=KSIZE1-JPHEXT
KYEND=KSIZE2-JPHEXT
END SUBROUTINE GET_INDICE_ll
SUBROUTINE UPDATE_HALO_ll(TPLIST, KINFO)
USE MODD_ARGSLIST_ll, ONLY : LIST_ll
TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
INTEGER :: KINFO ! return status
CALL ABORT
END SUBROUTINE UPDATE_HALO_ll
LOGICAL FUNCTION LNORTH_ll()
LNORTH_ll=.FALSE.
END FUNCTION LNORTH_ll
!
LOGICAL FUNCTION LEAST_ll()
LEAST_ll=.FALSE.
END FUNCTION LEAST_ll
!
LOGICAL FUNCTION LWEST_ll()
LWEST_ll=.FALSE.
END FUNCTION LWEST_ll
!
LOGICAL FUNCTION LSOUTH_ll()
LSOUTH_ll=.FALSE.
END FUNCTION LSOUTH_ll
END MODULE MODE_ll
MODULE MODE_MPPDB
IMPLICIT NONE
REAL :: PRECISION = 1e-8 * 0.0
CONTAINS
SUBROUTINE MPPDB_CHECK3DM(MESSAGE,PRECISION &
,PTAB1,PTAB2,PTAB3,PTAB4,PTAB5,PTAB6,PTAB7,PTAB8,PTAB9,PTAB10 &
,PTAB11,PTAB12,PTAB13,PTAB14,PTAB15,PTAB16,PTAB17,PTAB18,PTAB19,PTAB20 &
)
IMPLICIT NONE
CHARACTER(lEN=*) :: MESSAGE
REAL :: PRECISION
REAL, DIMENSION(:,:,:), OPTIONAL :: PTAB1,PTAB2,PTAB3,PTAB4,PTAB5,PTAB6,PTAB7,PTAB8,PTAB9,PTAB10
REAL, DIMENSION(:,:,:), OPTIONAL :: PTAB11,PTAB12,PTAB13,PTAB14,PTAB15,PTAB16,PTAB17,PTAB18,PTAB19,PTAB20
! DO NOTHING IN AROME
END SUBROUTINE MPPDB_CHECK3DM
END MODULE MODE_MPPDB
MODULE MODE_SOURCES_NEG_CORRECT
IMPLICIT NONE
CONTAINS
SUBROUTINE SOURCES_NEG_CORRECT(HCLOUD, HBUDNAME, KRR, PTSTEP, PPABST, &
&PTHT, PRT, PRTHS, PRRS, PRSVS, PRHODJ)
IMPLICIT NONE
CHARACTER(LEN=*), INTENT(IN) :: HCLOUD ! Kind of cloud parameterization
CHARACTER(LEN=*), INTENT(IN) :: HBUDNAME ! Budget name
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
REAL, INTENT(IN) :: PTSTEP ! Timestep
REAL, DIMENSION(:, :, :), INTENT(IN) :: PPABST ! Absolute pressure at time t
REAL, DIMENSION(:, :, :), INTENT(IN) :: PTHT ! Theta at time t
REAL, DIMENSION(:, :, :, :), INTENT(IN) :: PRT ! Moist variables at time t
REAL, DIMENSION(:, :, :), INTENT(INOUT) :: PRTHS ! Source terms
REAL, DIMENSION(:, :, :, :), INTENT(INOUT) :: PRRS ! Source terms
REAL, DIMENSION(:, :, :, :), INTENT(INOUT) :: PRSVS ! Source terms
REAL, DIMENSION(:, :, :), INTENT(IN), OPTIONAL :: PRHODJ ! Dry density * jacobian
END SUBROUTINE SOURCES_NEG_CORRECT
END MODULE MODE_SOURCES_NEG_CORRECT
MODULE MODE_TRIDIAG_W
! Empty module for PHYEX, used in TURB 3D
END MODULE MODE_TRIDIAG_W
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