~ubuntu-branches/ubuntu/raring/ffc/raring

« back to all changes in this revision

Viewing changes to test/regression/references/r_quadrature/Biharmonic.h

  • Committer: Package Import Robot
  • Author(s): Johannes Ring
  • Date: 2011-10-26 17:52:20 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20111026175220-ope1dzqv4jn2b8pq
Tags: 1.0-beta2-1
* New upstream release. This release includes some performance
  improvements for evaluating basis functions. It also adds support
  for Bessel functions and error functions.
* debian/control: Bump version numbers for python-ufc, python-fiat,
  python-instant, and python-ufl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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+.
3
3
// 
4
4
// This code was generated with the following parameters:
5
5
// 
52
52
  /// Return a string identifying the finite element
53
53
  virtual const char* signature() const
54
54
  {
55
 
    return "FiniteElement('Discontinuous Lagrange', Cell('triangle', Space(2)), 0, None)";
 
55
    return "FiniteElement('Real', Cell('triangle', Space(2)), 0, None)";
56
56
  }
57
57
 
58
58
  /// Return the cell shape
562
562
      double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
563
563
      
564
564
      // Declare helper variables.
565
 
      unsigned int rr = 0;
566
 
      unsigned int ss = 0;
567
 
      unsigned int tt = 0;
568
 
      double tmp5 = 0.0;
569
 
      double tmp6 = 0.0;
