Intrepid
/usr/src/RPM/BUILD/trilinos-11.12.1/packages/intrepid/src/Discretization/Integration/Intrepid_CubatureDirectLineGaussJacobi20Def.hpp
Go to the documentation of this file.
00001 // @HEADER
00002 // ************************************************************************
00003 //
00004 //                           Intrepid Package
00005 //                 Copyright (2007) Sandia Corporation
00006 //
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Pavel Bochev  (pbboche@sandia.gov)
00038 //                    Denis Ridzal  (dridzal@sandia.gov), or
00039 //                    Kara Peterson (kjpeter@sandia.gov)
00040 //
00041 // ************************************************************************
00042 // @HEADER
00043 
00049 namespace Intrepid {
00050 
00051 template <class Scalar, class ArrayPoint, class ArrayWeight>
00052 CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::CubatureDirectLineGaussJacobi20(const int degree) {
00053   this->degree_    = degree;
00054   this->dimension_ = 1;
00055   TEUCHOS_TEST_FOR_EXCEPTION((degree < 0) || (degree > INTREPID_CUBATURE_LINE_GAUSSJACOBI20_MAX_ENUM),
00056                      std::out_of_range,
00057                      ">>> ERROR (CubatureDirectLineGaussJacobi20): No cubature rule implemented for the desired polynomial degree.");
00058 } // end constructor
00059 
00060 
00061 
00062 template <class Scalar, class ArrayPoint, class ArrayWeight>
00063 const CubatureTemplate *  CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::exposeCubatureData() const {
00064   return cubature_data_;
00065 }
00066 
00067 
00068 
00069 template <class Scalar, class ArrayPoint, class ArrayWeight>
00070 int CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::getMaxAccuracy() const {
00071   return INTREPID_CUBATURE_LINE_GAUSSJACOBI20_MAX_ENUM;
00072 }
00073 
00074 
00075 
00076 template <class Scalar, class ArrayPoint, class ArrayWeight>
00077 const char* CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::getName() const {
00078   return cubature_name_;
00079 } // end getName
00080 
00081 
00082 
00083 template <class Scalar, class ArrayPoint, class ArrayWeight>
00084 const char* CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::cubature_name_ = "INTREPID_CUBATURE_LINE_GAUSSJACOBI20";
00085 
00086 
00087 //-------------------------------------------------------------------------------------//
00088 //                          Definition of cubature templates                           //
00089 //-------------------------------------------------------------------------------------//
00090 
00091 /*
00092    Cubature templates for lines are defined the reference cell:
00093 
00094    Line -> (-1,0,0),(1,0,0)
00095 */
00096 
00097 /*
00098    This static const member contains templates for GaussJacobi20(-Legendre) rules.
00099 */
00100 
00101 template <class Scalar, class ArrayPoint, class ArrayWeight>
00102 const CubatureTemplate CubatureDirectLineGaussJacobi20<Scalar,ArrayPoint,ArrayWeight>::cubature_data_[INTREPID_CUBATURE_LINE_GAUSSJACOBI20_MAX_ENUM+1] =
00103 {
00104 
00105   // Collection of GaussJacobi20 rules on [-1,1]
00106   // The rule with array index i is exact for polynomials up to order i
00107   {
00108     1,
00109     {{-0.5, 0.0, 0.0}},
00110     {2.66666666666666666666666666}
00111   },
00112   {
00113     1,
00114     {{-0.5, 0.0, 0.0}},
00115     {2.66666666666666666666666666}
00116   },
00117   {
00118     2,
00119     {{-7.549703546891172e-1, 0.0, 0.0},
00120      {8.830368802245062e-2, 0.0, 0.0}},
00121     {1.860379610028064,
00122      8.062870566386037e-01}
00123   },
00124   {
00125     2,
00126     {{-7.549703546891172e-1, 0.0, 0.0},
00127      {8.830368802245062e-2, 0.0, 0.0}},
00128     {1.860379610028064,
00129      8.062870566386037e-01}
00130   },
00131   {
00132     3,
00133     {{-8.540119518537008e-01, 0.0, 0.0},
00134      {-3.059924679232963e-01, 0.0, 0.0},
00135      { 4.100044197769969e-01, 0.0, 0.0}},
00136     {1.257090888519093e+00,
00137      1.169970154078928e+00,
00138      2.396056240686456e-01}
00139   },
00140   {
00141     3,
00142     {{-8.540119518537008e-01, 0.0, 0.0},
00143      {-3.059924679232963e-01, 0.0, 0.0},
00144      { 4.100044197769969e-01, 0.0, 0.0}},
00145     {1.257090888519093e+00,
00146      1.169970154078928e+00,
00147      2.396056240686456e-01}
00148   },
00149   {
00150     4,
00151     {{-9.029989011060054e-01, 0.0, 0.0},
00152      {-5.227985248962754e-01, 0.0, 0.0},
00153      {3.409459020873505e-02, 0.0, 0.0},
00154      {5.917028357935457e-01, 0.0, 0.0}},
00155     {8.871073248902235e-01,
00156      1.147670318393715e+00,
00157      5.490710973833849e-01,
00158      8.281792599934450e-02}
00159   },
00160   {
00161     4,
00162     {{-9.029989011060054e-01, 0.0, 0.0},
00163      {-5.227985248962754e-01, 0.0, 0.0},
00164      {3.409459020873505e-02, 0.0, 0.0},
00165      {5.917028357935457e-01, 0.0, 0.0}},
00166     {8.871073248902235e-01,
00167      1.147670318393715e+00,
00168      5.490710973833849e-01,
00169      8.281792599934450e-02}
00170   },
00171   {
00172     5,
00173     {{-9.308421201635699e-01, 0.0, 0.0},
00174      {-6.530393584566085e-01, 0.0, 0.0},
00175      {-2.202272258689614e-01, 0.0, 0.0},
00176      {2.686669452617736e-01, 0.0, 0.0},
00177      {7.021084258940329e-01, 0.0, 0.0}},
00178     {6.541182742861678e-01,
00179      1.009591695199292e+00,
00180      7.136012897727201e-01,
00181      2.564448057836956e-01,
00182      3.291060162479211e-02}
00183   },
00184   {
00185     5,
00186     {{-9.308421201635699e-01, 0.0, 0.0},
00187      {-6.530393584566085e-01, 0.0, 0.0},
00188      {-2.202272258689614e-01, 0.0, 0.0},
00189      {2.686669452617736e-01, 0.0, 0.0},
00190      {7.021084258940329e-01, 0.0, 0.0}},
00191     {6.541182742861678e-01,
00192      1.009591695199292e+00,
00193      7.136012897727201e-01,
00194      2.564448057836956e-01,
00195      3.291060162479211e-02}
00196   },
00197   {
00198     6,
00199     {{-9.481908898126656e-01, 0.0, 0.0},
00200      {-7.368721166840297e-01, 0.0, 0.0},
00201      {-3.951261639542174e-01, 0.0, 0.0},
00202      {1.807282632950432e-02, 0.0, 0.0},
00203      {4.313622546234276e-01, 0.0, 0.0},
00204      {7.736112323551237e-01, 0.0, 0.0}},
00205     {5.003096218126469e-01,
00206      8.590119978942462e-01,
00207      7.566174939883307e-01,
00208      4.103165690369299e-01,
00209      1.257623774795603e-01,
00210      1.464860645495425e-02}
00211   },
00212   {
00213     6,
00214     {{-9.481908898126656e-01, 0.0, 0.0},
00215      {-7.368721166840297e-01, 0.0, 0.0},
00216      {-3.951261639542174e-01, 0.0, 0.0},
00217      {1.807282632950432e-02, 0.0, 0.0},
00218      {4.313622546234276e-01, 0.0, 0.0},
00219      {7.736112323551237e-01, 0.0, 0.0}},
00220     {5.003096218126469e-01,
00221      8.590119978942462e-01,
00222      7.566174939883307e-01,
00223      4.103165690369299e-01,
00224      1.257623774795603e-01,
00225      1.464860645495425e-02}
00226   } // end GaussJacobi20
00227 
00228 };
00229     
00230 } // end namespace Intrepid