927 {
929
933
936 double sum_of_delta = 0;
937 double sum_of_lambda = 0;
938 const auto bit_field_number =
940 switch (snes_ctx) {
941 case CTX_SNESSETFUNCTION: {
943 bit_field_number, dit)) {
944 if (static_cast<int>(dit->get()->getPart()) ==
946 int local_idx = dit->get()->getPetscLocalDofIdx();
947 double lambda = dit->get()->getFieldData();
950 int global_idx = dit->get()->getPetscGlobalDofIdx();
951 CHKERR VecSetValue(snes_f, global_idx, val, ADD_VALUES);
952 }
953 }
954 } break;
955 case CTX_SNESSETJACOBIAN: {
957 bit_field_number, dit)) {
958 if (static_cast<int>(dit->get()->getPart()) ==
960 int local_idx = dit->get()->getPetscLocalDofIdx();
961 double lambda = dit->get()->getFieldData();
963 double diffW = 1;
965 int global_idx = dit->get()->getPetscGlobalDofIdx();
967 "Constrains on node %lu diag = %+3.5e "
968 "delta = %+3.5e lambda = %+3.5e",
969 dit->get()->getEnt(), val,
delta[local_idx],
lambda);
970 CHKERR MatSetValue(snes_B, global_idx, global_idx, val, ADD_VALUES);
971 sum_of_delta +=
delta[local_idx];
973 }
974 }
976 "Sum of delta = %+6.4e Sum of lambda = %+6.4e",
977 sum_of_delta, sum_of_lambda);
978
979 } break;
980 default:
981 break;
982 }
985 }
#define MOFEM_LOG_C(channel, severity, format,...)
#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_TAG(channel, tag)
Tag channel.
#define MOFEM_LOG_CHANNEL(channel)
Set and reset channel.
#define MOFEM_LOG_FUNCTION()
Set scope.
#define _IT_NUMEREDDOF_ROW_BY_BITNUMBER_FOR_LOOP_(PROBLEMPTR, FIELD_BIT_NUMBER, IT)
static double diffCalMax_a(double a, double b, double r)
static double calMax(double a, double b, double r)
static constexpr double delta
double r
regularity parameter
MoFEM::Interface & mField
virtual FieldBitNumber get_field_bit_number(const std::string name) const =0
get field bit number
virtual int get_comm_rank() const =0