The Open FUSION Toolkit 1.0.0-8905cc5
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
Functions/Subroutines | Variables
oft_gauss_quadrature Module Reference

Detailed Description

Definition of 1D, 2D, and 3D Gauss-Legendre quadrature rules.

Zeroes and weights taken from online tabluation at "https://pomax.github.io/bezierinfo/legendre-gauss.html" and verified for accuracy

Authors
Chris Hansen
Date
October 2018

Functions/Subroutines

type(oft_quad_type) function create_quad_1d (x, w, n)
 Create 1D quadrature object from base Gaussian quadrature rule.
 
subroutine quad_change_domain (x, w, n)
 Change domain of integration from [-1,1] to [0,1].
 
subroutine, public set_quad_1d (quad, order)
 Get 1D quadrature rule for specified order (max = 7)
 
subroutine, public set_quad_2d (quad, order)
 Get 2D quadrature rule for specified order (max = 11)
 
subroutine, public set_quad_3d (quad, order)
 Get 3D quadrature rule for specified order (max = 11)
 

Variables

real(r8), dimension(11), parameter gauss_a11 = (/-0.9782286581460570d0, -0.8870625997680953d0, -0.7301520055740494d0, -0.5190961292068118d0, -0.2695431559523450d0, 0.d0, 0.2695431559523450d0, 0.5190961292068118d0, 0.7301520055740494d0, 0.8870625997680953d0, 0.9782286581460570d0/)
 
real(r8), dimension(13), parameter gauss_a13 = [-0.9841830547185881d0, -0.9175983992229779d0, -0.8015780907333099d0, -0.6423493394403403d0, -0.44849275103644687d0, -0.23045831595513483d0, 0.0d0, 0.23045831595513483d0, 0.44849275103644687d0, 0.6423493394403403d0, 0.8015780907333099d0, 0.9175983992229779d0, 0.9841830547185881d0]
 
real(r8), dimension(15), parameter gauss_a15 = [-0.9879925180204854d0, -0.937273392400706d0, -0.8482065834104272d0, -0.7244177313601701d0, -0.5709721726085388d0, -0.3941513470775634d0, -0.20119409399743454d0, 0.0d0, 0.20119409399743454d0, 0.3941513470775634d0, 0.5709721726085388d0, 0.7244177313601701d0, 0.8482065834104272d0, 0.937273392400706d0, 0.9879925180204854d0]
 
real(r8), dimension(17), parameter gauss_a17 = [-0.9905754753144174d0, -0.9506755217687678d0, -0.8802391537269858d0, -0.7815140038968014d0, -0.6576711592166907d0, -0.5126905370864769d0, -0.35123176345387636d0, -0.17848418149584783d0, 0.0d0, 0.17848418149584783d0, 0.35123176345387636d0, 0.5126905370864769d0, 0.6576711592166907d0, 0.7815140038968014d0, 0.8802391537269858d0, 0.9506755217687678d0, 0.9905754753144174d0]
 
real(r8), dimension(19), parameter gauss_a19 = [-0.9924068438435844d0, -0.96020815213483d0, -0.9031559036148178d0, -0.8227146565371428d0, -0.7209661773352294d0, -0.600545304661681d0, -0.46457074137596094d0, -0.3165640999636298d0, -0.16035864564022534d0, 0.0d0, 0.16035864564022534d0, 0.3165640999636298d0, 0.46457074137596094d0, 0.600545304661681d0, 0.7209661773352294d0, 0.8227146565371428d0, 0.9031559036148178d0, 0.96020815213483d0, 0.9924068438435844d0]
 
real(r8), dimension(2), parameter gauss_a2 = (/-0.5773502691896257d0, 0.5773502691896257d0/)
 
real(r8), dimension(4), parameter gauss_a4 = (/-0.8611363115940526d0, -0.3399810435848563d0, 0.3399810435848563d0, 0.8611363115940526d0/)
 
real(r8), dimension(6), parameter gauss_a6 = (/-0.9324695142031521d0, -0.6612093864662645d0, -0.2386191860831969d0, 0.2386191860831969d0, 0.6612093864662645d0, 0.9324695142031521d0/)
 
real(r8), dimension(8), parameter gauss_a8 = (/-0.9602898564975363d0, -0.7966664774136267d0, -0.5255324099163290d0, -0.1834346424956498d0, 0.1834346424956498d0, 0.5255324099163290d0, 0.7966664774136267d0, 0.9602898564975363d0/)
 
