NewtonCotesBeamIntegration.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/NewtonCotesBeamIntegration.cpp,v $
00024 
00025 #include <NewtonCotesBeamIntegration.h>
00026 
00027 NewtonCotesBeamIntegration::NewtonCotesBeamIntegration():
00028   BeamIntegration(BEAM_INTEGRATION_TAG_NewtonCotes)
00029 {
00030   // Nothing to do
00031 }
00032 
00033 NewtonCotesBeamIntegration::~NewtonCotesBeamIntegration()
00034 {
00035   // Nothing to do
00036 }
00037 
00038 BeamIntegration*
00039 NewtonCotesBeamIntegration::getCopy(void)
00040 {
00041   return new NewtonCotesBeamIntegration();
00042 }
00043 
00044 void
00045 NewtonCotesBeamIntegration::getSectionLocations(int numSections, double L,
00046                                                 double *xi)
00047 {
00048   switch(numSections) {
00049     
00050   case 2:
00051     xi[0] = -1.0;
00052     xi[1] =  1.0;
00053     break;
00054     
00055   case 3:
00056     xi[0] = -1.0;
00057     xi[1] =  0.0;
00058     xi[2] =  1.0;
00059     break;
00060     
00061   case 4:
00062     xi[0] = -1.0;
00063     xi[1] = -0.3333333333;
00064     xi[2] =  0.3333333333;
00065     xi[3] =  1.0;
00066     break;
00067     
00068   case 5:
00069     xi[0] = -1.0;
00070     xi[1] = -0.5;
00071     xi[2] =  0.0;
00072     xi[3] =  0.5;
00073     xi[4] =  1.0;
00074     break;
00075     
00076   case 6:
00077     xi[0] = -1.0;
00078     xi[1] = -0.6;
00079     xi[2] = -0.2;
00080     xi[3] =  0.2;
00081     xi[4] =  0.6;
00082     xi[5] =  1.0;
00083     break;
00084     
00085   case 7:
00086     xi[0] = -1.0;
00087     xi[1] = -0.6666666667;
00088     xi[2] = -0.3333333333;
00089     xi[3] =  0.0;
00090     xi[4] =  0.3333333333;
00091     xi[5] =  0.6666666667;
00092     xi[6] =  1.0;
00093     break;
00094 
00095   case 8:
00096     xi[0] = -1.0;
00097     xi[1] = -0.7142857143;
00098     xi[2] = -0.4285714286;
00099     xi[3] = -0.1428571429;
00100     xi[4] =  0.1428571429;
00101     xi[5] =  0.4285714286;
00102     xi[6] =  0.7142857143;
00103     xi[7] =  1.0;
00104     break;
00105     
00106   case 9:
00107     xi[0] = -1.0;
00108     xi[1] = -0.75;
00109     xi[2] = -0.5;
00110     xi[3] = -0.25;
00111     xi[4] =  0.0;
00112     xi[5] =  0.25;
00113     xi[6] =  0.5;
00114     xi[7] =  0.75;
00115     xi[8] =  1.0;
00116     break;
00117 
00118   case 10:
00119     xi[0] = -1.0;
00120     xi[1] = -0.7777777778;
00121     xi[2] = -0.5555555556;
00122     xi[3] = -0.3333333333;
00123     xi[4] = -0.1111111111;
00124     xi[5] =  0.1111111111;
00125     xi[6] =  0.3333333333;
00126     xi[7] =  0.5555555556;
00127     xi[8] =  0.77777777778;
00128     xi[9] =  1.0;
00129     break;
00130   }
00131   
00132   for (int i = 0; i < numSections; i++)
00133     xi[i]  = 0.5*(xi[i] + 1.0);
00134 }
00135 
00136 void
00137 NewtonCotesBeamIntegration::getSectionWeights(int numSections, double L,
00138                                               double *wt)
00139 {
00140   switch (numSections) {
00141     
00142   case 2:
00143     wt[0] = 1.0;
00144     wt[1] = 1.0;
00145     break;
00146     
00147   case 3:
00148     wt[0] = 0.333333333333333;
00149     wt[1] = 1.333333333333333;
00150     wt[2] = 0.333333333333333;
00151     break;
00152     
00153   case 4:    
00154     wt[0] = 0.25;
00155     wt[1] = 0.75;
00156     wt[2] = 0.75;
00157     wt[3] = 0.25;
00158     break;
00159     
00160   case 5:
00161     wt[0] = 0.1555555556;
00162     wt[1] = 0.7111111111;
00163     wt[2] = 0.2666666667;
00164     wt[3] = 0.7111111111;
00165     wt[4] = 0.1555555556;
00166     break;
00167     
00168   case 6:    
00169     wt[0] = 0.1319444444;
00170     wt[1] = 0.5208333333;
00171     wt[2] = 0.3472222222;
00172     wt[3] = 0.3472222222;
00173     wt[4] = 0.5208333333;
00174     wt[5] = 0.1319444444;
00175     break;
00176     
00177   case 7:    
00178     wt[0] = 0.09761904762;
00179     wt[1] = 0.5142857143;
00180     wt[2] = 0.06428571429;
00181     wt[3] = 0.6476190476;
00182     wt[4] = 0.06428571429;
00183     wt[5] = 0.5142857143;
00184     wt[6] = 0.09761904762;
00185     break;
00186 
00187   case 8:    
00188     wt[0] = 0.0869212963;
00189     wt[1] = 0.4140046296;
00190     wt[2] = 0.153125;
00191     wt[3] = 0.3459490741;
00192     wt[4] = 0.3459490741;
00193     wt[5] = 0.153125;
00194     wt[6] = 0.4140046296;
00195     wt[7] = 0.0869212963;
00196     break;
00197 
00198   case 9:    
00199     wt[0] =  0.0697707231;
00200     wt[1] =  0.4153791887;
00201     wt[2] = -0.06546737213;
00202     wt[3] =  0.7404585538;
00203     wt[4] = -0.3202821869;
00204     wt[5] =  0.7404585538;
00205     wt[6] = -0.06546737213;
00206     wt[7] =  0.4153791887;
00207     wt[8] =  0.0697707231;
00208     break;
00209 
00210   case 10:    
00211     wt[0] = 0.06377232143;
00212     wt[1] = 0.3513616071;
00213     wt[2] = 0.02410714286;
00214     wt[3] = 0.4317857143;
00215     wt[4] = 0.1289732143;
00216     wt[5] = 0.1289732143;
00217     wt[6] = 0.4317857143;
00218     wt[7] = 0.02410714286;
00219     wt[8] = 0.3513616071;
00220     wt[9] = 0.06377232143;
00221     break;
00222   }
00223   
00224   for (int i = 0; i < numSections; i++)
00225     wt[i] *= 0.5;
00226 }
00227 
00228 void
00229 NewtonCotesBeamIntegration::Print(OPS_Stream &s, int flag)
00230 {
00231   s << "NewtonCotes" << endln;
00232 }

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