Skip to content

Commit 82cd581

Browse files
committed
Solid particle implementation for E-L solver
1 parent 52e8af1 commit 82cd581

33 files changed

+9274
-1564
lines changed

docs/documentation/case.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,16 @@ Setup: Only requires specifying `init_dir` and filename pattern via `zeros_defau
266266
Implementation: All variables and file handling are managed in `src/common/include/ExtrusionHardcodedIC.fpp` with no manual grid configuration needed.
267267
Usage: Ideal for initializing simulations from lower-dimensional solutions, enabling users to add perturbations or modifications to the base extruded fields for flow instability studies.
268268

269+
The following parameters support hardcoded initial conditions that read interface data from files:
270+
271+
| Parameter | Type | Description |
272+
| ---: | :---: | :--- |
273+
| `interface_file` | String | Path to interface geometry data file |
274+
| `normFac` | Real | Interface normalization factor |
275+
| `normMag` | Real | Interface normal magnitude |
276+
| `g0_ic` | Real | Initial gas volume fraction for interfacial IC |
277+
| `p0_ic` | Real | Initial pressure for interfacial IC |
278+
269279
#### Parameter Descriptions
270280

271281
- `num_patches` defines the total number of patches defined in the domain.
@@ -788,7 +798,7 @@ Details of the transducer acoustic source model can be found in \cite Maeda17.
788798
| ---: | :----: | :--- |
789799
| `bubbles_euler` | Logical | Ensemble-averaged bubble modeling |
790800
| `bubbles_lagrange` | Logical | Volume-averaged bubble modeling |
791-
| `bubble_model` | Integer | [1] Gilmore; [2] Keller--Miksis; [3] Rayleigh-Plesset |
801+
| `bubble_model` | Integer | [0] Particle; [1] Gilmore; [2] Keller--Miksis; [3] Rayleigh-Plesset |
792802
| `Ca` | Real | Cavitation number |
793803
| `Web` | Real | Weber number |
794804
| `Re_inv` | Real | Inverse Reynolds number |
@@ -892,6 +902,13 @@ When ``polytropic = 'F'``, the gas compression is modeled as non-polytropic due
892902
| `epsilonb` | Real | Standard deviation scaling for the gaussian function |
893903
| `charwidth` | Real | Domain virtual depth (z direction, for 2D simulations) |
894904
| `valmaxvoid` | Real | Maximum void fraction permitted |
905+
| `drag_model` | Integer | Drag model for bubble dynamics |
906+
| `vel_model` | Integer | Velocity model for bubble interface |
907+
| `charNz` | Integer | Characteristic size parameter |
908+
| `input_path` | String | Path to bubble input file (default: `./input`) |
909+
| `pressure_force` | Logical | Enable pressure gradient force |
910+
| `gravity_force` | Logical | Enable gravitational force |
911+
| `write_void_evol` | Logical | Write void fraction evolution data |
895912

896913
- `nBubs_glb` Total number of bubbles. Their initial conditions need to be specified in the ./input/lag_bubbles.dat file. See the example cases for additional information.
897914

@@ -905,6 +922,39 @@ When ``polytropic = 'F'``, the gas compression is modeled as non-polytropic due
905922

906923
- `massTransfer_model` Activates the mass transfer model at the bubble's interface based on (\cite Preston07).
907924

925+
#### 9.3 Lagrangian Solid Particle Model
926+
927+
| Parameter | Type | Description |
928+
| ---: | :---: | :--- |
929+
| `particles_lagrange` | Logical | Lagrangian solid particle model switch |
930+
| `nParticles_glb` | Integer | Global number of particles |
931+
| `solver_approach` | Integer | 1: One-way coupling, 2: Two-way coupling |
932+
| `smooth_type` | Integer | Smoothing function. 1: Gaussian, 2: Delta 3x3 |
933+
| `stokes_drag` | Integer | Stokes drag model flag |
934+
| `qs_drag_model` | Integer | Quasi-steady drag model (0: off, 1: Parmar, 2: Modified Parmar, 3: Osnes, 4: Gidaspow) |
935+
| `added_mass_model` | Integer | Added mass model (0: off, >0: active) |
936+
| `interpolation_order` | Integer | Polynomial order for barycentric field interpolation |
937+
| `collision_force` | Logical | Enable soft-sphere DEM particle-particle collisions |
938+
| `pressure_force` | Logical | Enable pressure gradient force on particles |
939+
| `gravity_force` | Logical | Enable gravitational force on particles |
940+
| `write_void_evol` | Logical | Write void fraction evolution data |
941+
| `epsilonb` | Real | Standard deviation scaling for the Gaussian kernel |
942+
| `valmaxvoid` | Real | Maximum void fraction permitted |
943+
| `particle_pp%%rho0ref_particle` | Real | Reference particle material density |
944+
| `particle_pp%%cp_particle` | Real | Particle specific heat capacity |
945+
946+
- `particles_lagrange` activates the Euler-Lagrange solid particle solver. Particle initial conditions are read from `./input/lag_particles.dat`. The solver tracks non-deformable spherical particles in a compressible carrier flow using volume-averaged source terms (\cite Maeda18).
947+
948+
- `nParticles_glb` specifies the total number of particles across all MPI ranks. Their initial positions, velocities, and radii must be specified in the input file.
949+
950+
- `solver_approach` specifies the coupling method: [1] one-way coupling where particles are advected by the flow but do not influence it, [2] two-way coupling where particle forces are projected back onto the Eulerian grid as source terms.
951+
952+
- `qs_drag_model` selects the quasi-steady drag correlation: [1] Parmar et al. (2010) with Sangani volume fraction correction, [2] Modified Parmar with Osnes et al. (2023) volume fraction correction, [3] Osnes et al. (2023) full correlation with Loth et al. (2021) rarefied regime, [4] Gidaspow (1994) correlation for dense particle suspensions.
953+
954+
- `collision_force` activates soft-sphere DEM collisions using a spring-dashpot contact model with Hertzian stiffness. Collision forces between particles on different MPI ranks are communicated via non-blocking point-to-point messaging.
955+
956+
- `interpolation_order` sets the order of the barycentric Lagrange polynomial used to interpolate Eulerian field quantities (pressure, velocity, density) to particle positions. Must be even; the interpolation stencil uses `N/2` points in each direction.
957+
908958
### 10. Velocity Field Setup {#sec-velocity-field-setup}
909959

910960
| Parameter | Type | Description |

docs/documentation/equations.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,46 @@ with \f$\sigma = \varepsilon_b \max(\Delta x^{1/3}_\text{cell},\;R_\text{bubble}
514514

515515
Each bubble is tracked individually with Keller-Miksis dynamics and 4th-order adaptive Runge-Kutta time integration.
516516

517+
### 6.3 Euler-Lagrange Solid Particles (`particles_lagrange = .true.`)
518+
519+
**Source:** `src/simulation/m_particles_EL.fpp`, `src/simulation/m_particles_EL_kernels.fpp`
520+
521+
The Euler-Lagrange particle solver tracks non-deformable solid particles in a compressible carrier flow.
522+
The volume-averaged carrier flow equations use the same source term framework as the bubble model (Section 6.2),
523+
with the particle volume fraction \f$\alpha_p\f$ replacing the bubble void fraction \f$\alpha\f$.
524+
525+
**Particle volume fraction via Gaussian kernel:**
526+
527+
\f[\alpha_p(\mathbf{x}) = \sum_n V_{p,n}\,\delta_\sigma(\mathbf{x} - \mathbf{x}_n)\f]
528+
529+
where \f$V_{p,n} = \frac{4}{3}\pi R_n^3\f$ is the volume of particle \f$n\f$ and \f$\delta_\sigma\f$ is the Gaussian regularization kernel from Section 6.2.
530+
531+
**Particle equation of motion:**
532+
533+
\f[m_p \frac{d\mathbf{u}_p}{dt} = \mathbf{F}_\text{drag} + \mathbf{F}_\text{pressure} + \mathbf{F}_\text{AM} + \mathbf{F}_\text{gravity} + \mathbf{F}_\text{collision}\f]
534+
535+
**Quasi-steady drag force:**
536+
537+
\f[\mathbf{F}_\text{drag} = \beta\,(\mathbf{u}_f - \mathbf{u}_p)\f]
538+
539+
where \f$\beta\f$ is a drag coefficient computed from one of several correlations selected via `qs_drag_model`:
540+
- Parmar et al. (2010): Re and Ma corrections with Sangani et al. (1991) volume fraction correction
541+
- Modified Parmar: Re and Ma corrections with Osnes et al. (2023) volume fraction correction
542+
- Osnes et al. (2023): comprehensive correlation for compressible flow through random particle suspensions
543+
- Gidaspow (1994): Ergun/Wen-Yu correlation for dense suspensions
544+
545+
**Pressure gradient force** (`pressure_force = .true.`):
546+
547+
\f[\mathbf{F}_\text{pressure} = -V_p\,\nabla p\f]
548+
549+
**Added mass force** (`added_mass_model > 0`):
550+
551+
\f[\mathbf{F}_\text{AM} = C_\text{AM}\,\rho_f\,V_p\left(\frac{D\mathbf{u}_f}{Dt} - \frac{d\mathbf{u}_p}{dt}\right)\f]
552+
553+
**Collision force** (`collision_force = .true.`):
554+
555+
Soft-sphere DEM model with Hertzian contact stiffness and viscous damping.
556+
517557
---
518558

519559
## 7. Fluid-Structure Interaction

docs/module_categories.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
"m_bubbles_EE",
2020
"m_bubbles_EL",
2121
"m_bubbles_EL_kernels",
22+
"m_particles_EL",
23+
"m_particles_EL_kernels",
2224
"m_qbmm",
2325
"m_hyperelastic",
2426
"m_hypoelastic",

0 commit comments

Comments
 (0)