xc
NDMaterial.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 ** Additions and changes by: **
48 ** Boris Jeremic (@ucdavis.edu) **
49 ** **
50 ** **
51 ** ****************************************************************** */
52 
53 // $Revision: 1.16 $
54 // $Date: 2004/07/20 22:39:02 $
55 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/NDMaterial.h,v $
56 
57 
58 #ifndef NDMaterial_h
59 #define NDMaterial_h
60 
61 // File: ~/material/NDMaterial.h
62 //
63 // Written: MHS
64 // Created: Feb 2000
65 // Revision: A
66 //
67 // Description: This file contains the class definition for NDMaterial.
68 // NDMaterial is an abstract base class and thus no objects of it's type
69 // can be instantiated. It has pure virtual functions which must be
70 // implemented in it's derived classes.
71 //
72 // What: "@(#) NDMaterial.h, revA"
73 
74 #include "material/Material.h"
75 #include "utility/matrix/nDarray/stresst.h"
76 
77 namespace XC {
78 class Matrix;
79 class ID;
80 class Vector;
81 class Information;
82 class Response;
83 class straintensor;
84 class stresstensor;
85 class Tensor;
86 
89 //
90 //
101 class NDMaterial: public Material
102  {
103  private:
104  static Matrix errMatrix;
105  static Vector errVector;
106  protected:
107  int sendData(Communicator &);
108  int recvData(const Communicator &);
109  public:
110  NDMaterial();
111  NDMaterial(int tag, int classTag);
112 
113  // methods to set state and retrieve state using Matrix and Vector classes
114  virtual double getRho(void) const;
115  virtual void setRho(const double &);
116 // BJ added 19June2002
117  virtual double getE(void) const;
118  virtual double getnu(void) const;
119  virtual double getpsi(void) const;
120 
121 
122  virtual int setInitialStrain(const Vector &);
123  int incrementInitialStrain(const Vector &);
124  void zeroInitialStrain(void);
125  virtual const Vector &getInitialStrain(void) const;
126  virtual int setTrialStrain(const Vector &v);
127  virtual int setTrialStrain(const Vector &v, const Vector &r);
128  virtual int setTrialStrainIncr(const Vector &v);
129  virtual int setTrialStrainIncr(const Vector &v, const Vector &r);
130  virtual const Matrix &getTangent(void) const;
131  inline virtual const Matrix &getInitialTangent(void) const
132  {return this->getTangent();};
133 
134  virtual const Vector &getStress(void) const;
135  virtual const Vector &getStrain(void) const;
137  inline const Vector &getGeneralizedStress(void) const
138  { return getStress(); }
140  inline const Vector &getGeneralizedStrain(void) const
141  { return getStrain(); }
142  virtual double getVonMisesStress(void) const;
143 
144  virtual int setTrialStrain(const Tensor &);
145  virtual int setTrialStrain(const Tensor &, const Tensor &);
146  virtual int setTrialStrainIncr(const Tensor &);
147  virtual int setTrialStrainIncr(const Tensor &, const Tensor &);
148  const Tensor &getTangentTensor(void) const;
149  virtual const stresstensor &getStressTensor(void) const;
150  virtual const straintensor &getStrainTensor(void) const;
151  virtual const straintensor &getPlasticStrainTensor(void) const; //Added Joey Aug. 13, 2001
152 
153  virtual void setInitialGeneralizedStrain(const Vector &);
154  const Vector &getInitialGeneralizedStrain(void) const;
155 
156  virtual const Vector &getCommittedStress(void);
157  virtual const Vector &getCommittedStrain(void);
158 
160  virtual NDMaterial *getCopy(void) const= 0;
161  virtual NDMaterial *getCopy(const std::string &) const= 0;
162 
163  virtual const ResponseId &getResponseType(void) const;
164  virtual const std::string &getType(void) const = 0;
165  virtual int getOrder(void) const = 0;
166 
167  Matrix getValues(const std::string &, bool silent= false) const;
168  virtual Response *setResponse(const std::vector<std::string> &argv, Information &matInformation);
169  virtual int getResponse (int responseID, Information &matInformation);
170 
171  int revertToStart(void);
172 
173 // AddingSensitivity:BEGIN //////////////////////////////////////////
174  virtual int setParameter(const std::vector<std::string> &argv, Parameter &param);
175  virtual int updateParameter(int parameterID, Information &info);
176  virtual int activateParameter(int parameterID);
177  virtual const Vector & getStressSensitivity(int gradIndex, bool conditional);
178  virtual const Vector & getStrainSensitivity(int gradIndex);
179  virtual const Matrix & getTangentSensitivity(int gradIndex);
180  virtual const Matrix & getDampTangentSensitivity(int gradIndex);
181  virtual double getRhoSensitivity(int gradIndex);
182  virtual int commitSensitivity(Vector & strainGradient, int gradIndex, int numGrads);
183 // AddingSensitivity:END ///////////////////////////////////////////
184 
185  };
186 
188 
189 } // end of XC namespace
190 
191 
192 #endif
virtual int setTrialStrain(const Vector &v)
Sets the value of the trial strain vector, that value used by {getStress()} and getTangent(), to be strain.
Definition: NDMaterial.cpp:134
virtual void setInitialGeneralizedStrain(const Vector &)
Sets the initial strain value.
Definition: NDMaterial.cpp:166
Float vector abstraction.
Definition: Vector.h:94
virtual const Matrix & getTangent(void) const
Return the tangent stiffness matrix at the current trial strain.
Definition: NDMaterial.cpp:174
const Vector & getGeneralizedStrain(void) const
Return the generalized strain.
Definition: NDMaterial.h:140
NDMaterial * receiveNDMaterialPtr(NDMaterial *, DbTagData &, const Communicator &, const BrokedPtrCommMetaData &)
Receive a pointer to material through the communicator argument.
Definition: NDMaterial.cpp:455
Stress tensor.
Definition: stresst.h:70
Information about an element.
Definition: Information.h:81
virtual int updateParameter(int parameterID, Information &info)
Updates the parameter identified by parameterID with info.
Definition: NDMaterial.cpp:417
Communication parameters between processes.
Definition: Communicator.h:66
Base class response objects.
Definition: Response.h:81
virtual const Vector & getStrain(void) const
Returns strain.
Definition: NDMaterial.cpp:190
virtual double getE(void) const
Return the material elastic modulus.
Definition: NDMaterial.cpp:108
NDMaterial()
Constructor.
Definition: NDMaterial.cpp:91
const Vector & getGeneralizedStress(void) const
Return the generalized stress.
Definition: NDMaterial.h:137
Base class for materials.
Definition: Material.h:93
Vector that stores the dbTags of the class members.
Definition: DbTagData.h:44
int revertToStart(void)
Revert the material to its initial state.
Definition: NDMaterial.cpp:393
virtual double getnu(void) const
Return the material Poisson&#39;s ratio.
Definition: NDMaterial.cpp:113
void zeroInitialStrain(void)
Zeroes the initial strain.
Definition: NDMaterial.cpp:252
virtual int setInitialStrain(const Vector &)
Set initial strain value.
Definition: NDMaterial.cpp:235
virtual double getVonMisesStress(void) const
return the Von Mises equivalent stress.
Definition: NDMaterial.cpp:200
virtual double getRho(void) const
Get material density.
Definition: NDMaterial.cpp:96
virtual const ResponseId & getResponseType(void) const
Return the ordering and type of response quantities returned by this material.
Definition: NDMaterial.cpp:333
int sendData(Communicator &)
Send object members through the communicator argument.
Definition: NDMaterial.cpp:400
int incrementInitialStrain(const Vector &)
Increments initial strain.
Definition: NDMaterial.cpp:244
Stiffness material contribution response identifiers.
Definition: ResponseId.h:61
virtual const Vector & getInitialStrain(void) const
Return the value of the initial strain.
Definition: NDMaterial.cpp:256
int recvData(const Communicator &)
Receives object members through the communicator argument.
Definition: NDMaterial.cpp:407
Base class for 2D and 3D materials.
Definition: NDMaterial.h:101
virtual void setRho(const double &)
Set material density.
Definition: NDMaterial.cpp:100
virtual double getpsi(void) const
Return the material psi??.
Definition: NDMaterial.cpp:118
Data to transmit for a pointer «broked».
Definition: BrokedPtrCommMetaData.h:40
virtual NDMaterial * getCopy(void) const =0
Virtual constructor.
virtual int getResponse(int responseID, Information &matInformation)
Returns material response.
Definition: NDMaterial.cpp:359
const Vector & getInitialGeneralizedStrain(void) const
Return the initial strain.
Definition: NDMaterial.cpp:226
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35
virtual int setTrialStrainIncr(const Vector &v)
Set trial strain increment.
Definition: NDMaterial.cpp:150
Matrix of floats.
Definition: Matrix.h:111
Parameter.
Definition: Parameter.h:68
virtual const Vector & getCommittedStrain(void)
Returns committed strains.
Definition: NDMaterial.cpp:126
virtual int activateParameter(int parameterID)
Activates the parameter identified by parameterID.
Definition: NDMaterial.cpp:420
Strain tensor.
Definition: straint.h:68
virtual int setParameter(const std::vector< std::string > &argv, Parameter &param)
Sets the value param to the parameter argv.
Definition: NDMaterial.cpp:414
Matrix getValues(const std::string &, bool silent=false) const
Returns material response.
Definition: NDMaterial.cpp:377
virtual const Vector & getCommittedStress(void)
Returns committed stresses.
Definition: NDMaterial.cpp:122
virtual const Vector & getStress(void) const
Returns the material stress vector at the current trial strain.
Definition: NDMaterial.cpp:182