648 {
650 if (!this->timeScalingFun.empty())
651 this->locF *= this->timeScalingFun(this->getFEMethod()->ts_t);
652 if (!this->feScalingFun.empty())
653 this->locF *= this->feScalingFun(this->getFEMethod());
655 auto *vec_ptr = this->locF.data().data();
656 const auto nb_dofs = row_data.getIndices().size();
657 auto *ind_ptr = row_data.getIndices().data().data();
659 }
661 const auto field_ents = row_data.getFieldEntities();
662 std::vector<EntityHandle> ents(field_ents.size());
663 std::transform(field_ents.begin(), field_ents.end(), ents.begin(),
664 [](const auto *fe) { return fe->getEnt(); });
665 if (field_ents.empty())
669 auto &moab = this->getMoab();
672 topo_values.data().data());
673 topo_values += this->locF;
675 topo_values.data().data());
676 }
678 }
#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 MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
UBlasVector< double > VectorDouble
auto type_from_handle(const EntityHandle h)
get type from entity handle
MoFEMErrorCode VecSetValues(Vec V, const EntitiesFieldData::EntData &data, const double *ptr, InsertMode iora)
Assemble PETSc vector.