v0.14.0
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase > Struct Template Reference

#include <src/finite_elements/FormsBrokenSpaceConstraintImpl.hpp>

Inheritance diagram for MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >:
[legend]
Collaboration diagram for MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >:
[legend]

Public Types

using OP = OpBase
 

Public Member Functions

 OpBrokenSpaceConstrainDHybridImpl (const std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData >> broken_side_data_ptr, const double beta)
 

Private Member Functions

MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data)
 

Private Attributes

double scalarBeta
 
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenSideDataPtr
 

Detailed Description

template<int FIELD_DIM, typename OpBase>
struct MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >

Definition at line 484 of file FormsBrokenSpaceConstraintImpl.hpp.

Member Typedef Documentation

◆ OP

template<int FIELD_DIM, typename OpBase >
using MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OP = OpBase

Definition at line 487 of file FormsBrokenSpaceConstraintImpl.hpp.

Constructor & Destructor Documentation

◆ OpBrokenSpaceConstrainDHybridImpl()

template<int FIELD_DIM, typename OpBase >
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::OpBrokenSpaceConstrainDHybridImpl ( const std::string  row_field,
boost::shared_ptr< std::vector< BrokenBaseSideData >>  broken_side_data_ptr,
const double  beta 
)
inline

Definition at line 489 of file FormsBrokenSpaceConstraintImpl.hpp.

493  : OpBase(row_field, row_field, OpBase::OPROW),
494  brokenSideDataPtr(broken_side_data_ptr), scalarBeta(beta) {}

Member Function Documentation

◆ iNtegrate()

template<int FIELD_DIM, typename OpBase >
MoFEMErrorCode MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::iNtegrate ( EntitiesFieldData::EntData row_data)
private

Definition at line 504 of file FormsBrokenSpaceConstraintImpl.hpp.

505  {
507 
509  FTENSOR_INDEX(3, J);
510 
511  OP::locF.resize(row_data.getIndices().size(), false);
512  OP::locF.clear();
513 
514  for (auto &bd : *brokenSideDataPtr) {
515  auto t_w = this->getFTensor0IntegrationWeight();
516  auto t_normal = OpBase::getFTensor1NormalsAtGaussPts();
517  auto t_row_base = row_data.getFTensor0N();
518  auto t_flux = getFTensor2FromMat<FIELD_DIM, 3>(bd.getFlux());
519  auto nb_base_functions = row_data.getN().size2() / 3;
520  auto sense = bd.getSense();
521  for (size_t gg = 0; gg != OpBase::nbIntegrationPts; ++gg) {
522  auto t_vec = getFTensor1FromPtr<FIELD_DIM>(&*OP::locF.data().begin());
523  size_t rr = 0;
524  for (; rr != row_data.getIndices().size() / FIELD_DIM; ++rr) {
525  t_vec(i) += (sense * t_w) * t_row_base * t_normal(J) * t_flux(i, J);
526  ++t_row_base;
527  ++t_vec;
528  }
529  for (; rr < nb_base_functions; ++rr)
530  ++t_row_base;
531  ++t_w;
532  ++t_normal;
533  ++t_flux;
534  }
535  }
536 
537  OP::locF *= scalarBeta;
538 
540 }

Member Data Documentation

◆ brokenSideDataPtr

template<int FIELD_DIM, typename OpBase >
boost::shared_ptr<std::vector<BrokenBaseSideData> > MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::brokenSideDataPtr
private

Definition at line 498 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ scalarBeta

template<int FIELD_DIM, typename OpBase >
double MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::scalarBeta
private

Definition at line 497 of file FormsBrokenSpaceConstraintImpl.hpp.


The documentation for this struct was generated from the following file:
MoFEM::OpBaseImpl::nbIntegrationPts
int nbIntegrationPts
number of integration points
Definition: FormsIntegrators.hpp:238
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
OpBase
OpBaseImpl< PETSC, EdgeEleOp > OpBase
Definition: radiation.cpp:29
FTENSOR_INDEX
#define FTENSOR_INDEX(DIM, I)
Definition: Templates.hpp:2011
FIELD_DIM
constexpr int FIELD_DIM
Definition: child_and_parent.cpp:15
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::brokenSideDataPtr
boost::shared_ptr< std::vector< BrokenBaseSideData > > brokenSideDataPtr
Definition: FormsBrokenSpaceConstraintImpl.hpp:498
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
MoFEM::OpBrokenSpaceConstrainDHybridImpl< FIELD_DIM, GAUSS, OpBase >::scalarBeta
double scalarBeta
Definition: FormsBrokenSpaceConstraintImpl.hpp:497
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359