v0.14.0
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
SimpleContactProblem::OpLagGapProdGaussPtsSlave Struct Reference

Operator for the simple contact element. More...

#include <users_modules/mortar_contact/src/SimpleContact.hpp>

Inheritance diagram for SimpleContactProblem::OpLagGapProdGaussPtsSlave:
[legend]
Collaboration diagram for SimpleContactProblem::OpLagGapProdGaussPtsSlave:
[legend]

Public Member Functions

 OpLagGapProdGaussPtsSlave (const string lagrange_field_name, boost::shared_ptr< CommonDataSimpleContact > common_data_contact)
 
MoFEMErrorCode doWork (int side, EntityType type, EntData &data)
 

Public Attributes

boost::shared_ptr< CommonDataSimpleContactcommonDataSimpleContact
 

Detailed Description

Operator for the simple contact element.

Calculates the product of Lagrange multipliers with gaps evaluated at the gauss points on the slave triangle.

Definition at line 942 of file SimpleContact.hpp.

Constructor & Destructor Documentation

◆ OpLagGapProdGaussPtsSlave()

SimpleContactProblem::OpLagGapProdGaussPtsSlave::OpLagGapProdGaussPtsSlave ( const string  lagrange_field_name,
boost::shared_ptr< CommonDataSimpleContact common_data_contact 
)
inline

Definition at line 945 of file SimpleContact.hpp.

948 : ContactOp(lagrange_field_name, UserDataOperator::OPROW,
949 ContactOp::FACESLAVE),
950 commonDataSimpleContact(common_data_contact) {}
boost::shared_ptr< CommonDataSimpleContact > commonDataSimpleContact
ContactPrismElementForcesAndSourcesCore::UserDataOperator ContactOp

Member Function Documentation

◆ doWork()

MoFEMErrorCode SimpleContactProblem::OpLagGapProdGaussPtsSlave::doWork ( int  side,
EntityType  type,
EntData data 
)

Definition at line 1503 of file SimpleContact.cpp.

1504 {
1506
1507 if (type != MBVERTEX)
1509
1510 const int nb_gauss_pts = data.getN().size1();
1511
1512 commonDataSimpleContact->lagGapProdPtr.get()->resize(nb_gauss_pts);
1513 commonDataSimpleContact->lagGapProdPtr.get()->clear();
1514
1515 int nb_base_fun_row = data.getFieldData().size();
1516
1517 auto t_lagrange_slave =
1518 getFTensor0FromVec(*commonDataSimpleContact->lagMultAtGaussPtsPtr);
1519
1520 auto t_lag_gap_prod_slave =
1522
1523 auto t_gap_ptr = getFTensor0FromVec(*commonDataSimpleContact->gapPtr);
1524
1525 for (int gg = 0; gg != nb_gauss_pts; ++gg) {
1526 t_lag_gap_prod_slave += t_gap_ptr * t_lagrange_slave;
1527 ++t_gap_ptr;
1528 ++t_lag_gap_prod_slave;
1529 ++t_lagrange_slave;
1530 }
1531
1533}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
Definition: Templates.hpp:135
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....
const VectorDouble & getFieldData() const
get dofs values

Member Data Documentation

◆ commonDataSimpleContact

boost::shared_ptr<CommonDataSimpleContact> SimpleContactProblem::OpLagGapProdGaussPtsSlave::commonDataSimpleContact

Definition at line 944 of file SimpleContact.hpp.


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