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.
Valgrind was used for profiling but it provided about 4,000,000 problems that is difficult to study. Therefore, the investigation was done as usual by using debugger and placing required prints in specific places. ;)
Two problems are found and fixed.
SetTimeFactors is called in Initialize when file ProjectParameters.json has not been read yet. This also required to fix a number of unit tests.
MatrixType StiffnessMatrix is created but not initialized with zeros.
There are still two problems
the major one causes negative value of detJ
the minor one is a lost of float precision in analytical_solution. An input for the exp function can be a very large negative value. This is only important when the float arithmetic is checked. It can be fixed with the following change
exp_value_in = -1 (2 j - 1) * 2 pi * 2 / 4 T_v
exp_value = 0
if exp_value_in > -600:
exp_value = exp(exp_value_in)
📝 Description
Investigation is done. The test is stable now.
Valgrind was used for profiling but it provided about 4,000,000 problems that is difficult to study. Therefore, the investigation was done as usual by using debugger and placing required prints in specific places. ;)
Two problems are found and fixed.
There are still two problems
the minor one is a lost of float precision in analytical_solution. An input for the exp function can be a very large negative value. This is only important when the float arithmetic is checked. It can be fixed with the following change
exp_value_in = -1 (2 j - 1) * 2 pi * 2 / 4 T_v exp_value = 0 if exp_value_in > -600: exp_value = exp(exp_value_in)