ElasticIsotropicPlateFiber.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.6 $
00022 // $Date: 2002/12/05 22:49:10 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/ElasticIsotropicPlateFiber.cpp,v $
00024                                                                         
00025                                                                         
00026 
00027 #include <ElasticIsotropicPlateFiber.h>           
00028 #include <Channel.h>
00029 #include <Tensor.h>
00030 
00031 Vector ElasticIsotropicPlateFiber::sigma(5);
00032 Matrix ElasticIsotropicPlateFiber::D(5,5);
00033 
00034 ElasticIsotropicPlateFiber::ElasticIsotropicPlateFiber
00035 (int tag, double E, double nu, double rho) :
00036  ElasticIsotropicMaterial (tag, ND_TAG_ElasticIsotropicPlateFiber, E, nu, rho),
00037  epsilon(5)
00038 {
00039 
00040 }
00041 
00042 ElasticIsotropicPlateFiber::ElasticIsotropicPlateFiber():
00043  ElasticIsotropicMaterial (0, ND_TAG_ElasticIsotropicPlateFiber, 0.0, 0.0),
00044  epsilon(5)
00045 {
00046 
00047 }
00048 
00049 ElasticIsotropicPlateFiber::~ElasticIsotropicPlateFiber ()
00050 {
00051 
00052 }
00053 
00054 int
00055 ElasticIsotropicPlateFiber::setTrialStrain (const Vector &strain)
00056 {
00057   epsilon = strain;
00058   return 0;
00059 }
00060 
00061 int
00062 ElasticIsotropicPlateFiber::setTrialStrain (const Vector &strain, const Vector &rate)
00063 {
00064   epsilon = strain;
00065   return 0;
00066 }
00067 
00068 int
00069 ElasticIsotropicPlateFiber::setTrialStrainIncr (const Vector &strain)
00070 {
00071   epsilon += strain;
00072   return 0;
00073 }
00074 
00075 int
00076 ElasticIsotropicPlateFiber::setTrialStrainIncr (const Vector &strain, const Vector &rate)
00077 {
00078   epsilon += strain;
00079   return 0;
00080 }
00081 
00082 const Matrix&
00083 ElasticIsotropicPlateFiber::getTangent (void)
00084 {
00085     double d00 = E/(1.0-v*v);
00086     double d01 = v*d00;
00087     double d22 = 0.5*(d00-d01);
00088     
00089     D(0,0) = D(1,1) = d00;
00090     D(0,1) = D(1,0) = d01;
00091     D(2,2) = d22;
00092     D(3,3) = d22;
00093     D(4,4) = d22;
00094 
00095     return D;
00096 }
00097 
00098 const Matrix&
00099 ElasticIsotropicPlateFiber::getInitialTangent (void)
00100 {
00101     double d00 = E/(1.0-v*v);
00102     double d01 = v*d00;
00103     double d22 = 0.5*(d00-d01);
00104     
00105     D(0,0) = D(1,1) = d00;
00106     D(0,1) = D(1,0) = d01;
00107     D(2,2) = d22;
00108     D(3,3) = d22;
00109     D(4,4) = d22;
00110 
00111     return D;
00112 }
00113 
00114 const Vector&
00115 ElasticIsotropicPlateFiber::getStress (void)
00116 {
00117     double d00 = E/(1.0-v*v);
00118     double d01 = v*d00;
00119     double d22 = 0.5*(d00-d01);
00120 
00121     double eps0 = epsilon(0);
00122     double eps1 = epsilon(1);
00123 
00124     //sigma = D*epsilon;
00125     sigma(0) = d00*eps0 + d01*eps1;
00126     sigma(1) = d01*eps0 + d00*eps1;
00127 
00128     sigma(2) = d22*epsilon(2);
00129     sigma(3) = d22*epsilon(3);
00130     sigma(4) = d22*epsilon(4);
00131         
00132     return sigma;
00133 }
00134 
00135 const Vector&
00136 ElasticIsotropicPlateFiber::getStrain (void)
00137 {
00138   return epsilon;
00139 }
00140 
00141 int
00142 ElasticIsotropicPlateFiber::commitState (void)
00143 {
00144   return 0;
00145 }
00146 
00147 int
00148 ElasticIsotropicPlateFiber::revertToLastCommit (void)
00149 {
00150   return 0;
00151 }
00152 
00153 int
00154 ElasticIsotropicPlateFiber::revertToStart (void)
00155 {
00156   epsilon.Zero();
00157   return 0;
00158 }
00159 
00160 NDMaterial*
00161 ElasticIsotropicPlateFiber::getCopy (void)
00162 {
00163         ElasticIsotropicPlateFiber *theCopy =
00164                 new ElasticIsotropicPlateFiber (this->getTag(), E, v, rho);
00165 
00166         theCopy->epsilon = epsilon;
00167 
00168         return theCopy;
00169 }
00170 
00171 const char*
00172 ElasticIsotropicPlateFiber::getType (void) const
00173 {
00174         return "PlateFiber";
00175 }
00176 
00177 int
00178 ElasticIsotropicPlateFiber::getOrder (void) const
00179 {
00180         return 5;
00181 }

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