xc
FrictionElementBase.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 //FrictionElementBase.h,v $
29 
30 #ifndef FrictionElementBase_h
31 #define FrictionElementBase_h
32 
33 #include "domain/mesh/element/Element0D.h"
34 #include "domain/mesh/element/utils/physical_properties/UniaxialMatPhysicalProperties.h"
35 #include "utility/matrix/Vector.h"
36 #include "utility/matrix/Matrix.h"
37 
38 namespace XC {
39 class FrictionModel;
40 class UniaxialMaterial;
41 class Response;
42 
46 //
48 //
51  {
52  protected:
55 
56  // parameters
57  double uy; // yield displacement
58  Vector x; // local x direction
59  Vector y; // local y direction
60  double mass; // mass of element
61  int maxIter; // maximum number of iterations
62  double tol; // tolerance for convergence criterion
63  double L; // element length
64 
65  // state variables
66  Vector ub; // displacements in basic system
67  Vector qb; // forces in basic system
68  Matrix kb; // stiffness matrix in basic system
69  Vector ul; // displacements in local system
70  Matrix Tgl; // transformation matrix from global to local system
71  Matrix Tlb; // transformation matrix from local to basic system
72 
73  // committed history variables
74 
75  // initial stiffness matrix in basic system
76  Matrix kbInit;
77 
78  void free_friction_model(void);
79  void alloc_friction_model(const FrictionModel &);
80  int sendData(Communicator &);
81  int recvData(const Communicator &);
82  public:
83  // constructors
84  FrictionElementBase(int tag, int classTag, int Nd1, int Nd2,const size_t &dim,const FrictionModel &theFrnMdl, const UniaxialMatPhysicalProperties &, const double &uy= 0.0, const Vector &y= Vector(), const Vector &x= Vector(),const double &mass = 0.0,const int &maxIter= 20,const double &tol= 1E-8);
85  FrictionElementBase(int classTag,const size_t &);
87  FrictionElementBase &operator=(const FrictionElementBase &);
88 
89  // destructor
90  ~FrictionElementBase(void);
91 
92  // public methods to obtain information about dof & connectivity
93  int getNumDOF();
94 
95  };
96 } // end of XC namespace
97 
98 #endif
Float vector abstraction.
Definition: Vector.h:94
Communication parameters between processes.
Definition: Communicator.h:66
FrictionModel * theFrnMdl
pointer to friction model
Definition: FrictionElementBase.h:53
int sendData(Communicator &)
Send members through the communicator argument.
Definition: FrictionElementBase.cc:113
int recvData(const Communicator &)
Receives members through the communicator argument.
Definition: FrictionElementBase.cc:132
int getNumDOF()
return the number of DOF associated with the element.
Base class for friction models.
Definition: FrictionModel.h:83
Physical properties for shells.
Definition: UniaxialMatPhysicalProperties.h:41
UniaxialMatPhysicalProperties physicalProperties
array of uniaxial materials
Definition: FrictionElementBase.h:54
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
Element of dimension 0 (both nodes have the same position).
Definition: Element0D.h:44
Base class for friction elements.
Definition: FrictionElementBase.h:50