fedoo.weakform.HourglassStiffness

class HourglassStiffness(stiffness_coef=0.01, name='', nlgeom=False, space=None)

Hourglass stiffness weak formulation for reduced integration elements.

This WeakForm should be added to a StressEquilibrium WeakForm to control the hourglass deformation modes associated to reduced integration. In most cases, the use of StressEquilibriumRI() that combines both HourglassStiffness and StressEquilibrium is prefered.

This weakform should be used only for ‘hex8’ or ‘quad4’ elements with one integration point (n_elm_gp = 1 in the assembly). It is based on the classical method proposed by Flanagan and Belytschko in 1981. In this method, the hourglass stiffness is normalized using the material tangent properties. The material properties are automatically extracted. If no StressEquilibrium object is found (including material properties), this will produce an error.

Parameters:
  • stiffness_coef (float, default: 0.01) – Coefficient to control the hourglass stiffness. This coefficient is a compromise between a sufficient stiffness to suppress hourglass modes and a not too high stiffness to avoid additionnal flexural stiffness.

  • name (str) – name of the WeakForm

  • nlgeom (bool, 'UL' or 'TL', optional) – If nlgeom is False, the stiffness is considered as linear based on the initial configuration. If not, the geometry and material properties are udpated at each iteration. The use of nlgeom = False, generally produces accurate results, even for finite strain problems.

  • space (ModelingSpace) – Modeling space associated to the weakform. If None is specified, the active ModelingSpace is considered.

Example

Define a reduced integration weakform with default values for a 2D problem.

>>> import fedoo as fd
>>> fd.ModelingSpace("2Dstress")
>>> material = fd.constitutivelaw.ElasticIsotrop(100e3, 0.3)
>>> wf = fd.StressEquilibrium(material)
>>> # force the use of reduced integration
>>> wf.assembly_options["n_elm_gp"] = 1
>>> wf = wf + fd.HourglassStiffness()
__init__(stiffness_coef=0.01, name='', nlgeom=False, space=None)

Methods

HourglassStiffness.get_all()

Return the list of all weak forms.

HourglassStiffness.get_p_wave_modulus(assembly)

HourglassStiffness.get_weak_equation(...)

Get the weak equation related to the current problem state.

HourglassStiffness.initialize(assembly, pb)

Initialize the weakform at the begining of a problem.

HourglassStiffness.nvar(self)

Return the number of variables used in the modeling space associated to the WeakForm.

HourglassStiffness.reset()

HourglassStiffness.set_start(assembly, pb)

HourglassStiffness.sum(wf1, wf2)

HourglassStiffness.to_start(assembly, pb)

HourglassStiffness.update(assembly, pb)

Update the weakform to the current state.

HourglassStiffness.update_2(assembly, pb)

HourglassStiffness.name

Return the name of the WeakForm.

HourglassStiffness.space

Return the ModelingSpace associated to the WeakForm if defined.

HourglassStiffness.nlgeom

Method used to treat the geometric non linearities. * Set to False if geometric non linarities are ignored. * Set to True or 'UL' to use the updated lagrangian method (update the mesh) * Set to 'TL' to use the total lagrangian method (base on the initial mesh with initial displacement effet).