v0.15.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
OpFaceMaterialForce Struct Reference

#include "users_modules/eshelbian_plasticity/src/EshelbianOperators.hpp"

Inheritance diagram for OpFaceMaterialForce:
[legend]
Collaboration diagram for OpFaceMaterialForce:
[legend]

Public Types

using OP = FaceElementForcesAndSourcesCore::UserDataOperator
 

Public Member Functions

 OpFaceMaterialForce (boost::shared_ptr< DataAtIntegrationPts > data_ptr)
 
MoFEMErrorCode doWork (int side, EntityType type, EntData &data)
 

Private Attributes

boost::shared_ptr< DataAtIntegrationPtsdataAtPts
 data at integration pts
 

Detailed Description

Examples
mofem/users_modules/eshelbian_plasticity/src/impl/EshelbianPlasticity.cpp.

Definition at line 938 of file EshelbianOperators.hpp.

Member Typedef Documentation

◆ OP

using OpFaceMaterialForce::OP = FaceElementForcesAndSourcesCore::UserDataOperator

Definition at line 942 of file EshelbianOperators.hpp.

Constructor & Destructor Documentation

◆ OpFaceMaterialForce()

OpFaceMaterialForce::OpFaceMaterialForce ( boost::shared_ptr< DataAtIntegrationPts data_ptr)
inline

Definition at line 944 of file EshelbianOperators.hpp.

945 : OP(NOSPACE, OPSPACE), dataAtPts(data_ptr) {}
@ NOSPACE
Definition definitions.h:83
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
FaceElementForcesAndSourcesCore::UserDataOperator OP

Member Function Documentation

◆ doWork()

MoFEMErrorCode OpFaceMaterialForce::doWork ( int  side,
EntityType  type,
EntData data 
)
Examples
mofem/users_modules/eshelbian_plasticity/src/impl/EshelbianOperators.cpp.

Definition at line 3474 of file EshelbianOperators.cpp.

3475 {
3477
3478#ifndef NDEBUG
3479 auto fe_mi_ptr = getFEMethod()->numeredEntFiniteElementPtr;
3480 auto pstatus = fe_mi_ptr->getPStatus();
3481 if (pstatus) {
3482 auto owner = fe_mi_ptr->getOwnerProc();
3483 MOFEM_LOG("SELF", Sev::noisy)
3484 << "OpFaceMaterialForce: owner proc is not 0, owner proc: " << owner
3485 << " " << getPtrFE()->mField.get_comm_rank();
3486 }
3487#endif // NDEBUG
3488
3490
3492 t_face_T(I) = 0.;
3493 double face_pressure = 0.;
3494 auto t_T = getFTensor1FromMat<SPACE_DIM>(
3495 dataAtPts->faceMaterialForceAtPts); //< face material force
3496 auto t_p =
3497 getFTensor0FromVec(dataAtPts->normalPressureAtPts); //< normal pressure
3498 auto t_w = getFTensor0IntegrationWeight();
3499 for (auto gg = 0; gg != getGaussPts().size2(); ++gg) {
3500 t_face_T(I) += t_w * t_T(I);
3501 face_pressure += t_w * t_p;
3502 ++t_w;
3503 ++t_T;
3504 ++t_p;
3505 }
3506 t_face_T(I) *= getMeasure();
3507 face_pressure *= getMeasure();
3508
3509 auto get_tag = [&](auto name, auto dim) {
3510 auto &moab = getPtrFE()->mField.get_moab();
3511 Tag tag;
3512 double def_val[] = {0., 0., 0.};
3513 CHK_MOAB_THROW(moab.tag_get_handle(name, dim, MB_TYPE_DOUBLE, tag,
3514 MB_TAG_CREAT | MB_TAG_SPARSE, def_val),
3515 "create tag");
3516 return tag;
3517 };
3518
3519 auto set_tag = [&](auto &&tag, auto ptr) {
3520 auto &moab = getPtrFE()->mField.get_moab();
3521 auto face = getPtrFE()->getFEEntityHandle();
3522 CHK_MOAB_THROW(moab.tag_set_data(tag, &face, 1, ptr), "set tag");
3523 };
3524
3525 set_tag(get_tag("MaterialForce", 3), &t_face_T(0));
3526 set_tag(get_tag("FacePressure", 1), &face_pressure);
3527
3529}
#define FTENSOR_INDEX(DIM, I)
constexpr int SPACE_DIM
[Define dimension]
#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.
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MOFEM_LOG(channel, severity)
Log.
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
constexpr IntegrationType I

Member Data Documentation

◆ dataAtPts

boost::shared_ptr<DataAtIntegrationPts> OpFaceMaterialForce::dataAtPts
private

data at integration pts

Definition at line 951 of file EshelbianOperators.hpp.


The documentation for this struct was generated from the following files: