6 SUBROUTINE build_emisstab_n (PCONVERSION, HPROGRAM,KCH,HEMIS_GR_NAME, KNBTIMES,&
7 KEMIS_GR_TIME,KOFFNDX,TPEMISS,KSIZE,KLUOUT, KVERB,PRHODREF)
36 USE modi_ch_open_inputb
37 USE modi_read_surf_field2d
59 REAL,
DIMENSION(:),
POINTER :: PCONVERSION
61 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
62 INTEGER,
INTENT(IN) :: KCH
63 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HEMIS_GR_NAME
64 INTEGER,
DIMENSION(:),
INTENT(IN) :: KNBTIMES
65 INTEGER,
DIMENSION(:),
INTENT(IN) :: KEMIS_GR_TIME
66 INTEGER,
DIMENSION(:),
INTENT(IN) :: KOFFNDX
67 TYPE(
emissvar_t),
DIMENSION(:),
INTENT(OUT):: TPEMISS
68 INTEGER,
INTENT(IN) :: KSIZE
69 INTEGER,
INTENT(IN) :: KLUOUT
70 INTEGER,
INTENT(IN) :: KVERB
71 REAL,
DIMENSION(:),
INTENT(IN) :: PRHODREF
76 CHARACTER(LEN=3):: YUNIT
79 INTEGER :: IIND1, IIND2
82 INTEGER :: IWS_DEFAULT
83 CHARACTER (LEN=16):: YRECFM
84 REAL(KIND=JPRB) :: ZHOOK_HANDLE
93 IF (
lhook)
CALL dr_hook(
'BUILD_EMISSTAB_N',0,zhook_handle)
95 WRITE(kluout,*)
'******** SUBROUTINE (CHIMIE): BUILD_EMISSTAB_n ********' 104 READ(kch,
'(A3)') yunit
109 ALLOCATE (pconversion(
SIZE(prhodref,1)))
121 pconversion(:) = 1e-6 *
xavogadro / 86400.
124 CALL abor1_sfx(
'CH_BUILDEMISSN: UNKNOWN CONVERSION FACTOR')
129 IF (iws_default < 2) iws_default = 2
133 DO jspec=1,
SIZE(tpemiss)
135 inbts = knbtimes(jspec)
138 tpemiss(jspec)%CNAME = hemis_gr_name(koffndx(jspec))
140 ALLOCATE(tpemiss(jspec)%NETIMES(inbts))
143 tpemiss(jspec)%NETIMES(:) = kemis_gr_time(iind1:iind2)
146 IF (inbts <= iws_default)
THEN 149 tpemiss(jspec)%NWS = inbts
150 tpemiss(jspec)%NDX = 1
151 tpemiss(jspec)%NTX = 1
152 tpemiss(jspec)%LREAD = .false.
153 ALLOCATE(tpemiss(jspec)%XEMISDATA(ksize,inbts))
155 yrecfm=
'E_'//trim(tpemiss(jspec)%CNAME)
160 WHERE(tpemiss(jspec)%XEMISDATA(:,:) == 999.)
161 tpemiss(jspec)%XEMISDATA(:,:) = 0.
163 WHERE(tpemiss(jspec)%XEMISDATA(:,:) == 1.e20)
164 tpemiss(jspec)%XEMISDATA(:,:) = 0.
168 tpemiss(jspec)%XEMISDATA(:,itime) = tpemiss(jspec)%XEMISDATA(:,itime) * pconversion(:)
173 tpemiss(jspec)%NWS = iws_default
174 tpemiss(jspec)%NDX = iws_default
175 tpemiss(jspec)%NTX = 0
176 tpemiss(jspec)%LREAD = .true.
177 ALLOCATE(tpemiss(jspec)%XEMISDATA(ksize,iws_default))
181 tpemiss(jspec)%XFWORK=>tpemiss(jspec)%XEMISDATA(:,1)
183 ALLOCATE(tpemiss(jspec)%XFWORK(ksize))
186 tpemiss(jspec)%NPX = maxval(minloc(tpemiss(jspec)%NETIMES(:)+&
187 (1+(tpemiss(jspec)%NETIMES(inbts)-&
192 WRITE(kluout,*)
'====== Species ',trim(tpemiss(jspec)%CNAME),
' ======' 193 WRITE(kluout,*)
' Emission Times :' ,tpemiss(jspec)%NETIMES
194 WRITE(kluout,*)
' Current time index :' ,tpemiss(jspec)%NTX
195 WRITE(kluout,*)
' Current data index :' ,tpemiss(jspec)%NDX
196 WRITE(kluout,*)
' Periodic index = ',tpemiss(jspec)%NPX,&
197 ' at time :',tpemiss(jspec)%NETIMES(tpemiss(jspec)%NPX)
198 WRITE(kluout,*)
' Read window size :', tpemiss(jspec)%NWS
199 IF (tpemiss(jspec)%LREAD)
THEN 200 WRITE(kluout,*)
' -> Data must be read during simulation.' 202 WRITE(kluout,*)
' -> Data already in memory.' 208 WRITE(kluout,*)
'******** END SUBROUTINE (CHIMIE) : BUILD_EMISSTAB_n ********' 210 IF (
lhook)
CALL dr_hook(
'BUILD_EMISSTAB_N',1,zhook_handle)
subroutine build_emisstab_n(PCONVERSION, HPROGRAM, KCH, HEMIS_GR_NAME, KNBTIMES, KEMIS_GR_TIME, KOFFNDX, TPEMISS, KSIZE, KLUOUT, KVERB, PRHODREF)
subroutine abor1_sfx(YTEXT)
subroutine read_surf_field2d(HPROGRAM, PFIELD2D, HFIELDNAME, HCOMMEN