marker_obj Derived Type

type, public, extends(lagrangian_obj) :: marker_obj

An extended Lagrangian object that represents a marker placed at the centroid of a triangular element on the surface of an immersed body


Inherits

type~~marker_obj~~InheritsGraph type~marker_obj marker_obj type~lagrangian_obj lagrangian_obj type~marker_obj->type~lagrangian_obj

Components

Type Visibility Attributes Name Initial
real(kind=WP), public :: SA

Sufrace area

integer, public :: c(3)

nearest cell

real(kind=WP), public :: f(3)

marker forcing

integer(kind=leapI8), public :: id

Identifying number (inactive if <0)

real(kind=WP), public :: n(3)

normal at the marker

real(kind=WP), public :: p(3)

position

real(kind=WP), public :: pold(3)

Old position

integer, public :: s

A tag

integer, public :: t

Another tag

real(kind=WP), public :: v(3)

marker velocity

real(kind=WP), public :: vold(3)

Old velocity


Type-Bound Procedures

procedure, public :: Extrapolate => lagrangian_obj_Extrapolate

  • private subroutine lagrangian_obj_Extrapolate(this, l_filter, slo, shi, block, int_g1ex, bump)

    Get a bump function centered on the lagrangian object

    Arguments

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

    A Lagrangian object

    real(kind=wp), intent(in) :: l_filter

    Filter size

    integer, intent(in) :: slo(3)

    Stencil lower bound

    integer, intent(in) :: shi(3)

    Stencil higher bound

    type(block_obj), intent(in), pointer :: block

    A block object

    procedure(kernel_1D), intent(in), pointer :: int_g1ex

    Integrated filter kernel

    real(kind=wp), allocatable :: bump(:,:,:)

    The bump function

procedure, public :: Info => marker_obj_Info

  • private subroutine marker_obj_Info(this)

    Print information about this marker

    Arguments

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

    A marker_obj object

procedure, public :: Interpolate => lagrangian_obj_Interpolate

  • private function lagrangian_obj_Interpolate(this, l_filter, slo, shi, block, g1in, f) result(inter)

    Routine to interpolate a field f defined on an Eulerian stencil to the location of a lagrangian object

    Arguments

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

    A Lagrangian object

    real(kind=wp), intent(in) :: l_filter

    Filter size

    integer, intent(in) :: slo(3)

    Stencil lower bound

    integer, intent(in) :: shi(3)

    Stencil higher bound

    type(block_obj), intent(in), pointer :: block

    A block object

    procedure(kernel_1D), intent(in), pointer :: g1in

    Filter kernel

    real(kind=WP), intent(in) :: f(slo(1):shi(1),slo(2):shi(2),slo(3):shi(3))

    Quantity to interpolate

    Return Value real(kind=WP)

procedure, public :: Locate => lagrangian_obj_Locate

  • private function lagrangian_obj_Locate(this, block) result(cell)

    Locate a Lagrangian object on an external grid. Returns the location of the cell containing the object.

    Arguments

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

    A Lagrangian object

    class(block_obj), intent(in) :: block

    External block

    Return Value integer, (3)

procedure, public :: assign => marker_obj_assign

  • private subroutine marker_obj_assign(this, val)

    Assignment

    Arguments

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

    A marker_obj object

    class(lagrangian_obj), intent(in) :: val

    A marker_obj object

generic, public :: assignment(=) => assign