xc
IncrementalIntegrator.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.7 $
48 // $Date: 2003/03/06 20:32:01 $
49 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/IncrementalIntegrator.h,v $
50 
51 
52 #ifndef IncrementalIntegrator_h
53 #define IncrementalIntegrator_h
54 
55 // File: ~/analysis/integrator/IncrementalIntegrator.h
56 //
57 // Written: fmk
58 // Created: Tue Sept 17 15:54:47: 1996
59 // Revision: A
60 //
61 // Description: This file contains the interface for IncrementalIntegrator.
62 // IncrementalIntegrator is an algorithmic class for setting up the finite
63 // element equations in an incremental analysis and for updating the nodal
64 // response quantities based on the values in the soln vector.
65 //
66 // What: "@(#) IncrementalIntegrator.h, revA"
67 
68 #include <solution/analysis/integrator/Integrator.h>
69 
70 namespace XC {
71 class LinearSOE;
72 class AnalysisModel;
73 class FE_Element;
74 class DOF_Group;
75 class Vector;
76 
77 #define CURRENT_TANGENT 0
78 #define INITIAL_TANGENT 1
79 #define CURRENT_SECANT 2
80 #define INITIAL_THEN_CURRENT_TANGENT 3
81 
83 //
97  {
98  protected:
100  const LinearSOE *getLinearSOEPtr(void) const;
101 
102  friend class IntegratorVectors;
103  virtual int formNodalUnbalance(void);
104  virtual int formElementResidual(void);
105  int statusFlag;
106 
108  public:
109  // methods to set up the system of equations
110  virtual int formTangent(int statusFlag = CURRENT_TANGENT);
111  virtual int formUnbalance(void);
112 
113  // pure virtual methods to define the FE_ELe and DOF_Group contributions
116  virtual int formEleTangent(FE_Element *theEle) =0;
121  virtual int formNodTangent(DOF_Group *theDof) =0;
124  virtual int formEleResidual(FE_Element *theEle) =0;
127  virtual int formNodUnbalance(DOF_Group *theDof) =0;
128 
129  // methods to update the domain
133  virtual int newStep(double deltaT);
137  virtual int update(const Vector &deltaU) =0;
138  virtual int commit(void);
139  virtual int revertToLastStep(void);
140  virtual int initialize(void);
141 
142 // AddingSensitivity:BEGIN //////////////////////////////////
143  virtual int revertToStart();
144 // AddingSensitivity:END ////////////////////////////////////
145 
146  // method introduced for domain decomposition
147  virtual int getLastResponse(Vector &result, const ID &id);
148 
149  };
150 } // end of XC namespace
151 
152 #endif
153 
Float vector abstraction.
Definition: Vector.h:93
Solution procedure for the finite element problem.
Definition: AnalysisAggregation.h:89
Linear system of equations.
Definition: LinearSOE.h:91
virtual int formNodUnbalance(DOF_Group *theDof)=0
To inform the DOF_Group how to build its residual vector for addition to the system of equations...
Vector of integers.
Definition: ID.h:93
virtual int newStep(double deltaT)
Invoked to inform the integrator that the transient analysis is proceeding to the next time step...
Definition: IncrementalIntegrator.cpp:219
Vectores empleados en varios integrators.
Definition: IntegratorVectors.h:40
virtual int formEleResidual(FE_Element *theEle)=0
To inform the FE_Element how to build its residual vector for addition to the system of equations...
virtual int getLastResponse(Vector &result, const ID &id)
Returns the response on the DOFs being passed as parameter.
Definition: IncrementalIntegrator.cpp:186
IncrementalIntegrator(AnalysisAggregation *, int classTag)
Constructor.
Definition: IncrementalIntegrator.cpp:73
virtual int formUnbalance(void)
Builds the unbalanced load vector (right hand side of the equation).
Definition: IncrementalIntegrator.cpp:145
virtual int formNodTangent(DOF_Group *theDof)=0
To inform the DOF_Group how to build its tangent matrix for addition to the system of equations...
Base class for the objects that performs the integration of physical properties over the domain to fo...
Definition: Integrator.h:99
LinearSOE * getLinearSOEPtr(void)
Returns a pointer to the linear system of equations.
Definition: IncrementalIntegrator.cpp:263
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:96
A DOF_Group object is instantiated by the ConstraintHandler for every unconstrained node in the domai...
Definition: DOF_Group.h:106
virtual int formEleTangent(FE_Element *theEle)=0
To inform the FE_Element how to build its tangent matrix for addition to the system of equations...
virtual int formNodalUnbalance(void)
Builds the nodal unbalanced load vector.
Definition: IncrementalIntegrator.cpp:297
virtual int update(const Vector &deltaU)=0
When invoked causes the integrator object to update the DOF_Group responses with the appropriate valu...
Finite element as seen by analysis.
Definition: FE_Element.h:107
virtual int formElementResidual(void)
Builds the unbalanced load vector of the elements.
Definition: IncrementalIntegrator.cpp:337
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
virtual int commit(void)
Invoked by the SolutionAlgorithm to inform the Integrator that current state of domain is on solution...
Definition: IncrementalIntegrator.cpp:233
virtual int formTangent(int statusFlag=CURRENT_TANGENT)
Builds tangent stiffness matrix.
Definition: IncrementalIntegrator.cpp:97