|
| OpMixDivTimesUImpl (const std::string field_name, boost::shared_ptr< VectorDouble > vec, 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<int FIELD_DIM, typename OpBase, CoordinateTypes CoordSys>
struct MoFEM::OpMixDivTimesUImpl< 1, FIELD_DIM, FIELD_DIM, GAUSS, OpBase, CoordSys >
Definition at line 282 of file LinearFormsIntegratorsImpl.hpp.
template<int FIELD_DIM, typename OpBase , CoordinateTypes CoordSys>
div U times vector
\[ \delta u_j = \phi^m\delta\overline{u}^m_j\\ \delta u_{j,i} = \phi^m_{,i}\delta\overline{u}^m_j\\ \textrm{tr}[\delta u_{j,i}] = \delta u_{j,i}\delta_{ji}\\ (\textrm{tr}[\delta u_{j,i}], v) =\\ (\delta u_{j,i} \delta_{ij}, v) =\\ (\delta u_{j,i}, \delta_{ij} v) =\\ (\phi^m_{,i}\delta\overline{u}^m_j, \delta_{ij} v) \\ f_i^m=(\phi^m_{,i}, v) \]
- Template Parameters
-
- Parameters
-
- Returns
- MoFEMErrorCode
Reimplemented from MoFEM::OpBaseImpl< A, EleOp >.
Definition at line 938 of file LinearFormsIntegratorsImpl.hpp.
944 const double vol = OpBase::getMeasure();
946 auto t_w = OpBase::getFTensor0IntegrationWeight();
948 auto t_coords = OpBase::getFTensor1CoordsAtGaussPts();
950 auto t_row_grad = row_data.getFTensor1DiffN<
FIELD_DIM>();
957 t_w * vol *
betaCoeff(t_coords(0), t_coords(1), t_coords(2));
958 auto t_nf = getFTensor1FromArray<FIELD_DIM, FIELD_DIM>(
OpBase::locF);
962 t_nf(
i) += alpha * t_row_grad(
i) * t_vec;