Rev 2 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2 | Rev 1271 | ||
|---|---|---|---|
| 1 | /* ****************************************************************** **
|
1 | /* ****************************************************************** **
|
| 2 | ** OpenSees - Open System for Earthquake Engineering Simulation **
|
2 | ** OpenSees - Open System for Earthquake Engineering Simulation **
|
| 3 | ** Pacific Earthquake Engineering Research Center **
|
3 | ** Pacific Earthquake Engineering Research Center **
|
| 4 | ** **
|
4 | ** **
|
| 5 | ** **
|
5 | ** **
|
| 6 | ** (C) Copyright 1999, The Regents of the University of California **
|
6 | ** (C) Copyright 1999, The Regents of the University of California **
|
| 7 | ** All Rights Reserved. **
|
7 | ** All Rights Reserved. **
|
| 8 | ** **
|
8 | ** **
|
| 9 | ** Commercial use of this program without express permission of the **
|
9 | ** Commercial use of this program without express permission of the **
|
| 10 | ** University of California, Berkeley, is strictly prohibited. See **
|
10 | ** University of California, Berkeley, is strictly prohibited. See **
|
| 11 | ** file 'COPYRIGHT' in main directory for information on usage and **
|
11 | ** file 'COPYRIGHT' in main directory for information on usage and **
|
| 12 | ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
|
12 | ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
|
| 13 | ** **
|
13 | ** **
|
| 14 | ** Developed by: **
|
14 | ** Developed by: **
|
| 15 | ** Frank McKenna (fmckenna@ce.berkeley.edu) **
|
15 | ** Frank McKenna (fmckenna@ce.berkeley.edu) **
|
| 16 | ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
|
16 | ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
|
| 17 | ** Filip C. Filippou (filippou@ce.berkeley.edu) **
|
17 | ** Filip C. Filippou (filippou@ce.berkeley.edu) **
|
| 18 | ** **
|
18 | ** **
|
| 19 | ** ****************************************************************** */
|
19 | ** ****************************************************************** */
|
| 20 | 20 | ||
| 21 | // $Revision: 1.1.1.1 $
|
- | |
| 22 | // $Date: 2000-09-15 08:23:17 $
|
- | |
| - | 21 | // $Revision: 1.2 $
|
|
| - | 22 | // $Date: 2003-02-14 23:00:47 $
|
|
| 23 | // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/DisplacementControl.h,v $
|
23 | // $Source: /usr/local/cvs/OpenSees/SRC/analysis/integrator/DisplacementControl.h,v $
|
| 24 | 24 | ||
| 25 | 25 | ||
| 26 | // File: ~/analysis/integrator/DisplacementControl.h
|
26 | // File: ~/analysis/integrator/DisplacementControl.h
|
| 27 | //
|
27 | //
|
| 28 | // Written: fmk
|
28 | // Written: fmk
|
| 29 | // Created: 07/98
|
29 | // Created: 07/98
|
| 30 | // Revision: A
|
30 | // Revision: A
|
| 31 | //
|
31 | //
|
| 32 | // Description: This file contains the class definition for DisplacementControl.
|
32 | // Description: This file contains the class definition for DisplacementControl.
|
| 33 | // DisplacementControl is an algorithmic class for perfroming a static analysis
|
33 | // DisplacementControl is an algorithmic class for perfroming a static analysis
|
| 34 | // using the arc length scheme, that is within a load step the follwing
|
34 | // using the arc length scheme, that is within a load step the follwing
|
| 35 | // constraint is enforced:
|
35 | // constraint is enforced:
|
| 36 | // i=1 delta U^T delta U + alpha^2 delta lambda^2 = delta s^2
|
36 | // i=1 delta U^T delta U + alpha^2 delta lambda^2 = delta s^2
|
| 37 | // i>1 dU^T delta U + alpha^2 dLambda delta lambda = 0
|
37 | // i>1 dU^T delta U + alpha^2 dLambda delta lambda = 0
|
| 38 | // where dU is change in nodal displacements for step, dLambda is
|
38 | // where dU is change in nodal displacements for step, dLambda is
|
| 39 | // change in applied load and DisplacementControl is a control parameter.
|
39 | // change in applied load and DisplacementControl is a control parameter.
|
| 40 | //
|
40 | //
|
| 41 | // What: "@(#) DisplacementControl.h, revA"
|
41 | // What: "@(#) DisplacementControl.h, revA"
|
| 42 | 42 | ||
| 43 | #ifndef DisplacementControl_h
|
43 | #ifndef DisplacementControl_h
|
| 44 | #define DisplacementControl_h
|
44 | #define DisplacementControl_h
|
| 45 | 45 | ||
| 46 | #include <StaticIntegrator.h>
|
46 | #include <StaticIntegrator.h>
|
| 47 | 47 | ||
| 48 | class LinearSOE; |
48 | class LinearSOE; |
| 49 | class AnalysisModel; |
49 | class AnalysisModel; |
| 50 | class FE_Element; |
50 | class FE_Element; |
| 51 | class Vector; |
51 | class Vector; |
| 52 | class Domain; |
52 | class Domain; |
| 53 | 53 | ||
| 54 | class DisplacementControl : public StaticIntegrator |
54 | class DisplacementControl : public StaticIntegrator |
| 55 | {
|
55 | {
|
| 56 | public: |
56 | public: |
| 57 | DisplacementControl(int node, int dof, double increment, Domain *theDomain, |
57 | DisplacementControl(int node, int dof, double increment, Domain *theDomain, |
| 58 | int numIncrStep, double minIncrement, double maxIncrement); |
58 | int numIncrStep, double minIncrement, double maxIncrement); |
| 59 | 59 | ||
| 60 | ~DisplacementControl(); |
60 | ~DisplacementControl(); |
| 61 | 61 | ||
| 62 | int newStep(void); |
62 | int newStep(void); |
| 63 | int update(const Vector &deltaU); |
63 | int update(const Vector &deltaU); |
| 64 | int domainChanged(void); |
64 | int domainChanged(void); |
| 65 | 65 | ||
| 66 | int sendSelf(int commitTag, Channel &theChannel); |
66 | int sendSelf(int commitTag, Channel &theChannel); |
| 67 | int recvSelf(int commitTag, Channel &theChannel, |
67 | int recvSelf(int commitTag, Channel &theChannel, |
| 68 | FEM_ObjectBroker &theBroker); |
68 | FEM_ObjectBroker &theBroker); |
| 69 | 69 | ||
| 70 | void Print(ostream &s, int flag =0); |
- | |
| - | 70 | void Print(OPS_Stream &s, int flag =0); |
|
| 71 | 71 | ||
| 72 | protected: |
72 | protected: |
| 73 | 73 | ||
| 74 | private: |
74 | private: |
| 75 | int theNode; // the node that is being followed |
75 | int theNode; // the node that is being followed |
| 76 | int theDof; // the dof at the node being followed |
76 | int theDof; // the dof at the node being followed |
| 77 | double theIncrement; // deltaU at step (i) |
77 | double theIncrement; // deltaU at step (i) |
| 78 | Domain *theDomain; // the domain containg the noe being followed |
78 | Domain *theDomain; // the domain containg the noe being followed |
| 79 | int theDofID; // the syste level id of the dof being followed |
79 | int theDofID; // the syste level id of the dof being followed |
| 80 | 80 | ||
| 81 | Vector *deltaUhat, *deltaUbar, *deltaU, *deltaUstep; |
81 | Vector *deltaUhat, *deltaUbar, *deltaU, *deltaUstep; |
| 82 | Vector *phat; // the reference load vector |
82 | Vector *phat; // the reference load vector |
| 83 | double deltaLambdaStep, currentLambda; // dLambda(i) & current value of lambda |
83 | double deltaLambdaStep, currentLambda; // dLambda(i) & current value of lambda |
| 84 | 84 | ||
| 85 | double specNumIncrStep, numIncrLastStep; // Jd & J(i-1) |
85 | double specNumIncrStep, numIncrLastStep; // Jd & J(i-1) |
| 86 | double minIncrement, maxIncrement; // min/max values of deltaU at (i) |
86 | double minIncrement, maxIncrement; // min/max values of deltaU at (i) |
| 87 | }; |
87 | }; |
| 88 | 88 | ||
| 89 | #endif
|
89 | #endif
|
| 90 | 90 | ||
| 91 | 91 | ||