/
FlagShapeMaterial.h
93 lines (74 loc) · 3.29 KB
/
FlagShapeMaterial.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* ****************************************************************** **
** OpenSees - Open System for Earthquake Engineering Simulation **
** Pacific Earthquake Engineering Research Center **
** **
** **
** (C) Copyright 1999, The Regents of the University of California **
** All Rights Reserved. **
** **
** Commercial use of this program without express permission of the **
** University of California, Berkeley, is strictly prohibited. See **
** file 'COPYRIGHT' in main directory for information on usage and **
** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. **
** **
** Developed by: **
** Frank McKenna (fmckenna@ce.berkeley.edu) **
** Gregory L. Fenves (fenves@ce.berkeley.edu) **
** Filip C. Filippou (filippou@ce.berkeley.edu) **
** **
** ****************************************************************** */
// $Revision: 0 $
// $Date: 2021-02-22 $
// $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/FlagShapeMaterial.h,v $
#ifndef FlagShapeMaterial_h
#define FlagShapeMaterial_h
// Written: CLLee
// Created: Feb 2021
// Reference: HardeningMaterial
//
// Description: This file contains the class definition for
// FlagShapeMaterial. FlagShapeMaterial provides the abstraction
// for a one-dimensional rate-independent plasticity model
// with kinematic hardening and a shift of backstress using beta variable
#include <UniaxialMaterial.h>
#include <Matrix.h>
class FlagShapeMaterial : public UniaxialMaterial
{
public:
FlagShapeMaterial(int tag, double E, double fy,
double Eh, double beta = 0.0);
FlagShapeMaterial();
const char* getClassType(void) const { return "FlagShapeMaterial"; };
int setTrialStrain(double strain, double strainRate = 0.0);
double getStrain(void);
double getStress(void);
double getTangent(void);
double getInitialTangent(void) { return E; };
int commitState(void);
int revertToLastCommit(void);
int revertToStart(void);
UniaxialMaterial* getCopy(void);
int sendSelf(int commitTag, Channel& theChannel);
int recvSelf(int commitTag, Channel& theChannel,
FEM_ObjectBroker& theBroker);
void Print(OPS_Stream& s, int flag = 0);
protected:
private:
// Material parameters
double E; // Elastic modulus
double fy; // Yield stress
double Eh; // Post-yield modulus
double beta;
// Committed history variables
double CplasticStrain; // Committed plastic strain
double CbackStress; // Committed back stress
// Trial history variables
double TplasticStrain; // Trial plastic strain
double TbackStress; // Trial internal hardening variable
// Trial state variables
double Tstrain; // Trial strain
double Tstress; // Trial stress
double Ttangent; // Trial tangent
};
void* OPS_FlagShapeMaterial();
#endif