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) to 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:
stiffness (str, ConstitutiveLaw, WeakForm) –
Defines the internal forces (stiffness). - If str or ConstitutiveLaw: Automatically creates a
fedoo.weakform.StressEquilibriuminstance based on the given constitutive law.If WeakForm: Uses the provided weakform as the stiffness component.
density (float, ndarray, or WeakForm) –
Defines the mass inertia component. - If float or ndarray: Material density at Gauss points for 3D/2D
solid model.
If WeakForm: A custom weakform used for mass assembly.
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 WeakForm instance.
nlgeom (bool or {'UL', 'TL'}, optional) –
Enable geometric nonlinearities:
Trueor'UL': Updated Lagrangian method.'TL': Total Lagrangian method.None: Uses the globalproblem.nlgeomsetting.
space (ModelingSpace, optional) – Modeling space for the weakform. Defaults to the currently active
ModelingSpace.
- Returns:
A weakform containing both stiffness and inertia components configured for Newmark time integration.
- Return type:
ImplicitDynamicSum
Notes
Stability: The method is unconditionally stable if $gamma ge 0.5$ and $beta ge 0.25(gamma + 0.5)^2$.
Numerical Damping: Use $gamma > 0.5$ to introduce algorithmic damping, useful for filtering high-frequency parasitic oscillations.
Physical Damping: To include Rayleigh damping ($mathbf{C} = alpha mathbf{M} + beta mathbf{K}$), modify the rayleigh_damping attribute of the returned object.
wf = fd.weakform.ImplicitDynamic(material, density) wf.rayleigh_damping = [alpha, beta]
- __init__(**kwargs)