64 & ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
65 class(
ip_grid),
intent(in) :: grid_in, grid_out
66 INTEGER,
INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
67 INTEGER,
INTENT(IN ) :: IBI(KM)
68 INTEGER,
INTENT(INOUT) :: NO
69 INTEGER,
INTENT( OUT) :: IRET, IBO(KM)
71 LOGICAL*1,
INTENT(IN ) :: LI(MI,KM)
72 LOGICAL*1,
INTENT( OUT) :: LO(MO,KM)
74 REAL,
INTENT(IN ) :: GI(MI,KM)
75 REAL,
INTENT(INOUT) :: RLAT(MO),RLON(MO)
76 REAL,
INTENT( OUT) :: GO(MO,KM)
81 CALL interpolate_bilinear(ipopt,grid_in,grid_out,mi,mo,km,ibi&
82 &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
84 CALL interpolate_bicubic(ipopt,grid_in,grid_out,mi,mo,km,ibi&
85 &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
87 CALL interpolate_neighbor(ipopt,grid_in,grid_out,mi,mo,km,ibi&
88 &,li,gi,no,rlat,rlon,ibo,lo,go,iret)
90 CALL interpolate_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li&
91 &,gi,no,rlat,rlon,ibo,lo,go,iret)
93 CALL interpolate_spectral(ipopt,grid_in,grid_out,mi,mo,km,ibi&
94 &,gi,no,rlat,rlon,ibo,lo,go,iret)
96 CALL interpolate_neighbor_budget(ipopt,grid_in,grid_out,mi,mo&
97 &,km,ibi,li,gi,no,rlat,rlon,ibo,lo,go,iret)
108 print *,
"Unrecognized interp option: ", ip
158 subroutine ipolates_grib1_single_field(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,gi, &
159 no,rlat,rlon,ibo,lo,go,iret)
bind(c)
161 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
162 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
163 INTEGER(C_INT),
INTENT(IN ) :: IBI, KGDSI(200), KGDSO(200)
164 INTEGER(C_INT),
INTENT(INOUT) :: NO
165 INTEGER(C_INT),
INTENT( OUT) :: IRET, IBO
167 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI)
168 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO)
171 REAL(C_DOUBLE),
INTENT(IN ) :: GI(MI)
172 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
173 REAL(C_DOUBLE),
INTENT( OUT) :: GO(MO)
175 REAL(C_FLOAT),
INTENT(IN ) :: GI(MI)
176 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
177 REAL(C_FLOAT),
INTENT( OUT) :: GO(MO)
182 class(
ip_grid),
allocatable :: grid_in, grid_out
183 integer :: ibo_array(1)
195 call ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, [ibi], li, gi, no, rlat, rlon, ibo_array, lo, go, iret)
286 subroutine ipolates_grib1(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,gi, &
287 no,rlat,rlon,ibo,lo,go,iret)
bind(c)
289 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
290 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
291 INTEGER(C_INT),
INTENT(IN ) :: IBI(KM), KGDSI(200), KGDSO(200)
292 INTEGER(C_INT),
INTENT(INOUT) :: NO
293 INTEGER(C_INT),
INTENT( OUT) :: IRET, IBO(KM)
295 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI,KM)
296 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO,KM)
299 REAL(C_DOUBLE),
INTENT(IN ) :: GI(MI,KM)
300 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
301 REAL(C_DOUBLE),
INTENT( OUT) :: GO(MO,KM)
303 REAL(C_FLOAT),
INTENT(IN ) :: GI(MI,KM)
304 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
305 REAL(C_FLOAT),
INTENT( OUT) :: GO(MO,KM)
310 class(
ip_grid),
allocatable :: grid_in, grid_out
318 call ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
574 IGDTNUMO,IGDTMPLO,IGDTLENO, &
575 MI,MO,KM,IBI,LI,GI, &
576 NO,RLAT,RLON,IBO,LO,GO,IRET)
bind(C)
577 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
578 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
579 INTEGER(C_INT),
INTENT(IN ) :: IBI(KM)
580 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMI, IGDTLENI
581 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLI(IGDTLENI)
582 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMO, IGDTLENO
583 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLO(IGDTLENO)
584 INTEGER(C_INT),
INTENT( OUT) :: NO
585 INTEGER(C_INT),
INTENT( OUT) :: IRET, IBO(KM)
587 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI,KM)
588 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO,KM)
591 REAL(C_DOUBLE),
INTENT(IN ) :: GI(MI,KM)
592 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
593 REAL(C_DOUBLE),
INTENT( OUT) :: GO(MO,KM)
595 REAL(C_FLOAT),
INTENT(IN ) :: GI(MI,KM)
596 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
597 REAL(C_FLOAT),
INTENT( OUT) :: GO(MO,KM)
601 class(
ip_grid),
allocatable :: grid_in, grid_out
609 CALL ipolates_grid(ip,ipopt,grid_in,grid_out,mi,mo,km,ibi,li,gi,no,rlat,rlon,ibo,lo,go,iret)
784 IGDTNUMO,IGDTMPLO,IGDTLENO, &
785 MI,MO,KM,IBI,LI,GI, &
786 NO,RLAT,RLON,IBO,LO,GO,IRET)
bind(C)
787 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
788 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), KM, MI, MO
789 INTEGER(C_INT),
INTENT(IN ) :: IBI
790 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMI, IGDTLENI
791 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLI(IGDTLENI)
792 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMO, IGDTLENO
793 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLO(IGDTLENO)
794 INTEGER(C_INT),
INTENT( OUT) :: NO
795 INTEGER(C_INT),
INTENT( OUT) :: IRET, IBO
797 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI)
798 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO)
801 REAL(C_DOUBLE),
INTENT(IN ) :: GI(MI)
802 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
803 REAL(C_DOUBLE),
INTENT( OUT) :: GO(MO)
805 REAL(C_FLOAT),
INTENT(IN ) :: GI(MI)
806 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
807 REAL(C_FLOAT),
INTENT( OUT) :: GO(MO)
811 class(
ip_grid),
allocatable :: grid_in, grid_out
812 integer :: ibo_array(1)
824 call ipolates_grid(ip,ipopt,grid_in,grid_out,mi,mo,km,[ibi],li,gi,no,rlat,rlon,ibo_array,lo,go,iret)
Users derived type grid descriptor objects to abstract away the raw GRIB1 and GRIB2 grid definitions.
Routines for creating an ip_grid given a Grib descriptor.
Top-level module to export interpolation routines and constants.
integer, parameter, public neighbor_interp_id
integer, parameter, public bilinear_interp_id
integer, parameter, public budget_interp_id
integer, parameter, public spectral_interp_id
integer, parameter, public bicubic_interp_id
integer, parameter, public neighbor_budget_interp_id
Top-level driver for scalar interpolation interpolation routine ipolates().
subroutine ipolates_grid(ip, ipopt, grid_in, grid_out, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
Interpolates scalar fields between grids given ip_grid objects.
subroutine, public ipolates_grib2_single_field(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
Special case of ipolates_grib2 when interpolating a single field.
subroutine, public ipolates_grib2(IP, IPOPT, IGDTNUMI, IGDTMPLI, IGDTLENI, IGDTNUMO, IGDTMPLO, IGDTLENO, MI, MO, KM, IBI, LI, GI, NO, RLAT, RLON, IBO, LO, GO, IRET)
This subprogram interpolates scalar field from any grid to any grid given a grib2 descriptor.
subroutine, public ipolates_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
This subprogram interpolates scalar field from any grid to any grid given a grib1 Grid Descriptor Sec...
subroutine, public ipolates_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, gi, no, rlat, rlon, ibo, lo, go, iret)
Special case of ipolates_grib1 when interpolating a single field.
Descriptor representing a grib1 grib descriptor section (GDS) with an integer array.
Grib-2 descriptor containing a grib2 GDT represented by an integer array.
Abstract grid that holds fields and methods common to all grids.