v0.9.1
Classes | Typedefs | Enumerations | Functions | Variables
FractureMechanics Namespace Reference

Classes

struct  AnalyticalDisp
 
struct  AnalyticalForces
 
struct  AnalyticalOptions
 
struct  ConstantArea
 Constant area constrains. More...
 
struct  CPMeshCut
 
struct  CPSolvers
 
struct  CrackFrontSingularBase
 
struct  CrackPropagation
 
struct  FirendVolumeOnSide
 
struct  GetSmoothingElementsSkin
 
struct  GriffithForceElement
 Implementation of Griffith element. More...
 
struct  MWLSApprox
 
struct  OpAleLhsWithDensitySingularElement_dx_dX
 
struct  OpAleLhsWithDensitySingularElement_dX_dX
 
struct  OpAnalyticalMaterialTraction
 
struct  OpAnalyticalSpatialTraction
 
struct  OpGetCrackFrontCommonDataAtGaussPts
 
struct  OpGetCrackFrontDataAtGaussPts
 
struct  OpGetCrackFrontDataGradientAtGaussPts
 
struct  OpLhsBoneExplicitDerivariveWithHooke_dx
 
struct  OpLhsBoneExplicitDerivariveWithHooke_dX
 Calculate explicit derivative of energy. More...
 
struct  OpPostProcDisplacements
 
struct  OpPrint
 
struct  OpRhsBoneExplicitDerivariveWithHooke
 Calculate explicit derivative of energy. More...
 
struct  OpSetTagRangeOnSkin
 Mark crack surfaces on skin. More...
 
struct  OpTransfromSingularBaseFunctions
 
class  TwoType
 

Typedefs

typedef CrackFrontSingularBase< NonlinearElasticElement::MyVolumeFE, VolumeElementForcesAndSourcesCoreCrackFrontElement
 

Enumerations

enum  Materials {
  HOOKE, KIRCHHOFF, NEOHOOKEAN, BONEHOOKE,
  LASTOP
}
 
enum  CrackInterfaces { CRACK_PROPAGATION_INTERFACE = 1 << 0, CP_SOLVERS_INTERFACE = 1 << 1, CP_CUT_MESH_INTERFACE = 1 << 2 }
 
enum  AdolcTags {
  ELASTIC_TAG = 1, MATERIAL_TAG, GRIFFITH_FORCE_TAG, GRIFFITH_CONSTRAINS_TAG,
  CONSTANT_AREA_TAG, ARC_LENGTH_TAG, FRONT_TANGENT, EXTERIOR_DERIVATIVE_TAG,
  SMOOTHING_TAG, SURFACE_SLIDING_TAG, EDGE_SLIDING_TAG
}
 Tapes numbers used by ADOL-C. More...
 

Functions

static double calMax (double a, double b, double r)
 
static double diffCalMax_a (double a, double b, double r)
 
static MoFEMErrorCode elastic_snes_rhs (SNES snes, Vec x, Vec f, void *ctx)
 
static MoFEMErrorCode elastic_snes_mat (SNES snes, Vec x, Mat A, Mat B, void *ctx)
 
static MoFEMErrorCode propagation_snes_rhs (SNES snes, Vec x, Vec f, void *ctx)
 
static MoFEMErrorCode propagation_snes_mat (SNES snes, Vec x, Mat A, Mat B, void *ctx)
 

Variables

static const MOFEMuuid IDD_MOFEMCPMeshCutInterface
 
static const MOFEMuuid IDD_MOFEMCPSolversInterface
 
static const MOFEMuuid IDD_MOFEMCrackPropagationInterface
 
static std::map< long int, MatrixDoublemapRefCoords
 
const char * materials_list []
 

Typedef Documentation

◆ CrackFrontElement

Definition at line 376 of file CrackFrontElement.hpp.

Enumeration Type Documentation

◆ AdolcTags

◆ CrackInterfaces

Three interfaces used to solve fracture problem

Enumerator
CRACK_PROPAGATION_INTERFACE 
CP_SOLVERS_INTERFACE 
CP_CUT_MESH_INTERFACE 

Definition at line 27 of file CrackPropagation.hpp.

◆ Materials

Function Documentation

◆ calMax()

