7 hprogram,klu,kch,prhoa)
41 USE modi_build_emisstab_n
42 USE modi_build_pronoslist_n
46 USE yomhook
,ONLY : lhook, dr_hook
47 USE parkind1
,ONLY : jprb
59 TYPE(sv_t),
INTENT(INOUT) :: sv
61 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
62 INTEGER,
INTENT(IN) :: klu
63 INTEGER,
INTENT(IN) :: kch
64 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
70 CHARACTER (LEN=16) :: yrecfm
71 CHARACTER (LEN=100) :: ycomment
73 INTEGER :: iind1,iind2
75 CHARACTER(LEN=40) :: yspec_name
76 CHARACTER(LEN=12),
DIMENSION(:),
ALLOCATABLE :: yemis_name
77 INTEGER,
DIMENSION(:),
ALLOCATABLE :: inbtimes
78 INTEGER,
DIMENSION(:),
ALLOCATABLE :: itimes
79 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ioffndx
83 CHARACTER(LEN=3) :: ysurf
86 REAL(KIND=JPRB) :: zhook_handle
88 IF (lhook) CALL dr_hook(
'CH_INIT_EMISSION_N',0,zhook_handle)
90 WRITE(iluout,*)
'------ Beginning of CH_INIT_EMISSION ------'
95 hprogram,yrecfm,iversion,iresp)
101 IF (iversion>=4)
THEN
103 hprogram,
'EMISFILE_NBR',che%NEMIS_NBR,iresp)
106 hprogram,
'EMISFILE_GR_NBR',che%NEMIS_NBR,iresp)
109 CALL
abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NB OF 2D CHEMICAL EMISSION FIELDS')
113 IF (iversion>=4)
THEN
115 hprogram,
'EMISPEC_NBR',che%NEMISPEC_NBR,iresp)
118 hprogram,
'EMISPEC_GR_NBR',che%NEMISPEC_NBR,iresp)
121 CALL
abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NB OF EMITTED CHEMICAL SPECIES')
125 IF (.NOT.
ASSOCIATED(che%CEMIS_NAME))
THEN
126 ALLOCATE(che%CEMIS_NAME(che%NEMISPEC_NBR))
128 WRITE(iluout,*)
'CEMIS_NAME already allocated with SIZE :',
SIZE(che%CEMIS_NAME)
131 IF (.NOT.
ASSOCIATED(che%CEMIS_AREA))
ALLOCATE(che%CEMIS_AREA(che%NEMISPEC_NBR))
132 IF (.NOT.
ASSOCIATED(che%NEMIS_TIME))
ALLOCATE(che%NEMIS_TIME(che%NEMIS_NBR))
133 che%NEMIS_TIME(:) = -1
135 ALLOCATE(itimes(che%NEMIS_NBR))
136 ALLOCATE(inbtimes(che%NEMISPEC_NBR))
137 ALLOCATE(ioffndx(che%NEMISPEC_NBR))
146 DO jspec = 1,che%NEMISPEC_NBR
150 WRITE(yrecfm,
'("EMISNAME",I3.3)') jspec
152 hprogram,yrecfm,yspec_name,iresp,ycomment)
154 CALL
abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING NAME OF EMITTED CHEMICAL SPECIES')
157 WRITE(yrecfm,
'("EMISAREA",I3.3)') jspec
159 hprogram,yrecfm,ysurf,iresp,ycomment)
160 WRITE(yrecfm,
'("EMISNBT",I3.3)') jspec
162 hprogram,yrecfm,inbts,iresp,ycomment)
163 WRITE(iluout,*)
' Emission ',jspec,
' : ',trim(yspec_name),
'(',inbts,
' instants )'
166 WRITE(yrecfm,
'("EMISTIMES",I3.3)') jspec
168 hprogram,yrecfm,itimes(1:inbts),iresp,ycomment,
'-')
170 CALL
abor1_sfx(
'CH_INIT_EMISSIONN: PROBLEM WHEN READING EMISSION TIMES')
172 IF (inbts == 1)
WRITE(iluout,*)
' -> ',itimes(1)
176 IF (itimes(1) >= 0)
THEN
181 ioffndx(inboff) = jspec
186 che%NEMIS_TIME(iind1:iind2) = itimes(1:inbts)
187 inbtimes(inboff) = inbts
191 che%NTIME_MAX = maxval(che%NEMIS_TIME)
195 che%CEMIS_NAME(jspec) = yspec_name
196 che%CEMIS_AREA(jspec) = ysurf
200 WRITE(iluout,*)
'---- Nunmer of OFFLINE species = ',inboff
201 WRITE(iluout,*)
'INBTIMES=',inbtimes
202 WRITE(iluout,*)
'IOFFNDX=',ioffndx
207 ALLOCATE(che%TSEMISS(inboff))
208 ALLOCATE(yemis_name(inboff))
212 hprogram,kch,che%CEMIS_NAME,inbtimes,che%NEMIS_TIME,&
213 ioffndx,che%TSEMISS,klu,iluout,iverb,prhoa)
215 yemis_name(jspec) = che%TSEMISS(jspec)%CNAME(1:12)
218 SIZE(che%TSEMISS),yemis_name,che%TSPRONOSLIST,kch,iluout,iverb)
219 DEALLOCATE(yemis_name)
221 ALLOCATE(che%TSEMISS(0))
222 nullify(che%TSPRONOSLIST)
225 DEALLOCATE(itimes,inbtimes,ioffndx)
226 WRITE(iluout,*)
'------ Leaving CH_INIT_EMISSION ------'
227 IF (lhook) CALL dr_hook(
'CH_INIT_EMISSION_N',1,zhook_handle)
subroutine abor1_sfx(YTEXT)
subroutine build_pronoslist_n(SV, KEMIS_NBR, HEMIS_NAME, TPPRONOS, KCH, KLUOUT, KVERB)
subroutine ch_init_emission_n(CHE, CHU, SV, HPROGRAM, KLU, KCH, PRHOA)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine build_emisstab_n(CHU, HPROGRAM, KCH, HEMIS_GR_NAME, KNBTIMES, KEMIS_GR_TIME, KOFFNDX, TPEMISS, KSIZE, KLUOUT, KVERB, PRHODREF)