Solid engine class#

struct ae_type#
#include <openfdem_sesmic.h>

Public Functions

ae_type() = default#

Public Members

Real time = 0.0#
Real win_time = 0.0#
Real win_kinetic = 0.0#
Real kinetic = 0.0#
Real magnitue = 0.0#
Int coele = -1#
struct any_cohmat_type#

Public Functions

any_cohmat_type() = default#
struct any_conmat_type#

Public Functions

any_conmat_type() = default#
struct any_mat_type#

Public Functions

any_mat_type() = default#
struct Coh_element_structure#

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

std::vector<cohelement_type> cohele#
UInt cohe_num = 0#
UInt broken_num = 0#
UInt damage_num = 0#
std::vector<Real> shear_strength#
std::vector<Vector2> force#
std::vector<Vector2> extrinsic_r#
std::vector<Vector2> dis#
std::vector<Vector2> vel#
std::vector<fracture_type> fracture#
std::vector<damage_type> damage#
std::vector<Real> het_value#
std::vector<cohelement_enum> state#
std::vector<Int> stater#
std::vector<Vector2> DIF[NCZMGAUSS]#
std::vector<Real> damagevalue[NCZMGAUSS]#
std::vector<Real> energy#
std::vector<Real> area#
std::vector<Real> length#
std::vector<Real> field#
std::vector<bool> isCompressiveShear#
struct cohelement_type#

Public Functions

cohelement_type() = default#

Public Members

Vector2 coord#
UInt matid = 0#
UInt n_node = 2#
DFN_enum dfn = DFN_enum::NDFN#
UInt nodes[CZM_NODE_SIZE]#
UInt ele[CZM_ELEMENT_SIZE]#
UInt edge[CZM_EDGE_SIZE]#
UInt faces[CZM_EDGE_SIZE]#
UInt old_map = 0#
bool is_extrinsic = false#
struct damage_type#

Public Functions

damage_type() = default#

Public Members

Real time = 0.0#
Real length = 0.0#
Real type = 0.0#
Int coele = -1#
struct DFN_structure#
#include <openfdem_DFN.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt n_dfn = 0#
std::vector<dfn_type> dfn#
struct dfn_type#
#include <openfdem_DFN.h>

Public Functions

dfn_type() = default#

Public Members

std::string tag#
UInt node_n = EDGE_NODE_SIZE#
Int node[EDGE_NODE_SIZE] = {-1, -1}#
Int quadratic = -1#
DFN_enum type = DFN_enum::DFN_COHESIVE#
Int cohele = -1#
struct Edge_structure#
#include <openfdem_edge.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt nedge = 0#
std::vector<edge_type> edges#
struct edge_type#
#include <openfdem_edge.h>

Public Functions

edge_type() = default#

Public Members

elem_type type = elem_type::LINE2#
Int nnode = EDGE_NODE_SIZE#
Int node[EDGE_NODE_SIZE] = {-1, -1}#
Int element = -1#
Int CZM = -1#
Vector2 coord#
Int pair = -1#
Int DFN = -1#
bool iselement = false#
bool isquadratic = false#
Int quadnode = -1#
struct Element_structure#
#include <openfdem_solid.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt e_num = 0#
UInt e_preremesh = 0#
Real MinMeshsize = 0.0#
Real MeanMeshsize = 0.0#
Real MaxRadius = 0.0#
std::vector<element_type> ele#
std::vector<Vector2> coord#
std::vector<Real> area#
std::vector<Real> energy#
std::vector<Real> field#
struct element_type#
#include <openfdem_solid.h>

Public Functions

element_type() = default#
void clear()#

Public Members

UInt matid = 0#
short dimension = OPENFDEM_DIMENSION#
short n_gauss = 1#
elem_type type = elem_type::TRIANGLE3#
UInt n_edge = 3#
std::vector<UInt> edges#
UInt n_node = 3#
std::vector<UInt> nodes#
UInt n_couple = 3#
std::vector<Int> couple#
std::vector<Int> ecouple#
Real radius = 0.0#
Int entity = -1#
Real minedge = 0.0#
Real maxedge = 0.0#
Real meshquality = 0.0#
bool isInserted = false#
bool excavation = false#
bool uncontacted = false#
bool is_extrinsic = false#
bool isMesh = false#
std::vector<UInt> prenodes#
Int parentele = -1#
std::vector<UInt> gauss#
std::vector<Real> lumpedMassWeight#
Real poissionRatio = 0.0#
struct Entity_structure#
#include <openfdem_entity.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

Int nEntity = 0#
std::vector<entity_type> entities#
struct entity_type#
#include <openfdem_entity.h>

Public Functions

entity_type() = default#
void clear()#

Public Members

bool isdeformable = true#
Int nElement = 0#
Int bouid = -1#
Real mass = 0.0#
Real inertia = 0.0#
std::vector<Int> element#
Int nNode = 0#
std::vector<Int> node#
short dimension = OPENFDEM_DIMENSION#
struct fracture_type#

