4569 {
4571
4572 if (OP::entsPtr) {
4573 if (OP::entsPtr->find(this->getFEEntityHandle()) == OP::entsPtr->end())
4575 }
4576
4577#ifndef NDEBUG
4578 if (!brokenBaseSideData) {
4580 }
4581#endif
4582
4583 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
4584 EntityType col_type,
4588
4589 auto check_if_assemble_transpose = [&] {
4590 if (this->sYmm) {
4591 if (OP::rowSide != OP::colSide || OP::rowType != OP::colType)
4592 return true;
4593 else
4594 return false;
4595 } else if (OP::assembleTranspose) {
4596 return true;
4597 }
4598 return false;
4599 };
4600
4601 OP::rowSide = row_side;
4602 OP::rowType = row_type;
4603 OP::colSide = col_side;
4604 OP::colType = col_type;
4605 OP::nbCols = col_data.getIndices().size();
4606 OP::locMat.resize(OP::nbRows, OP::nbCols, false);
4607 OP::locMat.clear();
4608 CHKERR this->iNtegrate(row_data, col_data);
4609 CHKERR this->aSsemble(row_data, col_data, check_if_assemble_transpose());
4611 };
4612
4613 switch (OP::opType) {
4614 case OP::OPSPACE:
4615
4616 for (auto &bd : *brokenBaseSideData) {
4617
4618#ifndef NDEBUG
4619 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
4621 "base functions not set");
4622 }
4623#endif
4624
4625 OP::nbRows = bd.getData().getIndices().size();
4626 if (!OP::nbRows)
4628 OP::nbIntegrationPts = OP::getGaussPts().size2();
4629 OP::nbRowBaseFunctions = OP::getNbOfBaseFunctions(bd.getData());
4630
4631 if (!OP::nbRows)
4633
4635
4636
4637 bd.getSide(), bd.getSide(),
4638
4639
4640 bd.getType(), bd.getType(),
4641
4642
4643 bd.getData(), bd.getData()
4644
4645 );
4646 }
4647
4648 break;
4649
4650 default:
4652 (std::string("wrong op type ") +
4653 OpBaseDerivativesBase::OpTypeNames[OP::opType])
4654 .c_str());
4655 }
4656
4658}
#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)