1
- # this is TriangleWeight(a,b,c,KoornwinderTriangle (a,b,c)) with some extra columns to span
1
+ # this is TriangleWeight(a,b,c,JacobiTriangle (a,b,c)) with some extra columns to span
2
2
# all the polynomials
3
3
struct DirichletTriangle{a,b,c} <: Space{Triangle,Float64}
4
4
domain:: Triangle
5
5
end
6
6
7
7
DirichletTriangle {a,b,c} () where {a,b,c} = DirichletTriangle {a,b,c} (Triangle ())
8
8
9
- canonicalspace (D:: DirichletTriangle ) = KoornwinderTriangle (0 ,0 ,0 ,domain (D))
9
+ canonicalspace (D:: DirichletTriangle ) = JacobiTriangle (0 ,0 ,0 ,domain (D))
10
10
11
11
spacescompatible (A:: DirichletTriangle{a,b,c} , B:: DirichletTriangle{a,b,c} ) where {a,b,c} =
12
12
domainscompatible (A,B)
@@ -29,20 +29,20 @@ for OP in (:block,:blockstart,:blockstop)
29
29
end
30
30
31
31
32
- function maxspace_rule (A:: DirichletTriangle , B:: KoornwinderTriangle )
32
+ function maxspace_rule (A:: DirichletTriangle , B:: JacobiTriangle )
33
33
domainscompatible (A,B) && return B
34
34
NoSpace ()
35
35
end
36
36
37
- function conversion_rule (A:: DirichletTriangle , B:: KoornwinderTriangle )
37
+ function conversion_rule (A:: DirichletTriangle , B:: JacobiTriangle )
38
38
domainscompatible (A,B) && return A
39
39
NoSpace ()
40
40
end
41
41
42
42
43
- Conversion (A:: DirichletTriangle{1,0,0} , B:: KoornwinderTriangle ) = ConcreteConversion (A,B)
44
- Conversion (A:: DirichletTriangle{0,1,0} ,B:: KoornwinderTriangle ) = ConcreteConversion (A,B)
45
- Conversion (A:: DirichletTriangle{0,0,1} , B:: KoornwinderTriangle ) = ConcreteConversion (A,B)
43
+ Conversion (A:: DirichletTriangle{1,0,0} , B:: JacobiTriangle ) = ConcreteConversion (A,B)
44
+ Conversion (A:: DirichletTriangle{0,1,0} ,B:: JacobiTriangle ) = ConcreteConversion (A,B)
45
+ Conversion (A:: DirichletTriangle{0,0,1} , B:: JacobiTriangle ) = ConcreteConversion (A,B)
46
46
function Conversion (A:: DirichletTriangle{a,b,c} , B:: DirichletTriangle{d,e,f} ) where {a,b,c,d,e,f}
47
47
@assert a ≥ d && b ≥ e && c ≥ f
48
48
@assert domainscompatible (A,B)
@@ -53,7 +53,7 @@ function Conversion(A::DirichletTriangle{a,b,c}, B::DirichletTriangle{d,e,f}) wh
53
53
# c > f &&
54
54
return Conversion (A,DirichletTriangle {a,b,c-1} (domain (A)),B)
55
55
end
56
- function Conversion (A:: DirichletTriangle{a,b,c} , B:: KoornwinderTriangle ) where {a,b,c}
56
+ function Conversion (A:: DirichletTriangle{a,b,c} , B:: JacobiTriangle ) where {a,b,c}
57
57
@assert a ≥ 0 && b ≥ 0 && c ≥ 0
58
58
@assert domainscompatible (A,B)
59
59
# if only one is bigger, we can do a concrete conversion
@@ -69,26 +69,18 @@ isbandedblockbanded(::ConcreteConversion{<:DirichletTriangle,<:DirichletTriangle
69
69
70
70
71
71
72
- isbandedblockbanded (:: ConcreteConversion{<:DirichletTriangle,KoornwinderTriangle } )= true
72
+ isbandedblockbanded (:: ConcreteConversion{<:DirichletTriangle,JacobiTriangle } )= true
73
73
74
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,0},KoornwinderTriangle } ) = (0 ,1 )
75
- blockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,0},KoornwinderTriangle } ) = (0 ,1 )
76
- blockbandinds (:: ConcreteConversion{DirichletTriangle{0,0,1},KoornwinderTriangle } ) = (0 ,1 )
74
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,0},JacobiTriangle } ) = (0 ,1 )
75
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,0},JacobiTriangle } ) = (0 ,1 )
76
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{0,0,1},JacobiTriangle } ) = (0 ,1 )
77
77
78
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,0},JacobiTriangle} ) = (0 ,0 )
79
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,0},JacobiTriangle} ) = (0 ,1 )
80
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{0,0,1},JacobiTriangle} ) = (0 ,1 )
78
81
79
82
80
-
81
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,0},KoornwinderTriangle} ) = (0 ,0 )
82
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,0},KoornwinderTriangle} ,k:: Integer ) = 0
83
-
84
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,0},KoornwinderTriangle} ) = (0 ,1 )
85
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,0},KoornwinderTriangle} ,k:: Integer ) = k== 1 ? 0 : 1
86
-
87
-
88
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,0,1},KoornwinderTriangle} ) = (0 ,1 )
89
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,0,1},KoornwinderTriangle} ,k:: Integer ) = k== 1 ? 0 : 1
90
-
91
- function getindex (R:: ConcreteConversion{DirichletTriangle{1,0,0},KoornwinderTriangle} ,k:: Integer ,j:: Integer )
83
+ function getindex (R:: ConcreteConversion{DirichletTriangle{1,0,0},JacobiTriangle} ,k:: Integer ,j:: Integer )
92
84
T= eltype (R)
93
85
K = Int (block (rangespace (R),k))
94
86
J = Int (block (domainspace (R),j))
112
104
113
105
114
106
115
- function getindex (R:: ConcreteConversion{DirichletTriangle{0,1,0},KoornwinderTriangle ,T} ,k:: Integer ,j:: Integer ) where T
107
+ function getindex (R:: ConcreteConversion{DirichletTriangle{0,1,0},JacobiTriangle ,T} ,k:: Integer ,j:: Integer ) where T
116
108
K = Int (block (rangespace (R),k))
117
109
J = Int (block (domainspace (R),j))
118
110
κ= k- blockstart (rangespace (R),K)+ 1
@@ -138,7 +130,7 @@ function getindex(R::ConcreteConversion{DirichletTriangle{0,1,0},KoornwinderTria
138
130
end
139
131
140
132
141
- function getindex (R:: ConcreteConversion{DirichletTriangle{0,0,1},KoornwinderTriangle ,T} ,k:: Integer ,j:: Integer ) where T
133
+ function getindex (R:: ConcreteConversion{DirichletTriangle{0,0,1},JacobiTriangle ,T} ,k:: Integer ,j:: Integer ) where T
142
134
K = Int (block (rangespace (R),k))
143
135
J = Int (block (domainspace (R),j))
144
136
κ= k- blockstart (rangespace (R),K)+ 1
@@ -164,36 +156,20 @@ function getindex(R::ConcreteConversion{DirichletTriangle{0,0,1},KoornwinderTria
164
156
end
165
157
166
158
167
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ) = (0 ,1 )
168
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ) = (0 ,0 )
169
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ,k:: Integer ) = 0
170
-
171
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
172
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{0,0,1}} ) = (0 ,0 )
173
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{0,0,1}} ,k:: Integer ) = 0
174
-
175
-
176
-
177
-
178
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{1,0,0}} ) = (0 ,1 )
179
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{1,0,0}} ) = (0 ,1 )
180
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{1,0,0}} ,k:: Integer ) = k== 1 ? 0 : 1
181
-
182
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{1,0,0}} ) = (0 ,1 )
183
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{1,0,0}} ) = (0 ,1 )
184
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{1,0,0}} ,k:: Integer ) = k== 1 ? 0 : 1
185
-
186
-
187
- blockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
188
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
189
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,0,1}} ,k:: Integer ) = k== 1 ? 0 : 1
190
-
159
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ) = (0 ,1 )
160
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ) = (0 ,0 )
161
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
162
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{0,0,1}} ) = (0 ,0 )
163
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{1,0,0}} ) = (0 ,1 )
164
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{1,0,0}} ) = (0 ,1 )
165
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{1,0,0}} ) = (0 ,1 )
166
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,0,1},DirichletTriangle{1,0,0}} ) = (0 ,1 )
167
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
168
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,0,1}} ) = (0 ,1 )
169
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,1,0}} ) = (0 ,1 )
170
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,1,0}} ) = (0 ,1 )
191
171
192
172
193
- blockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,1,0}} ) = (0 ,1 )
194
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,1,0}} ) = (0 ,1 )
195
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriangle{0,1,0}} ,k:: Integer ) = k== 1 ? 0 : 1
196
-
197
173
198
174
199
175
function getindex (R:: ConcreteConversion{DirichletTriangle{1,1,0},DirichletTriangle{0,1,0}} ,k:: Integer ,j:: Integer )
@@ -396,27 +372,12 @@ function getindex(R::ConcreteConversion{DirichletTriangle{0,1,1},DirichletTriang
396
372
end
397
373
398
374
399
-
400
-
401
-
402
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1}} ) = (0 ,1 )
403
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1}} ) = (0 ,0 )
404
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1}} ,k:: Integer ) = 0
405
-
406
-
407
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,0,1}} ) = (0 ,1 )
408
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,0,1}} ) = (0 ,1 )
409
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,0,1}} ,k:: Integer ) = k== 1 ? 0 : 1
410
-
411
-
412
- blockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,1,0}} ) = (0 ,1 )
413
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,1,0}} ) = (0 ,1 )
414
- subblockbandinds (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,1,0}} ,k:: Integer ) = k== 1 ? 0 : 1
415
-
416
-
417
-
418
-
419
-
375
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1}} ) = (0 ,1 )
376
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1}} ) = (0 ,0 )
377
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,0,1}} ) = (0 ,1 )
378
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,0,1}} ) = (0 ,1 )
379
+ blockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,1,0}} ) = (0 ,1 )
380
+ subblockbandwidths (:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{1,1,0}} ) = (0 ,1 )
420
381
421
382
function getindex (R:: ConcreteConversion{DirichletTriangle{1,1,1},DirichletTriangle{0,1,1},T} ,k:: Integer ,j:: Integer ):: T where {T}
422
383
K = Int (block (rangespace (R),k))
628
589
629
590
isblockbanded (:: ConcreteConversion{<:DirichletTriangle,<:Jacobi} ) = true
630
591
631
- blockbandinds (:: ConcreteConversion{<:DirichletTriangle,<:Jacobi} ) = (0 ,0 )
592
+ blockbandwidths (:: ConcreteConversion{<:DirichletTriangle,<:Jacobi} ) = (0 ,0 )
632
593
function getindex (R:: ConcreteConversion{DirichletTriangle{1,0,0},<:Jacobi} ,k:: Integer ,j:: Integer )
633
594
T= eltype (R)
634
595
J = Int (block (domainspace (R),j))
669
630
Dirichlet (d:: Triangle ) = Dirichlet (DirichletTriangle {1,1,1} (d))
670
631
671
632
672
- Base. sum (f:: Fun{<:DirichletTriangle} ) = sum (Fun (f,KoornwinderTriangle (0 ,0 ,0 ,domain (f))))
633
+ Base. sum (f:: Fun{<:DirichletTriangle} ) = sum (Fun (f,JacobiTriangle (0 ,0 ,0 ,domain (f))))
673
634
674
635
675
636
@@ -683,11 +644,11 @@ function Derivative(A::DirichletTriangle{1,0,1}, order)
683
644
if d == Triangle ()
684
645
ConcreteDerivative (A,order)
685
646
else
686
- S = KoornwinderTriangle (0 ,0 ,0 ,d)
647
+ S = JacobiTriangle (0 ,0 ,0 ,d)
687
648
DerivativeWrapper (Derivative (S,order)* Conversion (A,S),order)
688
649
end
689
650
elseif order == [0 ,1 ]
690
- S = KoornwinderTriangle (0 ,0 ,0 ,d)
651
+ S = JacobiTriangle (0 ,0 ,0 ,d)
691
652
DerivativeWrapper (Derivative (S,order)* Conversion (A,S),order)
692
653
elseif order[1 ] ≥ 1
693
654
D = Derivative (A,[1 ,0 ])
@@ -705,11 +666,11 @@ function Derivative(A::DirichletTriangle{0,1,1}, order)
705
666
if d == Triangle ()
706
667
ConcreteDerivative (A,order)
707
668
else
708
- S = KoornwinderTriangle (0 ,0 ,0 ,d)
669
+ S = JacobiTriangle (0 ,0 ,0 ,d)
709
670
DerivativeWrapper (Derivative (S,order)* Conversion (A,S),order)
710
671
end
711
672
elseif order == [1 ,0 ]
712
- S = KoornwinderTriangle (0 ,0 ,0 ,d)
673
+ S = JacobiTriangle (0 ,0 ,0 ,d)
713
674
DerivativeWrapper (Derivative (S,order)* Conversion (A,S),order)
714
675
elseif order[1 ] > 1
715
676
D = Derivative (A,[1 ,0 ])
@@ -752,21 +713,18 @@ function Derivative(A::DirichletTriangle{1,1,1}, order)
752
713
end
753
714
754
715
755
- rangespace (D:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = KoornwinderTriangle (0 ,0 ,0 )
756
- rangespace (D:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = KoornwinderTriangle (0 ,0 ,0 )
716
+ rangespace (D:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = JacobiTriangle (0 ,0 ,0 )
717
+ rangespace (D:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = JacobiTriangle (0 ,0 ,0 )
757
718
758
719
isbandedblockbanded (:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = true
759
720
isbandedblockbanded (:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = true
760
721
761
722
762
- blockbandinds (:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = (- 1 ,1 )
763
- blockbandinds (:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = (- 1 ,1 )
764
-
765
- subblockbandinds (:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = (0 ,1 )
766
- subblockbandinds (:: ConcreteDerivative{DirichletTriangle{1,0,1}} , k:: Integer ) = k == 1 ? 0 : 1
723
+ blockbandwidths (:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = (1 ,1 )
724
+ blockbandwidths (:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = (1 ,1 )
725
+ subblockbandwidths (:: ConcreteDerivative{DirichletTriangle{1,0,1}} ) = (0 ,1 )
726
+ subblockbandwidths (:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = (1 ,1 )
767
727
768
- subblockbandinds (:: ConcreteDerivative{DirichletTriangle{0,1,1}} ) = (- 1 ,1 )
769
- subblockbandinds (:: ConcreteDerivative{DirichletTriangle{0,1,1}} , k:: Integer ) = k == 1 ? - 1 : 1
770
728
771
729
772
730
function getindex (R:: ConcreteDerivative{DirichletTriangle{1,0,1}} , k:: Integer , j:: Integer )
0 commit comments