v0.15.0
Loading...
Searching...
No Matches
OpFacesRot Struct Reference
Inheritance diagram for OpFacesRot:
[legend]
Collaboration diagram for OpFacesRot:
[legend]

Public Member Functions

 OpFacesRot (FTensor::Tensor1< double, 3 > &t_curl)
 
MoFEMErrorCode doWork (int side, EntityType type, EntitiesFieldData::EntData &data)
 

Public Attributes

FTensor::Tensor1< double, 3 > & tCurl
 

Detailed Description

Examples
hcurl_curl_operator.cpp.

Definition at line 33 of file hcurl_curl_operator.cpp.

Constructor & Destructor Documentation

◆ OpFacesRot()

OpFacesRot::OpFacesRot ( FTensor::Tensor1< double, 3 > & t_curl)
inline
Examples
hcurl_curl_operator.cpp.

Definition at line 36 of file hcurl_curl_operator.cpp.

37 : FaceElementForcesAndSourcesCore::UserDataOperator(
38 "HCURL", UserDataOperator::OPROW),
39 tCurl(t_curl) {}
FTensor::Tensor1< double, 3 > & tCurl

Member Function Documentation

◆ doWork()

MoFEMErrorCode OpFacesRot::doWork ( int side,
EntityType type,
EntitiesFieldData::EntData & data )
Examples
hcurl_curl_operator.cpp.

Definition at line 220 of file hcurl_curl_operator.cpp.

221 {
223
224 int nb_dofs = data.getFieldData().size();
225 if (nb_dofs == 0)
227 int nb_gauss_pts = data.getN().size1();
228
229 auto t_curl_base = data.getFTensor1N<3>();
230
231 FTensor::Index<'i', 3> i;
232 FTensor::Index<'j', 3> j;
233
234 for (int gg = 0; gg < nb_gauss_pts; gg++) {
235 for (int dd = 0; dd < nb_dofs; dd++) {
236 double w = getGaussPts()(2, gg);
237 const double n0 = getNormalsAtGaussPts(gg)[0];
238 const double n1 = getNormalsAtGaussPts(gg)[1];
239 const double n2 = getNormalsAtGaussPts(gg)[2];
240 if (getFEType() == MBTRI) {
241 w *= 0.5;
242 }
243
244 tCurl(0) += (n1 * t_curl_base(2) - n2 * t_curl_base(1)) * w;
245 tCurl(1) += (n2 * t_curl_base(0) - n0 * t_curl_base(2)) * w;
246 tCurl(2) += (n0 * t_curl_base(1) - n1 * t_curl_base(0)) * w;
247 ++t_curl_base;
248 }
249 }
250
252}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#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
FTensor::Index< 'j', 3 > j
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition ddTensor0.hpp:33
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....
const VectorDouble & getFieldData() const
get dofs values
FTensor::Tensor1< FTensor::PackPtr< double *, Tensor_Dim >, Tensor_Dim > getFTensor1N(FieldApproximationBase base)
Get base functions for Hdiv/Hcurl spaces.

Member Data Documentation

◆ tCurl

FTensor::Tensor1<double, 3>& OpFacesRot::tCurl
Examples
hcurl_curl_operator.cpp.

Definition at line 35 of file hcurl_curl_operator.cpp.


The documentation for this struct was generated from the following file: