xc
DistributedDisplacementControl.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 /* ****************************************************************** **
29 ** OpenSees - Open System for Earthquake Engineering Simulation **
30 ** Pacific Earthquake Engineering Research Center **
31 ** **
32 ** **
33 ** (C) Copyright 1999, The Regents of the University of California **
34 ** All Rights Reserved. **
35 ** **
36 ** Commercial use of this program without express permission of the **
37 ** University of California, Berkeley, is strictly prohibited. See **
38 ** file 'COPYRIGHT' in main directory for information on usage and **
39 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
40 ** **
41 ** Developed by: **
42 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
43 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
44 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
45 ** **
46 ** ****************************************************************** */
47 
48 // $Revision: 1.1 $
49 // $Date: 2005/11/29 21:59:49 $
50 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/DistributedDisplacementControl.h,v $
51 
52 // Written: fmk
53 // Created: 07/98
54 // Revision: A
55 //
56 // Description: This file contains the class definition for DistributedDisplacementControl.
57 // DistributedDisplacementControl is an algorithmic class for performing a static analysis
58 // using the arc length scheme, that is within a load step the following
59 // constraint is enforced:
60 // i=1 delta U^T delta U + alpha^2 delta lambda^2 = delta s^2
61 // i>1 dU^T delta U + alpha^2 dLambda delta lambda = 0
62 // where dU is change in nodal displacements for step, dLambda is
63 // change in applied load and DistributedDisplacementControl is a control parameter.
64 //
65 // What: "@(#) DistributedDisplacementControl.h, revA"
66 
67 #ifndef DistributedDisplacementControl_h
68 #define DistributedDisplacementControl_h
69 
70 #include "solution/analysis/integrator/static/DisplacementControl.h"
71 #include "utility/actor/actor/DistributedObj.h"
72 
73 namespace XC {
74 class LinearSOE;
75 class AnalysisModel;
76 class Domain;
77 
79 //
83  {
84  private:
85  bool allHaveDofID;
86 
87  int sendData(Communicator &);
88  int recvData(const Communicator &);
89 
90  friend class SolutionStrategy;
92  DistributedDisplacementControl(SolutionStrategy *,int node, int dof, double increment, int numIncrStep, double minIncrement, double maxIncrement);
93  Integrator *getCopy(void) const;
94  public:
95 
96  int newStep(void);
97  int update(const Vector &deltaU);
98  int domainChanged(void);
99 
100  int sendSelf(Communicator &);
101  int recvSelf(const Communicator &);
102  void Print(std::ostream &s, int flag =0) const;
103  };
104 inline Integrator *DistributedDisplacementControl::getCopy(void) const
105  { return new DistributedDisplacementControl(*this); }
106 } // end of XC namespace
107 
108 #endif
109 
Float vector abstraction.
Definition: Vector.h:94
Communication parameters between processes.
Definition: Communicator.h:66
Distributed version of the algorithmic class for performing a static analysis using the displacement ...
Definition: DistributedDisplacementControl.h:82
Algorithmic class for performing a static analysis using the displacement control method...
Definition: DisplacementControl.h:96
int newStep(void)
Performs a new analysis step.
Definition: DistributedDisplacementControl.cpp:87
double maxIncrement
min/max values of deltaU at (i)
Definition: DisplacementControl.h:104
int domainChanged(void)
Make required changes when a change in the domain occurs.
Definition: DistributedDisplacementControl.cpp:197
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: DistributedDisplacementControl.cpp:362
Base class for the objects that performs the integration of physical properties over the domain to fo...
Definition: Integrator.h:100
Object distributed on many processes.
Definition: DistributedObj.h:45
int recvSelf(const Communicator &)
Receive the object.
Definition: DistributedDisplacementControl.cpp:340
Solution strategy for the finite element problem.
Definition: SolutionStrategy.h:94
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
int update(const Vector &deltaU)
When invoked causes the integrator object to update the DOF_Group responses with the appropriate valu...
Definition: DistributedDisplacementControl.cpp:145
int sendSelf(Communicator &)
Send the object.
Definition: DistributedDisplacementControl.cpp:295