v0.15.5
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | List of all members
EdgeSlidingConstrains Struct Reference

#include "tools/src/SurfaceSlidingConstrains.hpp"

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

Classes

struct  CalculateEdgeBase
 
struct  MyEdgeFE
 
struct  OpJacobian
 

Public Member Functions

MyEdgeFEgetLoopFeRhs ()
 
MyEdgeFEgetLoopFeLhs ()
 
MoFEMErrorCode getOptions ()
 
 EdgeSlidingConstrains (MoFEM::Interface &m_field)
 
MoFEMErrorCode setOperators (int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
MoFEMErrorCode setOperators (int tag, const std::string lagrange_multipliers_field_name, const std::string material_field_name, const double *alpha=nullptr)
 
MoFEMErrorCode setOperatorsConstrainOnly (int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
MoFEMErrorCode setOperatorsConstrainOnly (int tag, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
MyEdgeFEgetLoopFeRhs ()
 
MyEdgeFEgetLoopFeLhs ()
 
MoFEMErrorCode getOptions ()
 
 EdgeSlidingConstrains (MoFEM::Interface &m_field)
 
MoFEMErrorCode setOperators (int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
MoFEMErrorCode setOperators (int tag, const std::string lagrange_multipliers_field_name, const std::string material_field_name, const double *alpha=nullptr)
 
MoFEMErrorCode setOperatorsConstrainOnly (int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
MoFEMErrorCode setOperatorsConstrainOnly (int tag, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
 
- Public Member Functions inherited from GenericSliding
 GenericSliding ()=default
 
virtual ~GenericSliding ()=default
 
 GenericSliding ()=default
 
virtual ~GenericSliding ()=default
 

Public Attributes

MoFEM::InterfacemField
 
boost::shared_ptr< MyEdgeFEfeRhsPtr
 
boost::shared_ptr< MyEdgeFEfeLhsPtr
 
MyEdgeFEfeRhs
 
MyEdgeFEfeLhs
 
double aLpha
 

Detailed Description

Definition at line 630 of file SurfaceSlidingConstrains.hpp.

Constructor & Destructor Documentation

◆ EdgeSlidingConstrains() [1/2]

EdgeSlidingConstrains::EdgeSlidingConstrains ( MoFEM::Interface m_field)
inline

Definition at line 911 of file SurfaceSlidingConstrains.hpp.

912 : mField(m_field), feRhsPtr(new MyEdgeFE(m_field)),
913 feLhsPtr(new MyEdgeFE(m_field)), feRhs(*feRhsPtr), feLhs(*feLhsPtr),
914 aLpha(1) {
915 ierr = getOptions();
916 CHKERRABORT(PETSC_COMM_WORLD, ierr);
917 }
static PetscErrorCode ierr
boost::shared_ptr< MyEdgeFE > feRhsPtr
boost::shared_ptr< MyEdgeFE > feLhsPtr

◆ EdgeSlidingConstrains() [2/2]

EdgeSlidingConstrains::EdgeSlidingConstrains ( MoFEM::Interface m_field)
inline

Definition at line 916 of file SurfaceSlidingConstrains.hpp.

917 : mField(m_field), feRhsPtr(new MyEdgeFE(m_field)),
918 feLhsPtr(new MyEdgeFE(m_field)), feRhs(*feRhsPtr), feLhs(*feLhsPtr),
919 aLpha(1) {
920 ierr = getOptions();
921 CHKERRABORT(PETSC_COMM_WORLD, ierr);
922 }

Member Function Documentation

◆ getLoopFeLhs() [1/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeLhs ( )
inline

Definition at line 897 of file SurfaceSlidingConstrains.hpp.

897{ return feLhs; }

◆ getLoopFeLhs() [2/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeLhs ( )
inline

Definition at line 901 of file SurfaceSlidingConstrains.hpp.

901{ return feLhs; }

◆ getLoopFeRhs() [1/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeRhs ( )
inline

Definition at line 895 of file SurfaceSlidingConstrains.hpp.

895{ return feRhs; }

◆ getLoopFeRhs() [2/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeRhs ( )
inline

Definition at line 899 of file SurfaceSlidingConstrains.hpp.

899{ return feRhs; }

◆ getOptions() [1/2]

MoFEMErrorCode EdgeSlidingConstrains::getOptions ( )
inline

Definition at line 901 of file SurfaceSlidingConstrains.hpp.

901 {
903 PetscOptionsBegin(PETSC_COMM_WORLD, "",
904 "Get edge sliding constrains element scaling", "none");
905 CHKERR PetscOptionsScalar("-edge_sliding_alpha", "scaling parameter", "",
906 aLpha, &aLpha, PETSC_NULLPTR);
907 PetscOptionsEnd();
909 }
#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()
#define CHKERR
Inline error check.

◆ getOptions() [2/2]

MoFEMErrorCode EdgeSlidingConstrains::getOptions ( )
inline

Definition at line 905 of file SurfaceSlidingConstrains.hpp.

905 {
907 PetscOptionsBegin(PETSC_COMM_WORLD, "",
908 "Get edge sliding constrains element scaling",
909 "none");
910 CHKERR PetscOptionsScalar("-edge_sliding_alpha", "scaling parameter", "",
911 aLpha, &aLpha, PETSC_NULLPTR);
912 PetscOptionsEnd();
914 }

◆ setOperators() [1/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperators ( int  tag,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name,
const double alpha = nullptr 
)
inline

Definition at line 1093 of file SurfaceSlidingConstrains.hpp.

1096 {
1098
1099 if (alpha) {
1100 aLpha = *alpha;
1101 }
1102
1103 boost::shared_ptr<VectorDouble> active_variables_ptr(
1104 new VectorDouble(4 + 6));
1105 boost::shared_ptr<VectorDouble> results_ptr(new VectorDouble(4 + 6));
1106 boost::shared_ptr<MatrixDouble> jacobian_ptr(
1107 new MatrixDouble(4 + 6, 4 + 6));
1108
1109 feRhs.getOpPtrVector().clear();
1110 feRhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1111 lagrange_multipliers_field_name, active_variables_ptr));
1112 feRhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1113 material_field_name, active_variables_ptr));
1114 feRhs.getOpPtrVector().push_back(new OpJacobian(
1115 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1116 jacobian_ptr, false, aLpha));
1117 feRhs.getOpPtrVector().push_back(
1118 new OpAssembleRhs<4, 6>(lagrange_multipliers_field_name, results_ptr));
1119 feRhs.getOpPtrVector().push_back(
1120 new OpAssembleRhs<4, 6>(material_field_name, results_ptr));
1121
1122 // Adding operators to calculate the left hand side
1123 feLhs.getOpPtrVector().clear();
1124 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1125 lagrange_multipliers_field_name, active_variables_ptr));
1126 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1127 material_field_name, active_variables_ptr));
1128 feLhs.getOpPtrVector().push_back(new OpJacobian(
1129 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1130 jacobian_ptr, true, aLpha));
1131 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1132 lagrange_multipliers_field_name, material_field_name, jacobian_ptr));
1133 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1134 material_field_name, lagrange_multipliers_field_name, jacobian_ptr));
1135 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1136 material_field_name, material_field_name, jacobian_ptr));
1137
1139 }
UBlasMatrix< double > MatrixDouble
Definition Types.hpp:77
UBlasVector< double > VectorDouble
Definition Types.hpp:68
boost::ptr_deque< UserDataOperator > & getOpPtrVector()
Use to push back operator for row operator.

