|
| | 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) |
| | Constructor for base operator implementation.
|
| |
| 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.
|
| |
| MoFEMErrorCode | doWork (int row_side, EntityType row_type, EntData &row_data) |
| | Do calculations for the right hand side.
|
| |
template<int FIELD_DIM, typename
OpBase,
CoordinateTypes CoordSys>
struct MoFEM::OpMixDivTimesUImpl< 1, FIELD_DIM, FIELD_DIM, GAUSS, OpBase, CoordSys >
Definition at line 289 of file LinearFormsIntegratorsImpl.hpp.
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
-
| FIELD_DIM | |
| SPACE_DIM | |
| OpBase | |
- Parameters
-
- Returns
- MoFEMErrorCode
Reimplemented from MoFEM::OpBaseImpl< A, EleOp >.
Definition at line 975 of file LinearFormsIntegratorsImpl.hpp.
976 {
979
980
981 const double vol = OpBase::getMeasure();
982
983 auto t_w = OpBase::getFTensor0IntegrationWeight();
984
985 auto t_coords = OpBase::getFTensor1CoordsAtGaussPts();
986
987 auto t_row_grad = row_data.getFTensor1DiffN<
FIELD_DIM>();
988
990
992
993 const double alpha =
994 t_w * vol *
betaCoeff(t_coords(0), t_coords(1), t_coords(2));
995 auto t_nf = getFTensor1FromArray<FIELD_DIM, FIELD_DIM>(
OpBase::locF);
996
997 int rr = 0;
999 t_nf(
i) += alpha * t_row_grad(
i) * t_vec;
1000 ++t_row_grad;
1001 ++t_nf;
1002 }
1004 ++t_row_grad;
1005 ++t_w;
1006 ++t_vec;
1007 ++t_coords;
1008 }
1010}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FTensor::Index< 'i', SPACE_DIM > i
static auto getFTensor0FromVec(V &data)
Get tensor rank 0 (scalar) form data vector.
VectorDouble locF
local entity vector
int nbRows
number of dofs on rows
int nbIntegrationPts
number of integration points
int nbRowBaseFunctions
number or row base functions