Skip to content
Snippets Groups Projects
day_ini.f 3.92 KiB
!*****************************************************************!
!*                                                               *!
!*              4C (FORESEE) Simulation Model                    *!
!*                                                               *!
!*                                                               *!
!*                    Subroutine DAY_INI for:                    *!
!*                                                               *!
!*          allocation of daily weather variables                *!
!*                                                               *!
!*                  Copyright (C) 1996-2018                      *!
!*     Potsdam Institute for Climate Impact Reserach (PIK)       *!
!*          Authors and contributors see AUTHOR file             *!
!*  This file is part of 4C and is licensed under BSD-2-Clause   *!
!*                   See LICENSE file or under:                  *!
!*     http://www.https://opensource.org/licenses/BSD-2-Clause   *!
!*                           Contact:                            *!
!*       https://gitlab.pik-potsdam.de/foresee/4C                *!
!*                                                               *!
!*****************************************************************!

SUBROUTINE day_ini

USE data_biodiv
USE data_climate
USE data_depo
USE data_evapo
USE data_simul
USE data_site
USE data_stand
USE data_par

implicit none
type(Coh_Obj), pointer :: p  ! pointer to cohort list
real, external :: photoper
real, external :: daylength
integer i, j

j = time
i = iday

airtemp     = tp(i,j)+deltaT
airtemp_1   = tp(i-1,j)+deltaT
airtemp_2   = tp(i-2,j)+deltaT
airtemp_max = tx(i,j)
airtemp_min = tn(i,j)
prec      = prc(i,j)*deltaPrec
hum         = hm(i,j)
if (hum .le. 0.) then
   hum = 1.
else if (hum .gt. 100.) then
   hum = 100.
endif
if (prs(i,j) .gt. 0.) then
    press = prs(i,j)
else
    press = 1013.
endif

rad       = rd(i,j)
wind      = wd(i,j)
if (wind .lt. 0.) wind = 0.5

dlength = photoper(i+0.,xlat)
med_air  = med_air + airtemp
sum_prec = sum_prec + prec

if(recs(time).eq.365) then
  if(i.gt.120 .and. i.lt.274) then
     med_air_ms = med_air_ms + airtemp
	 sum_prec_ms = sum_prec_ms + prec
  end if
  if(i.gt.120 .and. i .lt. 213)  then
         med_air_mj = med_air_mj + airtemp
		 sum_prec_mj = sum_prec_mj + prec
  end if
else
   if(i.gt.121 .and. i.lt.275) then
     med_air_ms = med_air_ms + airtemp
	 sum_prec_ms = sum_prec_ms + prec
     if(i.gt.121 .and. i .lt.214)  then
	      med_air_mj = med_air_mj + airtemp
		  sum_prec_mj = sum_prec_mj + prec
	 end if
  end if
end if
 
med_rad  = med_rad + rad
med_wind = med_wind + wind
if (airtemp.gt. thr_gdd) then
    gdday = gdday +  airtemp
    gdday_all = gdday_all + airtemp
end if
if (airtemp_max .ge. 25.) then
    days_summer = days_summer + 1
    if (airtemp_max .ge. 30.) then
        days_hot = days_hot + 1
    endif
endif
if( airtemp_min .gt. 0) days_wof = days_wof +1
if ((airtemp_max .lt. 0.) .and. (airtemp_max .gt. -90.)) then
    days_ice = days_ice + 1
endif
if (prec .lt. 1.E-06) then
    days_dry = days_dry + 1
else if (prec .gt. 10.) then
    days_hrain = days_hrain + 1
else if (prec .gt. 0.1) then
     days_rain = days_rain +1
	 if(recs(time).eq.365) then
           if(i.gt.120 .and. i .lt. 213) days_rain_mj = days_rain_mj +1
	 else
	        if(i.gt.121 .and. i .lt.214) days_rain_mj = days_rain_mj +1
	 end if  
endif

drIndd = 0.

lightsum = lightsum + rad/100                  ! sum global radiation in mJ/m2
abslightsum = abslightsum + rad/100*totFPARsum ! sum absorbed global radiation in mJ/m2

! set standardised deposition data for areal application of deposition:
NO_dep = NOd(i,j)*0.001       ! mg N/m2 ==> g N/m2
NH_dep = NHd(i,j)*0.001       ! mg N/m2 ==> g N/m2

pev_sn   = 0.
dew_rime = 0.

fire_indw = -99
fire_inde = -99

! water and N uptake
p => pt%first
do while (associated(p))
  p%coh%supply = 0.
  p%coh%Nuptc_d = 0.
  p => p%next
enddo  ! p (cohorts)
END SUBROUTINE day_ini