6 SUBROUTINE ch_init_emission_n (CHE, PCONVERSION, HSV, HPROGRAM,KLU,HINIT,PRHOA,HCHEM_SURF_FILE)
39 USE modi_build_emisstab_n
40 USE modi_build_pronoslist_n
42 USE modi_open_namelist
43 USE modi_close_namelist
44 USE modi_read_surf_field2d
59 REAL,
DIMENSION(:),
POINTER :: PCONVERSION
60 CHARACTER(LEN=*),
DIMENSION(:),
POINTER :: HSV
62 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
63 INTEGER,
INTENT(IN) :: KLU
64 CHARACTER(LEN=3),
INTENT(IN) :: HINIT
68 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
69 CHARACTER(LEN=28),
INTENT(IN) :: HCHEM_SURF_FILE
75 CHARACTER (LEN=16) :: YRECFM
76 CHARACTER (LEN=40) :: YCOMMENT
78 INTEGER :: IIND1,IIND2
80 CHARACTER(LEN=40) :: YSPEC_NAME
81 CHARACTER(LEN=12),
DIMENSION(:),
ALLOCATABLE :: YEMIS_NAME
82 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INBTIMES
83 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITIMES
84 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IOFFNDX
89 CHARACTER(LEN=3) :: YSURF
90 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK2D
93 REAL(KIND=JPRB) :: ZHOOK_HANDLE
95 IF (
lhook)
CALL dr_hook(
'CH_INIT_EMISSION_N',0,zhook_handle)
97 WRITE(iluout,*)
'------ Beginning of CH_INIT_EMISSION ------' 101 CALL read_surf(hprogram,yrecfm,iversion,iresp)
107 IF (iversion>=4)
THEN 108 CALL read_surf(hprogram,
'EMISFILE_NBR',che%NEMIS_NBR,iresp)
110 CALL read_surf(hprogram,
'EMISFILE_GR_NBR',che%NEMIS_NBR,iresp)
113 CALL abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NB OF 2D CHEMICAL EMISSION FIELDS' 117 IF (iversion>=4)
THEN 118 CALL read_surf(hprogram,
'EMISPEC_NBR',che%NEMISPEC_NBR,iresp)
120 CALL read_surf(hprogram,
'EMISPEC_GR_NBR',che%NEMISPEC_NBR,iresp)
123 CALL abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NB OF EMITTED CHEMICAL SPECIES' 127 IF (.NOT.
ASSOCIATED(che%CEMIS_NAME))
THEN 128 ALLOCATE(che%CEMIS_NAME(che%NEMISPEC_NBR))
130 WRITE(iluout,*)
'CEMIS_NAME already allocated with SIZE :',
SIZE(che%CEMIS_NAME
133 IF (.NOT.
ASSOCIATED(che%CEMIS_AREA))
ALLOCATE(che%CEMIS_AREA(che%NEMISPEC_NBR
134 IF (.NOT.
ASSOCIATED(che%NEMIS_TIME))
ALLOCATE(che%NEMIS_TIME(che%NEMIS_NBR
137 IF (hinit/=
'ALL')
THEN 138 ALLOCATE(che%XEMIS_FIELDS(klu,che%NEMIS_NBR))
139 ALLOCATE(che%CEMIS_COMMENT(che%NEMIS_NBR))
142 ALLOCATE(itimes(che%NEMIS_NBR))
143 ALLOCATE(inbtimes(che%NEMISPEC_NBR))
144 ALLOCATE(ioffndx(che%NEMISPEC_NBR))
153 DO jspec = 1,che%NEMISPEC_NBR
157 WRITE(yrecfm,
'("EMISNAME",I3.3)') jspec
158 CALL read_surf(hprogram,yrecfm,yspec_name,iresp,ycomment)
160 CALL abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NAME OF EMITTED CHEMICAL SPECIES' 163 WRITE(yrecfm,
'("EMISAREA",I3.3)') jspec
164 CALL read_surf(hprogram,yrecfm,ysurf,iresp,ycomment)
165 WRITE(yrecfm,
'("EMISNBT",I3.3)') jspec
166 CALL read_surf(hprogram,yrecfm,inbts,iresp,ycomment)
167 WRITE(iluout,*)
' Emission ',jspec,
' : ',trim(yspec_name),
'(',inbts,
' instants )' 170 WRITE(yrecfm,
'("EMISTIMES",I3.3)') jspec
171 CALL read_surf(hprogram,yrecfm,itimes(1:inbts),iresp,ycomment,
'-')
173 CALL abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING EMISSION TIMES' 175 IF (inbts == 1)
WRITE(iluout,*)
' -> ',itimes(1)
179 IF (itimes(1) >= 0)
THEN 184 ioffndx(inboff) = jspec
189 che%NEMIS_TIME(iind1:iind2) = itimes(1:inbts)
190 inbtimes(inboff) = inbts
198 che%CEMIS_NAME(jspec) = yspec_name
199 che%CEMIS_AREA(jspec) = ysurf
203 IF (hinit /=
"ALL")
THEN 204 yrecfm=
'E_'//trim(adjustl(yspec_name))
205 ALLOCATE(zwork2d(klu,inbts))
207 che%XEMIS_FIELDS(:,iind1:iind2) = zwork2d(:,:)
208 che%CEMIS_COMMENT(iind1:iind2) = ycomment
214 WRITE(iluout,*)
'---- Nunmer of OFFLINE species = ',inboff
215 WRITE(iluout,*)
'INBTIMES=',inbtimes
216 WRITE(iluout,*)
'IOFFNDX=',ioffndx
222 IF (hinit ==
"ALL")
THEN 225 ALLOCATE(che%TSEMISS(inboff))
226 ALLOCATE(yemis_name(inboff))
231 yemis_name(jspec) = che%TSEMISS(jspec)%CNAME(1:12)
234 DEALLOCATE(yemis_name)
237 ALLOCATE(che%TSEMISS(0))
238 NULLIFY(che%TSPRONOSLIST)
242 DEALLOCATE(itimes,inbtimes,ioffndx)
243 WRITE(iluout,*)
'------ Leaving CH_INIT_EMISSION ------' 244 IF (
lhook)
CALL dr_hook(
'CH_INIT_EMISSION_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 build_pronoslist_n(HSV, KEMIS_NBR, HEMIS_NAME, TPPRONOS,
subroutine ch_init_emission_n(CHE, PCONVERSION, HSV, HPROGRAM, KLU
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_surf_field2d(HPROGRAM, PFIELD2D, HFIELDNAME, HCOMMEN
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)