mus_particle_DPS_module Module

This module contains the routines related to the LBM-DEM coupling for particle-laden flows using unresolved Discrete Particle Simulations (DPS)



Interfaces

public interface grabValueAtCoord

Interface for routine to get the value of the velocity and pressure field at a specified integer coordinate

  • public subroutine grabValueAtCoord_twowaycoupled(coord, scheme, vel_pos, dens_pos, vol_frac_pos, rho, u, eps_f, err)

    Get the value of the density and velocity at a certain integer coordinate

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: coord(4)
    type(mus_scheme_type), intent(inout) :: scheme
    integer, intent(in) :: vel_pos(3)
    integer, intent(in) :: dens_pos
    integer, intent(in) :: vol_frac_pos
    real(kind=rk), intent(out) :: rho
    real(kind=rk), intent(out) :: u(3)
    real(kind=rk), intent(out) :: eps_f
    logical, intent(out) :: err

    Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

  • public subroutine grabValueAtCoord_onewaycoupled(coord, scheme, vel_pos, dens_pos, rho, u, err)

    Get the value of the density and velocity at a certain integer coordinate

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: coord(4)
    type(mus_scheme_type), intent(inout) :: scheme
    integer, intent(in) :: vel_pos(3)
    integer, intent(in) :: dens_pos
    real(kind=rk), intent(out) :: rho
    real(kind=rk), intent(out) :: u(3)
    logical, intent(out) :: err

    Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.


Subroutines

public subroutine initParticle_DPS(particle, interpolator, particleID, geometry, scheme, myRank, comm)

initParticle_DPS performs the initialization of a DPS particle once it has been created. This consists of determining the coordinates of particle origin and determining which processes this particle exists on.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to initialize

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation data type. We don't interpolate stuff here but we use it to determine the directions we need to search for local elements in (only x, y for d2q9, x, y, z for d3q19)

integer, intent(in) :: particleID

Number to uniquely identify particle particle

type(mus_geom_type), intent(in) :: geometry

Geometry to determine TreeIDs of elements 'covered' by particle

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to level descriptor

integer, intent(in) :: myRank

MPI rank of this process

type(mus_particles_communication_type) :: comm

Communication data type for particles

public subroutine updateCoordOfOrigin_DPS(this, scheme, geometry, myRank)

updateCoordOfOrigin updates the integer coordinate of the origin of a particle

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: this

Particle to update coordOfOrigin of

type(mus_scheme_type), intent(in) :: scheme

Scheme to look up posOfOrigin

type(mus_geom_type), intent(in) :: geometry

Geometry information to determine new coord of origin

integer, intent(in) :: myRank

This process's rank

public subroutine updateParticleOwner(this, scheme, geometry, myRank, procs, nProcs)

UpdateParticleOwner updates the "owner process" of each particle, which is the process responsible for performing operations (e.g. modifying velocity and position) on the particle and sending updates to other processes.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: this

Particle to update owner of

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to level descriptor

type(mus_geom_type), intent(in) :: geometry

Geometry to determine TreeIDs of elements 'covered' by particle

integer, intent(in) :: myRank

This process's rank

integer, intent(in) :: procs(:)

Array of neighbor procs on which particle could possibly exist

integer, intent(in) :: nProcs

Number of procs in array procs

public subroutine updateExistsOnProc_DPS(this, interpolator, scheme, geometry, procs, nProcs, myRank)

updateExistsOnProc updates the boolean values of the array of neighbor procs that tell us whether the particle exists on that process or not.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: this

Particle to update owner of

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation data type. We don't interpolate stuff here but we use it to determine the directions we need to search for local elements in (only x, y for d2q9, x, y, z for d3q19)

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to level descriptor

type(mus_geom_type), intent(in) :: geometry

Geometry to determine TreeIDs of elements 'covered' by particle

integer, intent(in) :: procs(:)

Array of neighbor procs on which particle could possibly exist

integer, intent(in) :: nProcs

Number of procs in array procs

integer, intent(in) :: myRank

This process's rank

public subroutine transferMomentumToFluid_DPS(particle, interpolator, scheme, geometry, params, Ftot)

