Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Méso-NH code
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Méso-NH
Méso-NH code
Commits
4da13e98
Commit
4da13e98
authored
3 years ago
by
WAUTELET Philippe
Browse files
Options
Downloads
Patches
Plain Diff
Philippe 11/02/2022: add meaning of ppv for AER, DUST and SALT variables depending on moment
parent
e9ef9a94
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/MNH/ini_nsv.f90
+127
-61
127 additions, 61 deletions
src/MNH/ini_nsv.f90
with
127 additions
and
61 deletions
src/MNH/ini_nsv.f90
+
127
−
61
View file @
4da13e98
...
@@ -78,8 +78,9 @@ END MODULE MODI_INI_NSV
...
@@ -78,8 +78,9 @@ END MODULE MODI_INI_NSV
! ------------
! ------------
!
!
USE
MODD_BLOWSNOW
,
ONLY
:
CSNOWNAMES
,
LBLOWSNOW
,
NBLOWSNOW3D
,
YPSNOW_INI
USE
MODD_BLOWSNOW
,
ONLY
:
CSNOWNAMES
,
LBLOWSNOW
,
NBLOWSNOW3D
,
YPSNOW_INI
USE
MODD_CH_AEROSOL
,
ONLY
:
CAERONAMES
,
CDEAERNAMES
,
JPMODE
,
LAERINIT
,
LDEPOS_AER
,
LORILAM
,
&
USE
MODD_CH_AEROSOL
LVARSIGI
,
LVARSIGJ
,
NCARB
,
NM6_AER
,
NSOA
,
NSP
! USE MODD_CH_AEROSOL, ONLY: CAERONAMES, CDEAERNAMES, JPMODE, LAERINIT, LDEPOS_AER, LORILAM, &
! LVARSIGI, LVARSIGJ, NCARB, NM6_AER, NSOA, NSP
USE
MODD_CH_M9_n
,
ONLY
:
CICNAMES
,
CNAMES
,
NEQ
,
NEQAQ
USE
MODD_CH_M9_n
,
ONLY
:
CICNAMES
,
CNAMES
,
NEQ
,
NEQAQ
USE
MODD_CH_MNHC_n
,
ONLY
:
LCH_PH
,
LUSECHEM
,
LUSECHAQ
,
LUSECHIC
,
CCH_SCHEME
,
LCH_CONV_LINOX
USE
MODD_CH_MNHC_n
,
ONLY
:
LCH_PH
,
LUSECHEM
,
LUSECHAQ
,
LUSECHIC
,
CCH_SCHEME
,
LCH_CONV_LINOX
USE
MODD_CONDSAMP
,
ONLY
:
LCONDSAMP
,
NCONDSAMP
USE
MODD_CONDSAMP
,
ONLY
:
LCONDSAMP
,
NCONDSAMP
...
@@ -108,7 +109,7 @@ USE MODD_LG, ONLY: CLGNAMES, XLG1MIN, XLG2MIN, XLG3MIN
...
@@ -108,7 +109,7 @@ USE MODD_LG, ONLY: CLGNAMES, XLG1MIN, XLG2MIN, XLG3MIN
USE
MODD_LUNIT_n
,
ONLY
:
TLUOUT
USE
MODD_LUNIT_n
,
ONLY
:
TLUOUT
USE
MODD_NSV
USE
MODD_NSV
USE
MODD_PARAM_C2R2
,
ONLY
:
LSUPSAT
USE
MODD_PARAM_C2R2
,
ONLY
:
LSUPSAT
USE
MODD_PARAMETERS
,
ONLY
:
NCOMMENTLGTMAX
,
NUNITLGTMAX
USE
MODD_PARAMETERS
,
ONLY
:
NCOMMENTLGTMAX
,
NLONGNAMELGTMAX
,
NUNITLGTMAX
USE
MODD_PARAM_LIMA
,
ONLY
:
NINDICE_CCN_IMM
,
NIMM
,
NMOD_CCN
,
LSCAV
,
LAERO_MASS
,
&
USE
MODD_PARAM_LIMA
,
ONLY
:
NINDICE_CCN_IMM
,
NIMM
,
NMOD_CCN
,
LSCAV
,
LAERO_MASS
,
&
NMOD_IFN
,
NMOD_IMM
,
LHHONI
,
&
NMOD_IFN
,
NMOD_IMM
,
LHHONI
,
&
LWARM
,
LCOLD
,
LRAIN
,
LSPRO
LWARM
,
LCOLD
,
LRAIN
,
LSPRO
...
@@ -141,12 +142,17 @@ CHARACTER(LEN=2) :: YNUM2
...
@@ -141,12 +142,17 @@ CHARACTER(LEN=2) :: YNUM2
CHARACTER
(
LEN
=
3
)
::
YNUM3
CHARACTER
(
LEN
=
3
)
::
YNUM3
CHARACTER
(
LEN
=
NCOMMENTLGTMAX
)
::
YCOMMENT
CHARACTER
(
LEN
=
NCOMMENTLGTMAX
)
::
YCOMMENT
CHARACTER
(
LEN
=
NUNITLGTMAX
)
::
YUNITS
CHARACTER
(
LEN
=
NUNITLGTMAX
)
::
YUNITS
CHARACTER
(
LEN
=
NLONGNAMELGTMAX
),
DIMENSION
(:),
ALLOCATABLE
::
YAEROLONGNAMES
CHARACTER
(
LEN
=
NLONGNAMELGTMAX
),
DIMENSION
(:),
ALLOCATABLE
::
YDUSTLONGNAMES
CHARACTER
(
LEN
=
NLONGNAMELGTMAX
),
DIMENSION
(:),
ALLOCATABLE
::
YSALTLONGNAMES
INTEGER
::
ILUOUT
INTEGER
::
ILUOUT
INTEGER
::
ICHIDX
! Index for position in CSV_CHEM_LIST_A array
INTEGER
::
ICHIDX
! Index for position in CSV_CHEM_LIST_A array
INTEGER
::
ISV
! total number of scalar variables
INTEGER
::
ISV
! total number of scalar variables
INTEGER
::
IMODEIDX
,
IMOMENTS
INTEGER
::
IMODEIDX
INTEGER
::
JAER
INTEGER
::
JI
,
JJ
,
JSV
INTEGER
::
JI
,
JJ
,
JSV
INTEGER
::
JMODE
,
JMOM
,
JSV_NAME
INTEGER
::
JMODE
,
JMOM
,
JSV_NAME
INTEGER
::
INMOMENTS_DST
,
INMOMENTS_SLT
!Number of moments for dust or salt
!
!
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!
!
...
@@ -483,12 +489,18 @@ IF (LDUST) THEN
...
@@ -483,12 +489,18 @@ IF (LDUST) THEN
IF
(
ALLOCATED
(
XT_LS
)
.AND.
.NOT.
(
LDSTPRES
))
LDSTINIT
=
.TRUE.
IF
(
ALLOCATED
(
XT_LS
)
.AND.
.NOT.
(
LDSTPRES
))
LDSTINIT
=
.TRUE.
IF
(
CPROGRAM
==
'IDEAL '
)
LVARSIG
=
.TRUE.
IF
(
CPROGRAM
==
'IDEAL '
)
LVARSIG
=
.TRUE.
IF
((
CPROGRAM
==
'REAL '
)
.AND.
LDSTINIT
)
LVARSIG
=
.TRUE.
IF
((
CPROGRAM
==
'REAL '
)
.AND.
LDSTINIT
)
LVARSIG
=
.TRUE.
NSV_DST_A
(
KMI
)
=
NMODE_DST
*
2
!Determine number of moments
IF
(
LRGFIX_DST
)
THEN
IF
(
LRGFIX_DST
)
THEN
NSV_DST_A
(
KMI
)
=
NMODE_DST
INMOMENTS_DST
=
1
LVARSIG
=
.FALSE.
IF
(
LVARSIG
)
CALL
Print_msg
(
NVERB_WARNING
,
'GEN'
,
'INI_NSV'
,
'LVARSIG forced to FALSE because LRGFIX_DST is TRUE'
)
LVARSIG
=
.FALSE.
ELSE
IF
(
LVARSIG
)
THEN
INMOMENTS_DST
=
3
ELSE
INMOMENTS_DST
=
2
END
IF
END
IF
IF
(
LVARSIG
)
NSV_DST_A
(
KMI
)
=
NSV_DST_A
(
KMI
)
+
NMODE_DST
!Number of entries = number of moments multiplied by number of modes
NSV_DST_A
(
KMI
)
=
NMODE_DST
*
INMOMENTS_DST
NSV_DSTBEG_A
(
KMI
)
=
ISV
+1
NSV_DSTBEG_A
(
KMI
)
=
ISV
+1
NSV_DSTEND_A
(
KMI
)
=
ISV
+
NSV_DST_A
(
KMI
)
NSV_DSTEND_A
(
KMI
)
=
ISV
+
NSV_DST_A
(
KMI
)
ISV
=
NSV_DSTEND_A
(
KMI
)
ISV
=
NSV_DSTEND_A
(
KMI
)
...
@@ -522,12 +534,18 @@ IF (LSALT) THEN
...
@@ -522,12 +534,18 @@ IF (LSALT) THEN
IF
(
ALLOCATED
(
XT_LS
)
.AND.
.NOT.
(
LSLTPRES
))
LSLTINIT
=
.TRUE.
IF
(
ALLOCATED
(
XT_LS
)
.AND.
.NOT.
(
LSLTPRES
))
LSLTINIT
=
.TRUE.
IF
(
CPROGRAM
==
'IDEAL '
)
LVARSIG_SLT
=
.TRUE.
IF
(
CPROGRAM
==
'IDEAL '
)
LVARSIG_SLT
=
.TRUE.
IF
((
CPROGRAM
==
'REAL '
)
.AND.
LSLTINIT
)
LVARSIG_SLT
=
.TRUE.
IF
((
CPROGRAM
==
'REAL '
)
.AND.
LSLTINIT
)
LVARSIG_SLT
=
.TRUE.
NSV_SLT_A
(
KMI
)
=
NMODE_SLT
*
2
!Determine number of moments
IF
(
LRGFIX_SLT
)
THEN
IF
(
LRGFIX_SLT
)
THEN
NSV_SLT_A
(
KMI
)
=
NMODE_SLT
INMOMENTS_SLT
=
1
LVARSIG_SLT
=
.FALSE.
IF
(
LVARSIG_SLT
)
CALL
Print_msg
(
NVERB_WARNING
,
'GEN'
,
'INI_NSV'
,
'LVARSIG_SLT forced to FALSE because LRGFIX_SLT is TRUE'
)
LVARSIG_SLT
=
.FALSE.
ELSE
IF
(
LVARSIG_SLT
)
THEN
INMOMENTS_SLT
=
3
ELSE
INMOMENTS_SLT
=
2
END
IF
END
IF
IF
(
LVARSIG_SLT
)
NSV_SLT_A
(
KMI
)
=
NSV_SLT_A
(
KMI
)
+
NMODE_SLT
!Number of entries = number of moments multiplied by number of modes
NSV_SLT_A
(
KMI
)
=
NMODE_SLT
*
INMOMENTS_SLT
NSV_SLTBEG_A
(
KMI
)
=
ISV
+1
NSV_SLTBEG_A
(
KMI
)
=
ISV
+1
NSV_SLTEND_A
(
KMI
)
=
ISV
+
NSV_SLT_A
(
KMI
)
NSV_SLTEND_A
(
KMI
)
=
ISV
+
NSV_SLT_A
(
KMI
)
ISV
=
NSV_SLTEND_A
(
KMI
)
ISV
=
NSV_SLTEND_A
(
KMI
)
...
@@ -703,26 +721,39 @@ IF ( LDUST ) THEN
...
@@ -703,26 +721,39 @@ IF ( LDUST ) THEN
! Initialization of dust names
! Initialization of dust names
IF
(
.NOT.
ALLOCATED
(
CDUSTNAMES
)
)
THEN
IF
(
.NOT.
ALLOCATED
(
CDUSTNAMES
)
)
THEN
IMOMENTS
=
(
NSV_DSTEND_A
(
KMI
)
-
NSV_DST
BEG
_A
(
KMI
)
+
1
)
/
NMODE_DST
ALLOCATE
(
CDUSTNAMES
(
NSV_DST_A
(
KMI
)
)
)
ALLOCATE
(
C
DUSTNAMES
(
IMOMENTS
*
NMODE_DST
)
)
ALLOCATE
(
Y
DUST
LONG
NAMES
(
NSV_DST_A
(
KMI
)
)
)
!Loop on all dust modes
!Loop on all dust modes
IF
(
IMOMENTS
==
1
)
THEN
IF
(
I
N
MOMENTS
_DST
==
1
)
THEN
DO
JMODE
=
1
,
NMODE_DST
DO
JMODE
=
1
,
NMODE_DST
IMODEIDX
=
JPDUSTORDER
(
JMODE
)
IMODEIDX
=
JPDUSTORDER
(
JMODE
)
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
2
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
2
CDUSTNAMES
(
JMODE
)
=
YPDUST_INI
(
JSV_NAME
)
CDUSTNAMES
(
JMODE
)
=
YPDUST_INI
(
JSV_NAME
)
!Add meaning of the ppv unit (here for moment 3)
YDUSTLONGNAMES
(
JMODE
)
=
TRIM
(
YPDUST_INI
(
JSV_NAME
)
)
//
' [molec_{aer}/molec_{air}]'
END
DO
END
DO
ELSE
ELSE
DO
JMODE
=
1
,
NMODE_DST
DO
JMODE
=
1
,
NMODE_DST
!Find which mode we are dealing with
!Find which mode we are dealing with
IMODEIDX
=
JPDUSTORDER
(
JMODE
)
IMODEIDX
=
JPDUSTORDER
(
JMODE
)
DO
JMOM
=
1
,
IMOMENTS
DO
JMOM
=
1
,
I
N
MOMENTS
_DST
!Find which number this is of the list of scalars
!Find which number this is of the list of scalars
JSV
=
(
JMODE
-
1
)
*
IMOMENTS
+
JMOM
JSV
=
(
JMODE
-
1
)
*
I
N
MOMENTS
_DST
+
JMOM
!Find what name this corresponds to, always 3 moments assumed in YPDUST_INI
!Find what name this corresponds to, always 3 moments assumed in YPDUST_INI
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
JMOM
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
JMOM
!Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT
!Get the right CDUSTNAMES which should follow the list of scalars transported in XSVM/XSVT
CDUSTNAMES
(
JSV
)
=
YPDUST_INI
(
JSV_NAME
)
CDUSTNAMES
(
JSV
)
=
YPDUST_INI
(
JSV_NAME
)
!Add meaning of the ppv unit
IF
(
JMOM
==
1
)
THEN
!Corresponds to moment 0
YDUSTLONGNAMES
(
JSV
)
=
TRIM
(
YPDUST_INI
(
JSV_NAME
)
)
//
' [nb_aerosols/molec_{air}]'
ELSE
IF
(
JMOM
==
2
)
THEN
!Corresponds to moment 3
YDUSTLONGNAMES
(
JSV
)
=
TRIM
(
YPDUST_INI
(
JSV_NAME
)
)
//
' [molec_{aer}/molec_{air}]'
ELSE
IF
(
JMOM
==
3
)
THEN
!Corresponds to moment 6
YDUSTLONGNAMES
(
JSV
)
=
TRIM
(
YPDUST_INI
(
JSV_NAME
)
)
//
' [um6/molec_{air}*(cm3/m3)]'
ELSE
CALL
Print_msg
(
NVERB_WARNING
,
'GEN'
,
'INI_NSV'
,
'unknown moment for DUST'
)
YDUSTLONGNAMES
(
JMODE
)
=
TRIM
(
YPDUST_INI
(
JSV_NAME
)
)
END
IF
ENDDO
! Loop on moments
ENDDO
! Loop on moments
ENDDO
! Loop on dust modes
ENDDO
! Loop on dust modes
END
IF
END
IF
...
@@ -746,26 +777,39 @@ IF ( LSALT ) THEN
...
@@ -746,26 +777,39 @@ IF ( LSALT ) THEN
IF
(
NMODE_SLT
<
1
.OR.
NMODE_SLT
>
5
)
CALL
Print_msg
(
NVERB_FATAL
,
'GEN'
,
'INI_NSV'
,
'NMODE_SLT must in the 1 to 5 interval'
)
IF
(
NMODE_SLT
<
1
.OR.
NMODE_SLT
>
5
)
CALL
Print_msg
(
NVERB_FATAL
,
'GEN'
,
'INI_NSV'
,
'NMODE_SLT must in the 1 to 5 interval'
)
IF
(
.NOT.
ALLOCATED
(
CSALTNAMES
)
)
THEN
IF
(
.NOT.
ALLOCATED
(
CSALTNAMES
)
)
THEN
IMOMENTS
=
(
NSV_SLTEND_A
(
KMI
)
-
NSV_SLT
BEG
_A
(
KMI
)
+
1
)
/
NMODE_SLT
ALLOCATE
(
CSALTNAMES
(
NSV_SLT_A
(
KMI
)
)
)
ALLOCATE
(
C
SALTNAMES
(
IMOMENTS
*
NMODE_SLT
)
)
ALLOCATE
(
Y
SALT
LONG
NAMES
(
NSV_DST_A
(
KMI
)
)
)
!Loop on all dust modes
!Loop on all dust modes
IF
(
IMOMENTS
==
1
)
THEN
IF
(
I
N
MOMENTS
_SLT
==
1
)
THEN
DO
JMODE
=
1
,
NMODE_SLT
DO
JMODE
=
1
,
NMODE_SLT
IMODEIDX
=
JPSALTORDER
(
JMODE
)
IMODEIDX
=
JPSALTORDER
(
JMODE
)
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
2
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
2
CSALTNAMES
(
JMODE
)
=
YPSALT_INI
(
JSV_NAME
)
CSALTNAMES
(
JMODE
)
=
YPSALT_INI
(
JSV_NAME
)
!Add meaning of the ppv unit (here for moment 3)
YSALTLONGNAMES
(
JMODE
)
=
TRIM
(
YPSALT_INI
(
JSV_NAME
)
)
//
' [molec_{aer}/molec_{air}]'
END
DO
END
DO
ELSE
ELSE
DO
JMODE
=
1
,
NMODE_SLT
DO
JMODE
=
1
,
NMODE_SLT
!Find which mode we are dealing with
!Find which mode we are dealing with
IMODEIDX
=
JPSALTORDER
(
JMODE
)
IMODEIDX
=
JPSALTORDER
(
JMODE
)
DO
JMOM
=
1
,
IMOMENTS
DO
JMOM
=
1
,
I
N
MOMENTS
_SLT
!Find which number this is of the list of scalars
!Find which number this is of the list of scalars
JSV
=
(
JMODE
-
1
)
*
IMOMENTS
+
JMOM
JSV
=
(
JMODE
-
1
)
*
I
N
MOMENTS
_SLT
+
JMOM
!Find what name this corresponds to, always 3 moments assumed in YPSALT_INI
!Find what name this corresponds to, always 3 moments assumed in YPSALT_INI
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
JMOM
JSV_NAME
=
(
IMODEIDX
-
1
)
*
3
+
JMOM
!Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT
!Get the right CSALTNAMES which should follow the list of scalars transported in XSVM/XSVT
CSALTNAMES
(
JSV
)
=
YPSALT_INI
(
JSV_NAME
)
CSALTNAMES
(
JSV
)
=
YPSALT_INI
(
JSV_NAME
)
!Add meaning of the ppv unit
IF
(
JMOM
==
1
)
THEN
!Corresponds to moment 0
YSALTLONGNAMES
(
JSV
)
=
TRIM
(
YPSALT_INI
(
JSV_NAME
)
)
//
' [nb_aerosols/molec_{air}]'
ELSE
IF
(
JMOM
==
2
)
THEN
!Corresponds to moment 3
YSALTLONGNAMES
(
JSV
)
=
TRIM
(
YPSALT_INI
(
JSV_NAME
)
)
//
' [molec_{aer}/molec_{air}]'
ELSE
IF
(
JMOM
==
3
)
THEN
!Corresponds to moment 6
YSALTLONGNAMES
(
JSV
)
=
TRIM
(
YPSALT_INI
(
JSV_NAME
)
)
//
' [um6/molec_{air}*(cm3/m3)]'
ELSE
CALL
Print_msg
(
NVERB_WARNING
,
'GEN'
,
'INI_NSV'
,
'unknown moment for SALT'
)
YSALTLONGNAMES
(
JMODE
)
=
TRIM
(
YPSALT_INI
(
JSV_NAME
)
)
END
IF
ENDDO
! Loop on moments
ENDDO
! Loop on moments
ENDDO
! Loop on dust modes
ENDDO
! Loop on dust modes
END
IF
END
IF
...
@@ -786,11 +830,10 @@ END IF
...
@@ -786,11 +830,10 @@ END IF
! Initialize scalar variable names for snow
! Initialize scalar variable names for snow
IF
(
LBLOWSNOW
)
THEN
IF
(
LBLOWSNOW
)
THEN
IF
(
.NOT.
ALLOCATED
(
CSNOWNAMES
)
)
THEN
IF
(
.NOT.
ALLOCATED
(
CSNOWNAMES
)
)
THEN
IMOMENTS
=
(
NSV_SNWEND_A
(
KMI
)
-
NSV_SNWBEG_A
(
KMI
)
+
1
)
ALLOCATE
(
CSNOWNAMES
(
NSV_SNW_A
(
KMI
))
)
ALLOCATE
(
CSNOWNAMES
(
IMOMENTS
)
)
DO
JMOM
=
1
,
NSV_SNW_A
(
KMI
)
DO
JMOM
=
1
,
IMOMENTS
CSNOWNAMES
(
JMOM
)
=
YPSNOW_INI
(
JMOM
)
CSNOWNAMES
(
JMOM
)
=
YPSNOW_INI
(
JMOM
)
ENDDO
! Loop on moments
END
DO
END
IF
END
IF
END
IF
END
IF
...
@@ -1026,17 +1069,40 @@ DO JSV = NSV_AERBEG_A(KMI), NSV_AEREND_A(KMI)
...
@@ -1026,17 +1069,40 @@ DO JSV = NSV_AERBEG_A(KMI), NSV_AEREND_A(KMI)
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
ALLOCATE
(
YAEROLONGNAMES
(
NSV_AER_A
(
KMI
))
)
CMNHNAME
=
TRIM
(
CAERONAMES
(
JSV
-
NSV_AERBEG_A
(
KMI
)
+1
)
),
&
CSTDNAME
=
''
,
&
!Determine moment to add meaning of the ppv unit
CLONGNAME
=
TRIM
(
CAERONAMES
(
JSV
-
NSV_AERBEG_A
(
KMI
)
+1
)
),
&
JAER
=
JSV
-
NSV_AERBEG_A
(
KMI
)
+
1
CUNITS
=
'ppv'
,
&
IF
(
ANY
(
JAER
==
[
JP_CH_M0i
,
JP_CH_M0j
]
)
)
THEN
CDIR
=
'XY'
,
&
!Moment 0
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
YAEROLONGNAMES
=
TRIM
(
CAERONAMES
(
JAER
)
)
//
' [nb_aerosols/molec_{air}]'
NGRID
=
1
,
&
ELSE
IF
(
ANY
(
JAER
==
[
JP_CH_SO4i
,
JP_CH_SO4j
,
JP_CH_NO3i
,
JP_CH_NO3j
,
JP_CH_H2Oi
,
JP_CH_H2Oj
,
JP_CH_NH3i
,
JP_CH_NH3j
,
&
NTYPE
=
TYPEREAL
,
&
JP_CH_OCi
,
JP_CH_OCj
,
JP_CH_BCi
,
JP_CH_BCi
,
JP_CH_DSTi
,
JP_CH_DSTj
]
)
&
NDIMS
=
3
,
&
.OR.
(
NSOA
==
10
.AND.
&
LTIMEDEP
=
.TRUE.
)
ANY
(
JAER
==
[
JP_CH_SOA1i
,
JP_CH_SOA1j
,
JP_CH_SOA2i
,
JP_CH_SOA2j
,
JP_CH_SOA3i
,
JP_CH_SOA3j
,
JP_CH_SOA4i
,
&
JP_CH_SOA4j
,
JP_CH_SOA5i
,
JP_CH_SOA5j
,
JP_CH_SOA6i
,
JP_CH_SOA6j
,
JP_CH_SOA7i
,
JP_CH_SOA7j
,
&
JP_CH_SOA8i
,
JP_CH_SOA8j
,
JP_CH_SOA9i
,
JP_CH_SOA9j
,
JP_CH_SOA10i
,
JP_CH_SOA10j
]
)
)
)
THEN
!Moment 3
YAEROLONGNAMES
=
TRIM
(
CAERONAMES
(
JAER
)
)
//
' [molec_{aer}/molec_{air}]'
ELSE
IF
(
(
LVARSIGI
.AND.
JSV
==
JP_CH_M6i
)
.OR.
(
LVARSIGJ
.AND.
JSV
==
JP_CH_M6j
)
)
THEN
!Moment 6
YAEROLONGNAMES
=
TRIM
(
CAERONAMES
(
JAER
)
)
//
' [um6/molec_{air}*(cm3/m3)]'
ELSE
CALL
Print_msg
(
NVERB_WARNING
,
'GEN'
,
'INI_NSV'
,
'unknown moment for AER'
)
YAEROLONGNAMES
=
TRIM
(
CAERONAMES
(
JAER
)
)
END
IF
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
CMNHNAME
=
TRIM
(
CAERONAMES
(
JSV
-
NSV_AERBEG_A
(
KMI
)
+1
)
),
&
CSTDNAME
=
''
,
&
CLONGNAME
=
TRIM
(
YAEROLONGNAMES
(
JSV
-
NSV_AERBEG_A
(
KMI
)
+1
)
),
&
CUNITS
=
'ppv'
,
&
CDIR
=
'XY'
,
&
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
NGRID
=
1
,
&
NTYPE
=
TYPEREAL
,
&
NDIMS
=
3
,
&
LTIMEDEP
=
.TRUE.
)
END
DO
END
DO
DO
JSV
=
NSV_AERDEPBEG_A
(
KMI
),
NSV_AERDEPEND_A
(
KMI
)
DO
JSV
=
NSV_AERDEPBEG_A
(
KMI
),
NSV_AERDEPEND_A
(
KMI
)
...
@@ -1064,17 +1130,17 @@ DO JSV = NSV_DSTBEG_A(KMI), NSV_DSTEND_A(KMI)
...
@@ -1064,17 +1130,17 @@ DO JSV = NSV_DSTBEG_A(KMI), NSV_DSTEND_A(KMI)
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
CMNHNAME
=
TRIM
(
CDUSTNAMES
(
JSV
-
NSV_DSTBEG_A
(
KMI
)
+1
)
),
&
CMNHNAME
=
TRIM
(
CDUSTNAMES
(
JSV
-
NSV_DSTBEG_A
(
KMI
)
+1
)
),
&
CSTDNAME
=
''
,
&
CSTDNAME
=
''
,
&
CLONGNAME
=
TRIM
(
C
DUSTNAMES
(
JSV
-
NSV_DSTBEG_A
(
KMI
)
+1
)
),
&
CLONGNAME
=
TRIM
(
Y
DUST
LONG
NAMES
(
JSV
-
NSV_DSTBEG_A
(
KMI
)
+1
)
),
&
CUNITS
=
'ppv'
,
&
CUNITS
=
'ppv'
,
&
CDIR
=
'XY'
,
&
CDIR
=
'XY'
,
&
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
NGRID
=
1
,
&
NGRID
=
1
,
&
NTYPE
=
TYPEREAL
,
&
NTYPE
=
TYPEREAL
,
&
NDIMS
=
3
,
&
NDIMS
=
3
,
&
LTIMEDEP
=
.TRUE.
)
LTIMEDEP
=
.TRUE.
)
END
DO
END
DO
DO
JSV
=
NSV_DSTDEPBEG_A
(
KMI
),
NSV_DSTDEPEND_A
(
KMI
)
DO
JSV
=
NSV_DSTDEPBEG_A
(
KMI
),
NSV_DSTDEPEND_A
(
KMI
)
...
@@ -1102,17 +1168,17 @@ DO JSV = NSV_SLTBEG_A(KMI), NSV_SLTEND_A(KMI)
...
@@ -1102,17 +1168,17 @@ DO JSV = NSV_SLTBEG_A(KMI), NSV_SLTEND_A(KMI)
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
WRITE
(
YNUM3
,
'( I3.3 )'
)
JSV
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
TSVLIST_A
(
JSV
,
KMI
)
=
TFIELDMETADATA
(
&
CMNHNAME
=
TRIM
(
CSALTNAMES
(
JSV
-
NSV_SLTBEG_A
(
KMI
)
+1
)
),
&
CMNHNAME
=
TRIM
(
CSALTNAMES
(
JSV
-
NSV_SLTBEG_A
(
KMI
)
+1
)
),
&
CSTDNAME
=
''
,
&
CSTDNAME
=
''
,
&
CLONGNAME
=
TRIM
(
C
SALTNAMES
(
JSV
-
NSV_SLTBEG_A
(
KMI
)
+1
)
),
&
CLONGNAME
=
TRIM
(
Y
SALT
LONG
NAMES
(
JSV
-
NSV_SLTBEG_A
(
KMI
)
+1
)
),
&
CUNITS
=
'ppv'
,
&
CUNITS
=
'ppv'
,
&
CDIR
=
'XY'
,
&
CDIR
=
'XY'
,
&
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
CCOMMENT
=
'X_Y_Z_'
//
'SVT'
//
YNUM3
,
&
NGRID
=
1
,
&
NGRID
=
1
,
&
NTYPE
=
TYPEREAL
,
&
NTYPE
=
TYPEREAL
,
&
NDIMS
=
3
,
&
NDIMS
=
3
,
&
LTIMEDEP
=
.TRUE.
)
LTIMEDEP
=
.TRUE.
)
END
DO
END
DO
DO
JSV
=
NSV_SLTDEPBEG_A
(
KMI
),
NSV_SLTDEPEND_A
(
KMI
)
DO
JSV
=
NSV_SLTDEPBEG_A
(
KMI
),
NSV_SLTDEPEND_A
(
KMI
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment