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