MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_hypoelastic Module Reference

Computes hypoelastic stress-rate source terms and damage-state evolution. More...

Functions/Subroutines

impure subroutine, public s_initialize_hypoelastic_module
 Initialize the hypoelastic module.
subroutine, public 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 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 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 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 s_finalize_hypoelastic_module ()
 Finalize the hypoelastic module.
subroutine, public s_compute_damage_state (q_cons_vf, rhs_vf)
 Compute the continuum damage source term from the principal stress state.

Variables

real(wp), dimension(:), allocatable gs_hypo
real(wp), dimension(:,:,:), allocatable du_dx_hypo
real(wp), dimension(:,:,:), allocatable du_dy_hypo
real(wp), dimension(:,:,:), allocatable du_dz_hypo
real(wp), dimension(:,:,:), allocatable dv_dx_hypo
real(wp), dimension(:,:,:), allocatable dv_dy_hypo
real(wp), dimension(:,:,:), allocatable dv_dz_hypo
real(wp), dimension(:,:,:), allocatable dw_dx_hypo
real(wp), dimension(:,:,:), allocatable dw_dy_hypo
real(wp), dimension(:,:,:), allocatable dw_dz_hypo
real(wp), dimension(:,:,:), allocatable rho_k_field
real(wp), dimension(:,:,:), allocatable g_k_field
real(wp), dimension(:,:), allocatable fd_coeff_x_hypo
real(wp), dimension(:,:), allocatable fd_coeff_y_hypo
real(wp), dimension(:,:), allocatable fd_coeff_z_hypo

Detailed Description

Computes hypoelastic stress-rate source terms and damage-state evolution.

Function/Subroutine Documentation

◆ s_compute_damage_state()

subroutine, public m_hypoelastic::s_compute_damage_state ( type(scalar_field), dimension(sys_size), intent(in) q_cons_vf,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf )

Compute the continuum damage source term from the principal stress state.

Definition at line 2286 of file m_hypoelastic.fpp.f90.

◆ s_compute_hypoelastic_rhs_axisym_geom_dual_pass()

subroutine, public m_hypoelastic::s_compute_hypoelastic_rhs_axisym_geom_dual_pass ( type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(scalar_field), dimension(:), intent(in) nc_iface_vel_y_vf,
type(scalar_field), dimension(:), intent(in) 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).

Parameters
q_prim_vfPrimitive variables
rhs_vfrhs variables
nc_iface_vel_y_vfhat_L-pass radial-direction interface velocities
nc_iface_vel_y_hatR_vfhat_R-pass radial-direction interface velocities

Definition at line 1928 of file m_hypoelastic.fpp.f90.

◆ s_compute_hypoelastic_rhs_axisym_geom_iface()

subroutine, public m_hypoelastic::s_compute_hypoelastic_rhs_axisym_geom_iface ( type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(scalar_field), dimension(:), intent(in) nc_iface_vel_x_vf,
type(scalar_field), dimension(:), intent(in) 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.

Parameters
q_prim_vfPrimitive variables
rhs_vfrhs variables
nc_iface_vel_x_vfInterface velocities in x-direction
nc_iface_vel_y_vfInterface velocities in y-direction

Definition at line 1799 of file m_hypoelastic.fpp.f90.

Here is the caller graph for this function:

◆ s_compute_hypoelastic_rhs_finite_diff_per_sweep()

subroutine, public m_hypoelastic::s_compute_hypoelastic_rhs_finite_diff_per_sweep ( integer, intent(in) idir,
type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) 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.

Parameters
idirDimension splitting index
q_prim_vfPrimitive variables
rhs_vfrhs variables

Definition at line 783 of file m_hypoelastic.fpp.f90.

◆ s_compute_hypoelastic_rhs_iface()

subroutine, public m_hypoelastic::s_compute_hypoelastic_rhs_iface ( type(scalar_field), dimension(sys_size), intent(in) q_prim_vf,
type(scalar_field), dimension(sys_size), intent(inout) rhs_vf,
type(vector_field), dimension(:), intent(in) 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.

Parameters
q_prim_vfPrimitive variables
rhs_vfrhs variables
nc_iface_vel_nInterface velocities per direction

Definition at line 1396 of file m_hypoelastic.fpp.f90.

Here is the call graph for this function:

◆ s_finalize_hypoelastic_module()

impure subroutine, public m_hypoelastic::s_finalize_hypoelastic_module

Finalize the hypoelastic module.

Definition at line 2028 of file m_hypoelastic.fpp.f90.

◆ s_initialize_hypoelastic_module()

impure subroutine, public m_hypoelastic::s_initialize_hypoelastic_module

Initialize the hypoelastic module.

Definition at line 395 of file m_hypoelastic.fpp.f90.

Variable Documentation

◆ du_dx_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::du_dx_hypo

Definition at line 349 of file m_hypoelastic.fpp.f90.

◆ du_dy_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::du_dy_hypo

Definition at line 349 of file m_hypoelastic.fpp.f90.

◆ du_dz_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::du_dz_hypo

Definition at line 349 of file m_hypoelastic.fpp.f90.

◆ dv_dx_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dv_dx_hypo

Definition at line 350 of file m_hypoelastic.fpp.f90.

◆ dv_dy_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dv_dy_hypo

Definition at line 350 of file m_hypoelastic.fpp.f90.

◆ dv_dz_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dv_dz_hypo

Definition at line 350 of file m_hypoelastic.fpp.f90.

◆ dw_dx_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dw_dx_hypo

Definition at line 351 of file m_hypoelastic.fpp.f90.

◆ dw_dy_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dw_dy_hypo

Definition at line 351 of file m_hypoelastic.fpp.f90.

◆ dw_dz_hypo

real(wp), dimension(:,:,:), allocatable m_hypoelastic::dw_dz_hypo

Definition at line 351 of file m_hypoelastic.fpp.f90.

◆ fd_coeff_x_hypo

real(wp), dimension(:,:), allocatable m_hypoelastic::fd_coeff_x_hypo

Definition at line 377 of file m_hypoelastic.fpp.f90.

◆ fd_coeff_y_hypo

real(wp), dimension(:,:), allocatable m_hypoelastic::fd_coeff_y_hypo

Definition at line 378 of file m_hypoelastic.fpp.f90.

◆ fd_coeff_z_hypo

real(wp), dimension(:,:), allocatable m_hypoelastic::fd_coeff_z_hypo

Definition at line 379 of file m_hypoelastic.fpp.f90.

◆ g_k_field

real(wp), dimension(:,:,:), allocatable m_hypoelastic::g_k_field

Definition at line 364 of file m_hypoelastic.fpp.f90.

◆ gs_hypo

real(wp), dimension(:), allocatable m_hypoelastic::gs_hypo

Definition at line 336 of file m_hypoelastic.fpp.f90.

◆ rho_k_field

real(wp), dimension(:,:,:), allocatable m_hypoelastic::rho_k_field

Definition at line 364 of file m_hypoelastic.fpp.f90.