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
51 USE modi_get_interp_halo
65 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
66 INTEGER,
INTENT(IN) :: KLUOUT
67 INTEGER,
DIMENSION(:),
INTENT(INOUT) :: KCODE
74 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PFIELD
75 CHARACTER(LEN=*),
INTENT(IN) :: HFIELD
76 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN):: PDEF
77 INTEGER,
OPTIONAL,
INTENT(IN) :: KNPTS
83 REAL,
DIMENSION(U%NDIM_FULL) :: ZX
84 REAL,
DIMENSION(U%NDIM_FULL) :: ZY
85 REAL,
DIMENSION(SIZE(PFIELD,2)):: ZDEF
87 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
109 CALL get_grid_coord(ug%G%CGRID, ug%G%NGRID_PAR, ug%G%XGRID_PAR, u%NSIZE_FULL
123 inear_nbr = (2*ihalo+1)**2
125 inear_nbr = u%NDIM_FULL
129 hprogram,kluout,inpts,kcode,zx,zy,pfield,inear_nbr)
141 IF (ierr1>0 .OR. ierr2>0)
THEN 144 WRITE(kluout,*)
' Interpolation of field : ',hfield
145 WRITE(kluout,*)
' ----------------------' 147 WRITE(kluout,*)
' Number of points interpolated with ',inpts,
' nearest points: ' 152 WRITE(kluout,*)
' Number of points that could not be interpolated : ' 155 IF (
PRESENT(pdef) .AND. (inear_nbr>=u%NDIM_FULL .OR. ierr2==ierr0)
THEN 156 DO jloop=1,
SIZE(pfield,2)
157 WRITE(kluout,*)
' For these points, the default value (',zdef(jloop
') is set.' 160 WRITE(kluout,*)
' Please provide data with better resolution' 161 WRITE(kluout,*)
' Or define a higher halo value ' 171 IF (.NOT.
PRESENT(pdef) .OR. (inear_nbr<u%NDIM_FULL .AND. ierr2/=ierr0)
172 CALL abor1_sfx(
'Some points lack data and are too far away from other points. & 173 Please define a higher halo value in NAM_IO_OFFLINE.')
177 IF (
count(kcode(:)==-4)>0)
THEN 179 DO jloop=1,
SIZE(pfield,2)
180 IF (zdef(jloop)/=
xundef)
THEN 182 pfield(:,jloop)=zdef(jloop)
189 IF (
lhook)
CALL dr_hook(
'INTERPOL_FIELD:INTERPOL_FIELD2D',1,zhook_handle
subroutine interpol_npts(UG, U, HPROGRAM, KLUOUT, KNPTS, KCODE, PX, PY
integer function sum_on_all_procs(HPROGRAM, HGRID, OIN, HNAME)
subroutine abor1_sfx(YTEXT)
subroutine get_grid_coord(HGRID_IN, KGRID_PAR_IN, PGRID_PAR_IN, K
subroutine interpol_field2d(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, P
subroutine get_interp_halo(HPROGRAM, HGRID, KHALO)