real(r8), dimension(9), parameter gauss_a9 = (/-0.9681602395076261d0, -0.8360311073266358d0, -0.6133714327005904d0, -0.3242534234038089d0, 0.d0, 0.3242534234038089d0, 0.6133714327005904d0, 0.8360311073266358d0, 0.96816023950762610d0/)
 
real(r8), dimension(11), parameter gauss_w11 = (/0.0556685671161737d0, 0.1255803694649046d0, 0.1862902109277343d0, 0.2331937645919905d0, 0.2628045445102467d0, 0.2729250867779006d0, 0.2628045445102467d0, 0.2331937645919905d0, 0.1862902109277343d0, 0.1255803694649046d0, 0.0556685671161737d0/)
 
real(r8), dimension(13), parameter gauss_w13 = [0.040484004765315953d0, 0.09212149983772865d0, 0.1388735102197874d0, 0.1781459807619455d0, 0.2078160475368884d0, 0.2262831802628971d0, 0.2325515532308738d0, 0.2262831802628971d0, 0.2078160475368884d0, 0.1781459807619455d0, 0.1388735102197874d0, 0.09212149983772865d0, 0.040484004765315953d0]
 
real(r8), dimension(15), parameter gauss_w15 = [0.030753241996118136d0, 0.07036604748810772d0, 0.10715922046717183d0, 0.13957067792615427d0, 0.16626920581699398d0, 0.18616100001556216d0, 0.19843148532711147d0, 0.2025782419255612d0, 0.19843148532711147d0, 0.18616100001556216d0, 0.16626920581699398d0, 0.13957067792615427d0, 0.10715922046717183d0, 0.07036604748810772d0, 0.030753241996118136d0]
 
real(r8), dimension(17), parameter gauss_w17 = [0.02414830286854747d0, 0.055459529373987085d0, 0.0850361483171795d0, 0.11188384719340376d0, 0.1351363684685257d0, 0.15404576107681056d0, 0.16800410215644998d0, 0.1765627053669927d0, 0.17944647035620662d0, 0.1765627053669927d0, 0.16800410215644998d0, 0.15404576107681056d0, 0.1351363684685257d0, 0.11188384719340376d0, 0.0850361483171795d0, 0.055459529373987085d0, 0.02414830286854747d0]
 
real(r8), dimension(19), parameter gauss_w19 = [0.01946178822972895d0, 0.044814226765700516d0, 0.06904454273764106d0, 0.09149002162244968d0, 0.11156664554733368d0, 0.12875396253933566d0, 0.14260670217360596d0, 0.152766042065859d0, 0.15896884339395378d0, 0.16105444984878306d0, 0.15896884339395378d0, 0.152766042065859d0, 0.14260670217360596d0, 0.12875396253933566d0, 0.11156664554733368d0, 0.09149002162244968d0, 0.06904454273764106d0, 0.044814226765700516d0, 0.01946178822972895d0]
 
real(r8), dimension(2), parameter gauss_w2 = (/1.0000000000000000d0, 1.0000000000000000d0/)
 
real(r8), dimension(4), parameter gauss_w4 = (/0.3478548451374538d0, 0.6521451548625461d0, 0.6521451548625461d0,0.3478548451374538d0/)
 
real(r8), dimension(6), parameter gauss_w6 = (/0.1713244923791704d0, 0.3607615730481386d0, 0.4679139345726910d0, 0.4679139345726910d0, 0.3607615730481386d0, 0.1713244923791704d0/)
 
real(r8), dimension(8), parameter gauss_w8 = (/0.1012285362903763d0, 0.2223810344533745d0, 0.3137066458778873d0, 0.3626837833783620d0, 0.3626837833783620d0, 0.3137066458778873d0, 0.2223810344533745d0, 0.1012285362903763d0/)
 
real(r8), dimension(9), parameter gauss_w9 = (/0.0812743883615744d0, 0.1806481606948574d0, 0.2606106964029354d0, 0.3123470770400029d0, 0.3302393550012598d0, 0.3123470770400029d0, 0.2606106964029354d0, 0.1806481606948574d0, 0.0812743883615744d0/)
 

Function/Subroutine Documentation

◆ create_quad_1d()

type(oft_quad_type) function create_quad_1d ( real(r8), dimension(n), intent(in)  x,
real(r8), dimension(n), intent(in)  w,
integer(i4), intent(in)  n 
)
private

Create 1D quadrature object from base Gaussian quadrature rule.

Parameters
[in]xQuadrature points
[in]wQuadrature weights
[in]nNumber of quadrature points
Returns
Quadrature rule

◆ quad_change_domain()

subroutine quad_change_domain ( real(r8), dimension(n), intent(inout)  x,
real(r8), dimension(n), intent(inout)  w,
integer(i4), intent(in)  n 
)
private

