v0.15.5
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MoFEM::OpBrokenTopoBase< OpBrokenBase > Struct Template Reference

#include "src/finite_elements/FormsBrokenSpaceConstraintImpl.hpp"

Inheritance diagram for MoFEM::OpBrokenTopoBase< OpBrokenBase >:
[legend]
Collaboration diagram for MoFEM::OpBrokenTopoBase< OpBrokenBase >:
[legend]

Public Types

using OP = OpBrokenBase
 

Public Member Functions

 OpBrokenTopoBase (boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_base_side_data, boost::shared_ptr< MatrixDouble > adjoint_lambda_ptr, boost::shared_ptr< MatrixDouble > tangent1_diff_ptr, boost::shared_ptr< MatrixDouble > tangent2_diff_ptr, boost::shared_ptr< double > beta_ptr, SmartPetscObj< Vec > assemble_vec, Tag th, boost::shared_ptr< Range > ents_ptr=nullptr)
 
 OpBrokenTopoBase (const std::string row_field, boost::shared_ptr< std::vector< BrokenBaseSideData > > broken_side_data_ptr, boost::shared_ptr< MatrixDouble > adjoint_lambda_ptr, boost::shared_ptr< MatrixDouble > tangent1_ptr, boost::shared_ptr< MatrixDouble > tangent2_ptr, SmartPetscObj< Vec > assemble_vec, Tag th, boost::shared_ptr< Range > ents_ptr=nullptr)
 

Protected Member Functions

MoFEMErrorCode aSsemble (EntitiesFieldData::EntData &row_data)
 

Protected Attributes

boost::shared_ptr< MatrixDoubleadjointLambdaPtr
 
boost::shared_ptr< MatrixDoubletangent1DiffPtr
 
boost::shared_ptr< MatrixDoubletangent2DiffPtr
 
SmartPetscObj< Vec > assembleVec
 
Tag thGradTag
 

Detailed Description

template<typename OpBrokenBase>
struct MoFEM::OpBrokenTopoBase< OpBrokenBase >

Definition at line 593 of file FormsBrokenSpaceConstraintImpl.hpp.

Member Typedef Documentation

◆ OP

Definition at line 594 of file FormsBrokenSpaceConstraintImpl.hpp.

Constructor & Destructor Documentation

◆ OpBrokenTopoBase() [1/2]

