Skip to content

Add IProductWRTBase operator and standard matrix implementation

João Isler requested to merge feature/IProdWRTBasePhysDerv into master

In this merge request, the IProductWRTBase operator is developed and the standard matrix implementation is also added.

The IProductWRTBase.hpp, IProductWRTBase.cpp, IProductWRTBaseImpl.cpp and IProductWRTBaseStdMat.hpp files were added for this operator. This implementation was based on the BwdTrans operator code. In the IProductWRTBaseStdMat.hpp, note that the jacobian is initialised in the constructor of the OperatorIProductWRTBaseImpl class for deformed and undeformed elements. Also, in the main.cpp file, input and output Field objects are created for the IProdWRTBase, and the code applies the operator for a mesh.

The InitFields class (init_fields.hpp) was generalised to be able to deal with all types of operators and mesh files. Thus, the InitFields class was templated with two parameters. The parameters are FieldStates to create the input and output Field objects for the operators. The mesh name is obtained through a virtual function which returns the chosen mesh name. In addition, a boost test case (test_ipwrtbase.cpp) was added to test the IProductWRTBase operator using the standard matrix implementation for a one-dimensional problem.

Two new meshes were also added to the project. The first one is a one-dimensional mesh which is used for the boost test case. The second is a two-dimensional mesh with deformed elements. This mesh was created to check if the jacobian was correctly implemented.

Edited by João Isler

Merge request reports