particle_BH_obj Derived Type

type, public, extends(particle_obj) :: particle_BH_obj

A particle type that supports the computation of Basset History force


Inherits

type~~particle_bh_obj~~InheritsGraph type~particle_bh_obj particle_BH_obj type~particle_obj particle_obj type~particle_bh_obj->type~particle_obj type~lagrangian_obj lagrangian_obj type~particle_obj->type~lagrangian_obj

Components

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

Basset force

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 :: Fix(BH_E)

Exponential tails of Basset kernel (x-dir)

real(kind=WP), public :: Fiy(BH_E)

Exponential tails of Basset kernel (y-dir)

real(kind=WP), public :: Fiz(BH_E)

Exponential tails of Basset kernel (z-idr)

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

real(kind=WP), public :: gx(BH_N+1)

Time series of slip velocity derivatives (x-dir)

real(kind=WP), public :: gy(BH_N+1)

Time series of slip velocity derivatives (y-dir)

real(kind=WP), public :: gz(BH_N+1)

Time series of slip velocity derivatives (z-idr)

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 :: vs(3)

Slip velocity

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

Particle 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 => particle_BH_obj_assign

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