Public Functions

fracture_type() = default#

Public Members

Real time = 0.0#
Real length = 0.0#
Real energy = 0.0#
Real type = 0.0#
Int coele = -1#
class gaussCount : public OpenFdemAbstract#

Public Functions

inline gaussCount()#
inline ~gaussCount()#

Public Static Functions

static void getCountofGausspoint(UInt &ng_points, elem_type type)#
class gaussDerivs : public OpenFdemAbstract#

Public Functions

inline gaussDerivs()#
inline ~gaussDerivs()#

Public Static Functions

static void getShapefunctionDerivs(Real dNdxi[][2], const elem_type type, const Vector2 &xilocal)#

get the dNdchi in array.

Parameters:
  • dNdxi –

  • type –

  • xilocal –

static void getShapefunctionDerivs(Vector2 dNdxi[], const elem_type type, const Vector2 &xilocal)#

get the dNdchi in Vector.

Parameters:
  • dNdxi –

  • type –

  • xilocal –

class gaussPosition : public OpenFdemAbstract#

Public Functions

inline gaussPosition()#
inline ~gaussPosition()#

Public Static Functions

static void getGaussCoords(Real xi[][2], elem_type type)#

return the quadrature coord in array.

Parameters:
  • xi –

  • type –

static void getGaussCoords(Vector2 xi[], elem_type type)#

return the quadrature coord in vector.

Parameters:
  • xi –

  • type –

class gaussShapeFunction : public OpenFdemAbstract#

Public Functions

inline gaussShapeFunction()#
inline ~gaussShapeFunction()#

Public Static Functions

static void getShapefunctionN(Real *N, elem_type type, const Vector2 &xilocal)#
class gaussWeights : public OpenFdemAbstract#

Public Functions

inline gaussWeights()#
inline ~gaussWeights()#

Public Static Functions

static void getGausspointWeights(Real *weight, elem_type)#
class InterfaceUtils : public OpenFdemAbstract#

Subclassed by ns_solid::SolidMechanicsCohesiveDynamicModule, ns_solid::SolidMechanicsCohesiveEMModule, ns_solid::SolidMechanicsCohesiveInstrinsicModule, ns_solid::SolidMechanicsCohesiveOPModule

Public Functions

inline InterfaceUtils()#
inline ~InterfaceUtils()#

Public Static Functions

static inline Real compute_kinetic_energy(Nodal nodal, UInt nodelist[])#
static inline void getCZMFaceNodes(Cohelement cohelement, const Int cohindices, Int upnodes[], Int downnodes[])#
static inline void getCZMNodeCoord(const Nodal nodal, const Int nodelist[], Vector2 coord[], const Int count)#
static inline void getCZMNodeDeltaVel(const Nodal nodal, const Int nodeuplist[], const Int nodedownlist[], const Int count, Vector2 vel[])#
static inline Real getCZMkineticEnergy(const Nodal nodal, Edge edge, const Int facei, const Int facej)#
static inline void updateCZMnodestate(Nodal nodal, Edge edge, const Int facei, const Int facej)#
static inline void updateCZMnodeConnect(Nodal nodal, Edge edge, const Int facei, const Int facej)#
static inline void pushDamageCZMlist(General general, Cohelement cohelement, Seismic seismic, const Int cohelement_id, const Real area, Nodal nodal, Edge edge, const Int type)#
static inline void pushBrokenCZMlist(General general, Cohelement cohelement, const Int cohelement_id, const Real area, Nodal nodal, Edge edge, const Real type)#
static inline void getCZMthreshold(Vector2 &CZMpeak, Vector2 &CZMresidual, any_cohmat_type *cohmat, const Real CharacteristicLength, const Real shearStrengthonCZM, cohelement_cons cons, Real beta, Real tableValue[])#

get the peak and resiudal values of CZM.

Parameters:
  • CZMpeak –

  • CZMresidual –

  • cohmat –

  • CharacteristicLength –

  • shearStrengthonCZM –

  • cons –

  • beta –

static inline void getCZMDIF(Real o, Real sabs, const Vector2 &vel, any_cohmat_type *cohmat, const Real CharacteristicLength, const Vector2 &peak, Vector2 &cohDIF, Vector2 &DIF)#

compute the dynamic increase factor for dynamic Evans-Marathe model. We are using the unified strain rate law, in which DIF = 1.0 + (strainrate / strainrate.c)^beta

Parameters:
  • o –

  • sabs –

  • vel –

  • cohmat –

  • CharacteristicLength –

  • peak –

  • cohDIF –

  • DIF –

