Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ACCORD/IAL changes to PHYEX in CY49T1 and CY49T2 #54

Open
wants to merge 2 commits into
base: arome_474b516
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions aux/ini_phyex.F90
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
SUBROUTINE INI_PHYEX(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, KFROM, KTO, &
&PTSTEP, PDZMIN, &
&CMICRO, CSCONV, CTURB, &
&LDCHANGEMODEL, LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT, LDINIT, &
&LDCHANGEMODEL, LDDEFAULTVAL, LDREADNAM, LDCHECK, &
&KPRINT, LDINIT, &
&PHYEX_IN, PHYEX_OUT)
!
USE MODD_PHYEX, ONLY: PHYEX_t
Expand Down Expand Up @@ -228,7 +229,7 @@ SUBROUTINE INI_PHYEX(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, KFROM, KTO, &
ENDIF

CALL TURBN_INIT(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, &
&LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT)
&LDDEFAULTVAL=LDDEFAULTVAL, LDREADNAM=LDREADNAM, LDCHECK=LDCHECK,KPRINT=KPRINT)
IF(LLINIT) THEN
CALL INI_TURB(HPROGRAM)
ENDIF
Expand Down
85 changes: 85 additions & 0 deletions aux/modd_aerosol_prop.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
! ######spl
MODULE MODD_AEROSOL_PROP
! ##########################
!
!!**** *MODD_AEROSOL_PROP* - declaration of aerosol properties.
!!
!! PURPOSE
!! -------
! The purpose of this declarative module is to declare ...
!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!!
!! MODIFICATIONS
!! -------------
!! Original 04/12/17
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
IMPLICIT NONE

! CAMS Aerosols : 14 species
! MOCAGE Aerosols : ???

INTEGER, PARAMETER :: NAEROMAX=16

REAL,SAVE :: XCONC_MIN ! Minimun droplet concentration

INTEGER, SAVE :: NCCN
INTEGER, SAVE :: NIFN
INTEGER, SAVE :: NCOAR
INTEGER, SAVE :: NSEASALT
INTEGER, SAVE :: NCOARSEASALT
INTEGER, SAVE :: NDUST
INTEGER, SAVE :: NDRYDEP

! Cloud condensation nuclei
INTEGER, DIMENSION(NAEROMAX), SAVE :: XACCNI
! Ice freezing Nuclei
INTEGER, DIMENSION(NAEROMAX), SAVE :: XIFNI
! Coarse modes for dry sedimentation
INTEGER, DIMENSION(NAEROMAX), SAVE :: XCOARSE
! Sea salt species
INTEGER, DIMENSION(NAEROMAX), SAVE :: XSEASALT
INTEGER, DIMENSION(NAEROMAX), SAVE :: XCOARSEASALT
! Desert dust
INTEGER, DIMENSION(NAEROMAX), SAVE :: XDUST
! Dry deposition active
INTEGER, DIMENSION(NAEROMAX), SAVE :: XDRYDEP

! Aerosol distribution: log normal size distribution
! number mode radius(rm)
! geometric standard deviation(s)
REAL, DIMENSION(NAEROMAX), SAVE :: XMRAE, XSDAE
! Variables related with the bin limits
REAL, DIMENSION(NAEROMAX), SAVE :: XBINDOWN,XBINUP
REAL, DIMENSION(NAEROMAX), SAVE :: XERFDOWN,XERFUP,XR3CORR

! Physical properties
REAL, DIMENSION(NAEROMAX), SAVE :: XKHYGROS ! hygroscopic factor
REAL, DIMENSION(NAEROMAX), SAVE :: XRHOAE ! aerosol density (Kg m-3)
! Optical properties
! Mass extinction
REAL, DIMENSION(NAEROMAX,12), SAVE :: XMEXT ! mass extinction

REAL, DIMENSION(NAEROMAX,2), SAVE :: XVDRY ! Dry Deposition Velocity
! over sea and land
REAL, DIMENSION(NAEROMAX), SAVE :: XFRICS ! Fracion of aerosols
! in aquaeous phase
! for in-cloud scavenging

REAL, DIMENSION(NAEROMAX), SAVE :: XINTSS ! Sea salt emision

