Skip to content

Commit b76f627

Browse files
committed
Added DuffyQuadrature to the factory function Quadrature()
1 parent 2f8412f commit b76f627

File tree

5 files changed

+51
-14
lines changed

5 files changed

+51
-14
lines changed
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
module QuadratureFactories
2+
3+
using Gridap
4+
using Gridap.Helpers
5+
6+
import Gridap: Quadrature
7+
8+
"""
9+
Factory function to create Quadrature objects in a convenient way
10+
"""
11+
function Quadrature(p::Polytope,order::Int)
12+
Quadrature(p.extrusion.array.data,order=order)
13+
end
14+
15+
function Quadrature(extrusion::NTuple{D,Int};order::Int) where D
16+
17+
if all(extrusion .== HEX_AXIS)
18+
return TensorProductQuadrature(orders=tuple(fill(order,D)...))
19+
20+
elseif all(extrusion .== TET_AXIS)
21+
return DuffyQuadrature{D}(order)
22+
23+
else
24+
@notimplemented
25+
end
26+
27+
end
28+
29+
end # module

src/Integration/Quadratures.jl

-14
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,6 @@ coordinates(::Quadrature{D} where D)::Array{Point{D,Float64},1} = @abstractmetho
2525

2626
weights(::Quadrature)::Array{Float64,1} = @abstractmethod
2727

28-
# Factories
29-
30-
"""
31-
Factory function to create Quadrature objects in a convenient way
32-
"""
33-
function Quadrature(extrusion::NTuple{D,Int};order::Int) where D
34-
_quadrature(extrusion,order)
35-
end
36-
3728
# Concrete structs
3829

3930
"""
@@ -62,11 +53,6 @@ weights(self::TensorProductQuadrature) = self.weights
6253

6354
# Helpers
6455

65-
function _quadrature(extrusion::NTuple{D,Int},order) where D
66-
@notimplementedif any(extrusion == TET_AXIS)
67-
TensorProductQuadrature(orders=tuple(fill(order,D)...))
68-
end
69-
7056
function _tensor_product(quads,npoints,::Val{D}) where D
7157
@assert length(quads) == D
7258
@assert length(npoints) == D

src/Integration/files.jl

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ include("Quadratures.jl")
55
include("DuffyQuadratures.jl")
66
@reexport using Gridap.DuffyQuadratures
77

8+
include("QuadratureFactories.jl")
9+
@reexport using Gridap.QuadratureFactories
10+
811
include("CellQuadratures.jl")
912
@reexport using Gridap.CellQuadratures
1013

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module QuadratureFactoriesTests
2+
3+
using Test
4+
using Gridap
5+
6+
order = 5
7+
8+
p = Polytope(HEX_AXIS,HEX_AXIS)
9+
quad = Quadrature(p,order)
10+
@test isa(quad,TensorProductQuadrature)
11+
12+
13+
p = Polytope(TET_AXIS,TET_AXIS,TET_AXIS)
14+
quad = Quadrature(p,order)
15+
@test isa(quad,DuffyQuadrature)
16+
17+
end # module

test/IntegrationTests/runtests.jl

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ using Test
66

77
@testset "DuffyQuadratures" begin include("DuffyQuadraturesTests.jl") end
88

9+
@testset "QuadraturesFactories" begin include("QuadratureFactoriesTests.jl") end
10+
911
@testset "CellQuadratures" begin include("CellQuadraturesTests.jl") end
1012

1113
@testset "Triangulations" begin include("TriangulationsTests.jl") end

0 commit comments

Comments
 (0)