static inline void computeEMCZMdamage(Real dmg, Vector2 &peak, Vector2 &residual, Real &previousdamage, Vector2 &damage, cohelement_cons cons)#
static inline Real getEMCZMsigma(any_cohmat_type *cohmat, const Real o, const Real vo, const Real rou, UInt &nsoft, const Vector2 &CZMpeak, const Vector2 &damage, cohelement_cons cons, Real tableValue[])#
static inline Real getdynamicCZMsigma(any_cohmat_type *cohmat, const Real o, UInt &nsoft, const Vector2 CZMpeak, const Vector2 dynCZMpeak, const Vector2 damage, const Vector2 DIF, Real tableValue[])#
static inline Real getEMCZMshearstrength(any_cohmat_type *cohmat, Real sigma, cohelement_cons cons, Real tableValue[])#
static inline Real getEMCZMtau(any_cohmat_type *cohmat, const Real sigma, const Real shearStrengthonCZM, const Real sabs, const Real vs, const Real rou, const Vector2 &CZMpeak, const Vector2 &damage, cohelement_cons cons, Real tableValue[])#
static inline Real getdynamicEMCZMtau(const Real sigma, const Real shearStrengthonCZM, const Real sabs, const Vector2 &CZMpeak, const Vector2 &dynCZMpeak, const Vector2 &damage, const Vector2 &DIF)#
static void updateCZMforce(Nodal nodal, const Int *upnodes, const Int *downnodes, const Vector2 *force)#
static inline void updateAE(General general, Seismic seismic, Cohelement cohelement, Nodal nodal, Edge edge, const Int cohelement_id)#
struct mat_cohelement_t#
#include <openfdem_mat.h>

cohesive material.

Public Functions

mat_cohelement_t() = default#

Public Members

std::string tag#
cohelement_cons cons = cohelement_cons::COH_EM#
any_cohmat_type mat#
bool hasTableParamter = false#
bool hasfullTable = false#
short table[COHMAT_TABLE_SIZE] = {-1, -1, -1, -1, -1}#
struct mat_contact_t#
#include <openfdem_mat.h>

contact material.

Public Functions

mat_contact_t() = default#

Public Members

Int emat1 = -1#
Int emat2 = -1#
contact_cons cons = contact_cons::CON_FRICTION#
any_conmat_type mat#
Real conductivity = 0.0#
struct mat_element_t#
#include <openfdem_mat.h>

class for matrix material library.

Public Functions

mat_element_t() = default#

Public Members

std::string tag#
element_cons cons = element_cons::ELASTIC#
any_mat_type mat#
Real damp = 0.0#
UInt nstate = 0#
Real cp = 5000.0#
Real cs = 3000.0#
Real parameters[MAT_PARAMETER_SIZE]#
short fieldTable[MAT_FIELD_TABLE_SIZE] = {-1, -1, -1, -1, -1}#
struct mat_fluid_cohesive_t#
#include <openfdem_mat.h>

fluid flowing in fracture .

Public Functions

mat_fluid_cohesive_t() = default#

Public Members

std::string tag#
Real a_0 = 0.0#
Real a_min = 1e-5#
Real a_max = 1e-3#
Real para_exp = 3.0#
Real para_b = 1.0#
struct mat_fluid_element_t#
#include <openfdem_mat.h>

hydro material.

Public Functions

mat_fluid_element_t() = default#

Public Members

std::string tag#
Real permiability = 0.0#
Real Biot_modulus = 0.0#
Real Biot_c = 0.0#
Real prosity = 0.0#
struct mat_fluid_t#
#include <openfdem_mat.h>

water material.

Public Functions

mat_fluid_t() = default#

Public Members

Real den = 1000.0#
Real bulk = 2.1e9#
Real viscosity = 1.0e-3#
Real cohesion = 0.0#
Real conductivity = 0.598#
Real specific_heat = 4.186#
struct mat_gas_t#
#include <openfdem_mat.h>

gas material in hydro module.

Public Functions

mat_gas_t() = default#

Public Members

Real initial_den = 0.0#
Real initial_bulk = 0.0#
Real permiability = 0.0#
Real constant_B = 0.0#
Real alpha = 0.0#
struct mat_mpmfluid_t#
#include <openfdem_mat.h>

material point .

Public Functions

mat_mpmfluid_t() = default#

Public Members

std::string tag#
Real density = 1000.0#
Real kappa = 1.0#
Real gama = 0.0#
Real shear = 0.0#
Real viscosity = 0.0#
struct mat_nonlcoal_element_t#
#include <openfdem_mat.h>

nonlocal material.

Public Functions

mat_nonlcoal_element_t() = default#

Public Members

nonlocal_method method = nonlocal_method::WFT_BELL#
Real cl = 0.0#
struct mat_thermal_element_t#
#include <openfdem_mat.h>

thermal material.

Public Functions

mat_thermal_element_t() = default#

Public Members

std::string tag#
Real conductivity = 0.0#
Real specific_heat = 0.0#
Real expansion = 0.0#
Real heat_exchage = 0.0#
class MaterialUtils : public OpenFdemAbstract#
#include <material_utils.h>

Public Functions

inline MaterialUtils()#
inline ~MaterialUtils()#

Public Static Functions

static inline Real getKfromEv(Real E, Real v)#

compute the bulk modulus.

Parameters:
  • E –

  • v –

Returns:

