1330 {
1331
1334 auto &ep = *(cohesive_ctx->ep_ptr);
1335
1336#ifndef NDEBUG
1337 CHKERR VecView(delta_kappa, PETSC_VIEWER_STDOUT_WORLD);
1338#endif
1339
1340 CHKERR VecCopy(delta_kappa, cohesive_ctx->kappaVec.second);
1341 CHKERR VecGhostUpdateBegin(cohesive_ctx->kappaVec.second, INSERT_VALUES,
1342 SCATTER_FORWARD);
1343 CHKERR VecGhostUpdateEnd(cohesive_ctx->kappaVec.second, INSERT_VALUES,
1344 SCATTER_FORWARD);
1345 CHKERR CommInterface::setTagFromVector(
1346 ep.mField.get_moab(), cohesive_ctx->kappaVec,
1348
1349
1351 cohesive_ctx->kspSolVec);
1352
1353 auto ksp = snesGetKSP(tsGetSNES(cohesive_ctx->timeSolver));
1355 ksp, cohesive_ctx->lambdaVec);
1356
1358 ep, cohesive_ctx->setIntegrationAtFrontFace, cohesive_ctx->lambdaVec,
1359 cohesive_ctx->dissipationVec, cohesive_ctx->gradDissipationVec);
1360
1361 CHKERR VecSum(cohesive_ctx->dissipationVec.second, f);
1362 CHKERR VecCopy(cohesive_ctx->gradDissipationVec.second,
g);
1363
1365 <<
"Cohesive objective function (negative total dissipation): " << *
f;
1366
1368}
#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.
#define MOFEM_LOG(channel, severity)
Log.
Tag get_delta_kappa_tag(moab::Interface &moab)
static MoFEMErrorCode evaluateDissipationAndGradImpl(EshelbianCore &ep, ForcesAndSourcesCore::GaussHookFun set_integration_at_front_face, SmartPetscObj< Vec > lambda_vec, CommInterface::EntitiesPetscVector &dissipation_vec, CommInterface::EntitiesPetscVector &grad_dissipation_vec)
static MoFEMErrorCode evaluatePrimalProblemCohesiveImpl(EshelbianCore &ep, SmartPetscObj< TS > ts, SmartPetscObj< Vec > x)
static MoFEMErrorCode evaluateCohesiveLambdaImpl(EshelbianCore &ep, ForcesAndSourcesCore::GaussHookFun set_integration_at_front_face, SmartPetscObj< KSP > ksp, SmartPetscObj< Vec > lambda_vec)
CohesiveTAOCtxImpl(EshelbianCore *ep, ForcesAndSourcesCore::GaussHookFun set_integration_at_front_face, SmartPetscObj< TS > time_solver)