00001
00002
00004
00005 #include "ExponReducing.h"
00006 #include <stdlib.h>
00007
00008 #define MAT_TAG_EXPON -1
00009 #define DEBG 0
00011 // Construction/Destruction
00013
00014 ExponReducing::ExponReducing(int tag, double kp0, double alfa)
00015 :PlasticHardeningMaterial(tag,MAT_TAG_EXPON),
00016 Kp0(kp0), alpha(alfa), resFactor(0.0)
00017 {
00018 }
00019
00020 ExponReducing::ExponReducing(int tag, double kp0, double alfa, double min_fact)
00021 :PlasticHardeningMaterial(tag,MAT_TAG_EXPON),
00022 Kp0(kp0), alpha(alfa), resFactor(min_fact)
00023 {
00024
00025 }
00026
00027
00028 ExponReducing::~ExponReducing()
00029 {
00030
00031 }
00032
00033
00034 double ExponReducing::getTrialPlasticStiffness()
00035 {
00036 double K ;
00037
00038
00039
00040
00041
00042
00043 K = residual*Kp0*(1 - exp(-1*alpha*val_trial));
00044
00045 if(sFactor != 1.0)
00046 K = Kp0*sFactor;
00047
00048 if(K < (Kp0*resFactor))
00049 K = Kp0*resFactor;
00050
00051
00052
00053 if(K <0.0)
00054 {
00055 opserr << "Ri = " << val_trial << ", Factor = " << K/Kp0 << ", res_fact = " << resFactor << endln;
00056 opserr << "\a";
00057 }
00058
00059 return K;
00060 }
00061
00062
00063 void ExponReducing::Print(OPS_Stream &s, int flag)
00064 {
00065 s << "MultiLinear, Tag = " << getTag() << endln;
00066 s << "Kp0 = " << Kp0 << endln;
00067 s << "Alpha = " << alpha << endln;
00068 }
00069
00070 PlasticHardeningMaterial *ExponReducing::getCopy(void)
00071 {
00072 PlasticHardeningMaterial *theMat = new ExponReducing(getTag(), Kp0, alpha, resFactor);
00073 return theMat;
00074 }
00075