![]() |
PeriDEM 0.3.0
PeriDEM -- Peridynamics-based high-fidelity model for granular media
|
A class providing methods to compute energy density and force of peridynamic material. More...
#include <material.h>
Public Member Functions | |
| RnpMaterial (inp::MaterialDeck &deck, const size_t &dim, const double &horizon) | |
| Constructor. | |
| bool | isStateActive () const override |
| Returns true if state-based potential is active. | |
| std::pair< double, double > | getBondEF (const double &r, const double &s, bool &fs, const bool &break_bonds) const override |
| Returns energy and force between bond due to pairwise interaction. | |
| std::pair< double, double > | getBondEF (const double &r, const double &s, bool &fs, const double &mx, const double &thetax) const override |
| Returns energy and force between bond due to state-based model. | |
| util::Point | getBondForceDirection (const util::Point &dx, const util::Point &du) const override |
| Returns the unit vector along which bond-force acts. | |
| double | getS (const util::Point &dx, const util::Point &du) const override |
| Returns the bond strain. | |
| double | getSc (const double &r) const override |
| Returns critical bond strain. | |
| double | getBreakSc (const double &r) const override |
| Returns bond strain beyond which the bond is marked broken. | |
| double | getDensity () const override |
| Returns the density of the material. | |
| double | getInfFn (const double &r) const override |
| Returns the value of influence function. | |
| double | getMoment (const size_t &i) const override |
| Returns the moment of influence function. | |
| double | getHorizon () const override |
| Returns horizon. | |
| inp::MatData | computeMaterialProperties (const size_t &dim) const override |
| Computes elastic and fracture material properties and returns the data. | |
| std::string | printStr (int nt, int lvl) const override |
| Returns the string containing printable information about the object. | |
| void | print (int nt, int lvl) const override |
| Prints the information about the object. | |
| void | print () const override |
| Prints the information about the object. | |
Public Member Functions inherited from material::Material | |
| Material (std::string name="") | |
| Constructor. | |
| virtual | ~Material () |
| Destructor. | |
| std::string | name () |
| Returns name of the material. | |
| size_t | getDimension () const |
| Returns dimension of the problem. | |
| bool | isPlaneStrain () const |
| Returns plane-strain condition. | |
| virtual double | getDilatationEnergyDensity (const double &thetax) const |
| Returns the dilatational part of the strain energy density. | |
Private Member Functions | |
| void | computeParameters (inp::MaterialDeck &deck, const size_t &dim) |
| Compute material model parameters. | |
Private Attributes | |
| double | d_horizon |
| Horizon. | |
| double | d_density |
| Density. | |
| double | d_rbar |
| Inflection point of nonlinear function = \( 1/\sqrt{2\beta}\). | |
| double | d_invFactor |
| Inverse of factor = \( \epsilon |B_\epsilon(0)|\). | |
| double | d_factorSc |
| Factor to multiply to critical strain to check if bond is fractured. | |
| bool | d_irrevBondBreak |
| Flag which indicates if the breaking of bond is irreversible. | |
Material parameters | |
| double | d_C |
| Parameter C. | |
| double | d_beta |
| Parameter \( \beta \). | |
A class providing methods to compute energy density and force of peridynamic material.
Definition at line 293 of file material.h.
|
inline |
Constructor.
| deck | Input deck which contains user-specified information |
| dim | Dimension |
| horizon | Horizon |
Definition at line 302 of file material.h.
References computeParameters(), d_beta, inp::MaterialDeck::d_bondPotentialParams, d_C, inp::MaterialDeck::d_computeParamsFromElastic, inp::MaterialDeck::d_influenceFnParams, inp::MaterialDeck::d_influenceFnType, d_invFactor, inp::MaterialDeck::d_isPlaneStrain, and d_rbar.
|
inlineoverridevirtual |
Computes elastic and fracture material properties and returns the data.
| dim | Dimension of the problem |
Implements material::Material.
Definition at line 512 of file material.h.
References d_beta, d_C, and getMoment().
|
inlineprivate |
Compute material model parameters.
| deck | MaterialDeck |
| dim | Dimension of the domain |
Definition at line 592 of file material.h.
References d_beta, d_C, inp::MatData::d_E, inp::MatData::d_G, inp::MatData::d_Gc, inp::MatData::d_K, inp::MatData::d_KIc, inp::MatData::d_lambda, inp::MaterialDeck::d_matData, inp::MatData::d_mu, inp::MatData::d_nu, d_rbar, getMoment(), util::isGreater(), util::isLess(), inp::MatData::toE(), inp::MatData::toGc(), inp::MatData::toGE(), inp::MatData::toK(), inp::MatData::toKIc(), and inp::MatData::toLambdaE().
Referenced by RnpMaterial().
|
inlineoverridevirtual |
Returns energy and force between bond due to pairwise interaction.
Peridynamic energy at point \( x \) is
\[ e(x) = \frac{1}{|B_\epsilon(0)|} \int_{B_\epsilon(x)} \frac{J^\epsilon(|y-x|)}{\epsilon} \psi(|y-x|S^2) dy \]
and force at point x is
\[ f(x) = \frac{4}{|B_\epsilon(0)|} \int_{B_\epsilon(x)} \frac{J^\epsilon(|y-x|)}{\epsilon} \psi'(|y-x|S^2) S \frac{y-x}{|y-x|} dy, \]
where \( \psi(r) = C(1-\exp(-\beta r))\) (Lipton 2016; Jha 2025, eqs. 8-9). The total energy is \( \int e(x) dx \), so the pair force is twice the derivative of the bond energy.
For given initial bond length \( r \) and bond strain \( s\), this function returns pair of
\[ \hat{e} = \frac{J^\epsilon(r)}{\epsilon |B_\epsilon(0)|} \psi(r s^2) \]
and
\[ \hat{f} = \frac{4 J^\epsilon(r) s}{\epsilon |B_\epsilon(0)|} \psi'(r s^2). \]
| r | Reference (initial) bond length |
| s | Bond strain |
| fs | Bond fracture state |
| break_bonds | If true, also update the fracture state of the bond |
Implements material::Material.
Definition at line 387 of file material.h.
References d_beta, d_C, d_invFactor, getBreakSc(), getInfFn(), and util::isGreater().
Referenced by getBondEF().
|
inlineoverridevirtual |
Returns energy and force between bond due to state-based model.
| r | Reference (initial) bond length |
| s | Bond strain |
| fs | Bond fracture state |
| mx | Weighted volume at node |
| thetax | Dilation |
Implements material::Material.
Definition at line 417 of file material.h.
References getBondEF().
|
inlineoverridevirtual |
Returns the unit vector along which bond-force acts.
| dx | Reference bond vector |
| du | Difference of displacement |
Implements material::Material.
Definition at line 430 of file material.h.
References util::Point::length().
|
inlineoverridevirtual |
Returns bond strain beyond which the bond is marked broken.
The force softens past the critical strain; the bond is marked broken only past factor_Sc times it, and never if breaking is reversible.
| r | Reference length of bond |
Reimplemented from material::Material.
Definition at line 464 of file material.h.
References d_factorSc, d_irrevBondBreak, and getSc().
Referenced by getBondEF().
|
inlineoverridevirtual |
Returns the density of the material.
Implements material::Material.
Definition at line 474 of file material.h.
References d_density.
|
inlineoverridevirtual |
Returns horizon.
Implements material::Material.
Definition at line 503 of file material.h.
References d_horizon.
|
inlineoverridevirtual |
Returns the value of influence function.
| r | Reference (initial) bond length |
Implements material::Material.
Definition at line 482 of file material.h.
References d_horizon.
Referenced by getBondEF().
|
inlineoverridevirtual |
Returns the moment of influence function.
If \( J(r) \) is the influence function for \( r\in [0,1)\) then \( i^{th}\) moment is given by
\[ M_i = \int_0^1 J(r) r^i dr. \]
| i | ith moment |
Implements material::Material.
Definition at line 495 of file material.h.
Referenced by computeMaterialProperties(), and computeParameters().
|
inlineoverridevirtual |
Returns the bond strain.
| dx | Reference bond vector |
| du | Difference of displacement |
Implements material::Material.
Definition at line 441 of file material.h.
References util::Point::dot().
|
inlineoverridevirtual |
Returns critical bond strain.
| r | Reference length of bond |
Implements material::Material.
Definition at line 451 of file material.h.
References d_rbar.
Referenced by getBreakSc().
|
inlineoverridevirtual |
Returns true if state-based potential is active.
Implements material::Material.
Definition at line 357 of file material.h.
|
inlineoverridevirtual |
Prints the information about the object.
Reimplemented from material::Material.
Definition at line 583 of file material.h.
References print().
Referenced by print().
|
inlineoverridevirtual |
Prints the information about the object.
| nt | Number of tabs to append before printing |
| lvl | Information level (higher means more information) |
Reimplemented from material::Material.
Definition at line 578 of file material.h.
References printStr().
|
inlineoverridevirtual |
Returns the string containing printable information about the object.
| nt | Number of tabs to append before printing |
| lvl | Information level (higher means more information) |
Reimplemented from material::Material.
Definition at line 549 of file material.h.
References d_beta, d_C, d_factorSc, d_horizon, d_invFactor, d_irrevBondBreak, d_rbar, and util::io::getTabS().
Referenced by print().
|
private |
Parameter \( \beta \).
Definition at line 705 of file material.h.
Referenced by computeMaterialProperties(), computeParameters(), getBondEF(), printStr(), and RnpMaterial().
|
private |
Parameter C.
Definition at line 702 of file material.h.
Referenced by computeMaterialProperties(), computeParameters(), getBondEF(), printStr(), and RnpMaterial().
|
private |
|
private |
Factor to multiply to critical strain to check if bond is fractured.
For nonlinear model, we consider bond is broken when it exceeds 10 times of critical strain. Typical value of factor is 10.
Definition at line 721 of file material.h.
Referenced by getBreakSc(), and printStr().
|
private |
Horizon.
Definition at line 691 of file material.h.
Referenced by getHorizon(), getInfFn(), and printStr().
|
private |
Inverse of factor = \( \epsilon |B_\epsilon(0)|\).
Definition at line 713 of file material.h.
Referenced by getBondEF(), printStr(), and RnpMaterial().
|
private |
Flag which indicates if the breaking of bond is irreversible.
Definition at line 724 of file material.h.
Referenced by getBreakSc(), and printStr().
|
private |
Inflection point of nonlinear function = \( 1/\sqrt{2\beta}\).
Definition at line 710 of file material.h.
Referenced by computeParameters(), getSc(), printStr(), and RnpMaterial().