#include <src/finite_elements/BiLinearFormsIntegrators.hpp>
|
| OpMassImpl (const std::string row_field_name, const std::string col_field_name, ScalarFun beta=[](double, double, double) constexpr { return 1;}, boost::shared_ptr< Range > ents_ptr=nullptr) |
|
| OpBaseImpl (const std::string row_field_name, const std::string col_field_name, const OpType type, boost::shared_ptr< Range > ents_ptr=nullptr) |
|
MoFEMErrorCode | doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data) |
| Do calculations for the left hand side. More...
|
|
MoFEMErrorCode | doWork (int row_side, EntityType row_type, EntData &row_data) |
| Do calculations for the right hand side. More...
|
|
template<typename OpBase>
struct MoFEM::OpMassImpl< 1, 1, GAUSS, OpBase >
Definition at line 64 of file BiLinearFormsIntegrators.hpp.
◆ OpMassImpl()
template<typename OpBase >
Definition at line 66 of file BiLinearFormsIntegrators.hpp.
69 boost::shared_ptr<Range> ents_ptr =
nullptr)
70 :
OpBase(row_field_name, col_field_name, OpBase::OPROWCOL, ents_ptr),
72 if (row_field_name == col_field_name)
◆ iNtegrate()
template<typename OpBase >
Integrate grad-grad operator.
- Parameters
-
row_data | row data (consist base functions on row entity) |
col_data | column data (consist base functions on column entity) |
- Returns
- error code
Reimplemented from MoFEM::OpBaseImpl< A, EleOp >.
Reimplemented in MoFEM::OpMassImpl< 1, FIELD_DIM, GAUSS, OpBase >.
Definition at line 613 of file BiLinearFormsIntegrators.hpp.
619 auto log_error = [&]() {
629 "Wrong number of base functions on rows %d < %d",
635 "Wrong number of base functions on cols %d < %d",
641 "Wrong number of integration points on rows %d != %d",
647 "Wrong number of integration points on cols %d != %d",
653 const double vol = OpBase::getMeasure();
655 auto t_w = OpBase::getFTensor0IntegrationWeight();
657 auto t_row_base = row_data.getFTensor0N();
659 auto t_coords = OpBase::getFTensor1CoordsAtGaussPts();
662 const double beta = vol *
betaCoeff(t_coords(0), t_coords(1), t_coords(2));
664 const double alpha = t_w * beta;
670 auto t_col_base = col_data.getFTensor0N(gg, 0);
674 *a_mat_ptr += alpha * (t_row_base * t_col_base);
◆ betaCoeff
template<typename OpBase >
The documentation for this struct was generated from the following file: