Files
2026-05-21 17:03:51 +09:00

32 lines
1.0 KiB
Python

from pathlib import Path
import numpy as np
from femsurrogate.fea.assembly import assemble_global_stiffness, constrained_dofs
from femsurrogate.fea.io import read_beam_example
from femsurrogate.fea.solver import solve_linear_static
ROOT = Path(__file__).resolve().parents[1]
def test_assemble_global_stiffness_for_cantilever_fixture_has_expected_shape():
model = read_beam_example(ROOT / "BeamExamples" / "CantileverBeam.txt")
stiffness = assemble_global_stiffness(model)
assert stiffness.shape == (18, 18)
def test_fixed_node_dofs_are_constrained():
model = read_beam_example(ROOT / "BeamExamples" / "CantileverBeam.txt")
assert constrained_dofs(model) == (0, 1, 2)
def test_solve_linear_static_returns_finite_displacements_for_all_nodes():
model = read_beam_example(ROOT / "BeamExamples" / "CantileverBeam.txt")
displacements = solve_linear_static(model)
assert set(displacements) == set(model.nodes)
values = np.array([[d.ux, d.uy, d.rz] for d in displacements.values()])
assert np.isfinite(values).all()