Skip to content

Use the shear model's eigenvectors in the multi-channel FDD example - #75

Merged
Ayberkrk merged 1 commit into
mainfrom
fix/fdd-example-mode-shapes
Oct 18, 2026
Merged

Ayberkrk merged 1 commit into
mainfrom
fix/fdd-example-mode-shapes

Conversation

@Ayberkrk

Copy link
Copy Markdown
Owner

The closed-form mode shapes in examples/multichannel_fdd.py used stories + 1 = 4 as the denominator. For a uniform fixed-base shear building the shapes are sin((2k - 1) * pi * j / (2n + 1)), so the second and third shapes had MAC 0.865 and 0.591 against the eigenvectors of the model. The printed MAC 1.000 did not show this because the channels were synthesized from the same shapes.

The example now computes the shapes from the stiffness and mass matrices with numpy.linalg.eigh and scales each to a largest component of +1. identify_fdd runs on the data reloaded from the CSV, so the round trip is part of the check. All three modes are identified with MAC 1.000 against the model shapes.

python -m pytest passes (359 passed, 1 skipped); ruff check, ruff format --check and mypy pass.

The closed-form shapes used stories + 1 as the denominator; for a uniform fixed-base shear building it is stories + 0.5, so the second and third shapes had MAC 0.865 and 0.591 against the model. The example now takes the shapes from the stiffness and mass matrices and runs identify_fdd on the CSV round trip data.
@Ayberkrk
Ayberkrk merged commit 0841769 into main Oct 18, 2026
19 checks passed
@Ayberkrk
Ayberkrk deleted the fix/fdd-example-mode-shapes branch October 18, 2026 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant