KratosMultiphysics / Kratos

Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
https://kratosmultiphysics.github.io/Kratos/
Other
1.02k stars 244 forks source link

The FEAST eigensolver stores the DoF of VELOCITY and ACCELERATION #139

Closed loumalouomega closed 7 years ago

loumalouomega commented 7 years ago

Regarding #138 , I discover that the DoF stored in the EIGENVECTORS_MATRIX are additionally to the DISPLACEMENT the temporal derivatives VELOCITY and ACCELERATION, but like these DoF are not considered in the system K-M w^2=0, which are solved with the time scheme, then they are going to be always zero, so storing them increases the database size for the eigenvectors 3 times.

Additionally this means need to know which is the order for the DoF in the EIGENVECTORS_MATRIX to be able to process this info.

msandre commented 7 years ago

Yes, as observed there is storage overhead with the current implementation. The reason for the current approach is to be general enough to accommodate different types of problems, structural or other.

msandre commented 7 years ago

Note that this is done in the eigensolver_strategy.hpp which should work independent of the application.

msandre commented 7 years ago

@lorenzogracia or @loumalouomega if for the structural mechanics app it makes sense, you can try defining AddDofs() in structural_mechanics_eigensolver.py to only add DISPLACEMENT. This should solve the storage problem while keeping the strategy general.

loumalouomega commented 7 years ago

Maybe the easiest way is, despite is technically a dynamic problem, consider it as a static problem, this way just the DISPLACEMENT DoF will be added.

msandre commented 7 years ago

I think dynamic is more meaningful since it relates to the dynamic problem and there is possibly also static buckling.

loumalouomega commented 7 years ago

Yes, is meaningful, but it is the easiest way to solve that problem, in a real dynamic problem the time derivatives are computed using a time scheme, in this case we just take the stiffness matrix and the mass matrix in order to compute the eigenfrequencies.

msandre commented 7 years ago

It's a minor change so I added the AddDofs() in 8798fd7ddb3d57f72e6a0996bc7f549522c260df .

loumalouomega commented 7 years ago

Thanks @msandre