Change domain of integration from [-1,1] to [0,1].

Parameters
[in,out]xQuadrature points
[in,out]wQuadrature weights
[in]nNumber of quadrature points

◆ set_quad_1d()

subroutine, public set_quad_1d ( type(oft_quad_type), intent(inout)  quad,
integer, intent(in)  order 
)

Get 1D quadrature rule for specified order (max = 7)

Parameters
[in,out]quadQuadrature rule
[in]orderDesired quadrature order

◆ set_quad_2d()

subroutine, public set_quad_2d ( type(oft_quad_type), intent(inout)  quad,
integer(i4), intent(in)  order 
)

Get 2D quadrature rule for specified order (max = 11)

Parameters
[in,out]quadQuadrature rule
[in]orderDesired quadrature order

◆ set_quad_3d()

subroutine, public set_quad_3d ( type(oft_quad_type), intent(inout)  quad,
integer(i4), intent(in)  order 
)

Get 3D quadrature rule for specified order (max = 11)

Parameters
[in,out]quadQuadrature rule
[in]orderQuadrature order
[in,out]quadQuadrature rule
[in]orderDesired quadrature order

Variable Documentation

◆ gauss_a11

real(r8), dimension(11), parameter gauss_a11 = (/-0.9782286581460570d0, -0.8870625997680953d0, -0.7301520055740494d0, -0.5190961292068118d0, -0.2695431559523450d0, 0.d0, 0.2695431559523450d0, 0.5190961292068118d0, 0.7301520055740494d0, 0.8870625997680953d0, 0.9782286581460570d0/)
private

◆ gauss_a13

real(r8), dimension(13), parameter gauss_a13 = [-0.9841830547185881d0, -0.9175983992229779d0, -0.8015780907333099d0, -0.6423493394403403d0, -0.44849275103644687d0, -0.23045831595513483d0, 0.0d0, 0.23045831595513483d0, 0.44849275103644687d0, 0.6423493394403403d0, 0.8015780907333099d0, 0.9175983992229779d0, 0.9841830547185881d0]
private

◆ gauss_a15

real(r8), dimension(15), parameter gauss_a15 = [-0.9879925180204854d0, -0.937273392400706d0, -0.8482065834104272d0, -0.7244177313601701d0, -0.5709721726085388d0, -0.3941513470775634d0, -0.20119409399743454d0, 0.0d0, 0.20119409399743454d0, 0.3941513470775634d0, 0.5709721726085388d0, 0.7244177313601701d0, 0.8482065834104272d0, 0.937273392400706d0, 0.9879925180204854d0]
private

◆ gauss_a17

real(r8), dimension(17), parameter gauss_a17 = [-0.9905754753144174d0, -0.9506755217687678d0, -0.8802391537269858d0, -0.7815140038968014d0, -0.6576711592166907d0, -0.5126905370864769d0, -0.35123176345387636d0, -0.17848418149584783d0, 0.0d0, 0.17848418149584783d0, 0.35123176345387636d0, 0.5126905370864769d0, 0.6576711592166907d0, 0.7815140038968014d0, 0.8802391537269858d0, 0.9506755217687678d0, 0.9905754753144174d0]
private

◆ gauss_a19

real(r8), dimension(19), parameter gauss_a19 = [-0.9924068438435844d0, -0.96020815213483d0, -0.9031559036148178d0, -0.8227146565371428d0, -0.7209661773352294d0, -0.600545304661681d0, -0.46457074137596094d0, -0.3165640999636298d0, -0.16035864564022534d0, 0.0d0, 0.16035864564022534d0, 0.3165640999636298d0, 0.46457074137596094d0, 0.600545304661681d0, 0.7209661773352294d0, 0.8227146565371428d0, 0.9031559036148178d0, 0.96020815213483d0, 0.9924068438435844d0]
private

◆ gauss_a2

real(r8), dimension(2), parameter gauss_a2 = (/-0.5773502691896257d0, 0.5773502691896257d0/)
private

◆ gauss_a4

real(r8), dimension(4), parameter gauss_a4 = (/-0.8611363115940526d0, -0.3399810435848563d0, 0.3399810435848563d0, 0.8611363115940526d0/)
private

◆ gauss_a6

real(r8), dimension(6), parameter gauss_a6 = (/-0.9324695142031521d0, -0.6612093864662645d0, -0.2386191860831969d0, 0.2386191860831969d0, 0.6612093864662645d0, 0.9324695142031521d0/)
private

◆ gauss_a8

