Integrator::Fracture ==================== :bdg-link-secondary-line:`src/Integrator/Fracture.H <../../doxygen/Fracture_8H_source.html>` This class implements second and fourth order phase field brittle fracture with near singular solver. This class inherits from the base class :code:`Base/Mechanics.H`. See `this link `__ for more information on this implementation. The energy functional for a second order model is given by .. math:: \mathcal{L}= \int_\Omega \left[\left(g(c) + \eta \right)W_0^+ + W_0^-\right] dV + \int_\Omega G_c \left[ \frac{w(c)}{4\xi} + \xi |\nabla c|^2\right] dV where :math:`g(c)` and :math:`w(c)` are interpolation functions specified by the user. The fracture energy :math:`G_c` and crack length scale :math:`xi` are also read from input file. The tension compression asymmetry is accounted by splitting the strain energy :math:`W_0` as .. math:: W_0^\pm = \frac{1}{2} \lambda (\operatorname{tr}\bm{\varepsilon}_\pm)^2 + \mu \operatorname{tr}\left(\bm{\varepsilon}_\pm^2\right), \quad \bm{\varepsilon_\pm} = \sum_{i=1}^d \left(\varepsilon_i \right)_\pm \hat{\bm{v}}_i\otimes\hat{\bm{v}}_i where :math:`\lambda` and :math:`\mu` are material models for linear elastic isotropic material, :math:`\bm{\varepsilon}_\pm` are the positive and negative components of the strain tensor :math:`\bm{\varepsilon}` computed through eigenvalue decomposition. The fourth order model adds a laplacian term to the free energy functional. The code performs a staggered solve where it solves the elastic problem implicitly and crack problem explicitly. Class methods: #. :code:`Fracture()`: Basic constructor. Does nothing, and leaves all values initiated as NAN. #. :code:`Fracture(IO::ParmParse &pp)`: Calls the parser. #. :code:`static void Parse(Fracture &value, IO::ParmParse &pp)` Parses input file, ICs, BCs, and sets up multifabs appropriately #. :code:`void Initialize(int lev) override` Calls IC and sets up the initial crack geometry. #. :code:`virtual void UpdateModel(int a_step) override` Performs degradation by updating the :math:`\psi` field using :math:`g(c)`. #. :code:`void TimeStepBegin(Set::Scalar a_time, int a_step) override` Solves the elastic problem, performs eigen value decomposition of strain, and computes the positive part of the strain energy. #. :code:`void Advance(int a_lev, amrex::Real a_time, amrex::Real a_dt)` Advances the crack field by computing the variational derivative of energy functional with :math:`c`. #. :code:`void TagCellsForRefinement(int lev, amrex::TagBoxArray &a_tags, Set::Scalar a_time, int a_ngrow) override` Refines the grid based on the crack field. #. :code:`void Integrate(int amrlev, Set::Scalar time, int step, const amrex::MFIter &mfi, const amrex::Box &a_box) override` Performs spatial integration of the driving force to check for convergence of crack problem #. :code:`void TimeStepComplete(Set::Scalar /*time*/, int /* iter*/)` Checks whether the solver should work on crack problem or elastic problem. .. raw:: html
material.refinement_threshold
conditional

Material field related parsing

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
material.refinement_threshold
alamo-3d-coverage-g++
material.refinement_threshold
fracture-2d-coverage-g++
material.refinement_threshold
fracture-3d-coverage-g++
material.refinement_threshold
driving_force_refinement_threshold
1e+100 conditional

Driving force threshold

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
driving_force_refinement_threshold
alamo-3d-coverage-g++
driving_force_refinement_threshold
fracture-2d-coverage-g++
driving_force_refinement_threshold
fracture-3d-coverage-g++
driving_force_refinement_threshold
material.model
repeatable conditional

Let's query material properties for different materials in the system

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
material.model
alamo-3d-coverage-g++
material.model
fracture-2d-coverage-g++
material.model
fracture-3d-coverage-g++
material.model
crack.refinement_threshold
0.0001 conditional

Crack related parsing mesh refinement criteria

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.refinement_threshold
alamo-3d-coverage-g++
crack.refinement_threshold
fracture-2d-coverage-g++
crack.refinement_threshold
fracture-3d-coverage-g++
crack.refinement_threshold
crack.df.beta
0 conditional

constant multiplier for fourth orther model with bilaplacian

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.beta
alamo-3d-coverage-g++
crack.df.beta
fracture-2d-coverage-g++
crack.df.beta
fracture-3d-coverage-g++
crack.df.beta
crack.df.tol_rel
0.001 conditional

relative tolerance for convergence of driving force

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.tol_rel
alamo-3d-coverage-g++
crack.df.tol_rel
fracture-2d-coverage-g++
crack.df.tol_rel
fracture-3d-coverage-g++
crack.df.tol_rel
crack.df.tol_abs
0.001 conditional

absolute tolerance for convergence of driving force

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.tol_abs
alamo-3d-coverage-g++
crack.df.tol_abs
fracture-2d-coverage-g++
crack.df.tol_abs
fracture-3d-coverage-g++
crack.df.tol_abs
crack.df.max_iter
500 conditional

Maximum number of solver iterations

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.max_iter
alamo-3d-coverage-g++
crack.df.max_iter
fracture-2d-coverage-g++
crack.df.max_iter
fracture-3d-coverage-g++
crack.df.max_iter
crack.df.mult_Gc
1 conditional

constant multiplier for controlling fracture energy of interface

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.mult_Gc
alamo-3d-coverage-g++
crack.df.mult_Gc
fracture-2d-coverage-g++
crack.df.mult_Gc
fracture-3d-coverage-g++
crack.df.mult_Gc
crack.df.mult_lap
1 conditional

constant multiplier for second order model with laplacian

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.mult_lap
alamo-3d-coverage-g++
crack.df.mult_lap
fracture-2d-coverage-g++
crack.df.mult_lap
fracture-3d-coverage-g++
crack.df.mult_lap
crack.df.el_mult
1 conditional

unit conversion multiplier between elastic problem and crack problem

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.df.el_mult
alamo-3d-coverage-g++
crack.df.el_mult
fracture-2d-coverage-g++
crack.df.el_mult
fracture-3d-coverage-g++
crack.df.el_mult
crack.ic
constant ellipse expression notch conditional

Let's figure out if there is an initial crack or void

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.ic0.type
alamo-3d-coverage-g++
crack.ic0.type
fracture-2d-coverage-g++
crack.ic0.type
fracture-3d-coverage-g++
crack.ic0.type
crack.ic
repeatable conditional

Let's figure out if there is an initial crack or void

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.ic
alamo-3d-coverage-g++
crack.ic
fracture-2d-coverage-g++
crack.ic
fracture-3d-coverage-g++
crack.ic
crack.model
repeatable conditional

This is needed for the specific crack model we are implementing

Names by executable 4 executables, 4 uses
alamo-2d-coverage-g++
crack.model
alamo-3d-coverage-g++
crack.model
fracture-2d-coverage-g++
crack.model
fracture-3d-coverage-g++
crack.model