[updated 11.Jul.2005]
SUBROUTINE GAUSLO (NPOINS,POINTS,POIDS)
Auteur : D.Martin (Juillet 2001)
Derniere modification : D.Martin (07 juillet 2005)
Version 2
Formule de Gauss a n points, exacte pour P_{2n-3}(0,1)
pour 1 < n < 26 (exacte de P_1 a P_47) et n = 33, 41, 65
-- Variables d'entree --
NPOINS nombre de points de la formule de quadrature complete
-- Variables en sortie --
POINTS tableau des points de quadrature (voir ci-dessous)
POIDS tableau des poids du schema de quadrature
ATTENTION : Seuls les points strictement positifs compris entre 0 et 0.5
(et les poids associes) ranges par ordre croissant sont retournes,
soit (n-1)/2 points pour Gauss-Lobatto.
IMPLICIT NONE
INTEGER NPOINS
DOUBLE PRECISION POINTS(*),POIDS(*)
CHARACTER*3 ERRSTR,ERRST2
INTEGER NHALF,J
INTEGER PTQMAX,DIMMAX
PARAMETER ( DIMMAX = 7, PTQMAX = 15 )
DOUBLE PRECISION PGALOB(DIMMAX,PTQMAX-1),CGALOB(DIMMAX,PTQMAX-1)
Poids et points de quadrature de Gauss-Lobatto sur [0,1]
--------------------------------------------------------
DATA PGALOB
2/0.D0,0.D0,0.D0,0.D0,0.D0,0.D0,0.D0
3,.66666666666666663D0,0D0,0D0,0D0,0D0,0D0,0D0
4,.41666666666666669D0,0D0,0D0,0D0,0D0,0D0,0D0
5,.27222222222222220D0,.35555555555555557D0,0D0,0D0,0D0,0D0,0D0
6,.18923747814892361D0,.27742918851774301D0,0D0,0D0,0D0,0D0,0D0
7,.13841302368078440D0,.21587269060493100D0,.24380952380952381D0
&,0D0,0D0,0D0,0D0
8,.10535211357175384D0,.17056134624175140D0,.20622939732935186D0
&,0D0,0D0,0D0,0D0
9,8.2747680780406202D-2,1.3726935625007963D-1,1.7321425548652325D-1
&,1.8575963718820862D-1,0D0,0D0,0D0
X,6.6652995425541581D-2,1.1244467103156172D-1,1.4602134183984211D-1
&,1.6376988059194877D-1,0D0,0D0,0D0
1,5.4806136633504213D-2,9.3584940890149335D-2,1.2402405213201327D-1
&,1.4343956238950412D-1,1.5010879772784536D-1,0D0,0D0
2,4.5842258706619225D-2,7.8987352782176196D-2,1.0625420888051161D-1
&,1.2563780159960053D-1,1.3570262045534809D-1,0D0,0D0
3,3.8900843373407039D-2,6.7490963344809349D-2,9.1823432601778707D-2
&,1.1038389678305550D-1,1.2200789515333815D-1,1.2596542466672336D-1
&,0D0
4,3.3418642248850487D-2,5.8293327949372462D-2,8.0010925881467160D-2
&,9.7413074686707554D-2,1.0956312650488530D-1,1.1580639723422853D-1
&,0D0
5,2.9014946514300626D-2,5.0830035162859062D-2,7.0255849901214029D-2
&,8.6394823626800496D-2,9.8493617982306686D-2,1.0598679296341047D-1
&,1.0852405817440783D-1/
DATA CGALOB
2/0.D0,0.D0,0.D0,0.D0,0.D0,0.D0,0.D0
3,.5D0,0D0,0D0,0D0,0D0,0D0,0D0
4,.27639320225002103036D0,0D0,0D0,0D0,0D0,0D0,0D0
5,.172673164646011428D0,.5D0,0D0,0D0,0D0,0D0,0D0
6,.117472338035267653D0,.357384241759677452D0,0D0,0D0,0D0,0D0,0D0
7,.848880518607165351D-1,.26557560326464289D0,.5D0
&,0D0,0D0,0D0,0D0
8,.641299257451966923D-1,.20414990928342889D0,.395350391048760566D0
&,0D0,0D0,0D0,0D0
9,.501210022942699213D-1,.16140686024463112D0,.318441268086910921D0
&,.5D0,0D0,0D0,0D0
X,.402330459167705931D-1,.13061306744724746D0,.261037525094777752D0
&,.41736052116680648769D0,0D0,0D0,0D0
1,.329992847959704328D-1,.10775826316842779D0,.217382336501897497D0
&,.352120932206530304D0,.5D0,0D0,0D0
2,.27550363888559415D-1,.90360339177995797D-1,.18356192348406997D0
&,.30023452951732676D0,.43172353357253623D0,0D0,0D0
3,.23345076678915500D-1,.76826217674068276D-1,.15690576545911850D0
&,.25854508945433252D0,.37535653494687993D0,.5D0
&,0D0
4,.20032477366374923D-1,.66099473084819893D-1,.13556570045433303D0
&,.22468029853568122D0 ,.32863799332864452D0 ,.44183406555814808D0
&,0D0
5,.17377036748080776D-1,.57458977888511842D-1,.11824015502409235D0
&,.19687339726507713D0,.28968097264316373D0,.39232302231810290D0
&,.5D0/
IF (NPOINS.LE.PTQMAX) THEN
NHALF=NPOINS/2
DO 1 J=1,NHALF
POINTS(J) = CGALOB(J,NPOINS-1)
POIDS(J) = PGALOB(J,NPOINS-1)
1 CONTINUE
ELSE
GOTO (16,17,18,19,20,21,22,23,24,25) NPOINS-PTQMAX
GOTO 26
Formule de Gauss-Lobatto a 16 points exacte pour P_29[0,1]
16 POINTS(1)=1.5215976864890957D-02
POINTS(2)=5.0399733453263984D-02
POINTS(3)=1.0399585406909240D-01
POINTS(4)=1.7380564855875336D-01
POINTS(5)=2.5697028905643116D-01
POINTS(6)=3.5008476554961843D-01
POINTS(7)=4.4933686323902533D-01
POIDS(1)=2.5425180502960068D-02
POIDS(2)=4.4696848662965451D-02
POIDS(3)=6.2127691066257040D-02
POIDS(4)=7.7013490403582130D-02
POIDS(5)=8.8745956695852043D-02
POIDS(6)=9.6845011912601767D-02
POIDS(7)=1.0097915408911497D-01
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_31[0,1]
17 POINTS(1)=1.3433911684290867D-2
POINTS(2)=4.4560002042213220D-2
POINTS(3)=9.2151874389114874D-2
POINTS(4)=1.5448550968615771D-1
POINTS(5)=2.2930730033494928D-1
POINTS(6)=3.1391278321726146D-1
POINTS(7)=4.0524401324084136D-1
POINTS(8)=5.D-1
POIDS(1)=2.2460970271627127D-2
POIDS(2)=3.9599135251843678D-2
POIDS(3)=5.5296454503514073D-2
POIDS(4)=6.8993873100963277D-2
POIDS(5)=8.0197330998810795D-2
POIDS(6)=8.8502126757828953D-2
POIDS(7)=9.3608169838809638D-2
POIDS(8)=9.5330937376734717D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_33[0,1]
18 POINTS(1)=1.1947221293900689D-2
POINTS(2)=3.9675407326233092D-2
POINTS(3)=8.2203232390954950D-2
POINTS(4)=1.3816033535837868D-1
POINTS(5)=2.0574758284066907D-1
POINTS(6)=2.8279248154393799D-1
POINTS(7)=3.6681867356085951D-1
POINTS(8)=4.5512545325767395D-1
POIDS(1)=1.9985314405457002D-2
POIDS(2)=3.5318583442816839D-2
POIDS(3)=4.9508135858751433D-2
POIDS(4)=6.2105266566483498D-2
POIDS(5)=7.2705980786901131D-2
POIDS(6)=8.0969758618801221D-2
POIDS(7)=8.6631054744728153D-2
POIDS(8)=8.9507931719851538D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_35[0,1]
19 POINTS(1)=1.0694116888959937D-2
POINTS(2)=3.5549235923706846D-2
POINTS(3)=7.3769711101676960D-2
POINTS(4)=1.2425289872369349D-1
POINTS(5)=1.8554593136738973D-1
POINTS(6)=2.5588535715964322D-1
POINTS(7)=3.3324757608775069D-1
POINTS(8)=4.1540698829535927D-1
POINTS(9)=5.D-1
POIDS(1)=1.7896682593088284D-2
POIDS(2)=3.1690945881314866D-2
POIDS(3)=4.4565878549603484D-2
POIDS(4)=5.6157670738652458D-2
POIDS(5)=6.6133640224375401D-2
POIDS(6)=7.4206971297969507D-2
POIDS(7)=8.0145462022030683D-2
POIDS(8)=8.3778292263571405D-2
POIDS(9)=8.5000959642413623D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_37[0,1]
20 POINTS(1)=9.6281475530428651D-3
POINTS(2)=3.2032750593667281D-2
POINTS(3)=6.6561010955024980D-2
POINTS(4)=1.1231586952397210D-1
POINTS(5)=1.6811179885484440D-1
POINTS(6)=2.3250356798405680D-1
POINTS(7)=3.0382340814304531D-1
POINTS(8)=3.8022414703850671D-1
POINTS(9)=4.5972703138058912D-1
POIDS(1)=1.6118561594244435D-2
POIDS(2)=2.8590901063783401D-2
POIDS(3)=4.0315881998059799D-2
POIDS(4)=5.0995749849725387D-2
POIDS(5)=6.0354613814337384D-2
POIDS(6)=6.8150241179362081D-2
POIDS(7)=7.4180777035458417D-2
POIDS(8)=7.8290051323737717D-2
POIDS(9)=8.0371643193922856D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_39[0,1]
21 POINTS(1)=8.7138516977260938D-3
POINTS(2)=2.9011851520127308D-2
POINTS(3)=6.0352622338204709D-2
POINTS(4)=1.0199903696114387D-1
POINTS(5)=1.5297448696888838D-1
POINTS(6)=2.1208401986908465D-1
POINTS(7)=2.7794210836049893D-1
POINTS(8)=3.4900507174561757D-1
POINTS(9)=4.2360724209890732D-1
POINTS(10)=5.D-1
POIDS(1)=1.4592420049252741D-2
POIDS(2)=2.5921584500424810D-2
POIDS(3)=3.6636959092537065D-2
POIDS(4)=4.6492733978942997D-2
POIDS(5)=5.5258541609561639D-2
POIDS(6)=6.2729060595434455D-2
POIDS(7)=6.8729231430020687D-2
POIDS(8)=7.3118431223988728D-2
POIDS(9)=7.5793787555840625D-2
POIDS(10)=7.6692595166087479D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_41[0,1]
22 POINTS(1)=7.9237807711769470D-3
POINTS(2)=2.6397858000385632D-2
POINTS(3)=5.4968854904547726D-2
POINTS(4)=9.3025536194039526D-2
POINTS(5)=1.3975638001939883D-1
POINTS(6)=1.9416528085787055D-1
POINTS(7)=2.5509256240504885D-1
POINTS(8)=3.2123964493054025D-1
POINTS(9)=3.9119670742035750D-1
POINTS(10)=4.6347272999455080D-1
POIDS(1)=1.3272873841250749D-2
POIDS(2)=2.3607232646870504D-2
POIDS(3)=3.3432802932276517D-2
POIDS(4)=4.2545030195919202D-2
POIDS(5)=5.0750287400823858D-2
POIDS(6)=5.7873822326969561D-2
POIDS(7)=6.3763848326715125D-2
POIDS(8)=6.8294844306870717D-2
POIDS(9)=7.1370246135680701D-2
POIDS(10)=7.2924509722120862D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_43[0,1]
23 POINTS(1)=7.2364220606336849D-3
POINTS(2)=2.4121022144644844D-2
POINTS(3)=5.0270720979827543D-2
POINTS(4)=8.5174451674357110D-2
POINTS(5)=1.2815247941396968D-1
POINTS(6)=1.7836817776993186D-1
POINTS(7)=2.3484411443157793D-1
POINTS(8)=2.9648103104276258D-1
POINTS(9)=3.6207922552710348D-1
POINTS(10)=4.3036189797966584D-1
POINTS(11)=5.D-1
POIDS(1)=1.2124300385765728D-2
POIDS(2)=2.1587935585120871D-2
POIDS(3)=3.0626238564777197D-2
POIDS(4)=3.9067724737784998D-2
POIDS(5)=4.6748623081756195D-2
POIDS(6)=5.3519550862168301D-2
POIDS(7)=5.9248755331374588D-2
POIDS(8)=6.3824737350879485D-2
POIDS(9)=6.7158436319301920D-2
POIDS(10)=6.9184968192903706D-2
POIDS(11)=6.9864890006373678D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_45[0,1]
24 POINTS(1)=6.6347232474195383D-3
POINTS(2)=2.2125889535056786D-2
POINTS(3)=4.6147162443246792D-2
POINTS(4)=7.8267964922563937D-2
POINTS(5)=1.1791475878975333D-1
POINTS(6)=1.6437994736793571D-1
POINTS(7)=2.1683432101035227D-1
POINTS(8)=2.7434181339283870D-1
POINTS(9)=3.3587619331224450D-1
POINTS(10)=4.0033937330458369D-1
POINTS(11)=4.6658100313138573D-1
POIDS(1)=1.1118426732355384D-2
POIDS(2)=1.9815840666733798D-2
POIDS(3)=2.8154924362323173D-2
POIDS(4)=3.5990931027647007D-2
POIDS(5)=4.3184514983964535D-2
POIDS(6)=4.9607413842041793D-2
POIDS(7)=5.5145043446484257D-2
POIDS(8)=5.9698596851245657D-2
POIDS(9)=6.3186821014010408D-2
POIDS(10)=6.5547470936801938D-2
POIDS(11)=6.6738421933493164D-2
RETURN
Formule de Gauss-Lobatto a 16 points exacte pour P_47[0,1]
25 POINTS(1)=6.1050275342531268D-3
POINTS(2)=2.0367930873732787D-2
POINTS(3)=4.2508614632688735D-2
POINTS(4)=7.2161767082341566D-2
POINTS(5)=1.0884017037964167D-1
POINTS(6)=1.5194147559243287D-1
POINTS(7)=2.0075792636000345D-1
POINTS(8)=2.5448794259056084D-1
POINTS(9)=3.1224927107038636D-1
POINTS(10)=3.7309346791556175D-1
POINTS(11)=4.3602147025844651D-1
POINTS(12)=5.D-1
POIDS(1)=1.0232584466487402D-2
POIDS(2)=1.8252369397135603D-2
POIDS(3)=2.5968114184245817D-2
POIDS(4)=3.3256864337656414D-2
POIDS(5)=3.9999387418146508D-2
POIDS(6)=4.6085069955310212D-2
POIDS(7)=5.1414015173978908D-2
POIDS(8)=5.5898733134160446D-2
POIDS(9)=5.9465589703405916D-2
POIDS(10)=6.2056019468975106D-2
POIDS(11)=6.3627488769165727D-2
POIDS(12)=6.4154194649330962D-2
RETURN
26 IF (NPOINS.EQ.33) THEN
Formule de Gauss-Lobatto a 33 points exacte pour P_63[0,1]
33 POINTS(1)=3.4718207831709869D-03
POINTS(2)=1.1606918341546812D-02
POINTS(3)=2.4303274301502031D-02
POINTS(4)=4.1441348274529277D-02
POINTS(5)=6.2860949624718776D-02
POINTS(6)=8.8362038497966311D-02
POINTS(7)=1.1770649910323572D-01
POINTS(8)=1.5062034169091865D-01
POINTS(9)=1.8679625435936598D-01
POINTS(10)=2.2589647004044411D-01
POINTS(11)=2.6755591918394661D-01
POINTS(12)=3.1138563787330320D-01
POINTS(13)=3.5697639925616298D-01
POINTS(14)=4.0390253426626133D-01
POINTS(15)=4.5172590591194650D-01
POINTS(16)=5.D-1
POIDS(1)=5.8242241961337319D-03
POIDS(2)=1.0432304508801797D-02
POIDS(3)=1.4940522958373243D-02
POIDS(4)=1.9308907385907018D-02
POIDS(5)=2.3496925230512115D-02
POIDS(6)=2.7465529721313418D-02
POIDS(7)=3.1177683926232620D-02
POIDS(8)=3.4598734747008100D-02
POIDS(9)=3.7696743461986953D-02
POIDS(10)=4.0442786096727600D-02
POIDS(11)=4.2811224265906563D-02
POIDS(12)=4.4779944873538632D-02
POIDS(13)=4.6330566721120757D-02
POIDS(14)=4.7448612197295875D-02
POIDS(15)=4.8123642486492715D-02
POIDS(16)=4.8349355051358282D-02
ELSEIF (NPOINS.EQ.41) THEN
Formule de Gauss-Lobatto a 41 points exacte pour P_79[0,1]
41 POINTS(1)=2.2364362773579227D-03
POINTS(2)=7.4840704376375466D-03
POINTS(3)=1.5694565216159084D-02
POINTS(4)=2.6817900176253850D-02
POINTS(5)=4.0787064651047977D-02
POINTS(6)=5.7518013915192290D-02
POINTS(7)=7.6910113948003955D-02
POINTS(8)=9.8846733020954147D-02
POINTS(9)=1.2319593905652448D-01
POINTS(10)=1.4981129160965834D-01
POINTS(11)=1.7853272196770731D-01
POINTS(12)=2.0918749554239358D-01
POINTS(13)=2.4159125057643527D-01
POINTS(14)=2.7554910684258571D-01
POINTS(15)=3.1085683763445848D-01
POINTS(16)=3.4730209798527711D-01
POINTS(17)=3.8466570172023484D-01
POINTS(18)=4.2272293965807994D-01
POINTS(19)=4.6124493103187292D-01
POINTS(20)=5.D-1
POIDS(1)=3.7533293814254079D-03
POIDS(2)=6.7360355472353070D-03
POIDS(3)=9.6766492831258186D-03
POIDS(4)=1.2558849196800595D-02
POIDS(5)=1.5365464548961290D-02
POIDS(6)=1.8079651722344766D-02
POIDS(7)=2.0685098077786353D-02
POIDS(8)=2.3166138174325796D-02
POIDS(9)=2.5507852473993248D-02
POIDS(10)=2.7696158459457196D-02
POIDS(11)=2.9717895831771812D-02
POIDS(12)=3.1560905863774878D-02
POIDS(13)=3.3214104616421380D-02
POIDS(14)=3.4667549643547443D-02
POIDS(15)=3.5912499809881988D-02
POIDS(16)=3.6941467873694810D-02
POIDS(17)=3.7748265522958950D-02
POIDS(18)=3.8328040596658723D-02
POIDS(19)=3.8677306268652782D-02
POIDS(20)=3.8793962019240416D-02
ELSEIF (NPOINS.EQ.65) THEN
Formule de Gauss-Lobatto a 65 points exacte pour P_127[0,1]
65 POINTS(1)=8.8207050741595516D-04
POINTS(2)=2.9549249407887501D-03
POINTS(3)=6.2070346152455214D-03
POINTS(4)=1.0630433404000827D-02
POINTS(5)=1.6214584866543369D-02
POINTS(6)=2.2946231269988959D-02
POINTS(7)=3.0809401158667482D-02
POINTS(8)=3.9785441878504857D-02
POINTS(9)=4.9853062219196831D-02
POINTS(10)=6.0988382337527236D-02
POINTS(11)=7.3164990159275245D-02
POINTS(12)=8.6354003916529920D-02
POINTS(13)=1.0052414059781634D-01
POINTS(14)=1.1564179011918629D-01
POINTS(15)=1.3167109502752372D-01
POINTS(16)=1.4857403554103144D-01
POINTS(17)=1.6631051972220656D-01
POINTS(18)=1.8483847856786639D-01
POINTS(19)=2.0411396578982899D-01
POINTS(20)=2.2409126204908725D-01
POINTS(21)=2.4472298339596410D-01
POINTS(22)=2.6596019365886225D-01
POINTS(23)=2.8775252051493094D-01
POINTS(24)=3.1004827496726795D-01
POINTS(25)=3.3279457394523082D-01
POINTS(26)=3.5593746573702623D-01
POINTS(27)=3.7942205795705175D-01
POINTS(28)=4.0319264774444485D-01
POINTS(29)=4.2719285388401751D-01
POINTS(30)=4.5136575053618910D-01
POINTS(31)=4.7565400225872245D-01
POINTS(32)=5.D-1
POIDS(1)=1.4810162706281047D-03
POIDS(2)=2.6636208607939710D-03
POIDS(3)=3.8392850667738499D-03
POIDS(4)=5.0057574869440775D-03
POIDS(5)=6.1603355597221231D-03
POIDS(6)=7.3002947752110556D-03
POIDS(7)=8.4229355110324450D-03
POIDS(8)=9.5255965600141244D-03
POIDS(9)=1.0605663206745516D-02
POIDS(10)=1.1660573974753858D-02
POIDS(11)=1.2687826899473785D-02
POIDS(12)=1.3684985543158270D-02
POIDS(13)=1.4649684809904891D-02
POIDS(14)=1.5579636572820540D-02
POIDS(15)=1.6472635110159166D-02
POIDS(16)=1.7326562341899505D-02
POIDS(17)=1.8139392856343719D-02
POIDS(18)=1.8909198715786654D-02
POIDS(19)=1.9634154030355212D-02
POIDS(20)=2.0312539289434224D-02
POIDS(21)=2.0942745440552683D-02
POIDS(22)=2.1523277706140036D-02
POIDS(23)=2.2052759129149051D-02
POIDS(24)=2.2529933839166304D-02
POIDS(25)=2.2953670031281747D-02
POIDS(26)=2.3322962650663987D-02
POIDS(27)=2.3636935776481221D-02
POIDS(28)=2.3894844699519288D-02
POIDS(29)=2.4096077688570826D-02
POIDS(30)=2.4240157441409910D-02
POIDS(31)=2.4326742216910894D-02
POIDS(32)=2.4355626645627581D-02
ELSE
CALL ENCLER (2*NPOINS-3, ERRSTR)
CALL ENCLER (NPOINS, ERRST2)
CALL BAISE ('Pas de formule de Gauss-Lobatto de degre '
& //ERRSTR//' a '//ERRST2//' points.')
ENDIF
ENDIF
END !GausLo
gauslo est appelé dans (2 procédures)