fedoo.weakform.ImplicitDynamic

class ImplicitDynamic(constitutivelaw, density, beta=0.25, gamma=0.5, name='', nlgeom=False, space=None)

Weak formulation for implicit dynamic problems.

Constructs a dynamic weak formulation by combining internal forces (stiffness matrix) with inertia (mass matrix). Time integration is performed using the Newmark-beta scheme.

By default, the Constant Average Acceleration method is used (\(\gamma=0.5, \beta=0.25\)), which is unconditionally stable and energy-preserving.

Parameters:
  • constitutivelaw (str, ConstitutiveLaw, WeakForm) –

    Defines the internal forces (stiffness).

    • If a string or ConstitutiveLaw is given, a fedoo.weakform.StressEquilibrium instance is created.

    • If a WeakForm is given, it is used as the stiffness component.

  • density (float, ndarray, or WeakForm) –

    Defines the mass inertia component.

    • A float or array gives the material density at Gauss points.

    • A WeakForm provides a custom mass formulation.

  • beta (float, default=0.25) – Newmark integration parameter \(\beta\). Controls the acceleration variation over the time step.

  • gamma (float, default=0.5) – Newmark integration parameter \(\gamma\). Controls numerical damping.

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

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

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

Notes

  • The method is unconditionally stable if \(\gamma \ge 0.5\) and \(\beta \ge 0.25(\gamma + 0.5)^2\).

  • Use \(\gamma > 0.5\) to introduce algorithmic damping.

  • Physical Rayleigh damping can be set through rayleigh_damping.

Example

wf = fd.weakform.ImplicitDynamic(material, density)
wf.rayleigh_damping = [alpha, beta]
__init__(constitutivelaw, density, beta=0.25, gamma=0.5, name='', nlgeom=False, space=None)

Methods

ImplicitDynamic.__getitem__(item)

ImplicitDynamic.copy()

ImplicitDynamic.get_all()

Return the list of all weak forms.

ImplicitDynamic.get_dissipation()

Return the optional dissipative provider for a time integrator.

ImplicitDynamic.get_storage()

Return the optional storage weakform for a time integrator.

ImplicitDynamic.get_weak_equation(assembly, pb)

ImplicitDynamic.initialize(assembly, pb)

ImplicitDynamic.iter_leaf()

Iterate over the already flattened list of weakforms.

ImplicitDynamic.reset()

ImplicitDynamic.set_damping([damping])

Mechanical alias for set_dissipation.

ImplicitDynamic.set_dissipation([...])

Attach a dissipative contribution.

ImplicitDynamic.set_inertia(density_or_storage)

Mechanical alias for set_storage.

ImplicitDynamic.set_start(assembly, pb)

ImplicitDynamic.set_storage(storage[, evolution])

Attach a time-storage weakform to this static weakform.

ImplicitDynamic.sum(wf1, wf2)

ImplicitDynamic.to_start(assembly, pb)

ImplicitDynamic.update(assembly, pb)

ImplicitDynamic.update_2(assembly, pb)

ImplicitDynamic.__getitem__(item)

ImplicitDynamic.list_weakform

ImplicitDynamic.name

Return the name of the WeakForm.

ImplicitDynamic.nvar

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

ImplicitDynamic.rayleigh_damping

Coefficients [a, b] for Rayleigh damping.

ImplicitDynamic.space

Return the ModelingSpace associated to the WeakForm if defined.