static double FractureMechanics::calMax ( double  a,
double  b,
double  r 
)
static

Definition at line 24 of file GriffithForceElement.hpp.

24  {
25  return (a + b + (1 / r) * pow(fabs(a - b), r)) / 2;
26 }

◆ diffCalMax_a()

static double FractureMechanics::diffCalMax_a ( double  a,
double  b,
double  r 
)
static

Definition at line 28 of file GriffithForceElement.hpp.

28  {
29  double sgn = ((a - b) == 0) ? 0 : (((a - b) < 0) ? -1 : 1);
30  return (1 + pow(fabs(a - b), r - 1) * sgn * (+1)) / 2;
31 }

◆ elastic_snes_mat()

static MoFEMErrorCode FractureMechanics::elastic_snes_mat ( SNES  snes,
Vec  x,
Mat  A,
Mat  B,
void *  ctx 
)
static

Definition at line 6944 of file CrackPropagation.cpp.

6945  {
6946  CrackPropagation::ArcLengthSnesCtx *arc_snes_ctx =
6947  (CrackPropagation::ArcLengthSnesCtx *)ctx;
6948  DMMGViaApproxOrdersCtx *dm_ctx = arc_snes_ctx->dmCtx;
6950  CHKERR SnesMat(snes, x, A, B, ctx);
6951  CHKERR MatDiagonalScale(B, arc_snes_ctx->diagM, PETSC_NULL);
6952  if (dm_ctx->coarseningIS.size() > 1) {
6953  CHKERR MatCreateSubMatrix(B, dm_ctx->coarseningIS[0],
6954  dm_ctx->coarseningIS[0], MAT_REUSE_MATRIX,
6955  &(dm_ctx->kspOperators[0]));
6956  // MatView(dm_ctx->kspOperators[0], PETSC_VIEWER_DRAW_WORLD);
6957  // std::string wait;
6958  // std::cin >> wait;
6959  // MatView(B, PETSC_VIEWER_DRAW_WORLD);
6960  // std::cin >> wait;
6961  }
6963 };
PetscErrorCode SnesMat(SNES snes, Vec x, Mat A, Mat B, void *ctx)
This is MoFEM implementation for the left hand side (tangent matrix) evaluation in SNES solver.
Definition: SnesCtx.cpp:121
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
Structure for DM for multi-grid via approximation orders.
#define CHKERR
Inline error check.
Definition: definitions.h:601
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412
std::vector< Mat > kspOperators
Get KSP operators.
std::vector< IS > coarseningIS
Coarsening IS.

◆ elastic_snes_rhs()

static MoFEMErrorCode FractureMechanics::elastic_snes_rhs ( SNES  snes,
Vec  x,
Vec  f,
void *  ctx 
)
static

Definition at line 6935 of file CrackPropagation.cpp.

6935  {
6936  CrackPropagation::ArcLengthSnesCtx *arc_snes_ctx =
6937  (CrackPropagation::ArcLengthSnesCtx *)ctx;
6939  CHKERR SnesRhs(snes, x, f, ctx);
6940  CHKERR VecPointwiseMult(f, f, arc_snes_ctx->diagM);
6942 }
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
#define CHKERR
Inline error check.
Definition: definitions.h:601
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412
PetscErrorCode SnesRhs(SNES snes, Vec x, Vec f, void *ctx)
This is MoFEM implementation for the right hand side (residual vector) evaluation in SNES solver.
Definition: SnesCtx.cpp:17

◆ propagation_snes_mat()

static MoFEMErrorCode FractureMechanics::propagation_snes_mat ( SNES  snes,
Vec  x,
Mat  A,
Mat  B,
void *  ctx 
)
static

Definition at line 7180 of file CrackPropagation.cpp.

