Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
b212c7e
hypo HLLC works
ChrisZYJ Oct 13, 2025
d18cf7e
HLLC ADC works
ChrisZYJ Nov 13, 2025
bb1c88f
HLLD works
ChrisZYJ Nov 17, 2025
bae9d1b
HLLD ADC works
ChrisZYJ Nov 17, 2025
0004a17
fix critical HLLD index bug
ChrisZYJ Mar 7, 2026
b921abf
complete refactor and backwards compatibility
ChrisZYJ Mar 7, 2026
cb2b1fb
HLLD KdivU; HLL u_interface NC
ChrisZYJ Mar 8, 2026
aaad026
fix non-hypo HLLC bug
ChrisZYJ Mar 10, 2026
8359c71
2D Axisym works
ChrisZYJ Mar 10, 2026
1a3b845
2DA oracle -> main; fix OpenACC
ChrisZYJ Mar 11, 2026
fd8f89e
3D works
ChrisZYJ Mar 11, 2026
f30889d
fix 3D
ChrisZYJ Mar 11, 2026
03d68a5
fix 3D; HLLC+ADC for all
ChrisZYJ Mar 11, 2026
ea63315
fix 2DA HLLD
ChrisZYJ Mar 14, 2026
1d4a08d
in progress: major bug fix; HLL method 2
ChrisZYJ Mar 18, 2026
556a035
in progress: major bug fix
ChrisZYJ Mar 19, 2026
9828375
in progress: major bug fix
ChrisZYJ Mar 20, 2026
9731acf
in progress: major bug fix
ChrisZYJ Mar 20, 2026
9ca2ce8
major bug fix likely done
ChrisZYJ Mar 20, 2026
4107872
format
ChrisZYJ Mar 20, 2026
606970e
tests
ChrisZYJ Mar 20, 2026
6248e68
fix HLLM2 2DA hypo noKdivu; golden HLLM1 hypo; golden HLLM2 nonhypo
ChrisZYJ Mar 21, 2026
db5f9d4
hll_alpha_interface to hll_u_interface
ChrisZYJ Mar 21, 2026
839caac
merge upstream; all conflicts resolved
ChrisZYJ Mar 22, 2026
969bcfa
fix compile; pass old tests
ChrisZYJ Mar 22, 2026
ffd97d7
formatting and checker
ChrisZYJ Mar 22, 2026
e1a199b
new hypo use riemann instead with golden generated using pre-merge; p…
ChrisZYJ Mar 30, 2026
7525593
formatting
ChrisZYJ Mar 30, 2026
838f06a
gpu fix
ChrisZYJ Apr 1, 2026
74fcc3d
fix GPU compile
ChrisZYJ Apr 4, 2026
fc056a7
GPU all tests passed
ChrisZYJ Apr 4, 2026
982599f
format
ChrisZYJ Apr 4, 2026
a27705a
remove wrongly tracked case folder
ChrisZYJ Apr 4, 2026
91235a4
docs and checkers
ChrisZYJ Apr 14, 2026
0ab41c4
clearer flags and comments
ChrisZYJ Apr 16, 2026
a721550
minor bugs and HLLC fallback
ChrisZYJ Apr 16, 2026
cbd11eb
fix AMD
ChrisZYJ Apr 16, 2026
38e9d2d
all tests passed on Frontier
ChrisZYJ Apr 17, 2026
8ecb5ff
merge upstream
ChrisZYJ Apr 17, 2026
5b5cd68
revert unnecessary diff against upstream
ChrisZYJ Apr 17, 2026
4d1cd8a
revert variable_conversion robustness fix; minor clean up
ChrisZYJ Apr 17, 2026
f62c45e
minor changes
ChrisZYJ Apr 17, 2026
362ecaf
relax hypo 2D-Axisym HLLC tol
ChrisZYJ Apr 21, 2026
c32a52b
Merge branch 'master' into hypo_HLLC_new
ChrisZYJ Apr 21, 2026
0d2d33f
fix HLLC ADC parity, precision, docs, examples
ChrisZYJ Apr 21, 2026
31925f5
update examples
ChrisZYJ Apr 26, 2026
1f681f2
MUSCL
ChrisZYJ Apr 28, 2026
5452db0
Merge MUSCL_fix branch + upstream master (4 commits)
ChrisZYJ Apr 28, 2026
063121f
remove clamp
ChrisZYJ May 5, 2026
9306592
Merge master into hypo_hlld (resolve muscl_eps f_is_default)
ChrisZYJ May 6, 2026
886ca57
comments; formatting; made concise
ChrisZYJ May 6, 2026
0f01a60
dev notes
ChrisZYJ May 6, 2026
0ff4dd5
Merge master into hypo_hlld (MTHINC, hypo simplify, tau_Re fix, pertu…
ChrisZYJ May 8, 2026
7f08352
format
ChrisZYJ May 8, 2026
f85530d
lint
ChrisZYJ May 9, 2026
bc69bba
format
ChrisZYJ May 9, 2026
be0ea85
consistent hypo_energy_guard
ChrisZYJ May 15, 2026
5a1d003
fix HLLD doubling acoustic source; fix HLLD SM thresholding
ChrisZYJ May 19, 2026
d6b3155
recon_comp_rho
ChrisZYJ May 26, 2026
32321da
HLLD dual-pass: reconstruct once per RK stage
ChrisZYJ Jun 6, 2026
a29e3a0
HLLD dual-pass: internalize the two anchored passes in s_compute_rhs
ChrisZYJ Jun 6, 2026
eb7ce78
HLLD dual-pass: convert recon_comp_rho faces per sweep direction only
ChrisZYJ Jun 7, 2026
760ba75
HLLD dual-pass: add hat_R flux, gsrc, and interface-velocity buffers …
ChrisZYJ Jun 7, 2026
7f6dbff
HLLD dual-pass: fuse the two anchored solves into one kernel per dire…
ChrisZYJ Jun 7, 2026
a5d588a
HLLD fused solve: register-diet the F_hlld wave-fan (6 star arrays ->…
ChrisZYJ Jun 9, 2026
a4f30ca
HLLD fused solve: fold the ADC F_HLL/U_HLL arrays into per-component …
ChrisZYJ Jun 10, 2026
9cab431
HLLD fused solve: fold the us/uss star arrays into the per-component …
ChrisZYJ Jun 10, 2026
622d55d
Merge upstream/master (087c3cea) into hypo_hlld_fusion_diet
ChrisZYJ Jun 10, 2026
fa13ba1
docs: add hypo_energy_guard and recon_comp_rho to case.md parameter t…
ChrisZYJ Jun 10, 2026
2187761
format: apply pinned ffmt to merge-touched files
ChrisZYJ Jun 10, 2026
cd44040
test: regenerate 2 WENO5 axisym u-interface goldens for upstream SSB …
ChrisZYJ Jun 10, 2026
1a11bf2
fix: probe pressure for hypoelastic cases (E269)
ChrisZYJ Jun 10, 2026
51b8e0e
Merge upstream 4cebbb01 into hypo HLLD (re-graft onto #1556 riemann s…
ChrisZYJ Jun 20, 2026
d43057b
Fix hypo-HLLD GPU portability (nvfortran directive folding + flag dev…
ChrisZYJ Jun 20, 2026
1a9c09e
Strip recon_comp_rho + guard hypo-HLLD viscous/surface-tension holes
ChrisZYJ Jun 20, 2026
141080c
Fix hypo_energy_guard consistency in post_process
ChrisZYJ Jun 23, 2026
bd03fdb
Harden hypo-HLLD dual-pass solver (degenerate ADC init, star-state fl…
ChrisZYJ Jun 23, 2026
0de9280
Guard unsupported hypo-HLLD and ADC feature combinations
ChrisZYJ Jun 23, 2026
45a86da
Clean up hypo-HLLD: dead variables, dead macro, comments
ChrisZYJ Jun 23, 2026
2ce52e0
Merge upstream master (272ac0a1) into hypo_hlld
ChrisZYJ Jun 23, 2026
d55a3f3
minor comment change
ChrisZYJ Jun 23, 2026
6cc0a86
checker
ChrisZYJ Jun 23, 2026
5cbec04
Document the three hypoelasticity Riemann-solver code shapes
ChrisZYJ Jun 23, 2026
76075dc
Collapse the adv_src_* booleans into an adv_src_mode enum
ChrisZYJ Jun 24, 2026
33748b8
Generate the dual-pass nc_iface_vel finalize pair from one Fypp template
ChrisZYJ Jun 24, 2026
286a0dc
Complete the adv_src_mode rename in the equations.md cross-reference
ChrisZYJ Jun 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions docs/documentation/case.md
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,8 @@ See @ref equations "Equations" for the mathematical models these parameters cont
| `flux_lim` | Integer | Flux limiter for post-process: [1] minmod; [2] MUSCL; [3] OSPRE; [4] SUPERBEE |
| `ic_eps` | Real | Interface compression threshold (default: 1e-4) |
| `ic_beta` | Real | Interface compression sharpness parameter (default: 1.6) |
| `riemann_solver` | Integer | Riemann solver algorithm: [1] HLL*; [2] HLLC; [3] Exact*; [4] HLLD (only for MHD) |
| `riemann_solver` | Integer | Riemann solver algorithm: [1] HLL*; [2] HLLC; [3] Exact*; [4] HLLD (MHD or hypoelasticity) |
| `hll_u_interface` | Logical | HLL Method 2 (u-interface) for volume fraction advection (default F) |
| `low_Mach` | Integer | Low Mach number correction for HLLC Riemann solver: [0] None; [1] Pressure (\cite Chen22); [2] Velocity (\cite Thornber08) |
| `avg_state` | Integer | Averaged state evaluation method: [1] Roe average*; [2] Arithmetic mean |
| `wave_speeds` | Integer | Wave-speed estimation: [1] Direct (\cite Batten97); [2] Pressure-velocity* (\cite Toro09) |
Expand All @@ -508,6 +509,10 @@ See @ref equations "Equations" for the mathematical models these parameters cont
| `viscous` | Logical | Activate viscosity |
| `hypoelasticity` | Logical | Activate hypoelasticity* |
| `pre_stress` | Logical | Enable pre-stress initialization for hypoelasticity |
| `riemann_hypo_ADC` | Logical | Enable hypo anti-diffusion correction for HLLC/HLLD (default F) |
| `ADC_kappa` | Real | ADC sensor scaling parameter (default 1.0) |
| `hypo_hll_interface_rhs` | Logical | HLL uses interface-consistent hypo RHS (default F) |
| `hypo_energy_guard` | Logical | Guard elastic energy when shear modulus is near zero (default T) |
| `igr` | Logical | Enable solution via information geometric regularization (IGR) \cite Cao24 |
| `igr_order` | Integer | Order of reconstruction for IGR [3,5] |
| `alf_factor` | Real | Alpha factor for IGR entropic pressure (default 10) |
Expand Down Expand Up @@ -587,7 +592,11 @@ Setting `muscl_eps = 0` gives textbook limiter behavior where limiters activate

- `riemann_solver` specifies the choice of the Riemann solver that is used in simulation by an integer from 1 through 4.
`riemann_solver = 1`, `2`, and `3` correspond to HLL, HLLC, and Exact Riemann solver, respectively (\cite Toro09).
`riemann_solver = 4` is only for MHD simulations. It resolves 5 of the full seven-wave structure of the MHD equations (\cite Miyoshi05).
`riemann_solver = 4` is the HLLD solver for MHD or hypoelasticity simulations. For MHD it resolves 5 of the full seven-wave structure of the MHD equations (\cite Miyoshi05).

- `hll_u_interface`: Selects between two HLL discretizations of volume fraction advection (`riemann_solver = 1`):
- **Default** (``'F'``): \f$\partial_t \alpha_k + u\,\partial_x \alpha_k = 0\f$
- **u-interface** (``'T'``, consistent with HLLC): \f$\partial_t \alpha_k + \partial_x(\alpha_k\, u) = \alpha_k\,\partial_x u\f$

- `low_Mach` specifies the choice of the low Mach number correction scheme for the HLLC Riemann solver. `low_Mach = 0` is default value and does not apply any correction scheme. `low_Mach = 1` and `2` apply the anti-dissipation pressure correction method (\cite Chen22) and the improved velocity reconstruction method (\cite Thornber08). This feature requires `model_eqns = 2` or `3`. `low_Mach = 1` works for `riemann_solver = 1` and `2`, but `low_Mach = 2` only works for `riemann_solver = 2`.

Expand All @@ -607,7 +616,12 @@ This option requires `weno_Re_flux` to be true because cell boundary values are

- `viscous` activates viscosity when set to ``'T'``. Requires `Re(1)` and `Re(2)` to be set.

- `hypoelasticity` activates elastic stress calculations for fluid-solid interactions. Requires `G` to be set in the fluid material's parameters.
- `hypoelasticity` activates elastic stress calculations for fluid-solid interactions. Requires `G` to be set in `fluid_pp`. Compatible with HLL (`riemann_solver = 1`), HLLC (`riemann_solver = 2`), and HLLD (`riemann_solver = 4`). The Riemann solver choice determines how the elastic stress source term \f$\mathbf{S}^e\f$ is discretized:
- **HLL**: finite-difference velocity gradient (default), or interface-consistent velocity gradient when ``hypo_hll_interface_rhs = 'T'`` (matches HLLC).
- **HLLC**: interface-consistent velocity gradient from the Riemann solution.
- **HLLD**: dual-pass approach resolving the elastic wave structure. Requires 2D+ and exactly 2 fluid components.

- `riemann_hypo_ADC`: Enables anti-diffusion correction (ADC) for hypoelastic HLLC or HLLD. Blends HLLC/HLLD fluxes toward HLL based on a local sensor, improving robustness and reducing interfacial overshoots in strong supersonic hypoelastic problems. `ADC_kappa` (default 1.0) scales the ADC sensor; larger values blend more toward HLL (more diffusive and robust).

#### Boundary Condition Patches {#boundary-condition-patches}

Expand Down
21 changes: 19 additions & 2 deletions docs/documentation/equations.md
Original file line number Diff line number Diff line change
Expand Up @@ -883,16 +883,33 @@ Four-state solver resolving the contact discontinuity. Star-state satisfies:

Iterative exact Riemann solver.

#### HLLD (`riemann_solver = 4`, MHD only)
#### HLLD (`riemann_solver = 4`, MHD or hypoelasticity)

Seven-state solver for ideal MHD resolving fast magnetosonic, Alfven, and contact waves (\cite Miyoshi05). The Riemann fan is divided by outer wave speeds \f$S_L\f$, \f$S_R\f$, Alfven speeds \f$S_L^*\f$, \f$S_R^*\f$, and a middle contact \f$S_M\f$:
**MHD HLLD.** Seven-state solver for ideal MHD resolving fast magnetosonic, Alfven, and contact waves (\cite Miyoshi05). The Riemann fan is divided by outer wave speeds \f$S_L\f$, \f$S_R\f$, Alfven speeds \f$S_L^*\f$, \f$S_R^*\f$, and a middle contact \f$S_M\f$:

\f[S_M = \frac{(S_R - u_R)\rho_R u_R - (S_L - u_L)\rho_L u_L - p_{T,R} + p_{T,L}}{(S_R - u_R)\rho_R - (S_L - u_L)\rho_L}\f]

\f[S_L^* = S_M - \frac{|B_x|}{\sqrt{\rho_L^*}}, \qquad S_R^* = S_M + \frac{|B_x|}{\sqrt{\rho_R^*}}\f]

where \f$p_T = p + |\mathbf{B}|^2/2\f$ is the total (thermal + magnetic) pressure. Continuity of normal velocity and total pressure is enforced across the Riemann fan.

**Hypoelastic HLLD.** Shares the five-wave Riemann fan structure with MHD HLLD, but differs substantially in formulation. Elastic shear waves play the role of Alfven waves, with total pressure \f$p_T = p - \tau_{nn}\f$ and shear wave impedance \f$C = \hat{\rho}(\hat{G} + \hat{\tau}_{nn})\f$. However, the non-conservative nature of the multi-component elastic stress equations — particularly at material interfaces where \f$G\f$ is discontinuous — requires a dedicated treatment distinct from the MHD solver.

The solver uses an **anchored dual-pass** formulation. Each Riemann solve at interface \f$j{+}1/2\f$ requires cell-centered quantities for the non-conservative products; these are taken as cell-centered values from the cell that the flux will update, rather than from the reconstructed interface states:

\f[\mathbf{F}_{j+1/2}^{\text{left}} = \text{HLLD}\!\left(\mathbf{q}_{j+1/2}^L,\;\mathbf{q}_{j+1/2}^R;\;\mathbf{q}_{\text{cell},\,j}\right), \qquad \mathbf{F}_{j-1/2}^{\text{right}} = \text{HLLD}\!\left(\mathbf{q}_{j-1/2}^L,\;\mathbf{q}_{j-1/2}^R;\;\mathbf{q}_{\text{cell},\,j}\right)\f]

\f[\frac{d\mathbf{U}_j}{dt} = \frac{1}{\Delta x}\!\left(\mathbf{F}_{j-1/2}^{\text{right}} - \mathbf{F}_{j+1/2}^{\text{left}}\right)\f]

This formulation enables HLLD to be used with the non-conservative terms that affect the eigenstructure of the quasi-linear Jacobian. Volume fraction advection is built into the HLLD flux rather than treated as a separate non-conservative step.

#### Developer Notes on Non-Conservative Term Implementation

For details on how the Riemann solvers discretize non-conservative terms (volume fraction advection, Kapila \f$K\,\nabla\!\cdot\!\mathbf{u}\f$, and hypoelastic velocity gradients) and hand off interface quantities to the RHS, see the notes in `misc/dev_notes/`:

- `HLL_HLLC_non_conservative_terms_derivations.md` — Mathematical derivation of HLL Method 1 (alpha-interface), Method 2 (u-interface), and HLLC transport traces, including the \f$S_M\zeta_K\f$ star-branch construction and ADC blending.
- `Riemann_and_RHS_source_terms_explanations.md` — Code dataflow: which arrays carry what between m_riemann_solvers and m_rhs, overloading of flux_src, the three NC advection modes (adv_src_mode_alpha_iface, adv_src_mode_vel_iface, adv_src_mode_none), and the nc_iface_vel second export channel.

### 15.3 Time Integration

**Source:** `src/simulation/m_time_steppers.fpp`
Expand Down
1 change: 1 addition & 0 deletions docs/module_categories.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"m_riemann_solver_hll",
"m_riemann_solver_lf",
"m_riemann_solver_hllc",
"m_riemann_solver_hypo_hlld",
"m_muscl",
"m_variables_conversion",
"m_thinc"
Expand Down
110 changes: 110 additions & 0 deletions examples/2D_axisym_hypo_hlld/case.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
#!/usr/bin/env python3
import json

# 2D axisymmetric hypoelastic case with HLLD solver.
# Epoxy sphere in water hit by focused acoustic pulse.
# Water: gamma=4.4, pi_inf=6.0e8, G=0
# Epoxy: gamma=4.4, pi_inf=2.4e9, rho=1180, G=1.5e9

gamma_w, pi_inf_w, rho_w = 4.4, 6.0e8, 1000.0
gamma_e, pi_inf_e, rho_e = 4.4, 2.4e9, 1180.0

config = {
"run_time_info": "T",
# Computational Domain
"x_domain%beg": 0.0,
"x_domain%end": 1.0,
"y_domain%beg": 0.0,
"y_domain%end": 1.0,
"cyl_coord": "T",
"m": 99,
"n": 99,
"p": 0,
"dt": 1.5e-6,
"t_step_start": 0,
"t_step_stop": 400,
"t_step_save": 100,
# Simulation Algorithm
"num_patches": 2,
"model_eqns": 2,
"alt_soundspeed": "F",
"num_fluids": 2,
"mpp_lim": "F",
"mixture_err": "F",
"time_stepper": 3,
"weno_order": 5,
"weno_eps": 1.0e-16,
"mapped_weno": "T",
"null_weights": "F",
"mp_weno": "F",
"riemann_solver": 4,
"wave_speeds": 1,
"avg_state": 2,
"bc_x%beg": -6,
"bc_x%end": -6,
"bc_y%beg": -2,
"bc_y%end": -6,
# Output
"format": 1,
"precision": 2,
"prim_vars_wrt": "T",
"rho_wrt": "T",
"parallel_io": "T",
# Hypoelasticity
"hypoelasticity": "T",
"fd_order": 4,
# Patch 1: Water background
"patch_icpp(1)%geometry": 3,
"patch_icpp(1)%x_centroid": 0.5,
"patch_icpp(1)%y_centroid": 0.5,
"patch_icpp(1)%length_x": 1.0,
"patch_icpp(1)%length_y": 1.0,
"patch_icpp(1)%vel(1)": 0.0,
"patch_icpp(1)%vel(2)": 0.0,
"patch_icpp(1)%pres": 1e05,
"patch_icpp(1)%tau_e(1)": 0.0,
"patch_icpp(1)%alpha_rho(1)": rho_w * (1.0 - 1e-8),
"patch_icpp(1)%alpha(1)": 1.0 - 1e-8,
"patch_icpp(1)%alpha_rho(2)": rho_e * 1e-8,
"patch_icpp(1)%alpha(2)": 1e-8,
# Patch 2: Epoxy square (cylinder in axisym)
"patch_icpp(2)%alter_patch(1)": "T",
"patch_icpp(2)%geometry": 3,
"patch_icpp(2)%x_centroid": 0.6,
"patch_icpp(2)%y_centroid": 0.2,
"patch_icpp(2)%length_x": 0.2,
"patch_icpp(2)%length_y": 0.2,
"patch_icpp(2)%smoothen": "T",
"patch_icpp(2)%smooth_patch_id": 1,
"patch_icpp(2)%smooth_coeff": 2.0,
"patch_icpp(2)%vel(1)": 0.0,
"patch_icpp(2)%vel(2)": 0.0,
"patch_icpp(2)%pres": 1e05,
"patch_icpp(2)%tau_e(1)": 0.0,
"patch_icpp(2)%alpha_rho(1)": rho_w * 1e-8,
"patch_icpp(2)%alpha(1)": 1e-8,
"patch_icpp(2)%alpha_rho(2)": rho_e * (1.0 - 1e-8),
"patch_icpp(2)%alpha(2)": 1.0 - 1e-8,
# Acoustic source (axisymmetric focused)
"acoustic_source": "T",
"num_source": 1,
"acoustic(1)%support": 6,
"acoustic(1)%loc(1)": 0.1,
"acoustic(1)%loc(2)": 0.0,
"acoustic(1)%pulse": 2,
"acoustic(1)%npulse": 1,
"acoustic(1)%mag": 1.0,
"acoustic(1)%foc_length": 0.8,
"acoustic(1)%aperture": 0.8,
"acoustic(1)%gauss_sigma_time": 4e-5,
"acoustic(1)%delay": 2e-4,
# Fluids Physical Parameters
"fluid_pp(1)%gamma": 1.0 / (gamma_w - 1.0),
"fluid_pp(1)%pi_inf": gamma_w * pi_inf_w / (gamma_w - 1.0),
"fluid_pp(1)%G": 0.0,
"fluid_pp(2)%gamma": 1.0 / (gamma_e - 1.0),
"fluid_pp(2)%pi_inf": gamma_e * pi_inf_e / (gamma_e - 1.0),
"fluid_pp(2)%G": 1.5e9,
}

print(json.dumps(config, indent=4))
110 changes: 110 additions & 0 deletions examples/2D_hypo_hlld/case.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
#!/usr/bin/env python3
import json

# 2D hypoelastic case with HLLD solver.
# Epoxy circle in water hit by focused acoustic pulse.
# Water: gamma=4.4, pi_inf=6.0e8, G=0
# Epoxy: gamma=4.4, pi_inf=2.4e9, rho=1180, G=1.5e9

gamma_w, pi_inf_w, rho_w = 4.4, 6.0e8, 1000.0
gamma_e, pi_inf_e, rho_e = 4.4, 2.4e9, 1180.0

config = {
"run_time_info": "T",
# Computational Domain
"x_domain%beg": 0.0,
"x_domain%end": 1.0,
"y_domain%beg": 0.0,
"y_domain%end": 1.0,
"m": 99,
"n": 99,
"p": 0,
"dt": 1.5e-6,
"t_step_start": 0,
"t_step_stop": 400,
"t_step_save": 100,
# Simulation Algorithm
"num_patches": 2,
"model_eqns": 2,
"alt_soundspeed": "F",
"num_fluids": 2,
"mpp_lim": "F",
"mixture_err": "F",
"time_stepper": 3,
"weno_order": 5,
"weno_eps": 1.0e-16,
"mapped_weno": "T",
"null_weights": "F",
"mp_weno": "F",
"riemann_solver": 4,
"wave_speeds": 1,
"avg_state": 2,
"bc_x%beg": -6,
"bc_x%end": -6,
"bc_y%beg": -6,
"bc_y%end": -6,
# Output
"format": 1,
"precision": 2,
"prim_vars_wrt": "T",
"rho_wrt": "T",
"parallel_io": "T",
# Hypoelasticity
"hypoelasticity": "T",
"fd_order": 4,
# Patch 1: Water background
"patch_icpp(1)%geometry": 3,
"patch_icpp(1)%x_centroid": 0.5,
"patch_icpp(1)%y_centroid": 0.5,
"patch_icpp(1)%length_x": 1.0,
"patch_icpp(1)%length_y": 1.0,
"patch_icpp(1)%vel(1)": 0.0,
"patch_icpp(1)%vel(2)": 0.0,
"patch_icpp(1)%pres": 1e05,
"patch_icpp(1)%tau_e(1)": 0.0,
"patch_icpp(1)%alpha_rho(1)": rho_w * (1.0 - 1e-8),
"patch_icpp(1)%alpha(1)": 1.0 - 1e-8,
"patch_icpp(1)%alpha_rho(2)": rho_e * 1e-8,
"patch_icpp(1)%alpha(2)": 1e-8,
# Patch 2: Epoxy square
"patch_icpp(2)%alter_patch(1)": "T",
"patch_icpp(2)%geometry": 3,
"patch_icpp(2)%x_centroid": 0.6,
"patch_icpp(2)%y_centroid": 0.5,
"patch_icpp(2)%length_x": 0.2,
"patch_icpp(2)%length_y": 0.2,
"patch_icpp(2)%smoothen": "T",
"patch_icpp(2)%smooth_patch_id": 1,
"patch_icpp(2)%smooth_coeff": 2.0,
"patch_icpp(2)%vel(1)": 0.0,
"patch_icpp(2)%vel(2)": 0.0,
"patch_icpp(2)%pres": 1e05,
"patch_icpp(2)%tau_e(1)": 0.0,
"patch_icpp(2)%alpha_rho(1)": rho_w * 1e-8,
"patch_icpp(2)%alpha(1)": 1e-8,
"patch_icpp(2)%alpha_rho(2)": rho_e * (1.0 - 1e-8),
"patch_icpp(2)%alpha(2)": 1.0 - 1e-8,
# Acoustic source (2D focused arc)
"acoustic_source": "T",
"num_source": 1,
"acoustic(1)%support": 5,
"acoustic(1)%loc(1)": 0.1,
"acoustic(1)%loc(2)": 0.5,
"acoustic(1)%pulse": 2,
"acoustic(1)%npulse": 1,
"acoustic(1)%dir": 1.0,
"acoustic(1)%mag": 1.0,
"acoustic(1)%foc_length": 0.4,
"acoustic(1)%aperture": 0.75,
"acoustic(1)%gauss_sigma_time": 4e-5,
"acoustic(1)%delay": 2e-4,
# Fluids Physical Parameters
"fluid_pp(1)%gamma": 1.0 / (gamma_w - 1.0),
"fluid_pp(1)%pi_inf": gamma_w * pi_inf_w / (gamma_w - 1.0),
"fluid_pp(1)%G": 0.0,
"fluid_pp(2)%gamma": 1.0 / (gamma_e - 1.0),
"fluid_pp(2)%pi_inf": gamma_e * pi_inf_e / (gamma_e - 1.0),
"fluid_pp(2)%G": 1.5e9,
}

print(json.dumps(config, indent=4))
Loading
Loading