4714 {
4716
4717 if (OP::entsPtr) {
4718 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
4720 }
4721
4722#ifndef NDEBUG
4723 if (!brokenBaseSideData) {
4725 }
4726#endif
4727
4728 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
4729 EntityType col_type,
4733
4734 auto check_if_assemble_transpose = [&] {
4735 if (this->sYmm) {
4736 if (OP::rowSide != OP::colSide || OP::rowType != OP::colType)
4737 return true;
4738 else
4739 return false;
4740 } else if (OP::assembleTranspose) {
4741 return true;
4742 }
4743 return false;
4744 };
4745
4746 OP::rowSide = row_side;
4747 OP::rowType = row_type;
4748 OP::colSide = col_side;
4749 OP::colType = col_type;
4750 OP::nbCols = col_data.getIndices().size();
4751 OP::locMat.resize(OP::nbRows, OP::nbCols, false);
4752 OP::locMat.clear();
4753 CHKERR this->iNtegrate(row_data, col_data);
4754 CHKERR this->aSsemble(row_data, col_data, check_if_assemble_transpose());
4756 };
4757
4758 switch (OP::opType) {
4759 case OP::OPSPACE:
4760
4761 for (auto &bd : *brokenBaseSideData) {
4762
4763#ifndef NDEBUG
4764 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
4766 "base functions not set");
4767 }
4768#endif
4769
4770 OP::nbRows = bd.getData().getIndices().size();
4771 if (!OP::nbRows)
4773 OP::nbIntegrationPts = OP::getGaussPts().size2();
4774 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(bd.getData());
4775
4776 if (!OP::nbRows)
4778
4780
4781
4782 bd.getSide(), bd.getSide(),
4783
4784
4785 bd.getType(), bd.getType(),
4786
4787
4788 bd.getData(), bd.getData()
4789
4790 );
4791 }
4792
4793 break;
4794
4795 default:
4797 (std::string("wrong op type ") +
4798 OpBaseDerivativesBase::OpTypeNames[OP::opType])
4799 .c_str());
4800 }
4801
4803}
#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)