@@ -522,66 +522,86 @@ end
522
522
# # Restriction Operators
523
523
524
524
function Conversion (a:: DirichletTriangle{1,0,0} , b:: Jacobi )
525
- @assert b == Legendre (Segment (domain (a). a , domain (a). c))
526
- ConcreteConversion (a,b)
525
+ S = Legendre (Segment (domain (a). a , domain (a). c))
526
+ if b == S
527
+ ConcreteConversion (a,b)
528
+ else
529
+ Conversion (a, S, b)
530
+ end
527
531
end
528
532
529
533
function Conversion (a:: DirichletTriangle{0,1,0} , b:: Jacobi )
530
- @assert b == Legendre (Segment (domain (a). a , domain (a). b))
531
- ConcreteConversion (a,b)
534
+ S = Legendre (Segment (domain (a). a , domain (a). b))
535
+ if b == S
536
+ ConcreteConversion (a,b)
537
+ else
538
+ Conversion (a, S, b)
539
+ end
532
540
end
533
541
534
542
function Conversion (a:: DirichletTriangle{0,0,1} , b:: Jacobi )
535
- @assert b == Legendre (Segment (domain (a). c , domain (a). b))
536
- ConcreteConversion (a,b)
543
+ S = Legendre (Segment (domain (a). c , domain (a). b))
544
+ if b == S
545
+ ConcreteConversion (a,b)
546
+ else
547
+ Conversion (a, S, b)
548
+ end
537
549
end
538
550
539
551
540
552
function Conversion (a:: DirichletTriangle{1,1,0} , b:: Jacobi )
541
553
d = domain (a)
542
- if b == Legendre (Segment (d. a , d. c))
554
+ d_b = domain (b)
555
+ d_bR = reverseorientation (d_b)
556
+ if d_b == Segment (d. a , d. c) || d_bR == Segment (d. a , d. c)
543
557
Conversion (a, DirichletTriangle {1,0,0} (d), b)
544
- elseif b == Legendre ( Segment (d. a , d. b))
558
+ elseif d_b == Segment (d. a , d. b) || d_bR == Segment (d . a , d . b )
545
559
Conversion (a, DirichletTriangle {0,1,0} (d), b)
546
560
else
547
- throw (ArgumentError ())
561
+ throw (ArgumentError (" Cannot create Conversion( $a , $b ) " ))
548
562
end
549
563
end
550
564
551
565
552
566
function Conversion (a:: DirichletTriangle{1,0,1} , b:: Jacobi )
553
567
d = domain (a)
554
- if b == Legendre (Segment (d. a , d. c))
568
+ d_b = domain (b)
569
+ d_bR = reverseorientation (d_b)
570
+ if d_b == Segment (d. a , d. c) || d_bR == Segment (d. a , d. c)
555
571
Conversion (a, DirichletTriangle {1,0,0} (d), b)
556
- elseif b == Legendre ( Segment (d. c , d. b))
572
+ elseif d_b == Segment (d. c , d. b) || d_bR == Segment (d . c , d . b )
557
573
Conversion (a, DirichletTriangle {0,0,1} (d), b)
558
574
else
559
- throw (ArgumentError ())
575
+ throw (ArgumentError (" Cannot create Conversion( $a , $b ) " ))
560
576
end
561
577
end
562
578
563
579
function Conversion (a:: DirichletTriangle{0,1,1} , b:: Jacobi )
564
580
d = domain (a)
565
- if b == Legendre (Segment (d. a , d. b))
581
+ d_b = domain (b)
582
+ d_bR = reverseorientation (d_b)
583
+ if d_b == Segment (d. a , d. b) || d_bR == Segment (d. a , d. b)
566
584
Conversion (a, DirichletTriangle {0,1,0} (d), b)
567
- elseif b == Legendre ( Segment (d. c , d. b))
585
+ elseif d_b == Segment (d. c , d. b) || d_bR == Segment (d . c , d . b )
568
586
Conversion (a, DirichletTriangle {0,0,1} (d), b)
569
587
else
570
- throw (ArgumentError ())
588
+ throw (ArgumentError (" Cannot create Conversion( $a , $b ) " ))
571
589
end
572
590
end
573
591
574
592
575
593
function Conversion (a:: DirichletTriangle{1,1,1} , b:: Jacobi )
576
594
d = domain (a)
577
- if b == Legendre (Segment (d. a , d. c))
595
+ d_b = domain (b)
596
+ d_bR = reverseorientation (d_b)
597
+ if d_b == Segment (d. a , d. c) || d_bR == Segment (d. a , d. c)
578
598
Conversion (a, DirichletTriangle {1,0,1} (d), b)
579
- elseif b == Legendre ( Segment (d. a , d. b))
599
+ elseif d_b == Segment (d. a , d. b) || d_bR == Segment (d . a , d . b )
580
600
Conversion (a, DirichletTriangle {0,1,1} (d), b)
581
- elseif b == Legendre ( Segment (d. c , d. b))
601
+ elseif d_b == Segment (d. c , d. b) || d_bR == Segment (d . c , d . b )
582
602
Conversion (a, DirichletTriangle {0,1,1} (d), b)
583
603
else
584
- throw (ArgumentError ())
604
+ throw (ArgumentError (" Cannot create Conversion( $a , $b ) " ))
585
605
end
586
606
end
587
607
0 commit comments