XC Open source finite element analysis program
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 // SingleFPSimple3d is a single-concave friction pendulum element defined by
34 // two nodes. This simplified version uses small angle approximations and
35 // accounts for the rotation of the sliding surface by shifting the shear force.
36 
37 #include "ElemFriccionBase.h"
38 #include "utility/matrix/Vector.h"
39 #include "utility/matrix/Matrix.h"
40 
41 namespace XC {
42 class Channel;
43 class FrictionModel;
44 class UniaxialMaterial;
45 class Response;
46 
48  {
49  private:
50 
51  // parameters
52  double R; // radius of concave sliding dish
53  double h; // height of articulated slider
54  double Reff; // length from center of dish to pivot point
55 
56  // state variables
57  Vector ubPlastic; // plastic displacements in basic system
58 
59  // committed history variables
60  Vector ubPlasticC; // plastic displacements in basic system
61 
62  static Matrix theMatrix;
63  static Vector theVector;
64  // private methods
65  void setUp();
66  double sgn(double x);
67  int sendData(CommParameters &);
68  int recvData(const CommParameters &);
69 
70  public:
71  // constructor
72  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);
73  SingleFPSimple3d(void);
74 
75  // public methods to obtain information about dof & connectivity
76  int getNumDOF();
77  void setDomain(Domain *theDomain);
78 
79  // public methods to set the state of the element
80  int commitState();
81  int revertToLastCommit();
82  int revertToStart();
83  int update();
84 
85  // public methods to obtain stiffness, mass, damping and residual information
86  const Matrix &getTangentStiff();
87  const Matrix &getInitialStiff();
88  const Matrix &getMass();
89 
90  int addLoad(ElementalLoad *theLoad, double loadFactor);
91  int addInertiaLoadToUnbalance(const Vector &accel);
92 
93  const Vector &getResistingForce();
95 
96  // public methods for element output
97  int sendSelf(CommParameters &);
98  int recvSelf(const CommParameters &);
99  void Print(std::ostream &s, int flag = 0);
100 
101  Response *setResponse(const std::vector<std::string> &argv, Information &eleInformation);
102  int getResponse(int responseID, Information &eleInformation);
103  };
104 } // end of XC namespace
105 
106 #endif
int commitState()
Consuma el estado of the element.
Definition: SingleFPSimple3d.cpp:107
Domain (mesh and boundary conditions) of the finite element model.
Definition: Domain.h:98
Definition: Vector.h:82
int update()
Actualiza el estado of the element.
Definition: SingleFPSimple3d.cpp:152
Information about an element.
Definition: Information.h:80
Base class for loads over elements.
Definition: ElementalLoad.h:73
const Matrix & getMass()
Returns the mass matrix.
Definition: SingleFPSimple3d.cpp:329
const Vector & getResistingForceIncInertia()
Returns the action of the element over its attached nodes. Computes damping matrix.
Definition: SingleFPSimple3d.cpp:419
Definition: Matrix.h:82
void setDomain(Domain *theDomain)
Sets the domain for the element.
Definition: SingleFPSimple3d.cpp:77
Definition: FrictionModel.h:71
void Print(std::ostream &s, int flag=0)
Imprime el objeto.
Definition: SingleFPSimple3d.cpp:489
FrictionModel * theFrnMdl
pointer to friction model
Definition: ElemFriccionBase.h:45
Communication parameters between processes.
Definition: CommParameters.h:65
Definition: SingleFPSimple3d.h:47
================================================================================
Definition: ContinuaReprComponent.h:34
Definition: ElemFriccionBase.h:42
Definition: Response.h:71