ExponReducing.cpp

Go to the documentation of this file.
00001 // ExponReducing.cpp: implementation of the ExponReducing class.
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 //      opserr << "ResFact = " <<  res_fact << endln; opserr << "\a";
00025 }
00026 
00027 
00028 ExponReducing::~ExponReducing()
00029 {
00030 
00031 }
00032 
00033 
00034 double ExponReducing::getTrialPlasticStiffness()
00035 {
00036         double K ;//= Kp0*exp(-1*val_trial*alpha);
00037 
00038         // if x0 and Kp0 is a const:
00039         // K = Kp0(1.0  - exp(-alpha*x0 + alpha*val_trial));    
00040         // K = Kp0*(1.0 - exp(-alpha + alpha*val_trial));
00041         
00042         // for pinching type stuff
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 //      opserr << "K = " << K << ", sFactor = " << sFactor << endln;
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 

Generated on Mon Oct 23 15:05:23 2006 for OpenSees by doxygen 1.5.0