00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef FEM_ObjectBroker_h
00038 #define FEM_ObjectBroker_h
00039
00040 #include<ObjectBroker.h>
00041
00042 class Element;
00043 class Node;
00044 class MP_Constraint;
00045 class SP_Constraint;
00046 class NodalLoad;
00047 class ElementalLoad;
00048 class LoadPattern;
00049 class TimeSeries;
00050 class TimeSeriesIntegrator;
00051
00052 class Matrix;
00053 class Vector;
00054 class ID;
00055 class Subdomain;
00056 class ConstraintHandler;
00057 class DOF_Numberer;
00058 class AnalysisModel;
00059 class EquiSolnAlgo;
00060 class DomainDecompAlgo;
00061 class StaticIntegrator;
00062 class TransientIntegrator;
00063 class IncrementalIntegrator;
00064 class LinearSOE;
00065 class DomainSolver;
00066 class DomainDecompositionAnalysis;
00067 class LinearSOESolver;
00068 class PartitionedModelBuilder;
00069
00070 class CrdTransf2d;
00071 class CrdTransf3d;
00072
00073 class BeamIntegration;
00074
00075 class UniaxialMaterial;
00076 class SectionForceDeformation;
00077 class NDMaterial;
00078 class Fiber;
00079
00080 class ConvergenceTest;
00081 class SectionForceDeformation;
00082 class GroundMotion;
00083 class OPS_Stream;
00084 class Recorder;
00085
00086 class Actor;
00087
00088 class FEM_ObjectBroker
00089 {
00090 public:
00091 FEM_ObjectBroker();
00092 virtual ~FEM_ObjectBroker();
00093
00094 virtual Actor*getNewActor(int classTag, Channel *theChannel);
00095
00096 virtual PartitionedModelBuilder *
00097 getPtrNewPartitionedModelBuilder(Subdomain &theSub,
00098 int classTag);
00099
00100 virtual GraphNumberer *getPtrNewGraphNumberer(int classTag);
00101
00102
00103 virtual Element *getNewElement(int classTag);
00104 virtual Node *getNewNode(int classTag);
00105 virtual MP_Constraint *getNewMP(int classTag);
00106 virtual SP_Constraint *getNewSP(int classTag);
00107 virtual NodalLoad *getNewNodalLoad(int classTag);
00108 virtual ElementalLoad *getNewElementalLoad(int classTag);
00109
00110 virtual CrdTransf2d *getNewCrdTransf2d(int classTag);
00111 virtual CrdTransf3d *getNewCrdTransf3d(int classTag);
00112
00113 virtual BeamIntegration *getNewBeamIntegration(int classTag);
00114
00115 virtual UniaxialMaterial *getNewUniaxialMaterial(int classTag);
00116 virtual SectionForceDeformation *getNewSection(int classTag);
00117 virtual NDMaterial *getNewNDMaterial(int classTag);
00118 virtual Fiber *getNewFiber(int classTag);
00119
00120 virtual ConvergenceTest *getNewConvergenceTest(int classTag);
00121 virtual LoadPattern *getNewLoadPattern(int classTag);
00122 virtual GroundMotion *getNewGroundMotion(int classTag);
00123 virtual TimeSeries *getNewTimeSeries(int classTag);
00124 virtual TimeSeriesIntegrator *getNewTimeSeriesIntegrator(int classTag);
00125
00126
00127 virtual Matrix *getPtrNewMatrix(int classTag, int noRows, int noCols);
00128 virtual Vector *getPtrNewVector(int classTag, int size);
00129 virtual ID *getPtrNewID(int classTag, int size);
00130
00131
00132
00133 virtual OPS_Stream *getPtrNewStream(int classTag);
00134 virtual Recorder *getPtrNewRecorder(int classTag);
00135
00136
00137
00138 virtual ConstraintHandler *getNewConstraintHandler(int classTag);
00139 virtual DOF_Numberer *getNewNumberer(int classTag);
00140 virtual AnalysisModel *getNewAnalysisModel(int classTag);
00141 virtual EquiSolnAlgo *getNewEquiSolnAlgo(int classTag);
00142 virtual DomainDecompAlgo *getNewDomainDecompAlgo(int classTag);
00143 virtual StaticIntegrator *getNewStaticIntegrator(int classTag);
00144 virtual TransientIntegrator *getNewTransientIntegrator(int classTag);
00145 virtual IncrementalIntegrator *getNewIncrementalIntegrator(int classTag);
00146
00147 virtual LinearSOE *getNewLinearSOE(int classTagSOE, int classTagSolver);
00148 virtual LinearSOESolver *getNewLinearSolver(void);
00149
00150 virtual LinearSOE *getPtrNewDDLinearSOE(int classTagSOE,
00151 int classTagDDSolver);
00152 virtual DomainSolver *getNewDomainSolver(void);
00153
00154 virtual DomainDecompositionAnalysis *
00155 getNewDomainDecompAnalysis(int classTag, Subdomain &theDomain);
00156
00157 virtual Subdomain *getSubdomainPtr(int classTag);
00158
00159
00160 virtual int addUniaxialMaterial(int classTag, const char *lib, const char *funcName, UniaxialMaterial *(*)(void));
00161
00162 protected:
00163
00164 private:
00165 LinearSOESolver *lastLinearSolver;
00166 DomainSolver *lastDomainSolver;
00167
00168
00169 };
00170
00171 #endif
00172
00173