13 #ifndef KRATOS_LEVELSET_CONSISTENT_NODAL_GRADIENT_H
14 #define KRATOS_LEVELSET_CONSISTENT_NODAL_GRADIENT_H
56 typedef std::tuple<BoundedMatrix<double,3,2>,
array_1d<double,3>,
array_1d<double,3>,
array_1d<double,3>,
array_1d<double,3>,
array_1d<double,3>>
TLSContainerType2D;
57 typedef std::tuple<BoundedMatrix<double,4,3>,
array_1d<double,4>,
array_1d<double,4>,
array_1d<double,4>,
array_1d<double,3>,
array_1d<double,4>>
TLSContainerType3D;
99 void Execute()
override;
104 const Parameters GetDefaultParameters()
const override;
115 std::string
Info()
const override
117 std::stringstream buffer;
118 buffer <<
"CalulateLevelsetConsistentNodalGradientProcess";
123 void PrintInfo(std::ostream& rOStream)
const override {rOStream <<
"CalulateLevelsetConsistentNodalGradientProcess";}
126 void PrintData(std::ostream& rOStream)
const override {}
155 bool IsSplit(
const Vector& rDistances);
157 TLSContainerType2D SetTLSContainer2D();
159 TLSContainerType3D SetTLSContainer3D();
161 std::function<void(
Element& rElement, TLSContainerType2D& rTLSContainer)> GetScalarNodalGradientElementFunction2D();
163 std::function<void(
Element& rElement, TLSContainerType3D& rTLSContainer)> GetScalarNodalGradientElementFunction3D();
165 template<
class TTLSContainer>
166 void CalculateScalarNodalGradientElementContribution(
168 TTLSContainer& rTLSContainer);
Utility to calculate the nodal gradient separately for the positive and negative sides of the zero le...
Definition: calulate_levelset_consistent_nodal_gradient_process.h:47
std::tuple< BoundedMatrix< double, 3, 2 >, array_1d< double, 3 >, array_1d< double, 3 >, array_1d< double, 3 >, array_1d< double, 3 >, array_1d< double, 3 > > TLSContainerType2D
Auxiliary container to be used as TLS.
Definition: calulate_levelset_consistent_nodal_gradient_process.h:56
std::string Info() const override
Turn back information as a string.
Definition: calulate_levelset_consistent_nodal_gradient_process.h:115
std::tuple< BoundedMatrix< double, 4, 3 >, array_1d< double, 4 >, array_1d< double, 4 >, array_1d< double, 4 >, array_1d< double, 3 >, array_1d< double, 4 > > TLSContainerType3D
Definition: calulate_levelset_consistent_nodal_gradient_process.h:57
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: calulate_levelset_consistent_nodal_gradient_process.h:123
~CalulateLevelsetConsistentNodalGradientProcess() override
Destructor.
Definition: calulate_levelset_consistent_nodal_gradient_process.h:82
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: calulate_levelset_consistent_nodal_gradient_process.h:126
KRATOS_CLASS_POINTER_DEFINITION(CalulateLevelsetConsistentNodalGradientProcess)
Pointer definition of LumpedInterfacePositiveNegativePressureGradient.
Base class for all Elements.
Definition: element.h:60
This class aims to manage different model parts across multi-physics simulations.
Definition: model.h:60
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
The base class for all processes in Kratos.
Definition: process.h:49
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21