7 hprogram,kluout,kcode,pfield,hfield,pdef,knpts)
47 USE modi_get_grid_coord
48 USE modi_interpol_npts
49 USE modi_sum_on_all_procs
52 USE yomhook
,ONLY : lhook, dr_hook
53 USE parkind1
,ONLY : jprb
64 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
65 INTEGER,
INTENT(IN) :: kluout
66 INTEGER,
DIMENSION(:),
INTENT(INOUT) :: kcode
73 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pfield
74 CHARACTER(LEN=*),
INTENT(IN) :: hfield
75 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN):: pdef
76 INTEGER,
OPTIONAL,
INTENT(IN) :: knpts
82 REAL,
DIMENSION(SIZE(KCODE)) :: zx
83 REAL,
DIMENSION(SIZE(KCODE)) :: zy
84 REAL,
DIMENSION(SIZE(PFIELD,2)):: zdef
86 INTEGER :: ihalo, inear_nbr
95 REAL(KIND=JPRB) :: zhook_handle
98 IF (lhook) CALL dr_hook(
'INTERPOL_FIELD:INTERPOL_FIELD2D',0,zhook_handle)
101 IF (present(knpts)) inpts = knpts
104 IF (present(pdef)) zdef = pdef
122 inear_nbr = (2*ihalo+1)**2
124 inear_nbr = u%NDIM_FULL
128 hprogram,kluout,inpts,kcode,zx,zy,pfield,inear_nbr)
138 IF (ierr1>0 .OR. ierr2>0)
THEN
141 WRITE(kluout,*)
' Interpolation of field : ',hfield
142 WRITE(kluout,*)
' ----------------------'
144 WRITE(kluout,*)
' Number of points interpolated with ',inpts,
' nearest points: ', &
149 WRITE(kluout,*)
' Number of points that could not be interpolated : ', &
151 IF (present(pdef) .AND. (inear_nbr>=u%NDIM_FULL .OR. ierr2==ierr0))
THEN
152 DO jloop=1,
SIZE(pfield,2)
153 WRITE(kluout,*)
' For these points, the default value (',zdef(jloop),
') is set.'
156 WRITE(kluout,*)
' Please provide data with better resolution'
157 WRITE(kluout,*)
' Or define a higher halo value '
165 IF (.NOT.present(pdef) .OR. (inear_nbr<u%NDIM_FULL .AND. ierr2/=ierr0)) &
166 CALL
abor1_sfx(
'Some points lack data and are too far away from other points. &
167 Please define a higher halo value in NAM_IO_OFFLINE.')
171 IF (count(kcode(:)==-4)>0)
THEN
173 DO jloop=1,
SIZE(pfield,2)
174 IF (zdef(jloop)/=xundef)
THEN
176 pfield(:,jloop)=zdef(jloop)
183 IF (lhook) CALL dr_hook(
'INTERPOL_FIELD:INTERPOL_FIELD2D',1,zhook_handle)
subroutine get_grid_coord(UG, U, KLUOUT, PX, PY, KL, HGRID, PGRID_PAR)
integer function sum_on_all_procs(HPROGRAM, HGRID, OIN, HNAME)
subroutine abor1_sfx(YTEXT)
subroutine interpol_field2d(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, PDEF, KNPTS)
subroutine interpol_npts(UG, U, HPROGRAM, KLUOUT, KNPTS, KCODE, PX, PY, PFIELD, KNEAR_NBR)
subroutine get_interp_halo(HPROGRAM, HGRID, KHALO)