59 USE modi_open_namelist
60 USE modi_close_namelist
61 USE modi_get_surf_size_n
67 USE yomhook
,ONLY : lhook, dr_hook
68 USE parkind1
,ONLY : jprb
72 USE modi_get_surf_mask_n
86 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
87 LOGICAL,
INTENT(OUT) :: och_emis
97 INTEGER :: ilu, il_sea, il_land, il
102 INTEGER :: nemis_pgd_nbr
103 CHARACTER(LEN=40),
DIMENSION(JPEMISMAX_F):: cemis_pgd_name
104 CHARACTER(LEN=40),
DIMENSION(JPEMISMAX_F):: cemis_pgd_comment
105 INTEGER,
DIMENSION(JPEMISMAX_F):: nemis_pgd_time
106 CHARACTER(LEN=3),
DIMENSION(JPEMISMAX_F):: cemis_pgd_area
107 CHARACTER(LEN=3),
DIMENSION(JPEMISMAX_F):: cemis_pgd_atype
108 CHARACTER(LEN=28),
DIMENSION(JPEMISMAX_F):: cemis_pgd_file
109 CHARACTER(LEN=6),
DIMENSION(JPEMISMAX_F):: cemis_pgd_filetype
110 CHARACTER(LEN=6) :: ymask
111 REAL,
DIMENSION(:),
ALLOCATABLE :: zemis_field, zemis_fields
112 INTEGER,
DIMENSION(:),
ALLOCATABLE :: imask
113 REAL(KIND=JPRB) :: zhook_handle
116 namelist/nam_ch_emis_pgd/ nemis_pgd_nbr,cemis_pgd_name,nemis_pgd_time,&
117 cemis_pgd_comment,cemis_pgd_area,cemis_pgd_atype,cemis_pgd_file,&
125 IF (lhook) CALL dr_hook(
'PGD_CHEMISTRY',0,zhook_handle)
127 cemis_pgd_name(:) =
' '
128 nemis_pgd_time(:) = 0
129 cemis_pgd_comment(:) =
''
130 cemis_pgd_area(:) =
'ALL'
131 cemis_pgd_filetype(:)=
'DIRECT'
132 cemis_pgd_file(:) =
' '
133 cemis_pgd_atype(:) =
'ARI'
145 CALL
posnam(ilunam,
'NAM_CH_EMIS_PGD',gfound,iluout)
146 IF (gfound)
READ(unit=ilunam,nml=nam_ch_emis_pgd)
155 che%NEMIS_NBR = nemis_pgd_nbr
163 ALLOCATE(zemis_fields(nl))
165 ALLOCATE(che%XEMIS_FIELDS (nl,che%NEMIS_NBR))
166 ALLOCATE(che%CEMIS_AREA (che%NEMIS_NBR))
167 ALLOCATE(che%CEMIS_COMMENT(che%NEMIS_NBR))
168 ALLOCATE(che%CEMIS_NAME (che%NEMIS_NBR))
169 ALLOCATE(che%NEMIS_TIME (che%NEMIS_NBR))
171 che%CEMIS_AREA (:) = cemis_pgd_area(1:che%NEMIS_NBR)
172 che%CEMIS_NAME (:) = cemis_pgd_name(1:che%NEMIS_NBR)
173 che%NEMIS_TIME (:) = nemis_pgd_time(1:che%NEMIS_NBR)
174 che%CEMIS_COMMENT(:) = cemis_pgd_comment(1:che%NEMIS_NBR)
176 che%NTIME_MAX = maxval(che%NEMIS_TIME)
179 och_emis = che%NEMIS_NBR > 0
185 DO jnbr=1,che%NEMIS_NBR
186 catype = cemis_pgd_atype(jnbr)
187 SELECT CASE (che%CEMIS_AREA(jnbr))
198 CALL
abor1_sfx(
'PGD_CHEMISTRY (1): EMISSION AREA NOT SUPPORTED')
200 ALLOCATE(zemis_field(il))
204 hprogram,che%CEMIS_NAME(jnbr),che%CEMIS_AREA(jnbr),cemis_pgd_file(jnbr), &
205 cemis_pgd_filetype(jnbr),xundef,zemis_field(:) )
211 ymask,il,imask,ilu,iluout)
213 DEALLOCATE(zemis_field)
219 SELECT CASE (che%CEMIS_AREA(jnbr))
221 che%XEMIS_FIELDS(:,jnbr) = (u%XNATURE(:)+u%XTOWN(:))*zemis_fields(:)
223 che%XEMIS_FIELDS(:,jnbr) = u%XSEA*zemis_fields(:)
225 che%XEMIS_FIELDS(:,jnbr) = zemis_fields(:)
227 CALL
abor1_sfx(
'PGD_CHEMISTRY (2): EMISSION AREA NOT SUPPORTED')
230 DEALLOCATE(zemis_fields)
231 IF (lhook) CALL dr_hook(
'PGD_CHEMISTRY',1,zhook_handle)
subroutine get_surf_size_n(DTCO, U, HTYPE, KL)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine pgd_chemistry(CHE, DTCO, UG, U, USS, HPROGRAM, OCH_EMIS)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)