xc
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/kernel/CommandEntity.h"
67 
68 namespace XC {
69 
70 class AnalysisAggregation;
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 
102 
106 //
108 //
116 class Analysis: public CommandEntity
117  {
118  protected:
121 
122  int newStepDomain(AnalysisModel *theModel,const double &dT =0.0);
123  ProcSolu *getProcSolu(void);
124  const ProcSolu *getProcSolu(void) const;
125 
126  friend class ProcSolu;
127  Analysis(AnalysisAggregation *analysis_aggregation);
129  virtual Analysis *getCopy(void) const= 0;
130  public:
131  inline virtual ~Analysis(void) {}
132 
133  inline AnalysisAggregation *getAnalysisAggregationPtr(void)
134  { return solution_method; }
135  Domain *getDomainPtr(void);
136  const Domain *getDomainPtr(void) const;
138  DOF_Numberer *getDOF_NumbererPtr(void) const;
139  AnalysisModel *getAnalysisModelPtr(void) const;
140 
141  LinearSOE *getLinearSOEPtr(void) const;
142  EigenSOE *getEigenSOEPtr(void) const;
143 
145  const Integrator *getIntegratorPtr(void) const;
149  TransientIntegrator *getTransientIntegratorPtr(void);
151 
152  SolutionAlgorithm *getSolutionAlgorithmPtr(void);
156 
157  virtual ConvergenceTest *getConvergenceTestPtr(void);
158  virtual const ConvergenceTest *getConvergenceTestPtr(void) const;
159 
160  virtual const DomainSolver *getDomainSolver(void) const;
161  virtual DomainSolver *getDomainSolver(void);
162  virtual const Subdomain *getSubdomain(void) const;
163  virtual Subdomain *getSubdomain(void);
164 
165  // pure virtual functions
166  virtual int domainChanged(void) = 0;
167  virtual void clearAll(void);
168  virtual int setNumberer(DOF_Numberer &theNumberer);
169  virtual int setLinearSOE(LinearSOE &theSOE);
170  virtual int setEigenSOE(EigenSOE &theSOE);
171  virtual int setIntegrator(Integrator &theNewIntegrator);
172  virtual int setAlgorithm(SolutionAlgorithm &theNewAlgorithm);
173 
174  void brokeConstraintHandler(const CommParameters &,const ID &);
175  void brokeNumberer(const CommParameters &,const ID &);
176  void brokeAnalysisModel(const CommParameters &,const ID &);
177 
178  void brokeDDLinearSOE(const CommParameters &,const ID &);
179  void brokeLinearSOE(const CommParameters &,const ID &);
180 
181  void brokeIncrementalIntegrator(const CommParameters &,const ID &);
182  void brokeStaticIntegrator(const CommParameters &,const ID &);
183  void brokeTransientIntegrator(const CommParameters &,const ID &);
184 
185  void brokeDomainDecompAlgo(const CommParameters &,const ID &);
186  void brokeEquiSolnAlgo(const CommParameters &,const ID &);
187 
188  inline int getAnalysisResult(void) const
189  { return analysis_result; }
190 
191  };
192 } // end of XC namespace
193 
194 #endif
195 
EquiSolnAlgo * getEquiSolutionAlgorithmPtr(void)
Return a pointer to the linear SOE solution algorithm (if it&#39;s not defined it returns nullptr)...
Definition: Analysis.cpp:224
DomainDecompAlgo * getDomainDecompSolutionAlgorithmPtr(void)
Return a pointer to the domain decomposition solution algorithm (if it&#39;s not defined it returns nullp...
Definition: Analysis.cpp:234
{staticFormTaylor} {equation}
Definition: StaticIntegrator.h:137
Base class for DOF numbererers.
Definition: DOF_Numberer.h:93
AnalysisModel * getAnalysisModelPtr(void) const
Returns a pointer to the analysis model.
Definition: Analysis.cpp:123
Domain enclosed in another domain.
Definition: Subdomain.h:101
Base class for solution algorithms.
Definition: SolutionAlgorithm.h:90
virtual const DomainSolver * getDomainSolver(void) const
Returns a pointer to the DomainSolver.
Definition: Analysis.cpp:261
Solution procedure for the finite element problem.
Definition: AnalysisAggregation.h:89
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
DOF_Numberer * getDOF_NumbererPtr(void) const
Returns a pointer to the DOF numberer.
Definition: Analysis.cpp:115
EigenAlgorithm * getEigenSolutionAlgorithmPtr(void)
Return a pointer to the eigenproblem solution algorithm (if it&#39;s not defined it returns nullptr)...
Definition: Analysis.cpp:214
virtual int setAlgorithm(SolutionAlgorithm &theNewAlgorithm)
Set the solution algorithm to be used in the analysis.
Definition: Analysis.cpp:335
virtual ConvergenceTest * getConvergenceTestPtr(void)
Returns a pointer to the convergence test (only for suitable analysis).
Definition: Analysis.cpp:243
Base class for the object that perform the analysis.
Definition: Analysis.h:116
Solution algorithm for domain decomposition analysis.
Definition: DomainDecompAlgo.h:88
Vector of integers.
Definition: ID.h:93
Integrator * getIntegratorPtr(void)
Returns, if possible, a pointer al integrator otherwise it returns nullptr.
Definition: Analysis.cpp:150
ConstraintHandler * getConstraintHandlerPtr(void)
Returns a pointer to the constraint handler.
Definition: Analysis.cpp:106
IncrementalIntegrator * getIncrementalIntegratorPtr(void)
Returns, if possible, a pointer al integrator incremental otherwise it returns nullptr.
Definition: Analysis.cpp:168
AnalysisAggregation * solution_method
Solution method.
Definition: Analysis.h:120
LinearBucklingIntegrator * getLinearBucklingIntegratorPtr(void)
Returns, if possible, a pointer al LinearBucklingIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:186
Domain * getDomainPtr(void)
Returns a pointer to the domain.
Definition: Analysis.cpp:90
LinearBucklingIntegrator is an algorithmic class for setting up the finite element equations for a li...
Definition: LinearBucklingIntegrator.h:47
virtual int setLinearSOE(LinearSOE &theSOE)
Sets the linear system of equations to use in the analysis.
Definition: Analysis.cpp:308
virtual void clearAll(void)
Deletes all members (Constraint handler, analysis model,...).
Definition: Analysis.cpp:293
virtual Analysis * getCopy(void) const =0
Virtual constructor.
StaticIntegrator * getStaticIntegratorPtr(void)
Returns, if possible, a pointer al StaticIntegrator otherwise it returns nullptr. ...
Definition: Analysis.cpp:204
Container for FE_Element and DOF_Group objects created by the constraint handler. ...
Definition: AnalysisModel.h:133
int analysis_result
Equal to zero if success.
Definition: Analysis.h:119
virtual int setIntegrator(Integrator &theNewIntegrator)
Sets the integrator to use in the analysis.
Definition: Analysis.cpp:326
Solution algorithm for eigenproblem.
Definition: EigenAlgorithm.h:83
Base class for the objects that performs the integration of physical properties over the domain to fo...
Definition: Integrator.h:99
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:96
Base class for eigenproblem integrators.
Definition: EigenIntegrator.h:85
EquiSolnAlgo is an abstract base class, i.e.
Definition: EquiSolnAlgo.h:88
EigenSOE * getEigenSOEPtr(void) const
Returns a pointer to the system of equations de eigenvalues.
Definition: Analysis.cpp:141
Analysis(AnalysisAggregation *analysis_aggregation)
Constructor.
Definition: Analysis.cpp:76
Solution procedure for the finite element problem.
Definition: ProcSolu.h:56
convergence test.
Definition: ConvergenceTest.h:80
virtual int setEigenSOE(EigenSOE &theSOE)
Sets the sistema de eigenvalues to use in the analysis.
Definition: Analysis.cpp:317
virtual const Subdomain * getSubdomain(void) const
Returns a pointer to the subdomain.
Definition: Analysis.cpp:277
LinearSOE * getLinearSOEPtr(void) const
Returns a pointer to the linear system of equations.
Definition: Analysis.cpp:132
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Communication parameters between processes.
Definition: CommParameters.h:65
used to solve a system of equations and to do static condensation operations on the linear system of ...
Definition: DomainSolver.h:82
virtual int setNumberer(DOF_Numberer &theNumberer)
Sets the renumerador to use in the analysis.
Definition: Analysis.cpp:299
TransientIntegrator * getTransientIntegratorPtr(void)
Returns, if possible, a pointer al EigenIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:195
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:116
EigenIntegrator * getEigenIntegratorPtr(void)
Returns, if possible, a pointer al EigenIntegrator otherwise it returns nullptr.
Definition: Analysis.cpp:177