4018 {
4020
4021 if (OP::entsPtr) {
4022 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
4024 }
4025
4026#ifndef NDEBUG
4027 if (!brokenBaseSideData) {
4029 }
4030#endif
4031
4032 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
4033 EntityType col_type,
4037
4038 auto check_if_assemble_transpose = [&] {
4039 if (this->sYmm) {
4040 if (OP::rowSide != OP::colSide || OP::rowType != OP::colType)
4041 return true;
4042 else
4043 return false;
4044 } else if (OP::assembleTranspose) {
4045 return true;
4046 }
4047 return false;
4048 };
4049
4050 OP::rowSide = row_side;
4051 OP::rowType = row_type;
4052 OP::colSide = col_side;
4053 OP::colType = col_type;
4054 OP::nbCols = col_data.getIndices().size();
4055 OP::locMat.resize(OP::nbRows, OP::nbCols, false);
4056 OP::locMat.clear();
4057 CHKERR this->iNtegrate(row_data, col_data);
4058 CHKERR this->aSsemble(row_data, col_data, check_if_assemble_transpose());
4060 };
4061
4062 switch (OP::opType) {
4063 case OP::OPSPACE:
4064
4065 for (auto &bd : *brokenBaseSideData) {
4066
4067#ifndef NDEBUG
4068 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
4070 "base functions not set");
4071 }
4072#endif
4073
4074 OP::nbRows = bd.getData().getIndices().size();
4075 if (!OP::nbRows)
4077 OP::nbIntegrationPts = OP::getGaussPts().size2();
4078 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(bd.getData());
4079
4080 if (!OP::nbRows)
4082
4084
4085
4086 bd.getSide(), bd.getSide(),
4087
4088
4089 bd.getType(), bd.getType(),
4090
4091
4092 bd.getData(), bd.getData()
4093
4094 );
4095 }
4096
4097 break;
4098
4099 default:
4101 (std::string("wrong op type ") +
4102 OpBaseDerivativesBase::OpTypeNames[OP::opType])
4103 .c_str());
4104 }
4105
4107}
#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 CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
Data on single entity (This is passed as argument to DataOperator::doWork)