LegendreBeamIntegration.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.1 $
00022 // $Date: 2006/01/17 21:12:56 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/forceBeamColumn/LegendreBeamIntegration.cpp,v $
00024 
00025 #include <LegendreBeamIntegration.h>
00026 
00027 LegendreBeamIntegration::LegendreBeamIntegration():
00028   BeamIntegration(BEAM_INTEGRATION_TAG_Legendre)
00029 {
00030   // Nothing to do
00031 }
00032 
00033 LegendreBeamIntegration::~LegendreBeamIntegration()
00034 {
00035   // Nothing to do
00036 }
00037 
00038 BeamIntegration*
00039 LegendreBeamIntegration::getCopy(void)
00040 {
00041   return new LegendreBeamIntegration();
00042 }
00043 
00044 void
00045 LegendreBeamIntegration::getSectionLocations(int numSections, double L,
00046                                              double *xi)
00047 {
00048   switch(numSections) {
00049     
00050   case 1:
00051     xi[0] = 0.0;
00052     break;
00053 
00054   case 2:
00055     xi[0] = -0.577350269189626;
00056     xi[1] =  0.577350269189626;
00057     break;
00058     
00059   case 3:
00060     xi[0] = -0.774596669241483;
00061     xi[1] =  0.0;
00062     xi[2] =  0.774596669241483;
00063     break;
00064     
00065   case 4:
00066     xi[0] = -0.861136311594053;
00067     xi[1] = -0.339981043584856;
00068     xi[2] =  0.339981043584856;
00069     xi[3] =  0.861136311594053;
00070     break;
00071     
00072   case 5:
00073     xi[0] = -0.906179845938664;
00074     xi[1] = -0.538469310105683;
00075     xi[2] =  0.0;
00076     xi[3] =  0.538469310105683;
00077     xi[4] =  0.906179845938664;
00078     break;
00079     
00080   case 6:
00081     xi[0] = -0.932469514203152;
00082     xi[1] = -0.661209386466265;
00083     xi[2] = -0.238619186083197;
00084     xi[3] =  0.238619186083197;
00085     xi[4] =  0.661209386466265;
00086     xi[5] =  0.932469514203152;
00087     break;
00088     
00089   case 7:
00090     xi[0] = -0.949107912342759;
00091     xi[1] = -0.741531185599394;
00092     xi[2] = -0.405845151377397;
00093     xi[3] =  0.0;
00094     xi[4] =  0.405845151377397;
00095     xi[5] =  0.741531185599394;
00096     xi[6] =  0.949107912342759;
00097     break;
00098 
00099   case 8:
00100     xi[0] = -0.960289856497536;
00101     xi[1] = -0.796666477413627;
00102     xi[2] = -0.525532409916329;
00103     xi[3] = -0.183434642495650;
00104     xi[4] =  0.183434642495650;
00105     xi[5] =  0.525532409916329;
00106     xi[6] =  0.796666477413627;
00107     xi[7] =  0.960289856497536;
00108     break;
00109     
00110   case 9:
00111     xi[0] = -0.968160239507626;
00112     xi[1] = -0.836031107326636;
00113     xi[2] = -0.613371432700590;
00114     xi[3] = -0.324253423403809;
00115     xi[4] =  0.0;
00116     xi[5] =  0.324253423403809;
00117     xi[6] =  0.613371432700590;
00118     xi[7] =  0.836031107326636;
00119     xi[8] =  0.968160239507626;
00120     break;
00121 
00122   case 10:
00123     xi[0] = -0.973906528517172;
00124     xi[1] = -0.865063366688985;
00125     xi[2] = -0.679409568299024;
00126     xi[3] = -0.433395394129247;
00127     xi[4] = -0.148874338981631;
00128     xi[5] =  0.148874338981631;
00129     xi[6] =  0.433395394129247;
00130     xi[7] =  0.679409568299024;
00131     xi[8] =  0.865063366688985;
00132     xi[9] =  0.973906528517172;
00133     break;
00134 
00135   default:
00136     break;
00137   }
00138 
00139   for (int i = 0; i < numSections; i++)
00140     xi[i]  = 0.5*(xi[i] + 1.0);
00141 }
00142 
00143 void
00144 LegendreBeamIntegration::getSectionWeights(int numSections, double L,
00145                                            double *wt)
00146 {
00147   switch (numSections) {
00148   
00149   case 1:
00150     wt[0] = 2.0;
00151     break;
00152   
00153   case 2:
00154     wt[0] = 1.0;
00155     wt[1] = 1.0;
00156     break;
00157     
00158   case 3:
00159     wt[0] = 0.555555555555556;
00160     wt[1] = 0.888888888888889;
00161     wt[2] = 0.555555555555556;
00162     break;
00163     
00164   case 4:    
00165     wt[0] = 0.347854845137454;
00166     wt[1] = 0.652145154862546;
00167     wt[2] = 0.652145154862546;
00168     wt[3] = 0.347854845137454;
00169     break;
00170     
00171   case 5:
00172     wt[0] = 0.236926885056189;
00173     wt[1] = 0.478628670499366;
00174     wt[2] = 0.568888888888889;
00175     wt[3] = 0.478628670499366;
00176     wt[4] = 0.236926885056189;
00177     break;
00178     
00179   case 6:
00180     wt[0] = 0.171324492379170;
00181     wt[1] = 0.360761573048139;
00182     wt[2] = 0.467913934572691;
00183     wt[3] = 0.467913934572691;
00184     wt[4] = 0.360761573048139;
00185     wt[5] = 0.171324492379170;
00186     break;
00187     
00188   case 7:
00189     wt[0] = 0.129484966168870;
00190     wt[1] = 0.279705391489277;
00191     wt[2] = 0.381830050505119;
00192     wt[3] = 0.417959183673469;
00193     wt[4] = 0.381830050505119;
00194     wt[5] = 0.279705391489277;
00195     wt[6] = 0.129484966168870;
00196     break;
00197 
00198   case 8:    
00199     wt[0] = 0.101228536290376;
00200     wt[1] = 0.222381034453374;
00201     wt[2] = 0.313706645877887;
00202     wt[3] = 0.362683783378362;
00203     wt[4] = 0.362683783378362;
00204     wt[5] = 0.313706645877887;
00205     wt[6] = 0.222381034453374;
00206     wt[7] = 0.101228536290376;
00207     break;
00208 
00209   case 9:    
00210     wt[0] = 0.081274388361574;
00211     wt[1] = 0.180648160694857;
00212     wt[2] = 0.260610696402935;
00213     wt[3] = 0.312347077040003;
00214     wt[4] = 0.330239355001260;
00215     wt[5] = 0.312347077040003;
00216     wt[6] = 0.260610696402935;
00217     wt[7] = 0.180648160694857;
00218     wt[8] = 0.081274388361574;
00219     break;
00220 
00221   case 10:
00222     wt[0] = 0.066671344308688;
00223     wt[1] = 0.149451349150581;
00224     wt[2] = 0.219086362515982;
00225     wt[3] = 0.269266719309996;
00226     wt[4] = 0.295524224714753;
00227     wt[5] = 0.295524224714753;
00228     wt[6] = 0.269266719309996;
00229     wt[7] = 0.219086362515982;
00230     wt[8] = 0.149451349150581;
00231     wt[9] = 0.066671344308688;
00232     break;
00233 
00234   default:
00235     break;
00236   }
00237   
00238   for (int i = 0; i < numSections; i++)
00239     wt[i] *= 0.5;
00240 }
00241 
00242 void
00243 LegendreBeamIntegration::Print(OPS_Stream &s, int flag)
00244 {
00245   s << "Legendre" << endln;
00246 }

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