Routine that applies forces from particles to the fluid for unresolved DPS particles based on the VANS equations

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

interpolator object containing stencil and weight function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

real(kind=rk), intent(out) :: Ftot(3)

Output, total force exerted on fluid by particle

public subroutine transferMomentumToFluid_DPS_twoway(particle, interpolator, scheme, geometry, params, Ftot)

Routine that applies forces from particles to the fluid for unresolved DPS two-way coupled particles

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

interpolator object containing stencil and weight function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

real(kind=rk), intent(out) :: Ftot(3)

Output, total force exerted on fluid by particle

public subroutine addParticleSourceToAuxfield_DPS(particle, interpolator, scheme, geometry, params, Ftot)

Routine to modify the auxField (velocity) with the forces exerted by particles on the fluid

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

interpolator object containing stencil and weight function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

real(kind=rk), intent(out) :: Ftot(3)

Output, total force exerted on fluid by particle

public subroutine recalculate_auxField_DPS(particle, interpolator, scheme, geometry, params)

Remove the momentum increments added during subcycles to prevent double-adding the momentum of particles to the fluid.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

interpolator object containing stencil and weight function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

public subroutine incrementAuxField_DPS(particle, interpolator, scheme, geometry, params, dt_DEM_lat)

Add momentum increments due to particles within DEM subcycles to the auxField

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

interpolator object containing stencil and weight function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

real(kind=rk), intent(in) :: dt_DEM_lat

Time step of DEM subcycles, in lattice units

public subroutine addForceToAuxFieldCell(auxField, vel_pos, dens_pos, nAuxScalars, elemPos, F, r_lat, convFac_force, dt_DEM_lat, interpolator)

ModifyAuxFieldCell is a helper routine that modifies the auxfield in the cell with position elemPos in the total list. It takes the total force F_particle and the vector r_lat (in lattice units) pointing from the particle location to the barycenter of the fluid element, then computes the weight and modifies the auxField. Performing addForceToAuxFieldCell over every neighboring cell around a particle (including the one the particle is on) distributes the entire force.

Arguments

Type IntentOptional Attributes Name
type(mus_auxFieldVar_type), intent(inout) :: auxField
integer, intent(in) :: vel_pos(3)

Position of velocity in auxField

integer, intent(in) :: dens_pos

Position of density in auxField

integer, intent(in) :: nAuxScalars

Number of scalars in auxField

integer, intent(in) :: elemPos

Position of element to add force contribution to in auxField inside total list

real(kind=rk), intent(in) :: F(3)

Total force to apply to auxField (only a fraction of this will be applied to the element at elemPos)

real(kind=rk), intent(in) :: r_lat(3)

Vector (in lattice units) pointing from the location where F is applied to the barycenter of the cell at elemPos

real(kind=rk) :: convFac_force

Conversion factor between physical and lattice units

real(kind=rk) :: dt_DEM_lat

DEM subcycle time step, in lattice units

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation object containing stencil and weight info

public subroutine distributeParticleVolume(particle, interpolator, scheme, geometry, params)

Distribute the volume of a particle to update the fluid volume fraction field

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(in) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation object containing stencil and weight info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

public subroutine getIndexOfCoordInTotal(scheme, coord, ldPos)

Get the index in the total list of a specified integer coordinate

Arguments

Type IntentOptional Attributes Name
type(mus_scheme_type), intent(in) :: scheme
integer, intent(in) :: coord(4)
integer, intent(out) :: ldPos

public subroutine mus_particles_updateFluidVolumeFraction(particleGroup, scheme, geometry, params, nElems)

Main routine to update the fluid volume fraction in the auxField

Arguments

Type IntentOptional Attributes Name
type(mus_particle_group_type), intent(in) :: particleGroup

Array of particles

type(mus_scheme_type), intent(inout) :: scheme

scheme for access to varSys

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

integer, intent(in) :: nElems

Number of elements including halos (multilevel not supported yet so no ghosts)

public subroutine mus_particles_initFluidVolumeFraction(scheme, geometry, nElems)

Routine to initialize the fluid volume fraction field

Arguments

