AbstractRegridder Derived Type

type, public, abstract :: AbstractRegridder


Inherits

type~~abstractregridder~~InheritsGraph type~abstractregridder AbstractRegridder type~regridderspec~2 RegridderSpec type~abstractregridder->type~regridderspec~2 spec ESMF_Grid ESMF_Grid type~regridderspec~2->ESMF_Grid grid_in, grid_out

Inherited by

type~~abstractregridder~~InheritedByGraph type~abstractregridder AbstractRegridder type~esmfregridder EsmfRegridder type~esmfregridder->type~abstractregridder type~horizontalfluxregridder HorizontalFluxRegridder type~horizontalfluxregridder->type~abstractregridder type~latlontolatlonregridder LatLonToLatLonRegridder type~latlontolatlonregridder->type~abstractregridder type~mapl_cfio MAPL_CFIO type~mapl_cfio->type~abstractregridder regridder, new_regridder type~mapl_griddedio MAPL_GriddedIO type~mapl_griddedio->type~abstractregridder regrid_handle type~mockregridder MockRegridder type~mockregridder->type~abstractregridder type~pair~16 pair type~pair~16->type~abstractregridder value type~sampler sampler type~sampler->type~abstractregridder regrid_handle type~tilingregridder TilingRegridder type~tilingregridder->type~abstractregridder type~transposeregridder TransposeRegridder type~transposeregridder->type~abstractregridder reference type~transposeregridder->type~abstractregridder type~v_wrapper~13 v_Wrapper type~v_wrapper~13->type~abstractregridder item type~conservativeregridder ConservativeRegridder type~conservativeregridder->type~tilingregridder type~extdata_iobundle ExtData_IoBundle type~extdata_iobundle->type~mapl_griddedio cfio type~extdatang_iobundle ExtDataNG_IOBundle type~extdatang_iobundle->type~mapl_griddedio grid_io type~fieldbundlewriter FieldBundleWriter type~fieldbundlewriter->type~mapl_griddedio cfio type~fractionalregridder FractionalRegridder type~fractionalregridder->type~tilingregridder type~historycollection~2 HistoryCollection type~historycollection~2->type~mapl_cfio MCFIO type~historycollection~2->type~mapl_griddedio mGriddedIO type~historycollection~2->type~sampler xsampler type~regriddervectoriterator~2 RegridderVectorIterator type~regriddervectoriterator~2->type~v_wrapper~13 elements type~regriddervectorriterator~2 RegridderVectorRIterator type~regriddervectorriterator~2->type~v_wrapper~13 elements type~regriddervector~2 RegridderVector type~regriddervector~2->type~v_wrapper~13 elements type~tvector~16 tVector type~tvector~16->type~pair~16 elements type~votingregridder VotingRegridder type~votingregridder->type~tilingregridder

Type-Bound Procedures

