%File: ~/OOP/material/Steel01.tex
%What: "@(#) Steel01.tex, revA"

UNDER CONSTRUCTION. \\

\noindent {\bf Files}   \\
\indent \#include $<\tilde{ }$/material/Steel01.h$>$  \\

\noindent {\bf Class Declaration}  \\
\indent class Steel01 : public MaterialModel \\

\noindent {\bf Class Hierarchy} \\
\indent TaggedObject \\
\indent MovableObject \\
\indent\indent MaterialModel \\
\indent\indent\indent UniaxialMaterial \\
\indent\indent\indent\indent {\bf Steel01} \\

\noindent {\bf Description}  \\
\indent Steel01 provides the abstraction of a bilinear steel model
with isotropic hardening. The model contains a yield strength of fy,
an initial elastic tangent of E0, and a hardening ratio of b. The
optional parameters a1, a2, a3, and a4 control the amount of isotropic
hardening (default values are provided). Specification of minimum and
maximum failure strains through the -min and -max switches is optional
and must appear after the specification of the hardening parameters,
if present. The argument matTag is used to uniquely identify the
material object among material objects in the BasicBuilder object. 


\noindent {\bf Class Interface} \\
\indent // Constructor \\
\indent {\em Steel01 (int tag, double fy, double E0, double b,
                      double a1, double a2, double a3, double a4,
                      double epsmin, double epsmax);}  \\ \\
\indent // Destructor \\
\indent {\em $\tilde{ }$Steel01();}\\ \\
\indent // Public Methods \\
\indent {\em int setTrialStrain(double strain); } \\
\indent {\em double getStress(void); } \\
\indent {\em double getTangent(void); } \\
\indent {\em int commitState(void); } \\
\indent {\em int revertToLastCommit(void); } \\
\indent {\em int revertToStart(void); } \\
\indent {\em ElasticMaterial *getCopy(void); } \\ \\
\indent // Public Methods for Output\\
\indent {\em    int sendSelf(int commitTag, Channel \&theChannel); }\\
\indent {\em    int recvSelf(int commitTag, Channel \&theChannel, 
		 FEM\_ObjectBroker \&theBroker); }\\
\indent {\em    void Print(OPS_Stream \&s, int flag =0);} \\
\indent // Private Methods \\
\indent {\em void determineTrialState (double dStrain); } \\
\indent {\em void detectLoadReversal (double dStrain); } \\
\indent {\em void setHistoryVariables (); } \\

\noindent {\bf Constructor}  \\
\indent {\em Steel01 (int tag, double fy, double E0, double b,
                      double a1, double a2, double a3, double a4,
                      double epsmin, double epsmax);}  \\

\noindent {\bf Destructor} \\
\indent {\em virtual~ $\tilde{}$ElasticMaterial();}\\ 
Does nothing. \\

\noindent {\bf Public Methods} \\
\indent {\em int setTrialStrain(double strain); }  \\


