Skip to content

changhicher

ChangHicherAbstractModel

Bases: 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}\]

idx instance-attribute

idx: int

Index of the failed contact

contactIntegrate

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

dfdepsp

dfdepsp(sv0: StateVariable, sv: StateVariable) -> ndarray

dfdsig

dfdsig(sv0: StateVariable, sv: StateVariable) -> ndarray

dgdsig

dgdsig(sv0: StateVariable, sv: StateVariable) -> ndarray

maxYieldFunction

maxYieldFunction(sv0: StateVariable, sv: StateVariable)

Determine the maximum yield function value

setup

setup()

stiffness

stiffness(sv0: StateVariable, sv: StateVariable) -> ndarray

stiffness1

stiffness1(
    sv0: StateVariable,
    sv: StateVariable,
    kn: ndarray = None,
    ks: ndarray = None,
    kt: ndarray = None,
) -> ndarray

stress2force

stress2force(idx: int, sv0: StateVariable, sv: StateVariable)

Transformation matrix converting from stress increment to force increment

stressStrainIntegrate

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

stressStrainIntegrate1

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

updateHardeningVariables

updateHardeningVariables(
    ddlambda: float, ddepsp: ndarray, sv0: StateVariable, sv: StateVariable
)

yieldFunction

yieldFunction(sv0: StateVariable, sv: StateVariable) -> float

yieldFunctionCorrection

yieldFunctionCorrection(
    K: ndarray, deps: ndarray, sv0: StateVariable, sv: StateVariable
)

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)

ChangHicherOSIMSANDModel

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)