v0.14.0 |
Set Dirichlet boundary conditions on displacements. More...
#include <users_modules/basic_finite_elements/src/DirichletBC.hpp>
Public Member Functions | |
DirichletDisplacementBc (MoFEM::Interface &m_field, const std::string &field_name, Mat Aij, Vec X, Vec F, string blockset_name="DISPLACEMENT") | |
DirichletDisplacementBc (MoFEM::Interface &m_field, const std::string &field_name, string blockset_name="DISPLACEMENT") | |
virtual MoFEMErrorCode | iNitialize () |
MoFEMErrorCode | preProcess () |
function is run at the beginning of loop More... | |
MoFEMErrorCode | operator() () |
function is run for every finite element More... | |
MoFEMErrorCode | postProcess () |
function is run at the end of loop More... | |
MoFEMErrorCode | getBcDataFromSetsAndBlocks (std::vector< DataFromBc > &bc_data) |
Get the Bc Data From Sets And Blocks object Use DISPLACEMENT blockset name (default) with 6 atributes: 1,2,3 are values of displacements x,y,z 4,5,6 are flags for x,y,z (0 or 1) More... | |
MoFEMErrorCode | getRotationBcFromBlock (std::vector< DataFromBc > &bc_data) |
Get the Rotation Bc From Block object Use ROTATION blockset name with 7 atributes: 1,2,3 are x,y,z coords of the center of rotation 4,5,6 are are angular velocities in x,y,z. More... | |
MoFEMErrorCode | calculateRotationForDof (VectorDouble3 &coords, DataFromBc &bc_data) |
Calculate displacements from rotation for particular dof. More... | |
MoFEMErrorCode | calculateRotationForDof (EntityHandle ent, DataFromBc &bc_data) |
MoFEMErrorCode | applyScaleBcData (DataFromBc &bc_data) |
Public Member Functions inherited from MoFEM::FEMethod | |
MoFEMErrorCode | query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const |
FEMethod ()=default | |
auto | getFEName () const |
get finite element name More... | |
auto | getDataDofsPtr () const |
auto | getDataVectorDofsPtr () const |
const FieldEntity_vector_view & | getDataFieldEnts () const |
boost::shared_ptr< FieldEntity_vector_view > & | getDataFieldEntsPtr () const |
auto & | getRowFieldEnts () const |
auto & | getRowFieldEntsPtr () const |
auto & | getColFieldEnts () const |
auto & | getColFieldEntsPtr () const |
auto | getRowDofsPtr () const |
auto | getColDofsPtr () const |
auto | getNumberOfNodes () const |
EntityHandle | getFEEntityHandle () const |
MoFEMErrorCode | getNodeData (const std::string field_name, VectorDouble &data, const bool reset_dofs=true) |
Public Member Functions inherited from MoFEM::BasicMethod | |
BasicMethod () | |
virtual | ~BasicMethod ()=default |
int | getNinTheLoop () const |
get number of evaluated element in the loop More... | |
int | getLoopSize () const |
get loop size More... | |
auto | getLoHiFERank () const |
Get lo and hi processor rank of iterated entities. More... | |
auto | getLoFERank () const |
Get upper rank in loop for iterating elements. More... | |
auto | getHiFERank () const |
Get upper rank in loop for iterating elements. More... | |
unsigned int | getFieldBitNumber (std::string field_name) const |
MoFEMErrorCode | copyBasicMethod (const BasicMethod &basic) |
Copy data from other base method to this base method. More... | |
boost::weak_ptr< CacheTuple > | getCacheWeakPtr () const |
Get the cache weak ptr object. More... | |
Public Member Functions inherited from MoFEM::KspMethod | |
KspMethod () | |
virtual | ~KspMethod ()=default |
MoFEMErrorCode | copyKsp (const KspMethod &ksp) |
copy data form another method More... | |
Public Member Functions inherited from MoFEM::PetscData | |
PetscData () | |
virtual | ~PetscData ()=default |
MoFEMErrorCode | copyPetscData (const PetscData &petsc_data) |
Public Member Functions inherited from MoFEM::UnknownInterface | |
template<class IFACE > | |
MoFEMErrorCode | registerInterface (bool error_if_registration_failed=true) |
Register interface. More... | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE *&iface) const |
Get interface reference to pointer of interface. More... | |
template<class IFACE > | |
MoFEMErrorCode | getInterface (IFACE **const iface) const |
Get interface pointer to pointer of interface. More... | |
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get interface pointer to pointer of interface. More... | |
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0> | |
IFACE | getInterface () const |
Get reference to interface. More... | |
template<class IFACE > | |
IFACE * | getInterface () const |
Function returning pointer to interface. More... | |
virtual | ~UnknownInterface ()=default |
Public Member Functions inherited from MoFEM::SnesMethod | |
SnesMethod () | |
virtual | ~SnesMethod ()=default |
MoFEMErrorCode | copySnes (const SnesMethod &snes) |
Copy snes data. More... | |
Public Member Functions inherited from MoFEM::TSMethod | |
TSMethod () | |
virtual | ~TSMethod ()=default |
MoFEMErrorCode | copyTs (const TSMethod &ts) |
Copy TS solver data. More... | |
Public Attributes | |
MoFEM::Interface & | mField |
const std::string | fieldName |
field name to set Dirichlet BC More... | |
double | dIag |
diagonal value set on zeroed column and rows More... | |
std::map< DofIdx, FieldData > | mapZeroRows |
std::vector< int > | dofsIndices |
std::vector< double > | dofsValues |
std::vector< double > | dofsXValues |
const std::string | blocksetName |
boost::ptr_vector< MethodForForceScaling > | methodsOp |
Public Attributes inherited from MoFEM::FEMethod | |
std::string | feName |
Name of finite element. More... | |
boost::shared_ptr< const NumeredEntFiniteElement > | numeredEntFiniteElementPtr |
boost::function< bool(FEMethod *fe_method_ptr)> | exeTestHook |
Tet if element to skip element. More... | |
Public Attributes inherited from MoFEM::BasicMethod | |
int | nInTheLoop |
number currently of processed method More... | |
int | loopSize |
local number oe methods to process More... | |
std::pair< int, int > | loHiFERank |
Llo and hi processor rank of iterated entities. More... | |
int | rAnk |
processor rank More... | |
int | sIze |
number of processors in communicator More... | |
const RefEntity_multiIndex * | refinedEntitiesPtr |
container of mofem dof entities More... | |
const RefElement_multiIndex * | refinedFiniteElementsPtr |
container of mofem finite element entities More... | |
const Problem * | problemPtr |
raw pointer to problem More... | |
const Field_multiIndex * | fieldsPtr |
raw pointer to fields container More... | |
const FieldEntity_multiIndex * | entitiesPtr |
raw pointer to container of field entities More... | |
const DofEntity_multiIndex * | dofsPtr |
raw pointer container of dofs More... | |
const FiniteElement_multiIndex * | finiteElementsPtr |
raw pointer to container finite elements More... | |
const EntFiniteElement_multiIndex * | finiteElementsEntitiesPtr |
const FieldEntityEntFiniteElementAdjacencyMap_multiIndex * | adjacenciesPtr |
boost::function< MoFEMErrorCode()> | preProcessHook |
Hook function for pre-processing. More... | |
boost::function< MoFEMErrorCode()> | postProcessHook |
Hook function for post-processing. More... | |
boost::function< MoFEMErrorCode()> | operatorHook |
Hook function for operator. More... | |
boost::movelib::unique_ptr< bool > | vecAssembleSwitch |
boost::movelib::unique_ptr< bool > | matAssembleSwitch |
boost::weak_ptr< CacheTuple > | cacheWeakPtr |
Public Attributes inherited from MoFEM::KspMethod | |
KSPContext | ksp_ctx |
Context. More... | |
KSP | ksp |
KSP solver. More... | |
Vec & | ksp_f |
Mat & | ksp_A |
Mat & | ksp_B |
Public Attributes inherited from MoFEM::PetscData | |
Switches | data_ctx |
Vec | f |
Mat | A |
Mat | B |
Vec | x |
Vec | x_t |
Vec | x_tt |
Public Attributes inherited from MoFEM::SnesMethod | |
SNESContext | snes_ctx |
SNES | snes |
snes solver More... | |
Vec & | snes_x |
state vector More... | |
Vec & | snes_f |
residual More... | |
Mat & | snes_A |
jacobian matrix More... | |
Mat & | snes_B |
preconditioner of jacobian matrix More... | |
Public Attributes inherited from MoFEM::TSMethod | |
TS | ts |
time solver More... | |
TSContext | ts_ctx |
PetscInt | ts_step |
time step number More... | |
PetscReal | ts_a |
shift for U_t (see PETSc Time Solver) More... | |
PetscReal | ts_aa |
shift for U_tt shift for U_tt More... | |
PetscReal | ts_t |
time More... | |
PetscReal | ts_dt |
time step size More... | |
Vec & | ts_u |
state vector More... | |
Vec & | ts_u_t |
time derivative of state vector More... | |
Vec & | ts_u_tt |
second time derivative of state vector More... | |
Vec & | ts_F |
residual vector More... | |
Mat & | ts_A |
Mat & | ts_B |
Preconditioner for ts_A. More... | |
Set Dirichlet boundary conditions on displacements.
Definition at line 57 of file DirichletBC.hpp.
DirichletDisplacementBc::DirichletDisplacementBc | ( | MoFEM::Interface & | m_field, |
const std::string & | field_name, | ||
Mat | Aij, | ||
Vec | X, | ||
Vec | F, | ||
string | blockset_name = "DISPLACEMENT" |
||
) |
Definition at line 37 of file DirichletBC.cpp.
DirichletDisplacementBc::DirichletDisplacementBc | ( | MoFEM::Interface & | m_field, |
const std::string & | field_name, | ||
string | blockset_name = "DISPLACEMENT" |
||
) |
Definition at line 51 of file DirichletBC.cpp.
MoFEMErrorCode DirichletDisplacementBc::applyScaleBcData | ( | DataFromBc & | bc_data | ) |
Definition at line 187 of file DirichletBC.cpp.
MoFEMErrorCode DirichletDisplacementBc::calculateRotationForDof | ( | EntityHandle | ent, |
DataFromBc & | bc_data | ||
) |
Definition at line 178 of file DirichletBC.cpp.
MoFEMErrorCode DirichletDisplacementBc::calculateRotationForDof | ( | VectorDouble3 & | coords, |
DataFromBc & | bc_data | ||
) |
Calculate displacements from rotation for particular dof.
dof | |
bc_data |
Definition at line 168 of file DirichletBC.cpp.
MoFEMErrorCode DirichletDisplacementBc::getBcDataFromSetsAndBlocks | ( | std::vector< DataFromBc > & | bc_data | ) |
Get the Bc Data From Sets And Blocks object Use DISPLACEMENT blockset name (default) with 6 atributes: 1,2,3 are values of displacements x,y,z 4,5,6 are flags for x,y,z (0 or 1)
bc_data |
Definition at line 64 of file DirichletBC.cpp.
MoFEMErrorCode DirichletDisplacementBc::getRotationBcFromBlock | ( | std::vector< DataFromBc > & | bc_data | ) |
Get the Rotation Bc From Block object Use ROTATION blockset name with 7 atributes: 1,2,3 are x,y,z coords of the center of rotation 4,5,6 are are angular velocities in x,y,z.
bc_data |
Definition at line 133 of file DirichletBC.cpp.
|
virtual |
Reimplemented in DirichletDisplacementRemoveDofsBc, DirichletFixFieldAtEntitiesBc, DirichletTemperatureBc, DirichletSpatialPositionsBc, and AnalyticalDirichletBC::DirichletBC.
Definition at line 198 of file DirichletBC.cpp.
|
inlinevirtual |
function is run for every finite element
It is used to calculate element local matrices and assembly. It can be used for post-processing.
Reimplemented from MoFEM::BasicMethod.
Reimplemented in DirichletDisplacementRemoveDofsBc.
Definition at line 80 of file DirichletBC.hpp.
|
virtual |
function is run at the end of loop
It is used to assembly matrices and vectors, calculating global variables, f.e. total internal energy, ect.
Iterating over dofs: Example1 iterating over dofs in row by name of the field for(IT_GET_FEROW_BY_NAME_DOFS_FOR_LOOP(this,"DISPLACEMENT",it)) { ... }
Reimplemented from MoFEM::BasicMethod.
Reimplemented in DirichletDisplacementRemoveDofsBc, and DirichletFixFieldAtEntitiesBc.
Definition at line 281 of file DirichletBC.cpp.
|
virtual |
function is run at the beginning of loop
It is used to zeroing matrices and vectors, calculation of shape functions on reference element, preprocessing boundary conditions, etc.
Reimplemented from MoFEM::BasicMethod.
Reimplemented in DirichletDisplacementRemoveDofsBc, and DirichletFixFieldAtEntitiesBc.
Definition at line 264 of file DirichletBC.cpp.
const std::string DirichletDisplacementBc::blocksetName |
Definition at line 74 of file DirichletBC.hpp.
double DirichletDisplacementBc::dIag |
diagonal value set on zeroed column and rows
Definition at line 61 of file DirichletBC.hpp.
std::vector<int> DirichletDisplacementBc::dofsIndices |
Definition at line 71 of file DirichletBC.hpp.
std::vector<double> DirichletDisplacementBc::dofsValues |
Definition at line 72 of file DirichletBC.hpp.
std::vector<double> DirichletDisplacementBc::dofsXValues |
Definition at line 73 of file DirichletBC.hpp.
const std::string DirichletDisplacementBc::fieldName |
field name to set Dirichlet BC
Definition at line 60 of file DirichletBC.hpp.
std::map<DofIdx, FieldData> DirichletDisplacementBc::mapZeroRows |
Definition at line 70 of file DirichletBC.hpp.
boost::ptr_vector<MethodForForceScaling> DirichletDisplacementBc::methodsOp |
Definition at line 76 of file DirichletBC.hpp.
MoFEM::Interface& DirichletDisplacementBc::mField |
Definition at line 59 of file DirichletBC.hpp.