4771 {
4773
4774 if (OP::entsPtr) {
4775 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
4777 }
4778
4779#ifndef NDEBUG
4780 if (!brokenBaseSideData) {
4782 }
4783#endif
4784
4785 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
4786 EntityType col_type,
4790
4791 auto check_if_assemble_transpose = [&] {
4792 if (this->sYmm) {
4793 if (OP::rowSide != OP::colSide || OP::rowType != OP::colType)
4794 return true;
4795 else
4796 return false;
4797 } else if (OP::assembleTranspose) {
4798 return true;
4799 }
4800 return false;
4801 };
4802
4803 OP::rowSide = row_side;
4804 OP::rowType = row_type;
4805 OP::colSide = col_side;
4806 OP::colType = col_type;
4807 OP::nbCols = col_data.getIndices().size();
4808 OP::locMat.resize(OP::nbRows, OP::nbCols, false);
4809 OP::locMat.clear();
4810 CHKERR this->iNtegrate(row_data, col_data);
4811 CHKERR this->aSsemble(row_data, col_data, check_if_assemble_transpose());
4813 };
4814
4815 switch (OP::opType) {
4816 case OP::OPSPACE:
4817
4818 for (auto &bd : *brokenBaseSideData) {
4819
4820#ifndef NDEBUG
4821 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
4823 "base functions not set");
4824 }
4825#endif
4826
4827 OP::nbRows = bd.getData().getIndices().size();
4828 if (!OP::nbRows)
4830 OP::nbIntegrationPts = OP::getGaussPts().size2();
4831 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(bd.getData());
4832
4833 if (!OP::nbRows)
4835
4837
4838
4839 bd.getSide(), bd.getSide(),
4840
4841
4842 bd.getType(), bd.getType(),
4843
4844
4845 bd.getData(), bd.getData()
4846
4847 );
4848 }
4849
4850 break;
4851
4852 default:
4854 (std::string("wrong op type ") +
4855 OpBaseDerivativesBase::OpTypeNames[OP::opType])
4856 .c_str());
4857 }
4858
4860}
#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)