v0.13.0
Public Member Functions | Public Attributes | List of all members
NitscheMethod::OpGetFaceData Struct Reference

Get integration pts data on face. More...

#include <users_modules/homogenisation/src/NitscheMethod.hpp>

Inheritance diagram for NitscheMethod::OpGetFaceData:
[legend]
Collaboration diagram for NitscheMethod::OpGetFaceData:
[legend]

Public Member Functions

 OpGetFaceData (CommonData &common_data)
 
MoFEMErrorCode doWork (int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
 

Public Attributes

CommonDatacommonData
 

Detailed Description

Get integration pts data on face.

Definition at line 153 of file NitscheMethod.hpp.

Constructor & Destructor Documentation

◆ OpGetFaceData()

NitscheMethod::OpGetFaceData::OpGetFaceData ( CommonData common_data)

Definition at line 158 of file NitscheMethod.hpp.

160  "DISPLACEMENT", OPROW),
161  commonData(common_data) {}
ForcesAndSourcesCore::UserDataOperator UserDataOperator

Member Function Documentation

◆ doWork()

MoFEMErrorCode NitscheMethod::OpGetFaceData::doWork ( int  side,
EntityType  type,
DataForcesAndSourcesCore::EntData data 
)

Definition at line 163 of file NitscheMethod.hpp.

164  {
166 
167  int faceInRespectToTet = getFEMethod()->nInTheLoop;
168  int nb_face_gauss_pts = getGaussPts().size2();
169 
170  try {
171  if (type == MBVERTEX) {
172  commonData.faceGaussPts.resize(4);
173  commonData.faceGaussPts[faceInRespectToTet] = getGaussPts();
174  for (int fgg = 0; fgg < nb_face_gauss_pts; fgg++) {
175  int gg = commonData.nbTetGaussPts;
176  commonData.inTetFaceGaussPtsNumber[faceInRespectToTet].push_back(
177  gg);
179  }
180  commonData.faceNormals.resize(4);
181  commonData.faceNormals[faceInRespectToTet] =
182  0.5 * getNormalsAtGaussPtss();
183  commonData.hoCoordsAtGaussPts.resize(4);
184  commonData.hoCoordsAtGaussPts[faceInRespectToTet] =
185  getCoordsAtGaussPts();
186  commonData.cOords.resize(4);
187  commonData.cOords[faceInRespectToTet] = getCoords();
188  commonData.coordsAtGaussPts.resize(4);
189  commonData.coordsAtGaussPts[faceInRespectToTet] =
190  getCoordsAtGaussPts();
191  commonData.rAy.resize(4);
192  commonData.rAy[faceInRespectToTet] = -getNormal();
193  commonData.rAy[faceInRespectToTet] /= norm_2(getNormal());
194  }
195  } catch (const std::exception &ex) {
196  std::ostringstream ss;
197  ss << "throw in method: " << ex.what() << std::endl;
198  SETERRQ(PETSC_COMM_SELF, 1, ss.str().c_str());
199  }
200 
201  try {
202  for (int fgg = 0; fgg < nb_face_gauss_pts; fgg++) {
203  int gg = commonData.inTetFaceGaussPtsNumber[faceInRespectToTet][fgg];
204  // std::cerr << fgg << " " << gg << " " << side << " " << type <<
205  // std::endl;
206  CommonData::MultiIndexData gauss_pt_data(gg, side, type);
207  std::pair<CommonData::Container::iterator, bool> p;
208  p = commonData.facesContainer.insert(gauss_pt_data);
209  if (!p.second) {
210  SETERRQ(PETSC_COMM_SELF, MOFEM_DATA_INCONSISTENCY,
211  "data not inserted");
212  }
213  CommonData::MultiIndexData &p_data =
214  const_cast<CommonData::MultiIndexData &>(*p.first);
215  VectorDouble &shape_fun = p_data.shapeFunctions;
216  int nb_shape_fun = data.getN().size2();
217  shape_fun.resize(nb_shape_fun);
218  // std::cerr << "nb_shape_fun " << nb_shape_fun << std::endl;
219  if (nb_shape_fun) {
220  cblas_dcopy(nb_shape_fun, &data.getN()(fgg, 0), 1, &shape_fun[0],
221  1);
222  }
223  p_data.iNdices = data.getIndices();
224  p_data.dofOrders.resize(data.getFieldDofs().size(), false);
225  for (unsigned int dd = 0; dd < data.getFieldDofs().size(); dd++) {
226  p_data.dofOrders[dd] = data.getFieldDofs()[dd]->getDofOrder();
227  }
228  // std::cerr << shape_fun << std::endl;
229  }
230  } catch (const std::exception &ex) {
231  std::ostringstream ss;
232  ss << "throw in method: " << ex.what() << std::endl;
233  SETERRQ(PETSC_COMM_SELF, 1, ss.str().c_str());
234  }
236  }
static Index< 'p', 3 > p
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:460
@ MOFEM_DATA_INCONSISTENCY
Definition: definitions.h:44
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:453
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
UBlasVector< double > VectorDouble
Definition: Types.hpp:79
std::vector< std::vector< int > > inTetFaceGaussPtsNumber
std::vector< MatrixDouble > faceNormals
std::vector< VectorDouble > rAy
std::vector< MatrixDouble > coordsAtGaussPts
std::vector< VectorDouble > cOords
std::vector< MatrixDouble > hoCoordsAtGaussPts
std::vector< MatrixDouble > faceGaussPts

Member Data Documentation

◆ commonData

CommonData& NitscheMethod::OpGetFaceData::commonData

Definition at line 156 of file NitscheMethod.hpp.


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