LobattoBeamIntegration.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: 2003/06/10 00:36:09 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/element/forceBeamColumn/LobattoBeamIntegration.cpp,v $
00024 
00025 #include <LobattoBeamIntegration.h>
00026 
00027 LobattoBeamIntegration::LobattoBeamIntegration():
00028   BeamIntegration(BEAM_INTEGRATION_TAG_Lobatto)
00029 {
00030   // Nothing to do
00031 }
00032 
00033 LobattoBeamIntegration::~LobattoBeamIntegration()
00034 {
00035   // Nothing to do
00036 }
00037 
00038 BeamIntegration*
00039 LobattoBeamIntegration::getCopy(void)
00040 {
00041   return new LobattoBeamIntegration();
00042 }
00043 
00044 void
00045 LobattoBeamIntegration::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.44721360;
00064     xi[2] =  0.44721360;
00065     xi[3] =  1.0;
00066     break;
00067     
00068   case 5:
00069     xi[0] = -1.0;
00070     xi[1] = -0.65465367;
00071     xi[2] =  0.0;
00072     xi[3] =  0.65465367;
00073     xi[4] =  1.0;
00074     break;
00075     
00076   case 6:
00077     xi[0] = -1.0;
00078     xi[1] = -0.7650553239;
00079     xi[2] = -0.2852315164;
00080     xi[3] =  0.2852315164;
00081     xi[4] =  0.7650553239;
00082     xi[5] =  1.0;
00083     break;
00084     
00085   case 7:
00086     xi[0] = -1.0;
00087     xi[1] = -0.8302238962;
00088     xi[2] = -0.4688487934;
00089     xi[3] =  0.0;
00090     xi[4] =  0.4688487934;
00091     xi[5] =  0.8302238962;
00092     xi[6] =  1.0;
00093     break;
00094 
00095   case 8:
00096     xi[0] = -1.0;
00097     xi[1] = -0.8717401485;
00098     xi[2] = -0.5917001814;
00099     xi[3] = -0.2092992179;
00100     xi[4] =  0.2092992179;
00101     xi[5] =  0.5917001814;
00102     xi[6] =  0.8717401485;
00103     xi[7] =  1.0;
00104     break;
00105     
00106   case 9:
00107     xi[0] = -1.0;
00108     xi[1] = -0.8997579954;
00109     xi[2] = -0.6771862795;
00110     xi[3] = -0.3631174638;
00111     xi[4] =  0.0;
00112     xi[5] =  0.3631174638;
00113     xi[6] =  0.6771862795;
00114     xi[7] =  0.8997579954;
00115     xi[8] =  1.0;
00116     break;
00117 
00118   case 10:
00119     xi[0] = -1.0;
00120     xi[1] = -0.9195339082;
00121     xi[2] = -0.7387738651;
00122     xi[3] = -0.4779249498;
00123     xi[4] = -0.1652789577;
00124     xi[5] =  0.1652789577;
00125     xi[6] =  0.4779249498;
00126     xi[7] =  0.7387738651;
00127     xi[8] =  0.9195339082;
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 LobattoBeamIntegration::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.166666666666667;
00155     wt[1] = 0.833333333333333;
00156     wt[2] = 0.833333333333333;
00157     wt[3] = 0.166666666666667;
00158     break;
00159     
00160   case 5:
00161     wt[0] = 0.1;
00162     wt[1] = 0.5444444444;
00163     wt[2] = 0.7111111111;
00164     wt[3] = 0.5444444444;
00165     wt[4] = 0.1;
00166     break;
00167     
00168   case 6:    
00169     wt[0] = 0.06666666667;
00170     wt[1] = 0.3784749562;
00171     wt[2] = 0.5548583770;
00172     wt[3] = 0.5548583770;
00173     wt[4] = 0.3784749562;
00174     wt[5] = 0.06666666667;
00175     break;
00176     
00177   case 7:    
00178     wt[0] = 0.04761904762;
00179     wt[1] = 0.2768260473;
00180     wt[2] = 0.4317453812;
00181     wt[3] = 0.4876190476;
00182     wt[4] = 0.4317453812;
00183     wt[5] = 0.2768260473;
00184     wt[6] = 0.04761904762;
00185     break;
00186 
00187   case 8:    
00188     wt[0] = 0.03571428571;
00189     wt[1] = 0.2107042271;
00190     wt[2] = 0.3411226924;
00191     wt[3] = 0.4124587946;
00192     wt[4] = 0.4124587946;
00193     wt[5] = 0.3411226924;
00194     wt[6] = 0.2107042271;
00195     wt[7] = 0.03571428571;
00196     break;
00197 
00198   case 9:    
00199     wt[0] = 0.02777777778;
00200     wt[1] = 0.1654953615;
00201     wt[2] = 0.2745387125;
00202     wt[3] = 0.3464285109;
00203     wt[4] = 0.3715192743;
00204     wt[5] = 0.3464285109;
00205     wt[6] = 0.2745387125;
00206     wt[7] = 0.1654953615;
00207     wt[8] = 0.02777777778;
00208     break;
00209 
00210   case 10:    
00211     wt[0] = 0.02222222222;
00212     wt[1] = 0.1333059908;
00213     wt[2] = 0.2248893421;
00214     wt[3] = 0.2920426836;
00215     wt[4] = 0.3275397611;
00216     wt[5] = 0.3275397611;
00217     wt[6] = 0.2920426836;
00218     wt[7] = 0.2248893421;
00219     wt[8] = 0.1333059908;
00220     wt[9] = 0.02222222222;
00221     break;
00222   }
00223   
00224   for (int i = 0; i < numSections; i++)
00225     wt[i] *= 0.5;
00226 }
00227 
00228 void
00229 LobattoBeamIntegration::Print(OPS_Stream &s, int flag)
00230 {
00231   s << "Lobatto" << endln;
00232 }

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