224 {
226
230 }
231
232#ifndef NDEBUG
235 }
236#endif
237
238 auto do_work_rhs = [this](int row_side, EntityType row_type,
239 EntitiesFieldData::EntData &row_data, int sense) {
241
245
247
249
252
254
258 };
259
260 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
261 EntityType col_type,
262 EntitiesFieldData::EntData &row_data,
263 EntitiesFieldData::EntData &col_data, int sense) {
265
266 auto check_if_assemble_transpose = [&] {
267 if (this->sYmm) {
269 return true;
270 else
271 return false;
273 return true;
274 }
275 return false;
276 };
277
287 CHKERR this->
aSsemble(row_data, col_data, check_if_assemble_transpose());
289 };
290
291 switch (OP::opType) {
292 case OP::OPROW:
293
299
302
304
305#ifndef NDEBUG
306 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
308 "base functions not set");
309 }
310#endif
311
313
314
315 row_side, bd.getSide(),
316
317
318 row_type, bd.getType(),
319
320
321 row_data, bd.getData(),
322
323
324 bd.getSense()
325
326 );
327 }
328
329 break;
330 case OP::OPSPACE:
332 CHKERR do_work_rhs(bd.getSide(), bd.getType(), bd.getData(),
333 bd.getSense());
334 }
335 break;
336 default:
338 (std::string("wrong op type ") +
340 .c_str());
341 }
342
344}
#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 CHK_MOAB_THROW(err, msg)
Check error code of MoAB function and throw MoFEM exception.
@ MOFEM_DATA_INCONSISTENCY
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
static const char *const OpTypeNames[]
VectorDouble locF
local entity vector
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
virtual MoFEMErrorCode aSsemble(EntData &row_data, EntData &col_data, const bool trans)
Assemble local matrix into global matrix.
virtual MoFEMErrorCode iNtegrate(EntData &row_data, EntData &col_data)
Integrate grad-grad operator.
MatrixDouble locMat
local entity block matrix
virtual size_t getNbOfBaseFunctions(EntitiesFieldData::EntData &data)
Get number of base functions.
int nbCols
number if dof on column
int nbRowBaseFunctions
number or row base functions
EntityType rowType
row type