570
 
      double tmp7 = 0.0;
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++)
579
 
      {
580
 
        rr = (r + 1)*((r + 1) + 1)/2;
581
 
        ss = r*(r + 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++)
587
 
      {
588
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
589
 
        ss = r*(r + 1)/2;
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++)
593
 
      {
594
 
        for (unsigned int s = 1; s < 2 - r; s++)
595
 
        {
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++)
606
 
      {
607
 
        for (unsigned int s = 0; s < 3 - r; s++)
608
 
        {
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);
613
582
      
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};
630
599
      
631
600
      // Declare helper variables.
632
 
      unsigned int rr = 0;
633
 
      unsigned int ss = 0;
634
 
      unsigned int tt = 0;
635
 
      double tmp5 = 0.0;
636
 
      double tmp6 = 0.0;
637
 
      double tmp7 = 0.0;
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++)
646
 
      {
647
 
        rr = (r + 1)*((r + 1) + 1)/2;
648
 
        ss = r*(r + 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++)
654
 
      {
655
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
656
 
        ss = r*(r + 1)/2;
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++)
660
 
      {
661
 
        for (unsigned int s = 1; s < 2 - r; s++)
662
 
        {
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++)
673
 
      {
674
 
        for (unsigned int s = 0; s < 3 - r; s++)
675
 
        {
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);
680
618
      
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};
697
635
      
698
636
      // Declare helper variables.
699
 
      unsigned int rr = 0;
700
 
      unsigned int ss = 0;
701
 
      unsigned int tt = 0;
702
 
      double tmp5 = 0.0;
703
 
      double tmp6 = 0.0;
704
 
      double tmp7 = 0.0;
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++)
713
 
      {
714
 
        rr = (r + 1)*((r + 1) + 1)/2;
715
 
        ss = r*(r + 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++)
721
 
      {
722
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
723
 
        ss = r*(r + 1)/2;
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++)
727
 
      {
728
 
        for (unsigned int s = 1; s < 2 - r; s++)
729
 
        {
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++)
740
 
      {
741
 
        for (unsigned int s = 0; s < 3 - r; s++)
742
 
        {
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);
747
654
      
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};
764
671
      
765
672
      // Declare helper variables.
766
 
      unsigned int rr = 0;
767
 
      unsigned int ss = 0;
768
 
      unsigned int tt = 0;
769
 
      double tmp5 = 0.0;
770
 
      double tmp6 = 0.0;
771
 
      double tmp7 = 0.0;
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++)
780
 
      {
781
 
        rr = (r + 1)*((r + 1) + 1)/2;
782
 
        ss = r*(r + 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++)
788
 
      {
789
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
790
 
        ss = r*(r + 1)/2;
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++)
794
 
      {
795
 
        for (unsigned int s = 1; s < 2 - r; s++)
796
 
        {
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++)
807
 
      {
808
 
        for (unsigned int s = 0; s < 3 - r; s++)
809
 
        {
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);
814
690
      
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};
831
707
      
832
708
      // Declare helper variables.
833
 
      unsigned int rr = 0;
834
 
      unsigned int ss = 0;
835
 
      unsigned int tt = 0;
836
 
      double tmp5 = 0.0;
837
 
      double tmp6 = 0.0;
838
 
      double tmp7 = 0.0;
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++)
847
 
      {
848
 
        rr = (r + 1)*((r + 1) + 1)/2;
849
 
        ss = r*(r + 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++)
855
 
      {
856
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
857
 
        ss = r*(r + 1)/2;
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++)
861
 
      {
862
 
        for (unsigned int s = 1; s < 2 - r; s++)
863
 
        {
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++)
874
 
      {
875
 
        for (unsigned int s = 0; s < 3 - r; s++)
876
 
        {
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);
881
726
      
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};
898
743
      
899
744
      // Declare helper variables.
900
 
      unsigned int rr = 0;
901
 
      unsigned int ss = 0;
902
 
      unsigned int tt = 0;
903
 
      double tmp5 = 0.0;
904
 
      double tmp6 = 0.0;
905
 
      double tmp7 = 0.0;
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++)
914
 
      {
915
 
        rr = (r + 1)*((r + 1) + 1)/2;
916
 
        ss = r*(r + 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++)
922
 
      {
923
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
924
 
        ss = r*(r + 1)/2;
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++)
928
 
      {
929
 
        for (unsigned int s = 1; s < 2 - r; s++)
930
 
        {
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++)
941
 
      {
942
 
        for (unsigned int s = 0; s < 3 - r; s++)
943
 
        {
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);
948
762
      
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};
1084
898
      
1085
899
      // Declare helper variables.
1086
 
      unsigned int rr = 0;
1087
 
      unsigned int ss = 0;
1088
 
      unsigned int tt = 0;
1089
 
      double tmp5 = 0.0;
1090
 
      double tmp6 = 0.0;
1091
 
      double tmp7 = 0.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++)
1100
 
      {
1101
 
        rr = (r + 1)*((r + 1) + 1)/2;
1102
 
        ss = r*(r + 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++)
1108
 
      {
1109
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1110
 
        ss = r*(r + 1)/2;
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++)
1114
 
      {
1115
 
        for (unsigned int s = 1; s < 2 - r; s++)
1116
 
        {
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++)
1127
 
      {
1128
 
        for (unsigned int s = 0; s < 3 - r; s++)
1129
 
        {
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);
1134
917
      
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};
1281
1064
      
1282
1065
      // Declare helper variables.
1283
 
      unsigned int rr = 0;
1284
 
      unsigned int ss = 0;
1285
 
      unsigned int tt = 0;
1286
 
      double tmp5 = 0.0;
1287
 
      double tmp6 = 0.0;
1288
 
      double tmp7 = 0.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++)
1297
 
      {
1298
 
        rr = (r + 1)*((r + 1) + 1)/2;
1299
 
        ss = r*(r + 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++)
1305
 
      {
1306
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1307
 
        ss = r*(r + 1)/2;
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++)
1311
 
      {
1312
 
        for (unsigned int s = 1; s < 2 - r; s++)
1313
 
        {
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++)
1324
 
      {
1325
 
        for (unsigned int s = 0; s < 3 - r; s++)
1326
 
        {
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);
1331
1083
      
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};
1478
1230
      
1479
1231
      // Declare helper variables.
1480
 
      unsigned int rr = 0;
1481
 
      unsigned int ss = 0;
1482
 
      unsigned int tt = 0;
1483
 
      double tmp5 = 0.0;
1484
 
      double tmp6 = 0.0;
1485
 
      double tmp7 = 0.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++)
1494
 
      {
1495
 
        rr = (r + 1)*((r + 1) + 1)/2;
1496
 
        ss = r*(r + 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++)
1502
 
      {
1503
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1504
 
        ss = r*(r + 1)/2;
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++)
1508
 
      {
1509
 
        for (unsigned int s = 1; s < 2 - r; s++)
1510
 
        {
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++)
1521
 
      {
1522
 
        for (unsigned int s = 0; s < 3 - r; s++)
1523
 
        {
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);
1528
1249
      
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};
1675
1396
      
1676
1397
      // Declare helper variables.
1677
 
      unsigned int rr = 0;
1678
 
      unsigned int ss = 0;
1679
 
      unsigned int tt = 0;
1680
 
      double tmp5 = 0.0;
1681
 
      double tmp6 = 0.0;
1682
 
      double tmp7 = 0.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++)
1691
 
      {
1692
 
        rr = (r + 1)*((r + 1) + 1)/2;
1693
 
        ss = r*(r + 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++)
1699
 
      {
1700
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1701
 
        ss = r*(r + 1)/2;
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++)
1705
 
      {
1706
 
        for (unsigned int s = 1; s < 2 - r; s++)
1707
 
        {
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++)
1718
 
      {
1719
 
        for (unsigned int s = 0; s < 3 - r; s++)
1720
 
        {
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);
1725
1415
      
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};
1872
1562
      
1873
1563
      // Declare helper variables.
1874
 
      unsigned int rr = 0;
1875
 
      unsigned int ss = 0;
1876
 
      unsigned int tt = 0;
1877
 
      double tmp5 = 0.0;
1878
 
      double tmp6 = 0.0;
1879
 
      double tmp7 = 0.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++)
1888
 
      {
1889
 
        rr = (r + 1)*((r + 1) + 1)/2;
1890
 
        ss = r*(r + 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++)
1896
 
      {
1897
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
1898
 
        ss = r*(r + 1)/2;
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++)
1902
 
      {
1903
 
        for (unsigned int s = 1; s < 2 - r; s++)
1904
 
        {
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++)
1915
 
      {
1916
 
        for (unsigned int s = 0; s < 3 - r; s++)
1917
 
        {
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);
1922
1581
      
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};
2069
1728
      
2070
1729
      // Declare helper variables.
2071
 
      unsigned int rr = 0;
2072
 
      unsigned int ss = 0;
2073
 
      unsigned int tt = 0;
2074
 
      double tmp5 = 0.0;
2075
 
      double tmp6 = 0.0;
2076
 
      double tmp7 = 0.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++)
2085
 
      {
2086
 
        rr = (r + 1)*((r + 1) + 1)/2;
2087
 
        ss = r*(r + 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++)
2093
 
      {
2094
 
        rr = (r + 1)*(r + 1 + 1)/2 + 1;
2095
 
        ss = r*(r + 1)/2;
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++)
2099
 
      {
2100
 
        for (unsigned int s = 1; s < 2 - r; s++)
2101
 
        {
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++)
2112
 
      {
2113
 
        for (unsigned int s = 0; s < 3 - r; s++)
2114
 
        {
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);
2119
1747
      
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
2473
2101
  {
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)";
2475
2103
  }
2476
2104
 
2477
2105
  /// Return true iff mesh entities of topological dimension d are needed
2491
2119
      }
2492
2120
    case 2:
2493
2121
      {
2494
 
        return true;
 
2122
        return false;
2495
2123
        break;
2496
2124
      }
2497
2125
    }
2502
2130
  /// Initialize dofmap for mesh (return true iff init_cell() is needed)
2503
2131
  virtual bool init_mesh(const ufc::mesh& m)
2504
2132
  {
2505
 
    _global_dimension = m.num_entities[2];
 
2133
    _global_dimension = 1;
2506
2134
    return false;
2507
2135
  }
2508
2136
 
2585
2213
                             const ufc::mesh& m,
2586
2214
                             const ufc::cell& c) const
2587
2215
  {
2588
 
    dofs[0] = c.entity_indices[2][0];
 
2216
    dofs[0] = 0;
2589
2217
  }
2590
2218
 
2591
2219
  /// Tabulate the local-to-local mapping from facet dofs to cell dofs