7181  {
7182  CrackPropagation::ArcLengthSnesCtx *arc_snes_ctx =
7183  static_cast<CrackPropagation::ArcLengthSnesCtx *>(ctx);
7184  DMMGViaApproxOrdersCtx *dm_ctx = arc_snes_ctx->dmCtx;
7185  DMMGViaApproxOrdersCtx *dm_ctx_elastic = arc_snes_ctx->dmCtxElastic;
7187  CHKERR SnesMat(snes, x, A, B, ctx);
7188  CHKERR MatDiagonalScale(B, arc_snes_ctx->diagM, PETSC_NULL);
7189  CHKERR VecPointwiseMult(arc_snes_ctx->arcPtr->F_lambda,
7190  arc_snes_ctx->arcPtr->F_lambda, arc_snes_ctx->diagM);
7191  if (dm_ctx_elastic->coarseningIS.size() > 1) {
7192  boost::shared_ptr<ComposedProblemsData> cmp_data_ptr =
7194  CHKERR MatCreateSubMatrix(B, cmp_data_ptr->rowIs[0], cmp_data_ptr->rowIs[0],
7195  MAT_REUSE_MATRIX,
7196  &(dm_ctx_elastic->kspOperators.back()));
7197  CHKERR MatCreateSubMatrix(dm_ctx_elastic->kspOperators.back(),
7198  dm_ctx_elastic->coarseningIS[0],
7199  dm_ctx_elastic->coarseningIS[0], MAT_REUSE_MATRIX,
7200  &(dm_ctx->kspOperators[0]));
7201  }
7202  // MatView(B,PETSC_VIEWER_DRAW_WORLD);
7203  // std::string wait;
7204  // std::cin >> wait;
7206 };
PetscErrorCode SnesMat(SNES snes, Vec x, Mat A, Mat B, void *ctx)
This is MoFEM implementation for the left hand side (tangent matrix) evaluation in SNES solver.
Definition: SnesCtx.cpp:121
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
const Problem * problemPtr
pinter to problem data structure
Definition: DMMoFEM.hpp:861
Structure for DM for multi-grid via approximation orders.
#define CHKERR
Inline error check.
Definition: definitions.h:601
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412
boost::shared_ptr< ComposedProblemsData > & getComposedProblemsData() const
Het composed problems data structure.
std::vector< Mat > kspOperators
Get KSP operators.
std::vector< IS > coarseningIS
Coarsening IS.

◆ propagation_snes_rhs()

static MoFEMErrorCode FractureMechanics::propagation_snes_rhs ( SNES  snes,
Vec  x,
Vec  f,
void *  ctx 
)
static

Definition at line 7171 of file CrackPropagation.cpp.

7171  {
7172  CrackPropagation::ArcLengthSnesCtx *arc_snes_ctx =
7173  static_cast<CrackPropagation::ArcLengthSnesCtx *>(ctx);
7175  CHKERR SnesRhs(snes, x, f, ctx);
7176  CHKERR VecPointwiseMult(f, f, arc_snes_ctx->diagM);
7178 };
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
#define CHKERR
Inline error check.
Definition: definitions.h:601
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412
PetscErrorCode SnesRhs(SNES snes, Vec x, Vec f, void *ctx)
This is MoFEM implementation for the right hand side (residual vector) evaluation in SNES solver.
Definition: SnesCtx.cpp:17

Variable Documentation

◆ IDD_MOFEMCPMeshCutInterface

const MOFEMuuid FractureMechanics::IDD_MOFEMCPMeshCutInterface
static
Initial value:

ID of CPMeshCut interface

Definition at line 27 of file CPMeshCut.hpp.

◆ IDD_MOFEMCPSolversInterface

const MOFEMuuid FractureMechanics::IDD_MOFEMCPSolversInterface
static
Initial value:
=
std::bitset< BITINTERFACEUID_SIZE > BitIntefaceId
Definition: Types.hpp:56

ID for CPSolvers interface

Definition at line 27 of file CPSolvers.hpp.

◆ IDD_MOFEMCrackPropagationInterface

const MOFEMuuid FractureMechanics::IDD_MOFEMCrackPropagationInterface
static
Initial value:

Unknown interface ID variable shared by all structs and used to register interface for CrackPropagation at CrackPropagation constructor

Definition at line 37 of file CrackPropagation.hpp.

◆ mapRefCoords

std::map<long int, MatrixDouble> FractureMechanics::mapRefCoords
static

Definition at line 53 of file CrackFrontElement.cpp.

◆ materials_list

const char* FractureMechanics::materials_list[]
Initial value:
= {"HOOKE", "KIRCHHOFF", "NEOHOOKEAN",
"BONEHOOKE"}

Definition at line 336 of file CrackPropagation.cpp.