real(r8), dimension(8), parameter gauss_a8 = (/-0.9602898564975363d0, -0.7966664774136267d0, -0.5255324099163290d0, -0.1834346424956498d0, 0.1834346424956498d0, 0.5255324099163290d0, 0.7966664774136267d0, 0.9602898564975363d0/)
private

◆ gauss_a9

real(r8), dimension(9), parameter gauss_a9 = (/-0.9681602395076261d0, -0.8360311073266358d0, -0.6133714327005904d0, -0.3242534234038089d0, 0.d0, 0.3242534234038089d0, 0.6133714327005904d0, 0.8360311073266358d0, 0.96816023950762610d0/)
private

◆ gauss_w11

real(r8), dimension(11), parameter gauss_w11 = (/0.0556685671161737d0, 0.1255803694649046d0, 0.1862902109277343d0, 0.2331937645919905d0, 0.2628045445102467d0, 0.2729250867779006d0, 0.2628045445102467d0, 0.2331937645919905d0, 0.1862902109277343d0, 0.1255803694649046d0, 0.0556685671161737d0/)
private

◆ gauss_w13

real(r8), dimension(13), parameter gauss_w13 = [0.040484004765315953d0, 0.09212149983772865d0, 0.1388735102197874d0, 0.1781459807619455d0, 0.2078160475368884d0, 0.2262831802628971d0, 0.2325515532308738d0, 0.2262831802628971d0, 0.2078160475368884d0, 0.1781459807619455d0, 0.1388735102197874d0, 0.09212149983772865d0, 0.040484004765315953d0]
private

◆ gauss_w15

real(r8), dimension(15), parameter gauss_w15 = [0.030753241996118136d0, 0.07036604748810772d0, 0.10715922046717183d0, 0.13957067792615427d0, 0.16626920581699398d0, 0.18616100001556216d0, 0.19843148532711147d0, 0.2025782419255612d0, 0.19843148532711147d0, 0.18616100001556216d0, 0.16626920581699398d0, 0.13957067792615427d0, 0.10715922046717183d0, 0.07036604748810772d0, 0.030753241996118136d0]
private

◆ gauss_w17

real(r8), dimension(17), parameter gauss_w17 = [0.02414830286854747d0, 0.055459529373987085d0, 0.0850361483171795d0, 0.11188384719340376d0, 0.1351363684685257d0, 0.15404576107681056d0, 0.16800410215644998d0, 0.1765627053669927d0, 0.17944647035620662d0, 0.1765627053669927d0, 0.16800410215644998d0, 0.15404576107681056d0, 0.1351363684685257d0, 0.11188384719340376d0, 0.0850361483171795d0, 0.055459529373987085d0, 0.02414830286854747d0]
private

◆ gauss_w19

real(r8), dimension(19), parameter gauss_w19 = [0.01946178822972895d0, 0.044814226765700516d0, 0.06904454273764106d0, 0.09149002162244968d0, 0.11156664554733368d0, 0.12875396253933566d0, 0.14260670217360596d0, 0.152766042065859d0, 0.15896884339395378d0, 0.16105444984878306d0, 0.15896884339395378d0, 0.152766042065859d0, 0.14260670217360596d0, 0.12875396253933566d0, 0.11156664554733368d0, 0.09149002162244968d0, 0.06904454273764106d0, 0.044814226765700516d0, 0.01946178822972895d0]
private

◆ gauss_w2

real(r8), dimension(2), parameter gauss_w2 = (/1.0000000000000000d0, 1.0000000000000000d0/)
private

◆ gauss_w4

real(r8), dimension(4), parameter gauss_w4 = (/0.3478548451374538d0, 0.6521451548625461d0, 0.6521451548625461d0,0.3478548451374538d0/)
private

◆ gauss_w6

real(r8), dimension(6), parameter gauss_w6 = (/0.1713244923791704d0, 0.3607615730481386d0, 0.4679139345726910d0, 0.4679139345726910d0, 0.3607615730481386d0, 0.1713244923791704d0/)
private

◆ gauss_w8

real(r8), dimension(8), parameter gauss_w8 = (/0.1012285362903763d0, 0.2223810344533745d0, 0.3137066458778873d0, 0.3626837833783620d0, 0.3626837833783620d0, 0.3137066458778873d0, 0.2223810344533745d0, 0.1012285362903763d0/)
private

◆ gauss_w9

real(r8), dimension(9), parameter gauss_w9 = (/0.0812743883615744d0, 0.1806481606948574d0, 0.2606106964029354d0, 0.3123470770400029d0, 0.3302393550012598d0, 0.3123470770400029d0, 0.2606106964029354d0, 0.1806481606948574d0, 0.0812743883615744d0/)
private