Integrate grad-grad operator.
667 {
669
670#ifndef NDEBUG
671 auto log_error = [&]() {
676 };
677
679 log_error();
681 "Wrong number of base functions on rows %d < %d",
683 }
685 log_error();
687 "Wrong number of base functions on cols %d < %d",
689 }
691 log_error();
693 "Wrong number of integration points on rows %d != %d",
695 }
697 log_error();
699 "Wrong number of integration points on cols %d != %d",
701 }
702#endif
703
704
705 const double vol = OpBase::getMeasure();
706
707 auto t_w = OpBase::getFTensor0IntegrationWeight();
708
709 auto t_row_base = row_data.getFTensor0N();
710
711 auto t_coords = OpBase::getFTensor1CoordsAtGaussPts();
712
714 const double beta = vol *
betaCoeff(t_coords(0), t_coords(1), t_coords(2));
715
716 const double alpha = t_w * beta;
717
719 int rr = 0;
721
722 auto t_col_base = col_data.getFTensor0N(gg, 0);
723
725
726 *a_mat_ptr +=
alpha * (t_row_base * t_col_base);
727 ++t_col_base;
728 ++a_mat_ptr;
729 }
730 ++t_row_base;
731 }
733 ++t_row_base;
734 ++t_coords;
735 ++t_w;
736 }
738};
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MOFEM_LOG(channel, severity)
Log.
int rowSide
row side number
int colSide
column side number
int nbRows
number of dofs on rows
EntityType colType
column type
int nbIntegrationPts
number of integration points
MatrixDouble locMat
local entity block matrix
int nbCols
number if dof on column
int nbRowBaseFunctions
number or row base functions
EntityType rowType
row type