v0.14.0
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
multifield_plasticity.cpp File Reference
#include <MoFEM.hpp>
#include <chrono>
#include <boost/tokenizer.hpp>
#include <IntegrationRules.hpp>
#include <BlockMatData.hpp>
#include <MultifieldPlasticity.hpp>
#include <BasicFiniteElements.hpp>
#include <AnalyticalSurfaces.hpp>
#include <RigidBodies.hpp>
#include <BasicFeTools.hpp>
#include <MatrixFunction.hpp>
#include <ElasticOperators.hpp>
#include <PlasticOperators.hpp>
#include <ContactOperators.hpp>
#include <RotatingFrameOperators.hpp>
#include <DualBase.hpp>
#include <DefaultParams.hpp>

Go to the source code of this file.

Classes

struct  MeasureTime
 
struct  ContactPlasticity
 
struct  ContactPlasticity::ProblemData
 
struct  ContactPlasticity::MMonitor
 

Typedefs

using OpLogStrainMatrixLhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpGradTensorGrad< 1, 3, 3, 1 >
 
using OpStiffnessMatrixLhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpGradSymTensorGrad< 1, 3, 3, 0 >
 
using OpBodyForce = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpSource< 1, 3 >
 
using OpMixDivULhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpMixDivTimesVec< 3 >
 
using OpLambdaGraULhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpMixTensorTimesGrad< 3 >
 
using OpMixDivURhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpMixDivTimesU< 3, 3, 3 >
 
using OpMiXLambdaGradURhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpMixTensorTimesGradU< 3 >
 
using OpMixUTimesDivLambdaRhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpMixVecTimesDivLambda< 3 >
 
using OpMixUTimesLambdaRhs = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpGradTimesTensor< 1, 3, 3 >
 
using OpSpringLhs = FormsIntegrators< BoundaryEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpMass< 1, 3 >
 
using OpSpringLhsNoFS = FormsIntegrators< BoundaryEleOp >::Assembly< USER_ASSEMBLE >::BiLinearForm< GAUSS >::OpMass< 1, 3 >
 
using OpSpringRhs = FormsIntegrators< BoundaryEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpBaseTimesVector< 1, 3, 1 >
 
using OpInertiaForce = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpBaseTimesVector< 1, 3, 1 >
 
using OpCentrifugalForce2 = FormsIntegrators< DomainEleOp >::Assembly< USER_ASSEMBLE >::LinearForm< GAUSS >::OpSource< 1, 3 >
 

Functions

int main (int argc, char *argv[])
 

Variables

BlockParamDatacache
 
std::map< int, BlockParamDatamat_blocks
 
constexpr bool TEST_H1_SPACE = false
 
EntityType zero_type = TEST_H1_SPACE ? MBVERTEX : MBTET
 
FieldSpace space_test = (TEST_H1_SPACE ? H1 : L2)
 
static char help [] = "...\n\n"
 

Detailed Description

Multifield plasticity with contact

Definition in file multifield_plasticity.cpp.

Typedef Documentation

◆ OpBodyForce

using OpBodyForce = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpSource<1, 3>
Examples
dynamic_first_order_con_law.cpp.

Definition at line 49 of file multifield_plasticity.cpp.

◆ OpCentrifugalForce2

using OpCentrifugalForce2 = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpSource<1, 3>

Definition at line 75 of file multifield_plasticity.cpp.

◆ OpInertiaForce

using OpInertiaForce = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpBaseTimesVector<1, 3, 1>
Examples
plastic.cpp.

Definition at line 72 of file multifield_plasticity.cpp.

◆ OpLambdaGraULhs

using OpLambdaGraULhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpMixTensorTimesGrad<3>
Examples
tensor_divergence_operator.cpp.

Definition at line 54 of file multifield_plasticity.cpp.

◆ OpLogStrainMatrixLhs

using OpLogStrainMatrixLhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpGradTensorGrad<1, 3, 3, 1>

Definition at line 45 of file multifield_plasticity.cpp.

◆ OpMixDivULhs

using OpMixDivULhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpMixDivTimesVec<3>
Examples
tensor_divergence_operator.cpp.

Definition at line 52 of file multifield_plasticity.cpp.

◆ OpMixDivURhs

using OpMixDivURhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpMixDivTimesU<3, 3, 3>

◆ OpMiXLambdaGradURhs

using OpMiXLambdaGradURhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpMixTensorTimesGradU<3>

Definition at line 58 of file multifield_plasticity.cpp.

◆ OpMixUTimesDivLambdaRhs

using OpMixUTimesDivLambdaRhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpMixVecTimesDivLambda<3>

◆ OpMixUTimesLambdaRhs

using OpMixUTimesLambdaRhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpGradTimesTensor<1, 3, 3>

◆ OpSpringLhs

using OpSpringLhs = FormsIntegrators<BoundaryEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpMass<1, 3>

Definition at line 65 of file multifield_plasticity.cpp.

◆ OpSpringLhsNoFS