◆ setOperators() [2/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperators ( int  tag,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name,
const double alpha = nullptr 
)
inline

Definition at line 1098 of file SurfaceSlidingConstrains.hpp.

1101 {
1103
1104 if (alpha) {
1105 aLpha = *alpha;
1106 }
1107
1108 boost::shared_ptr<VectorDouble> active_variables_ptr(
1109 new VectorDouble(4 + 6));
1110 boost::shared_ptr<VectorDouble> results_ptr(new VectorDouble(4 + 6));
1111 boost::shared_ptr<MatrixDouble> jacobian_ptr(
1112 new MatrixDouble(4 + 6, 4 + 6));
1113
1114 feRhs.getOpPtrVector().clear();
1115 feRhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1116 lagrange_multipliers_field_name, active_variables_ptr));
1117 feRhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1118 material_field_name, active_variables_ptr));
1119 feRhs.getOpPtrVector().push_back(new OpJacobian(
1120 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1121 jacobian_ptr, false, aLpha));
1122 feRhs.getOpPtrVector().push_back(
1123 new OpAssembleRhs<4, 6>(lagrange_multipliers_field_name, results_ptr));
1124 feRhs.getOpPtrVector().push_back(
1125 new OpAssembleRhs<4, 6>(material_field_name, results_ptr));
1126
1127 // Adding operators to calculate the left hand side
1128 feLhs.getOpPtrVector().clear();
1129 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1130 lagrange_multipliers_field_name, active_variables_ptr));
1131 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1132 material_field_name, active_variables_ptr));
1133 feLhs.getOpPtrVector().push_back(new OpJacobian(
1134 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1135 jacobian_ptr, true, aLpha));
1136 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1137 lagrange_multipliers_field_name, material_field_name, jacobian_ptr));
1138 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1139 material_field_name, lagrange_multipliers_field_name, jacobian_ptr));
1140 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1141 material_field_name, material_field_name, jacobian_ptr));
1142
1144 }

