XC Open source finite element analysis program
Analysis.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 // XC is free software: you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as 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 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program.
25 // If not, see <http://www.gnu.org/licenses/>.
26 //----------------------------------------------------------------------------
27 /* ****************************************************************** **
28 ** OpenSees - Open System for Earthquake Engineering Simulation **
29 ** Pacific Earthquake Engineering Research Center **
30 ** **
31 ** **
32 ** (C) Copyright 1999, The Regents of the University of California **
33 ** All Rights Reserved. **
34 ** **
35 ** Commercial use of this program without express permission of the **
36 ** University of California, Berkeley, is strictly prohibited. See **
37 ** file 'COPYRIGHT' in main directory for information on usage and **
38 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
39 ** **
40 ** Developed by: **
41 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
42 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
43 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
44 ** **
45 ** ****************************************************************** */
46 
47 // $Revision: 1.1.1.1 $
48 // $Date: 2000/09/15 08:23:16 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/analysis/Analysis.h,v $
50 
51 
52 #ifndef Analysis_h
53 #define Analysis_h
54 
55 // File: ~/analysis/analysis/Analysis.h
56 //
57 // Written: fmk
58 // Created: 11/96
59 // Revision: A
60 //
61 // Description: This file contains the interface for the Analysis class.
62 // Analysis is an abstract class, i.e. no objects of it's type can be created.
63 //
64 // What: "@(#) Analysis.h, revA"
65 
66 #include "xc_utils/src/nucleo/EntCmd.h"
67 
68 namespace XC {
69 
70 class SoluMethod;
71 class ProcSolu;
72 
73 class Domain;
74 class AnalysisModel;
75 class ConstraintHandler;
76 class DOF_Numberer;
77 
78 class Integrator;
79 class IncrementalIntegrator;
80 class EigenIntegrator;
81 class LinearBucklingIntegrator;
82 class TransientIntegrator;
83 class StaticIntegrator;
84 
85 class LinearSOE;
86 class EigenSOE;
87 
88 class SolutionAlgorithm;
89 class EigenAlgorithm;
90 class EquiSolnAlgo;
91 class DomainDecompAlgo;
92 class DomainSolver;
93 class Subdomain;
94 
95 class ConvergenceTest;
96 
97 class FEM_ObjectBroker;
98 class ID;
99 
100 class CommParameters;
101 
103 //
105 //
107 //
109 class Analysis: public EntCmd
110  {
111  protected:
114 
115  int newStepDomain(AnalysisModel *theModel,const double &dT =0.0);
116  ProcSolu *getProcSolu(void);
117  const ProcSolu *getProcSolu(void) const;
118 
119  friend class ProcSolu;
120  Analysis(SoluMethod *metodo);
121  virtual Analysis *getCopy(void) const= 0;
122  public:
123  inline virtual ~Analysis(void) {}
124 
125  inline SoluMethod *getSoluMethodPtr(void)
126  { return metodo_solu; }
127  Domain *getDomainPtr(void);
128  const Domain *getDomainPtr(void) const;
130  DOF_Numberer *getDOF_NumbererPtr(void) const;
131  AnalysisModel *getAnalysisModelPtr(void) const;
132 
133  LinearSOE *getLinearSOEPtr(void) const;
134  EigenSOE *getEigenSOEPtr(void) const;
135 
137  const Integrator *getIntegratorPtr(void) const;
143 
144  SolutionAlgorithm *getSolutionAlgorithmPtr(void);
148 
149  virtual ConvergenceTest *getConvergenceTestPtr(void);
150  virtual const ConvergenceTest *getConvergenceTestPtr(void) const;
151 
152  virtual const DomainSolver *getDomainSolver(void) const;
153  virtual DomainSolver *getDomainSolver(void);
154  virtual const Subdomain *getSubdomain(void) const;
155  virtual Subdomain *getSubdomain(void);
156 
157  // pure virtual functions
158  virtual int domainChanged(void) = 0;
159  virtual void clearAll(void);
160  virtual int setNumberer(DOF_Numberer &theNumberer);
161  virtual int setLinearSOE(LinearSOE &theSOE);
162  virtual int setEigenSOE(EigenSOE &theSOE);
163  virtual int setIntegrator(Integrator &theNewIntegrator);
164  virtual int setAlgorithm(SolutionAlgorithm &theNewAlgorithm);
165 
166  void brokeConstraintHandler(const CommParameters &,const ID &);
167  void brokeNumberer(const CommParameters &,const ID &);
168  void brokeAnalysisModel(const CommParameters &,const ID &);
169 
170  void brokeDDLinearSOE(const CommParameters &,const ID &);
171  void brokeLinearSOE(const CommParameters &,const ID &);
172 
173  void brokeIncrementalIntegrator(const CommParameters &,const ID &);
174  void brokeStaticIntegrator(const CommParameters &,const ID &);
175  void brokeTransientIntegrator(const CommParameters &,const ID &);
176 
177  void brokeDomainDecompAlgo(const CommParameters &,const ID &);
178  void brokeEquiSolnAlgo(const CommParameters &,const ID &);
179 
180  inline int getAnalysisResult(void) const
181  { return analysis_result; }
182 
183  };
184 } // end of XC namespace
185 
186 #endif
187 
virtual int setLinearSOE(LinearSOE &theSOE)
Sets the linear system of equations to use in the analysis.
Definition: Analysis.cpp:305
Base class for static integrators.
Definition: StaticIntegrator.h:83
Base class for DOF numbererers.
Definition: DOF_Numberer.h:84
IncrementalIntegrator * getIncrementalIntegratorPtr(void)
Returns, if possible, a pointer al integrator incremental otherwise it returns nullptr.
Definition: Analysis.cpp:165
virtual int setEigenSOE(EigenSOE &theSOE)
Sets the sistema de eigenvalues to use in the analysis.
Definition: Analysis.cpp:314
DOF_Numberer * getDOF_NumbererPtr(void) const
Returns a pointer to the DOF numberer.
Definition: Analysis.cpp:112
EquiSolnAlgo * getEquiSolutionAlgorithmPtr(void)
Return a pointer to the linear SOE solution algorithm (if it&#39;s not defined it returns nullptr)...
Definition: Analysis.cpp:221
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:87
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:98
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
Solution algorithm for eigenproblem.
Definition: EigenAlgorithm.h:83
Clase Base para los objetos que realizan the analysis.
Definition: Analysis.h:109
SoluMethod * metodo_solu
Solution method.
Definition: Analysis.h:113
LinearSOE * getLinearSOEPtr(void) const
Returns a pointer to the linear system of equations.
Definition: Analysis.cpp:129
Solution procedure for the finite element problem. The solution procedure is definde by specifiying: ...
Definition: SoluMethod.h:76
used to solve a system of equations and to do static condensation operations on the linear system of ...
Definition: DomainSolver.h:79
virtual void clearAll(void)
Deletes all members (Constraint handler, analysis model,...).
Definition: Analysis.cpp:290
virtual const DomainSolver * getDomainSolver(void) const
Returns a pointer to the DomainSolver.
Definition: Analysis.cpp:258
Solution procedure for the finite element problem.
Definition: ProcSolu.h:56
Base class for eigenproblem systems of equations.
Definition: EigenSOE.h:63
convergence test.
Definition: ConvergenceTest.h:75
EigenSOE * getEigenSOEPtr(void) const
Returns a pointer to the system of equations de eigenvalues.
Definition: Analysis.cpp:138
EigenIntegrator * getEigenIntegratorPtr(void)
Returns, if possible, a pointer al EigenIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:174
int analysis_result
Equal to zero if success.
Definition: Analysis.h:112
ConstraintHandler * getConstraintHandlerPtr(void)
Returns a pointer to the gestor de coacciones.
Definition: Analysis.cpp:103
Base class for eigenproblem integrators.
Definition: EigenIntegrator.h:85
Definition: ID.h:77
TransientIntegrator * getTransientIntegratorPtr(void)
Returns, if possible, a pointer al EigenIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:192
Integrator * getIntegratorPtr(void)
Returns, if possible, a pointer al integrator otherwise it returns nullptr.
Definition: Analysis.cpp:147
AnalysisModel * getAnalysisModelPtr(void) const
Returns a pointer to the analysis model.
Definition: Analysis.cpp:120
Domain * getDomainPtr(void)
Returns a pointer to the domain.
Definition: Analysis.cpp:87
Definition: Subdomain.h:87
LinearBucklingIntegrator is an algorithmic class for setting up the finite element equations for a li...
Definition: LinearBucklingIntegrator.h:47
virtual int setNumberer(DOF_Numberer &theNumberer)
Sets the renumerador to use in the analysis.
Definition: Analysis.cpp:296
LinearBucklingIntegrator * getLinearBucklingIntegratorPtr(void)
Returns, if possible, a pointer al LinearBucklingIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:183
Linea system of equations. This is the class definition for LinearSOE. LinearSOE is an abstract base ...
Definition: LinearSOE.h:86
Analysis(SoluMethod *metodo)
Constructor.
Definition: Analysis.cpp:73
EigenAlgorithm * getEigenSolutionAlgorithmPtr(void)
Return a pointer to the eigenproblem solution algorithm (if it&#39;s not defined it returns nullptr)...
Definition: Analysis.cpp:211
DomainDecompAlgo * getDomainDecompSolutionAlgorithmPtr(void)
Return a pointer to the domain decomposition solution algorithm (if it&#39;s not defined it returns nullp...
Definition: Analysis.cpp:231
Los objetos de esta clase, dan acceso a los objetos FE_Element y DOF_Group creados por el Constraint ...
Definition: AnalysisModel.h:113
virtual int setAlgorithm(SolutionAlgorithm &theNewAlgorithm)
Set the solution algorithm to be used in the analysis.
Definition: Analysis.cpp:332
ConstraintHandlers enforce the single and multi freedom constraints that exist in the domain by creat...
Definition: ConstraintHandler.h:94
virtual int setIntegrator(Integrator &theNewIntegrator)
Sets the integrator to use in the analysis.
Definition: Analysis.cpp:323
Communication parameters between processes.
Definition: CommParameters.h:65
virtual ConvergenceTest * getConvergenceTestPtr(void)
Returns a pointer to the convergence test (only for suitable analysis).
Definition: Analysis.cpp:240
================================================================================
Definition: ContinuaReprComponent.h:34
Solution algorithm for domain decomposition.
Definition: DomainDecompAlgo.h:83
virtual const Subdomain * getSubdomain(void) const
Returns a pointer to the subdomain.
Definition: Analysis.cpp:274
StaticIntegrator * getStaticIntegratorPtr(void)
Returns, if possible, a pointer al StaticIntegrator otherwise it returns nullptr. ...
Definition: Analysis.cpp:201
Base class for solution algorithms.
Definition: SolutionAlgorithm.h:86
Base class for the object that performs the integration of physical properties over the domain to for...
Definition: Integrator.h:91
Base class for dynamic equations of motion integrators.
Definition: TransientIntegrator.h:84