29 logical (c_bool),
intent(in) :: is_cell_active(:,:)
30 integer (c_int),
intent(in) :: landuse_index(:)
33 integer (c_int) :: status
34 integer (c_int) :: indx
37 character (len=32) :: sbuf
38 real (c_float),
allocatable :: gdd_base_l(:)
39 real (c_float),
allocatable :: gdd_max_l(:)
40 integer (c_int) :: number_of_landuse_codes
41 integer (c_int),
allocatable :: landuse_code(:)
43 allocate(
gdd_base( count( is_cell_active ) ), stat=status )
44 call assert( status == 0,
"Problem allocating memory", __file__, __line__ )
46 allocate(
gdd_max( count( is_cell_active ) ), stat=status )
47 call assert( status == 0,
"Problem allocating memory", __file__, __line__ )
50 call parameter_list%append(
"LU_Code")
51 call parameter_list%append(
"Landuse_Code")
52 call parameter_list%append(
"Landuse_Lookup_Code")
55 call params%get_parameters( slkeys=parameter_list, ivalues=landuse_code )
56 number_of_landuse_codes = count( landuse_code >= 0 )
57 call parameter_list%clear()
59 call parameter_list%append(
"GDD_Base_Temp")
60 call parameter_list%append(
"GDD_Base_Temperature")
61 call parameter_list%append(
"GDD_Base")
63 call params%get_parameters( slkeys=parameter_list, fvalues=gdd_base_l )
64 call parameter_list%clear()
66 call parameter_list%append(
"GDD_Max_Temp")
67 call parameter_list%append(
"GDD_Maximum_Temperature")
68 call parameter_list%append(
"GDD_Maximum_Temp")
69 call parameter_list%append(
"GDD_Max")
71 call params%get_parameters( slkeys=parameter_list, fvalues=gdd_max_l )
72 call parameter_list%clear()
74 call parameter_list%append(
"GDD_Reset_Date")
75 call parameter_list%append(
"GDD_Reset")
77 call params%get_parameters( slkeys=parameter_list, slvalues=gdd_reset_val_list )
78 call parameter_list%clear()
81 call assert( status==0,
"Problem allocating memory.", __file__, __line__ )
83 if ( gdd_reset_val_list%count == number_of_landuse_codes &
84 .and. gdd_reset_val_list%count_matching(
"<NA>") == 0 )
then
87 do indx=1, gdd_reset_val_list%count
88 sbuf = gdd_reset_val_list%get( indx )
90 where ( landuse_index == indx )
104 if ( ubound( gdd_max_l, 1 ) == number_of_landuse_codes &
105 .and. gdd_max_l(1) >
rtinyval )
then
107 do indx=1, ubound( landuse_index, 1)
108 gdd_max( indx ) = gdd_max_l( landuse_index( indx ) )
119 if ( ubound( gdd_base_l, 1 ) == number_of_landuse_codes &
120 .and. gdd_base_l(1) >
rtinyval )
then
122 do indx=1, ubound( landuse_index, 1)
123 gdd_base( indx ) = gdd_base_l( landuse_index( indx ) )