LCOV - code coverage report
Current view: top level - ugbase/lib_disc/quadrature/gauss - gauss_quad_edge.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 54 0
Test Date: 2025-09-21 23:31:46 Functions: 0.0 % 1 0

            Line data    Source code
       1              : /*
       2              :  * Copyright (c) 2011-2013:  G-CSC, Goethe University Frankfurt
       3              :  * 
       4              :  * This file is part of UG4.
       5              :  * 
       6              :  * UG4 is free software: you can redistribute it and/or modify it under the
       7              :  * terms of the GNU Lesser General Public License version 3 (as published by the
       8              :  * Free Software Foundation) with the following additional attribution
       9              :  * requirements (according to LGPL/GPL v3 §7):
      10              :  * 
      11              :  * (1) The following notice must be displayed in the Appropriate Legal Notices
      12              :  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
      13              :  * 
      14              :  * (2) The following notice must be displayed at a prominent place in the
      15              :  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
      16              :  * 
      17              :  * (3) The following bibliography is recommended for citation and must be
      18              :  * preserved in all covered files:
      19              :  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
      20              :  *   parallel geometric multigrid solver on hierarchically distributed grids.
      21              :  *   Computing and visualization in science 16, 4 (2013), 151-164"
      22              :  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
      23              :  *   flexible software system for simulating pde based models on high performance
      24              :  *   computers. Computing and visualization in science 16, 4 (2013), 165-179"
      25              :  * 
      26              :  * This program is distributed in the hope that it will be useful,
      27              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      28              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      29              :  * GNU Lesser General Public License for more details.
      30              :  */
      31              : 
      32              : //  This file is parsed from UG 3.9.
      33              : //  It provides the Gauss Quadratures for a reference edge.
      34              : 
      35              : 
      36              : #include "../quadrature.h"
      37              : #include "gauss_quad_edge.h"
      38              : 
      39              : namespace ug{
      40              : 
      41              : template <>
      42              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 1>, 1, 1, 1>::m_vWeight[1] =
      43              : {
      44              :  1.00000000000000000000000000000000
      45              : };
      46              : 
      47              : template <>
      48              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 1>, 1, 1, 1>::m_vPoint[1] =
      49              : {
      50              : MathVector<1>(0.50000000000000000000000000000000)
      51              : };
      52              : 
      53              : template <>
      54              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 3>, 1, 3, 2>::m_vWeight[2] =
      55              : {
      56              :  0.50000000000000000000000000000000,
      57              :  0.50000000000000000000000000000000
      58              : };
      59              : 
      60              : template <>
      61              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 3>, 1, 3, 2>::m_vPoint[2] =
      62              : {
      63              : MathVector<1>(0.21132486540518711774542560974902),
      64              : MathVector<1>(0.78867513459481288225457439025098)
      65              : };
      66              : 
      67              : template <>
      68              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 5>, 1, 5, 3>::m_vWeight[3] =
      69              : {
      70              :  0.27777777777777777777777777777778,
      71              :  0.44444444444444444444444444444444,
      72              :  0.27777777777777777777777777777778
      73              : };
      74              : 
      75              : template <>
      76              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 5>, 1, 5, 3>::m_vPoint[3] =
      77              : {
      78              : MathVector<1>(0.11270166537925831148207346002176),
      79              : MathVector<1>(0.50000000000000000000000000000000),
      80              : MathVector<1>(0.88729833462074168851792653997824)
      81              : };
      82              : 
      83              : template <>
      84              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 7>, 1, 7, 4>::m_vWeight[4] =
      85              : {
      86              :  0.17392742256872692868653197461100,
      87              :  0.32607257743127307131346802538900,
      88              :  0.32607257743127307131346802538900,
      89              :  0.17392742256872692868653197461100
      90              : };
      91              : 
      92              : template <>
      93              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 7>, 1, 7, 4>::m_vPoint[4] =
      94              : {
      95              : MathVector<1>(0.06943184420297371238802675555360),
      96              : MathVector<1>(0.33000947820757186759866712044838),
      97              : MathVector<1>(0.66999052179242813240133287955162),
      98              : MathVector<1>(0.93056815579702628761197324444640)
      99              : };
     100              : 
     101              : template <>
     102              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 9>, 1, 9, 5>::m_vWeight[5] =
     103              : {
     104              :  0.11846344252809454375713202035996,
     105              :  0.23931433524968323402064575741782,
     106              :  0.28444444444444444444444444444444,
     107              :  0.23931433524968323402064575741782,
     108              :  0.11846344252809454375713202035996
     109              : };
     110              : 
     111              : template <>
     112              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 9>, 1, 9, 5>::m_vPoint[5] =
     113              : {
     114              : MathVector<1>(0.04691007703066800360118656085030),
     115              : MathVector<1>(0.23076534494715845448184278964990),
     116              : MathVector<1>(0.50000000000000000000000000000000),
     117              : MathVector<1>(0.76923465505284154551815721035010),
     118              : MathVector<1>(0.95308992296933199639881343914970)
     119              : };
     120              : 
     121              : template <>
     122              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 11>, 1, 11, 6>::m_vWeight[6] =
     123              : {
     124              :  0.08566224618958517252014807108637,
     125              :  0.18038078652406930378491675691886,
     126              :  0.23395696728634552369493517199478,
     127              :  0.23395696728634552369493517199478,
     128              :  0.18038078652406930378491675691886,
     129              :  0.08566224618958517252014807108637
     130              : };
     131              : 
     132              : template <>
     133              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 11>, 1, 11, 6>::m_vPoint[6] =
     134              : {
     135              : MathVector<1>(0.03376524289842398609384922275300),
     136              : MathVector<1>(0.16939530676686774316930020249005),
     137              : MathVector<1>(0.38069040695840154568474913915964),
     138              : MathVector<1>(0.61930959304159845431525086084036),
     139              : MathVector<1>(0.83060469323313225683069979750995),
     140              : MathVector<1>(0.96623475710157601390615077724700)
     141              : };
     142              : 
     143              : template <>
     144              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 13>, 1, 13, 7>::m_vWeight[7] =
     145              : {
     146              :  0.06474248308443484663530571633954,
     147              :  0.13985269574463833395073388571189,
     148              :  0.19091502525255947247518488774449,
     149              :  0.20897959183673469387755102040816,
     150              :  0.19091502525255947247518488774449,
     151              :  0.13985269574463833395073388571189,
     152              :  0.06474248308443484663530571633954
     153              : };
     154              : 
     155              : template <>
     156              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 13>, 1, 13, 7>::m_vPoint[7] =
     157              : {
     158              : MathVector<1>(0.02544604382862073773690515797607),
     159              : MathVector<1>(0.12923440720030278006806761335961),
     160              : MathVector<1>(0.29707742431130141654669679396152),
     161              : MathVector<1>(0.50000000000000000000000000000000),
     162              : MathVector<1>(0.70292257568869858345330320603848),
     163              : MathVector<1>(0.87076559279969721993193238664039),
     164              : MathVector<1>(0.97455395617137926226309484202393)
     165              : };
     166              : 
     167              : template <>
     168              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 15>, 1, 15, 8>::m_vWeight[8] =
     169              : {
     170              :  0.05061426814518812957626567715498,
     171              :  0.11119051722668723527217799721312,
     172              :  0.15685332293894364366898110099330,
     173              :  0.18134189168918099148257522463860,
     174              :  0.18134189168918099148257522463860,
     175              :  0.15685332293894364366898110099330,
     176              :  0.11119051722668723527217799721312,
     177              :  0.05061426814518812957626567715498
     178              : };
     179              : 
     180              : template <>
     181              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 15>, 1, 15, 8>::m_vPoint[8] =
     182              : {
     183              : MathVector<1>(0.01985507175123188415821956571526),
     184              : MathVector<1>(0.10166676129318663020422303176208),
     185              : MathVector<1>(0.23723379504183550709113047540538),
     186              : MathVector<1>(0.40828267875217509753026192881991),
     187              : MathVector<1>(0.59171732124782490246973807118009),
     188              : MathVector<1>(0.76276620495816449290886952459462),
     189              : MathVector<1>(0.89833323870681336979577696823792),
     190              : MathVector<1>(0.98014492824876811584178043428474)
     191              : };
     192              : 
     193              : template <>
     194              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 17>, 1, 17, 9>::m_vWeight[9] =
     195              : {
     196              :  0.04063719418078720598594607905526,
     197              :  0.09032408034742870202923601562146,
     198              :  0.13030534820146773115937143470932,
     199              :  0.15617353852000142003431520329222,
     200              :  0.16511967750062988158226253464349,
     201              :  0.15617353852000142003431520329222,
     202              :  0.13030534820146773115937143470932,
     203              :  0.09032408034742870202923601562146,
     204              :  0.04063719418078720598594607905526
     205              : };
     206              : 
     207              : template <>
     208              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 17>, 1, 17, 9>::m_vPoint[9] =
     209              : {
     210              : MathVector<1>(0.01591988024618695508221189854816),
     211              : MathVector<1>(0.08198444633668210285028510596513),
     212              : MathVector<1>(0.19331428364970480134564898032926),
     213              : MathVector<1>(0.33787328829809553548073099267833),
     214              : MathVector<1>(0.50000000000000000000000000000000),
     215              : MathVector<1>(0.66212671170190446451926900732167),
     216              : MathVector<1>(0.80668571635029519865435101967074),
     217              : MathVector<1>(0.91801555366331789714971489403487),
     218              : MathVector<1>(0.98408011975381304491778810145184)
     219              : };
     220              : 
     221              : template <>
     222              : number GaussQuadBase<GaussQuadrature<ReferenceEdge, 19>, 1, 19, 10>::m_vWeight[10] =
     223              : {
     224              :  0.03333567215434406879678440494667,
     225              :  0.07472567457529029657288816982885,
     226              :  0.10954318125799102199776746711408,
     227              :  0.13463335965499817754561346078473,
     228              :  0.14776211235737643508694649732567,
     229              :  0.14776211235737643508694649732567,
     230              :  0.13463335965499817754561346078473,
     231              :  0.10954318125799102199776746711408,
     232              :  0.07472567457529029657288816982885,
     233              :  0.03333567215434406879678440494667
     234              : };
     235              : 
     236              : template <>
     237              : MathVector<1> GaussQuadBase<GaussQuadrature<ReferenceEdge, 19>, 1, 19, 10>::m_vPoint[10] =
     238              : {
     239              : MathVector<1>(0.01304673574141413996101799395777),
     240              : MathVector<1>(0.06746831665550774463395165578825),
     241              : MathVector<1>(0.16029521585048779688283631744256),
     242              : MathVector<1>(0.28330230293537640460036702841711),
     243              : MathVector<1>(0.42556283050918439455758699943514),
     244              : MathVector<1>(0.57443716949081560544241300056486),
     245              : MathVector<1>(0.71669769706462359539963297158289),
     246              : MathVector<1>(0.83970478414951220311716368255744),
     247              : MathVector<1>(0.93253168334449225536604834421175),
     248              : MathVector<1>(0.98695326425858586003898200604223)
     249              : };
     250              : 
     251              : 
     252              : 
     253              : 
     254              : template <>
     255            0 : FlexGaussQuadrature<ReferenceEdge>::FlexGaussQuadrature(int order)
     256              : {
     257            0 :         switch(order)
     258              :         {
     259              :         case 0:
     260              :         case 1:
     261            0 :                 m_order = GaussQuadrature<ReferenceEdge, 1>::order();
     262            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 1>::size();
     263            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 1>::points();
     264            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 1>::weights();
     265            0 :                 break;
     266              : 
     267              :         case 2:
     268              :         case 3:
     269            0 :                 m_order = GaussQuadrature<ReferenceEdge, 3>::order();
     270            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 3>::size();
     271            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 3>::points();
     272            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 3>::weights();
     273            0 :                 break;
     274              : 
     275              :         case 4:
     276              :         case 5:
     277            0 :                 m_order = GaussQuadrature<ReferenceEdge, 5>::order();
     278            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 5>::size();
     279            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 5>::points();
     280            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 5>::weights();
     281            0 :                 break;
     282              : 
     283              :         case 6:
     284              :         case 7:
     285            0 :                 m_order = GaussQuadrature<ReferenceEdge, 7>::order();
     286            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 7>::size();
     287            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 7>::points();
     288            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 7>::weights();
     289            0 :                 break;
     290              : 
     291              :         case 8:
     292              :         case 9:
     293            0 :                 m_order = GaussQuadrature<ReferenceEdge, 9>::order();
     294            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 9>::size();
     295            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 9>::points();
     296            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 9>::weights();
     297            0 :                 break;
     298              : 
     299              :         case 10:
     300              :         case 11:
     301            0 :                 m_order = GaussQuadrature<ReferenceEdge, 11>::order();
     302            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 11>::size();
     303            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 11>::points();
     304            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 11>::weights();
     305            0 :                 break;
     306              : 
     307              :         case 12:
     308              :         case 13:
     309            0 :                 m_order = GaussQuadrature<ReferenceEdge, 13>::order();
     310            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 13>::size();
     311            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 13>::points();
     312            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 13>::weights();
     313            0 :                 break;
     314              : 
     315              :         case 14:
     316              :         case 15:
     317            0 :                 m_order = GaussQuadrature<ReferenceEdge, 15>::order();
     318            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 15>::size();
     319            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 15>::points();
     320            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 15>::weights();
     321            0 :                 break;
     322              : 
     323              :         case 16:
     324              :         case 17:
     325            0 :                 m_order = GaussQuadrature<ReferenceEdge, 17>::order();
     326            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 17>::size();
     327            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 17>::points();
     328            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 17>::weights();
     329            0 :                 break;
     330              : 
     331              :         case 18:
     332              :         case 19:
     333            0 :                 m_order = GaussQuadrature<ReferenceEdge, 19>::order();
     334            0 :                 m_numPoints = GaussQuadrature<ReferenceEdge, 19>::size();
     335            0 :                 m_pvPoint = GaussQuadrature<ReferenceEdge, 19>::points();
     336            0 :                 m_pvWeight = GaussQuadrature<ReferenceEdge, 19>::weights();
     337            0 :                 break;
     338              : 
     339            0 :         default: UG_THROW("Order "<<order<<" not available for GaussQuadrature of edge.");
     340              :         }
     341            0 : }
     342              : }; // namespace ug
     343              : 
        

Generated by: LCOV version 2.0-1