00001 /* ****************************************************************** ** 00002 ** OpenSees - Open System for Earthquake Engineering Simulation ** 00003 ** Pacific Earthquake Engineering Research Center ** 00004 ** ** 00005 ** ** 00006 ** (C) Copyright 1999, The Regents of the University of California ** 00007 ** All Rights Reserved. ** 00008 ** ** 00009 ** Commercial use of this program without express permission of the ** 00010 ** University of California, Berkeley, is strictly prohibited. See ** 00011 ** file 'COPYRIGHT' in main directory for information on usage and ** 00012 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** 00013 ** ** 00014 ** Developed by: ** 00015 ** Frank McKenna (fmckenna@ce.berkeley.edu) ** 00016 ** Gregory L. Fenves (fenves@ce.berkeley.edu) ** 00017 ** Filip C. Filippou (filippou@ce.berkeley.edu) ** 00018 ** ** 00019 ** ****************************************************************** */ 00020 00021 // $Revision: 1.1.1.1 $ 00022 // $Date: 2000/09/15 08:23:16 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/actor/objectBroker/FEM_ObjectBroker.h,v $ 00024 00025 00026 // File: ~/actor/broker/FEM_ObjectBroker.h 00027 // 00028 // Written: fmk 00029 // Created: Fri Sept 20 12:27:47: 1996 00030 // Revision: A 00031 // 00032 // Purpose: This file contains the class definition for FEM_ObjectBroker. 00033 // FEM_ObjectBroker is is an object broker class for the finite element 00034 // method. All methods are virtual to allow for subclasses; which can be 00035 // used by programmers when introducing new subclasses of the main objects. 00036 // 00037 // What: "@(#) FEM_ObjectBroker.h, revA" 00038 00039 #ifndef FEM_ObjectBroker_h 00040 #define FEM_ObjectBroker_h 00041 00042 #include<ObjectBroker.h> 00043 00044 #include <Element.h> 00045 #include <Node.h> 00046 #include <MP_Constraint.h> 00047 #include <SP_Constraint.h> 00048 #include <NodalLoad.h> 00049 #include <ElementalLoad.h> 00050 #include <LoadPattern.h> 00051 #include <TimeSeries.h> 00052 00053 #include <Matrix.h> 00054 #include <Vector.h> 00055 #include <ID.h> 00056 #include <Subdomain.h> 00057 #include <ConstraintHandler.h> 00058 #include <DOF_Numberer.h> 00059 #include <AnalysisModel.h> 00060 #include <EquiSolnAlgo.h> 00061 #include <DomainDecompAlgo.h> 00062 #include <StaticIntegrator.h> 00063 #include <TransientIntegrator.h> 00064 #include <IncrementalIntegrator.h> 00065 #include <LinearSOE.h> 00066 #include <DomainSolver.h> 00067 #include <DomainDecompositionAnalysis.h> 00068 #include <LinearSOESolver.h> 00069 #include <PartitionedModelBuilder.h> 00070 00071 #include <CrdTransf2d.h> 00072 #include <CrdTransf3d.h> 00073 00074 #include <UniaxialMaterial.h> 00075 #include <SectionForceDeformation.h> 00076 #include <NDMaterial.h> 00077 #include <Fiber.h> 00078 00079 #include <ConvergenceTest.h> 00080 #include <SectionForceDeformation.h> 00081 #include <GroundMotion.h> 00082 00097 class FEM_ObjectBroker 00098 { 00099 public: 00101 FEM_ObjectBroker(); 00102 00104 virtual ~FEM_ObjectBroker(); 00105 00106 00108 virtual PartitionedModelBuilder * 00109 getPtrNewPartitionedModelBuilder(Subdomain &theSub, 00110 int classTag); 00112 virtual GraphNumberer *getPtrNewGraphNumberer(int classTag); 00113 00115 virtual Element *getNewElement(int classTag); 00117 virtual Node *getNewNode(int classTag); 00119 virtual MP_Constraint *getNewMP(int classTag); 00121 virtual SP_Constraint *getNewSP(int classTag); 00123 virtual NodalLoad *getNewNodalLoad(int classTag); 00125 virtual ElementalLoad *getNewElementalLoad(int classTag); 00126 00128 virtual CrdTransf2d *getNewCrdTransf2d(int classTag); 00130 virtual CrdTransf3d *getNewCrdTransf3d(int classTag); 00131 00133 virtual UniaxialMaterial *getNewUniaxialMaterial(int classTag); 00135 virtual SectionForceDeformation *getNewSection(int classTag); 00137 virtual NDMaterial *getNewNDMaterial(int classTag); 00139 virtual Fiber *getNewFiber(int classTag); 00140 00142 virtual ConvergenceTest *getNewConvergenceTest(int classTag); 00144 virtual LoadPattern *getNewLoadPattern(int classTag); 00146 virtual GroundMotion *getNewGroundMotion(int classTag); 00148 virtual TimeSeries *getNewTimeSeries(int classTag); 00149 00151 virtual Matrix *getPtrNewMatrix(int classTag, int noRows, int noCols); 00153 virtual Vector *getPtrNewVector(int classTag, int size); 00155 virtual ID *getPtrNewID(int classTag, int size); 00156 00158 virtual ConstraintHandler *getNewConstraintHandler(int classTag); 00160 virtual DOF_Numberer *getNewNumberer(int classTag); 00162 virtual AnalysisModel *getNewAnalysisModel(int classTag); 00164 virtual EquiSolnAlgo *getNewEquiSolnAlgo(int classTag); 00166 virtual DomainDecompAlgo *getNewDomainDecompAlgo(int classTag); 00168 virtual StaticIntegrator *getNewStaticIntegrator(int classTag); 00170 virtual TransientIntegrator *getNewTransientIntegrator(int classTag); 00172 virtual IncrementalIntegrator *getNewIncrementalIntegrator(int classTag); 00173 00175 virtual LinearSOE *getNewLinearSOE(int classTagSOE, int classTagSolver); 00177 virtual LinearSOESolver *getNewLinearSolver(void); 00178 00180 virtual LinearSOE *getPtrNewDDLinearSOE(int classTagSOE, 00181 int classTagDDSolver); 00183 virtual DomainSolver *getNewDomainSolver(void); 00184 00186 virtual DomainDecompositionAnalysis * 00187 getNewDomainDecompAnalysis(int classTag, Subdomain &theDomain); 00188 00190 virtual Subdomain *getSubdomainPtr(int classTag); 00191 00192 protected: 00193 00194 private: 00196 LinearSOESolver *lastLinearSolver; 00198 DomainSolver *lastDomainSolver; 00199 00200 }; 00201 00202 #endif 00203 00204