Go to the documentation of this file.00001
00002
00003
00004 subroutine addinc ( sib, sib_loc )
00005
00006 use kinds
00007 use sibtype
00008 use physical_parameters, only: cp => spec_heat_cp
00009
00010 implicit none
00011
00012
00013 type(sib_t), intent(inout) :: sib
00014 type(sib_local_vars), intent(inout) :: sib_loc
00015
00016
00017 integer(kind=int_kind) :: j
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 sib%prog%tc = sib%prog%tc + sib_loc%dtc
00041
00042 sib%prog%ta = sib%prog%ta + sib_loc%dta
00043 sib%prog%ea = sib%prog%ea + sib_loc%dea
00044
00045 if ( sib%prog%tc < 0.0 .or. sib%prog%td(sib%prog%nsl+1) < 0.0 .or. &
00046 sib%prog%ta < 0.0 .or. sib%prog%ea < 0.0 ) then
00047
00048 print *, 'point',sib%stat%pt_num
00049 print *, 'BAD ta, tg, tc or ea VALUE:'
00050 print *, 'tc: ', sib%prog%tc-sib_loc%dtc, sib%prog%tc
00051 print *, 'tg: ', sib%prog%td(sib%prog%nsl+1)-sib_loc%dtd(sib%prog%nsl+1), sib%prog%td(sib%prog%nsl+1)
00052 print *, 'ta: ', sib%prog%ta-sib_loc%dta, sib%prog%ta
00053 print *, 'ea: ', sib%prog%ea-sib_loc%dea, sib%prog%ea
00054 print *, ''
00055 endif
00056
00057
00058
00059 sib%diag%fss = sib%prog%ros * cp * (sib%prog%ta - sib%prog%tm) / &
00060 sib%diag%ra
00061 sib%diag%fws = (sib%prog%ea - sib%prog%em) / sib%diag%ra * cp * &
00062 sib%prog%ros / sib%diag%psy
00063
00064 sib%prog%sh = 0.622 / (sib%prog%ps / sib%prog%em - 1.)
00065 sib%prog%sha = 0.622 / (sib%prog%ps / sib%prog%ea - 1.)
00066 do j = sib%prog%nsl+1, nsoil
00067 sib%prog%td(j) = sib%prog%td(j) + sib_loc%dtd(j)
00068 enddo
00069
00070 end subroutine addinc
00071