Subversion Repositories OpenSees

Rev

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