3907 {
3909
3910 if (OP::entsPtr) {
3911 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
3913 }
3914
3915#ifndef NDEBUG
3916 if (!brokenBaseSideData) {
3918 }
3919#endif
3920
3921 auto do_work_rhs = [this](int row_side, EntityType row_type,
3924
3926 if (!OP::nbRows)
3928
3929 OP::nbIntegrationPts = OP::getGaussPts().size2();
3930
3931 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(row_data);
3932
3933 OP::locF.resize(OP::nbRows, false);
3934 OP::locF.clear();
3935
3936 CHKERR this->iNtegrate(row_data);
3937
3938 CHKERR this->aSsemble(row_data);
3940 };
3941
3942 switch (OP::opType) {
3943 case OP::OPSPACE:
3944 for (auto &bd : *brokenBaseSideData) {
3945 this->sourceVec =
3946 boost::shared_ptr<MatrixDouble>(brokenBaseSideData, &bd.getFlux());
3947 CHKERR do_work_rhs(bd.getSide(), bd.getType(), bd.getData());
3948 this->sourceVec.reset();
3949 }
3950 break;
3951 default:
3953 (std::string("wrong op type ") +
3954 OpBaseDerivativesBase::OpTypeNames[OP::opType])
3955 .c_str());
3956 }
3957
3959}
#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.
#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)
const VectorInt & getIndices() const
Get global indices of degrees of freedom on entity.