58 iy, id, it, imin, isec, tstep, tstep_prev, dt_since_start, DayofWeek_id, & !input
59 Tmin_id_prev, Tmax_id_prev, lenDay_id_prev, &
61 WaterUseMethod, Ie_start, Ie_end, &
62 LAICalcYes, LAIType, &
63 nsh_real, avkdn, Temp_C, Precip, BaseT_HC, &
64 BaseT_Heating, BaseT_Cooling, &
66 AlbMax_DecTr, AlbMax_EveTr, AlbMax_Grass, &
67 AlbMin_DecTr, AlbMin_EveTr, AlbMin_Grass, &
68 CapMax_dec, CapMin_dec, PorMax_dec, PorMin_dec, &
69 Ie_a, Ie_m, DayWatPer, DayWat, &
70 BaseT, BaseTe, GDDFull, SDDFull, LAIMin, LAIMax, LAIPower, &
71 DecidCap_id_prev, StoreDrainPrm_prev, LAI_id_prev, GDD_id_prev, SDD_id_prev, &
72 albDecTr_id_prev, albEveTr_id_prev, albGrass_id_prev, porosity_id_prev, & !input
74 state_id, soilstore_id, SoilStoreCap, H_maintain, & !input
75 HDD_id_next, & !output
76 Tmin_id_next, Tmax_id_next, lenDay_id_next, &
77 albDecTr_id_next, albEveTr_id_next, albGrass_id_next, porosity_id_next, & !output
78 DecidCap_id_next, StoreDrainPrm_next, LAI_id_next, GDD_id_next, SDD_id_next, WUDay_id)
85 INTEGER,
INTENT(IN) :: iy
86 INTEGER,
INTENT(IN) :: id
87 INTEGER,
INTENT(IN) :: it
88 INTEGER,
INTENT(IN) :: imin
89 INTEGER,
INTENT(IN) :: isec
90 INTEGER,
INTENT(IN) :: tstep
91 INTEGER,
INTENT(IN) :: tstep_prev
92 INTEGER,
INTENT(IN) :: dt_since_start
94 INTEGER,
INTENT(IN) :: WaterUseMethod
95 INTEGER,
INTENT(IN) :: BaseTMethod
96 INTEGER,
INTENT(IN) :: Ie_start
97 INTEGER,
INTENT(IN) :: Ie_end
98 INTEGER,
INTENT(IN) :: LAICalcYes
100 INTEGER,
DIMENSION(nvegsurf),
INTENT(IN) :: LAIType
102 REAL(KIND(1D0)),
INTENT(IN) :: nsh_real
103 REAL(KIND(1D0)),
INTENT(IN) :: avkdn
104 REAL(KIND(1D0)),
INTENT(IN) :: Temp_C
105 REAL(KIND(1D0)),
INTENT(IN) :: Precip
106 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_HC
107 REAL(KIND(1D0)),
DIMENSION(2),
INTENT(IN) :: BaseT_Heating
108 REAL(KIND(1D0)),
DIMENSION(2),
INTENT(IN) :: BaseT_Cooling
109 REAL(KIND(1D0)),
INTENT(IN) :: lat
110 REAL(KIND(1D0)),
INTENT(IN) :: Faut
111 REAL(KIND(1D0)),
INTENT(IN) :: LAI_obs
119 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_DecTr
120 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_EveTr
121 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_Grass
122 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_DecTr
123 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_EveTr
124 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_Grass
125 REAL(KIND(1D0)),
INTENT(IN) :: CapMax_dec
126 REAL(KIND(1D0)),
INTENT(IN) :: CapMin_dec
127 REAL(KIND(1D0)),
INTENT(IN) :: PorMax_dec
128 REAL(KIND(1D0)),
INTENT(IN) :: PorMin_dec
131 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: Ie_a
132 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: Ie_m
133 REAL(KIND(1D0)),
DIMENSION(7),
INTENT(IN) :: DayWatPer
134 REAL(KIND(1D0)),
DIMENSION(7),
INTENT(IN) :: DayWat
137 REAL(KIND(1D0)),
INTENT(IN) :: H_maintain
138 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: state_id
139 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: soilstore_id
140 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(in) :: SoilStoreCap
143 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: BaseT
144 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: BaseTe
145 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: GDDFull
146 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: SDDFull
147 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAIMin
148 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAIMax
149 REAL(KIND(1D0)),
DIMENSION(4, nvegsurf),
INTENT(IN) :: LAIPower
154 REAL(KIND(1D0)),
DIMENSION(3) :: GDD_id
155 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: GDD_id_prev
156 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: GDD_id_next
159 REAL(KIND(1D0)),
DIMENSION(3) :: SDD_id
160 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: SDD_id_prev
161 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: SDD_id_next
164 REAL(KIND(1D0)) :: Tmin_id
165 REAL(KIND(1D0)),
INTENT(IN) :: Tmin_id_prev
166 REAL(KIND(1D0)),
INTENT(out) :: Tmin_id_next
169 REAL(KIND(1D0)) :: Tmax_id
170 REAL(KIND(1D0)),
INTENT(in) :: Tmax_id_prev
171 REAL(KIND(1D0)),
INTENT(out) :: Tmax_id_next
174 REAL(KIND(1D0)) :: lenDay_id
175 REAL(KIND(1D0)),
INTENT(IN) :: lenDay_id_prev
176 REAL(KIND(1D0)),
INTENT(out) :: lenDay_id_next
179 REAL(KIND(1D0)),
DIMENSION(3) :: LAI_id
180 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: LAI_id_prev
181 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: LAI_id_next
187 REAL(KIND(1D0)),
DIMENSION(12) :: HDD_id
188 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(IN) :: HDD_id_prev
189 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(OUT) :: HDD_id_next
209 REAL(KIND(1D0)),
DIMENSION(9),
INTENT(OUT) :: WUDay_id
223 INTEGER,
DIMENSION(3),
INTENT(in) :: DayofWeek_id
227 REAL(KIND(1D0)) :: DecidCap_id
228 REAL(KIND(1D0)),
INTENT(IN) :: DecidCap_id_prev
229 REAL(KIND(1D0)),
INTENT(OUT) :: DecidCap_id_next
230 REAL(KIND(1D0)) :: albDecTr_id
231 REAL(KIND(1D0)),
INTENT(IN) :: albDecTr_id_prev
232 REAL(KIND(1D0)),
INTENT(OUT) :: albDecTr_id_next
233 REAL(KIND(1D0)) :: albEveTr_id
234 REAL(KIND(1D0)),
INTENT(IN) :: albEveTr_id_prev
235 REAL(KIND(1D0)),
INTENT(OUT) :: albEveTr_id_next
236 REAL(KIND(1D0)) :: albGrass_id
237 REAL(KIND(1D0)),
INTENT(IN) :: albGrass_id_prev
238 REAL(KIND(1D0)),
INTENT(OUT) :: albGrass_id_next
239 REAL(KIND(1D0)) :: porosity_id
240 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id_prev
241 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id_next
242 REAL(KIND(1D0)),
DIMENSION(6, nsurf) :: StoreDrainPrm
243 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(in) :: StoreDrainPrm_prev
244 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(out) :: StoreDrainPrm_next
246 LOGICAL :: first_tstep_Q
247 LOGICAL :: last_tstep_Q
248 TYPE(datetime) :: time_now, time_prev, time_next
254 tmin_id = tmin_id_prev
255 tmax_id = tmax_id_prev
256 lenday_id = lenday_id_prev
257 storedrainprm = storedrainprm_prev
258 decidcap_id = decidcap_id_prev
259 albdectr_id = albdectr_id_prev
260 albevetr_id = albevetr_id_prev
261 albgrass_id = albgrass_id_prev
262 porosity_id = porosity_id_prev
266 time_now = datetime(year=iy) + timedelta(days=id - 1, hours=it, minutes=imin, seconds=isec)
267 time_prev = time_now - timedelta(seconds=tstep_prev)
268 time_next = time_now + timedelta(seconds=tstep)
271 first_tstep_q = time_now%getDay() /= time_prev%getDay()
272 last_tstep_q = time_now%getDay() /= time_next%getDay()
276 IF (first_tstep_q)
THEN
296 baset_heating, baset_cooling, &
298 tmin_id, tmax_id, lenday_id, &
311 IF (last_tstep_q)
THEN
313 id, it, imin, tstep, dt_since_start, &
314 tmin_id, tmax_id, lenday_id, &
315 laitype, ie_end, ie_start, laicalcyes, &
316 waterusemethod, dayofweek_id, &
317 albmax_dectr, albmax_evetr, albmax_grass, albmin_dectr, albmin_evetr, albmin_grass, &
318 baset, basete, capmax_dec, capmin_dec, daywat, daywatper, faut, gddfull, &
319 ie_a, ie_m, laimax, laimin, laipower, lat, pormax_dec, pormin_dec, sddfull, lai_obs, &
320 state_id, soilstore_id, soilstorecap, h_maintain, &
337 tmin_id_next = tmin_id
338 tmax_id_next = tmax_id
339 lenday_id_next = lenday_id
340 storedrainprm_next = storedrainprm
341 decidcap_id_next = decidcap_id
342 albdectr_id_next = albdectr_id
343 albevetr_id_next = albevetr_id
344 albgrass_id_next = albgrass_id
345 porosity_id_next = porosity_id
356 iy, id, it, imin, isec, tstep, tstep_prev, dt_since_start, DayofWeek_id, & !input
357 Tmin_id_prev, Tmax_id_prev, lenDay_id_prev, &
359 WaterUseMethod, Ie_start, Ie_end, &
361 evetrLAIType, dectrLAIType, grassLAIType, &
362 nsh_real, avkdn, Temp_C, Precip, BaseT_HC, &
363 BaseT_Heating_working, BaseT_Heating_holiday, &
364 BaseT_Cooling_working, BaseT_Cooling_holiday, &
365 lat, Faut, LAI_obs, &
366 AlbMax_EveTr, AlbMax_DecTr, AlbMax_Grass, &
367 AlbMin_EveTr, AlbMin_DecTr, AlbMin_Grass, &
368 CapMax_dec, CapMin_dec, PorMax_dec, PorMin_dec, &
370 DayWatPer_mon, DayWatPer_tues, DayWatPer_wed, DayWatPer_thur, DayWatPer_fri, DayWatPer_sat, DayWatPer_sun, &
371 DayWat_mon, DayWat_tues, DayWat_wed, DayWat_thur, DayWat_fri, DayWat_sat, DayWat_sun, &
372 evetrBaseT, dectrBaseT, grassBaseT, &
373 evetrBaseTe, dectrBaseTe, grassBaseTe, &
374 evetrGDDFull, dectrGDDFull, grassGDDFull, &
375 evetrSDDFull, dectrSDDFull, grassSDDFull, &
376 evetrLAIMin, dectrLAIMin, grassLAIMin, &
377 evetrLAIMax, dectrLAIMax, grassLAIMax, &
378 evetrLAIPower, dectrLAIPower, grassLAIPower, &
379 DecidCap_id_prev, StoreDrainPrm_prev, LAI_id_prev, GDD_id_prev, SDD_id_prev, &
380 albDecTr_id_prev, albEveTr_id_prev, albGrass_id_prev, porosity_id_prev, & !input
381 HDD_id_prev, & !input
382 state_id, soilstore_id, SoilStoreCap, H_maintain, & !input
383 HDD_id_next, & !output
384 Tmin_id_next, Tmax_id_next, lenDay_id_next, &
385 albDecTr_id_next, albEveTr_id_next, albGrass_id_next, porosity_id_next, & !output
386 DecidCap_id_next, StoreDrainPrm_next, LAI_id_next, GDD_id_next, SDD_id_next, WUDay_id)
393 INTEGER,
INTENT(IN) :: iy
394 INTEGER,
INTENT(IN) :: id
395 INTEGER,
INTENT(IN) :: it
396 INTEGER,
INTENT(IN) :: imin
397 INTEGER,
INTENT(IN) :: isec
398 INTEGER,
INTENT(IN) :: tstep
399 INTEGER,
INTENT(IN) :: tstep_prev
400 INTEGER,
INTENT(IN) :: dt_since_start
402 INTEGER,
INTENT(IN) :: WaterUseMethod
403 INTEGER,
INTENT(IN) :: BaseTMethod
404 INTEGER,
INTENT(IN) :: Ie_start
405 INTEGER,
INTENT(IN) :: Ie_end
406 INTEGER,
INTENT(IN) :: LAICalcYes
408 INTEGER,
INTENT(IN) :: dectrLAIType
409 INTEGER,
INTENT(IN) :: evetrLAIType
410 INTEGER,
INTENT(IN) :: grassLAIType
411 INTEGER,
DIMENSION(nvegsurf) :: LAIType
413 REAL(KIND(1D0)),
INTENT(IN) :: nsh_real
414 REAL(KIND(1D0)),
INTENT(IN) :: avkdn
415 REAL(KIND(1D0)),
INTENT(IN) :: Temp_C
416 REAL(KIND(1D0)),
INTENT(IN) :: Precip
417 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_HC
419 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_Heating_working
420 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_Heating_holiday
421 REAL(KIND(1D0)),
DIMENSION(2) :: BaseT_Heating
423 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_Cooling_working
424 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_Cooling_holiday
425 REAL(KIND(1D0)),
DIMENSION(2) :: BaseT_Cooling
427 REAL(KIND(1D0)),
INTENT(IN) :: lat
428 REAL(KIND(1D0)),
INTENT(IN) :: Faut
429 REAL(KIND(1D0)),
INTENT(IN) :: LAI_obs
437 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_EveTr
438 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_DecTr
439 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_Grass
440 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_EveTr
441 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_DecTr
442 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_Grass
443 REAL(KIND(1D0)),
INTENT(IN) :: CapMax_dec
444 REAL(KIND(1D0)),
INTENT(IN) :: CapMin_dec
445 REAL(KIND(1D0)),
INTENT(IN) :: PorMax_dec
446 REAL(KIND(1D0)),
INTENT(IN) :: PorMin_dec
449 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: Ie_a
450 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: Ie_m
452 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_mon
453 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_tues
454 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_wed
455 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_thur
456 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_fri
457 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_sat
458 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer_sun
459 REAL(KIND(1D0)),
DIMENSION(7) :: DayWatPer
461 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_mon
462 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_tues
463 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_wed
464 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_thur
465 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_fri
466 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_sat
467 REAL(KIND(1D0)),
INTENT(IN) :: DayWat_sun
468 REAL(KIND(1D0)),
DIMENSION(7) :: DayWat
471 REAL(KIND(1D0)),
INTENT(IN) :: H_maintain
472 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: state_id
473 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: soilstore_id
474 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(in) :: SoilStoreCap
477 REAL(KIND(1D0)),
INTENT(IN) :: evetrBaseT
478 REAL(KIND(1D0)),
INTENT(IN) :: dectrBaseT
479 REAL(KIND(1D0)),
INTENT(IN) :: grassBaseT
480 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: BaseT
482 REAL(KIND(1D0)),
INTENT(IN) :: evetrBaseTe
483 REAL(KIND(1D0)),
INTENT(IN) :: dectrBaseTe
484 REAL(KIND(1D0)),
INTENT(IN) :: grassBaseTe
485 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: BaseTe
487 REAL(KIND(1D0)),
INTENT(IN) :: evetrGDDFull
488 REAL(KIND(1D0)),
INTENT(IN) :: dectrGDDFull
489 REAL(KIND(1D0)),
INTENT(IN) :: grassGDDFull
490 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: GDDFull
492 REAL(KIND(1D0)),
INTENT(IN) :: evetrSDDFull
493 REAL(KIND(1D0)),
INTENT(IN) :: dectrSDDFull
494 REAL(KIND(1D0)),
INTENT(IN) :: grassSDDFull
495 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: SDDFull
497 REAL(KIND(1D0)),
INTENT(IN) :: evetrLAIMin
498 REAL(KIND(1D0)),
INTENT(IN) :: dectrLAIMin
499 REAL(KIND(1D0)),
INTENT(IN) :: grassLAIMin
500 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: LAIMin
502 REAL(KIND(1D0)),
INTENT(IN) :: evetrLAIMax
503 REAL(KIND(1D0)),
INTENT(IN) :: dectrLAIMax
504 REAL(KIND(1D0)),
INTENT(IN) :: grassLAIMax
505 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: LAIMax
507 REAL(KIND(1D0)),
DIMENSION(4),
INTENT(IN) :: evetrLAIPower
508 REAL(KIND(1D0)),
DIMENSION(4),
INTENT(IN) :: dectrLAIPower
509 REAL(KIND(1D0)),
DIMENSION(4),
INTENT(IN) :: grassLAIPower
510 REAL(KIND(1D0)),
DIMENSION(4, nvegsurf) :: LAIPower
515 REAL(KIND(1D0)),
DIMENSION(3) :: GDD_id
516 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: GDD_id_prev
517 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: GDD_id_next
520 REAL(KIND(1D0)),
DIMENSION(3) :: SDD_id
521 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: SDD_id_prev
522 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: SDD_id_next
525 REAL(KIND(1D0)) :: Tmin_id
526 REAL(KIND(1D0)),
INTENT(IN) :: Tmin_id_prev
527 REAL(KIND(1D0)),
INTENT(out) :: Tmin_id_next
530 REAL(KIND(1D0)) :: Tmax_id
531 REAL(KIND(1D0)),
INTENT(in) :: Tmax_id_prev
532 REAL(KIND(1D0)),
INTENT(out) :: Tmax_id_next
535 REAL(KIND(1D0)) :: lenDay_id
536 REAL(KIND(1D0)),
INTENT(IN) :: lenDay_id_prev
537 REAL(KIND(1D0)),
INTENT(out) :: lenDay_id_next
540 REAL(KIND(1D0)),
DIMENSION(3) :: LAI_id
541 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(IN) :: LAI_id_prev
542 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(OUT) :: LAI_id_next
548 REAL(KIND(1D0)),
DIMENSION(12) :: HDD_id
549 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(IN) :: HDD_id_prev
550 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(OUT) :: HDD_id_next
570 REAL(KIND(1D0)),
DIMENSION(9),
INTENT(OUT) :: WUDay_id
584 INTEGER,
DIMENSION(3),
INTENT(in) :: DayofWeek_id
588 REAL(KIND(1D0)) :: DecidCap_id
589 REAL(KIND(1D0)),
INTENT(IN) :: DecidCap_id_prev
590 REAL(KIND(1D0)),
INTENT(OUT) :: DecidCap_id_next
591 REAL(KIND(1D0)) :: albDecTr_id
592 REAL(KIND(1D0)),
INTENT(IN) :: albDecTr_id_prev
593 REAL(KIND(1D0)),
INTENT(OUT) :: albDecTr_id_next
594 REAL(KIND(1D0)) :: albEveTr_id
595 REAL(KIND(1D0)),
INTENT(IN) :: albEveTr_id_prev
596 REAL(KIND(1D0)),
INTENT(OUT) :: albEveTr_id_next
597 REAL(KIND(1D0)) :: albGrass_id
598 REAL(KIND(1D0)),
INTENT(IN) :: albGrass_id_prev
599 REAL(KIND(1D0)),
INTENT(OUT) :: albGrass_id_next
600 REAL(KIND(1D0)) :: porosity_id
601 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id_prev
602 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id_next
603 REAL(KIND(1D0)),
DIMENSION(6, nsurf) :: StoreDrainPrm
604 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(in) :: StoreDrainPrm_prev
605 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(out) :: StoreDrainPrm_next
607 LOGICAL :: first_tstep_Q
608 LOGICAL :: last_tstep_Q
609 TYPE(datetime) :: time_now, time_prev, time_next
611 daywatper(1) = daywatper_mon
612 daywatper(2) = daywatper_tues
613 daywatper(3) = daywatper_wed
614 daywatper(4) = daywatper_thur
615 daywatper(5) = daywatper_fri
616 daywatper(6) = daywatper_sat
617 daywatper(7) = daywatper_sun
619 daywat(1) = daywat_mon
620 daywat(2) = daywat_tues
621 daywat(3) = daywat_wed
622 daywat(4) = daywat_thur
623 daywat(5) = daywat_fri
624 daywat(6) = daywat_sat
625 daywat(7) = daywat_sun
627 laitype(1) = evetrlaitype
628 laitype(2) = dectrlaitype
629 laitype(3) = grasslaitype
631 baset_heating(1) = baset_heating_working
632 baset_heating(2) = baset_heating_holiday
633 baset_cooling(1) = baset_cooling_working
634 baset_cooling(2) = baset_cooling_holiday
636 baset(1) = evetrbaset
637 baset(2) = dectrbaset
638 baset(3) = grassbaset
640 basete(1) = evetrbasete
641 basete(2) = dectrbasete
642 basete(3) = grassbasete
644 gddfull(1) = evetrgddfull
645 gddfull(2) = dectrgddfull
646 gddfull(3) = grassgddfull
648 sddfull(1) = evetrsddfull
649 sddfull(2) = dectrsddfull
650 sddfull(3) = grasssddfull
652 laimin(1) = evetrlaimin
653 laimin(2) = dectrlaimin
654 laimin(3) = grasslaimin
656 laimax(1) = evetrlaimax
657 laimax(2) = dectrlaimax
658 laimax(3) = grasslaimax
660 laipower(:, 1) = evetrlaipower
661 laipower(:, 2) = dectrlaipower
662 laipower(:, 3) = grasslaipower
668 tmin_id = tmin_id_prev
669 tmax_id = tmax_id_prev
670 lenday_id = lenday_id_prev
671 storedrainprm = storedrainprm_prev
672 decidcap_id = decidcap_id_prev
673 albdectr_id = albdectr_id_prev
674 albevetr_id = albevetr_id_prev
675 albgrass_id = albgrass_id_prev
676 porosity_id = porosity_id_prev
680 time_now = datetime(year=iy) + timedelta(days=id - 1, hours=it, minutes=imin, seconds=isec)
681 time_prev = time_now - timedelta(seconds=tstep_prev)
682 time_next = time_now + timedelta(seconds=tstep)
685 first_tstep_q = time_now%getDay() /= time_prev%getDay()
686 last_tstep_q = time_now%getDay() /= time_next%getDay()
690 IF (first_tstep_q)
THEN
710 baset_heating, baset_cooling, &
712 tmin_id, tmax_id, lenday_id, &
725 IF (last_tstep_q)
THEN
727 id, it, imin, tstep, dt_since_start, &
728 tmin_id, tmax_id, lenday_id, &
729 laitype, ie_end, ie_start, laicalcyes, &
730 waterusemethod, dayofweek_id, &
731 albmax_dectr, albmax_evetr, albmax_grass, albmin_dectr, albmin_evetr, albmin_grass, &
732 baset, basete, capmax_dec, capmin_dec, daywat, daywatper, faut, gddfull, &
733 ie_a, ie_m, laimax, laimin, laipower, lat, pormax_dec, pormin_dec, sddfull, lai_obs, &
734 state_id, soilstore_id, soilstorecap, h_maintain, &
751 tmin_id_next = tmin_id
752 tmax_id_next = tmax_id
753 lenday_id_next = lenday_id
754 storedrainprm_next = storedrainprm
755 decidcap_id_next = decidcap_id
756 albdectr_id_next = albdectr_id
757 albevetr_id_next = albevetr_id
758 albgrass_id_next = albgrass_id
759 porosity_id_next = porosity_id
770 id, it, imin, tstep, dt_since_start, & !input
771 Tmin_id, Tmax_id, lenDay_id, &
772 LAIType, Ie_end, Ie_start, LAICalcYes, &
773 WaterUseMethod, DayofWeek_id, &
774 AlbMax_DecTr, AlbMax_EveTr, AlbMax_Grass, AlbMin_DecTr, AlbMin_EveTr, AlbMin_Grass, &
775 BaseT, BaseTe, CapMax_dec, CapMin_dec, DayWat, DayWatPer, Faut, GDDFull, &
776 Ie_a, Ie_m, LAIMax, LAIMin, LAIPower, lat, PorMax_dec, PorMin_dec, SDDFull, LAI_obs, &
777 state_id, soilstore_id, SoilStoreCap, H_maintain, & !input
778 GDD_id, SDD_id, & !inout
790 INTEGER,
INTENT(IN) :: id
791 INTEGER,
INTENT(IN) :: it
792 INTEGER,
INTENT(IN) :: imin
793 INTEGER,
INTENT(IN) :: tstep
794 INTEGER,
INTENT(IN) :: dt_since_start
795 INTEGER,
INTENT(IN) :: LAIType(nvegsurf)
796 INTEGER,
INTENT(IN) :: Ie_end
797 INTEGER,
INTENT(IN) :: Ie_start
798 INTEGER,
INTENT(IN) :: LAICalcYes
799 INTEGER,
INTENT(IN) :: WaterUseMethod
800 INTEGER,
INTENT(in) :: DayofWeek_id(3)
802 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_DecTr
803 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_EveTr
804 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_Grass
805 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_DecTr
806 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_EveTr
807 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_Grass
808 REAL(KIND(1D0)),
INTENT(IN) :: BaseT(nvegsurf)
809 REAL(KIND(1D0)),
INTENT(IN) :: BaseTe(nvegsurf)
810 REAL(KIND(1D0)),
INTENT(IN) :: CapMax_dec
811 REAL(KIND(1D0)),
INTENT(IN) :: CapMin_dec
812 REAL(KIND(1D0)),
INTENT(IN) :: DayWat(7)
813 REAL(KIND(1D0)),
INTENT(IN) :: DayWatPer(7)
814 REAL(KIND(1D0)),
INTENT(IN) :: Faut
815 REAL(KIND(1D0)),
INTENT(IN) :: GDDFull(nvegsurf)
816 REAL(KIND(1D0)),
INTENT(IN) :: Ie_a(3)
817 REAL(KIND(1D0)),
INTENT(IN) :: Ie_m(3)
818 REAL(KIND(1D0)),
INTENT(IN) :: LAIMax(nvegsurf)
819 REAL(KIND(1D0)),
INTENT(IN) :: LAIMin(nvegsurf)
820 REAL(KIND(1D0)),
INTENT(IN) :: LAIPower(4, nvegsurf)
821 REAL(KIND(1D0)),
INTENT(IN) :: lat
822 REAL(KIND(1D0)),
INTENT(IN) :: PorMax_dec
823 REAL(KIND(1D0)),
INTENT(IN) :: PorMin_dec
824 REAL(KIND(1D0)),
INTENT(IN) :: SDDFull(nvegsurf)
825 REAL(KIND(1D0)),
INTENT(IN) :: LAI_obs
826 REAL(KIND(1D0)),
INTENT(IN) :: Tmin_id
827 REAL(KIND(1D0)),
INTENT(IN) :: Tmax_id
828 REAL(KIND(1D0)),
INTENT(IN) :: lenDay_id
829 REAL(KIND(1D0)),
INTENT(IN) :: H_maintain
830 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: state_id
831 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: soilstore_id
832 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(in) :: SoilStoreCap
834 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(INOUT) :: GDD_id
835 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(INOUT) :: SDD_id
836 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(INOUT) :: HDD_id
837 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(INOUT) :: LAI_id
840 REAL(KIND(1D0)),
DIMENSION(nvegsurf) :: LAI_id_in
842 REAL(KIND(1D0)),
DIMENSION(9),
INTENT(OUT) :: WUDay_id
844 REAL(KIND(1D0)),
INTENT(INOUT) :: DecidCap_id
845 REAL(KIND(1D0)),
INTENT(INOUT) :: albDecTr_id
846 REAL(KIND(1D0)),
INTENT(INOUT) :: albEveTr_id
847 REAL(KIND(1D0)),
INTENT(INOUT) :: albGrass_id
848 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id
850 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(inout) :: StoreDrainPrm
854 dt_since_start, it, imin, tstep, &
859 id, waterusemethod, dayofweek_id, lat, faut, hdd_id, &
860 state_id, soilstore_id, soilstorecap, h_maintain, &
861 ie_a, ie_m, ie_start, ie_end, daywatper, daywat, &
878 tmin_id, tmax_id, lenday_id, &
881 laimin, laimax, laipower, laitype, &
888 albmax_dectr, albmax_evetr, albmax_grass, &
889 albmin_dectr, albmin_evetr, albmin_grass, &
890 capmax_dec, capmin_dec, &
891 pormax_dec, pormin_dec, &
915 BaseT_Heating, BaseT_Cooling, &
917 Tmin_id, Tmax_id, lenDay_id, & !inout
922 INTEGER,
INTENT(IN) :: BaseTMethod
923 INTEGER,
DIMENSION(3),
INTENT(in) :: DayofWeek_id
925 REAL(KIND(1D0)),
INTENT(IN) :: avkdn
926 REAL(KIND(1D0)),
INTENT(IN) :: Temp_C
927 REAL(KIND(1D0)),
INTENT(IN) :: Precip
928 REAL(KIND(1D0)),
INTENT(IN) :: BaseT_HC
929 REAL(KIND(1D0)),
DIMENSION(2),
INTENT(IN) :: BaseT_Heating
930 REAL(KIND(1D0)),
DIMENSION(2),
INTENT(IN) :: BaseT_Cooling
931 REAL(KIND(1D0)),
INTENT(IN) :: nsh_real
932 REAL(KIND(1D0)),
INTENT(INOUT) :: Tmin_id
933 REAL(KIND(1D0)),
INTENT(INOUT) :: Tmax_id
934 REAL(KIND(1D0)),
INTENT(INOUT) :: lenDay_id
942 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(INOUT) :: HDD_id
946 REAL(KIND(1D0)) :: dT_heating
947 REAL(KIND(1D0)) :: dT_cooling
949 REAL(KIND(1D0)) :: BaseT_Heating_use
950 REAL(KIND(1D0)) :: BaseT_Cooling_use
954 IF (dayofweek_id(1) == 1 .OR. dayofweek_id(1) == 7) iu = 2
956 SELECT CASE (basetmethod)
958 baset_heating_use = baset_hc
959 baset_cooling_use = baset_hc
961 baset_heating_use = baset_heating(iu)
962 baset_cooling_use = baset_cooling(iu)
965 CALL errorhint(75,
"RunControl.nml", -999, -999, -999)
970 tmin_id = min(temp_c, tmin_id)
971 tmax_id = max(temp_c, tmax_id)
973 lenday_id = lenday_id + 1/nsh_real
978 dt_heating = baset_heating_use - temp_c
979 dt_cooling = temp_c - baset_cooling_use
981 hdd_id(1) = hdd_id(1) + merge(dt_heating, 0d0, dt_heating >= 0)
982 hdd_id(2) = hdd_id(2) + merge(dt_cooling, 0d0, dt_cooling >= 0)
983 hdd_id(3) = hdd_id(3) + temp_c
985 hdd_id(5) = hdd_id(5) + precip
991 LAImax, LAIMin, & !input
992 AlbMax_DecTr, AlbMax_EveTr, AlbMax_Grass, &
993 AlbMin_DecTr, AlbMin_EveTr, AlbMin_Grass, &
994 CapMax_dec, CapMin_dec, &
995 PorMax_dec, PorMin_dec, &
996 LAI_id, LAI_id_prev, &
997 DecidCap_id, & !inout
1007 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAImax
1008 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAIMin
1010 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_DecTr
1011 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_EveTr
1012 REAL(KIND(1D0)),
INTENT(IN) :: AlbMax_Grass
1013 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_DecTr
1014 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_EveTr
1015 REAL(KIND(1D0)),
INTENT(IN) :: AlbMin_Grass
1016 REAL(KIND(1D0)),
INTENT(IN) :: CapMax_dec
1017 REAL(KIND(1D0)),
INTENT(IN) :: CapMin_dec
1018 REAL(KIND(1D0)),
INTENT(IN) :: PorMax_dec
1019 REAL(KIND(1D0)),
INTENT(IN) :: PorMin_dec
1020 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAI_id, LAI_id_prev
1022 REAL(KIND(1D0)),
INTENT(INOUT) :: DecidCap_id
1023 REAL(KIND(1D0)),
INTENT(INOUT) :: albDecTr_id
1024 REAL(KIND(1D0)),
INTENT(INOUT) :: albEveTr_id
1025 REAL(KIND(1D0)),
INTENT(INOUT) :: albGrass_id
1026 REAL(KIND(1D0)),
INTENT(INOUT) :: porosity_id
1028 REAL(KIND(1D0)),
DIMENSION(6, nsurf),
INTENT(inout) :: StoreDrainPrm
1032 REAL(KIND(1D0)) :: albChangeDecTr
1033 REAL(KIND(1D0)) :: albChangeEveTr
1034 REAL(KIND(1D0)) :: albChangeGrass
1035 REAL(KIND(1D0)) :: CapChange
1037 REAL(KIND(1D0)) :: deltaLAIDecTr
1038 REAL(KIND(1D0)) :: deltaLAIEveTr
1039 REAL(KIND(1D0)) :: deltaLAIGrass
1040 REAL(KIND(1D0)) :: porChange
1057 IF ((lai_id(iv) - lai_id_prev(iv)) /= 0)
THEN
1058 deltalaidectr = (lai_id(iv) - lai_id_prev(iv))/(laimax(iv) - laimin(iv))
1059 albchangedectr = (albmax_dectr - albmin_dectr)*deltalaidectr
1060 capchange = (capmin_dec - capmax_dec)*deltalaidectr
1061 porchange = (pormin_dec - pormax_dec)*deltalaidectr
1065 IF ((lai_id(iv) - lai_id_prev(iv)) /= 0)
THEN
1066 deltalaievetr = (lai_id(iv) - lai_id_prev(iv))/(laimax(iv) - laimin(iv))
1067 albchangeevetr = (albmax_evetr - albmin_evetr)*deltalaievetr
1071 IF ((lai_id(iv) - lai_id_prev(iv)) /= 0)
THEN
1072 deltalaigrass = (lai_id(iv) - lai_id_prev(iv))/(laimax(iv) - laimin(iv))
1073 albchangegrass = (albmax_grass - albmin_grass)*deltalaigrass
1080 decidcap_id = decidcap_id - capchange
1081 storedrainprm(6,
decidsurf) = decidcap_id
1082 porosity_id = porosity_id + porchange
1083 porosity_id = min(max(porosity_id, max(pormin_dec, 0.1)), min(pormax_dec, 0.9))
1089 albdectr_id = albdectr_id + albchangedectr
1090 albevetr_id = albevetr_id + albchangeevetr
1091 albgrass_id = albgrass_id + albchangegrass
1096 id, LAICalcYes, & !input
1098 Tmin_id_prev, Tmax_id_prev, lenDay_id_prev, &
1101 LAIMin, LAIMax, LAIPower, LAIType, &
1103 GDD_id, SDD_id, & !inout
1112 INTEGER,
INTENT(IN) :: id
1113 INTEGER,
INTENT(IN) :: LAICalcYes
1115 REAL(KIND(1D0)),
INTENT(IN) :: lat
1116 REAL(KIND(1D0)),
INTENT(IN) :: LAI_obs
1117 REAL(KIND(1D0)),
INTENT(IN) :: Tmin_id_prev
1118 REAL(KIND(1D0)),
INTENT(IN) :: Tmax_id_prev
1119 REAL(KIND(1D0)),
INTENT(IN) :: lenDay_id_prev
1123 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: BaseT
1124 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: BaseTe
1125 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: GDDFull
1126 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: SDDFull
1127 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAIMin
1128 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAIMax
1129 REAL(KIND(1D0)),
DIMENSION(4, nvegsurf),
INTENT(IN) :: LAIPower
1131 INTEGER,
DIMENSION(nvegsurf),
INTENT(IN) :: LAIType
1133 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(INOUT) :: GDD_id
1134 REAL(KIND(1D0)),
DIMENSION(3),
INTENT(INOUT) :: SDD_id
1135 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(OUT) :: LAI_id_next
1136 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAI_id_prev
1138 REAL(KIND(1D0)) :: delta_SDD
1139 REAL(KIND(1D0)) :: delta_GDD
1140 REAL(KIND(1D0)) :: indHelp
1141 REAL(KIND(1D0)),
DIMENSION(3) :: GDD_id_prev
1142 REAL(KIND(1D0)),
DIMENSION(3) :: SDD_id_prev
1148 gdd_id_prev = gdd_id
1149 sdd_id_prev = sdd_id
1157 delta_gdd = ((tmin_id_prev + tmax_id_prev)/2 - baset(iv))
1158 delta_sdd = ((tmin_id_prev + tmax_id_prev)/2 - basete(iv))
1162 IF (delta_gdd < 0)
THEN
1167 IF (delta_sdd > 0) delta_sdd = 0
1170 gdd_id(iv) = gdd_id_prev(iv) + delta_gdd
1171 sdd_id(iv) = sdd_id_prev(iv) + delta_sdd
1174 IF (sdd_id(iv) <= sddfull(iv) .AND. indhelp < 0)
THEN
1178 IF (gdd_id(iv) >= gddfull(iv))
THEN
1179 gdd_id(iv) = gddfull(iv)
1180 IF (sdd_id(iv) < -critdays) gdd_id(iv) = 0
1183 IF (sdd_id(iv) <= sddfull(iv))
THEN
1184 sdd_id(iv) = sddfull(iv)
1185 IF (gdd_id(iv) > critdays) sdd_id(iv) = 0
1189 IF (sdd_id(iv) < -critdays .AND. sdd_id(iv) > sddfull(iv)) gdd_id(iv) = 0
1190 IF (gdd_id(iv) > critdays .AND. gdd_id(iv) < gddfull(iv)) sdd_id(iv) = 0
1195 IF (id == 140 .AND. sdd_id(iv) /= 0) sdd_id(iv) = 0
1197 IF (gdd_id(iv) > critdays .AND. id < 170) sdd_id(iv) = 0
1199 IF (sdd_id(iv) < -critdays .AND. id > 170) gdd_id(iv) = 0
1201 IF (laitype(iv) < 0.5)
THEN
1202 IF (gdd_id(iv) > 0 .AND. gdd_id(iv) < gddfull(iv))
THEN
1203 lai_id_next(iv) = (lai_id_prev(iv)**laipower(1, iv)*gdd_id(iv)*laipower(2, iv)) + lai_id_prev(iv)
1204 ELSEIF (sdd_id(iv) < 0 .AND. sdd_id(iv) > sddfull(iv))
THEN
1205 lai_id_next(iv) = (lai_id_prev(iv)**laipower(3, iv)*sdd_id(iv)*laipower(4, iv)) + lai_id_prev(iv)
1207 lai_id_next(iv) = lai_id_prev(iv)
1209 ELSEIF (laitype(iv) >= 0.5)
THEN
1210 IF (gdd_id(iv) > 0 .AND. gdd_id(iv) < gddfull(iv))
THEN
1211 lai_id_next(iv) = (lai_id_prev(iv)**laipower(1, iv)*gdd_id(iv)*laipower(2, iv)) + lai_id_prev(iv)
1213 ELSEIF (lenday_id_prev <= 12 .AND. sdd_id(iv) > sddfull(iv))
THEN
1214 lai_id_next(iv) = (lai_id_prev(iv)*laipower(3, iv)*(1 - sdd_id(iv))*laipower(4, iv)) + lai_id_prev(iv)
1216 lai_id_next(iv) = lai_id_prev(iv)
1220 ELSEIF (lat < 0)
THEN
1222 IF (id == 300 .AND. sdd_id(iv) /= 0) sdd_id(iv) = 0
1224 IF (gdd_id(iv) > critdays .AND. id > 250) sdd_id(iv) = 0
1226 IF (sdd_id(iv) < -critdays .AND. id < 250) gdd_id(iv) = 0
1228 IF (laitype(iv) < 0.5)
THEN
1229 IF (gdd_id(iv) > 0 .AND. gdd_id(iv) < gddfull(iv))
THEN
1230 lai_id_next(iv) = (lai_id_prev(iv)**laipower(1, iv)*gdd_id(iv)*laipower(2, iv)) + lai_id_prev(iv)
1231 ELSEIF (sdd_id(iv) < 0 .AND. sdd_id(iv) > sddfull(iv))
THEN
1232 lai_id_next(iv) = (lai_id_prev(iv)**laipower(3, iv)*sdd_id(iv)*laipower(4, iv)) + lai_id_prev(iv)
1234 lai_id_next(iv) = lai_id_prev(iv)
1237 IF (gdd_id(iv) > 0 .AND. gdd_id(iv) < gddfull(iv))
THEN
1238 lai_id_next(iv) = (lai_id_prev(iv)**laipower(1, iv)*gdd_id(iv)*laipower(2, iv)) + lai_id_prev(iv)
1240 ELSEIF (sdd_id(iv) < 0 .AND. sdd_id(iv) > sddfull(iv))
THEN
1241 lai_id_next(iv) = (lai_id_prev(iv)*laipower(3, iv)*(1 - sdd_id(iv))*laipower(4, iv)) + lai_id_prev(iv)
1243 lai_id_next(iv) = lai_id_prev(iv)
1249 IF (lai_id_next(iv) > laimax(iv))
THEN
1250 lai_id_next(iv) = laimax(iv)
1251 ELSEIF (lai_id_next(iv) < laimin(iv))
THEN
1252 lai_id_next(iv) = laimin(iv)
1257 IF (laicalcyes == 0)
THEN
1259 lai_id_next = lai_obs
1266 id, WaterUseMethod, DayofWeek_id, lat, FrIrriAuto, HDD_id, & !input
1267 state_id, soilstore_id, SoilStoreCap, H_maintain, & !input
1268 Ie_a, Ie_m, Ie_start, Ie_end, DayWatPer, DayWat, &
1273 INTEGER,
INTENT(IN) :: id
1274 INTEGER,
INTENT(IN) :: WaterUseMethod
1275 INTEGER,
INTENT(IN) :: Ie_start
1276 INTEGER,
INTENT(IN) :: Ie_end
1277 INTEGER,
DIMENSION(3),
INTENT(IN) :: DayofWeek_id
1279 REAL(KIND(1D0)),
INTENT(IN) :: lat
1280 REAL(KIND(1D0)),
INTENT(IN) :: FrIrriAuto
1282 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(IN) :: HDD_id
1283 REAL(KIND(1D0)),
DIMENSION(NVegSurf),
INTENT(IN) :: Ie_a
1284 REAL(KIND(1D0)),
DIMENSION(NVegSurf),
INTENT(IN) :: Ie_m
1285 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: DayWatPer
1286 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: DayWat
1289 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: state_id
1290 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(IN) :: soilstore_id
1291 REAL(KIND(1D0)),
DIMENSION(nsurf),
INTENT(in) :: SoilStoreCap
1292 REAL(KIND(1D0)),
INTENT(IN) :: H_maintain
1294 REAL(KIND(1D0)),
DIMENSION(9),
INTENT(OUT) :: WUDay_id
1296 REAL(KIND(1D0)),
DIMENSION(3) :: h_need
1297 REAL(KIND(1D0)),
DIMENSION(3) :: store_total
1298 REAL(KIND(1D0)),
DIMENSION(3) :: WUDay_P
1299 REAL(KIND(1D0)),
DIMENSION(3) :: WUDay_A
1300 REAL(KIND(1D0)),
DIMENSION(3) :: WUDay_M
1301 REAL(KIND(1D0)),
DIMENSION(3) :: WUDay_total
1307 REAL(KIND(1D0)) :: temp_avg
1308 REAL(KIND(1D0)) :: days_since_rain
1311 temp_avg = hdd_id(9)
1312 days_since_rain = hdd_id(12)
1317 IF (waterusemethod == 0)
THEN
1319 wd = dayofweek_id(1)
1321 IF (daywat(wd) == 1.0)
THEN
1324 IF (id >= ie_start - 1 .AND. id <= ie_end + 1) calc = 1
1327 IF (id >= ie_end .AND. id <= ie_start) calc = 0
1337 h_need = soilstorecap(3:5) + h_maintain
1338 store_total = state_id(3:5) + soilstore_id(3:5)
1339 wuday_p = h_need - store_total
1340 wuday_p = merge(wuday_p, 0d0, wuday_p > 0)
1343 wuday_a = frirriauto*(ie_a(1) + ie_a(2)*temp_avg + ie_a(3)*days_since_rain)*daywatper(wd)
1344 wuday_a = merge(wuday_a, 0d0, wuday_a > 0)
1346 wuday_a = wuday_a + wuday_p
1349 wuday_m = (1 - frirriauto)*(ie_m(1) + ie_m(2)*temp_avg + ie_m(3)*days_since_rain)*daywatper(wd)
1350 wuday_m = merge(wuday_m, 0d0, wuday_m > 0)
1353 wuday_total = wuday_p + wuday_a + wuday_m
1356 wuday_id([((i - 1)*3 + 1, i=1, 3)]) = wuday_total
1357 wuday_id([((i - 1)*3 + 2, i=1, 3)]) = wuday_a
1358 wuday_id([((i - 1)*3 + 3, i=1, 3)]) = wuday_m
1369 dt_since_start, it, imin, tstep, & !input
1372 INTEGER,
INTENT(IN) :: dt_since_start, it, imin, tstep
1374 REAL(KIND(1D0)),
DIMENSION(12),
INTENT(INOUT) :: HDD_id
1377 INTEGER :: days_prev
1378 REAL(KIND(1D0)) :: tstepcount
1381 tstepcount = (it*60 + imin)*60/tstep*1.
1383 hdd_id(1) = hdd_id(1)/tstepcount
1384 hdd_id(2) = hdd_id(2)/tstepcount
1385 hdd_id(3) = hdd_id(3)/tstepcount
1388 days_prev = min(4, &
1389 floor(dt_since_start/(24*60*60)*1.))
1390 hdd_id(4) = (hdd_id(4)*days_prev + hdd_id(3))/(days_prev + 1)
1393 IF (hdd_id(5) > 0)
THEN
1396 hdd_id(6) = hdd_id(6) + 1
1400 hdd_id(6 + 1:6 + 6) = hdd_id(1:6)
1408 INTEGER,
INTENT(IN) :: it
1409 INTEGER,
INTENT(IN) :: imin
1411 REAL(KIND(1D0)),
DIMENSION(6),
INTENT(INOUT) :: HDD_id
1412 REAL(KIND(1D0)) :: HDD_id_mav, HDD_id_daysSR
1416 hdd_id_mav = hdd_id(4)
1418 hdd_id_dayssr = hdd_id(6)
1419 IF (it == 0 .AND. imin == 0)
THEN
1421 hdd_id(4) = hdd_id_mav
1422 hdd_id(6) = hdd_id_dayssr
1428 id, datetimeline, & !input
1429 Gridiv, NumberOfGrids, &
1436 INTEGER,
INTENT(IN) :: id
1440 REAL(KIND(1D0)),
DIMENSION(5),
INTENT(IN) :: datetimeline
1442 INTEGER,
INTENT(IN) :: Gridiv
1443 INTEGER,
INTENT(IN) :: NumberOfGrids
1444 REAL(KIND(1D0)),
DIMENSION(ncolumnsDataOutDailyState - 5),
INTENT(IN) :: DailyStateLine
1445 REAL(KIND(1D0)),
DIMENSION(ndays, ncolumnsDataOutDailyState, NumberOfGrids),
INTENT(INOUT) :: dataOutDailyState
1448 dataoutdailystate(id, 1:5, gridiv) = datetimeline
1456 it, imin, nsh_real, & !input
1457 GDD_id, HDD_id, LAI_id, &
1459 Tmin_id, Tmax_id, lenday_id, &
1467 SnowAlb, SnowDens, &
1475 INTEGER,
INTENT(IN) :: it
1476 INTEGER,
INTENT(IN) :: imin
1477 REAL(KIND(1D0)),
INTENT(IN) :: nsh_real
1479 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: GDD_id
1480 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: SDD_id
1481 REAL(KIND(1D0)),
DIMENSION(6),
INTENT(IN) :: HDD_id
1482 REAL(KIND(1D0)),
DIMENSION(nvegsurf),
INTENT(IN) :: LAI_id
1484 REAL(KIND(1D0)),
INTENT(IN) :: DecidCap_id
1485 REAL(KIND(1D0)),
INTENT(IN) :: albDecTr_id
1486 REAL(KIND(1D0)),
INTENT(IN) :: albEveTr_id
1487 REAL(KIND(1D0)),
INTENT(IN) :: albGrass_id
1488 REAL(KIND(1D0)),
INTENT(IN) :: porosity_id
1489 REAL(KIND(1D0)),
INTENT(IN) :: Tmin_id
1490 REAL(KIND(1D0)),
INTENT(IN) :: Tmax_id
1491 REAL(KIND(1D0)),
INTENT(IN) :: lenday_id
1492 REAL(KIND(1D0)),
DIMENSION(9),
INTENT(IN) :: WUDay_id
1495 REAL(KIND(1D0)),
INTENT(IN) :: VegPhenLumps
1496 REAL(KIND(1D0)),
INTENT(IN) :: SnowAlb
1497 REAL(KIND(1D0)),
DIMENSION(7),
INTENT(IN) :: SnowDens
1498 REAL(KIND(1D0)),
INTENT(IN) :: a1
1499 REAL(KIND(1D0)),
INTENT(IN) :: a2
1500 REAL(KIND(1D0)),
INTENT(IN) :: a3
1502 REAL(KIND(1D0)),
DIMENSION(ncolumnsDataOutDailyState - 5),
INTENT(OUT) :: DailyStateLine
1505 dailystateline = -999
1506 IF (it == 23 .AND. imin == (nsh_real - 1)/nsh_real*60)
THEN
1518 dailystateline = [hdd_id, gdd_id, sdd_id, tmin_id, tmax_id, lenday_id, lai_id, decidcap_id, porosity_id, &
1519 albevetr_id, albdectr_id, albgrass_id, wuday_id, vegphenlumps, snowalb, snowdens, &
integer, parameter ivgrass
integer, parameter nvegsurf
integer, parameter ivdecid
integer, parameter ncolumnsdataoutdailystate
integer, parameter ivconif
integer, parameter decidsurf
subroutine suews_cal_dailystate_dts(iy, id, it, imin, isec, tstep, tstep_prev, dt_since_start, dayofweek_id, tmin_id_prev, tmax_id_prev, lenday_id_prev, basetmethod, waterusemethod, ie_start, ie_end, laicalcyes, evetrlaitype, dectrlaitype, grasslaitype, nsh_real, avkdn, temp_c, precip, baset_hc, baset_heating_working, baset_heating_holiday, baset_cooling_working, baset_cooling_holiday, lat, faut, lai_obs, albmax_evetr, albmax_dectr, albmax_grass, albmin_evetr, albmin_dectr, albmin_grass, capmax_dec, capmin_dec, pormax_dec, pormin_dec, ie_a, ie_m, daywatper_mon, daywatper_tues, daywatper_wed, daywatper_thur, daywatper_fri, daywatper_sat, daywatper_sun, daywat_mon, daywat_tues, daywat_wed, daywat_thur, daywat_fri, daywat_sat, daywat_sun, evetrbaset, dectrbaset, grassbaset, evetrbasete, dectrbasete, grassbasete, evetrgddfull, dectrgddfull, grassgddfull, evetrsddfull, dectrsddfull, grasssddfull, evetrlaimin, dectrlaimin, grasslaimin, evetrlaimax, dectrlaimax, grasslaimax, evetrlaipower, dectrlaipower, grasslaipower, decidcap_id_prev, storedrainprm_prev, lai_id_prev, gdd_id_prev, sdd_id_prev, albdectr_id_prev, albevetr_id_prev, albgrass_id_prev, porosity_id_prev, hdd_id_prev, state_id, soilstore_id, soilstorecap, h_maintain, hdd_id_next, tmin_id_next, tmax_id_next, lenday_id_next, albdectr_id_next, albevetr_id_next, albgrass_id_next, porosity_id_next, decidcap_id_next, storedrainprm_next, lai_id_next, gdd_id_next, sdd_id_next, wuday_id)
subroutine update_dailystate_day(basetmethod, dayofweek_id, avkdn, temp_c, precip, baset_hc, baset_heating, baset_cooling, nsh_real, tmin_id, tmax_id, lenday_id, hdd_id)
subroutine update_dailystate_start(it, imin, hdd_id)
subroutine update_wateruse(id, waterusemethod, dayofweek_id, lat, frirriauto, hdd_id, state_id, soilstore_id, soilstorecap, h_maintain, ie_a, ie_m, ie_start, ie_end, daywatper, daywat, wuday_id)
subroutine update_hdd(dt_since_start, it, imin, tstep, hdd_id)
subroutine suews_update_dailystate(id, datetimeline, gridiv, numberofgrids, dailystateline, dataoutdailystate)
subroutine update_veg(laimax, laimin, albmax_dectr, albmax_evetr, albmax_grass, albmin_dectr, albmin_evetr, albmin_grass, capmax_dec, capmin_dec, pormax_dec, pormin_dec, lai_id, lai_id_prev, decidcap_id, albdectr_id, albevetr_id, albgrass_id, porosity_id, storedrainprm)
subroutine update_dailystateline(it, imin, nsh_real, gdd_id, hdd_id, lai_id, sdd_id, tmin_id, tmax_id, lenday_id, decidcap_id, albdectr_id, albevetr_id, albgrass_id, porosity_id, wuday_id, vegphenlumps, snowalb, snowdens, a1, a2, a3, dailystateline)
subroutine update_gddlai(id, laicalcyes, lat, lai_obs, tmin_id_prev, tmax_id_prev, lenday_id_prev, baset, basete, gddfull, sddfull, laimin, laimax, laipower, laitype, lai_id_prev, gdd_id, sdd_id, lai_id_next)
subroutine update_dailystate_end(id, it, imin, tstep, dt_since_start, tmin_id, tmax_id, lenday_id, laitype, ie_end, ie_start, laicalcyes, waterusemethod, dayofweek_id, albmax_dectr, albmax_evetr, albmax_grass, albmin_dectr, albmin_evetr, albmin_grass, baset, basete, capmax_dec, capmin_dec, daywat, daywatper, faut, gddfull, ie_a, ie_m, laimax, laimin, laipower, lat, pormax_dec, pormin_dec, sddfull, lai_obs, state_id, soilstore_id, soilstorecap, h_maintain, gdd_id, sdd_id, hdd_id, lai_id, decidcap_id, albdectr_id, albevetr_id, albgrass_id, porosity_id, storedrainprm, wuday_id)
subroutine suews_cal_dailystate(iy, id, it, imin, isec, tstep, tstep_prev, dt_since_start, dayofweek_id, tmin_id_prev, tmax_id_prev, lenday_id_prev, basetmethod, waterusemethod, ie_start, ie_end, laicalcyes, laitype, nsh_real, avkdn, temp_c, precip, baset_hc, baset_heating, baset_cooling, lat, faut, lai_obs, albmax_dectr, albmax_evetr, albmax_grass, albmin_dectr, albmin_evetr, albmin_grass, capmax_dec, capmin_dec, pormax_dec, pormin_dec, ie_a, ie_m, daywatper, daywat, baset, basete, gddfull, sddfull, laimin, laimax, laipower, decidcap_id_prev, storedrainprm_prev, lai_id_prev, gdd_id_prev, sdd_id_prev, albdectr_id_prev, albevetr_id_prev, albgrass_id_prev, porosity_id_prev, hdd_id_prev, state_id, soilstore_id, soilstorecap, h_maintain, hdd_id_next, tmin_id_next, tmax_id_next, lenday_id_next, albdectr_id_next, albevetr_id_next, albgrass_id_next, porosity_id_next, decidcap_id_next, storedrainprm_next, lai_id_next, gdd_id_next, sdd_id_next, wuday_id)
subroutine errorhint(errh, problemfile, value, value2, valuei)