-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[IN REVIEW] Add basic functionality for dynamic analysis #339
base: main
Are you sure you want to change the base?
Conversation
…r enhanced eigenvalue computations
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #339 +/- ##
==========================================
+ Coverage 80.86% 81.13% +0.27%
==========================================
Files 68 72 +4
Lines 2299 2465 +166
==========================================
+ Hits 1859 2000 +141
- Misses 440 465 +25
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
… to elementMatrix
a39f9ff
to
d7dc1a2
Compare
work on python WIP on feature/dynamics
a0b738b
to
7093fdc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you Henri for this very nice PR. It adds a lot of functionalities, which even though is used here for modal analysis, can be scaled later for different applications. Please see my comments for the requested changes. I would also propose the following:
- May be for some comments (for example, where we decide to do it in a different PR) can be marked as unresolved such that Alex doesn't repeat the comments
- Change the PR name to "Add a generalized eigen solver and functionalities to perform modal analysis" (or similar), because "dynamic analysis" is a broad terminology
@@ -132,8 +132,8 @@ typename SparseFlatAssembler<B, FEC>::MatrixType& SparseFlatAssembler<B, FEC>::g | |||
|
|||
template <typename B, typename FEC> | |||
typename SparseFlatAssembler<B, FEC>::MatrixType& SparseFlatAssembler<B, FEC>::getMatrixImpl( | |||
const FERequirement& feRequirements, MatrixAffordance affordance) { | |||
if (not sparsePreProcessor_) { | |||
const FERequirement& feRequirements, MatrixAffordance affordance, bool resetOccupationPattern) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I recall our discussion correctly, we said that here instead of the bool
, perhaps we can pass the pruning functor instead of it happening in the lumping function here. Did you face any problems with this? I am not sure but perhaps passing a functor and defaulting it to existing functions can avoid the if constexpr
here? May be the pruning functor can also be something that the user can bind to the assembler and overwrite a default?
@@ -203,7 +203,10 @@ auto scalarAffordance(VectorAffordance affordanceV) { | |||
namespace AffordanceCollections { | |||
inline constexpr AffordanceCollection elastoStatics(ScalarAffordance::mechanicalPotentialEnergy, | |||
VectorAffordance::forces, MatrixAffordance::stiffness); | |||
} | |||
constexpr Ikarus::AffordanceCollection dynamics(Ikarus::ScalarAffordance::noAffordance, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should decide a better name for this affordance I think because it is specific to modal analysis. In theory, for instance dynamics can also include a ScalarAffordance
Ikarus::init(argc, argv); | ||
TestSuite t; | ||
|
||
t.subTest(modalAnalysisTest()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think for modal analysis also there can be a test with some resultcollection
to check specific entries for all/some of the element
I didn't notice that the action |
This will at least partially address #92