Type IntentOptional Attributes Name
type(mus_scheme_type), intent(inout) :: scheme

scheme for access to varSys

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

integer, intent(in) :: nElems

Number of elements including halos (multilevel not supported yet so no ghosts)

public subroutine mapToLattice_DPS(particle, interpolator, scheme, geometry, params, comm, particleLogInterval)

Routine to map particles to the lattice (update coordinate of the origin etc.)

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Array of particles

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation data type. We don't interpolate stuff here but we use it to determine the directions we need to search for local elements in (only x, y for d2q9, x, y, z for d3q19)

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to leveldescriptor

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

type(mus_particles_communication_type), intent(inout) :: comm

Communication data type for particles

integer, intent(in) :: particleLogInterval

Log the particle data to file every this many iterations

public subroutine mapParticlesToLattice_DPS(particleGroup, scheme, geometry, params)

Main control routine which maps each DPS particle to the lattice

Arguments

Type IntentOptional Attributes Name
type(mus_particle_group_type), intent(inout) :: particleGroup

Array of particles

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to leveldescriptor

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

public subroutine interpolateFluidProperties_DPS(particleGroup, scheme, geometry, params)

Main control routine which interpolates and stores the fluid properties at the particle locations

Arguments

Type IntentOptional Attributes Name
type(mus_particle_group_type), intent(inout) :: particleGroup

Array of particles

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to leveldescriptor

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

public subroutine mus_particles_DPS_interpolateFluidProperties(particle, interpolator, scheme, geometry, params, intp, calc_vel_and_p_grad)

Interpolates fluid properties from neighboring lattice sites to determine the fluid density and velocity at the location of the particle

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation object containing interpolation bounds and weigth function info

type(mus_scheme_type), intent(in) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

procedure(interpolateFluidPropFunc) :: intp

Procedure to interpolate fluid props (different for Generalized Navier-Stokes) and regular Navier-Stokes

procedure(calcVelAndPGradFunc) :: calc_vel_and_p_grad

Procedure to interpolate fluid props (different for Generalized Navier-Stokes) and regular Navier-Stokes

public subroutine interpolateFluidProps(xp, coord_xp, scheme, geom_origin, dx, interpolator, vel_xp, rho_xp, eps_f_xp, posOfCoord)

Interpolate the fluid properties to a point xp

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: xp(3)

Query point (x,y,z) to interpolate fluid properties to

integer, intent(in) :: coord_xp(4)

Coordinate in the tree (ix,iy,iz,level) of xp

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to fluid data

real(kind=rk), intent(in) :: geom_origin(3)

Origin of bounding cube (geometry%tree%global%origin)

real(kind=rk), intent(in) :: dx

Mesh size

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolator object containing stencil and weight function information

real(kind=rk), intent(out) :: vel_xp(3)

Fluid velocity at xp

real(kind=rk), intent(out) :: rho_xp

Fluid density at xp

real(kind=rk), intent(out) :: eps_f_xp

Fluid volume fraction at xp

integer, intent(in), optional :: posOfCoord

Position of coord_xp in the total list, if available. Supplying this makes the routine run faster.

public subroutine interpolateFluidProps_onewaycoupled(xp, coord_xp, scheme, geom_origin, dx, interpolator, vel_xp, rho_xp, eps_f_xp, posOfCoord)

Interpolate the fluid properties to a point xp

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: xp(3)

Query point (x,y,z) to interpolate fluid properties to

integer, intent(in) :: coord_xp(4)

Coordinate in the tree (ix,iy,iz,level) of xp

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to fluid data

real(kind=rk), intent(in) :: geom_origin(3)

Origin of bounding cube (geometry%tree%global%origin)

real(kind=rk), intent(in) :: dx

Mesh size

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolator object containing stencil and weight function information

real(kind=rk), intent(out) :: vel_xp(3)

Fluid velocity at xp

real(kind=rk), intent(out) :: rho_xp

Fluid density at xp

real(kind=rk), intent(out) :: eps_f_xp

Fluid volume fraction at xp

integer, intent(in), optional :: posOfCoord

Position of coord_xp in the total list, if available. Supplying this makes the routine run faster.

