6 hprogram,kluout,hname,pfield,kpts,pdef)
51 USE modi_get_surf_mask_n
52 USE modi_interpol_field
56 USE yomhook
,ONLY : lhook, dr_hook
57 USE parkind1
,ONLY : jprb
66 TYPE(isba_t
),
INTENT(INOUT) :: i
70 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
71 INTEGER,
INTENT(IN ) :: kluout
72 INTEGER,
INTENT(IN ) :: kpts
73 CHARACTER(LEN=*),
INTENT(IN ) :: hname
74 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pfield
76 REAL,
DIMENSION(: ),
OPTIONAL,
INTENT(IN) :: pdef
81 LOGICAL,
DIMENSION(SIZE(I%XLAI,1),SIZE(I%XLAI,2)) :: gveg
82 REAL,
DIMENSION(SIZE(PFIELD,1)) :: zfield1_tot, zfield2_tot
83 INTEGER,
DIMENSION(SIZE(PFIELD,1)) :: imask
84 INTEGER,
DIMENSION(SIZE(PFIELD,1)) :: nsize
85 INTEGER,
DIMENSION(U%NSIZE_FULL) :: nsize_tot
86 REAL,
DIMENSION(U%NSIZE_FULL) :: zfield_tot
87 INTEGER :: ini, ipatch, ifull, inpts
91 REAL(KIND=JPRB) :: zhook_handle
97 IF (lhook) CALL dr_hook(
'INI_VAR_FROM_PATCH',0,zhook_handle)
100 ipatch=
SIZE(pfield,2)
105 'NATURE',ini,imask,u%NSIZE_FULL,kluout)
109 WHERE (pfield(:,jpatch).NE.xundef) nsize(:)=1
110 WHERE (i%XPATCH(:,jpatch)==0.) nsize(:)=-1
113 IF(present(pdef))
THEN
115 hprogram,kluout,nsize_tot,zfield_tot,hname,pdef=pdef(jpatch),knpts=kpts)
118 hprogram,kluout,nsize_tot,zfield_tot,hname,knpts=kpts)
136 IF (trim(hname)==
'WR')
THEN
139 WHERE(i%XPATCH(:,jpatch) /=0. .AND. i%XPATCH_OLD(:,jpatch) ==0..AND.i%XLAI(:,jpatch)==0.)
140 pfield(:,jpatch) = 0.
141 gveg(:,jpatch) = .false.
148 zfield1_tot(:)=zfield1_tot(:)+ i%XPATCH_OLD(:,jpatch)*pfield(:,jpatch)
154 WHERE(i%XPATCH(:,jpatch) /=0. .AND. i%XPATCH_OLD(:,jpatch)==0. .AND. gveg(:,jpatch))
155 pfield(:,jpatch)=zfield1_tot(:)
158 zfield2_tot(:)=zfield2_tot(:)+ i%XPATCH(:,jpatch)*pfield(:,jpatch)
165 IF (trim(hname)/=
'WG' .AND. trim(hname)/=
'WGI')
THEN
167 WHERE(zfield2_tot(:) > 1.e-12)
168 pfield(:,jpatch)=(zfield1_tot(:)/zfield2_tot(:))*pfield(:,jpatch)
173 WHERE(i%XPATCH(:,:) ==0.)pfield(:,:)=xundef
179 IF (lhook) CALL dr_hook(
'INI_VAR_FROM_PATCH',1,zhook_handle)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine interpol_field(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, PDEF, KNPTS)
subroutine ini_var_from_patch(DTCO, I, UG, U, HPROGRAM, KLUOUT, HNAME, PFIELD, KPTS, PDEF)