fedoo.weakform.StressEquilibriumRI

class StressEquilibriumRI(constitutivelaw, hourglass_stiffness=0.01, name='', nlgeom=None, nlgeom_hourglass=False, space=None)

Stress-equilibrium weak form with reduced integration.

This weak form combines StressEquilibrium with HourglassStiffness to control the hourglass deformation modes associated with reduced integration.

It should only be used with hex8 or quad4 elements. Unlike the standard StressEquilibrium weak form, it uses one Gauss point by default and adds the hourglass stabilization proposed by Flanagan and Belytschko.

Parameters:
  • constitutivelaw (ConstitutiveLaw or str) – Constitutive law used by the stress-equilibrium term.

  • hourglass_stiffness (float, default=0.01) – Coefficient controlling the hourglass stiffness. It should be large enough to suppress hourglass modes without introducing excessive artificial flexural stiffness.

  • name (str, optional) – Name of the weak form.

  • nlgeom (bool or {'UL', 'TL'}, optional) – Geometric-nonlinearity formulation used by the stress-equilibrium term. True and "UL" select the updated Lagrangian method; "TL" selects the total Lagrangian method.

  • nlgeom_hourglass (bool or {'UL', 'TL'}, default=False) – Geometric-nonlinearity formulation used by the hourglass term. Keeping this false generally gives accurate results, including for finite-strain problems.

  • space (ModelingSpace, optional) – Modeling space. Defaults to the active modeling space.

Example

Define a reduced-integration weak form for a 2D problem:

>>> import fedoo as fd
>>> fd.ModelingSpace("2Dstress")
>>> material = fd.constitutivelaw.ElasticIsotrop(100e3, 0.3)
>>> wf = fd.weakform.StressEquilibriumRI(material)
__init__(constitutivelaw, hourglass_stiffness=0.01, name='', nlgeom=None, nlgeom_hourglass=False, space=None)

Methods

StressEquilibriumRI.__getitem__(item)

StressEquilibriumRI.copy()

StressEquilibriumRI.get_all()

Return the list of all weak forms.

StressEquilibriumRI.get_dissipation()

Return the optional dissipative provider for a time integrator.

StressEquilibriumRI.get_storage()

Return the optional storage weakform for a time integrator.

StressEquilibriumRI.get_weak_equation(...)

StressEquilibriumRI.initialize(assembly, pb)

StressEquilibriumRI.iter_leaf()

Iterate over the already flattened list of weakforms.

StressEquilibriumRI.reset()

StressEquilibriumRI.set_damping([damping])

Mechanical alias for set_dissipation.

StressEquilibriumRI.set_dissipation([...])

Attach a dissipative contribution.

StressEquilibriumRI.set_inertia(...)

Mechanical alias for set_storage.

StressEquilibriumRI.set_start(assembly, pb)

StressEquilibriumRI.set_storage(storage[, ...])

Attach a time-storage weakform to this static weakform.

StressEquilibriumRI.sum(wf1, wf2)

StressEquilibriumRI.to_start(assembly, pb)

StressEquilibriumRI.update(assembly, pb)

StressEquilibriumRI.update_2(assembly, pb)

StressEquilibriumRI.__getitem__(item)

StressEquilibriumRI.corate

StressEquilibriumRI.list_weakform

StressEquilibriumRI.name

Return the name of the WeakForm.

StressEquilibriumRI.nvar

Number of variables in the modeling space associated to the WeakForm.

StressEquilibriumRI.space

Return the ModelingSpace associated to the WeakForm if defined.