30 USE modi_write_surf_field2d
43 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
47 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
55 CHARACTER(LEN=12) :: YRECFM
56 CHARACTER(LEN=100):: YCOMMENT
57 CHARACTER(LEN=100):: YCOMMENTUNIT
58 CHARACTER(LEN=80) :: YNAME
60 CHARACTER(LEN=40),
DIMENSION(CHE%NEMIS_NBR) :: YEMISPEC_NAMES
61 INTEGER,
DIMENSION(CHE%NEMIS_NBR) :: INBTIMES
62 INTEGER,
DIMENSION(CHE%NEMIS_NBR) :: IFIRST,ILAST,INEXT
66 INTEGER :: INTIMESMAX,ITMP
67 INTEGER :: IEMISPEC_NBR
69 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 IF (
lhook)
CALL dr_hook(
'WRITESURF_CH_EMIS_N',0,zhook_handle)
78 ycomment=
'Total number of 2D emission files.' 80 hprogram,yrecfm,che%NEMIS_NBR,iresp,hcomment=ycomment)
85 yname =
trim(adjustl(che%CEMIS_NAME(ji)))
87 DO jspec = 1,iemispec_nbr
88 IF (yemispec_names(jspec) == yname)
THEN 93 IF (.NOT. gfound)
THEN 94 iemispec_nbr = iemispec_nbr+1
95 yemispec_names(iemispec_nbr) = yname
96 inbtimes(iemispec_nbr) = 1
97 ifirst(iemispec_nbr) = ji
98 ilast(iemispec_nbr) = ji
101 inext(ilast(jspec)) = ji
104 inbtimes(jspec) = inbtimes(jspec)+1
108 yrecfm=
'EMISPEC_NBR ' 109 ycomment=
'Number of emitted chemical species.' 111 hprogram,yrecfm,iemispec_nbr,iresp,hcomment=ycomment)
113 IF (iemispec_nbr > 0)
THEN 115 DO jspec = 1,iemispec_nbr
121 IF (
lhook)
CALL dr_hook(
'WRITESURF_CH_EMIS_N',1,zhook_handle)
128 INTEGER,
INTENT(IN) :: KSIZE
129 INTEGER,
DIMENSION(KSIZE) :: ITIME
130 INTEGER,
DIMENSION(KSIZE) :: IINDEX
131 REAL,
DIMENSION(SIZE(CHE%XEMIS_FIELDS,1),KSIZE) :: ZWORK2D
132 REAL(KIND=JPRB) :: ZHOOK_HANDLE
134 IF (
lhook)
CALL dr_hook(
'WRITESURF_CH_EMIS_N:WRITE_EMIS_SPEC',0,zhook_handle
143 itime(jt) = che%NEMIS_TIME(ji)
147 IF (jt /= ksize)
THEN 148 CALL abor1_sfx(
'WRITESURF_CH_EMISN: ABNORMAL ERROR')
155 IF (itime(ji-1) > itime(ji))
THEN 158 itime(ji-1) = itime(ji)
161 iindex(ji-1) = iindex(ji)
167 zwork2d(:,:) = che%XEMIS_FIELDS(:,iindex(:))
171 WRITE(yrecfm,
'("EMISNAME",I3.3)') jspec
172 WRITE(ycomment,
'(A3,", emission times number:",I5)') che%CEMIS_AREA(iindex
174 hprogram,yrecfm,yemispec_names(jspec),iresp,hcomment=ycomment
176 WRITE(yrecfm,
'("EMISAREA",I3.3)') jspec
177 ycomment =
"Emission area" 179 hprogram,yrecfm,che%CEMIS_AREA(iindex(1)),iresp,hcomment
181 WRITE(yrecfm,
'("EMISNBT",I3.3)') jspec
182 ycomment =
"Emission times number" 184 hprogram,yrecfm,ksize,iresp,hcomment=ycomment)
187 WRITE(yrecfm,
'("EMISTIMES",I3.3)') jspec
188 ycomment =
"Emission times in second" 190 hprogram,yrecfm,itime(:),iresp,hcomment=ycomment,hdir=
'-'"Temporal_emiss " 193 yrecfm =
"E_"//
trim(yemispec_names(jspec))
194 ycomment =
"Emission data (x,y,t),"//
trim(che%CEMIS_COMMENT(iindex(1)))
197 hprogram,zwork2d(:,:),yrecfm,ycomment,ycommentunit,hnam_dim
"Temporal_emiss " 199 IF (
lhook)
CALL dr_hook(
'WRITESURF_CH_EMIS_N:WRITE_EMIS_SPEC',1,zhook_handle
static const char * trim(const char *name, int *n)
subroutine abor1_sfx(YTEXT)
subroutine writesurf_ch_emis_n(HSELECT, CHE, HPROGRAM)
subroutine write_surf_field2d(HSELECT, HPROGRAM, PFIELD2D, HFIELDNAME
subroutine write_emis_spec(KSIZE)