147 {
150 if (
entsPtr->find(AssemblyBoundaryEleOp::getFEEntityHandle()) ==
153 }
154 const double area = getMeasure();
155 auto t_w = getFTensor0IntegrationWeight();
156 auto t_row_base = row_data.getFTensor0N();
157 auto t_grad_h = getFTensor1FromMat<SPACE_DIM>(*
gradHPtr);
158 auto t_coords = getFTensor1CoordsAtGaussPts();
159
161
162 for (int gg = 0; gg != nbIntegrationPts; gg++) {
163
164 const double r = t_coords(0);
166 const double h_grad_norm = sqrt(t_grad_h(
i) * t_grad_h(
i) +
eps);
167 const double cos_angle = std::cos(M_PI *
wettingAngle / 180);
168 const double rhs_wetting = s *
eta2 * h_grad_norm * cos_angle;
169
170
171
172 int bb = 0;
173 for (; bb != nbRows; ++bb) {
174 locF[bb] += alpha * t_row_base * rhs_wetting;
175 ++t_row_base;
176 }
177
178 for (; bb < nbRowBaseFunctions; ++bb)
179 ++t_row_base;
180
181 ++t_w;
182 ++t_grad_h;
183 ++t_coords;
184 }
185
187 }
#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()
auto wetting_angle_sub_stepping
FTensor::Index< 'i', SPACE_DIM > i