Add IProductWRTBase operator and standard matrix implementation
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.