FEM_ObjectBroker.h

Go to the documentation of this file.
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.6 $
00022 // $Date: 2006/08/04 22:37:15 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/actor/objectBroker/FEM_ObjectBroker.h,v $
00024                                                                         
00025                                                                         
00026 // Written: fmk
00027 // Revision: A
00028 //
00029 // Purpose: This file contains the class definition for FEM_ObjectBroker.
00030 // FEM_ObjectBroker is is an object broker class for the finite element
00031 // method. All methods are virtual to allow for subclasses; which can be
00032 // used by programmers when introducing new subclasses of the main objects.
00033 //
00034 // What: "@(#) FEM_ObjectBroker.h, revA"
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     // methods to get new modelling class objects
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     // matrix vector and id objects
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     // methods for ouput objects
00132     //    virtual DataOutputHandler *getPtrNewDataOutputHandler(int classTag);
00133     virtual OPS_Stream *getPtrNewStream(int classTag);
00134     virtual Recorder *getPtrNewRecorder(int classTag);
00135     
00136     
00137     // methods to get new analysis objects
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 

Generated on Mon Oct 23 15:04:56 2006 for OpenSees by doxygen 1.5.0