ElasticIsotropicBeamFiber.cpp

Go to the documentation of this file.
00001 /* ****************************************************************** **
00002 **    OpenSees - Open System for Earthquake Engineering Simulation    **
00003 **          Pacific Earthquake Engineering Research Center            **
00004 **                                                                    **
00005 **                                                                    **
00006 ** (C) Copyright 1999, The Regents of the University of California    **
00007 ** All Rights Reserved.                                               **
00008 **                                                                    **
00009 ** Commercial use of this program without express permission of the   **
00010 ** University of California, Berkeley, is strictly prohibited.  See   **
00011 ** file 'COPYRIGHT'  in main directory for information on usage and   **
00012 ** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
00013 **                                                                    **
00014 ** Developed by:                                                      **
00015 **   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
00016 **   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
00017 **   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
00018 **                                                                    **
00019 ** ****************************************************************** */
00020 
00021 // $Revision: 1.3 $
00022 // $Date: 2002/12/05 22:49:09 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/ElasticIsotropicBeamFiber.cpp,v $
00024 
00025 // Written: MHS
00026 // Created: Aug 2001
00027 //
00028 // Description: Elastic isotropic model where stress components 22, 33, and 23
00029 // are condensed out.
00030 
00031 #include <ElasticIsotropicBeamFiber.h>           
00032 #include <Channel.h>
00033 #include <Tensor.h>
00034 
00035 Vector ElasticIsotropicBeamFiber::sigma(3);
00036 Matrix ElasticIsotropicBeamFiber::D(3,3);
00037 
00038 ElasticIsotropicBeamFiber::ElasticIsotropicBeamFiber
00039 (int tag, double E, double nu, double rho) :
00040  ElasticIsotropicMaterial (tag, ND_TAG_ElasticIsotropicBeamFiber, E, nu, rho),
00041  Tepsilon(3)
00042 {
00043 
00044 }
00045 
00046 ElasticIsotropicBeamFiber::ElasticIsotropicBeamFiber():
00047  ElasticIsotropicMaterial (0, ND_TAG_ElasticIsotropicBeamFiber, 0.0, 0.0),
00048  Tepsilon(3)
00049 {
00050 
00051 }
00052 
00053 ElasticIsotropicBeamFiber::~ElasticIsotropicBeamFiber ()
00054 {
00055 
00056 }
00057 
00058 int
00059 ElasticIsotropicBeamFiber::setTrialStrain (const Vector &strain)
00060 {
00061         Tepsilon = strain;
00062 
00063         return 0;
00064 }
00065 
00066 int
00067 ElasticIsotropicBeamFiber::setTrialStrain (const Vector &strain, const Vector &rate)
00068 {
00069         Tepsilon = strain;
00070 
00071         return 0;
00072 }
00073 
00074 int
00075 ElasticIsotropicBeamFiber::setTrialStrainIncr (const Vector &strain)
00076 {
00077         return 0;
00078 }
00079 
00080 int
00081 ElasticIsotropicBeamFiber::setTrialStrainIncr (const Vector &strain, const Vector &rate)
00082 {
00083         return 0;
00084 }
00085 
00086 const Matrix&
00087 ElasticIsotropicBeamFiber::getTangent (void)
00088 {
00089         double mu2 = E/(1.0+v);
00090         double lam = v*mu2/(1.0-2.0*v);
00091         double mu = 0.50*mu2;
00092 
00093         D(0,0) = mu*(mu2+3.0*lam)/(mu+lam);
00094         D(1,1) = mu;
00095         D(2,2) = mu;
00096 
00097         return D;
00098 }
00099 
00100 const Matrix&
00101 ElasticIsotropicBeamFiber::getInitialTangent (void)
00102 {
00103         double mu2 = E/(1.0+v);
00104         double lam = v*mu2/(1.0-2.0*v);
00105         double mu = 0.50*mu2;
00106 
00107         D(0,0) = mu*(mu2+3.0*lam)/(mu+lam);
00108         D(1,1) = mu;
00109         D(2,2) = mu;
00110 
00111         return D;
00112 }
00113 
00114 const Vector&
00115 ElasticIsotropicBeamFiber::getStress (void)
00116 {
00117         double mu2 = E/(1.0+v);
00118         double lam = v*mu2/(1.0-2.0*v);
00119         double mu = 0.50*mu2;
00120 
00121         sigma(0) = mu*(mu2+3.0*lam)/(mu+lam)*Tepsilon(0);
00122         sigma(1) = mu*Tepsilon(1);
00123         sigma(2) = mu*Tepsilon(2);
00124         
00125         return sigma;
00126 }
00127 
00128 const Vector&
00129 ElasticIsotropicBeamFiber::getStrain (void)
00130 {
00131         return Tepsilon;
00132 }
00133 
00134 int
00135 ElasticIsotropicBeamFiber::commitState (void)
00136 {
00137         return 0;
00138 }
00139 
00140 int
00141 ElasticIsotropicBeamFiber::revertToLastCommit (void)
00142 {
00143         return 0;
00144 }
00145 
00146 int
00147 ElasticIsotropicBeamFiber::revertToStart (void)
00148 {
00149         return 0;
00150 }
00151 
00152 NDMaterial*
00153 ElasticIsotropicBeamFiber::getCopy (void)
00154 {
00155         ElasticIsotropicBeamFiber *theCopy =
00156                 new ElasticIsotropicBeamFiber (this->getTag(), E, v, rho);
00157 
00158         return theCopy;
00159 }
00160 
00161 const char*
00162 ElasticIsotropicBeamFiber::getType (void) const
00163 {
00164         return "BeamFiber";
00165 }
00166 
00167 int
00168 ElasticIsotropicBeamFiber::getOrder (void) const
00169 {
00170         return 3;
00171 }
00172 

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