261 {
263
267 }
268
269#ifndef NDEBUG
272 }
273#endif
274
275 auto do_work_rhs = [this](int row_side, EntityType row_type,
276 EntitiesFieldData::EntData &row_data, int sense) {
278
282
284
286
289
291
295 };
296
297 auto do_work_lhs = [this](int row_side, int col_side, EntityType row_type,
298 EntityType col_type,
299 EntitiesFieldData::EntData &row_data,
300 EntitiesFieldData::EntData &col_data, int sense) {
302
303 auto check_if_assemble_transpose = [&] {
304 if (this->sYmm) {
306 return true;
307 else
308 return false;
310 return true;
311 }
312 return false;
313 };
314
324 CHKERR this->
aSsemble(row_data, col_data, check_if_assemble_transpose());
326 };
327
328 switch (OP::opType) {
329 case OP::OPROW:
330
336
339
341
342#ifndef NDEBUG
343 if (!bd.getData().getNSharedPtr(bd.getData().getBase())) {
345 "base functions not set");
346 }
347#endif
348
350
351
352 row_side, bd.getSide(),
353
354
355 row_type, bd.getType(),
356
357
358 row_data, bd.getData(),
359
360
361 bd.getSense()
362
363 );
364 }
365
366 break;
367 case OP::OPSPACE:
369 CHKERR do_work_rhs(bd.getSide(), bd.getType(), bd.getData(),
370 bd.getSense());
371 }
372 break;
373 default:
375 (std::string("wrong op type ") +
377 .c_str());
378 }
379
381}
#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