This module contains the routines related to the LBM-DEM coupling for particle-laden flows using unresolved Discrete Particle Simulations (DPS)
Interface for routine to get the value of the velocity and pressure field at a specified integer coordinate
Get the value of the density and velocity at a certain integer coordinate
| Type | Intent | Optional | 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. |
Get the value of the density and velocity at a certain integer coordinate
| Type | Intent | Optional | 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. |
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.
| Type | Intent | Optional | 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 |
updateCoordOfOrigin updates the integer coordinate of the origin of a particle
| Type | Intent | Optional | 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 |
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.
| Type | Intent | Optional | 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 |
updateExistsOnProc updates the boolean values of the array of neighbor procs that tell us whether the particle exists on that process or not.
| Type | Intent | Optional | 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 |
Routine that applies forces from particles to the fluid for unresolved DPS particles based on the VANS equations
| Type | Intent | Optional | 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 |
Routine that applies forces from particles to the fluid for unresolved DPS two-way coupled particles
| Type | Intent | Optional | 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 |
Routine to modify the auxField (velocity) with the forces exerted by particles on the fluid
| Type | Intent | Optional | 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 |
Remove the momentum increments added during subcycles to prevent double-adding the momentum of particles to the fluid.
| Type | Intent | Optional | 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. |
Add momentum increments due to particles within DEM subcycles to the auxField
| Type | Intent | Optional | 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 |
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.
| Type | Intent | Optional | 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 |
Distribute the volume of a particle to update the fluid volume fraction field
| Type | Intent | Optional | 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. |
Get the index in the total list of a specified integer coordinate
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_scheme_type), | intent(in) | :: | scheme | |||
| integer, | intent(in) | :: | coord(4) | |||
| integer, | intent(out) | :: | ldPos |
Main routine to update the fluid volume fraction in the auxField
| Type | Intent | Optional | 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) |
Routine to initialize the fluid volume fraction field
| Type | Intent | Optional | 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) |
Routine to map particles to the lattice (update coordinate of the origin etc.)
| Type | Intent | Optional | 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 |
Main control routine which maps each DPS particle to the lattice
| Type | Intent | Optional | 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. |
Main control routine which interpolates and stores the fluid properties at the particle locations
| Type | Intent | Optional | 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. |
Interpolates fluid properties from neighboring lattice sites to determine the fluid density and velocity at the location of the particle
| Type | Intent | Optional | 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 |
Interpolate the fluid properties to a point xp
| Type | Intent | Optional | 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. |
Interpolate the fluid properties to a point xp
| Type | Intent | Optional | 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. |
| Type | Intent | Optional | 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 |
Interpolates fluid properties from neighboring lattice sites to determine the fluid density and velocity at the location of the particle
| Type | Intent | Optional | 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. |
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!
| Type | Intent | Optional | 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. |
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!
| Type | Intent | Optional | 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. |
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!
| Type | Intent | Optional | 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. |
Get the value of the density and velocity at a certain integer coordinate
| Type | Intent | Optional | 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. |
Get the value of the density and velocity at a certain integer coordinate
| Type | Intent | Optional | 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. |
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.
| Type | Intent | Optional | 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) |
| Type | Intent | Optional | 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) |
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.
| Type | Intent | Optional | 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) |
Calculate the pressure gradient force on a particle
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to apply force to |
||
| real(kind=rk), | intent(out) | :: | Fp(3) |
Modify the auxField of an element with posInTotal in the total list
| Type | Intent | Optional | 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 |
Add a momentum increment to element with PosInTotal in total list
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | 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 |