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.
Cleaned up the strategies that are offered by the GeoMechanicsApplication.
🆕 Changelog
Changes include:
Removed unused function parameters (all related to linear solvers) from the constructors of the strategies. The base class of all our strategies (GeoMechanicsNewtonRaphsonStrategy) used to receive a pointer to a linear solver, but that parameter was never used. Consequently, there is no point in supplying one. In fact, requesting one but not using it is very confusing. The constructors of the derived classes simply forwarded the linear solver pointers to the base class constructor. Also there, the corresponding parameters have been removed from the constructors.
Moved a few member functions and data members that were defined in class GeoMechanicsNewtonRaphsonStrategy to one of the derived classes (GeoMechanicsRammArcLengthStrategy), since only there they were actually being used. As a result, the moved members could be made private rather than protected.
Replaced a local implementation of the L2 norm calculation by calling Boost's norm_2 function. There is one thing we need to keep in mind here: the local implementation used to be done in parallel (although it was using deprecated functionality to achieve that). In other words, there might be a performance impact here. The changes made will probably also fix three code smells found by SonarQube.
📝 Description
Cleaned up the strategies that are offered by the GeoMechanicsApplication.
🆕 Changelog
Changes include:
GeoMechanicsNewtonRaphsonStrategy
) used to receive a pointer to a linear solver, but that parameter was never used. Consequently, there is no point in supplying one. In fact, requesting one but not using it is very confusing. The constructors of the derived classes simply forwarded the linear solver pointers to the base class constructor. Also there, the corresponding parameters have been removed from the constructors.GeoMechanicsNewtonRaphsonStrategy
to one of the derived classes (GeoMechanicsRammArcLengthStrategy
), since only there they were actually being used. As a result, the moved members could be madeprivate
rather thanprotected
.norm_2
function. There is one thing we need to keep in mind here: the local implementation used to be done in parallel (although it was using deprecated functionality to achieve that). In other words, there might be a performance impact here. The changes made will probably also fix three code smells found by SonarQube.