|
| v0.14.0
|
Tangent opeerator for contrains equation for change of spatial positions on master and slave.
More...
#include <users_modules/mortar_contact/src/SimpleContact.hpp>
|
| OpLhsConvectIntegrationPtsConstrainMasterGap (const string lagrange_field_name, const string field_name, boost::shared_ptr< CommonDataSimpleContact > common_data_contact, boost::shared_ptr< double > cn, const ContactOp::FaceType face_type, boost::shared_ptr< MatrixDouble > diff_convect) |
|
MoFEMErrorCode | doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data) |
|
Tangent opeerator for contrains equation for change of spatial positions on master and slave.
Definition at line 2427 of file SimpleContact.hpp.
◆ OpLhsConvectIntegrationPtsConstrainMasterGap()
SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::OpLhsConvectIntegrationPtsConstrainMasterGap |
( |
const string |
lagrange_field_name, |
|
|
const string |
field_name, |
|
|
boost::shared_ptr< CommonDataSimpleContact > |
common_data_contact, |
|
|
boost::shared_ptr< double > |
cn, |
|
|
const ContactOp::FaceType |
face_type, |
|
|
boost::shared_ptr< MatrixDouble > |
diff_convect |
|
) |
| |
|
inline |
◆ doWork()
MoFEMErrorCode SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::doWork |
( |
int |
row_side, |
|
|
int |
col_side, |
|
|
EntityType |
row_type, |
|
|
EntityType |
col_type, |
|
|
EntData & |
row_data, |
|
|
EntData & |
col_data |
|
) |
| |
Definition at line 2987 of file SimpleContact.cpp.
2992 const int nb_row = row_data.
getIndices().size();
2993 const int nb_col = col_data.
getIndices().size();
2995 if (nb_row && nb_col && col_type == MBVERTEX) {
2997 const int nb_gauss_pts = row_data.
getN().size1();
2998 int nb_base_fun_row = nb_row;
2999 int nb_base_fun_col = nb_col / 3;
3001 const double area_slave =
3004 matLhs.resize(nb_row, nb_col,
false);
3007 auto get_diff_ksi = [](
auto &
m,
auto gg) {
3009 &
m(0, gg), &
m(1, gg), &
m(2, gg), &
m(3, gg), &
m(4, gg), &
m(5, gg));
3020 auto t_const_unit_n =
3023 auto t_lagrange_slave =
3028 auto t_grad = getFTensor2FromMat<3, 2>(xi_grad_mat);
3030 auto t_w = getFTensor0IntegrationWeightSlave();
3031 const double cn_value = *
cNPtr.get();
3032 for (
int gg = 0; gg != nb_gauss_pts; ++gg) {
3034 cn_value, t_gap_gp, t_lagrange_slave) *
3037 cn_value, t_gap_gp, t_lagrange_slave) *
3040 cn_value, t_gap_gp, t_lagrange_slave) *
3049 for (
int bbr = 0; bbr != nb_base_fun_row; ++bbr) {
3052 auto t_diff_convect = get_diff_ksi(*
diffConvect, 3 * gg);
3054 for (
int bbc = 0; bbc != nb_base_fun_col; ++bbc) {
3056 t_mat(
i) += t_base_lambda * val_diff_m_g * t_const_unit_n(
j) *
3057 t_grad(
j,
I) * t_diff_convect(
I,
i);
3065 ++t_base_diff_lambda;
◆ cNPtr
boost::shared_ptr<double> SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::cNPtr |
|
private |
◆ commonDataSimpleContact
boost::shared_ptr<CommonDataSimpleContact> SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::commonDataSimpleContact |
|
private |
◆ diffConvect
boost::shared_ptr<MatrixDouble> SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::diffConvect |
|
private |
◆ matLhs
MatrixDouble SimpleContactProblem::OpLhsConvectIntegrationPtsConstrainMasterGap::matLhs |
|
private |
The documentation for this struct was generated from the following files:
MoFEMErrorCode MatSetValues(Mat M, const EntitiesFieldData::EntData &row_data, const EntitiesFieldData::EntData &col_data, const double *ptr, InsertMode iora)
Assemble PETSc matrix.
@ OPROWCOL
operator doWork is executed on FE rows &columns
constexpr IntegrationType I
FTensor::Tensor0< FTensor::PackPtr< double *, 1 > > getFTensor0N(const FieldApproximationBase base)
Get base function as Tensor0.
#define CHKERR
Inline error check.
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
const VectorInt & getIndices() const
Get global indices of dofs on entity.
FTensor::Index< 'i', SPACE_DIM > i
constexpr auto field_name
FTensor::Tensor1< FTensor::PackPtr< double *, Tensor_Dim >, Tensor_Dim > getFTensor1DiffN(const FieldApproximationBase base)
Get derivatives of base functions.
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....
FTensor::Index< 'j', 3 > j
UBlasVector< double > VectorDouble
FTensor::Index< 'm', 3 > m
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...