static inline Real getGfromEv(Real E, Real v)#

compute the shear bulk modulus.

Parameters:
  • E –

  • v –

Returns:

static inline Real getEfromKG(Real K, Real G)#

compute the young’s modulus from K and G.

Parameters:
  • K –

  • G –

Returns:

static inline Real getvfromKG(Real K, Real G)#

compute the Poission’s ratio from K and G.

Parameters:
  • K –

  • G –

Returns:

static inline Real getLamdafromKG(Real K, Real G)#

compute lamda from K and G.

Parameters:
  • K –

  • G –

Returns:

static inline Real getLamdafromEv(Real E, Real v)#

compute the lamda from E and v.

Parameters:
  • E –

  • v –

Returns:

static inline Real getcpfromEv(Real E, Real v, Real rou)#

compute the wave velocity from E and v.

Parameters:
  • E –

  • v –

  • rou –

Returns:

static inline Real getcsfromG(Real G, Real rou)#

compute the wave velocity from G.

Parameters:
  • G –

  • rou –

Returns:

static inline Real gete1(Real K, Real G)#

compute e1.

Parameters:
  • K –

  • G –

Returns:

static inline Real get2g(Real G)#
class ModelAnisotropic : public ns_solid::ModelElastic, public OpenFdemAbstract#

Public Functions

