7 HPROGRAM,KSIZE,PSIMTIME,PSUNTIME, &
8 KYEAR,KMONTH,KDAY,PRHOA,PLON )
42 USE modi_add_forecast_to_date_surf
43 USE modi_substract_to_date_surf
44 USE modi_ch_conversion_factor
61 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
62 INTEGER,
INTENT(IN) :: KSIZE
63 REAL,
INTENT(IN) :: PSIMTIME
66 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: PSUNTIME
67 INTEGER,
INTENT(IN) :: KYEAR,KMONTH,KDAY
68 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: PRHOA
69 REAL,
DIMENSION(KSIZE),
INTENT(IN) :: PLON
74 REAL,
DIMENSION(KSIZE) :: ZLON
75 REAL,
DIMENSION(KSIZE) :: ZTIME0
76 INTEGER,
DIMENSION(KSIZE,2) :: IYEAR
77 INTEGER,
DIMENSION(KSIZE,2) :: IMONTH
78 INTEGER,
DIMENSION(KSIZE,2) :: IDAY
79 INTEGER,
DIMENSION(KSIZE,2) :: IDOW
80 INTEGER,
DIMENSION(KSIZE,2) :: IHOUR
81 REAL,
DIMENSION(KSIZE,2) :: ZTIME
85 REAL,
DIMENSION(KSIZE,2) :: ZE
87 REAL(KIND=JPRB) :: ZHOOK_HANDLE
94 IF (
lhook)
CALL dr_hook(
'CH_EMISSION_SNAP_N',0,zhook_handle)
114 SELECT CASE (chn%CSNAP_TIME_REF)
119 WHERE(plon(:)> 180.) zlon(:)=plon(:)-360.
120 WHERE(plon(:)<=-180.) zlon(:)=plon(:)+360.
122 ztime0(:)=psimtime + zlon(:)*240.
125 IF (ztime0(ji)>psuntime(ji)+
xday/2.)
THEN 126 ztime0(ji) = psuntime(ji) +
xday 127 ELSEIF (ztime0(ji)<psuntime(ji)-
xday/2.)
THEN 128 ztime0(ji) = psuntime(ji) -
xday 130 ztime0(ji) = psuntime(ji)
137 ztime0(:)=psimtime + chn%XDELTA_LEGAL_TIME(:) * 3600.
145 CALL day_of_week_ch(iday(:,1), imonth(:,1), iyear(:,1), idow(:,1))
147 ihour(:,1) = int((ztime0(:)+1.e-10)/3600.)
148 WHERE (ihour(:,1)==24) ihour(:,1)=23
149 ztime(:,1) = ihour(:,1) * 3600.
154 imonth(:,2)=imonth(:,1)
155 iyear(:,2)=iyear(:,1)
157 ztime(:,2) = (ihour(:,1)+1) * 3600.
163 CALL day_of_week_ch(iday(:,2), imonth(:,2), iyear(:,2), idow(:,2))
165 ihour(:,2)=nint(ztime(:,2))/3600
172 chn%XEMIS_FIELDS(:,:)=0.
174 DO jspec=1,chn%NEMIS_NBR
178 DO jsnap=1,chn%NEMIS_SNAP
184 ze(ji,jt) = ze(ji,jt) + chn%XEMIS_FIELDS_SNAP(ji,jsnap,jspec) &
185 *chn%XSNAP_MONTHLY(imonth(ji,jt) ,jsnap,jspec) &
186 *chn%XSNAP_DAILY (idow(ji,jt) ,jsnap,jspec) &
187 *chn%XSNAP_HOURLY (ihour(ji,jt)+1,jsnap,jspec) &
198 chn%XEMIS_FIELDS(:,jspec) = ze(:,1) + (ze(:,2)-ze(:,1))/3600.*(ztime0(
202 IF (
lhook)
CALL dr_hook(
'CH_EMISSION_SNAP_N',1,zhook_handle)
222 INTEGER,
DIMENSION(:),
INTENT(IN) :: DATE, MONTH, YEAR
223 INTEGER,
DIMENSION(:),
INTENT(OUT):: DOW
224 INTEGER,
DIMENSION(SIZE(DOW)) :: DAY, YR, MN, N1, N2
225 REAL(KIND=JPRB) :: ZHOOK_HANDLE
227 IF (
lhook)
CALL dr_hook(
'CH_EMISSION_SNAP_N:DAY_OF_WEEK_CH',0,zhook_handle
237 n1 = (26 * (mn + 1)) /10
238 n2 = (125 * yr) / 100
239 day = (date + n1 + n2 - (yr / 100) + (yr / 400) - 1)
242 WHERE (dow.GT.7) dow = dow - 7
244 IF (
lhook)
CALL dr_hook(
'CH_EMISSION_SNAP_N:DAY_OF_WEEK_CH',1,zhook_handle
subroutine ch_conversion_factor(PCONVERSION, HCONVERSION, PRHOA)
subroutine day_of_week_ch(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)