◆ setOperators() [3/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperators ( int  tag,
Range  edges,
Range  faces,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1082 of file SurfaceSlidingConstrains.hpp.

1084 {
1087 edges, faces);
1088 CHKERR setOperators(tag, lagrange_multipliers_field_name,
1089 material_field_name);
1091 }
static MoFEMErrorCode setTags(moab::Interface &moab, Range edges, Range tris, bool number_pathes=true, boost::shared_ptr< SurfaceSlidingConstrains::DriverElementOrientation > surface_orientation=nullptr, MoFEM::Interface *m_field_ptr=nullptr)
MoFEMErrorCode setOperators(int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)
virtual moab::Interface & get_moab()=0

◆ setOperators() [4/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperators ( int  tag,
Range  edges,
Range  faces,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1087 of file SurfaceSlidingConstrains.hpp.

1089 {
1092 edges, faces);
1093 CHKERR setOperators(tag, lagrange_multipliers_field_name,
1094 material_field_name);
1096 }

◆ setOperatorsConstrainOnly() [1/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperatorsConstrainOnly ( int  tag,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1155 of file SurfaceSlidingConstrains.hpp.

1157 {
1159
1160 boost::shared_ptr<VectorDouble> active_variables_ptr(
1161 new VectorDouble(4 + 6));
1162 boost::shared_ptr<VectorDouble> results_ptr(new VectorDouble(4 + 6));
1163 boost::shared_ptr<MatrixDouble> jacobian_ptr(
1164 new MatrixDouble(4 + 6, 4 + 6));
1165
1166 // Adding operators to calculate the left hand side
1167 feLhs.getOpPtrVector().clear();
1168 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1169 lagrange_multipliers_field_name, active_variables_ptr));
1170 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1171 material_field_name, active_variables_ptr));
1172 feLhs.getOpPtrVector().push_back(new OpJacobian(
1173 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1174 jacobian_ptr, true, aLpha));
1175 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1176 lagrange_multipliers_field_name, material_field_name, jacobian_ptr));
1177
1179 }

◆ setOperatorsConstrainOnly() [2/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperatorsConstrainOnly ( int  tag,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1160 of file SurfaceSlidingConstrains.hpp.

1162 {
1164
1165 boost::shared_ptr<VectorDouble> active_variables_ptr(
1166 new VectorDouble(4 + 6));
1167 boost::shared_ptr<VectorDouble> results_ptr(new VectorDouble(4 + 6));
1168 boost::shared_ptr<MatrixDouble> jacobian_ptr(
1169 new MatrixDouble(4 + 6, 4 + 6));
1170
1171 // Adding operators to calculate the left hand side
1172 feLhs.getOpPtrVector().clear();
1173 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsLambda(
1174 lagrange_multipliers_field_name, active_variables_ptr));
1175 feLhs.getOpPtrVector().push_back(new OpGetActiveDofsPositions<4>(
1176 material_field_name, active_variables_ptr));
1177 feLhs.getOpPtrVector().push_back(new OpJacobian(
1178 tag, lagrange_multipliers_field_name, active_variables_ptr, results_ptr,
1179 jacobian_ptr, true, aLpha));
1180 feLhs.getOpPtrVector().push_back(new OpAssembleLhs<4, 6>(
1181 lagrange_multipliers_field_name, material_field_name, jacobian_ptr));
1182
1184 }

◆ setOperatorsConstrainOnly() [3/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperatorsConstrainOnly ( int  tag,
Range  edges,
Range  faces,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1142 of file SurfaceSlidingConstrains.hpp.

1144 {
1146
1148 edges, faces);
1149 CHKERR setOperatorsConstrainOnly(tag, lagrange_multipliers_field_name,
1150 material_field_name);
1152 }
MoFEMErrorCode setOperatorsConstrainOnly(int tag, Range edges, Range faces, const std::string lagrange_multipliers_field_name, const std::string material_field_name)

◆ setOperatorsConstrainOnly() [4/4]

MoFEMErrorCode EdgeSlidingConstrains::setOperatorsConstrainOnly ( int  tag,
Range  edges,
Range  faces,
const std::string  lagrange_multipliers_field_name,
const std::string  material_field_name 
)
inline

Definition at line 1147 of file SurfaceSlidingConstrains.hpp.

1149 {
1151
1153 edges, faces);
1154 CHKERR setOperatorsConstrainOnly(tag, lagrange_multipliers_field_name,
1155 material_field_name);
1157 }

Member Data Documentation

◆ aLpha

double EdgeSlidingConstrains::aLpha

Definition at line 899 of file SurfaceSlidingConstrains.hpp.

◆ feLhs

MyEdgeFE & EdgeSlidingConstrains::feLhs

Definition at line 896 of file SurfaceSlidingConstrains.hpp.

◆ feLhsPtr

boost::shared_ptr< MyEdgeFE > EdgeSlidingConstrains::feLhsPtr

Definition at line 892 of file SurfaceSlidingConstrains.hpp.

◆ feRhs

MyEdgeFE & EdgeSlidingConstrains::feRhs

Definition at line 894 of file SurfaceSlidingConstrains.hpp.

◆ feRhsPtr

boost::shared_ptr< MyEdgeFE > EdgeSlidingConstrains::feRhsPtr

Definition at line 892 of file SurfaceSlidingConstrains.hpp.

◆ mField

MoFEM::Interface & EdgeSlidingConstrains::mField

Definition at line 863 of file SurfaceSlidingConstrains.hpp.


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