xc
SingleFPSimple3d.h
1 /* ****************************************************************** **
2 ** OpenSees - Open System for Earthquake Engineering Simulation **
3 ** Pacific Earthquake Engineering Research Center **
4 ** **
5 ** **
6 ** (C) Copyright 1999, The Regents of the University of California **
7 ** All Rights Reserved. **
8 ** **
9 ** Commercial use of this program without express permission of the **
10 ** University of California, Berkeley, is strictly prohibited. See **
11 ** file 'COPYRIGHT' in main directory for information on usage and **
12 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
13 ** **
14 ** Developed by: **
15 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
16 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
17 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
18 ** **
19 ** ****************************************************************** */
20 
21 // $Revision: 1.1 $
22 // $Date: 2009/11/03 23:13:08 $
23 // $Source: /usr/local/cvs/OpenSees/SRC/element/special/frictionBearing/SingleFPSimple3d.h,v $
24 
25 #ifndef SingleFPSimple3d_h
26 #define SingleFPSimple3d_h
27 
28 // Written: Andreas Schellenberg (andreas.schellenberg@gmx.net)
29 // Created: 03/06
30 // Revision: A
31 //
32 // Description: This file contains the class definition for SingleFPSimple3d.
33 
34 #include "FrictionElementBase.h"
35 #include "utility/matrix/Vector.h"
36 #include "utility/matrix/Matrix.h"
37 
38 namespace XC {
39 class Channel;
40 class FrictionModel;
41 class UniaxialMaterial;
42 class Response;
43 
50  {
51  private:
52 
53  // parameters
54  double R;
55  double h;
56  double Reff;
57 
58  // state variables
59  Vector ubPlastic;
60 
61  // committed history variables
62  Vector ubPlasticC;
63 
64  static Matrix theMatrix;
65  static Vector theVector;
66  // private methods
67  void setUp();
68  double sgn(double x);
69  int sendData(Communicator &);
70  int recvData(const Communicator &);
71 
72  public:
73  // constructor
74  SingleFPSimple3d(int tag, int Nd1, int Nd2,const FrictionModel &theFrnMdl,const double &R,const double &h,const double &uy,const std::vector<UniaxialMaterial *> &theMaterials,const Vector &y= Vector(), const Vector &x= Vector(),const double &mass= 0.0,const int &maxIter=20,const double &tol= 1E-8);
75  SingleFPSimple3d(void);
76 
77  // public methods to obtain information about dof & connectivity
78  int getNumDOF();
79  void setDomain(Domain *theDomain);
80 
81  // public methods to set the state of the element
82  int commitState();
83  int revertToLastCommit();
84  int revertToStart();
85  int update();
86 
87  // public methods to obtain stiffness, mass, damping and residual information
88  const Matrix &getTangentStiff();
89  const Matrix &getInitialStiff();
90  const Matrix &getMass();
91 
92  int addLoad(ElementalLoad *theLoad, double loadFactor);
93  int addInertiaLoadToUnbalance(const Vector &accel);
94 
95  const Vector &getResistingForce(void) const;
96  const Vector &getResistingForceIncInertia(void) const;
97 
98  // public methods for element output
99  int sendSelf(Communicator &);
100  int recvSelf(const Communicator &);
101  void Print(std::ostream &s, int flag = 0) const;
102 
103  Response *setResponse(const std::vector<std::string> &argv, Information &eleInformation);
104  int getResponse(int responseID, Information &eleInformation);
105  };
106 } // end of XC namespace
107 
108 #endif
Float vector abstraction.
Definition: Vector.h:94
Information about an element.
Definition: Information.h:81
Communication parameters between processes.
Definition: Communicator.h:66
Base class response objects.
Definition: Response.h:81
Response * setResponse(const std::vector< std::string > &argv, Information &eleInformation)
setResponse() is a method invoked to determine if the element will respond to a request for a certain...
Definition: SingleFPSimple3d.cpp:518
int revertToLastCommit()
Revert to the last committed state.
Definition: SingleFPSimple3d.cpp:119
const Vector & getResistingForceIncInertia(void) const
Return the element resisting force including inertia.
Definition: SingleFPSimple3d.cpp:423
FrictionModel * theFrnMdl
pointer to friction model
Definition: FrictionElementBase.h:53
int revertToStart()
Reverts the element to its initial state.
Definition: SingleFPSimple3d.cpp:128
const Matrix & getMass()
Returns the mass matrix.
Definition: SingleFPSimple3d.cpp:332
const Matrix & getTangentStiff()
Return the tangent stiffness matrix.
Definition: SingleFPSimple3d.cpp:286
const Vector & getResistingForce(void) const
Return the element resisting force.
Definition: SingleFPSimple3d.cpp:392
int update()
Updates the element state.
Definition: SingleFPSimple3d.cpp:152
void setDomain(Domain *theDomain)
Sets the domain for the element.
Definition: SingleFPSimple3d.cpp:77
int getNumDOF()
return the number of DOF associated with the element.
Definition: SingleFPSimple3d.cpp:73
Single-concave friction pendulum element for three dimensioal problems.
Definition: SingleFPSimple3d.h:49
int sendSelf(Communicator &)
Send the object.
Definition: SingleFPSimple3d.cpp:467
Base class for friction models.
Definition: FrictionModel.h:83
void Print(std::ostream &s, int flag=0) const
Print stuff.
Definition: SingleFPSimple3d.cpp:496
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
int recvSelf(const Communicator &)
Receive the object.
Definition: SingleFPSimple3d.cpp:481
Base class for loads over elements.
Definition: ElementalLoad.h:79
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:117
int getResponse(int responseID, Information &eleInformation)
Obtain information from an analysis.
Definition: SingleFPSimple3d.cpp:632
int commitState()
Commit the current element state.
Definition: SingleFPSimple3d.cpp:107
Base class for friction elements.
Definition: FrictionElementBase.h:50