Skip to content

changhicher

ChangHicherAbstractModel

Bases: MixedLoadControl, LoveWeberAveraging, BestFitAveraging, StaticHypothesisLocalization, KinematicHypothesisLocalization

Abstract class for the Chang-Hicher model, define the createContactLaw method and contact property annotation.

The Stress-strain relation of the Chang-Hicher model is given by:

\[ S_{ijkl}=\frac{1}{V}\sum_{c=1}^N\sum_{m=1}^3\sum_{n=1}^3{(K_{jl}^c)^{-1} l_m^c l_n^c A_{mi} A_{nk}} \]

where \(K_{jl}^c\) is the elastic stiffness matrix of the contact law, \(l_i^c\) is the unit vector pointing from the center of the contact area to the contact point, \(A\) is the fabric tensor, and \(V\) is the volume of the representative volume element.

The macro-micro integration algorithm is given by:

Calculated the contact force increment from the stress increment based on the static hypothesis:

\[\mathrm{d}f_i^{(k),c} = \mathrm{d}\sigma_{ij}^{(k)} A_{jk} l_k^c\]

Calculate the contact displacement increment from the contact force increment based on the elastic trial:

\[\mathrm{d}u_j^{(k+1),c} = (K_{ij}^{e,c})^{-1} \mathrm{d}f_i^{(k),c}\]

Update the contact force increment based on the contact law:

\[f_i^{(k+1),c} = f_i^{(k),c} + K_{ij}^{ep,c} \mathrm{d}u_j^{(k+1),c}\]

Update the stress increment based on the Love-Weber formula:

\[\sigma_{ij}^{(k+1)} = \frac{1}{V}\sum_{c=1}^N{f_i^{(k+1),c} l_j^c}\]

Update contact force from the stress increment based on the static hypothesis:

\[f_i^{(k+1),c} = \sigma_{ij}^{(k+1)} A_{jk} l_k^c\]

Calculate the unbalanced force:

\[\mathrm{d}f_i^{unb,c} = f_i^{(k+1),c} - f_i^{(k),c}\]

Set the force increment to the unbalanced force and repeat the steps from the second step until the unbalanced force is small enough.

\[\mathrm{d}f_i^{(k+1),c} = -\mathrm{d}f_i^{unb,c}\]

adaptiveIntegrationSubstepping

adaptiveIntegrationSubstepping(
    dforce: ndarray, ddisp: ndarray, sv0: StateVariable, sv: StateVariable
) -> float

Adaptive substepping for macro-micro integration.

PARAMETER DESCRIPTION
dforce

The force increment.

TYPE: ndarray

ddisp

The displacement increment.

TYPE: ndarray

sv0

The initial state variable.

TYPE: StateVariable

sv

The current state variable.

TYPE: StateVariable

RETURNS DESCRIPTION
float

A ratio to reduce the force/displacement increment.

contactIntegrate

contactIntegrate(
    idx: int,
    dforce: ndarray,
    ddisp: ndarray,
    sv0: StateVariable,
    sv: StateVariable,
)

macroMicroIntegrate

macroMicroIntegrate(
    K: ndarray,
    dsig: ndarray,
    deps: ndarray,
    sv0: StateVariable,
    sv: StateVariable,
) -> None

setup

setup()

stiffness

stiffness(
    sv0: StateVariable,
    sv: StateVariable,
    kn: ndarray = None,
    ks: ndarray = None,
    original: bool = False,
) -> ndarray

ChangHicherCoulombModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the Coulomb contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherElasticModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the elastic contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherExponentialModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the exponential contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherHyperbolicModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the hyperbolic contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherHypoplasticModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the hypoplastic contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherMCCModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the MCC contact law.

contact instance-attribute

contact: MCCContactLaw

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherOriginalSIMSANDModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the original SIMSAND contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherSANISANDModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the SANISAND contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)

ChangHicherSIMSANDModel

Bases: ChangHicherAbstractModel

Chang-Hicher model with the SIMSAND contact law.

contact instance-attribute

createContactLaw

createContactLaw(props: dict[str, float] = None)