XC Open source finite element analysis program
FEM_ObjectBroker.h
1 //----------------------------------------------------------------------------
2 // XC program; finite element analysis code
3 // for structural analysis and design.
4 //
5 // Copyright (C) Luis Claudio Pérez Tato
6 //
7 // This program derives from OpenSees <http://opensees.berkeley.edu>
8 // developed by the «Pacific earthquake engineering research center».
9 //
10 // Except for the restrictions that may arise from the copyright
11 // of the original program (see copyright_opensees.txt)
12 // software es libre: usted puede redistribuirlo y/o modificarlo
13 // under the terms of the GNU General Public License published by
14 // the Free Software Foundation, either version 3 of the License, or
15 // (at your option) any later version.
16 //
17 // This software is distributed in the hope that it will be useful, but
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO.
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // junto a este programa.
24 // If not, see <http://www.gnu.org/licenses/>.
25 //----------------------------------------------------------------------------
26 /* ****************************************************************** **
27 ** OpenSees - Open System for Earthquake Engineering Simulation **
28 ** Pacific Earthquake Engineering Research Center **
29 ** **
30 ** **
31 ** (C) Copyright 1999, The Regents of the University of California **
32 ** All Rights Reserved. **
33 ** **
34 ** Commercial use of this program without express permission of the **
35 ** University of California, Berkeley, is strictly prohibited. See **
36 ** file 'COPYRIGHT' in main directory for information on usage and **
37 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
38 ** **
39 ** Developed by: **
40 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
41 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
42 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
43 ** **
44 ** ****************************************************************** */
45 
46 // $Revision: 1.5 $
47 // $Date: 2005/11/22 19:40:05 $
48 // $Source: /usr/local/cvs/OpenSees/SRC/actor/objectBroker/FEM_ObjectBroker.h,v $
49 
50 
51 // Written: fmk
52 // Revision: A
53 //
54 // Purpose: This file contains the class definition for FEM_ObjectBroker.
55 // FEM_ObjectBroker is is an object broker class for the finite element
56 // method. All methods are virtual to allow for subclasses; which can be
57 // used by programmers when introducing new subclasses of the main objects.
58 //
59 // What: "@(#) FEM_ObjectBroker.h, revA"
60 
61 #ifndef FEM_ObjectBroker_h
62 #define FEM_ObjectBroker_h
63 
64 #include "utility/actor/objectBroker/ObjectBroker.h"
65 class EntCmd;
66 
67 namespace XC {
68 class Channel;
69 
70 class GraphNumberer;
71 class Vertex;
72 
73 class Element;
74 class Node;
75 class MFreedom_Constraint;
76 class MRMFreedom_Constraint;
77 class SFreedom_Constraint;
78 class NodeLocker;
79 class NodalLoad;
80 class ElementalLoad;
81 class ElementEdgeLoad;
82 class LoadPattern;
83 class LoadCombination;
84 class TimeSeries;
85 class TimeSeriesIntegrator;
86 
87 class Matrix;
88 class Vector;
89 class ID;
90 class Subdomain;
91 class ConstraintHandler;
92 class DOF_Numberer;
93 class AnalysisModel;
94 class EquiSolnAlgo;
95 class DomainDecompAlgo;
96 class StaticIntegrator;
97 class TransientIntegrator;
98 class IncrementalIntegrator;
99 
100 class LinearSOE;
101 class EigenSOE;
102 class DomainSolver;
103 class DomainDecompositionAnalysis;
104 class LinearSOESolver;
105 class PartitionedModelBuilder;
106 class LineSearch;
107 
108 class CrdTransf;
109 class CrdTransf2d;
110 class CrdTransf3d;
111 class ShellCrdTransf3dBase;
112 
113 class BeamIntegration;
114 
115 class UniaxialMaterial;
116 class SectionForceDeformation;
117 class NDMaterial;
118 class Material;
119 class Fiber;
120 class FrictionModel;
121 
122 class ConvergenceTest;
123 class SectionForceDeformation;
124 class GroundMotion;
125 
126 class DataOutputHandler;
127 class Recorder;
128 
129 class Actor;
130 
131 class Parameter;
132 
134 //
139  {
140  private:
141  LinearSOESolver *lastLinearSolver;
142  DomainSolver *lastDomainSolver;
143  public:
145 
146  virtual Actor*getNewActor(int classTag, Channel *theChannel);
147 
148  virtual PartitionedModelBuilder *
149  getPtrNewPartitionedModelBuilder(Subdomain &theSub,
150  int classTag);
151 
152  virtual GraphNumberer *getPtrNewGraphNumberer(int classTag);
153  virtual Vertex *getNewVertex(int classTag);
154 
155  // methods to get new modelling class objects
156  virtual Element *getNewElement(int classTag);
157  virtual Node *getNewNode(int classTag);
158  virtual MFreedom_Constraint *getNewMP(int classTag);
159  virtual MRMFreedom_Constraint *getNewMRMP(int classTag);
160  virtual SFreedom_Constraint *getNewSP(int classTag);
161  virtual NodalLoad *getNewNodalLoad(int classTag);
162  virtual ElementalLoad *getNewElementalLoad(int classTag);
163 
164  virtual CrdTransf2d *getNewCrdTransf2d(int classTag);
165  virtual CrdTransf3d *getNewCrdTransf3d(int classTag);
166  CrdTransf *getNewCrdTransf(int classTag);
167  ShellCrdTransf3dBase *getNewShellCrdTransf3d(int classTag);
168 
169  virtual BeamIntegration *getNewBeamIntegration(int classTag);
170 
171  virtual UniaxialMaterial *getNewUniaxialMaterial(int classTag);
172  virtual SectionForceDeformation *getNewSection(int classTag);
173  virtual NDMaterial *getNewNDMaterial(int classTag);
174  virtual Fiber *getNewFiber(int classTag);
175  virtual FrictionModel *getNewFrictionModel(int classTag);
176  virtual Material *getNewMaterial(int classTag);
177 
178  virtual ConvergenceTest *getNewConvergenceTest(EntCmd *owr,int classTag);
179  virtual NodeLocker *getNewNodeLocker(int classTag);
180  virtual LoadPattern *getNewLoadPattern(int classTag);
181  virtual LoadCombination *getNewLoadCombination(int classTag);
182  virtual GroundMotion *getNewGroundMotion(int classTag);
183  virtual TimeSeries *getNewTimeSeries(int classTag);
184  virtual TimeSeriesIntegrator *getNewTimeSeriesIntegrator(int classTag);
185 
186  // matrix vector and id objects
187  virtual Matrix *getPtrNewMatrix(int classTag, int noRows, int noCols);
188  virtual Vector *getPtrNewVector(int classTag, int size);
189  virtual ID *getPtrNewID(int classTag, int size);
190 
191  // methods for ouput objects
192  virtual DataOutputHandler *getPtrNewDataOutputHandler(int classTag);
193  virtual Recorder *getPtrNewRecorder(int classTag);
194 
195 
196  // methods to get new analysis objects
197  virtual ConstraintHandler *getNewConstraintHandler(int classTag);
198  virtual DOF_Numberer *getNewNumberer(int classTag);
199  virtual AnalysisModel *getNewAnalysisModel(int classTag);
200  virtual LineSearch *getLineSearch(int classTag);
201  virtual EquiSolnAlgo *getNewEquiSolnAlgo(int classTag);
202  virtual DomainDecompAlgo *getNewDomainDecompAlgo(int classTag);
203  virtual StaticIntegrator *getNewStaticIntegrator(int classTag);
204  virtual TransientIntegrator *getNewTransientIntegrator(int classTag);
205  virtual IncrementalIntegrator *getNewIncrementalIntegrator(int classTag);
206 
207  virtual LinearSOE *getNewLinearSOE(int classTagSOE, int classTagSolver);
208  virtual EigenSOE *getNewEigenSOE(int classTagSOE);
209  virtual LinearSOESolver *getNewLinearSolver(void);
210 
211  virtual LinearSOE *getPtrNewDDLinearSOE(int classTagSOE,int classTagDDSolver);
212  virtual DomainSolver *getNewDomainSolver(void);
213 
214  virtual DomainDecompositionAnalysis *getNewDomainDecompAnalysis(int classTag, Subdomain &theDomain);
215 
216  virtual Subdomain *getSubdomainPtr(int classTag);
217 
218 
219  virtual int addUniaxialMaterial(int classTag, const char *lib, const char *funcName, UniaxialMaterial *(*)(void));
220  };
221 } // end of XC namespace
222 
223 #endif
224 
225 
CrdTransf provides the abstraction of a frame coordinate transformation. It is an abstract base class...
Definition: CrdTransf.h:87
A LoadPattern object is used to to store reference loads and single point constraints and a TimeSerie...
Definition: LoadPattern.h:87
Single freedom constraints that make part of a load pattern.
Definition: NodeLocker.h:44
Definition: Actor.h:90
Base class for static integrators.
Definition: StaticIntegrator.h:83
Base class for DOF numbererers.
Definition: DOF_Numberer.h:84
Base class for materials.
Definition: Material.h:85
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:87
EquiSolnAlgo is an abstract base class, i.e. no objects of it&#39;s type can be created. Its subclasses deifine the sequence of operations to be performed in the analysis by static equilibrium of a finite element model.
Definition: EquiSolnAlgo.h:85
Base class for 2D and 3D materials.
Definition: NDMaterial.h:91
Solution of the linear system of equations.
Definition: LinearSOESolver.h:82
Definition: Vector.h:82
Time integration of time series. A TimeSeriesIntegrator describes the numerical integration of a grou...
Definition: TimeSeriesIntegrator.h:74
LineSearch is an abstract base class, i.e. no objects of it&#39;s type can be created. Its subclasses seek to find a better solution to R(U)=0 than the solution Ui-1 + delta Ui would give, typically Ui = Ui-1 + factor * delta Ui.
Definition: LineSearch.h:85
Definition: PartitionedModelBuilder.h:76
used to solve a system of equations and to do static condensation operations on the linear system of ...
Definition: DomainSolver.h:79
Mesh node.
Definition: Node.h:99
Load pattern combination (1.5*PP+1.0*CP+1.6*SC ...).
Definition: LoadCombination.h:43
Base class for eigenproblem systems of equations.
Definition: EigenSOE.h:63
FEM_ObjectBroker is is an object broker class for the finite element method. All methods are virtual ...
Definition: FEM_ObjectBroker.h:138
convergence test.
Definition: ConvergenceTest.h:75
Base calass for the finite elements.
Definition: Element.h:104
Base class for loads over elements.
Definition: ElementalLoad.h:73
Base class for 3D coordinate transformation.
Definition: CrdTransf3d.h:80
Vertex of a graph.
Definition: Vertex.h:73
Definition: ID.h:77
An Recorder object is used in the program to store/restore information at each commit().
Definition: Recorder.h:79
Numberer for problem&#39;s degrees of freedom.
Definition: GraphNumberer.h:78
Definition: Subdomain.h:87
Multiple retained nodes constraint.
Definition: MRMFreedom_Constraint.h:58
Used when performing a domain decomposition analysis. It provides methods which can be invoked by a s...
Definition: DomainDecompositionAnalysis.h:81
Definition: Matrix.h:82
Definition: FrictionModel.h:71
Channel is an abstract base class which defines the channel interface. A channel is a point of commun...
Definition: Channel.h:85
Linea system of equations. This is the class definition for LinearSOE. LinearSOE is an abstract base ...
Definition: LinearSOE.h:86
virtual Recorder * getPtrNewRecorder(int classTag)
Returns a objeto de tipo Recorder.
Definition: FEM_ObjectBroker.cpp:940
Section fiber.
Definition: Fiber.h:89
Definition: DataOutputHandler.h:61
Los objetos de esta clase, dan acceso a los objetos FE_Element y DOF_Group creados por el Constraint ...
Definition: AnalysisModel.h:113
Multi-freedom constraint. Objectt of this class store the information for a multifreedom constraint...
Definition: MFreedom_Constraint.h:84
Base class for ground motions.
Definition: GroundMotion.h:83
Base class for force deformation section models. Constitutive equations of the section.
Definition: SectionForceDeformation.h:86
ConstraintHandlers enforce the single and multi freedom constraints that exist in the domain by creat...
Definition: ConstraintHandler.h:94
Single freedom constraint.
Definition: SFreedom_Constraint.h:79
Load over a node.
Definition: NodalLoad.h:76
Base class for 2D coordinate transformation.
Definition: CrdTransf2d.h:77
================================================================================
Definition: ContinuaReprComponent.h:34
Solution algorithm for domain decomposition.
Definition: DomainDecompAlgo.h:83
Time variation of loads.A TimeSeries object is used to determine the load factor to be applied to the...
Definition: TimeSeries.h:81
Base class for 3D coordinate transformations.
Definition: ShellCrdTransf3dBase.h:48
Base class for integration on beam elements.
Definition: BeamIntegration.h:73
Base class for dynamic equations of motion integrators.
Definition: TransientIntegrator.h:84
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:88