xc
ContactMaterial2D.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 #ifndef ContactMaterial2D_h
22 #define ContactMaterial2D_h
23 
24 // $Revision: 1.2
25 // $Date: 2010-11-10
26 // $Source: /OpenSees/SRC/material/nD/ContactMaterial2D.h,v $
27 
28 // Written: Kathryn Petek
29 // Created: February 2004
30 // Modified: Chris McGann
31 // November 2010 -> changes for incorporation into main source code
32 // Modified: Chris McGann
33 // Jan 2011 -> added update for frictional state
34 
35 // Description: This file contains the class prototype for ContactMaterial2D.
36 //
37 
38 #include "ContactMaterialBase.h"
39 
40 namespace XC {
41 
45  {
46  private:
47 
48  // state variables
49  double s_e_n; // elastic slip from previous increment
50  double s_e_nplus1; // elastic slip after current increment
51 
52  double r_nplus1; // sliding direction
53 
54  // static vectors and matrices declared in ContactMaterialBase
55  // strain_vec(0) -> gap ... current gap distance
56  // strain_vec(1) -> slip ... incremental slip
57  // strain_vec(2) -> lambda ... lagrangean multiplier -> t_n
58 
59  // stress_vec(0) -> t_n ... normal contact force
60  // stress_vec(1) -> t_s ... tangential contact force
61  // stress_vec(2) -> gap ... current gap
62 
63  protected:
64 
65  // functions
66  void zero();
67  int sendData(Communicator &);
68  int recvData(const Communicator &);
69  public:
70  // Null constructor
71  ContactMaterial2D(int tag= 0);
72  // Full constructor
73  ContactMaterial2D(int tag, double mu, double G, double c, double t);
74 
75  // Sets the values of the trial strain tensor.
76  int setTrialStrain(const Vector &strain_from_element);
77 
78  // Unused trialStrain functions
79  int setTrialStrain(const Vector &v, const Vector &r);
80 
81  // Calculates current tangent stiffness.
82  const Matrix &getTangent(void) const;
83 
84  // Accepts the current trial strain values as being on the
85  // solution path, and updates all model parameters related
86  // to stress/strain states. Return 0 on success.
87  int commitState(void);
88  int revertToStart(void);
89 
90  // Return an exact copy of itself.
91  NDMaterial *getCopy(void) const;
92 
93  // Return a copy of itself if "code"="ContactMaterial2D",
94  // otherwise return null.
95  NDMaterial *getCopy(const std::string &) const;
96 
97  // Return the string "ContactMaterial2D".
98  const std::string &getType(void) const;
99 
100  // Return ndm.
101  int getOrder(void) const;
102 
103  void Print(std::ostream &, int flag =0);
104 
105  // public methods for material stage update
106  int updateParameter(int responseID, Information &eleInformation);
107  int sendSelf(Communicator &);
108  int recvSelf(const Communicator &);
109  };
110 } // end XC namespace
111 
112 #endif
113 
int sendSelf(Communicator &)
Send the object.
Definition: ContactMaterial2D.cpp:323
Float vector abstraction.
Definition: Vector.h:94
Base class for ND contact materials.
Definition: ContactMaterialBase.h:59
Information about an element.
Definition: Information.h:81
Communication parameters between processes.
Definition: Communicator.h:66
int recvSelf(const Communicator &)
Receive the object.
Definition: ContactMaterial2D.cpp:335
int updateParameter(int responseID, Information &eleInformation)
Updates the parameter identified by parameterID with info.
Definition: ContactMaterial2D.cpp:298
int recvData(const Communicator &)
Receive material.
Definition: ContactMaterial2D.cpp:316
2D contact material.
Definition: ContactMaterial2D.h:44
Base class for 2D and 3D materials.
Definition: NDMaterial.h:101
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: ContactMaterial2D.cpp:246
int setTrialStrain(const Vector &strain_from_element)
Sets the value of the trial strain vector, that value used by {getStress()} and getTangent(), to be strain.
Definition: ContactMaterial2D.cpp:87
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
int sendData(Communicator &)
Send material.
Definition: ContactMaterial2D.cpp:308
const Matrix & getTangent(void) const
Return the tangent stiffness matrix at the current trial strain.
Definition: ContactMaterial2D.cpp:167
int revertToStart(void)
Revert the material to its initial state.
Definition: ContactMaterial2D.cpp:223