Operator calculate gap, normal vector and rotation matrix.
More...
#include <users_modules/basic_finite_elements/cohesive_interface/src/CohesiveInterfaceElement.hpp>
Operator calculate gap, normal vector and rotation matrix.
Definition at line 342 of file CohesiveInterfaceElement.hpp.
◆ OpCalculateGapGlobal()
CohesiveElement::CohesiveInterfaceElement::OpCalculateGapGlobal::OpCalculateGapGlobal |
( |
const std::string |
field_name, |
|
|
CommonData & |
common_data |
|
) |
| |
|
inline |
◆ doWork()
MoFEMErrorCode CohesiveElement::CohesiveInterfaceElement::OpCalculateGapGlobal::doWork |
( |
int |
side, |
|
|
EntityType |
type, |
|
|
EntitiesFieldData::EntData & |
data |
|
) |
| |
|
inline |
Definition at line 349 of file CohesiveInterfaceElement.hpp.
353 int nb_dofs = data.getIndices().size();
355 int nb_gauss_pts = data.getN().size1();
356 if(
type == MBVERTEX) {
358 for(
int gg = 0;gg<nb_gauss_pts;gg++) {
360 double nrm2_normal = 0;
361 double nrm2_tangent1 = 0;
362 double nrm2_tangent2 = 0;
363 for(
int dd = 0;
dd<3;
dd++) {
364 nrm2_normal += pow(getNormalsAtGaussPtsF3()(gg,
dd),2);
365 nrm2_tangent1 += pow(getTangent1AtGaussPtF3()(gg,
dd),2);
366 nrm2_tangent2 += pow(getTangent2AtGaussPtF3()(gg,
dd),2);
368 nrm2_normal = sqrt(nrm2_normal);
369 nrm2_tangent1 = sqrt(nrm2_tangent1);
370 nrm2_tangent2 = sqrt(nrm2_tangent2);
371 for(
int dd = 0;
dd<3;
dd++) {
373 commonData.
R[gg](1,
dd) = getTangent1AtGaussPtF3()(gg,
dd)/nrm2_tangent1;
374 commonData.
R[gg](2,
dd) = getTangent2AtGaussPtF3()(gg,
dd)/nrm2_tangent2;
378 if(
type == MBVERTEX) {
382 for(
int gg = 0;gg<nb_gauss_pts;gg++) {
383 for(
int dd = 0;
dd<3;
dd++) {
385 nb_dofs/3,&data.getN(gg)[0],1,&data.getFieldData()[
dd],3);
388 }
catch (
const std::exception& ex) {
389 std::ostringstream ss;
390 ss <<
"throw in method: " << ex.what() << std::endl;
391 SETERRQ(PETSC_COMM_SELF,1,ss.str().c_str());
◆ commonData
CommonData& CohesiveElement::CohesiveInterfaceElement::OpCalculateGapGlobal::commonData |
The documentation for this struct was generated from the following file:
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)