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

Zeroes the DOFs which aro not at side for broken base field. More...

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

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

Public Types

using OP = SideEleOp
 

Public Member Functions

 OpZeroNoSideBrokenDofs (std::string field_name)
 
MoFEMErrorCode doWork (int side, EntityType type, EntData &data)
 

Detailed Description

Zeroes the DOFs which aro not at side for broken base field.

Definition at line 985 of file EshelbianOperators.hpp.

Member Typedef Documentation

◆ OP

Definition at line 986 of file EshelbianOperators.hpp.

Constructor & Destructor Documentation

◆ OpZeroNoSideBrokenDofs()

OpZeroNoSideBrokenDofs::OpZeroNoSideBrokenDofs ( std::string  field_name)
inline

Definition at line 987 of file EshelbianOperators.hpp.

987: OP(field_name, OP::OPROW) {}
constexpr auto field_name

Member Function Documentation

◆ doWork()

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

Definition at line 3712 of file EshelbianOperators.cpp.

3713 {
3714
3716
3717 auto nb_dofs = data.getIndices().size();
3718 if (nb_dofs == 0)
3720
3721 auto continuity = data.getFieldEntities()[0]->getContinuity();
3722 if (continuity != DISCONTINUOUS)
3723 SETERRQ(PETSC_COMM_WORLD, MOFEM_DATA_INCONSISTENCY,
3724 "OpZeroNoSideBrokenDofs works only for discontinuous field");
3725
3726 auto fe_type = OP::getFEType();
3727 BaseFunction::DofsSideMap &side_dof_map =
3728 data.getFieldEntities()[0]->getDofSideMap().at(fe_type);
3729 auto face_side_number = getFaceSideNumber();
3730
3731 for (
3732
3733 auto it = side_dof_map.get<1>().begin();
3734 it != side_dof_map.get<1>().end(); ++it
3735
3736 ) {
3737 if ((3 * it->dof) >= data.getIndices().size())
3738 break;
3739 if (it->type != MBTRI || it->side != face_side_number) {
3740 for (auto dd = 0; dd < 3; ++dd) {
3741 data.getFieldData()[3 * it->dof + dd] = 0.;
3742 }
3743 }
3744 }
3745
3747}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ DISCONTINUOUS
Broken continuity (No effect on L2 space)
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
@ MOFEM_DATA_INCONSISTENCY
Definition definitions.h:31
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
const Tensor2_symmetric_Expr< const ddTensor0< T, Dim, i, j >, typename promote< T, double >::V, Dim, i, j > dd(const Tensor0< T * > &a, const Index< i, Dim > index1, const Index< j, Dim > index2, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)
Definition ddTensor0.hpp:33
multi_index_container< DofsSideMapData, indexed_by< ordered_non_unique< tag< TypeSide_mi_tag >, composite_key< DofsSideMapData, member< DofsSideMapData, EntityType, &DofsSideMapData::type >, member< DofsSideMapData, int, &DofsSideMapData::side > > >, ordered_unique< tag< EntDofIdx_mi_tag >, member< DofsSideMapData, int, &DofsSideMapData::dof > > > > DofsSideMap
Map entity stype and side to element/entity dof index.
const VectorFieldEntities & getFieldEntities() const
Get field entities (const version)
const VectorDouble & getFieldData() const
Get DOF values on entity.
const VectorInt & getIndices() const
Get global indices of degrees of freedom on entity.

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