|
MFC
Exascale flow solver
|
Contains module m_hypoelastic. More...
Go to the source code of this file.
Modules | |
| module | m_hypoelastic |
| Computes hypoelastic stress-rate source terms and damage-state evolution. | |
Functions/Subroutines | |
| impure subroutine, public | m_hypoelastic::s_initialize_hypoelastic_module |
| Initialize the hypoelastic module. | |
| subroutine, public | m_hypoelastic::s_compute_hypoelastic_rhs_finite_diff_per_sweep (idir, q_prim_vf, rhs_vf) |
| Legacy FD-based hypoelastic RHS (Mode 1: HLL). Uses finite-difference velocity gradients computed from cell-centered primitive variables. Called once per direction inside the dim-split loop. Supports 1D/2D/3D Cartesian and cylindrical geometry. | |
| subroutine, public | m_hypoelastic::s_compute_hypoelastic_rhs_iface (q_prim_vf, rhs_vf, nc_iface_vel_n) |
| Interface-consistent hypoelastic RHS (Mode 2: HLL/HLLC). Uses interface velocities from the Riemann solver to compute velocity gradients. Called once after all dimensional sweeps. Supports 1D, 2D Cartesian, 2D axisymmetric, and 3D Cartesian. | |
| subroutine, public | m_hypoelastic::s_compute_hypoelastic_rhs_axisym_geom_iface (q_prim_vf, rhs_vf, nc_iface_vel_x_vf, nc_iface_vel_y_vf) |
| Axisymmetric geometric source terms for the hypoelastic stress evolution, using interface velocities. Adds the v/r and div(u) contributions that arise in cylindrical (r-z) coordinates: tau_xx, tau_xr, tau_rr get a -rho*(v/r) source; tau_thetatheta gets a combined divergence and hoop-stress source. Called from s_compute_hypoelastic_rhs_iface when grid_geometry == 2. | |
| subroutine, public | m_hypoelastic::s_compute_hypoelastic_rhs_axisym_geom_dual_pass (q_prim_vf, rhs_vf, nc_iface_vel_y_vf, nc_iface_vel_y_hatr_vf) |
| Cylindrical completion for the dual-pass (anchored HLLD) hypoelastic path. The anchored augmented fluxes already carry every axial/radial derivative term of the stress law and the stress rows of flux_gsrc are zero, so the complete remaining cylindrical physics is the cell-local v/r family below: the advective metric -q_s*v/r plus the constitutive v/r terms (and +/-K*C for the volume fractions under alt_soundspeed). The discrete C = v/r averages the cell's own two anchored radial face traces (hat_L outer face, hat_R inner face) over y_cc, so no absolute axial velocity enters and uniform axial translation gives exactly zero. Called once after the two anchored partial RHS's are summed. Continuum damage needs no handling here: HLLD + cont_damage is prohibited (m_checker.fpp). | |
| impure subroutine, public | m_hypoelastic::s_finalize_hypoelastic_module () |
| Finalize the hypoelastic module. | |
| pure real(wp) function | m_hypoelastic::f_max_eig_sym2x2 (a, b, c) |
| Maximum eigenvalue of the symmetric 2x2 matrix [[a, b], [b, c]]. | |
| pure real(wp) function | m_hypoelastic::f_max_eig_sym3x3 (t_xx, t_xy, t_yy, t_xz, t_yz, t_zz) |
| Maximum eigenvalue of a symmetric 3x3 matrix via the trigonometric closed form on its invariants; the acos argument is clamped and hydrostatic/repeated-eigenvalue states fall back to I1/3 to avoid 0/0. | |
| subroutine, public | m_hypoelastic::s_compute_damage_state (q_cons_vf, q_prim_vf, rhs_vf) |
| Accumulate the continuum damage source: the overstress rate on the maximum principal Cauchy stress sigma = -p I + tau_e (full 3D principal set in every dimensionality), weighted by the damageable-solid partial mass. | |
| subroutine, public | m_hypoelastic::s_enforce_cont_damage_bounds (q_cons_vf) |
| Project the conservative continuum-damage carrier onto 0 <= U_D <= m_s. | |
Variables | |
| real(wp), dimension(:), allocatable | m_hypoelastic::gs_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::du_dx_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::du_dy_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::du_dz_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dv_dx_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dv_dy_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dv_dz_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dw_dx_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dw_dy_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::dw_dz_hypo |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::rho_k_field |
| real(wp), dimension(:,:,:), allocatable | m_hypoelastic::g_k_field |
| real(wp), dimension(:,:), allocatable | m_hypoelastic::fd_coeff_x_hypo |
| real(wp), dimension(:,:), allocatable | m_hypoelastic::fd_coeff_y_hypo |
| real(wp), dimension(:,:), allocatable | m_hypoelastic::fd_coeff_z_hypo |
Contains module m_hypoelastic.
Definition in file m_hypoelastic.fpp.f90.