57 USE modi_open_namelist
58 USE modi_close_namelist
62 USE modi_pgd_snap_temp_profile
67 USE yomhook
,ONLY : lhook, dr_hook
68 USE parkind1
,ONLY : jprb
83 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
84 LOGICAL,
INTENT(OUT) :: och_emis
95 CHARACTER(LEN=5) :: ysnap_time_ref
101 REAL(KIND=JPRB) :: zhook_handle
102 CHARACTER(LEN=12),
DIMENSION(JPEMISMAX_S):: cemis_name
103 CHARACTER(LEN=40),
DIMENSION(JPEMISMAX_S):: cemis_comment
104 CHARACTER(LEN=28),
DIMENSION(JPEMISMAX_S):: csnap_monthly_file
105 CHARACTER(LEN=28),
DIMENSION(JPEMISMAX_S):: csnap_daily_file
106 CHARACTER(LEN=28),
DIMENSION(JPEMISMAX_S):: csnap_hourly_file
107 CHARACTER(LEN=50),
DIMENSION(JPEMISMAX_S,JPSNAPMAX):: csnap_potential_file
108 CHARACTER(LEN=6),
DIMENSION(JPEMISMAX_S) :: csnap_potential_filetype
109 REAL,
DIMENSION(JPEMISMAX_S,JPSNAPMAX):: xunif_snap
110 CHARACTER(LEN=50) :: cdelta_legal_time_file
111 CHARACTER(LEN=6) :: cdelta_legal_time_filetype
112 REAL :: xunif_delta_legal_time
114 INTEGER :: nemis_snap
117 namelist/nam_ch_snap_emis_pgd/ nemis_nbr, nemis_snap, cemis_name,&
119 csnap_monthly_file, &
122 csnap_potential_file, &
123 csnap_potential_filetype, &
125 xunif_delta_legal_time, &
126 cdelta_legal_time_file, &
127 cdelta_legal_time_filetype
134 IF (lhook) CALL dr_hook(
'PGD_CHEMISTRY_SNAP',0,zhook_handle)
137 cemis_comment(:) =
''
144 xunif_delta_legal_time = xundef
145 csnap_monthly_file(:) =
' '
146 csnap_daily_file(:) =
' '
147 csnap_hourly_file(:) =
' '
148 csnap_potential_filetype(:)=
' '
149 csnap_potential_file(:,:) =
' '
150 cdelta_legal_time_filetype =
' '
151 cdelta_legal_time_file =
' '
163 CALL
posnam(ilunam,
'NAM_CH_SNAP_EMIS_PGD',gfound,iluout)
164 IF (gfound)
READ(unit=ilunam,nml=nam_ch_snap_emis_pgd)
173 chn%NEMIS_NBR = nemis_nbr
174 chn%NEMIS_SNAP = nemis_snap
176 ALLOCATE(chn%CEMIS_NAME(nemis_nbr))
177 ALLOCATE(chn%CEMIS_COMMENT(nemis_nbr))
179 ALLOCATE(chn%XSNAP_MONTHLY (chn%NSNAP_M,nemis_snap,nemis_nbr))
180 ALLOCATE(chn%XSNAP_DAILY (chn%NSNAP_D,nemis_snap,nemis_nbr))
181 ALLOCATE(chn%XSNAP_HOURLY (chn%NSNAP_H,nemis_snap,nemis_nbr))
183 chn%CEMIS_NAME (:) = cemis_name(1:nemis_nbr)
184 chn%CEMIS_COMMENT (:) = cemis_comment(1:nemis_nbr)
186 ALLOCATE(chn%XEMIS_FIELDS_SNAP(nl,nemis_snap,nemis_nbr))
189 och_emis = nemis_nbr > 0
199 CALL
pgd_snap_temp_profile(
'ASCII ',csnap_monthly_file(jspec),chn%XSNAP_MONTHLY(:,:,jspec),nemis_snap,chn%NSNAP_M)
200 CALL
pgd_snap_temp_profile(
'ASCII ',csnap_daily_file(jspec), chn%XSNAP_DAILY(:,:,jspec),nemis_snap,chn%NSNAP_D)
202 nemis_snap,chn%NSNAP_H,chn%CSNAP_TIME_REF)
204 IF (jspec==1) ysnap_time_ref = chn%CSNAP_TIME_REF
205 IF (ysnap_time_ref/=chn%CSNAP_TIME_REF)
THEN
206 CALL
abor1_sfx(
'ALL SNAP HOURLY PROFILES MUST HAVE THE SAME TIME REFERENCE')
209 DO jsnap=1,nemis_snap
212 hprogram,
'SNAP',
'ALL',csnap_potential_file(jspec,jsnap), &
213 csnap_potential_filetype(jspec),xunif_snap(jspec,jsnap), &
214 chn%XEMIS_FIELDS_SNAP(:,jsnap,jspec) )
223 IF (chn%CSNAP_TIME_REF==
'LEGAL')
THEN
224 ALLOCATE(chn%XDELTA_LEGAL_TIME(nl))
226 hprogram,
'LEGAL_TIME',
'ALL', cdelta_legal_time_file, &
227 cdelta_legal_time_filetype,xunif_delta_legal_time, &
228 chn%XDELTA_LEGAL_TIME(:) )
234 WHERE(abs(chn%XDELTA_LEGAL_TIME(:))>=24.) &
235 chn%XDELTA_LEGAL_TIME(:) = chn%XDELTA_LEGAL_TIME(:) / 3600.
240 IF (lhook) CALL dr_hook(
'PGD_CHEMISTRY_SNAP',1,zhook_handle)
subroutine pgd_snap_temp_profile(HPROGRAM, HFILENAME, PSNAP_COEF, KSNAP, KTPS, HSNAP_TIME_REF)
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
subroutine pgd_chemistry_snap(CHN, DTCO, UG, U, USS, HPROGRAM, OCH_EMIS)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)