68 MI,MO,KM,IBI,LI,UI,VI, &
69 NO,RLAT,RLON,CROT,SROT,IBO,LO,UO,VO,IRET)
70 class(
ip_grid),
intent(in) :: grid_in, grid_out
71 INTEGER,
INTENT(IN ) :: IP, IPOPT(20), IBI(KM)
72 INTEGER,
INTENT(IN ) :: KM, MI, MO
73 INTEGER,
INTENT( OUT) :: IBO(KM), IRET, NO
75 LOGICAL*1,
INTENT(IN ) :: LI(MI,KM)
76 LOGICAL*1,
INTENT( OUT) :: LO(MO,KM)
78 REAL,
INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
79 REAL,
INTENT(INOUT) :: CROT(MO),SROT(MO)
80 REAL,
INTENT(INOUT) :: RLAT(MO),RLON(MO)
81 REAL,
INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
85 CALL interpolate_bilinear(ipopt,grid_in,grid_out, &
86 mi,mo,km,ibi,li,ui,vi,&
87 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
89 CALL interpolate_bicubic(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
90 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
92 CALL interpolate_neighbor(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
93 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
95 CALL interpolate_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
96 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
98 CALL interpolate_spectral(ipopt,grid_in,grid_out, &
100 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
102 CALL interpolate_neighbor_budget(ipopt,grid_in,grid_out,mi,mo,km,ibi,li,ui,vi,&
103 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
105 print *,
"unrecognized interpolation option: ", ip
383 igdtnumo,igdtmplo,igdtleno, &
384 mi,mo,km,ibi,li,ui,vi, &
385 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
bind(c)
386 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
387 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), IBI(KM)
388 INTEGER(C_INT),
INTENT(IN ) :: KM, MI, MO
389 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMI, IGDTLENI
390 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLI(IGDTLENI)
391 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMO, IGDTLENO
392 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLO(IGDTLENO)
393 INTEGER(C_INT),
INTENT( OUT) :: IBO(KM), IRET, NO
395 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI,KM)
396 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO,KM)
399 REAL(C_DOUBLE),
INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
400 REAL(C_DOUBLE),
INTENT(INOUT) :: CROT(MO),SROT(MO)
401 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
402 REAL(C_DOUBLE),
INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
404 REAL(C_FLOAT),
INTENT(IN ) :: UI(MI,KM),VI(MI,KM)
405 REAL(C_FLOAT),
INTENT(INOUT) :: CROT(MO),SROT(MO)
406 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
407 REAL(C_FLOAT),
INTENT( OUT) :: UO(MO,KM),VO(MO,KM)
412 class(
ip_grid),
allocatable :: grid_in, grid_out
421 mi,mo,km,ibi,li,ui,vi,&
422 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
555 subroutine ipolatev_grib1(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,ui,vi, &
556 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
bind(c)
557 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
560 INTEGER(C_INT),
INTENT(IN ):: IP, IPOPT(20), IBI(KM)
561 INTEGER(C_INT),
INTENT(IN ):: KM, MI, MO
562 INTEGER(C_INT),
INTENT(INOUT):: KGDSI(200), KGDSO(200)
563 INTEGER(C_INT),
INTENT( OUT):: IBO(KM), IRET, NO
565 LOGICAL(C_BOOL),
INTENT(IN ):: LI(MI,KM)
566 LOGICAL(C_BOOL),
INTENT( OUT):: LO(MO,KM)
569 REAL(C_DOUBLE),
INTENT(IN ):: UI(MI,KM),VI(MI,KM)
570 REAL(C_DOUBLE),
INTENT(INOUT):: CROT(MO),SROT(MO)
571 REAL(C_DOUBLE),
INTENT(INOUT):: RLAT(MO),RLON(MO)
572 REAL(C_DOUBLE),
INTENT( OUT):: UO(MO,KM),VO(MO,KM)
574 REAL(C_FLOAT),
INTENT(IN ):: UI(MI,KM),VI(MI,KM)
575 REAL(C_FLOAT),
INTENT(INOUT):: CROT(MO),SROT(MO)
576 REAL(C_FLOAT),
INTENT(INOUT):: RLAT(MO),RLON(MO)
577 REAL(C_FLOAT),
INTENT( OUT):: UO(MO,KM),VO(MO,KM)
580 INTEGER :: KGDSI11, KGDSO11
583 class(
ip_grid),
allocatable :: grid_in, grid_out
585 IF(kgdsi(1).EQ.203)
THEN
587 kgdsi(11)=ior(kgdsi(11),256)
589 IF(kgdso(1).EQ.203)
THEN
591 kgdso(11)=ior(kgdso(11),256)
601 mi,mo,km,ibi,li,ui,vi,&
602 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
604 IF(kgdsi(1).EQ.203)
THEN
607 IF(kgdso(1).EQ.203)
THEN
663 subroutine ipolatev_grib1_single_field(ip,ipopt,kgdsi,kgdso,mi,mo,km,ibi,li,ui,vi, &
664 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
bind(c)
665 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
668 INTEGER(C_INT),
INTENT(IN ):: IP, IPOPT(20), IBI
669 INTEGER(C_INT),
INTENT(IN ):: KM, MI, MO
670 INTEGER(C_INT),
INTENT(INOUT):: KGDSI(200), KGDSO(200)
671 INTEGER(C_INT),
INTENT( OUT):: IBO, IRET, NO
673 LOGICAL(C_BOOL),
INTENT(IN ):: LI(MI)
674 LOGICAL(C_BOOL),
INTENT( OUT):: LO(MO)
677 REAL(C_DOUBLE),
INTENT(IN ):: UI(MI),VI(MI)
678 REAL(C_DOUBLE),
INTENT(INOUT):: CROT(MO),SROT(MO)
679 REAL(C_DOUBLE),
INTENT(INOUT):: RLAT(MO),RLON(MO)
680 REAL(C_DOUBLE),
INTENT( OUT):: UO(MO),VO(MO)
682 REAL(C_FLOAT),
INTENT(IN ):: UI(MI),VI(MI)
683 REAL(C_FLOAT),
INTENT(INOUT):: CROT(MO),SROT(MO)
684 REAL(C_FLOAT),
INTENT(INOUT):: RLAT(MO),RLON(MO)
685 REAL(C_FLOAT),
INTENT( OUT):: UO(MO),VO(MO)
688 INTEGER :: KGDSI11, KGDSO11
691 class(
ip_grid),
allocatable :: grid_in, grid_out
692 integer :: ibo_array(1)
698 IF(kgdsi(1).EQ.203)
THEN
700 kgdsi(11)=ior(kgdsi(11),256)
702 IF(kgdso(1).EQ.203)
THEN
704 kgdso(11)=ior(kgdso(11),256)
714 mi,mo,km,[ibi],li,ui,vi,&
715 no,rlat,rlon,crot,srot,ibo_array,lo,uo,vo,iret)
719 IF(kgdsi(1).EQ.203)
THEN
722 IF(kgdso(1).EQ.203)
THEN
809 igdtnumo,igdtmplo,igdtleno, &
810 mi,mo,km,ibi,li,ui,vi, &
811 no,rlat,rlon,crot,srot,ibo,lo,uo,vo,iret)
bind(c)
812 USE iso_c_binding,
ONLY: c_int, c_float, c_double, c_bool
813 INTEGER(C_INT),
INTENT(IN ) :: IP, IPOPT(20), IBI
814 INTEGER(C_INT),
INTENT(IN ) :: KM, MI, MO
815 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMI, IGDTLENI
816 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLI(IGDTLENI)
817 INTEGER(C_INT),
INTENT(IN ) :: IGDTNUMO, IGDTLENO
818 INTEGER(C_INT),
INTENT(IN ) :: IGDTMPLO(IGDTLENO)
819 INTEGER(C_INT),
INTENT( OUT) :: IBO, IRET, NO
821 LOGICAL(C_BOOL),
INTENT(IN ) :: LI(MI)
822 LOGICAL(C_BOOL),
INTENT( OUT) :: LO(MO)
825 REAL(C_DOUBLE),
INTENT(IN ) :: UI(MI),VI(MI)
826 REAL(C_DOUBLE),
INTENT(INOUT) :: CROT(MO),SROT(MO)
827 REAL(C_DOUBLE),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
828 REAL(C_DOUBLE),
INTENT( OUT) :: UO(MO),VO(MO)
830 REAL(C_FLOAT),
INTENT(IN ) :: UI(MI),VI(MI)
831 REAL(C_FLOAT),
INTENT(INOUT) :: CROT(MO),SROT(MO)
832 REAL(C_FLOAT),
INTENT(INOUT) :: RLAT(MO),RLON(MO)
833 REAL(C_FLOAT),
INTENT( OUT) :: UO(MO),VO(MO)
838 class(
ip_grid),
allocatable :: grid_in, grid_out
839 integer :: ibo_array(1)
852 mi,mo,km,[ibi],li,ui,vi,&
853 no,rlat,rlon,crot,srot,ibo_array,lo,uo,vo,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 vector interpolation interpolation routine ipolatev().
subroutine, public ipolatev_grib2(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.
subroutine, public ipolatev_grib2_single_field(ip, ipopt, igdtnumi, igdtmpli, igdtleni, igdtnumo, igdtmplo, igdtleno, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
This subprogram interpolates vector fields from any grid to any grid given a grib2 descriptor.
subroutine ipolatev_grid(IP, IPOPT, grid_in, grid_out, MI, MO, KM, IBI, LI, UI, VI, NO, RLAT, RLON, CROT, SROT, IBO, LO, UO, VO, IRET)
Interpolates vector fields between grids given ip_grid objects.
subroutine, public ipolatev_grib1(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
This subprogram interpolates vector field from any grid to any grid given a grib1 Grid Descriptor Sec...
subroutine, public ipolatev_grib1_single_field(ip, ipopt, kgdsi, kgdso, mi, mo, km, ibi, li, ui, vi, no, rlat, rlon, crot, srot, ibo, lo, uo, vo, iret)
Special case of ipolatev_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.