inline ModelAnisotropic()#
inline ~ModelAnisotropic()#
virtual void getBulkParameters()#
virtual void solidModelAnisotropic(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
virtual void computeAnisotropicElasticStress(Nodal nodal, Element element, Intergration intergration)#
void initialize()#
virtual bool xmatinv(Real b[6][6])#
virtual void xmatmul(Real b1[6][6], Real b2[6][6], Real b3[6][6])#
virtual void buildMatrix(const Real &e1, const Real &e2, const Real &e3, const Real &v1, const Real &v2, const Real &v3, const Real &g1, const Real &g2, const Real &g3, const Real &dd, const Real &dip)#

Protected Attributes

Real damp = 0.0#
Real E1_ = 0.0#
Real E3_ = 0.0#
Real Nu12_ = 0.0#
Real Nu13_ = 0.0#
Real G13_ = 0.0#
Real A11_ = 0.0#
Real A12_ = 0.0#
Real A13_ = 0.0#
Real A14_ = 0.0#
Real A15_ = 0.0#
Real A16_ = 0.0#
Real A22_ = 0.0#
Real A23_ = 0.0#
Real A24_ = 0.0#
Real A25_ = 0.0#
Real A26_ = 0.0#
Real A33_ = 0.0#
Real A34_ = 0.0#
Real A35_ = 0.0#
Real A36_ = 0.0#
Real A44_ = 0.0#
Real A45_ = 0.0#
Real A46_ = 0.0#
Real A55_ = 0.0#
Real A56_ = 0.0#
Real A66_ = 0.0#
Real dip_ = 0.0#
Real dd_ = 0.0#
Real angle_ = 0.0#
class ModelBurger : public ns_solid::ModelElastic, public OpenFdemAbstract#

Public Functions

inline ModelBurger()#
inline ~ModelBurger()#
virtual void getBulkParameters()#
virtual void solidModelBurger(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeBurgerStress(General general, Nodal nodal, Element element, Intergration intergration)#

Protected Attributes

Real bulk_ = 0.0#
Real Kshear_ = 0.0#
Real Mshear_ = 0.0#
Real Kviscosity_ = 0.0#
Real Mviscosity_ = 0.0#
class ModelDamageMazars : public ns_solid::ModelElastic, public OpenFdemAbstract#

Public Functions

inline ModelDamageMazars()#
inline ~ModelDamageMazars()#
virtual void getBulkParameters()#
void computePrincipalStress(Tensor &prinS, const Tensor &prinE)#
void computePostivePrincipalStrain(const Tensor &prinS, Tensor &prinE)#
virtual void solidModelDamageMazars(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeDamageMazarsStress(Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint)#

Protected Attributes

Real damp = 0.0#
Real e0 = 0.0#
Real At = 0.0#
Real Ac = 0.0#
Real Bt = 0.0#
Real Bc = 0.0#
Real bulk = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#
Real E = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt idamage_c = 1#
static const UInt idamage_t = 2#
static const UInt ikappa = 3#
class ModelDrucker : public ns_solid::ModelElastic, public OpenFdemAbstract#

Public Functions

inline ModelDrucker()#
inline ~ModelDrucker()#
virtual void getBulkParameters()#
virtual void solidModelDrucker(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeDruckerStress(Nodal nodal, Element element, Intergration intergration)#
void apexCorrection(Intergration intergration, const Int intPoint, UInt *iPlasticity)#
void tensionCorrection(Intergration intergration, const Int intPoint, UInt *iPlasticity, const Real &ft)#
void shearCorrection(Intergration intergration, const Int intPoint, UInt *iPlasticity, const Real &fs, const Tensor &dev)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint)#

Protected Attributes

Real damp = 0.0#
Real qPhi_ = 0.0#
Real kPhi_ = 0.0#
Real qPsi_ = 0.0#
Real tension_ = 0.0#
Real gKQ_ = 0.0#
Real kQ_ = 0.0#
Real rc_ = 0.0#
Real tau_ = 0.0#
Real sig_ = 0.0#
class ModelElastic : public OpenFdemAbstract#

Subclassed by ns_solid::ModelAnisotropic, ns_solid::ModelBurger, ns_solid::ModelDamageMazars, ns_solid::ModelDrucker, ns_solid::ModelExcavation, ns_solid::ModelJH2, ns_solid::ModelJWL, ns_solid::ModelMohr, ns_solid::ModelNeohookean, ns_solid::ModelNonlocalDamageMazars, ns_solid::ModelNonlocalTCK, ns_solid::ModelNonlocalYang, ns_solid::ModelTCK, ns_solid::ModelYang

Public Functions

inline ModelElastic()#
inline ~ModelElastic()#
inline void getBulkParameters(General general, Boudary boudary)#

Get the material parameters from the material library and compute the stiffness damping coefficient.

Parameters:
  • solidmat –

  • matindices –

virtual void computeElasticTrailStress(Element element, Intergration intergration)#

Compute the elastic trial stress by incremental strain. the stress should not include the stiffness damping stress

\begin{aligned} &\Delta \sigma_{11}=\alpha_1 \Delta e_{11}+\alpha_2 \Delta e_{22}\ &\Delta \sigma_{22}=\alpha_2 \Delta e_{11}+\alpha_1 \Delta e_{22}\ &\Delta \sigma_{12}=2 G \Delta e_{12} \quad\left(\Delta \sigma_{21}=\Delta \sigma_{12}\right)\ &\Delta \sigma_{33}=\alpha_2\left(\Delta e_{11}+\Delta e_{22}\right) \end{aligned} where \alpha_1 = K + 4/3 * G and \alpha_2 = K - 2/3 * G

Parameters:
  • nodal –

  • element –

  • elementindices –

virtual void computeInternalForce(General general, Nodal nodal, Element element, Intergration intergration)#
virtual void computeLumpedMass(General general, Element element, Nodal nodal)#
virtual void computeStrainEnergy(General general, Element element, Intergration intergration)#
virtual void solidModelElastic(General general, Element element, Solidmat solidmat, Nodal nodal, Intergration intergration, Boudary boudary)#

Public Members

Real e1_ = 0.0#
Real e2_ = 0.0#
Real g2_ = 0.0#
Real rou = 0.0#
Real damp = 0.0#
UInt elementindices#
element_type *ele#
mat_element_t *elemat#
class ModelExcavation : public ns_solid::ModelElastic#

Public Functions

inline ModelExcavation()#
inline ~ModelExcavation()#
inline virtual void getBulkParameters(General general, Boudary boudary)#
virtual void solidModelExcavation(General general, Element element, Intergration intergration, Solidmat solidmat, Nodal nodal, Boudary boudary)#
virtual void computeExcavationStress(Nodal nodal, Element element, Intergration intergration)#

Protected Attributes

Real mu = 0.0#
Real lamda = 0.0#
Real fact = 1.0#
class ModelJH2 : public ns_solid::ModelElastic#

Public Functions

inline ModelJH2()#
inline ~ModelJH2()#
virtual void getBulkParameters()#
virtual void solidModelBlastJH2(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeJH2Stress(General general, Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint, Real P)#

Protected Attributes

Real damp = 0.0#
Real A = 0.0#
Real B = 0.0#
Real C = 0.0#
Real D1 = 0.0#
Real D2 = 0.0#
Real M = 0.0#
Real N = 0.0#
Real PHEL = 0.0#
Real SHEL = 0.0#
Real K1 = 0.0#
Real K2 = 0.0#
Real K3 = 0.0#
Real TEN = 0.0#
Real shear = 0.0#
Real v = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt iep = 1#
static const UInt iep_rate = 2#
static const UInt is_eq = 3#
static const UInt idP = 4#
static const UInt ief = 5#
class ModelJWL : public ns_solid::ModelElastic#

Public Functions

inline ModelJWL()#
inline ~ModelJWL()#
virtual void getBulkParameters()#
virtual void solidModelBlastJWL(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeJWLStress(General general, Nodal nodal, Element element, Intergration intergration)#
void computeInternalForceonJWL(General general, Nodal nodal, Element element, Intergration intergration)#

Protected Attributes

Real A = 0.0#
Real A2 = 0.0#
Real R1 = 0.0#
Real R2 = 0.0#
Real E0 = 0.0#
Real omega = 0.0#
Vector2 origion#
Real t0 = 0.0#
Real Vt = 0.0#
class ModelMohr : public ns_solid::ModelElastic#

Public Functions

inline ModelMohr()#
inline ~ModelMohr()#
virtual void getBulkParameters()#
virtual void solidModelMohr(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeMohrStress(Nodal nodal, Element element, Intergration intergration)#
void apexCorrection(const Real &fric, Intergration intergration, const Int intPoint, Tensor &prin, UInt *iPlasticity)#
void tensionCorrection(Intergration intergration, const Int elementindices, Tensor &prin, UInt *iPlasticity, const Real &ftz)#
void shearCorrection(Intergration intergration, const Int elementindices, Tensor &prin, UInt *iPlasticity, const Real &fs)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint)#

Protected Attributes

Real damp = 0.0#
Real cohesion_ = 0.0#
Real friction_ = 0.0#
Real dilation_ = 0.0#
Real tension_ = 0.0#
Real nph_ = 0.0#
Real csn_ = 0.0#
Real nps_ = 0.0#
Real rc_ = 0.0#
Real sc1_ = 0.0#
Real sc2_ = 0.0#
Real sc3_ = 0.0#
class ModelNeohookean : public ns_solid::ModelElastic#

Public Functions

inline ModelNeohookean()#
inline ~ModelNeohookean()#
inline virtual void getBulkParameters(General general, Boudary boudary)#
virtual void solidModelNeo(General general, Element element, Intergration intergration, Solidmat solidmat, Nodal nodal, Boudary boudary)#
virtual void computeNeoStress(Nodal nodal, Element element, Intergration intergration)#

Protected Attributes

Real mu = 0.0#
Real lamda = 0.0#
Real fact = 1.0#
class ModelNonlocalDamageMazars : public ns_solid::ModelElastic#

Public Functions

inline ModelNonlocalDamageMazars()#
inline ~ModelNonlocalDamageMazars()#
virtual void getBulkParameters()#
void computePrincipalStress(Tensor &prinS, Tensor prinE)#
void computePostivePrincipalStrain(Tensor prinS, Tensor &prinE)#
virtual void solidModelDamageMazars(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeDamageMazarsStress(Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int ig)#

Protected Attributes

Real damp = 0.0#
Real e0 = 0.0#
Real At = 0.0#
Real Ac = 0.0#
Real Bt = 0.0#
Real Bc = 0.0#
Real bulk = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#
Real E = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt idamage_c = 1#
static const UInt idamage_t = 2#
static const UInt ikappa = 3#
class ModelNonlocalTCK : public ns_solid::ModelElastic#

Public Functions

inline ModelNonlocalTCK()#
inline ~ModelNonlocalTCK()#
virtual void getBulkParameters()#
virtual void solidModelBlastTCK(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeTCKStress(Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint)#

Protected Attributes

Real damp = 0.0#
Real bulk = 0.0#
Real young = 0.0#
Real c_wave = 0.0#
Real KIC = 0.0#
Real m = 0.0#
Real p_k = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#
Real p1 = 0.0#
bool isKUS = false#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt ivol_rate = 1#
static const UInt ifragement = 2#
static const UInt icrack_density = 3#
class ModelNonlocalYang : public ns_solid::ModelElastic#

Public Functions

inline ModelNonlocalYang()#
inline ~ModelNonlocalYang()#
virtual void getBulkParameters()#
virtual void solidModelBlastYang(General general, Element element, Solidmat solidmat, Intergration intergration, Nodal nodal)#
void computeYangStress(General general, Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int intPoint)#

Protected Attributes

Real damp = 0.0#
Real bulk = 0.0#
Real young = 0.0#
Real alpha_ = 0.0#
Real beta_ = 0.0#
Real theta_ = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt ivol_strain = 1#
class ModelTCK : public ns_solid::ModelElastic#

Public Functions

inline ModelTCK()#
inline ~ModelTCK()#
virtual void getBulkParameters()#
virtual void solidModelBlastTCK(General general, Element element, Intergration intergration, Solidmat solidmat, Nodal nodal)#
void computeTCKStress(Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int ig)#

Protected Attributes

Real damp = 0.0#
Real bulk = 0.0#
Real young = 0.0#
Real c_wave = 0.0#
Real KIC = 0.0#
Real m = 0.0#
Real p_k = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#
Real p1 = 0.0#
bool isKUS = false#
Real dt = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt ivol_rate = 1#
static const UInt ifragement = 2#
static const UInt icrack_density = 3#
class ModelYang : public ns_solid::ModelElastic#

Public Functions

inline ModelYang()#
inline ~ModelYang()#
virtual void getBulkParameters()#
virtual void solidModelBlastYang(General general, Element element, Intergration intergration, Solidmat solidmat, Nodal nodal)#
void computeYangStress(General general, Nodal nodal, Element element, Intergration intergration)#
void computeElasticTrailStressatIntergration(Intergration intergration, const Int ig)#

Protected Attributes

Real damp = 0.0#
Real bulk = 0.0#
Real young = 0.0#
Real alpha_ = 0.0#
Real beta_ = 0.0#
Real theta_ = 0.0#
Real den = 0.0#
Real shear = 0.0#
Real v = 0.0#

Protected Static Attributes

static const UInt idamage = 0#
static const UInt ivol_strain = 1#
struct mpm_sand_t#

Public Functions

mpm_sand_t() = default#

Public Members

Real E = 0.0#
Real den = 0.0#
Real v = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
struct mpm_snow_t#

Public Functions

mpm_snow_t() = default#

Public Members

Real E = 0.0#
Real den = 0.0#
Real v = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
Real tc = 0.0#
Real ts = 0.0#
Real ksi = 0.0#
struct Nodal_structure#
#include <openfdem_nodal.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt dimension = OPENFDEM_DIMENSION#
UInt n_num = 0#
UInt n_preremesh = 0#
std::vector<node_type> node#
std::vector<Real> mass#
std::vector<Vector2> coord0#
std::vector<Vector2> coord#
std::vector<Vector2> force#
std::vector<Vector2> cohforce#
std::vector<Vector2> conforce#
std::vector<Vector2> extforce#
std::vector<Vector2> intforce#
std::vector<Vector2> velocity#
std::vector<Vector2> du#
std::vector<Vector2> dis_excavate#
std::vector<Real> phi#
std::vector<Real> nita#
std::vector<Real> driven#
std::vector<Int> net_connect[EDGE_NODE_SIZE]#
Real element_maximuum_unbalance_force = 0.0#
Real cohesive_maximuum_unbalance_force = 0.0#
Real contact_maximuum_unbalance_force = 0.0#
Real max_velocity = 0.0#
Real unbalance_force = 0.0#
struct node_type#
#include <openfdem_nodal.h>

Public Functions

node_type() = default#

Public Members

UInt old_map = 0#
bool is_extrinsic = false#
bool isMesh = false#
bool jacentMesh = false#
bool isRigid = false#
bool isWall = false#
bool isExcavated = false#
class NonlocalSolid : public OpenFdemAbstract, public ElementUtils#

Public Functions

inline NonlocalSolid()#
inline ~NonlocalSolid()#

Public Static Functions

static void getNonlocalWeights(Element element, Intergration intergration, Solidmat solidmat, Nodal nodal)#
static void normalizeNonlocalWeights(Element element, Intergration intergration, Nodal nodal)#
static inline Real getNonlocalValue(Real distance, Real cl, nonlocal_method method, Int &count)#
struct Seismic_structure#
#include <openfdem_sesmic.h>

Public Functions

void resize(Int size, Int initialsize = 0)#
void clear()#

Public Members

short method = 0#
Real window = 0.0#
UInt ae_num = 0#
std::vector<ae_type> ae#
struct solid_burgers_t#

Public Functions

solid_burgers_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real kshear = 0.0#
Real kviscosity = 0.0#
Real mshear = 0.0#
Real mviscosity = 0.0#
struct solid_dfb_t#

Public Functions

solid_dfb_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real k_c = 0.0#
Real m_c = 0.0#
Real k_t = 0.0#
Real m_t = 0.0#
Real KIC = 0.0#
Real sigma_c = 0.0#
Real c_wave = 0.0#
Real nita = 0.0#
Real xita = 0.0#
Real theta_0 = 0.0#
struct solid_DP_t#

Public Functions

solid_DP_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real ten = 0.0#
Real qdil = 0.0#
Real qfric = 0.0#
Real kfric = 0.0#
struct solid_elastic_t#

Public Functions

solid_elastic_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
Real G_c = 0.0#
Real l_c = 0.0#
Real nita = 0.0#
struct solid_excavate_t#

Public Functions

solid_excavate_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
struct solid_JH_2_t#

Public Functions

solid_JH_2_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real A = 0.0#
Real B = 0.0#
Real C = 0.0#
Real M = 0.0#
Real N = 0.0#
Real D1 = 0.0#
Real D2 = 0.0#
Real T = 0.0#
Real HEL = 0.0#
Real PHEL = 0.0#
Real SHEL = 0.0#
Real K1 = 0.0#
Real K2 = 0.0#
Real K3 = 0.0#
struct solid_JWL_t#

Public Functions

solid_JWL_t() = default#

Public Members

Real den = 0.0#
Real detonation = 0.0#
Real E0 = 0.0#
Real A = 0.0#
Real B = 0.0#
Real R1 = 0.0#
Real R2 = 0.0#
Real omega = 0.0#
Real x0 = 0.0#
Real y0 = 0.0#
Real t0 = 0.0#
struct Solid_mat_structure#
#include <openfdem_mat.h>

Public Functions

void resize(std::string type, Int size, Int initialsize = 0)#
void clear()#

Public Members

UInt n_mat = 0#
UInt n_cohmat = 0#
UInt n_conmat = 0#
UInt n_mpmfluid = 0#
UInt n_hydro_mat = 0#
UInt n_hydro_coh = 0#
UInt n_thermal_mat = 0#
Real matrixMaxK = 0#
Real matrixMaxG = 0#
Real contactMaxPn = 0.0#
Real cohesiveMaxPn = 0.0#
Real cohesiveMinTension = Openfdem_max_value#
Real particleMaxPn = 0.0#
Real hydroMaxPerm = 0.0#
Real hydroMaxAperature = 0.0#
Real hydroMaxInitialAperature = 0.0#
Real hydroMaxM = 0.0#
Real thermalMaxCconducticity = 0.0#
Real thermalMinSpecificheat = Openfdem_max_value#
Real contactPnMultiplier = 20.0#
Real contactPsMultiplier = 20.0#
Real cohesivePnMultiplier = 20.0#
Real cohesivePsMultiplier = 20.0#
std::vector<mat_element_t> elemat#
std::vector<mat_cohelement_t> cohelemat#
std::vector<mat_contact_t> conmat#
mat_fluid_t water#
std::vector<mat_mpmfluid_t> mpmfluid#
mat_gas_t gas#
std::vector<mat_fluid_element_t> hydro_ele#
std::vector<mat_fluid_cohesive_t> hydro_coh#
std::vector<mat_thermal_element_t> thermal_ele#
mat_nonlcoal_element_t nonlocal#
short hysteretic_flag = 0#
bool haswater = false#
bool hasgas = false#
struct solid_mazars_t#

Public Functions

solid_mazars_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real e0 = 0.0#
Real At = 0.0#
Real Ac = 0.0#
Real Bt = 0.0#
Real Bc = 0.0#
struct solid_MC_t#

Public Functions

solid_MC_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
Real ten = 0.0#
Real coh = 0.0#
Real fri = 0.0#
Real dil = 0.0#
struct solid_neo_t#

Public Functions

solid_neo_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
struct solid_power_t#

Public Functions

solid_power_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real a1 = 0.0#
Real a2 = 0.0#
Real n1 = 0.0#
Real n2 = 0.0#
Real rs1 = 0.0#
Real rs2 = 0.0#
struct solid_rigid_t#

Public Functions

solid_rigid_t() = default#

Public Members

Real den = 0.0#
struct solid_soften_t#

Public Functions

solid_soften_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real lamda = 0.0#
Real stretch = 0.0#
Real coh = 0.0#
Int damage = 0.0#
struct solid_TCK_t#

Public Functions

solid_TCK_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real m = 0.0#
Real k = 0.0#
Real KIC = 0.0#
Real c_wave = 0.0#
bool KUS = 0.0#
bool plastic = 0.0#
Real qdil = 0.0#
Real qfric = 0.0#
Real kfric = 0.0#
struct solid_transverse_t#

Public Functions

solid_transverse_t() = default#

Public Members

Real E1 = 0.0#
Real E3 = 0.0#
Real den = 0.0#
Real nu12 = 0.0#
Real nu13 = 0.0#
Real G = 0.0#
Real dip = 0.0#
Real dd = 0.0#
struct solid_truss_t#

Public Functions

solid_truss_t() = default#

Public Members

Real E = 0.0#
Real den = 0.0#
Real A = 0.0#
bool cable = 0.0#
struct solid_YANG_t#

Public Functions

solid_YANG_t() = default#

Public Members

Real E = 0.0#
Real v = 0.0#
Real den = 0.0#
Real K = 0.0#
Real G = 0.0#
Real alpha = 0.0#
Real beta = 0.0#
Real theta = 0.0#
bool plastic = 0.0#
Real qdil = 0.0#
Real qfric = 0.0#
Real kfric = 0.0#
struct solidcoh_EM_t#

Public Functions

solidcoh_EM_t() = default#

Public Members

Real pn = 0.0#
Real pt = 0.0#
Real ten = 0.0#
Real coh = 0.0#
Real fri = 0.0#
Real GI = 0.0#
Real GII = 0.0#
Real beta_n = 0.0#
Real beta_t = 0.0#
Real heat_exchage = 0.0#
Real leakoff = 0.0#
struct solidcoh_linear_t#

Public Functions

solidcoh_linear_t() = default#

Public Members

Real pn = 0.0#
Real pt = 0.0#
Real ten = 0.0#
Real coh = 0.0#
Real fri = 0.0#
Real GI = 0.0#
Real GII = 0.0#
Real heat_exchage = 0.0#
Real leakoff = 0.0#
struct solidcoh_OP_t#

Public Functions

solidcoh_OP_t() = default#

Public Members

Real pn = 0.0#
Real pt = 0.0#
Real ten = 0.0#
Real coh = 0.0#
Real delta_n = 0.0#
Real delta_s = 0.0#
Real heat_exchage = 0.0#
Real leakoff = 0.0#
struct solidcohani_EM_t#

Public Functions

solidcohani_EM_t() = default#

Public Members

Real power = 0.0#
Real gamma = 0.0#
Real dip = 0.0#
Real pn = 0.0#
Real pt = 0.0#
Real ten[3] = {0.0, 0, 0}#
Real coh[3] = {0.0, 0, 0}#
Real fri[3] = {0.0, 0, 0}#
Real GI[3] = {0.0, 0, 0}#
Real GII[