1
// This code conforms with the UFC specification version 2.0.0
2
// and was automatically generated by FFC version 0.9.10.
1
// This code conforms with the UFC specification version 2.0.2
2
// and was automatically generated by FFC version 1.0-beta+.
4
4
// This code was generated with the following parameters:
52
52
/// Return a string identifying the finite element
53
53
virtual const char* signature() const
55
return "FiniteElement('Discontinuous Lagrange', Cell('triangle', Space(2)), 0, None)";
55
return "FiniteElement('Real', Cell('triangle', Space(2)), 0, None)";
58
58
/// Return the cell shape
562
562
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
564
564
// Declare helper variables.
571
565
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
572
566
double tmp1 = (1.0 - Y)/2.0;
573
567
double tmp2 = tmp1*tmp1;
575
569
// Compute basisvalues.
576
570
basisvalues[0] = 1.0;
577
571
basisvalues[1] = tmp0;
578
for (unsigned int r = 1; r < 2; r++)
580
rr = (r + 1)*((r + 1) + 1)/2;
582
tt = (r - 1)*((r - 1) + 1)/2;
583
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
584
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
585
}// end loop over 'r'
586
for (unsigned int r = 0; r < 2; r++)
588
rr = (r + 1)*(r + 1 + 1)/2 + 1;
590
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
591
}// end loop over 'r'
592
for (unsigned int r = 0; r < 1; r++)
594
for (unsigned int s = 1; s < 2 - r; s++)
596
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
597
ss = (r + s)*(r + s + 1)/2 + s;
598
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
599
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
600
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
601
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
602
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
603
}// end loop over 's'
604
}// end loop over 'r'
605
for (unsigned int r = 0; r < 3; r++)
607
for (unsigned int s = 0; s < 3 - r; s++)
609
rr = (r + s)*(r + s + 1)/2 + s;
610
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
611
}// end loop over 's'
612
}// end loop over 'r'
572
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
573
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
574
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
575
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
576
basisvalues[0] *= std::sqrt(0.5);
577
basisvalues[2] *= std::sqrt(1.0);
578
basisvalues[5] *= std::sqrt(1.5);
579
basisvalues[1] *= std::sqrt(3.0);
580
basisvalues[4] *= std::sqrt(4.5);
581
basisvalues[3] *= std::sqrt(7.5);
614
583
// Table(s) of coefficients.
615
584
static const double coefficients0[6] = \
629
598
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
631
600
// Declare helper variables.
638
601
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
639
602
double tmp1 = (1.0 - Y)/2.0;
640
603
double tmp2 = tmp1*tmp1;
642
605
// Compute basisvalues.
643
606
basisvalues[0] = 1.0;
644
607
basisvalues[1] = tmp0;
645
for (unsigned int r = 1; r < 2; r++)
647
rr = (r + 1)*((r + 1) + 1)/2;
649
tt = (r - 1)*((r - 1) + 1)/2;
650
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
651
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
652
}// end loop over 'r'
653
for (unsigned int r = 0; r < 2; r++)
655
rr = (r + 1)*(r + 1 + 1)/2 + 1;
657
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
658
}// end loop over 'r'
659
for (unsigned int r = 0; r < 1; r++)
661
for (unsigned int s = 1; s < 2 - r; s++)
663
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
664
ss = (r + s)*(r + s + 1)/2 + s;
665
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
666
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
667
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
668
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
669
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
670
}// end loop over 's'
671
}// end loop over 'r'
672
for (unsigned int r = 0; r < 3; r++)
674
for (unsigned int s = 0; s < 3 - r; s++)
676
rr = (r + s)*(r + s + 1)/2 + s;
677
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
678
}// end loop over 's'
679
}// end loop over 'r'
608
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
609
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
610
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
611
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
612
basisvalues[0] *= std::sqrt(0.5);
613
basisvalues[2] *= std::sqrt(1.0);
614
basisvalues[5] *= std::sqrt(1.5);
615
basisvalues[1] *= std::sqrt(3.0);
616
basisvalues[4] *= std::sqrt(4.5);
617
basisvalues[3] *= std::sqrt(7.5);
681
619
// Table(s) of coefficients.
682
620
static const double coefficients0[6] = \
696
634
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
698
636
// Declare helper variables.
705
637
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
706
638
double tmp1 = (1.0 - Y)/2.0;
707
639
double tmp2 = tmp1*tmp1;
709
641
// Compute basisvalues.
710
642
basisvalues[0] = 1.0;
711
643
basisvalues[1] = tmp0;
712
for (unsigned int r = 1; r < 2; r++)
714
rr = (r + 1)*((r + 1) + 1)/2;
716
tt = (r - 1)*((r - 1) + 1)/2;
717
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
718
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
719
}// end loop over 'r'
720
for (unsigned int r = 0; r < 2; r++)
722
rr = (r + 1)*(r + 1 + 1)/2 + 1;
724
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
725
}// end loop over 'r'
726
for (unsigned int r = 0; r < 1; r++)
728
for (unsigned int s = 1; s < 2 - r; s++)
730
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
731
ss = (r + s)*(r + s + 1)/2 + s;
732
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
733
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
734
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
735
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
736
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
737
}// end loop over 's'
738
}// end loop over 'r'
739
for (unsigned int r = 0; r < 3; r++)
741
for (unsigned int s = 0; s < 3 - r; s++)
743
rr = (r + s)*(r + s + 1)/2 + s;
744
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
745
}// end loop over 's'
746
}// end loop over 'r'
644
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
645
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
646
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
647
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
648
basisvalues[0] *= std::sqrt(0.5);
649
basisvalues[2] *= std::sqrt(1.0);
650
basisvalues[5] *= std::sqrt(1.5);
651
basisvalues[1] *= std::sqrt(3.0);
652
basisvalues[4] *= std::sqrt(4.5);
653
basisvalues[3] *= std::sqrt(7.5);
748
655
// Table(s) of coefficients.
749
656
static const double coefficients0[6] = \
763
670
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
765
672
// Declare helper variables.
772
673
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
773
674
double tmp1 = (1.0 - Y)/2.0;
774
675
double tmp2 = tmp1*tmp1;
776
677
// Compute basisvalues.
777
678
basisvalues[0] = 1.0;
778
679
basisvalues[1] = tmp0;
779
for (unsigned int r = 1; r < 2; r++)
781
rr = (r + 1)*((r + 1) + 1)/2;
783
tt = (r - 1)*((r - 1) + 1)/2;
784
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
785
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
786
}// end loop over 'r'
787
for (unsigned int r = 0; r < 2; r++)
789
rr = (r + 1)*(r + 1 + 1)/2 + 1;
791
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
792
}// end loop over 'r'
793
for (unsigned int r = 0; r < 1; r++)
795
for (unsigned int s = 1; s < 2 - r; s++)
797
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
798
ss = (r + s)*(r + s + 1)/2 + s;
799
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
800
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
801
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
802
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
803
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
804
}// end loop over 's'
805
}// end loop over 'r'
806
for (unsigned int r = 0; r < 3; r++)
808
for (unsigned int s = 0; s < 3 - r; s++)
810
rr = (r + s)*(r + s + 1)/2 + s;
811
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
812
}// end loop over 's'
813
}// end loop over 'r'
680
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
681
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
682
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
683
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
684
basisvalues[0] *= std::sqrt(0.5);
685
basisvalues[2] *= std::sqrt(1.0);
686
basisvalues[5] *= std::sqrt(1.5);
687
basisvalues[1] *= std::sqrt(3.0);
688
basisvalues[4] *= std::sqrt(4.5);
689
basisvalues[3] *= std::sqrt(7.5);
815
691
// Table(s) of coefficients.
816
692
static const double coefficients0[6] = \
830
706
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
832
708
// Declare helper variables.
839
709
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
840
710
double tmp1 = (1.0 - Y)/2.0;
841
711
double tmp2 = tmp1*tmp1;
843
713
// Compute basisvalues.
844
714
basisvalues[0] = 1.0;
845
715
basisvalues[1] = tmp0;
846
for (unsigned int r = 1; r < 2; r++)
848
rr = (r + 1)*((r + 1) + 1)/2;
850
tt = (r - 1)*((r - 1) + 1)/2;
851
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
852
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
853
}// end loop over 'r'
854
for (unsigned int r = 0; r < 2; r++)
856
rr = (r + 1)*(r + 1 + 1)/2 + 1;
858
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
859
}// end loop over 'r'
860
for (unsigned int r = 0; r < 1; r++)
862
for (unsigned int s = 1; s < 2 - r; s++)
864
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
865
ss = (r + s)*(r + s + 1)/2 + s;
866
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
867
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
868
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
869
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
870
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
871
}// end loop over 's'
872
}// end loop over 'r'
873
for (unsigned int r = 0; r < 3; r++)
875
for (unsigned int s = 0; s < 3 - r; s++)
877
rr = (r + s)*(r + s + 1)/2 + s;
878
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
879
}// end loop over 's'
880
}// end loop over 'r'
716
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
717
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
718
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
719
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
720
basisvalues[0] *= std::sqrt(0.5);
721
basisvalues[2] *= std::sqrt(1.0);
722
basisvalues[5] *= std::sqrt(1.5);
723
basisvalues[1] *= std::sqrt(3.0);
724
basisvalues[4] *= std::sqrt(4.5);
725
basisvalues[3] *= std::sqrt(7.5);
882
727
// Table(s) of coefficients.
883
728
static const double coefficients0[6] = \
897
742
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
899
744
// Declare helper variables.
906
745
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
907
746
double tmp1 = (1.0 - Y)/2.0;
908
747
double tmp2 = tmp1*tmp1;
910
749
// Compute basisvalues.
911
750
basisvalues[0] = 1.0;
912
751
basisvalues[1] = tmp0;
913
for (unsigned int r = 1; r < 2; r++)
915
rr = (r + 1)*((r + 1) + 1)/2;
917
tt = (r - 1)*((r - 1) + 1)/2;
918
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
919
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
920
}// end loop over 'r'
921
for (unsigned int r = 0; r < 2; r++)
923
rr = (r + 1)*(r + 1 + 1)/2 + 1;
925
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
926
}// end loop over 'r'
927
for (unsigned int r = 0; r < 1; r++)
929
for (unsigned int s = 1; s < 2 - r; s++)
931
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
932
ss = (r + s)*(r + s + 1)/2 + s;
933
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
934
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
935
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
936
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
937
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
938
}// end loop over 's'
939
}// end loop over 'r'
940
for (unsigned int r = 0; r < 3; r++)
942
for (unsigned int s = 0; s < 3 - r; s++)
944
rr = (r + s)*(r + s + 1)/2 + s;
945
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
946
}// end loop over 's'
947
}// end loop over 'r'
752
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
753
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
754
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
755
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
756
basisvalues[0] *= std::sqrt(0.5);
757
basisvalues[2] *= std::sqrt(1.0);
758
basisvalues[5] *= std::sqrt(1.5);
759
basisvalues[1] *= std::sqrt(3.0);
760
basisvalues[4] *= std::sqrt(4.5);
761
basisvalues[3] *= std::sqrt(7.5);
949
763
// Table(s) of coefficients.
950
764
static const double coefficients0[6] = \
1083
897
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1085
899
// Declare helper variables.
1086
unsigned int rr = 0;
1087
unsigned int ss = 0;
1088
unsigned int tt = 0;
1092
900
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1093
901
double tmp1 = (1.0 - Y)/2.0;
1094
902
double tmp2 = tmp1*tmp1;
1096
904
// Compute basisvalues.
1097
905
basisvalues[0] = 1.0;
1098
906
basisvalues[1] = tmp0;
1099
for (unsigned int r = 1; r < 2; r++)
1101
rr = (r + 1)*((r + 1) + 1)/2;
1103
tt = (r - 1)*((r - 1) + 1)/2;
1104
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1105
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1106
}// end loop over 'r'
1107
for (unsigned int r = 0; r < 2; r++)
1109
rr = (r + 1)*(r + 1 + 1)/2 + 1;
1111
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1112
}// end loop over 'r'
1113
for (unsigned int r = 0; r < 1; r++)
1115
for (unsigned int s = 1; s < 2 - r; s++)
1117
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1118
ss = (r + s)*(r + s + 1)/2 + s;
1119
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1120
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1121
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1122
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1123
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1124
}// end loop over 's'
1125
}// end loop over 'r'
1126
for (unsigned int r = 0; r < 3; r++)
1128
for (unsigned int s = 0; s < 3 - r; s++)
1130
rr = (r + s)*(r + s + 1)/2 + s;
1131
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1132
}// end loop over 's'
1133
}// end loop over 'r'
907
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
908
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
909
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
910
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
911
basisvalues[0] *= std::sqrt(0.5);
912
basisvalues[2] *= std::sqrt(1.0);
913
basisvalues[5] *= std::sqrt(1.5);
914
basisvalues[1] *= std::sqrt(3.0);
915
basisvalues[4] *= std::sqrt(4.5);
916
basisvalues[3] *= std::sqrt(7.5);
1135
918
// Table(s) of coefficients.
1136
919
static const double coefficients0[6] = \
1280
1063
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1282
1065
// Declare helper variables.
1283
unsigned int rr = 0;
1284
unsigned int ss = 0;
1285
unsigned int tt = 0;
1289
1066
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1290
1067
double tmp1 = (1.0 - Y)/2.0;
1291
1068
double tmp2 = tmp1*tmp1;
1293
1070
// Compute basisvalues.
1294
1071
basisvalues[0] = 1.0;
1295
1072
basisvalues[1] = tmp0;
1296
for (unsigned int r = 1; r < 2; r++)
1298
rr = (r + 1)*((r + 1) + 1)/2;
1300
tt = (r - 1)*((r - 1) + 1)/2;
1301
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1302
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1303
}// end loop over 'r'
1304
for (unsigned int r = 0; r < 2; r++)
1306
rr = (r + 1)*(r + 1 + 1)/2 + 1;
1308
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1309
}// end loop over 'r'
1310
for (unsigned int r = 0; r < 1; r++)
1312
for (unsigned int s = 1; s < 2 - r; s++)
1314
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1315
ss = (r + s)*(r + s + 1)/2 + s;
1316
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1317
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1318
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1319
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1320
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1321
}// end loop over 's'
1322
}// end loop over 'r'
1323
for (unsigned int r = 0; r < 3; r++)
1325
for (unsigned int s = 0; s < 3 - r; s++)
1327
rr = (r + s)*(r + s + 1)/2 + s;
1328
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1329
}// end loop over 's'
1330
}// end loop over 'r'
1073
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
1074
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
1075
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
1076
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
1077
basisvalues[0] *= std::sqrt(0.5);
1078
basisvalues[2] *= std::sqrt(1.0);
1079
basisvalues[5] *= std::sqrt(1.5);
1080
basisvalues[1] *= std::sqrt(3.0);
1081
basisvalues[4] *= std::sqrt(4.5);
1082
basisvalues[3] *= std::sqrt(7.5);
1332
1084
// Table(s) of coefficients.
1333
1085
static const double coefficients0[6] = \
1477
1229
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1479
1231
// Declare helper variables.
1480
unsigned int rr = 0;
1481
unsigned int ss = 0;
1482
unsigned int tt = 0;
1486
1232
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1487
1233
double tmp1 = (1.0 - Y)/2.0;
1488
1234
double tmp2 = tmp1*tmp1;
1490
1236
// Compute basisvalues.
1491
1237
basisvalues[0] = 1.0;
1492
1238
basisvalues[1] = tmp0;
1493
for (unsigned int r = 1; r < 2; r++)
1495
rr = (r + 1)*((r + 1) + 1)/2;
1497
tt = (r - 1)*((r - 1) + 1)/2;
1498
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1499
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1500
}// end loop over 'r'
1501
for (unsigned int r = 0; r < 2; r++)
1503
rr = (r + 1)*(r + 1 + 1)/2 + 1;
1505
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1506
}// end loop over 'r'
1507
for (unsigned int r = 0; r < 1; r++)
1509
for (unsigned int s = 1; s < 2 - r; s++)
1511
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1512
ss = (r + s)*(r + s + 1)/2 + s;
1513
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1514
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1515
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1516
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1517
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1518
}// end loop over 's'
1519
}// end loop over 'r'
1520
for (unsigned int r = 0; r < 3; r++)
1522
for (unsigned int s = 0; s < 3 - r; s++)
1524
rr = (r + s)*(r + s + 1)/2 + s;
1525
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1526
}// end loop over 's'
1527
}// end loop over 'r'
1239
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
1240
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
1241
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
1242
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
1243
basisvalues[0] *= std::sqrt(0.5);
1244
basisvalues[2] *= std::sqrt(1.0);
1245
basisvalues[5] *= std::sqrt(1.5);
1246
basisvalues[1] *= std::sqrt(3.0);
1247
basisvalues[4] *= std::sqrt(4.5);
1248
basisvalues[3] *= std::sqrt(7.5);
1529
1250
// Table(s) of coefficients.
1530
1251
static const double coefficients0[6] = \
1674
1395
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1676
1397
// Declare helper variables.
1677
unsigned int rr = 0;
1678
unsigned int ss = 0;
1679
unsigned int tt = 0;
1683
1398
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1684
1399
double tmp1 = (1.0 - Y)/2.0;
1685
1400
double tmp2 = tmp1*tmp1;
1687
1402
// Compute basisvalues.
1688
1403
basisvalues[0] = 1.0;
1689
1404
basisvalues[1] = tmp0;
1690
for (unsigned int r = 1; r < 2; r++)
1692
rr = (r + 1)*((r + 1) + 1)/2;
1694
tt = (r - 1)*((r - 1) + 1)/2;
1695
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1696
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1697
}// end loop over 'r'
1698
for (unsigned int r = 0; r < 2; r++)
1700
rr = (r + 1)*(r + 1 + 1)/2 + 1;
1702
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1703
}// end loop over 'r'
1704
for (unsigned int r = 0; r < 1; r++)
1706
for (unsigned int s = 1; s < 2 - r; s++)
1708
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1709
ss = (r + s)*(r + s + 1)/2 + s;
1710
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1711
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1712
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1713
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1714
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1715
}// end loop over 's'
1716
}// end loop over 'r'
1717
for (unsigned int r = 0; r < 3; r++)
1719
for (unsigned int s = 0; s < 3 - r; s++)
1721
rr = (r + s)*(r + s + 1)/2 + s;
1722
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1723
}// end loop over 's'
1724
}// end loop over 'r'
1405
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
1406
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
1407
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
1408
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
1409
basisvalues[0] *= std::sqrt(0.5);
1410
basisvalues[2] *= std::sqrt(1.0);
1411
basisvalues[5] *= std::sqrt(1.5);
1412
basisvalues[1] *= std::sqrt(3.0);
1413
basisvalues[4] *= std::sqrt(4.5);
1414
basisvalues[3] *= std::sqrt(7.5);
1726
1416
// Table(s) of coefficients.
1727
1417
static const double coefficients0[6] = \
1871
1561
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
1873
1563
// Declare helper variables.
1874
unsigned int rr = 0;
1875
unsigned int ss = 0;
1876
unsigned int tt = 0;
1880
1564
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
1881
1565
double tmp1 = (1.0 - Y)/2.0;
1882
1566
double tmp2 = tmp1*tmp1;
1884
1568
// Compute basisvalues.
1885
1569
basisvalues[0] = 1.0;
1886
1570
basisvalues[1] = tmp0;
1887
for (unsigned int r = 1; r < 2; r++)
1889
rr = (r + 1)*((r + 1) + 1)/2;
1891
tt = (r - 1)*((r - 1) + 1)/2;
1892
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
1893
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
1894
}// end loop over 'r'
1895
for (unsigned int r = 0; r < 2; r++)
1897
rr = (r + 1)*(r + 1 + 1)/2 + 1;
1899
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
1900
}// end loop over 'r'
1901
for (unsigned int r = 0; r < 1; r++)
1903
for (unsigned int s = 1; s < 2 - r; s++)
1905
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
1906
ss = (r + s)*(r + s + 1)/2 + s;
1907
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
1908
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
1909
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1910
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
1911
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
1912
}// end loop over 's'
1913
}// end loop over 'r'
1914
for (unsigned int r = 0; r < 3; r++)
1916
for (unsigned int s = 0; s < 3 - r; s++)
1918
rr = (r + s)*(r + s + 1)/2 + s;
1919
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
1920
}// end loop over 's'
1921
}// end loop over 'r'
1571
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
1572
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
1573
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
1574
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
1575
basisvalues[0] *= std::sqrt(0.5);
1576
basisvalues[2] *= std::sqrt(1.0);
1577
basisvalues[5] *= std::sqrt(1.5);
1578
basisvalues[1] *= std::sqrt(3.0);
1579
basisvalues[4] *= std::sqrt(4.5);
1580
basisvalues[3] *= std::sqrt(7.5);
1923
1582
// Table(s) of coefficients.
1924
1583
static const double coefficients0[6] = \
2068
1727
double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
2070
1729
// Declare helper variables.
2071
unsigned int rr = 0;
2072
unsigned int ss = 0;
2073
unsigned int tt = 0;
2077
1730
double tmp0 = (1.0 + Y + 2.0*X)/2.0;
2078
1731
double tmp1 = (1.0 - Y)/2.0;
2079
1732
double tmp2 = tmp1*tmp1;
2081
1734
// Compute basisvalues.
2082
1735
basisvalues[0] = 1.0;
2083
1736
basisvalues[1] = tmp0;
2084
for (unsigned int r = 1; r < 2; r++)
2086
rr = (r + 1)*((r + 1) + 1)/2;
2088
tt = (r - 1)*((r - 1) + 1)/2;
2089
tmp5 = (1.0 + 2.0*r)/(1.0 + r);
2090
basisvalues[rr] = (basisvalues[ss]*tmp0*tmp5 - basisvalues[tt]*tmp2*r/(1.0 + r));
2091
}// end loop over 'r'
2092
for (unsigned int r = 0; r < 2; r++)
2094
rr = (r + 1)*(r + 1 + 1)/2 + 1;
2096
basisvalues[rr] = basisvalues[ss]*(0.5 + r + Y*(1.5 + r));
2097
}// end loop over 'r'
2098
for (unsigned int r = 0; r < 1; r++)
2100
for (unsigned int s = 1; s < 2 - r; s++)
2102
rr = (r + s + 1)*(r + s + 1 + 1)/2 + s + 1;
2103
ss = (r + s)*(r + s + 1)/2 + s;
2104
tt = (r + s - 1)*(r + s - 1 + 1)/2 + s - 1;
2105
tmp5 = (2.0 + 2.0*r + 2.0*s)*(3.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + s)*(2.0 + s + 2.0*r));
2106
tmp6 = (1.0 + 4.0*r*r + 4.0*r)*(2.0 + 2.0*r + 2.0*s)/(2.0*(1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2107
tmp7 = (1.0 + s + 2.0*r)*(3.0 + 2.0*r + 2.0*s)*s/((1.0 + 2.0*r + 2.0*s)*(1.0 + s)*(2.0 + s + 2.0*r));
2108
basisvalues[rr] = (basisvalues[ss]*(tmp6 + Y*tmp5) - basisvalues[tt]*tmp7);
2109
}// end loop over 's'
2110
}// end loop over 'r'
2111
for (unsigned int r = 0; r < 3; r++)
2113
for (unsigned int s = 0; s < 3 - r; s++)
2115
rr = (r + s)*(r + s + 1)/2 + s;
2116
basisvalues[rr] *= std::sqrt((0.5 + r)*(1.0 + r + s));
2117
}// end loop over 's'
2118
}// end loop over 'r'
1737
basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2;
1738
basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y);
1739
basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y);
1740
basisvalues[5] = basisvalues[2]*(0.11111111 + Y*1.6666667) - basisvalues[0]*0.55555556;
1741
basisvalues[0] *= std::sqrt(0.5);
1742
basisvalues[2] *= std::sqrt(1.0);
1743
basisvalues[5] *= std::sqrt(1.5);
1744
basisvalues[1] *= std::sqrt(3.0);
1745
basisvalues[4] *= std::sqrt(4.5);
1746
basisvalues[3] *= std::sqrt(7.5);
2120
1748
// Table(s) of coefficients.
2121
1749
static const double coefficients0[6] = \
2471
2099
/// Return a string identifying the dofmap
2472
2100
virtual const char* signature() const
2474
return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Cell('triangle', Space(2)), 0, None)";
2102
return "FFC dofmap for FiniteElement('Real', Cell('triangle', Space(2)), 0, None)";
2477
2105
/// Return true iff mesh entities of topological dimension d are needed