7 hprogram,ksize,psimtime,psuntime, &
8 kyear,kmonth,kday,prhoa,plon )
39 USE modi_add_forecast_to_date_surf
40 USE modi_substract_to_date_surf
41 USE modi_ch_conversion_factor
47 USE yomhook
,ONLY : lhook, dr_hook
48 USE parkind1
,ONLY : jprb
58 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
59 INTEGER,
INTENT(IN) :: ksize
60 REAL,
INTENT(IN) :: psimtime
63 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: psuntime
64 INTEGER,
INTENT(IN) :: kyear,kmonth,kday
65 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: prhoa
66 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: plon
71 REAL,
DIMENSION(KSIZE) :: zlon
72 REAL,
DIMENSION(KSIZE) :: ztime0
73 INTEGER,
DIMENSION(KSIZE,2) :: iyear
74 INTEGER,
DIMENSION(KSIZE,2) :: imonth
75 INTEGER,
DIMENSION(KSIZE,2) :: iday
76 INTEGER,
DIMENSION(KSIZE,2) :: idow
77 INTEGER,
DIMENSION(KSIZE,2) :: ihour
78 REAL,
DIMENSION(KSIZE,2) :: ztime
82 REAL,
DIMENSION(KSIZE,2) :: ze
84 REAL(KIND=JPRB) :: zhook_handle
91 IF (lhook) CALL dr_hook(
'CH_EMISSION_SNAP_N',0,zhook_handle)
99 chn%CCONVERSION,prhoa(:))
112 SELECT CASE (chn%CSNAP_TIME_REF)
117 WHERE(plon(:)> 180.) zlon(:)=plon(:)-360.
118 WHERE(plon(:)<=-180.) zlon(:)=plon(:)+360.
120 ztime0(:)=psimtime + zlon(:)*240.
123 IF (ztime0(ji)>psuntime(ji)+xday/2.)
THEN
124 ztime0(ji) = psuntime(ji) + xday
125 ELSEIF (ztime0(ji)<psuntime(ji)-xday/2.)
THEN
126 ztime0(ji) = psuntime(ji) - xday
128 ztime0(ji) = psuntime(ji)
135 ztime0(:)=psimtime + chn%XDELTA_LEGAL_TIME(:) * 3600.
143 CALL
day_of_week(iday(:,1), imonth(:,1), iyear(:,1), idow(:,1))
145 ihour(:,1) = int((ztime0(:)+1.e-10)/3600.)
146 WHERE (ihour(:,1)==24) ihour(:,1)=23
147 ztime(:,1) = ihour(:,1) * 3600.
152 imonth(:,2)=imonth(:,1)
153 iyear(:,2)=iyear(:,1)
155 ztime(:,2) = (ihour(:,1)+1) * 3600.
161 CALL
day_of_week(iday(:,2), imonth(:,2), iyear(:,2), idow(:,2))
163 ihour(:,2)=nint(ztime(:,2))/3600
170 chn%XEMIS_FIELDS(:,:)=0.
172 DO jspec=1,chn%NEMIS_NBR
176 DO jsnap=1,chn%NEMIS_SNAP
182 ze(ji,jt) = ze(ji,jt) + chn%XEMIS_FIELDS_SNAP(ji,jsnap,jspec) &
183 *chn%XSNAP_MONTHLY(imonth(ji,jt) ,jsnap,jspec) &
184 *chn%XSNAP_DAILY (idow(ji,jt) ,jsnap,jspec) &
185 *chn%XSNAP_HOURLY (ihour(ji,jt)+1,jsnap,jspec) &
196 chn%XEMIS_FIELDS(:,jspec) = ze(:,1) + (ze(:,2)-ze(:,1))/3600.*(ztime0(:)-ihour(:,1)*3600.)
200 IF (lhook) CALL dr_hook(
'CH_EMISSION_SNAP_N',1,zhook_handle)
217 INTEGER,
DIMENSION(:),
INTENT(IN) :: date, month, year
218 INTEGER,
DIMENSION(:),
INTENT(OUT):: dow
219 INTEGER,
DIMENSION(SIZE(DOW)) :: day, yr, mn, n1, n2
220 REAL(KIND=JPRB) :: zhook_handle
222 IF (lhook) CALL dr_hook(
'CH_EMISSION_SNAP_N:DAY_OF_WEEK',0,zhook_handle)
232 n1 = (26 * (mn + 1)) /10
233 n2 = (125 * yr) / 100
234 day = (date + n1 + n2 - (yr / 100) + (yr / 400) - 1)
237 WHERE (dow.GT.7) dow = dow - 7
239 IF (lhook) CALL dr_hook(
'CH_EMISSION_SNAP_N:DAY_OF_WEEK',1,zhook_handle)
subroutine ch_conversion_factor(CHN, HCONVERSION, PRHOA)
subroutine day_of_week(DATE, MONTH, YEAR, DOW)
subroutine add_forecast_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
subroutine substract_to_date_surf(KYEAR, KMONTH, KDAY, PSEC)
subroutine ch_emission_snap_n(CHN, HPROGRAM, KSIZE, PSIMTIME, PSUNTIME, KYEAR, KMONTH, KDAY, PRHOA, PLON)