xc
J2PlateFibre.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 /* ****************************************************************** **
29 ** OpenSees - Open System for Earthquake Engineering Simulation **
30 ** Pacific Earthquake Engineering Research Center **
31 ** **
32 ** **
33 ** (C) Copyright 1999, The Regents of the University of California **
34 ** All Rights Reserved. **
35 ** **
36 ** Commercial use of this program without express permission of the **
37 ** University of California, Berkeley, is strictly prohibited. See **
38 ** file 'COPYRIGHT' in main directory for information on usage and **
39 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
40 ** **
41 ** Developed by: **
42 ** Frank McKenna (fmckenna@ce.berkeley.edu) **
43 ** Gregory L. Fenves (fenves@ce.berkeley.edu) **
44 ** Filip C. Filippou (filippou@ce.berkeley.edu) **
45 ** **
46 ** ****************************************************************** */
47 
48 
49 // $Revision: 1.3 $
50 // $Date: 2002-12-05 22:49:09 $
51 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/J2PlateFibre.h,v $
52 
53 // Written: MHS
54 // Created: Aug 2001
55 //
56 // Description: Elastic isotropic model where stress components 22, 33, and 23
57 // are condensed out.
58 
59 #ifndef J2PlateFibre_h
60 #define J2PlateFibre_h
61 
62 #include "utility/matrix/Vector.h"
63 #include "utility/matrix/Matrix.h"
64 #include "material/nD/NDMaterial.h"
65 
66 namespace XC{
67 
73 class J2PlateFibre: public NDMaterial
74  {
75  private:
76  static constexpr int order= 5;
77  static const double one3;
78  static const double two3;
79  static const double root23;
80  static Vector sigma;
81  static Matrix D;
82 
83  double E;
84  double nu;
85  double sigmaY;
86  double Hiso;
87  double Hkin;
88  double rho;
89 
90  int parameterID;
91  Matrix SHVs;
92 
93  Vector Tepsilon;
94  Vector Tepsilon0;
95 
96  double alphan;
97  mutable double alphan1;
98 
99  mutable double dg_n1;
100 
101  double epsPn[order];
102  mutable double epsPn1[order];
103 
104  void init(void);
105  protected:
106  int sendData(Communicator &);
107  int recvData(const Communicator &);
108  public:
109  J2PlateFibre(int tag= 0);
110  J2PlateFibre(int tag, double E, double G, double sigY, double Hi, double Hk);
111  ~J2PlateFibre(void);
112  NDMaterial *getCopy(void) const;
113  NDMaterial *getCopy(const std::string &type) const;
114 
115  double getRho(void) const;
116  void setRho(const double &);
117  double getE(void) const;
118  void setE(const double &);
119  double getnu(void) const;
120  void setnu(const double &);
121  double getYieldStress(void) const;
122  void setYieldStress(const double &);
123  double getHiso(void) const;
124  void setHiso(const double &);
125  double getHkin(void) const;
126  void setHkin(const double &);
127 
128  int setInitialStrain(const Vector &);
129  int incrementInitialStrain(const Vector &);
130  void zeroInitialStrain(void);
131  const Vector &getInitialStrain(void) const;
132  int setTrialStrain(const Vector &v);
133  int setTrialStrain(const Vector &v, const Vector &r);
134  int setTrialStrainIncr(const Vector &v);
135  int setTrialStrainIncr(const Vector &v, const Vector &r);
136  const Matrix &getTangent(void) const;
137  const Matrix &getInitialTangent(void) const;
138  const Vector &getStress(void) const;
139  const Vector &getStrain(void) const;
140  double getVonMisesStress(void) const;
141 
142  int commitState(void);
143  int revertToLastCommit(void);
144  int revertToStart(void);
145 
146  const std::string &getType(void) const;
147  int getOrder(void) const;
148 
149  virtual int sendSelf(Communicator &);
150  virtual int recvSelf(const Communicator &);
151 
152  void Print(std::ostream &, int flag = 0);
153 
154  int setParameter(const std::vector<std::string> &, Parameter &);
155  int updateParameter(int parameterID, Information &);
156  int activateParameter(int paramID);
157 
158  const Vector& getStressSensitivity(int gradIndex, bool conditional);
159  int commitSensitivity(const Vector &depsdh, int gradIndex, int numGrads);
160  };
161 
162 } //end of XC namespace
163 
164 #endif
NDMaterial * getCopy(void) const
Virtual constructor.
Definition: J2PlateFibre.cpp:553
int recvData(const Communicator &)
Receives object members through the communicator argument.
Definition: J2PlateFibre.cpp:848
Float vector abstraction.
Definition: Vector.h:94
Information about an element.
Definition: Information.h:81
Communication parameters between processes.
Definition: Communicator.h:66
void setnu(const double &)
Set the material Poisson&#39;s ratio.
Definition: J2PlateFibre.cpp:101
double getE(void) const
Return elastic modulus.
Definition: J2PlateFibre.cpp:87
int setInitialStrain(const Vector &)
Sets the initial strain value.
Definition: J2PlateFibre.cpp:133
const Matrix & getTangent(void) const
Return the material tangent stiffness.
Definition: J2PlateFibre.cpp:175
const Matrix & getInitialTangent(void) const
Return the material initial stiffness.
Definition: J2PlateFibre.cpp:352
virtual int recvSelf(const Communicator &)
Receives object through the communicator argument.
Definition: J2PlateFibre.cpp:879
void setHkin(const double &)
Set the material kinematic hardening parameter.
Definition: J2PlateFibre.cpp:128
void setHiso(const double &)
Set the material isotropic hardening parameter.
Definition: J2PlateFibre.cpp:119
int setParameter(const std::vector< std::string > &, Parameter &)
Sets the value param to the parameter argv.
Definition: J2PlateFibre.cpp:911
double getVonMisesStress(void) const
return the Von Mises equivalent stress.
Definition: J2PlateFibre.cpp:486
J2 Isotropic linear-strain strain hardening material for plate problems.
Definition: J2PlateFibre.h:73
int incrementInitialStrain(const Vector &)
Increments initial strain.
Definition: J2PlateFibre.cpp:141
const Vector & getStress(void) const
Returns the material stress vector at the current trial strain.
Definition: J2PlateFibre.cpp:368
double getRho(void) const
Return material density.
Definition: J2PlateFibre.cpp:78
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: J2PlateFibre.cpp:832
void zeroInitialStrain(void)
Zeroes the initial strain.
Definition: J2PlateFibre.cpp:148
const Vector & getInitialStrain(void) const
Returns the value of the initial strain.
Definition: J2PlateFibre.cpp:152
void setE(const double &)
Set elastic modulus.
Definition: J2PlateFibre.cpp:92
double getHiso(void) const
Return the material isotropic hardening parameter.
Definition: J2PlateFibre.cpp:114
int commitState(void)
Commit the state of the material.
Definition: J2PlateFibre.cpp:518
void setRho(const double &)
Set density.
Definition: J2PlateFibre.cpp:83
int activateParameter(int paramID)
Activates the parameter identified by parameterID.
Definition: J2PlateFibre.cpp:951
int revertToStart(void)
Revert the material to its initial state.
Definition: J2PlateFibre.cpp:543
double getHkin(void) const
Return the material kinematic hardening parameter.
Definition: J2PlateFibre.cpp:123
const Vector & getStrain(void) const
Returns strain.
Definition: J2PlateFibre.cpp:510
double getnu(void) const
Return the material Poisson&#39;s ratio.
Definition: J2PlateFibre.cpp:96
int setTrialStrainIncr(const Vector &v)
Set trial strain increment.
Definition: J2PlateFibre.cpp:168
void setYieldStress(const double &)
Set the material yield stress.
Definition: J2PlateFibre.cpp:110
Base class for 2D and 3D materials.
Definition: NDMaterial.h:101
double getYieldStress(void) const
Return the material yield stress.
Definition: J2PlateFibre.cpp:105
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
Matrix of floats.
Definition: Matrix.h:111
Parameter.
Definition: Parameter.h:68
virtual int sendSelf(Communicator &)
Sends object through the communicator argument.
Definition: J2PlateFibre.cpp:864
J2PlateFibre(int tag=0)
Default constructor.
Definition: J2PlateFibre.cpp:61
int setTrialStrain(const Vector &v)
Set the material trial strain.
Definition: J2PlateFibre.cpp:156
int updateParameter(int parameterID, Information &)
Updates the parameter identified by parameterID with info.
Definition: J2PlateFibre.cpp:927