xc
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 CommandEntity;
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 //
146  {
147  private:
148  LinearSOESolver *lastLinearSolver;
149  DomainSolver *lastDomainSolver;
150  public:
152 
153  virtual Actor* getNewActor(int classTag, Channel *theChannel);
154 
155  virtual PartitionedModelBuilder *getPtrNewPartitionedModelBuilder(Subdomain &theSub, int classTag);
156 
157  virtual GraphNumberer *getPtrNewGraphNumberer(int classTag);
158  virtual Vertex *getNewVertex(int classTag);
159 
160  // methods to get new modelling class objects
161  virtual Element *getNewElement(int classTag);
162  virtual Node *getNewNode(int classTag);
163  virtual MFreedom_Constraint *getNewMP(int classTag);
164  virtual MRMFreedom_Constraint *getNewMRMP(int classTag);
165  virtual SFreedom_Constraint *getNewSP(int classTag);
166  virtual NodalLoad *getNewNodalLoad(int classTag);
167  virtual ElementalLoad *getNewElementalLoad(int classTag);
168 
169  virtual CrdTransf2d *getNewCrdTransf2d(int classTag);
170  virtual CrdTransf3d *getNewCrdTransf3d(int classTag);
171  CrdTransf *getNewCrdTransf(int classTag);
172  ShellCrdTransf3dBase *getNewShellCrdTransf3d(int classTag);
173 
174  virtual BeamIntegration *getNewBeamIntegration(int classTag);
175 
176  virtual UniaxialMaterial *getNewUniaxialMaterial(int classTag);
177  virtual SectionForceDeformation *getNewSection(int classTag);
178  virtual NDMaterial *getNewNDMaterial(int classTag);
179  virtual Fiber *getNewFiber(int classTag);
180  virtual FrictionModel *getNewFrictionModel(int classTag);
181  virtual Material *getNewMaterial(int classTag);
182 
183  virtual ConvergenceTest *getNewConvergenceTest(CommandEntity *owr,int classTag);
184  virtual NodeLocker *getNewNodeLocker(int classTag);
185  virtual LoadPattern *getNewLoadPattern(int classTag);
186  virtual LoadCombination *getNewLoadCombination(int classTag);
187  virtual GroundMotion *getNewGroundMotion(int classTag);
188  virtual TimeSeries *getNewTimeSeries(int classTag);
189  virtual TimeSeriesIntegrator *getNewTimeSeriesIntegrator(int classTag);
190 
191  // matrix vector and id objects
192  virtual Matrix *getPtrNewMatrix(int classTag, int noRows, int noCols);
193  virtual Vector *getPtrNewVector(int classTag, int size);
194  virtual ID *getPtrNewID(int classTag, int size);
195 
196  // methods for ouput objects
197  virtual DataOutputHandler *getPtrNewDataOutputHandler(int classTag);
198  virtual Recorder *getPtrNewRecorder(int classTag);
199 
200 
201  // methods to get new analysis objects
202  virtual ConstraintHandler *getNewConstraintHandler(int classTag);
203  virtual DOF_Numberer *getNewNumberer(int classTag);
204  virtual AnalysisModel *getNewAnalysisModel(int classTag);
205  virtual LineSearch *getLineSearch(int classTag);
206  virtual EquiSolnAlgo *getNewEquiSolnAlgo(int classTag);
207  virtual DomainDecompAlgo *getNewDomainDecompAlgo(int classTag);
208  virtual StaticIntegrator *getNewStaticIntegrator(int classTag);
209  virtual TransientIntegrator *getNewTransientIntegrator(int classTag);
210  virtual IncrementalIntegrator *getNewIncrementalIntegrator(int classTag);
211 
212  virtual LinearSOE *getNewLinearSOE(int classTagSOE, int classTagSolver);
213  virtual EigenSOE *getNewEigenSOE(int classTagSOE);
214  virtual LinearSOESolver *getNewLinearSolver(void);
215 
216  virtual LinearSOE *getPtrNewDDLinearSOE(int classTagSOE,int classTagDDSolver);
217  virtual DomainSolver *getNewDomainSolver(void);
218 
219  virtual DomainDecompositionAnalysis *getNewDomainDecompAnalysis(int classTag, Subdomain &theDomain);
220 
221  virtual Subdomain *getSubdomainPtr(int classTag);
222 
223 
224  virtual int addUniaxialMaterial(int classTag, const char *lib, const char *funcName, UniaxialMaterial *(*)(void));
225  };
226 } // end of XC namespace
227 
228 #endif
229 
230 
Base class for force deformation section models.
Definition: SectionForceDeformation.h:86
{staticFormTaylor} {equation}
Definition: StaticIntegrator.h:137
Base class for DOF numbererers.
Definition: DOF_Numberer.h:93
Float vector abstraction.
Definition: Vector.h:93
Domain enclosed in another domain.
Definition: Subdomain.h:101
Vertex of a graph.
Definition: Vertex.h:79
ConstraintHandlers enforce the single and multi freedom constraints that exist in the domain by creat...
Definition: ConstraintHandler.h:92
Base class for eigenproblem systems of equations.
Definition: EigenSOE.h:63
Linear system of equations.
Definition: LinearSOE.h:91
CrdTransf provides the abstraction of a frame coordinate transformation.
Definition: CrdTransf.h:87
An Recorder object is used in the program to store/restore information at each commit().
Definition: Recorder.h:86
Base class for uniaxial materials.
Definition: UniaxialMaterial.h:92
Solution algorithm for domain decomposition analysis.
Definition: DomainDecompAlgo.h:88
Base class for materials.
Definition: Material.h:91
FEM_ObjectBroker is is an object broker class for the finite element method.
Definition: FEM_ObjectBroker.h:145
Vector of integers.
Definition: ID.h:93
A LoadPattern object is used to to store reference loads and single point constraints and a TimeSerie...
Definition: LoadPattern.h:93
Base class for the finite elements.
Definition: Element.h:109
Base class for 2D coordinate transformation.
Definition: CrdTransf2d.h:77
Base class for 3D coordinate transformations.
Definition: ShellCrdTransf3dBase.h:48
virtual Recorder * getPtrNewRecorder(int classTag)
Returns an object of type Recorder.
Definition: FEM_ObjectBroker.cpp:925
Section fiber.
Definition: Fiber.h:89
Used when performing a domain decomposition analysis.
Definition: DomainDecompositionAnalysis.h:90
Container for FE_Element and DOF_Group objects created by the constraint handler. ...
Definition: AnalysisModel.h:133
Single freedom constraint.
Definition: SFreedom_Constraint.h:84
Base class for ground motions.
Definition: GroundMotion.h:83
Base class for integration on beam elements.
Definition: BeamIntegration.h:73
Time integration of time series.
Definition: TimeSeriesIntegrator.h:74
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:96
Definition: FrictionModel.h:71
Channel is an abstract base class which defines the channel interface.
Definition: Channel.h:91
EquiSolnAlgo is an abstract base class, i.e.
Definition: EquiSolnAlgo.h:88
Base class for 2D and 3D materials.
Definition: NDMaterial.h:97
convergence test.
Definition: ConvergenceTest.h:80
Numberer for problem&#39;s degrees of freedom.
Definition: GraphNumberer.h:85
Multiple retained nodes constraint.
Definition: MRMFreedom_Constraint.h:58
Single freedom constraints that make part of a load pattern.
Definition: NodeLocker.h:44
LineSearch is an abstract base class, i.e.
Definition: LineSearch.h:85
The PartitionedModelBuilder class is an abstract class.
Definition: PartitionedModelBuilder.h:86
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Base class of the solvers for linear system of equations.
Definition: LinearSOESolver.h:86
Time variation of loads.
Definition: TimeSeries.h:81
Remote object associated with a shadow (local) object.
Definition: Actor.h:104
Matrix of floats.
Definition: Matrix.h:108
used to solve a system of equations and to do static condensation operations on the linear system of ...
Definition: DomainSolver.h:82
Multi-freedom constraint.
Definition: MFreedom_Constraint.h:110
Base class for loads over elements.
Definition: ElementalLoad.h:77
Load pattern combination (1.5*PP+1.0*CP+1.6*SC ...).
Definition: LoadCombination.h:43
Mesh node.
Definition: Node.h:110
Load over a node.
Definition: NodalLoad.h:82
Definition: DataOutputHandler.h:61
Base class for 3D coordinate transformation.
Definition: CrdTransf3d.h:80