END MODULE MODD_AEROSOL_PROP
61 changes: 61 additions & 0 deletions aux/modd_nrt_aerosols.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
! ######spl
MODULE MODD_NRT_AEROSOLS
! #####################
!
!!**** *MODD_NRT_AEROSOLS* - declaration of the control parameters for
!! the use of near real time aerosols
!!
!! PURPOSE
!! -------
!! The purpose of this declarative module is to define the set of
!! parameters for the use of nrt aerosols in the microphysics.
!!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!! D. Martin-Perez
!!
!! MODIFICATIONS
!! -------------
!! Original 05/08/2022
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
IMPLICIT NONE
!
LOGICAL, SAVE :: LAEIFN ! switch to activate ice nuclei
LOGICAL, SAVE :: LAECCN2CLDR ! switch to convert CCN into Cloud
! droplets
LOGICAL, SAVE :: LAERDRDEP ! Switch for dry deposition activation
LOGICAL, SAVE :: LAERSSEM ! Switch for sea salt emission.
REAL, SAVE :: XSSMINLO ! Minimum supersaturation at lowest level
REAL, SAVE :: XSSMINUP ! Minimum supersaturation at high levels
REAL, SAVE :: XSSMAX ! Maximum supersaturation
REAL, SAVE :: XSSHEIGHT ! Height limit for SSMIN separation
REAL, SAVE :: XSSFACVV ! Factor for SS dependence with vert. velo.
REAL, SAVE :: XSSFACSS ! Factor for SS dependence with coarse sea salt.
REAL, SAVE :: XPANMIN ! Minimum particle concentration number
! (m-3)
REAL, SAVE :: XCCNMIN ! Minimum cloud condensation number
! concentration (m-3)
REAL, SAVE :: XCLDROPMIN ! Minimum cloud droplet number
! concentration (m-3)
REAL, SAVE :: XIFNMINSIZE ! Minimum size of aerosol to be considered
! ice nuclei (micrometers)

!
!-------------------------------------------------------------------------------
!
END MODULE MODD_NRT_AEROSOLS

8 changes: 4 additions & 4 deletions aux/modd_nsv.F90
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ MODULE MODD_NSV
LOGICAL :: LINI_NSV(JPMODELMAX) = .FALSE. ! becomes True when routine INI_NSV is called
!
CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:,:), ALLOCATABLE :: CSV_CHEM_LIST_A !Names of all the chemical variables
CHARACTER(LEN=6), DIMENSION(:,:), ALLOCATABLE :: CSV_A !Names of the scalar variables
CHARACTER(LEN=16), DIMENSION(:,:), ALLOCATABLE :: CSV_A !Names of the scalar variables
TYPE(tfieldmetadata), DIMENSION(:,:), ALLOCATABLE :: TSVLIST_A !Metadata of all the scalar variables

INTEGER,DIMENSION(JPMODELMAX)::NSV_A = 0 ! total number of scalar variables
Expand Down Expand Up @@ -167,7 +167,7 @@ MODULE MODD_NSV
! variables updated for the current model
!
CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSV_CHEM_LIST !Names of all the chemical variables
CHARACTER(LEN=6), DIMENSION(:), POINTER :: CSV !Names of the scalar variables
CHARACTER(LEN=16), DIMENSION(:), POINTER :: CSV !Names of the scalar variables

TYPE(tfieldmetadata), DIMENSION(:), POINTER :: TSVLIST !Metadata of all the scalar variables

Expand Down Expand Up @@ -289,7 +289,7 @@ MODULE MODD_NSV
LOGICAL, POINTER :: LINI_NSV(:) => NULL()
!
CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:,:), POINTER :: CSV_CHEM_LIST_A => NULL()
CHARACTER(LEN=6), DIMENSION(:,:), POINTER :: CSV_A => NULL()
CHARACTER(LEN=16), DIMENSION(:,:), POINTER :: CSV_A => NULL()
TYPE(tfieldmetadata), DIMENSION(:,:), POINTER :: TSVLIST_A => NULL()

INTEGER, DIMENSION(:), POINTER ::NSV_A => NULL(), &
Expand Down Expand Up @@ -376,7 +376,7 @@ MODULE MODD_NSV
NSV_SNWEND_A => NULL()

CHARACTER(LEN=NMNHNAMELGTMAX), DIMENSION(:), POINTER :: CSV_CHEM_LIST => NULL()
CHARACTER(LEN=6), DIMENSION(:), POINTER :: CSV => NULL()
CHARACTER(LEN=16), DIMENSION(:), POINTER :: CSV => NULL()

TYPE(tfieldmetadata), DIMENSION(:), POINTER :: TSVLIST => NULL()

