You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR adds a new direct harmonic analysis strategy to the StructuralMechanicsApplication, together with the required infrastructure to prescribe imaginary harmonic loads and a dedicated test.
Main changes
Added a new DirectHarmonicAnalysisStrategy
Added a new direct harmonic analysis test
Added an ImaginaryPointLoadCondition to prescribe imaginary load contributions separately
Introduced the use of two different load SubModelParts:
one for the real harmonic loads
one for the imaginary harmonic loads
Mathematical meaning of the direct harmonic strategy
The direct harmonic strategy solves the structural response directly in the frequency domain by assuming a harmonic ansatz for the unknown displacement field:
the problem is transformed into the complex algebraic system
$\left( \mathbf{K} - \omega^2 \mathbf{M} + i \omega \mathbf{C} \right)\hat{\mathbf{u}} = f_{r} + i f_i$
This is what is referred to here as the direct harmonic strategy:
instead of projecting the response onto a modal basis, the full frequency-domain system is assembled and solved directly for the complex displacement vector $\hat{\mathbf{u}}$.
Details
Direct harmonic strategy
A new DirectHarmonicAnalysisStrategy was implemented to solve the harmonic response directly in the frequency domain, without relying on modal superposition.
The strategy:
assembles the mass and stiffness operators
optionally assembles the damping operator
builds the complex dynamic matrix
solves the complex-valued linear system with a complex linear solver
stores the real and imaginary parts of the displacement separately
Real and imaginary loads
In the direct harmonic formulation, the excitation vector is complex:
$f = f_{r} + i f_i$
To assemble this consistently, the implementation uses two different load SubModelParts:
a real load submodelpart, containing the conditions that contribute to $f_{r}$
an imaginary load submodelpart, containing the conditions that contribute to $f_{i}$
This separation is needed because the direct harmonic strategy assembles the real and imaginary RHS contributions independently and then combines them into the final complex right-hand side.
Imaginary point load condition
A new ImaginaryPointLoadCondition was introduced to assemble imaginary load contributions independently from the real ones.
This makes it possible to define:
real harmonic loads through the standard point load condition
imaginary harmonic loads through a dedicated condition
Tests
A new test was added for the direct harmonic analysis strategy.
Included in this PR
DirectHarmonicAnalysisStrategy
ImaginaryPointLoadCondition
support for separate real and imaginary load submodelparts
Quirin was also working on this I think, he was struggling with complex dofs, see #6238
I am curious as to how you solved this, will take a look in the next days (dont wait for me if urgent)
Basically, the builder and solver is providing $M$, $K$ and $C$ to the strategy, and the assembly of the complex RHS is done inside the DirectHarmonicAnalysisStrategy through 2 different SubModelParts, one for the real component of the load and the other for the complex component. Then, we build the assemble the complex LHS/RHS and use a ComplexSolver.
It´s quite straightforward!
juancamarotti
changed the title
[StructuralMechanics] Add direct harmonic strategy
[StructuralMechanics] Add direct harmonic strategy (with imaginary DOFs)
Apr 2, 2026
juancamarotti
changed the title
[StructuralMechanics] Add direct harmonic strategy (with imaginary DOFs)
[StructuralMechanics] Add direct harmonic strategy (with imaginary displacements)
Apr 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds a new direct harmonic analysis strategy to the
StructuralMechanicsApplication, together with the required infrastructure to prescribe imaginary harmonic loads and a dedicated test.Main changes
DirectHarmonicAnalysisStrategyImaginaryPointLoadConditionto prescribe imaginary load contributions separatelySubModelParts:Mathematical meaning of the direct harmonic strategy
The direct harmonic strategy solves the structural response directly in the frequency domain by assuming a harmonic ansatz for the unknown displacement field:
where:
Starting from the dynamic equilibrium equation
and assuming a harmonic load
the problem is transformed into the complex algebraic system
This is what is referred to here as the direct harmonic strategy:$\hat{\mathbf{u}}$ .
instead of projecting the response onto a modal basis, the full frequency-domain system is assembled and solved directly for the complex displacement vector
Details
Direct harmonic strategy
A new
DirectHarmonicAnalysisStrategywas implemented to solve the harmonic response directly in the frequency domain, without relying on modal superposition.The strategy:
Real and imaginary loads
In the direct harmonic formulation, the excitation vector is complex:
To assemble this consistently, the implementation uses two different load
SubModelParts:This separation is needed because the direct harmonic strategy assembles the real and imaginary RHS contributions independently and then combines them into the final complex right-hand side.
Imaginary point load condition
A new
ImaginaryPointLoadConditionwas introduced to assemble imaginary load contributions independently from the real ones.This makes it possible to define:
Tests
A new test was added for the direct harmonic analysis strategy.
Included in this PR
DirectHarmonicAnalysisStrategyImaginaryPointLoadCondition