using OpSpringLhsNoFS = FormsIntegrators<BoundaryEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpMass<1, 3>

Definition at line 67 of file multifield_plasticity.cpp.

◆ OpSpringRhs

using OpSpringRhs = FormsIntegrators<BoundaryEleOp>::Assembly< USER_ASSEMBLE>::LinearForm<GAUSS>::OpBaseTimesVector<1, 3, 1>

Definition at line 69 of file multifield_plasticity.cpp.

◆ OpStiffnessMatrixLhs

using OpStiffnessMatrixLhs = FormsIntegrators<DomainEleOp>::Assembly< USER_ASSEMBLE>::BiLinearForm<GAUSS>::OpGradSymTensorGrad<1, 3, 3, 0>

Definition at line 47 of file multifield_plasticity.cpp.

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

< mesh database

< mesh database interface

< finite element database

< finite element database insterface

Definition at line 2605 of file multifield_plasticity.cpp.

2605 {
2606
2607#include <DefaultParams.hpp>
2608
2609 MoFEM::Core::Initialize(&argc, &argv, param_file.c_str(), help);
2610
2611 try {
2612
2613 DMType dm_name = "DMMOFEM";
2614 CHKERR DMRegister_MoFEM(dm_name);
2615
2616 moab::Core mb_instance; ///< mesh database
2617 moab::Interface &moab = mb_instance; ///< mesh database interface
2618
2619 MoFEM::Core core(moab); ///< finite element database
2620 MoFEM::Interface &m_field = core; ///< finite element database insterface
2621
2622 Simple *simple = m_field.getInterface<Simple>();
2623 simple->getProblemName() = "Multifield plasticity";
2624 CHKERR simple->getOptions();
2625
2626 ContactPlasticity ex(m_field);
2628
2629 PetscBool is_partitioned = PETSC_FALSE;
2630 CHKERR PetscOptionsGetBool(PETSC_NULL, "", "-is_partitioned",
2631 &is_partitioned, PETSC_NULL);
2632 if (is_partitioned) {
2633 CHKERR simple->loadFile();
2634 } else {
2635 if (m_field.get_comm_size() > 1 && true) {
2636 CHKERR simple->loadFile("", "");
2638 } else
2639 CHKERR simple->loadFile("");
2640 }
2641
2642 // Add meshsets with material and boundary conditions
2643 CHKERR m_field.getInterface<MeshsetsManager>()->setMeshsetFromFile();
2644
2645 CHKERR ex.loadMeshBlockSets();
2647 if (ex.data.scale_params)
2648 for (auto &mit : mat_blocks)
2649 CHKERR mit.second.scaleParameters();
2650
2651 CHKERR ex.runProblem();
2652 }
2654
2656}
std::string param_file
void simple(double P1[], double P2[], double P3[], double c[], const int N)
Definition: acoustic.cpp:69
#define CATCH_ERRORS
Catch errors.
Definition: definitions.h:372
#define CHKERR
Inline error check.
Definition: definitions.h:535
PetscErrorCode DMRegister_MoFEM(const char sname[])
Register MoFEM problem.
Definition: DMMoFEM.cpp:47
std::map< int, BlockParamData > mat_blocks
static char help[]
BlockParamData * cache
PetscErrorCode PetscOptionsGetBool(PetscOptions *, const char pre[], const char name[], PetscBool *bval, PetscBool *set)
MoFEMErrorCode getOptionsFromCommandLine()
static MoFEMErrorCode getAnalysisParameters()
static MoFEMErrorCode myMeshPartition(MoFEM::Interface &m_field)
virtual int get_comm_size() const =0
Core (interface) class.
Definition: Core.hpp:82
static MoFEMErrorCode Initialize(int *argc, char ***args, const char file[], const char help[])
Initializes the MoFEM database PETSc, MOAB and MPI.
Definition: Core.cpp:72
static MoFEMErrorCode Finalize()
Checks for options to be called at the conclusion of the program.
Definition: Core.cpp:112
Deprecated interface functions.
Interface for managing meshsets containing materials and boundary conditions.
Simple interface for fast problem set-up.
Definition: Simple.hpp:27
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface refernce to pointer of interface.

Variable Documentation

◆ cache

Definition at line 87 of file multifield_plasticity.cpp.

◆ help

char help[] = "...\n\n"
static

Definition at line 2603 of file multifield_plasticity.cpp.

◆ mat_blocks

std::map<int, BlockParamData> mat_blocks

Definition at line 88 of file multifield_plasticity.cpp.

◆ space_test

FieldSpace space_test = (TEST_H1_SPACE ? H1 : L2)

Definition at line 105 of file multifield_plasticity.cpp.

◆ TEST_H1_SPACE

constexpr bool TEST_H1_SPACE = false
constexpr

Definition at line 103 of file multifield_plasticity.cpp.

◆ zero_type

EntityType zero_type = TEST_H1_SPACE ? MBVERTEX : MBTET

Definition at line 104 of file multifield_plasticity.cpp.