Expand Down
30 changes: 30 additions & 0 deletions aux/modi_aermr_nc.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
! ######spl
MODULE MODI_AERMR_NC
! ####################
!
INTERFACE
SUBROUTINE AERMR_NC(PHYEX, PTSTEP, PRHODREF, PEXNREF, PPABST, &
& PCLDFR, PTHT, PRVT, PRCT, KNAERO, &
& PAER_MR, PSSAT, PAER_NC, PCCN_NC, PIFN_NC)
!
USE MODD_PHYEX, ONLY: PHYEX_t
!
TYPE(PHYEX_t), INTENT(IN) :: PHYEX
REAL, INTENT(IN) :: PTSTEP
INTEGER, INTENT(IN) :: KNAERO
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF
REAL, DIMENSION(:,:,:), INTENT(IN) :: PEXNREF
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRVT
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRCT
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PAER_MR
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSSAT
REAL, DIMENSION(:,:,:,:), INTENT( OUT) :: PAER_NC
REAL, DIMENSION(:,:,:,:), INTENT( OUT) :: PCCN_NC
REAL, DIMENSION(:,:,:), INTENT( OUT) :: PIFN_NC
!
END SUBROUTINE AERMR_NC
END INTERFACE
END MODULE MODI_AERMR_NC
38 changes: 38 additions & 0 deletions aux/modi_aerosol_process.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
! ######spl
MODULE MODI_AEROSOL_PROCESS
! ####################
!
INTERFACE
SUBROUTINE AEROSOL_PROCESS(PHYEX, KKA,KKU,KKL,KNAERO,PTSTEP, &
& PPABST,PTHT,PDZZ,PRHODREF,PRCT,PRIT, &
& PCLDFR,PFPR, &
& PLSM,PUGST,PVGST, &
& PAERMR,PAERTEND)
!
USE MODD_PHYEX, ONLY: PHYEX_t
!
TYPE(PHYEX_t), INTENT(IN) :: PHYEX
INTEGER, INTENT(IN) :: KKA
INTEGER, INTENT(IN) :: KKU
INTEGER, INTENT(IN) :: KKL
INTEGER, INTENT(IN) :: KNAERO
REAL, INTENT(IN) :: PTSTEP ! Double Time step
! (single if cold
! start)
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! Layer thikness (m)
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF! Reference density
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRCT ! Cloud water m.r. at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRIT ! Pristine ice m.r. at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR ! Convective Mass Flux Cloud fraction
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PFPR ! upper-air precipitation fluxes
REAL, DIMENSION(:), INTENT(IN) :: PLSM ! Land/Sea Mask
REAL, DIMENSION(:), INTENT(IN) :: PUGST ! 10m u-wind gust
REAL, DIMENSION(:), INTENT(IN) :: PVGST ! 10m v-wind gust
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PAERMR ! Aerosol mixing ratio
REAL, DIMENSION(:,:,:,:), INTENT( OUT) :: PAERTEND! Aerosol tendencies: scavenging + emission
END SUBROUTINE AEROSOL_PROCESS
END INTERFACE
END MODULE MODI_AEROSOL_PROCESS

3 changes: 2 additions & 1 deletion aux/modi_ini_phyex.F90
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ MODULE MODI_INI_PHYEX
SUBROUTINE INI_PHYEX(HPROGRAM, KUNITNML, LDNEEDNAM, KLUOUT, KFROM, KTO, &
&PTSTEP, PDZMIN, &
&CMICRO, CSCONV, CTURB, &
&LDCHANGEMODEL, LDDEFAULTVAL, LDREADNAM, LDCHECK, KPRINT, LDINIT, &
&LDCHANGEMODEL, LDDEFAULTVAL, LDREADNAM, LDCHECK,&
&KPRINT, LDINIT, &
&PHYEX_IN, PHYEX_OUT)
!
USE MODD_PHYEX, ONLY: PHYEX_t
Expand Down
11 changes: 8 additions & 3 deletions conv/convect_chem_transport.F90
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ SUBROUTINE CONVECT_CHEM_TRANSPORT( CVPEXT, D, NSV, KCH, PCH1, PCH1C, &
INTEGER :: JI ! horizontal loop index
INTEGER :: JK, JKP ! vertical loop index
INTEGER :: JN ! chemical tracer loop index
INTEGER :: JCH
INTEGER :: JSTEP ! fractional time loop index
INTEGER :: JKLD, JKLP, JKMIN, JKMAX, JKMAX2 ! loop index for levels
!
Expand Down Expand Up @@ -212,7 +213,9 @@ SUBROUTINE CONVECT_CHEM_TRANSPORT( CVPEXT, D, NSV, KCH, PCH1, PCH1C, &
!* 4. Final closure (environmental) computations
! ------------------------------------------
!
PCH1C(D%NIB:D%NIE,IKB:IKE,1:KCH) = PCH1(D%NIB:D%NIE,IKB:IKE,1:KCH) ! initialize adjusted envir. values
DO JCH = 1, KCH
PCH1C(:,IKB:IKE,JCH) = PCH1(:,IKB:IKE,JCH) ! initialize adjusted envir. values
ENDDO
!
DO JK = IKB, IKE
DO JI=D%NIB,D%NIE
Expand All @@ -233,8 +236,10 @@ SUBROUTINE CONVECT_CHEM_TRANSPORT( CVPEXT, D, NSV, KCH, PCH1, PCH1C, &
ENDDO
ENDDO
!
ZCH1MFIN(D%NIB:D%NIE,1:D%NKT,1:KCH) = 0.
ZCH1MFOUT(D%NIB:D%NIE,1:D%NKT,1:KCH) = 0.
DO JCH = 1, KCH
ZCH1MFIN(:,1:D%NKT,JCH) = 0.
ZCH1MFOUT(:,1:D%NKT,JCH) = 0.
ENDDO
!
DO JSTEP = 1, KFTSTEPS ! Enter the fractional time step loop
!
Expand Down
Loading