Rev 4348 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
// $Revision: 1.1 $
// $Date: 2010-02-17 20:52:18 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/nD/ContactMaterial2D.h,v $
// Written: Kathryn Petek
// Created: February 2004
// Description: This file contains the class prototype for ContactMaterial2D.
//
// What: "@(#) ContactMaterial2D.h, revA"
#ifndef ContactMaterial2D_h
#define ContactMaterial2D_h
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <NDMaterial.h>
#include <Matrix.h>
#include <Vector.h>
#include <Tensor.h>
class ContactMaterial2D : public NDMaterial
{
public:
// Full constructor
ContactMaterial2D (int tag, double mu, double G, double c, double t);
// Null constructor
ContactMaterial2D ();
// Destructor: clean up memory storage space.
~ContactMaterial2D ();
// Sets the values of the trial strain tensor.
int setTrialStrain (const Vector &strain_from_element);
// Unused trialStrain functions
int setTrialStrain(const Vector &v, const Vector &r);
// Calculates current tangent stiffness.
const Matrix &getTangent ();
const Matrix &getInitialTangent ();
// Calculates the corresponding stress increment (rate),
// for a given strain increment.
const Vector &getStress ();
const Vector &getStrain ();
//Get cohesion function for use in contact element
double getcohesion () {return cohesion;}
void ScaleCohesion (const double len) {cohesion *= len;}
//Get tensile strength function for use in contact element
double getTensileStrength() {return tensileStrength;}
void ScaleTensileStrength(const double len) {tensileStrength *= len;}
// Accepts the current trial strain values as being on the
// solution path, and updates all model parameters related
// to stress/strain states. Return 0 on success.
int commitState ();
// Revert the stress/strain states to the last committed states.
// Return 0 on success.
int revertToLastCommit ();
int revertToStart();
// Return an exact copy of itself.
NDMaterial *getCopy (void);
// Return a copy of itself if "code"="ContactMaterial2D",
// otherwise return null.
NDMaterial *getCopy (const char *code);
// Return the string "ContactMaterial2D".
const char *getType () const ;
// Return ndm.
int getOrder () const ;
int sendSelf(int commitTag, Channel &theChannel);
int recvSelf(int commitTag, Channel &theChannel,
FEM_ObjectBroker &theBroker);
void Print(OPS_Stream &s, int flag =0);
int updateParameter(int responseID, Information &eleInformation);
protected:
//material parameters
double frictionCoeff; // friction coefficient tan(phi)
double stiffness; // shear stiffness of the interface
double cohesion; // interface cohesion (force)
double tensileStrength; // tensile strength
void zero();
private:
// state variables
double s_e_n; // elastic slip from previous increment
double s_e_nplus1; // elastic slip after current increment
double r_nplus1; // sliding direction
bool inSlip; // sliding indicator
// static vectors and matrices
Vector strain_vec; // generalized strain state
// strain_vec(0) -> gap ... current gap distance
// strain_vec(1) -> slip ... incremental slip
// strain_vec(2) -> lambda ... lagrangean multiplier -> t_n
Vector stress_vec; // generalized stress state
// stress_vec(0) -> t_n ... normal contact force
// stress_vec(1) -> t_s ... tangential contact force
// stress_vec(2) -> gap ... current gap
Matrix tangent_matrix; // material tangent
};
#endif