Direct forcing IBM
- group direct forcing immersed boundary method
IBM class.
useful function
-
Real nodal_phi_to_heavi(Real phi)
Convert nodal level set function value to Heaviside function value.
- Parameters:
phi – Level set function value at node
- Returns:
Heaviside function value (0.0 if phi <= 0, 1.0 if phi > 0)
-
void nodal_phi_to_pvf(MultiFab &pvf, const MultiFab &phi_nodal)
Convert nodal level set function to particle volume fraction (PVF).
- Parameters:
pvf – Output MultiFab containing particle volume fraction
phi_nodal – Input MultiFab containing nodal level set function
-
void deltaFunction(Real xf, Real xp, Real h, Real &value)
Compute delta function value for immersed boundary method.
- Parameters:
xf – Eulerian grid point coordinate
xp – Lagrangian marker coordinate
h – Grid spacing
value – Output delta function value
-
class mParticle
- #include <DiffusedIB_Parallel.h>
Public Functions
-
void InitParticles(const Vector<Real> &x, const Vector<Real> &y, const Vector<Real> &z, const Vector<Real> &rho_s, const Vector<Real> &Vx, const Vector<Real> &Vy, const Vector<Real> &Vz, const Vector<Real> &Ox, const Vector<Real> &Oy, const Vector<Real> &Oz, const Vector<int> &TLX, const Vector<int> &TLY, const Vector<int> &TLZ, const Vector<int> &RLX, const Vector<int> &RLY, const Vector<int> &RLZ, const Vector<Real> &radius, Real h, Real gravity, int verbose = 0)
Initialize particles with given properties and parameters.
- Parameters:
x – Vector of x-coordinates for particle centers
y – Vector of y-coordinates for particle centers
z – Vector of z-coordinates for particle centers
rho_s – Vector of solid particle densities
Vx – Vector of initial x-velocities
Vy – Vector of initial y-velocities
Vz – Vector of initial z-velocities
Ox – Vector of initial x-angular velocities
Oy – Vector of initial y-angular velocities
Oz – Vector of initial z-angular velocities
TLX – Vector of translational constraint flags in x-direction
TLY – Vector of translational constraint flags in y-direction
TLZ – Vector of translational constraint flags in z-direction
RLX – Vector of rotational constraint flags in x-direction
RLY – Vector of rotational constraint flags in y-direction
RLZ – Vector of rotational constraint flags in z-direction
radius – Vector of particle radii
h – Grid spacing
gravity – Gravitational acceleration
verbose – Verbosity level for output
-
void InteractWithEuler(MultiFab &EulerVel, MultiFab &EulerForce, Real dt = 0.1)
Perform interaction between Lagrangian particles and Eulerian fluid.
This function handles the immersed boundary method coupling between solid particles and the surrounding fluid.
- Parameters:
EulerVel – Eulerian velocity field
EulerForce – Eulerian force field (output)
dt – Time step size
-
void WriteParticleFile(int index)
Write particle data to file for visualization or restart.
- Parameters:
index – File index for output
-
void UpdateLagrangianMarker()
Update Lagrangian marker positions and properties.
-
void VelocityInterpolation(amrex::MultiFab &Euler, int type)
Interpolate Eulerian velocity to Lagrangian markers.
- Parameters:
Euler – Eulerian velocity field
type – Velocity component type (0=x, 1=y, 2=z)
-
void ComputeLagrangianForce(Real dt)
Compute Lagrangian forces on immersed boundary markers.
- Parameters:
dt – Time step size
-
void ForceSpreading(amrex::MultiFab &Euler, int type)
Spread Lagrangian forces to Eulerian grid.
- Parameters:
Euler – Eulerian field for force spreading
type – Force component type (0=x, 1=y, 2=z)
-
void VelocityCorrection(amrex::MultiFab &Euler, amrex::MultiFab &EulerForce, Real dt) const
Apply velocity correction for immersed boundary method.
- Parameters:
Euler – Eulerian velocity field
EulerForce – Eulerian force field
dt – Time step size
-
void UpdateParticles(int iStep, Real time, const MultiFab &Euler_old, const MultiFab &Euler, MultiFab &phi_nodal, MultiFab &pvf, Real dt)
Update particle positions and properties based on fluid flow.
- Parameters:
iStep – Current time step index
time – Current simulation time
Euler_old – Eulerian velocity field at previous time
Euler – Eulerian velocity field at current time
phi_nodal – Nodal level set function
pvf – Particle volume fraction
dt – Time step size
-
void DoParticleCollision(int model)
Handle particle-particle collision interactions.
- Parameters:
model – Collision model identifier
-
void RecordOldValue(kernel &kernel)
Record old values for time integration.
- Parameters:
kernel – Kernel object containing particle data
-
void ResolveLagrangianMarker(std::string marker_file)
Resolve Lagrangian markers from file.
- Parameters:
marker_file – File containing marker data
-
void ResolveWithRPKM(std::string RKPM_file)
Resolve particle data using RKPM (Reproducing Kernel Particle Method).
- Parameters:
RKPM_file – File containing RKPM data
-
int StartOfLagrangianMarker(size_t index)
Get starting index of Lagrangian markers for a particle.
- Parameters:
index – Particle index
- Returns:
Starting index of Lagrangian markers
-
int NumOfLagrangianMarker(size_t index)
Get number of Lagrangian markers for a particle.
- Parameters:
index – Particle index
- Returns:
Number of Lagrangian markers
-
RealVect GetPositionOfMarker(size_t index)
Get position of a specific Lagrangian marker.
- Parameters:
index – Marker index
- Returns:
Position vector of the marker
-
void InitParticles(const Vector<Real> &x, const Vector<Real> &y, const Vector<Real> &z, const Vector<Real> &rho_s, const Vector<Real> &Vx, const Vector<Real> &Vy, const Vector<Real> &Vz, const Vector<Real> &Ox, const Vector<Real> &Oy, const Vector<Real> &Oz, const Vector<int> &TLX, const Vector<int> &TLY, const Vector<int> &TLZ, const Vector<int> &RLX, const Vector<int> &RLY, const Vector<int> &RLZ, const Vector<Real> &radius, Real h, Real gravity, int verbose = 0)
-
Real nodal_phi_to_heavi(Real phi)