v0.14.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase > Struct Template Reference

#include <src/finite_elements/TriLinearFormsIntegrators.hpp>

Inheritance diagram for MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >:
[legend]
Collaboration diagram for MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >:
[legend]

Public Member Functions

 OpConvectiveTermLhsDuImpl (const std::string field_name_row, const std::string field_name_col, boost::shared_ptr< MatrixDouble > y_grad_ptr, ConstantFun alpha_fun=[]() { return 1;})
 

Protected Member Functions

MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
 

Protected Attributes

ConstantFun alphaConstant
 
boost::shared_ptr< MatrixDoubleyGradPtr
 

Detailed Description

template<int FIELD_DIM, int SPACE_DIM, typename OpBase>
struct MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >

Definition at line 64 of file TriLinearFormsIntegrators.hpp.

Constructor & Destructor Documentation

◆ OpConvectiveTermLhsDuImpl()

template<int FIELD_DIM, int SPACE_DIM, typename OpBase >
MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::OpConvectiveTermLhsDuImpl ( const std::string  field_name_row,
const std::string  field_name_col,
boost::shared_ptr< MatrixDouble y_grad_ptr,
ConstantFun  alpha_fun = []() { return 1; } 
)
inline

Definition at line 66 of file TriLinearFormsIntegrators.hpp.

69  { return 1; })
70  : OpBase(field_name_row, field_name_col, OpBase::OPROWCOL),
71  yGradPtr(y_grad_ptr), alphaConstant(alpha_fun) {
72 
73  this->assembleTranspose = false;
74  this->onlyTranspose = false;
75  this->sYmm = false;
76  }

Member Function Documentation

◆ iNtegrate()

template<int FIELD_DIM, int SPACE_DIM, typename OpBase >
MoFEMErrorCode MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::iNtegrate ( EntitiesFieldData::EntData row_data,
EntitiesFieldData::EntData col_data 
)
protected

Definition at line 239 of file TriLinearFormsIntegrators.hpp.

241  {
243 
244  // get element volume
245  const double vol = OpBase::getMeasure();
246  // get integration weights
247  auto t_w = OpBase::getFTensor0IntegrationWeight();
248  // get base function gradient on rows
249  auto t_row_base = row_data.getFTensor0N();
250 
251  auto t_grad_y = getFTensor2FromMat<FIELD_DIM, SPACE_DIM>(*yGradPtr);
254 
255  auto get_t_mat = [&](const int rr) {
256  std::array<double *, FIELD_DIM * SPACE_DIM> ptrs;
257  int s = 0;
258  for (int j = 0; j != FIELD_DIM; ++j)
259  for (auto i = 0; i != SPACE_DIM; ++i, ++s)
260  ptrs[s] = &OpBase::locMat(rr + j, i);
262  SPACE_DIM>(ptrs);
263  };
264 
265  const double alpha_constant = alphaConstant();
266  // loop over integration points
267  for (int gg = 0; gg != OpBase::nbIntegrationPts; gg++) {
268  // take into account Jacobian
269  const double alpha = t_w * vol * alpha_constant;
270 
271  // loop over rows base functions
272  int rr = 0;
273  for (; rr != OpBase::nbRows / FIELD_DIM; rr++) {
274  // get column base functions gradient at gauss point gg
275  auto t_col_base = col_data.getFTensor0N(gg, 0);
276  // get mat
277  auto t_mat = get_t_mat(FIELD_DIM * rr);
278  // loop over columns
279  for (int cc = 0; cc != OpBase::nbCols / SPACE_DIM; cc++) {
280  // calculate element of local matrix
281  t_mat(I, k) += (alpha * t_row_base * t_col_base) * t_grad_y(I, k);
282  ++t_col_base;
283  ++t_mat;
284  }
285  ++t_row_base;
286  }
287  for (; rr < OpBase::nbRowBaseFunctions; ++rr)
288  ++t_row_base;
289 
290  ++t_grad_y;
291  ++t_w; // move to another integration weight
292  }
294 };

Member Data Documentation

◆ alphaConstant

template<int FIELD_DIM, int SPACE_DIM, typename OpBase >
ConstantFun MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::alphaConstant
protected

Definition at line 79 of file TriLinearFormsIntegrators.hpp.

◆ yGradPtr

template<int FIELD_DIM, int SPACE_DIM, typename OpBase >
boost::shared_ptr<MatrixDouble> MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::yGradPtr
protected

Definition at line 80 of file TriLinearFormsIntegrators.hpp.


The documentation for this struct was generated from the following file:
MoFEM::OpBaseImpl::nbIntegrationPts
int nbIntegrationPts
number of integration points
Definition: FormsIntegrators.hpp:238
MoFEM::OpBaseImpl::locMat
MatrixDouble locMat
local entity block matrix
Definition: FormsIntegrators.hpp:249
OpBase
OpBaseImpl< PETSC, EdgeEleOp > OpBase
Definition: radiation.cpp:29
FTensor::Tensor2
Definition: Tensor2_value.hpp:16
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
SPACE_DIM
constexpr int SPACE_DIM
Definition: child_and_parent.cpp:16
MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::alphaConstant
ConstantFun alphaConstant
Definition: TriLinearFormsIntegrators.hpp:79
MoFEM::OpConvectiveTermLhsDuImpl< 1, FIELD_DIM, SPACE_DIM, GAUSS, OpBase >::yGradPtr
boost::shared_ptr< MatrixDouble > yGradPtr
Definition: TriLinearFormsIntegrators.hpp:80
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
FTensor::Index
Definition: Index.hpp:23
MoFEM::OpBaseImpl::nbRowBaseFunctions
int nbRowBaseFunctions
number or row base functions
Definition: FormsIntegrators.hpp:239
MoFEM::OpBaseImpl::nbCols
int nbCols
number if dof on column
Definition: FormsIntegrators.hpp:237
MoFEM::OpBaseImpl::nbRows
int nbRows
number of dofs on rows
Definition: FormsIntegrators.hpp:236
j
FTensor::Index< 'j', 3 > j
Definition: matrix_function.cpp:19
k
FTensor::Index< 'k', 3 > k
Definition: matrix_function.cpp:20
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359