inflow_plane_reader_t Derived Type

type, public :: inflow_plane_reader_t

Replays the planes of ninflows files as a time-varying inflow. Plane n (1-based, counted across the files) is the inflow at time n*plane_dt; between planes it is interpolated linearly, and after the last plane the series repeats from the first.


Inherits

type~~inflow_plane_reader_t~~InheritsGraph type~inflow_plane_reader_t inflow_plane_reader_t type~inflow_config_t inflow_config_t type~inflow_plane_reader_t->type~inflow_config_t cfg type~mesh_t mesh_t type~inflow_plane_reader_t->type~mesh_t mesh type~plane_block_t plane_block_t type~inflow_plane_reader_t->type~plane_block_t blocks type~base_config_t base_config_t type~inflow_config_t->type~base_config_t type~geo_t geo_t type~mesh_t->type~geo_t geo type~grid_t grid_t type~mesh_t->type~grid_t grid type~par_t par_t type~mesh_t->type~par_t par

Inherited by

type~~inflow_plane_reader_t~~InheritedByGraph type~inflow_plane_reader_t inflow_plane_reader_t type~case_abl_t case_abl_t type~case_abl_t->type~inflow_plane_reader_t inflow_reader

Components

Type Visibility Attributes Name Initial
type(mesh_t), public, pointer :: mesh => null()
type(inflow_config_t), public :: cfg
integer, public :: ntimesteps = 0

planes per file

real(kind=dp), public :: plane_dt = 0._dp

time between planes

type(plane_block_t), public :: blocks(2)

Two files are enough to interpolate across a file boundary


Constructor

public interface inflow_plane_reader_t

  • private function init_reader(mesh, cfg) result(reader)

    Opens the first file to learn the plane count and spacing

    Arguments

    Type IntentOptional Attributes Name
    type(mesh_t), intent(inout), target :: mesh
    type(inflow_config_t), intent(in) :: cfg

    Return Value type(inflow_plane_reader_t)


Type-Bound Procedures

procedure, public :: planes_at

  • private subroutine planes_at(self, t, u, v, w)

    Inflow plane at time t on this rank's local (ny, nz)

    Arguments

    Type IntentOptional Attributes Name
    class(inflow_plane_reader_t), intent(inout) :: self
    real(kind=dp), intent(in) :: t
    real(kind=dp), intent(out) :: u(:,:)
    real(kind=dp), intent(out) :: v(:,:)
    real(kind=dp), intent(out) :: w(:,:)