266 {
268
270
271
280
281 auto create_post_step_ksp = [&]() {
283
284 auto set_up = [&]() {
291 GAUSS>::OpBaseTimesVector<1, 3, 3>;
292 auto fe_lhs = boost::make_shared<DomainEle>(ep_ptr->
mField);
293 auto fe_rhs = boost::make_shared<DomainEle>(ep_ptr->
mField);
294
295 fe_lhs->getUserPolynomialBase() = boost::shared_ptr<BaseFunction>(
297 fe_rhs->getUserPolynomialBase() = boost::shared_ptr<BaseFunction>(
300 EshelbianPlasticity::AddHOOps<SPACE_DIM, SPACE_DIM, SPACE_DIM>::add(
304 EshelbianPlasticity::AddHOOps<SPACE_DIM, SPACE_DIM, SPACE_DIM>::add(
307
308 fe_lhs->getOpPtrVector().push_back(
310 auto w_ptr = boost::make_shared<MatrixDouble>();
311 fe_rhs->getOpPtrVector().push_back(
313 fe_rhs->getOpPtrVector().push_back(
315
319 fe_rhs, nullptr, nullptr);
320
321 CHKERR KSPAppendOptionsPrefix(
ksp,
"prjspatial_");
326 };
327
329
331 };
332
333 prjKsp = create_post_step_ksp();
336
338};
ElementsAndOps< SPACE_DIM >::DomainEle DomainEle
FormsIntegrators< DomainEleOp >::Assembly< PETSC >::BiLinearForm< GAUSS >::OpMass< 1, FIELD_DIM > OpDomainMass
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
PetscErrorCode DMMoFEMSetIsPartitioned(DM dm, PetscBool is_partitioned)
PetscErrorCode DMMoFEMCreateSubDM(DM subdm, DM dm, const char problem_name[])
Must be called by user to set Sub DM MoFEM data structures.
PetscErrorCode DMMoFEMAddElement(DM dm, std::string fe_name)
add element to dm
PetscErrorCode DMMoFEMSetSquareProblem(DM dm, PetscBool square_problem)
set squared problem
PetscErrorCode DMMoFEMAddSubFieldRow(DM dm, const char field_name[])
PetscErrorCode DMMoFEMKSPSetComputeRHS(DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
set KSP right hand side evaluation function
auto createDMVector(DM dm, RowColData rc=RowColData::COL)
Get smart vector from DM.
PetscErrorCode DMMoFEMKSPSetComputeOperators(DM dm, const char fe_name[], MoFEM::FEMethod *method, MoFEM::BasicMethod *pre_only, MoFEM::BasicMethod *post_only)
Set KSP operators and push mofem finite element methods.
auto createKSP(MPI_Comm comm)
PetscErrorCode DMMoFEMSetDestroyProblem(DM dm, PetscBool destroy_problem)
SmartPetscObj< Vec > vectorDuplicate(Vec vec)
Create duplicate vector of smart vector.
auto createDM(MPI_Comm comm, const std::string dm_type_name)
Creates smart DM object.
CGG User Polynomial Base.
boost::shared_ptr< Range > frontAdjEdges
const std::string spatialL2Disp
SmartPetscObj< DM > dM
Coupled problem all fields.
const std::string materialH1Positions
const std::string elementVolumeName
const std::string spatialH1Disp
virtual MPI_Comm & get_comm() const =0
Specialization for MatrixDouble vector field values calculation.
Volume finite element base.