v0.15.0
Loading...
Searching...
No Matches
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

Examples
mesh_smoothing.cpp.

Definition at line 637 of file SurfaceSlidingConstrains.hpp.

Constructor & Destructor Documentation

◆ EdgeSlidingConstrains() [1/2]

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

Definition at line 921 of file SurfaceSlidingConstrains.hpp.

922 : mField(m_field), feRhsPtr(new MyEdgeFE(m_field)),
923 feLhsPtr(new MyEdgeFE(m_field)), feRhs(*feRhsPtr), feLhs(*feLhsPtr),
924 aLpha(1) {
925 ierr = getOptions();
926 CHKERRABORT(PETSC_COMM_WORLD, ierr);
927 }
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 920 of file SurfaceSlidingConstrains.hpp.

921 : mField(m_field), feRhsPtr(new MyEdgeFE(m_field)),
922 feLhsPtr(new MyEdgeFE(m_field)), feRhs(*feRhsPtr), feLhs(*feLhsPtr),
923 aLpha(1) {
924 ierr = getOptions();
925 CHKERRABORT(PETSC_COMM_WORLD, ierr);
926 }

Member Function Documentation

◆ getLoopFeLhs() [1/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeLhs ( )
inline

Definition at line 906 of file SurfaceSlidingConstrains.hpp.

906{ return feLhs; }

◆ getLoopFeLhs() [2/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeLhs ( )
inline

Definition at line 905 of file SurfaceSlidingConstrains.hpp.

905{ return feLhs; }

◆ getLoopFeRhs() [1/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeRhs ( )
inline

Definition at line 904 of file SurfaceSlidingConstrains.hpp.

904{ return feRhs; }

◆ getLoopFeRhs() [2/2]

MyEdgeFE & EdgeSlidingConstrains::getLoopFeRhs ( )
inline

Definition at line 903 of file SurfaceSlidingConstrains.hpp.

903{ return feRhs; }

◆ getOptions() [1/2]

MoFEMErrorCode EdgeSlidingConstrains::getOptions ( )
inline

Definition at line 910 of file SurfaceSlidingConstrains.hpp.

910 {
912 PetscOptionsBegin(PETSC_COMM_WORLD, "",
913 "Get edge sliding constrains element scaling",
914 "none");
915 CHKERR PetscOptionsScalar("-edge_sliding_alpha", "scaling parameter", "",
916 aLpha, &aLpha, PETSC_NULLPTR);
917 PetscOptionsEnd();
919 }
#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 909 of file SurfaceSlidingConstrains.hpp.

909 {
911 PetscOptionsBegin(PETSC_COMM_WORLD, "",
912 "Get edge sliding constrains element scaling",
913 "none");
914 CHKERR PetscOptionsScalar("-edge_sliding_alpha", "scaling parameter", "",
915 aLpha, &aLpha, PETSC_NULLPTR);
916 PetscOptionsEnd();
918 }

◆ 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 1099 of file SurfaceSlidingConstrains.hpp.

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

1090 {
1093 edges, faces);
1094 CHKERR setOperators(tag, lagrange_multipliers_field_name,
1095 material_field_name);
1097 }
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 1161 of file SurfaceSlidingConstrains.hpp.

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

◆ 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 1148 of file SurfaceSlidingConstrains.hpp.

1150 {
1152
1154 edges, faces);
1155 CHKERR setOperatorsConstrainOnly(tag, lagrange_multipliers_field_name,
1156 material_field_name);
1158 }
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 908 of file SurfaceSlidingConstrains.hpp.

◆ feLhs

MyEdgeFE & EdgeSlidingConstrains::feLhs

Definition at line 905 of file SurfaceSlidingConstrains.hpp.

◆ feLhsPtr

boost::shared_ptr< MyEdgeFE > EdgeSlidingConstrains::feLhsPtr

Definition at line 901 of file SurfaceSlidingConstrains.hpp.

◆ feRhs

MyEdgeFE & EdgeSlidingConstrains::feRhs

Definition at line 903 of file SurfaceSlidingConstrains.hpp.

◆ feRhsPtr

boost::shared_ptr< MyEdgeFE > EdgeSlidingConstrains::feRhsPtr

Definition at line 901 of file SurfaceSlidingConstrains.hpp.

◆ mField

MoFEM::Interface & EdgeSlidingConstrains::mField

Definition at line 872 of file SurfaceSlidingConstrains.hpp.


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