public subroutine interpolateFluidProps_onewaycoupled_old(xp, coord_xp, scheme, geom_origin, dx, interpolator, vel_xp, rho_xp)

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: xp(3)

Query point (x,y,z) to interpolate fluid properties to

integer, intent(in) :: coord_xp(4)

Coordinate in the tree (ix,iy,iz,level) of xp

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to fluid data

real(kind=rk), intent(in) :: geom_origin(3)

Origin of bounding cube (geometry%tree%global%origin)

real(kind=rk), intent(in) :: dx

Mesh size

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolator object containing stencil and weight function information

real(kind=rk), intent(out) :: vel_xp(3)

Fluid velocity at xp

real(kind=rk), intent(out) :: rho_xp

Fluid density at xp

public subroutine mus_particles_DPS_interpolateFluidProperties_onewaycoupled(particle, interpolator, scheme, geometry, params)

Interpolates fluid properties from neighboring lattice sites to determine the fluid density and velocity at the location of the particle

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to interpolate fluid properties to

type(mus_particle_interpolator_type), intent(in) :: interpolator

Interpolation object containing interpolation bounds and weigth function info

type(mus_scheme_type), intent(inout) :: scheme

Scheme

type(mus_geom_type), intent(in) :: geometry

Geometry for access to tree

type(mus_param_type), intent(in) :: params

Params for access to dt, dx, etc.

public subroutine calcVelocityAndPressureGradient(coord, scheme, grad_p, curl_u, err, posOfCoord)

calcVelocityAndPressureGradient calculates the gradient of pressure and curl of the velocity field (in lattice units) at coordinate coord Coord must be a local element on this process!

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coord(4)

Integer coordinate to calculate grad(p) and curl(u) at

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to total list

real(kind=rk), intent(out) :: grad_p(3)

Output pressure gradient at coord

real(kind=rk), intent(out) :: curl_u(3)

Output velocity curl at coord

logical, intent(out) :: err

Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

integer, intent(in), optional :: posOfCoord

of this routine if this is known.

public subroutine calcVelocityAndPressureGradient_onewaycoupled(coord, scheme, grad_p, curl_u, err, posOfCoord)

calcVelocityAndPressureGradient calculates the gradient of pressure and curl of the velocity field (in lattice units) at coordinate coord Coord must be a local element on this process!

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coord(4)

Integer coordinate to calculate grad(p) and curl(u) at

type(mus_scheme_type), intent(in) :: scheme

Scheme for access to total list

real(kind=rk), intent(out) :: grad_p(3)

Output pressure gradient at coord

real(kind=rk), intent(out) :: curl_u(3)

Output velocity curl at coord

logical, intent(out) :: err

Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

integer, intent(in), optional :: posOfCoord

of this routine if this is known.

public subroutine calcVelocityAndPressureGradient_onewaycoupled_old(coord, scheme, grad_p, curl_u, err)

calcVelocityAndPressureGradient calculates the gradient of pressure and curl of the velocity field (in lattice units) at coordinate coord Coord must be a local element on this process!

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coord(4)

Integer coordinate to calculate grad(p) and curl(u) at

type(mus_scheme_type), intent(inout) :: scheme

Scheme for access to total list

real(kind=rk), intent(out) :: grad_p(3)

Output pressure gradient at coord

real(kind=rk), intent(out) :: curl_u(3)

Output velocity curl at coord

logical, intent(out) :: err

Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

public subroutine grabValueAtCoord_twowaycoupled(coord, scheme, vel_pos, dens_pos, vol_frac_pos, rho, u, eps_f, err)

Get the value of the density and velocity at a certain integer coordinate

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coord(4)
type(mus_scheme_type), intent(inout) :: scheme
integer, intent(in) :: vel_pos(3)
integer, intent(in) :: dens_pos
integer, intent(in) :: vol_frac_pos
real(kind=rk), intent(out) :: rho
real(kind=rk), intent(out) :: u(3)
real(kind=rk), intent(out) :: eps_f
logical, intent(out) :: err

Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

public subroutine grabValueAtCoord_onewaycoupled(coord, scheme, vel_pos, dens_pos, rho, u, err)