template<typename OpBrokenBase >
MoFEM::OpBrokenTopoBase< OpBrokenBase >::OpBrokenTopoBase ( boost::shared_ptr< std::vector< BrokenBaseSideData > >  broken_base_side_data,
boost::shared_ptr< MatrixDouble adjoint_lambda_ptr,
boost::shared_ptr< MatrixDouble tangent1_diff_ptr,
boost::shared_ptr< MatrixDouble tangent2_diff_ptr,
boost::shared_ptr< double beta_ptr,
SmartPetscObj< Vec >  assemble_vec,
Tag  th,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Definition at line 596 of file FormsBrokenSpaceConstraintImpl.hpp.

603 : OP(broken_base_side_data, ents_ptr),
604 adjointLambdaPtr(adjoint_lambda_ptr),
605 tangent1DiffPtr(tangent1_diff_ptr), tangent2DiffPtr(tangent2_diff_ptr),
606 assembleVec(assemble_vec), thGradTag(th) {}
boost::shared_ptr< MatrixDouble > adjointLambdaPtr
boost::shared_ptr< MatrixDouble > tangent2DiffPtr
boost::shared_ptr< MatrixDouble > tangent1DiffPtr

◆ OpBrokenTopoBase() [2/2]

template<typename OpBrokenBase >
MoFEM::OpBrokenTopoBase< OpBrokenBase >::OpBrokenTopoBase ( const std::string  row_field,
boost::shared_ptr< std::vector< BrokenBaseSideData > >  broken_side_data_ptr,
boost::shared_ptr< MatrixDouble adjoint_lambda_ptr,
boost::shared_ptr< MatrixDouble tangent1_ptr,
boost::shared_ptr< MatrixDouble tangent2_ptr,
SmartPetscObj< Vec >  assemble_vec,
Tag  th,
boost::shared_ptr< Range ents_ptr = nullptr 
)
inline

Definition at line 608 of file FormsBrokenSpaceConstraintImpl.hpp.

616 : OpBase(row_field, row_field, OpBase::OPROW, ents_ptr),
617 brokenSideDataPtr(broken_side_data_ptr),
618 adjointLambdaPtr(adjoint_lambda_ptr), tangent1Ptr(tangent1_ptr),
619 tangent2Ptr(tangent2_ptr), assembleVec(assemble_vec), thGradTag(th) {}
OpBaseImpl< PETSC, EdgeEleOp > OpBase
Definition radiation.cpp:29

Member Function Documentation

◆ aSsemble()

template<typename OpBrokenBase >
MoFEMErrorCode MoFEM::OpBrokenTopoBase< OpBrokenBase >::aSsemble ( EntitiesFieldData::EntData row_data)
inlineprotected

Definition at line 622 of file FormsBrokenSpaceConstraintImpl.hpp.

622 {
623 if (!this->timeScalingFun.empty())
624 this->locF *= this->timeScalingFun(this->getFEMethod()->ts_t);
625 if (!this->feScalingFun.empty())
626 this->locF *= this->feScalingFun(this->getFEMethod());
627 if (assembleVec) {
628 auto *vec_ptr = this->locF.data().data();
629 const auto nb_dofs = row_data.getIndices().size();
630 auto *ind_ptr = row_data.getIndices().data().data();
631 return VecSetValues(assembleVec, nb_dofs, ind_ptr, vec_ptr, ADD_VALUES);
632 }
633 if (thGradTag) {
634 const auto field_ents = data.getFieldEntities();
635 std::vector<EntityHandle> ents(field_ents.size());
636 std::transform(field_ents.begin(), field_ents.end(), ents.begin(),
637 [](const auto *fe) { return fe->getEnt(); });
638 if (field_ents.empty())
640 if (type_from_handle(ents[0]) != MBVERTEX)
642 auto &moab = getMoab();
643 VectorDouble topo_values(this->locF.size());
644 CHKERR moab.tag_set_data(thGradTag, ents.data(), ents.size(),
645 topo_values.data().data());
646 topo_values += this->locF;
647 CHKERR moab.tag_set_data(thGradTag, ents.data(), ents.size(),
648 this->locF.data().data());
649 }
650 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
UBlasVector< double > VectorDouble
Definition Types.hpp:68
auto type_from_handle(const EntityHandle h)
get type from entity handle
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.

Member Data Documentation

◆ adjointLambdaPtr

template<typename OpBrokenBase >
boost::shared_ptr<MatrixDouble> MoFEM::OpBrokenTopoBase< OpBrokenBase >::adjointLambdaPtr
protected

Definition at line 652 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ assembleVec

template<typename OpBrokenBase >
SmartPetscObj<Vec> MoFEM::OpBrokenTopoBase< OpBrokenBase >::assembleVec
protected

Definition at line 655 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ tangent1DiffPtr

template<typename OpBrokenBase >
boost::shared_ptr<MatrixDouble> MoFEM::OpBrokenTopoBase< OpBrokenBase >::tangent1DiffPtr
protected

Definition at line 653 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ tangent2DiffPtr

template<typename OpBrokenBase >
boost::shared_ptr<MatrixDouble> MoFEM::OpBrokenTopoBase< OpBrokenBase >::tangent2DiffPtr
protected

Definition at line 654 of file FormsBrokenSpaceConstraintImpl.hpp.

◆ thGradTag

template<typename OpBrokenBase >
Tag MoFEM::OpBrokenTopoBase< OpBrokenBase >::thGradTag
protected

Definition at line 656 of file FormsBrokenSpaceConstraintImpl.hpp.


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