ResPart_obj Derived Type

type, public, extends(lagrangian_obj) :: ResPart_obj

An extended Lagrangian object that represents particle represented as an Immersed Boundary


Inherits

type~~respart_obj~~InheritsGraph type~respart_obj ResPart_obj type~lagrangian_obj lagrangian_obj type~respart_obj->type~lagrangian_obj

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: Fc(3)

Collision force applied on particle

real(kind=wp), public :: Fcold(3)

Old collision force

real(kind=wp), public :: Fh(3)

Hydrodynamic force applied on particle

real(kind=wp), public :: Fhold(3)

Old hydrodynamic force

real(kind=wp), public :: Tc(3)

Collision torque applied on particle

real(kind=wp), public :: Tcold(3)

Old collision torque

real(kind=wp), public :: Th(3)

Hydrodynamic torque applied on particle

real(kind=wp), public :: Thold(3)

Old hydrodynamic torque

integer, public :: c(3)

nearest cell

real(kind=wp), public :: d

Diameter of the particle

integer(kind=leapI8), public :: id

Identifying number (inactive if <0)

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

position

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

Old particle position

real(kind=wp), public :: rho

Particle density

integer, public :: s

A tag

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

Particle velocity

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

Old particle velocity

real(kind=wp), public :: w(3)

Particle angular velocity

real(kind=wp), public :: wold(3)

Old particle angular 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 :: 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 => ResPart_obj_assign

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