8 hprogram,klu,hinit,kch,prhoa)
46 USE modi_ch_conversion_factor
47 USE modi_ch_open_inputb
48 USE modi_build_pronoslist_n
50 USE yomhook
,ONLY : lhook, dr_hook
51 USE parkind1
,ONLY : jprb
62 TYPE(sv_t),
INTENT(INOUT) :: sv
64 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
65 INTEGER,
INTENT(IN) :: klu
66 CHARACTER(LEN=3),
INTENT(IN) :: hinit
70 INTEGER,
INTENT(IN) :: kch
71 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
75 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ztemp
79 CHARACTER (LEN=3) :: yconversion
80 CHARACTER (LEN=16) :: yrecfm
81 CHARACTER (LEN=100) :: ycomment
85 CHARACTER(LEN=40) :: yspec_name
89 REAL(KIND=JPRB) :: zhook_handle
91 IF (lhook) CALL dr_hook(
'CH_INIT_SNAP_N',0,zhook_handle)
97 hprogram,yrecfm,iversion,iresp)
100 hprogram,yrecfm,ibug,iresp)
106 IF (iversion>7 .OR. (iversion==7 .AND. ibug>=3) )
THEN
108 hprogram,
'EMISPEC_NBR',chn%NEMIS_NBR,iresp)
110 hprogram,
'SNAP_NBR',chn%NEMIS_SNAP,iresp)
112 hprogram,
'SNAP_TIME',chn%CSNAP_TIME_REF,iresp)
114 CALL
abor1_sfx(
'CH_INIT_SNAPN: NO SNAP EMISSIONS IN SURFEX FILE: FILE TOO OLD')
128 ALLOCATE(chn%CEMIS_NAME ( chn%NEMIS_NBR))
129 ALLOCATE(chn%CEMIS_COMMENT ( chn%NEMIS_NBR))
130 ALLOCATE(chn%XEMIS_FIELDS_SNAP(klu,chn%NEMIS_SNAP,chn%NEMIS_NBR))
131 ALLOCATE(chn%XEMIS_FIELDS (klu, chn%NEMIS_NBR))
133 ALLOCATE(chn%XSNAP_MONTHLY(chn%NSNAP_M,chn%NEMIS_SNAP,chn%NEMIS_NBR))
134 ALLOCATE(chn%XSNAP_DAILY (chn%NSNAP_D,chn%NEMIS_SNAP,chn%NEMIS_NBR))
135 ALLOCATE(chn%XSNAP_HOURLY (chn%NSNAP_H,chn%NEMIS_SNAP,chn%NEMIS_NBR))
137 IF (chn%CSNAP_TIME_REF==
'LEGAL')
THEN
138 ALLOCATE(chn%XDELTA_LEGAL_TIME(klu))
141 hprogram,yrecfm,chn%XDELTA_LEGAL_TIME(:),iresp,ycomment)
144 IF (hprogram==
"NC ")
THEN
145 isnap = max(chn%NSNAP_M,chn%NSNAP_D,chn%NSNAP_H)
146 ALLOCATE(ztemp(isnap,chn%NEMIS_SNAP))
149 DO jspec = 1,chn%NEMIS_NBR
152 WRITE(yrecfm,
'("EMISNAME",I3.3)') jspec
154 hprogram,yrecfm,yspec_name,iresp,ycomment)
155 chn%CEMIS_COMMENT(jspec)=ycomment
157 CALL
abor1_sfx(
'CH_INIT_SNAPN: PROBLEM WHEN READING NAME OF EMITTED CHEMICAL SPECIES')
159 WRITE(iluout,*)
' Emission ',jspec,
' : ',trim(yspec_name)
160 chn%CEMIS_NAME(jspec) = yspec_name(1:12)
163 DO jsnap=1,chn%NEMIS_SNAP
164 WRITE(yrecfm,
'("SNAP",I2.2,"_",A3)') jsnap,chn%CEMIS_NAME(jspec)
166 hprogram,yrecfm,chn%XEMIS_FIELDS_SNAP(:,jsnap,jspec),iresp,ycomment)
170 yrecfm =
"E_"//trim(chn%CEMIS_NAME(jspec))//
"_M"
171 IF (hprogram==
"NC ")
THEN
173 hprogram,yrecfm,ztemp,iresp,ycomment,hdir=
'-')
174 chn%XSNAP_MONTHLY(:,:,jspec) = ztemp(1:chn%NSNAP_M,:)
177 hprogram,yrecfm,chn%XSNAP_MONTHLY(:,:,jspec),iresp,ycomment,hdir=
'-')
179 yrecfm =
"E_"//trim(chn%CEMIS_NAME(jspec))//
"_D"
180 IF (hprogram==
"NC ")
THEN
182 hprogram,yrecfm,ztemp,iresp,ycomment,hdir=
'-')
183 chn%XSNAP_DAILY(:,:,jspec) = ztemp(1:chn%NSNAP_D,:)
186 hprogram,yrecfm,chn%XSNAP_DAILY(:,:,jspec),iresp,ycomment,hdir=
'-')
188 yrecfm =
"E_"//trim(chn%CEMIS_NAME(jspec))//
"_H"
189 IF (hprogram==
"NC ")
THEN
191 hprogram,yrecfm,ztemp,iresp,ycomment,hdir=
'-')
192 chn%XSNAP_HOURLY(:,:,jspec) = ztemp(1:chn%NSNAP_H,:)
195 hprogram,yrecfm,chn%XSNAP_HOURLY(:,:,jspec),iresp,ycomment,hdir=
'-')
199 IF (hprogram==
"NC ")
DEALLOCATE(ztemp)
204 IF (hinit==
'ALL')
THEN
206 CALL ch_open_inputb(
"EMISUNIT", kch, iluout)
209 READ(kch,
'(A3)') yconversion
212 chn%CCONVERSION = yconversion
214 ALLOCATE (chn%XCONVERSION(klu))
217 chn%CCONVERSION,prhoa)
223 chn%NEMIS_NBR,chn%CEMIS_NAME,chn%TSPRONOSLIST,kch,iluout,6)
228 IF (lhook) CALL dr_hook(
'CH_INIT_SNAP_N',1,zhook_handle)
subroutine ch_conversion_factor(CHN, HCONVERSION, PRHOA)
subroutine abor1_sfx(YTEXT)
subroutine ch_init_snap_n(CHN, SV, HPROGRAM, KLU, HINIT, KCH, PRHOA)
subroutine build_pronoslist_n(SV, KEMIS_NBR, HEMIS_NAME, TPPRONOS, KCH, KLUOUT, KVERB)
subroutine get_luout(HPROGRAM, KLUOUT)