XC Open source finite element analysis program
IntegratorVectors.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 //IntegratorVectors.h
28 
29 #ifndef IntegratorVectors_h
30 #define IntegratorVectors_h
31 
32 #include "utility/actor/actor/MovableObject.h"
33 #include "utility/matrix/Vector.h"
34 
35 namespace XC {
36 
38 //
41  {
42  protected:
43  Vector deltaUhat, deltaUbar, deltaU, deltaUstep;
44  Vector phat; // the reference load vector
45  double deltaLambdaStep, currentLambda;
46 
47  void resize(const int &size);
48  int sendData(CommParameters &);
49  int recvData(const CommParameters &);
50  public:
51  IntegratorVectors(void);
52 
53  inline const Vector &getPhat(void) const
54  { return phat; }
55  inline Vector &getPhat(void)
56  { return phat; }
57 
58  inline const Vector &getDeltaUhat(void) const
59  { return deltaUhat; }
60  inline void setDeltaUhat(const Vector &v)
61  { deltaUhat= v; }
62 
63  inline const Vector &getDeltaUbar(void) const
64  { return deltaUbar; }
65  inline void setDeltaUbar(const Vector &v)
66  { deltaUbar= v; }
67 
68  inline const Vector &getDeltaUstep(void) const
69  { return deltaUstep; }
70  inline void setDeltaUstep(const Vector &v)
71  { deltaUstep= v; }
72 
73  inline const Vector &getDeltaU(void) const
74  { return deltaU; }
75  inline void setDeltaU(const Vector &v)
76  { deltaU= v; }
77 
78  inline const double &getDeltaLambdaStep(void) const
79  { return deltaLambdaStep; }
80  inline void setDeltaLambdaStep(const double &d)
81  { deltaLambdaStep= d; }
82 
83  inline const double &getCurrentLambda(void) const
84  { return currentLambda; }
85  inline double &getCurrentLambda(void)
86  { return currentLambda; }
87  inline void setCurrentLambda(const double &d)
88  { currentLambda= d; }
89 
90  void newStep(const double &dLambda,const Vector &);
91  void determineUhat(LinearSOE &);
92  void distribDetermineUhat(const int &,LinearSOE &);
93  void solve(const Vector &,LinearSOE &);
94  void update(const double &);
95  void domainChanged(const size_t &sz,IncrementalIntegrator &,LinearSOE &);
96 
97  int sendSelf(CommParameters &);
98  int recvSelf(const CommParameters &);
99  };
100 } // end of XC namespace
101 
102 #endif
103 
void update(const double &)
Updates vectors.
Definition: IntegratorVectors.cc:102
IncrementalIntegrator is an algorithmic class for setting up the finite element equations in an incre...
Definition: IncrementalIntegrator.h:87
Definition: Vector.h:82
IntegratorVectors(void)
Constructor.
Definition: IntegratorVectors.cc:37
void resize(const int &size)
Changes vectors size.
Definition: IntegratorVectors.cc:42
void domainChanged(const size_t &sz, IncrementalIntegrator &, LinearSOE &)
Respuesta a un cambio en el domain.
Definition: IntegratorVectors.cc:115
void determineUhat(LinearSOE &)
Computes the solution for the new load vector.
Definition: IntegratorVectors.cc:85
Object that can move between processes.
Definition: MovableObject.h:91
void distribDetermineUhat(const int &, LinearSOE &)
Computes the solution for the new load vector using parallel processing.
Definition: IntegratorVectors.cc:73
Vectores empleados en varios integrators.
Definition: IntegratorVectors.h:40
Linea system of equations. This is the class definition for LinearSOE. LinearSOE is an abstract base ...
Definition: LinearSOE.h:86
int recvData(const CommParameters &)
Receives object members through the channel being passed as parameter.
Definition: IntegratorVectors.cc:156
void newStep(const double &dLambda, const Vector &)
Performs a new step.
Definition: IntegratorVectors.cc:61
Communication parameters between processes.
Definition: CommParameters.h:65
================================================================================
Definition: ContinuaReprComponent.h:34
int sendData(CommParameters &)
Send object members through the channel being passed as parameter.
Definition: IntegratorVectors.cc:144
void solve(const Vector &, LinearSOE &)
Computes the solution for the new load vector.
Definition: IntegratorVectors.cc:95