xc
ContactMaterial3D.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 ContactMaterial3D_h
22 #define ContactMaterial3D_h
23 
24 // $Revision: 1.2
25 // $Date: 2010-11-10
26 // $Source: /OpenSees/SRC/material/nD/ContactMaterial3D.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 ContactMaterial3D.
36 //
37 
38 #include "ContactMaterialBase.h"
39 
40 
41 namespace XC {
42 
46  {
47  private:
48 
49  // state variables
50  Vector s_e_n; // elastic slip from previous increment
51  Vector s_e_nplus1; // elastic slip after current increment
52 
53  Vector r_nplus1; // sliding direction
54 
55  double gamma; // consistency parameter
56  double s_e_nplus1_norm; // norm of trial slip
57 
58 
59  Matrix g; // metric tensor
60  Matrix G; // dual basis metric tensor
61 
62  // static vectors and matrices declared in ContactMaterialBase
63  // strain_vec(0) -> gap ... current gap distance
64  // strain_vec(1) -> slip(1) ... incremental slip in xi direction
65  // strain_vec(2) -> slip(2) ... incremental slip in eta direciton
66  // strain_vec(3) -> lambda ... lagrangean multiplier -> t_n
67 
68  // stress_vec(0) -> t_n ... normal contact force
69  // stress_vec(1) -> t_s(1) ... tangential contact force in xi dir.
70  // stress_vec(2) -> t_s(2) ... tangentail contact force in eta dir.
71  // stress_vec(3) -> gap ... current gap
72 
73  protected:
74  void zero();
75  int sendData(Communicator &);
76  int recvData(const Communicator &);
77  public:
78  // Null constructor
79  ContactMaterial3D(int tag= 0);
80  // Full constructor
81  ContactMaterial3D(int tag, double mu, double G, double c, double t);
82 
83  // Sets the values of the trial strain tensor.
84  int setTrialStrain(const Vector &strain_from_element);
85 
86  // Unused trialStrain functions
87  int setTrialStrain(const Vector &v, const Vector &r);
88 
89  // Calculates current tangent stiffness.
90  const Matrix &getTangent(void) const;
91 
92  // get metric tensor for material class
93  void setMetricTensor(const Matrix &m);
94 
95  // Accepts the current trial strain values as being on the
96  // solution path, and updates all model parameters related
97  // to stress/strain states. Return 0 on success.
98  int commitState(void);
99  int revertToStart();
100 
101  // Return an exact copy of itself.
102  NDMaterial *getCopy(void) const;
103 
104  // Return a copy of itself if "code"="ContactMaterial3D",
105  // otherwise return null.
106  NDMaterial *getCopy(const std::string &code) const;
107 
108  // Return the string "ContactMaterial3D".
109  const std::string &getType(void) const;
110 
111  // Return ndm.
112  int getOrder(void) const;
113 
114  void Print(std::ostream &, int flag =0);
115 
116  // public methods for material stage update
117  int updateParameter(int responseID, Information &eleInformation);
118  int sendSelf(Communicator &);
119  int recvSelf(const Communicator &);
120  };
121 } // end XC namespace
122 
123 #endif
124 
Float vector abstraction.
Definition: Vector.h:94
int sendSelf(Communicator &)
Send the object.
Definition: ContactMaterial3D.cpp:378
2D contact material.
Definition: ContactMaterial3D.h:45
Base class for ND contact materials.
Definition: ContactMaterialBase.h:59
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: ContactMaterial3D.cpp:87
Information about an element.
Definition: Information.h:81
Communication parameters between processes.
Definition: Communicator.h:66
int revertToStart()
Revert the material to its initial state.
Definition: ContactMaterial3D.cpp:289
int recvData(const Communicator &)
Receive material.
Definition: ContactMaterial3D.cpp:366
const Matrix & getTangent(void) const
Return the tangent stiffness matrix at the current trial strain.
Definition: ContactMaterial3D.cpp:192
int sendData(Communicator &)
Send material.
Definition: ContactMaterial3D.cpp:352
Base class for 2D and 3D materials.
Definition: NDMaterial.h:101
int updateParameter(int responseID, Information &eleInformation)
Updates the parameter identified by parameterID with info.
Definition: ContactMaterial3D.cpp:346
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: ContactMaterial3D.cpp:300
int recvSelf(const Communicator &)
Receive the object.
Definition: ContactMaterial3D.cpp:390