procedure, public :: clear_undef_value

  • private subroutine clear_undef_value(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this

procedure, public :: clone

  • private function clone(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value class(AbstractRegridder), allocatable

procedure, public :: destroy

  • private subroutine destroy(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    integer, intent(out), optional :: rc

procedure, public :: destroy_route_handle

  • private subroutine destroy_route_handle(this, kind, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    type(ESMF_TypeKind_Flag), intent(in) :: kind
    integer, intent(out), optional :: rc

procedure, public :: get_regrid_method

  • private function get_regrid_method(this) result(method)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value integer

procedure, public :: get_spec

  • private function get_spec(this) result(spec)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value type(RegridderSpec)

procedure, public :: get_undef_value

  • private function get_undef_value(this) result(undef_value)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value real

procedure, public :: has_undef_value

  • private function has_undef_value(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value logical

generic, public :: initialize => initialize_base, initialize_subclass

  • private subroutine initialize_base(this, spec, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    type(RegridderSpec), intent(in) :: spec
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc
  • private subroutine initialize_subclass(this, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(TilingRegridder), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: initialize_base

  • private subroutine initialize_base(this, spec, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    type(RegridderSpec), intent(in) :: spec
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure(initialize_subclass), public, deferred :: initialize_subclass

  • subroutine initialize_subclass(this, unusable, rc) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

procedure, public :: isTranspose

  • private function isTranspose(this) result(amTranspose)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this

    Return Value logical

generic, public :: regrid => regrid_esmf_fields_scalar

  • private subroutine regrid_esmf_fields_scalar(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in
    type(ESMF_Field), intent(in) :: f_out
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_esmf_fields_vector

  • private subroutine regrid_esmf_fields_vector(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in(NUM_DIM)
    type(ESMF_Field), intent(in) :: f_out(NUM_DIM)
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_scalar_2d_real32

  • private subroutine regrid_scalar_2d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(TilingRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_scalar_2d_real64

  • private subroutine regrid_scalar_2d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_scalar_3d_real32

  • private subroutine regrid_scalar_3d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_scalar_3d_real64

  • private subroutine regrid_scalar_3d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_vector_2d_real32

  • private subroutine regrid_vector_2d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_vector_2d_real64

  • private subroutine regrid_vector_2d_real64(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_vector_3d_real32

  • private subroutine regrid_vector_3d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: regrid => regrid_vector_3d_real64

  • private subroutine regrid_vector_3d_real64(this, u_in, v_in, u_out, v_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: regrid_esmf_fields_scalar

  • private subroutine regrid_esmf_fields_scalar(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in
    type(ESMF_Field), intent(in) :: f_out
    integer, intent(out), optional :: rc

procedure, public :: regrid_esmf_fields_vector

  • private subroutine regrid_esmf_fields_vector(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in(NUM_DIM)
    type(ESMF_Field), intent(in) :: f_out(NUM_DIM)
    integer, intent(out), optional :: rc

procedure, public :: regrid_scalar_2d_real32

  • private subroutine regrid_scalar_2d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

procedure, public :: regrid_scalar_2d_real64

  • private subroutine regrid_scalar_2d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

procedure, public :: regrid_scalar_3d_real32

  • private subroutine regrid_scalar_3d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: regrid_scalar_3d_real64

  • private subroutine regrid_scalar_3d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: regrid_vector_2d_real32

  • private subroutine regrid_vector_2d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: regrid_vector_2d_real64

  • private subroutine regrid_vector_2d_real64(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: regrid_vector_3d_real32

  • private subroutine regrid_vector_3d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: regrid_vector_3d_real64

  • private subroutine regrid_vector_3d_real64(this, u_in, v_in, u_out, v_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: set_spec

  • private subroutine set_spec(this, spec)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    type(RegridderSpec), intent(in) :: spec

procedure, public :: set_undef_value

  • private subroutine set_undef_value(this, undef_value)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(inout) :: this
    real :: undef_value

procedure, public, nopass :: supports

  • private function supports(spec, unusable, rc)

    Arguments

    Type IntentOptional Attributes Name
    type(RegridderSpec), intent(in) :: spec
    class(KeywordEnforcer), intent(in), optional :: unusable
    integer, intent(out), optional :: rc

    Return Value logical

generic, public :: transpose_regrid => transpose_regrid_esmf_fields_scalar

  • private subroutine transpose_regrid_esmf_fields_scalar(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in
    type(ESMF_Field), intent(in) :: f_out
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_esmf_fields_vector

  • private subroutine transpose_regrid_esmf_fields_vector(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in(NUM_DIM)
    type(ESMF_Field), intent(in) :: f_out(NUM_DIM)
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_scalar_2d_real32

  • private subroutine transpose_regrid_scalar_2d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_scalar_2d_real64

  • private subroutine transpose_regrid_scalar_2d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_scalar_3d_real32

  • private subroutine transpose_regrid_scalar_3d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_scalar_3d_real64

  • private subroutine transpose_regrid_scalar_3d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_vector_2d_real32

  • private subroutine transpose_regrid_vector_2d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_vector_2d_real64

  • private subroutine transpose_regrid_vector_2d_real64(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_vector_3d_real32

  • private subroutine transpose_regrid_vector_3d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

generic, public :: transpose_regrid => transpose_regrid_vector_3d_real64

  • private subroutine transpose_regrid_vector_3d_real64(this, u_in, v_in, u_out, v_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_esmf_fields_scalar

  • private subroutine transpose_regrid_esmf_fields_scalar(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in
    type(ESMF_Field), intent(in) :: f_out
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_esmf_fields_vector

  • private subroutine transpose_regrid_esmf_fields_vector(this, f_in, f_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    type(ESMF_Field), intent(in) :: f_in(NUM_DIM)
    type(ESMF_Field), intent(in) :: f_out(NUM_DIM)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_scalar_2d_real32

  • private subroutine transpose_regrid_scalar_2d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_scalar_2d_real64

  • private subroutine transpose_regrid_scalar_2d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_scalar_3d_real32

  • private subroutine transpose_regrid_scalar_3d_real32(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: q_in(:,:,:)
    real(kind=REAL32), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_scalar_3d_real64

  • private subroutine transpose_regrid_scalar_3d_real64(this, q_in, q_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: q_in(:,:,:)
    real(kind=REAL64), intent(out) :: q_out(:,:,:)
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_vector_2d_real32

  • private subroutine transpose_regrid_vector_2d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_vector_2d_real64

  • private subroutine transpose_regrid_vector_2d_real64(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_vector_3d_real32

  • private subroutine transpose_regrid_vector_3d_real32(this, u_in, v_in, u_out, v_out, rotate, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL32), intent(in) :: u_in(:,:,:)
    real(kind=REAL32), intent(in) :: v_in(:,:,:)
    real(kind=REAL32), intent(out) :: u_out(:,:,:)
    real(kind=REAL32), intent(out) :: v_out(:,:,:)
    logical, intent(in), optional :: rotate
    integer, intent(out), optional :: rc

procedure, public :: transpose_regrid_vector_3d_real64

  • private subroutine transpose_regrid_vector_3d_real64(this, u_in, v_in, u_out, v_out, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractRegridder), intent(in) :: this
    real(kind=REAL64), intent(in) :: u_in(:,:,:)
    real(kind=REAL64), intent(in) :: v_in(:,:,:)
    real(kind=REAL64), intent(out) :: u_out(:,:,:)
    real(kind=REAL64), intent(out) :: v_out(:,:,:)
    integer, intent(out), optional :: rc

Source Code

   type, abstract :: AbstractRegridder
      private
      type (RegridderSpec) :: spec
      real :: undef_value = MAPL_UNDEF
      logical :: has_undef_value_ = .false.
   contains
      procedure :: clone

      procedure, nopass :: supports
      procedure :: initialize_base
      procedure(initialize_subclass), deferred :: initialize_subclass
      generic :: initialize => initialize_base, initialize_subclass
      procedure :: get_spec
      procedure :: set_spec
      procedure :: isTranspose

      procedure :: regrid_scalar_2d_real32
      procedure :: regrid_scalar_2d_real64
      procedure :: regrid_scalar_3d_real32
      procedure :: regrid_scalar_3d_real64

      procedure :: regrid_vector_2d_real32
      procedure :: regrid_vector_2d_real64
      procedure :: regrid_vector_3d_real32
      procedure :: regrid_vector_3d_real64

      ! ESMF interface is full generic and simply unpacks into the other
      ! interfaces.
      procedure :: regrid_esmf_fields_scalar
      procedure :: regrid_esmf_fields_vector

      ! Generic overload
      generic :: regrid => regrid_esmf_fields_scalar
      generic :: regrid => regrid_esmf_fields_vector
      generic :: regrid => regrid_scalar_2d_real32
      generic :: regrid => regrid_scalar_2d_real64
      generic :: regrid => regrid_scalar_3d_real32
      generic :: regrid => regrid_scalar_3d_real64
      generic :: regrid => regrid_vector_2d_real32
      generic :: regrid => regrid_vector_2d_real64
      generic :: regrid => regrid_vector_3d_real32
      generic :: regrid => regrid_vector_3d_real64


      ! Transpose methods
      procedure :: transpose_regrid_scalar_2d_real32
      procedure :: transpose_regrid_scalar_2d_real64
      procedure :: transpose_regrid_scalar_3d_real32
      procedure :: transpose_regrid_scalar_3d_real64

      procedure :: transpose_regrid_vector_2d_real32
      procedure :: transpose_regrid_vector_2d_real64
      procedure :: transpose_regrid_vector_3d_real32
      procedure :: transpose_regrid_vector_3d_real64

      procedure :: transpose_regrid_esmf_fields_scalar
      procedure :: transpose_regrid_esmf_fields_vector

      ! Generic overload
      generic :: transpose_regrid => transpose_regrid_esmf_fields_scalar
      generic :: transpose_regrid => transpose_regrid_esmf_fields_vector
      generic :: transpose_regrid => transpose_regrid_scalar_2d_real32
      generic :: transpose_regrid => transpose_regrid_scalar_2d_real64
      generic :: transpose_regrid => transpose_regrid_scalar_3d_real32
      generic :: transpose_regrid => transpose_regrid_scalar_3d_real64
      generic :: transpose_regrid => transpose_regrid_vector_2d_real32
      generic :: transpose_regrid => transpose_regrid_vector_2d_real64
      generic :: transpose_regrid => transpose_regrid_vector_3d_real32
      generic :: transpose_regrid => transpose_regrid_vector_3d_real64


      ! Setters/getters
      procedure :: set_undef_value
      procedure :: get_undef_value
      procedure :: clear_undef_value
      procedure :: has_undef_value
      procedure :: get_regrid_method

      procedure :: destroy
      procedure :: destroy_route_handle

   end type AbstractRegridder