44 #ifdef __PARALLEL_MODE 49 #include <unordered_map> 56 #define _IFT_Domain_type "domain" 57 #define _IFT_Domain_ndofman "ndofman" 58 #define _IFT_Domain_nelem "nelem" 59 #define _IFT_Domain_nmat "nmat" 60 #define _IFT_Domain_ncrosssect "ncrosssect" 61 #define _IFT_Domain_nbc "nbc" 62 #define _IFT_Domain_nic "nic" 63 #define _IFT_Domain_nfunct "nltf" 64 #define _IFT_Domain_nset "nset" 65 #define _IFT_Domain_nbarrier "nbarrier" 66 #define _IFT_Domain_topology "topology" 67 #define _IFT_Domain_nxfemman "nxfemman" 68 #define _IFT_Domain_ncontactman "ncontactman" 69 #define _IFT_Domain_numberOfSpatialDimensions "nsd" 70 #define _IFT_Domain_nfracman "nfracman" 71 #define _IFT_Domain_axisymmetric "axisymm" 78 class GeneralBoundaryCondition;
79 class InitialCondition;
87 class ConnectivityTable;
89 class SpatialLocalizer;
90 class NodalRecoveryModel;
91 class NonlocalBarrier;
92 class DomainTransactionManager;
94 class TopologyDescription;
97 class FractureManager;
98 class oofegGraphicContext;
99 class ProcessCommunicator;
100 class ContactManager;
127 std :: vector< std :: unique_ptr< GeneralBoundaryCondition > >
bcList;
129 std :: vector< std :: unique_ptr< InitialCondition > >
icList;
133 std :: vector< std :: unique_ptr< Set > >
setList;
226 #ifdef __PARALLEL_MODE 244 std :: list< Element * >recvElemList;
279 std :: vector< std :: unique_ptr< Element > > &
giveElements() {
return this->elementList; }
285 Element *giveGlobalElement(
int n);
291 int giveElementPlaceInArray(
int iGlobalElNum)
const;
297 int giveDofManPlaceInArray(
int iGlobalDofManNum)
const;
302 const IntArray &giveElementsWithMaterialNum(
int iMaterialNum)
const;
315 Load *giveLoad(
int n);
322 std :: vector< std :: unique_ptr< GeneralBoundaryCondition > > &
giveBcs() {
return this->bcList; }
329 std :: vector< std :: unique_ptr< InitialCondition > > &
giveIcs() {
return this->icList; }
337 std :: vector< std :: unique_ptr< Function > > &
giveFunctions() {
return this->functionList; }
344 std :: vector< std :: unique_ptr< Material > > &
giveMaterials() {
return this->materialList; }
351 std :: vector< std :: unique_ptr< CrossSection > > &
giveCrossSections() {
return this->crossSectionList; }
364 std :: vector< std :: unique_ptr< Set > > &
giveSets() {
return this->setList; }
374 if ( n < 1 || n > (
int)dofManagerList.size() ) {
378 Node *
node =
reinterpret_cast< Node *
>( dofManagerList[n-1].get() );
383 return reinterpret_cast< Node *
>( dofManagerList[n-1].get() );
400 std :: vector< std :: unique_ptr< DofManager > > &
giveDofManagers() {
return this->dofManagerList; }
424 void postInitialize();
453 int giveNumberOfSpatialDimensions();
455 bool isAxisymmetric();
460 void resizeDofManagers(
int _newSize);
463 void resizeElements(
int _newSize);
465 void resizeCrossSectionModels(
int _newSize);
467 void resizeMaterials(
int _newSize);
469 void resizeNonlocalBarriers(
int _newSize);
471 void resizeBoundaryConditions(
int _newSize);
473 void resizeInitialConditions(
int _newSize);
475 void resizeFunctions(
int _newSize);
477 void resizeSets(
int _newSize);
482 void setElement(
int i,
Element *obj);
486 void setMaterial(
int i,
Material *obj);
494 void setFunction(
int i,
Function *obj);
496 void setSet(
int i,
Set *obj);
502 bool hasXfemManager();
505 bool hasContactManager();
508 bool hasFractureManager();
519 void clearBoundaryConditions();
521 void clearElements();
558 const IntArray &giveDefaultNodeDofIDArry();
569 int checkConsistency();
592 int giveNextFreeDofID(
int increment = 1);
596 void resetFreeDofID();
637 #ifdef __PARALLEL_MODE 663 void initGlobalDofManMap(
bool forceinit =
false);
664 void initGlobalElementMap(
bool forceinit =
false);
669 void renumberDofManagers();
671 void renumberElements();
682 int dofmanGlobal2Local(
int _globnum);
683 int elementGlobal2Local(
int _globnum);
696 void resolveDomainDofsDefaults(
const char *);
699 std :: string
errorInfo(
const char *func)
const;
706 void BuildElementPlaceInArrayMap();
712 void BuildDofManPlaceInArrayMap();
718 void BuildMaterialToElementMap();
std::vector< std::unique_ptr< Function > > & giveFunctions()
The base class for all spatial localizers.
void setNextFreeDofID(int dofid)
This class keeps track of applied boundary conditions on individual entities.
int giveNumberOfSets() const
Returns number of sets.
std::vector< std::unique_ptr< GeneralBoundaryCondition > > bcList
Boundary condition list.
Abstract base class for all nonlocal barriers.
int nsd
Number of spatial dimensions.
Class implementing general initial condition.
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
int giveNumberOfBoundaryConditions() const
Returns number of boundary conditions in domain.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
std::vector< std::unique_ptr< Set > > & giveSets()
std::unique_ptr< SpatialLocalizer > spatialLocalizer
Spatial Localizer.
long StateCounterType
StateCounterType type used to indicate solution state.
int giveNumberOfInitialConditions() const
Returns number of initial conditions in domain.
std::unique_ptr< XfemManager > xfemManager
XFEM Manager.
void setNonlocalUpdateStateCounter(StateCounterType val)
sets the value of nonlocalUpdateStateCounter
std::unique_ptr< FractureManager > fracManager
Fracture Manager.
const char * giveClassName() const
Returns class name of the receiver.
Abstract base class for all finite elements.
std::vector< std::unique_ptr< Set > > setList
Set list.
Base class for dof managers.
std::vector< std::unique_ptr< DofManager > > & giveDofManagers()
This class manages the fracture mechanics part.
Represents output manager.
int giveNumber()
Returns domain number.
Class representing the abstraction for input data source.
int giveNumberOfElements() const
Returns number of elements in domain.
std::unique_ptr< NodalRecoveryModel > smoother
nodal recovery object associated to receiver.
std::vector< std::unique_ptr< NonlocalBarrier > > nonlocalBarrierList
Nonlocal barrier list.
domainType giveDomainType()
Returns domain type.
Class implementing an array of integers.
IntArray defaultNodeDofIDArry
Default dofs for a node (depends on the domain type).
Base abstract class representing cross section in finite element mesh.
std::vector< std::unique_ptr< Material > > materialList
Material list.
std::unique_ptr< TopologyDescription > topology
Topology description.
std::unique_ptr< OutputManager > outputManager
Output manager, allowing to filter the produced output.
std::map< int, DofManager * > dmanMap
Global dof manager map (index is global of man number).
Class representing domain transaction manager.
std::vector< std::unique_ptr< GeneralBoundaryCondition > > & giveBcs()
EntityRenumberingScheme
Type allowing to specify the required renumbering scheme; One can have a renumbering scheme for dof m...
StateCounterType giveNonlocalUpdateStateCounter()
Returns the value of nonlocalUpdateStateCounter.
std::vector< std::unique_ptr< Material > > & giveMaterials()
void setDomainType(domainType _dType)
Sets domain type.
std::vector< std::unique_ptr< DofManager > > dofManagerList
Dof manager list.
Set of elements, boundaries, edges and/or nodes.
std::vector< std::unique_ptr< Function > > functionList
Load time function list.
int giveNumberOfCrossSectionModels() const
Returns number of cross section models in domain.
Class representing connectivity table.
int giveNumberOfMaterialModels() const
Returns number of material models in domain.
std::unique_ptr< DomainTransactionManager > transactionManager
Transaction manager.
std::vector< std::unique_ptr< InitialCondition > > & giveIcs()
Abstract base class for all boundary conditions of problem.
Abstract base class for all material models.
bool elementMapInitialized
dmanMap init flag.
BCTracker bcTracker
BC tracker (keeps track of BCs applied wia sets to components)
int serialNumber
Domain serial (version) number. Used for domain version identification during Adaptive computations...
The base class for all error estimation or error indicator algorithms.
int giveSerialNumber()
Returns domain serial (version) number.
std::vector< std::unique_ptr< CrossSection > > crossSectionList
Cross section list.
Abstract base class representing a function with vector input and output.
This class manages the xfem part.
std::vector< std::unique_ptr< Element > > elementList
Element list.
std::unordered_map< int, int > mDofManPlaceInArray
Map from a dofmans's global number to its place in the dofman array.
EngngModel * engineeringModel
Associated Engineering model.
int giveNumberOfFunctions() const
Returns number of load time functions in domain.
Class implementing element side having some DOFs in finite element mesh.
bool dmanMapInitialized
dmanMap init flag.
std::unordered_map< int, int > mElementPlaceInArray
Map from an element's global number to its place in the element array.
int giveNumberOfNonlocalBarriers() const
Returns number of nonlocal integration barriers.
int giveMaxDofID()
Gives the current maximum dof ID used.
Abstract class for topology description.
domainType dType
Domain type.
int giveNumberOfRegions() const
Returns number of regions. Currently regions corresponds to cross section models. ...
void setNumber(int nn)
Returns domain number.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
std::unique_ptr< ContactManager > contactManager
Contact Manager.
std::string errorInfo(const char *func)
std::vector< std::unique_ptr< InitialCondition > > icList
Initial condition list.
std::vector< std::unique_ptr< Element > > & giveElements()
Load is base abstract class for all loads.
Abstract base class representing the "problem" under consideration.
Node * giveNode(int n)
Service for accessing particular domain node.
the oofem namespace is to define a context or scope in which all oofem names are defined.
void SetEngngModel(EngngModel *ipEngngModel)
StateCounterType nonlocalUpdateStateCounter
For nonlocal models of integral type it is necessary, mainly due to resulting efficiency, to compute variable(s) which are nonlocally averaged in advance, before average process begins.
Class implementing node in finite element mesh.
The base class for all recovery models, which perform nodal averaging or projection processes for int...
std::unordered_map< int, IntArray > mMapMaterialNum2El
Map from material number to elements that have the given material number.
std::unique_ptr< ConnectivityTable > connectivityTable
Domain connectivity table.
int freeDofID
Keeps track of next free dof ID (for special Lagrange multipliers, XFEM and such) ...
std::map< int, Element * > elementMap
Global element map (index is global of man number).
std::vector< std::unique_ptr< CrossSection > > & giveCrossSections()