fedoo.problem.Modal

class Modal(assembly: Assembly, name: str = 'MainProblem')

Compute natural frequencies and mode shapes of a linear model.

The undamped free-vibration problem is

\[\mathbf{K}\boldsymbol{\phi} = \omega^2\mathbf{M}\boldsymbol{\phi}.\]

Modal obtains the stiffness and consistent mass matrices from the supplied assembly. Dirichlet and multi-point constraints are applied to both matrices before the generalized symmetric eigenproblem is solved.

Parameters:
  • assembly (Assembly-like object or str) – Linear mechanical assembly. Its weak forms must provide second-order storage, normally through a material density or set_inertia.

  • name (str, default="MainProblem") – Name of the problem.

Notes

Mode shapes are mass-normalized and stored by row in modes. Frequencies are expressed in cycles per unit of time; angular frequencies are expressed in radians per unit of time.

__init__(assembly: Assembly, name: str = 'MainProblem')

Methods

Modal.add_global_dof(variable_names[, ...])

Add global degrees of freedom to the problem.

Modal.add_output(filename, assembly[, ...])

Register an output for automatic saving managed by solve methods.

Modal.apply_boundary_conditions([t_fact, ...])

Modal.clear_outputs()

Stop automatic output by removing all registered requests.

Modal.get_A()

Modal.get_B()

Modal.get_D()

Modal.get_X()

Modal.get_active()

Return the active Problem.

Modal.get_all()

Return the list of all problems.

Modal.get_disp([name])

Return displacement components of the currently selected mode.

Modal.get_dof_solution([name])

Modal.get_ext_forces([name, include_mpc])

Return the nodal Forces in global coordinates system.

Modal.get_output_scalars()

Return metadata attached to the currently selected output mode.

Modal.get_results(*args, **kargs)

Extract some results from the current problem.

Modal.get_rot([name])

Return rotation components of the currently selected mode.

Modal.init_bc_start_value()

Modal.invalidate_factorization()

Invalidate any cached factorization.

Modal.make_active()

Define the problem instance as the active Problem.

Modal.save_modes([modes, scale, update_weakform])

Save selected modes through outputs registered with add_output.

Modal.save_results([iterOutput])

Write the current state to every registered output.

Modal.set_A(A)

Modal.set_B(B)

Modal.set_D(D)

Modal.set_X(value)

Modal.set_active(name)

Define the active Problem from its name.

Modal.set_dof(name, value)

Set values in the current degree-of-freedom vector.

Modal.set_mode(index[, scale, update_weakform])

Install one mode shape as the current displacement solution.

Modal.set_reuse_factorization([reuse])

Enable or disable factorization reuse for repeated solves.

Modal.set_solver([solver, which, tol, ...])

Configure the symmetric generalized eigensolver.

Modal.solve([n_modes, sigma])

Solve the generalized eigenvalue problem.

Modal.update_boundary_conditions()

Modal.active

Modal.assembly

Mechanical assembly used by the modal problem.

Modal.current_mode

Zero-based index of the mode installed as the current solution.

Modal.global_dof

Modal.mass_assembly

Assembly used to construct the consistent mass matrix.

Modal.mass_matrix

Full unconstrained consistent mass matrix from the last solve.

Modal.n_dof

Modal.n_global_dof

Modal.n_node_dof

Modal.name

Return the name of the Problem.

Modal.results

Modal.solver

Configured eigensolver function, or None in automatic mode.

Modal.space

Return the ModelingSpace associated to the Problem if defined.

Modal.stiffness_matrix

Full unconstrained stiffness matrix from the last solve.

Modal.bc

Boundary conditions defined on the problem.