Get the value of the density and velocity at a certain integer coordinate

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coord(4)
type(mus_scheme_type), intent(inout) :: scheme
integer, intent(in) :: vel_pos(3)
integer, intent(in) :: dens_pos
real(kind=rk), intent(out) :: rho
real(kind=rk), intent(out) :: u(3)
logical, intent(out) :: err

Error code: set to TRUE if we could not find ldPos of coord we are trying to grab value at (for example because it is outside domain and not a halo.

public subroutine applyDragForce_DPS(particle, eps_p, nu, Fd)

Routine to calculate the drag force according to [1] S. Tenneti, R. Garg, and S. Subramaniam, “Drag law for monodisperse gas–solid systems using particle-resolved direct numerical simulation of flow past fixed assemblies of spheres,” International Journal of Multiphase Flow, vol. 37, no. 9, pp. 1072–1092, Nov. 2011, doi: 10.1016/j.ijmultiphaseflow.2011.05.010.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to apply force to

real(kind=rk), intent(in) :: eps_p

Solid volume fraction interpolated to location of the particle

real(kind=rk), intent(in) :: nu

Fluid kinematic viscosity (phy)

real(kind=rk), intent(out) :: Fd(3)

public subroutine applyDragForce_DPS_noeps(particle, eps_p, nu, Fd)

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to apply force to

real(kind=rk), intent(in) :: eps_p

Solid volume fraction interpolated to location of the particle

real(kind=rk), intent(in) :: nu

Fluid kinematic viscosity (phy)

real(kind=rk), intent(out) :: Fd(3)

public subroutine applyLiftForce_DPS(particle, nu, Flift)

applyLiftForce_DPS computes the Saffman lift force on a particle according to the paper : Saffman PG. The lift on a small sphere in a slow shear flow. J Fluid Mech 1965;22(2):385–400. doi:10.1017/S0 022112065000824.

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to apply force to

real(kind=rk), intent(in) :: nu

Fluid kinematic viscosity (phy)

real(kind=rk), intent(out) :: Flift(3)

public subroutine applyPressureForce_DPS(particle, Fp)

Calculate the pressure gradient force on a particle

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to apply force to

real(kind=rk), intent(out) :: Fp(3)

public subroutine modify_AuxField_of_Elem(posInTotal, scheme, auxField, iLevel, varSys, derVarPos, G_lat)

Modify the auxField of an element with posInTotal in the total list

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: posInTotal

Position of element to modify in total list

type(mus_scheme_type), intent(inout) :: scheme

Scheme

real(kind=rk), intent(inout) :: auxField(:)

output auxField array

integer, intent(in) :: iLevel

current level

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys

real(kind=rk), intent(in) :: G_lat(3)

Force to apply, in lattice units

public subroutine add_Momentum_Increment_to_Auxfield(posInTotal, scheme, auxField, iLevel, varSys, derVarPos, momentumIncrement)

Add a momentum increment to element with PosInTotal in total list

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: posInTotal

Position of element to modify in total list

type(mus_scheme_type), intent(inout) :: scheme

Scheme

real(kind=rk), intent(inout) :: auxField(:)

output auxField array

integer, intent(in) :: iLevel

current level

type(tem_varSys_type), intent(in) :: varSys

variable system definition

type(mus_derVarPos_type), intent(in) :: derVarPos(:)

position of derived quantities in varsys

real(kind=rk), intent(in) :: momentumIncrement(3)

Momentum increment to apply, in lattice units

public subroutine applySrc_toElem(G, posInTotal, scheme, iLevel)

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: G(3)

Body force to apply to cell, in lattice units

integer, intent(in) :: posInTotal

Position of this element in the total list

type(mus_scheme_type), intent(inout) :: scheme

scheme type

integer, intent(in) :: iLevel

current level

public subroutine applySrc_toElem_eps(G, posInTotal, scheme, iLevel)

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(in) :: G(3)

Body force to apply to cell, in lattice units

integer, intent(in) :: posInTotal

Position of this element in the total list

type(mus_scheme_type), intent(inout) :: scheme

scheme type

integer, intent(in) :: iLevel

current level