~ubuntu-branches/ubuntu/wily/rheolef/wily

« back to all changes in this revision

Viewing changes to nfem/basis/P1.cc

  • Committer: Package Import Robot
  • Author(s): Pierre Saramito, Pierre Saramito, Sylvestre Ledru
  • Date: 2013-04-30 11:29:51 UTC
  • mfrom: (1.2.1) (11.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20130430112951-g69nuqin77t75dek
Tags: 6.4-1
[ Pierre Saramito ]
* New upstream release 6.4 (major changes):
  - new powerful c++ expressions for FEM specifications
  - configure script improved (portability increased)
  - minor bug fixes
* control:
  - all architectures are considered (armel & armhf are back)
  - no more circular-dependency librheolef-dev <--> rheolef
* rules: add security compiler flags (hardening and -W,-l,relro)
* watch: include an updated version, thanks to B. Martens <bartm@debian.org>
* copyright: various file format fixes

[ Sylvestre Ledru ]
*  Standards-Version updated to 3.9.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
465
465
{
466
466
  values.resize(3);
467
467
  typedef Float T;
468
 
  values[0] = -hat_x[1]-hat_x[0]+1.0;
 
468
  values[0] = -hat_x[0]-hat_x[1]+1.0;
469
469
  values[1] = hat_x[0];
470
470
  values[2] = hat_x[1];
471
471
}
525
525
      return val;
526
526
    }
527
527
    case 2: {
528
 
      val =  hat_x[1]*( hat_x[0]+1.0)/4.0+hat_x[0]/4.0+(1.0/4.0);
 
528
      val =  ( hat_x[0]+1.0)*hat_x[1]/4.0+hat_x[0]/4.0+(1.0/4.0);
529
529
      return val;
530
530
    }
531
531
    case 3: {
589
589
{
590
590
  values.resize(4);
591
591
  typedef Float T;
592
 
  values[0] =  hat_x[1]*( hat_x[0]-1.0)/4.0-hat_x[0]/4.0+(1.0/4.0);
 
592
  values[0] =  ( hat_x[0]-1.0)*hat_x[1]/4.0-hat_x[0]/4.0+(1.0/4.0);
593
593
  values[1] = -hat_x[1]*( hat_x[0]+1.0)/4.0+hat_x[0]/4.0+(1.0/4.0);
594
 
  values[2] =  hat_x[0]/4.0+hat_x[1]*( hat_x[0]+1.0)/4.0+(1.0/4.0);
595
 
  values[3] = -hat_x[1]*( hat_x[0]-1.0)/4.0-hat_x[0]/4.0+(1.0/4.0);
 
594
  values[2] =  ( hat_x[0]+1.0)*hat_x[1]/4.0+hat_x[0]/4.0+(1.0/4.0);
 
595
  values[3] = -hat_x[0]/4.0-hat_x[1]*( hat_x[0]-1.0)/4.0+(1.0/4.0);
596
596
}
597
597
void
598
598
basis_P1_q::grad_eval(
785
785
      return val;
786
786
    }
787
787
    case 1: {
788
 
      val = -hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
 
788
      val =  hat_x[0]/2.0-hat_x[2]*hat_x[0]/2.0;
789
789
      return val;
790
790
    }
791
791
    case 2: {
792
 
      val =  hat_x[1]/2.0-hat_x[1]*hat_x[2]/2.0;
 
792
      val = -hat_x[1]*hat_x[2]/2.0+hat_x[1]/2.0;
793
793
      return val;
794
794
    }
795
795
    case 3: {
796
 
      val = -hat_x[0]/2.0-( hat_x[0]+hat_x[1]-1.0)*hat_x[2]/2.0-hat_x[1]/2.0+(1.0/2.0);
 
796
      val = -hat_x[0]/2.0-hat_x[1]/2.0-( hat_x[0]+hat_x[1]-1.0)*hat_x[2]/2.0+(1.0/2.0);
797
797
      return val;
798
798
    }
799
799
    case 4: {
801
801
      return val;
802
802
    }
803
803
    case 5: {
804
 
      val =  hat_x[1]/2.0+hat_x[1]*hat_x[2]/2.0;
 
804
      val =  hat_x[1]*hat_x[2]/2.0+hat_x[1]/2.0;
805
805
      return val;
806
806
    }
807
807
    default : {
821
821
    case 0: {
822
822
      val[0] =  hat_x[2]/2.0-(1.0/2.0);
823
823
      val[1] =  hat_x[2]/2.0-(1.0/2.0);
824
 
      val[2] =  hat_x[1]/2.0+hat_x[0]/2.0-(1.0/2.0);
 
824
      val[2] =  hat_x[0]/2.0+hat_x[1]/2.0-(1.0/2.0);
825
825
      return val;
826
826
    }
827
827
    case 1: {
839
839
    case 3: {
840
840
      val[0] = -hat_x[2]/2.0-(1.0/2.0);
841
841
      val[1] = -hat_x[2]/2.0-(1.0/2.0);
842
 
      val[2] = -hat_x[0]/2.0-hat_x[1]/2.0+(1.0/2.0);
 
842
      val[2] = -hat_x[1]/2.0-hat_x[0]/2.0+(1.0/2.0);
843
843
      return val;
844
844
    }
845
845
    case 4: {
877
877
{
878
878
  values.resize(6);
879
879
  typedef Float T;
880
 
  values[0] =  ( hat_x[0]+hat_x[1]-1.0)*hat_x[2]/2.0-hat_x[0]/2.0-hat_x[1]/2.0+(1.0/2.0);
881
 
  values[1] = -hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
882
 
  values[2] =  hat_x[1]/2.0-hat_x[1]*hat_x[2]/2.0;
 
880
  values[0] = -hat_x[0]/2.0-hat_x[1]/2.0+( hat_x[0]+hat_x[1]-1.0)*hat_x[2]/2.0+(1.0/2.0);
 
881
  values[1] =  hat_x[0]/2.0-hat_x[0]*hat_x[2]/2.0;
 
882
  values[2] = -hat_x[1]*hat_x[2]/2.0+hat_x[1]/2.0;
883
883
  values[3] = -hat_x[1]/2.0-( hat_x[1]+hat_x[0]-1.0)*hat_x[2]/2.0-hat_x[0]/2.0+(1.0/2.0);
884
884
  values[4] =  hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
885
 
  values[5] =  hat_x[1]/2.0+hat_x[1]*hat_x[2]/2.0;
 
885
  values[5] =  hat_x[2]*hat_x[1]/2.0+hat_x[1]/2.0;
886
886
}
887
887
void
888
888
basis_P1_P::grad_eval(
902
902
  values[2][2] = -(1.0/2.0)*hat_x[1];
903
903
  values[3][0] = -hat_x[2]/2.0-(1.0/2.0);
904
904
  values[3][1] = -hat_x[2]/2.0-(1.0/2.0);
905
 
  values[3][2] = -hat_x[1]/2.0-hat_x[0]/2.0+(1.0/2.0);
 
905
  values[3][2] = -hat_x[0]/2.0-hat_x[1]/2.0+(1.0/2.0);
906
906
  values[4][0] =  hat_x[2]/2.0+(1.0/2.0);
907
907
  values[4][1] = 0.0;
908
908
  values[4][2] = (1.0/2.0)*hat_x[0];
947
947
  T val = 0;
948
948
  switch (i_dof_local) {
949
949
    case 0: {
950
 
      val = -hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0+hat_x[2]*( hat_x[0]-( hat_x[0]-1.0)*hat_x[1]-1.0)/8.0+(1.0/8.0);
 
950
      val = -hat_x[0]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0+hat_x[2]*( hat_x[0]-hat_x[1]*( hat_x[0]-1.0)-1.0)/8.0+(1.0/8.0);
951
951
      return val;
952
952
    }
953
953
    case 1: {
954
 
      val =  hat_x[0]/8.0-hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[2]*( hat_x[0]-hat_x[1]*( hat_x[0]+1.0)+1.0)/8.0+(1.0/8.0);
 
954
      val =  hat_x[0]/8.0-hat_x[2]*( hat_x[0]-hat_x[1]*( hat_x[0]+1.0)+1.0)/8.0-hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
955
955
      return val;
956
956
    }
957
957
    case 2: {
958
 
      val =  hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[2]*( hat_x[0]+hat_x[1]*( hat_x[0]+1.0)+1.0)/8.0+(1.0/8.0);
 
958
      val = -hat_x[2]*( hat_x[1]*( hat_x[0]+1.0)+hat_x[0]+1.0)/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
959
959
      return val;
960
960
    }
961
961
    case 3: {
962
 
      val = -hat_x[0]/8.0+hat_x[2]*( hat_x[0]+( hat_x[0]-1.0)*hat_x[1]-1.0)/8.0-( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
 
962
      val = -hat_x[1]*( hat_x[0]-1.0)/8.0+( hat_x[1]*( hat_x[0]-1.0)+hat_x[0]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+(1.0/8.0);
963
963
      return val;
964
964
    }
965
965
    case 4: {
966
 
      val =  ( hat_x[1]*( hat_x[0]-1.0)-hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
 
966
      val = -( hat_x[0]-( hat_x[0]-1.0)*hat_x[1]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
967
967
      return val;
968
968
    }
969
969
    case 5: {
970
 
      val = -hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[2]*( hat_x[1]*( hat_x[0]+1.0)-hat_x[0]-1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
 
970
      val =  ( hat_x[0]-hat_x[1]*( hat_x[0]+1.0)+1.0)*hat_x[2]/8.0+hat_x[0]/8.0-hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
971
971
      return val;
972
972
    }
973
973
    case 6: {
974
 
      val =  hat_x[1]*( hat_x[0]+1.0)/8.0+( hat_x[1]*( hat_x[0]+1.0)+hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[0]/8.0+(1.0/8.0);
 
974
      val =  hat_x[0]/8.0+( hat_x[0]+hat_x[1]*( hat_x[0]+1.0)+1.0)*hat_x[2]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
975
975
      return val;
976
976
    }
977
977
    case 7: {
978
 
      val = -hat_x[1]*( hat_x[0]-1.0)/8.0-( hat_x[1]*( hat_x[0]-1.0)+hat_x[0]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+(1.0/8.0);
 
978
      val = -hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0-( hat_x[0]+hat_x[1]*( hat_x[0]-1.0)-1.0)*hat_x[2]/8.0+(1.0/8.0);
979
979
      return val;
980
980
    }
981
981
    default : {
994
994
  switch (i_dof_local) {
995
995
    case 0: {
996
996
      val[0] =  hat_x[1]/8.0-( hat_x[1]-1.0)*hat_x[2]/8.0-(1.0/8.0);
997
 
      val[1] = -hat_x[2]*( hat_x[0]-1.0)/8.0+hat_x[0]/8.0-(1.0/8.0);
998
 
      val[2] = -( hat_x[0]-1.0)*hat_x[1]/8.0+hat_x[0]/8.0-(1.0/8.0);
 
997
      val[1] =  hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/8.0-(1.0/8.0);
 
998
      val[2] =  hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
999
999
      return val;
1000
1000
    }
1001
1001
    case 1: {
1002
 
      val[0] =  hat_x[2]*( hat_x[1]-1.0)/8.0-hat_x[1]/8.0+(1.0/8.0);
1003
 
      val[1] =  ( hat_x[0]+1.0)*hat_x[2]/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1002
      val[0] = -hat_x[1]/8.0+hat_x[2]*( hat_x[1]-1.0)/8.0+(1.0/8.0);
 
1003
      val[1] =  hat_x[2]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
1004
1004
      val[2] =  hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
1005
1005
      return val;
1006
1006
    }
1007
1007
    case 2: {
1008
 
      val[0] =  hat_x[1]/8.0-hat_x[2]*( hat_x[1]+1.0)/8.0+(1.0/8.0);
1009
 
      val[1] =  hat_x[0]/8.0-hat_x[2]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
1010
 
      val[2] = -( hat_x[0]+1.0)*hat_x[1]/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1008
      val[0] = -hat_x[2]*( hat_x[1]+1.0)/8.0+hat_x[1]/8.0+(1.0/8.0);
 
1009
      val[1] = -hat_x[2]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
 
1010
      val[2] = -hat_x[0]/8.0-( hat_x[0]+1.0)*hat_x[1]/8.0-(1.0/8.0);
1011
1011
      return val;
1012
1012
    }
1013
1013
    case 3: {
1014
 
      val[0] =  ( hat_x[1]+1.0)*hat_x[2]/8.0-hat_x[1]/8.0-(1.0/8.0);
 
1014
      val[0] = -hat_x[1]/8.0+hat_x[2]*( hat_x[1]+1.0)/8.0-(1.0/8.0);
1015
1015
      val[1] = -hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
1016
 
      val[2] =  hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0-(1.0/8.0);
 
1016
      val[2] =  ( hat_x[0]-1.0)*hat_x[1]/8.0+hat_x[0]/8.0-(1.0/8.0);
1017
1017
      return val;
1018
1018
    }
1019
1019
    case 4: {
1020
 
      val[0] =  hat_x[2]*( hat_x[1]-1.0)/8.0+hat_x[1]/8.0-(1.0/8.0);
 
1020
      val[0] =  hat_x[1]/8.0+( hat_x[1]-1.0)*hat_x[2]/8.0-(1.0/8.0);
1021
1021
      val[1] =  hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[2]/8.0-(1.0/8.0);
1022
 
      val[2] =  hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
 
1022
      val[2] = -hat_x[0]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0+(1.0/8.0);
1023
1023
      return val;
1024
1024
    }
1025
1025
    case 5: {
1026
 
      val[0] = -hat_x[1]/8.0-hat_x[2]*( hat_x[1]-1.0)/8.0+(1.0/8.0);
1027
 
      val[1] = -hat_x[0]/8.0-hat_x[2]*( hat_x[0]+1.0)/8.0-(1.0/8.0);
1028
 
      val[2] = -( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
 
1026
      val[0] = -hat_x[1]/8.0-( hat_x[1]-1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1027
      val[1] = -hat_x[2]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1028
      val[2] = -hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
1029
1029
      return val;
1030
1030
    }
1031
1031
    case 6: {
1032
 
      val[0] =  hat_x[1]/8.0+hat_x[2]*( hat_x[1]+1.0)/8.0+(1.0/8.0);
1033
 
      val[1] =  ( hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[0]/8.0+(1.0/8.0);
1034
 
      val[2] =  hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
 
1032
      val[0] =  hat_x[1]/8.0+( hat_x[1]+1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1033
      val[1] =  hat_x[0]/8.0+( hat_x[0]+1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1034
      val[2] =  hat_x[0]/8.0+( hat_x[0]+1.0)*hat_x[1]/8.0+(1.0/8.0);
1035
1035
      return val;
1036
1036
    }
1037
1037
    case 7: {
1038
1038
      val[0] = -hat_x[1]/8.0-hat_x[2]*( hat_x[1]+1.0)/8.0-(1.0/8.0);
1039
 
      val[1] = -hat_x[2]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
1040
 
      val[2] = -( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0+(1.0/8.0);
 
1039
      val[1] = -hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1040
      val[2] = -hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
1041
1041
      return val;
1042
1042
    }
1043
1043
    default : {
1063
1063
{
1064
1064
  values.resize(8);
1065
1065
  typedef Float T;
1066
 
  values[0] =  ( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0-( ( hat_x[0]-1.0)*hat_x[1]-hat_x[0]+1.0)*hat_x[2]/8.0+(1.0/8.0);
1067
 
  values[1] =  hat_x[2]*( hat_x[1]*( hat_x[0]+1.0)-hat_x[0]-1.0)/8.0-hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
1068
 
  values[2] = -( hat_x[1]*( hat_x[0]+1.0)+hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
1069
 
  values[3] =  ( hat_x[0]+( hat_x[0]-1.0)*hat_x[1]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
1070
 
  values[4] =  ( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0+hat_x[2]*( ( hat_x[0]-1.0)*hat_x[1]-hat_x[0]+1.0)/8.0+(1.0/8.0);
1071
 
  values[5] = -hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[2]*( hat_x[1]*( hat_x[0]+1.0)-hat_x[0]-1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
1072
 
  values[6] =  ( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]+hat_x[0]+1.0)/8.0+(1.0/8.0);
1073
 
  values[7] = -hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0-hat_x[2]*( hat_x[1]*( hat_x[0]-1.0)+hat_x[0]-1.0)/8.0+(1.0/8.0);
 
1066
  values[0] =  ( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[2]*( ( hat_x[0]-1.0)*hat_x[1]-hat_x[0]+1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
 
1067
  values[1] = -hat_x[1]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+( hat_x[1]*( hat_x[0]+1.0)-hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1068
  values[2] = -hat_x[2]*( hat_x[0]+( hat_x[0]+1.0)*hat_x[1]+1.0)/8.0+hat_x[0]/8.0+( hat_x[0]+1.0)*hat_x[1]/8.0+(1.0/8.0);
 
1069
  values[3] = -( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0+hat_x[2]*( ( hat_x[0]-1.0)*hat_x[1]+hat_x[0]-1.0)/8.0+(1.0/8.0);
 
1070
  values[4] = -hat_x[2]*( hat_x[0]-( hat_x[0]-1.0)*hat_x[1]-1.0)/8.0-hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
 
1071
  values[5] = -( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0-hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]-hat_x[0]-1.0)/8.0+(1.0/8.0);
 
1072
  values[6] =  hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+( hat_x[0]+hat_x[1]*( hat_x[0]+1.0)+1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1073
  values[7] = -( hat_x[0]-1.0)*hat_x[1]/8.0-( ( hat_x[0]-1.0)*hat_x[1]+hat_x[0]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+(1.0/8.0);
1074
1074
}
1075
1075
void
1076
1076
basis_P1_H::grad_eval(
1079
1079
{
1080
1080
  values.resize(8);
1081
1081
  typedef Float T;
1082
 
  values[0][0] = -hat_x[2]*( hat_x[1]-1.0)/8.0+hat_x[1]/8.0-(1.0/8.0);
1083
 
  values[0][1] =  hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/8.0-(1.0/8.0);
 
1082
  values[0][0] =  hat_x[1]/8.0-( hat_x[1]-1.0)*hat_x[2]/8.0-(1.0/8.0);
 
1083
  values[0][1] =  hat_x[0]/8.0-hat_x[2]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
1084
1084
  values[0][2] =  hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
1085
1085
  values[1][0] =  ( hat_x[1]-1.0)*hat_x[2]/8.0-hat_x[1]/8.0+(1.0/8.0);
1086
 
  values[1][1] = -hat_x[0]/8.0+hat_x[2]*( hat_x[0]+1.0)/8.0-(1.0/8.0);
1087
 
  values[1][2] =  ( hat_x[0]+1.0)*hat_x[1]/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1086
  values[1][1] =  ( hat_x[0]+1.0)*hat_x[2]/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1087
  values[1][2] =  hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
1088
1088
  values[2][0] =  hat_x[1]/8.0-hat_x[2]*( hat_x[1]+1.0)/8.0+(1.0/8.0);
1089
1089
  values[2][1] = -( hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[0]/8.0+(1.0/8.0);
1090
 
  values[2][2] = -hat_x[1]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
1091
 
  values[3][0] = -hat_x[1]/8.0+hat_x[2]*( hat_x[1]+1.0)/8.0-(1.0/8.0);
1092
 
  values[3][1] =  hat_x[2]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
1093
 
  values[3][2] =  ( hat_x[0]-1.0)*hat_x[1]/8.0+hat_x[0]/8.0-(1.0/8.0);
1094
 
  values[4][0] =  hat_x[2]*( hat_x[1]-1.0)/8.0+hat_x[1]/8.0-(1.0/8.0);
1095
 
  values[4][1] =  hat_x[2]*( hat_x[0]-1.0)/8.0+hat_x[0]/8.0-(1.0/8.0);
1096
 
  values[4][2] = -hat_x[0]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0+(1.0/8.0);
 
1090
  values[2][2] = -( hat_x[0]+1.0)*hat_x[1]/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1091
  values[3][0] =  ( hat_x[1]+1.0)*hat_x[2]/8.0-hat_x[1]/8.0-(1.0/8.0);
 
1092
  values[3][1] = -hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
 
1093
  values[3][2] =  hat_x[0]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
 
1094
  values[4][0] =  hat_x[1]/8.0+hat_x[2]*( hat_x[1]-1.0)/8.0-(1.0/8.0);
 
1095
  values[4][1] =  ( hat_x[0]-1.0)*hat_x[2]/8.0+hat_x[0]/8.0-(1.0/8.0);
 
1096
  values[4][2] =  hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+(1.0/8.0);
1097
1097
  values[5][0] = -hat_x[2]*( hat_x[1]-1.0)/8.0-hat_x[1]/8.0+(1.0/8.0);
1098
 
  values[5][1] = -hat_x[0]/8.0-( hat_x[0]+1.0)*hat_x[2]/8.0-(1.0/8.0);
1099
 
  values[5][2] = -( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
1100
 
  values[6][0] =  ( hat_x[1]+1.0)*hat_x[2]/8.0+hat_x[1]/8.0+(1.0/8.0);
1101
 
  values[6][1] =  hat_x[0]/8.0+( hat_x[0]+1.0)*hat_x[2]/8.0+(1.0/8.0);
1102
 
  values[6][2] =  ( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
1103
 
  values[7][0] = -hat_x[2]*( hat_x[1]+1.0)/8.0-hat_x[1]/8.0-(1.0/8.0);
 
1098
  values[5][1] = -hat_x[2]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
 
1099
  values[5][2] =  hat_x[0]/8.0-( hat_x[0]+1.0)*hat_x[1]/8.0+(1.0/8.0);
 
1100
  values[6][0] =  hat_x[1]/8.0+hat_x[2]*( hat_x[1]+1.0)/8.0+(1.0/8.0);
 
1101
  values[6][1] =  hat_x[2]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
 
1102
  values[6][2] =  hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
 
1103
  values[7][0] = -hat_x[1]/8.0-( hat_x[1]+1.0)*hat_x[2]/8.0-(1.0/8.0);
1104
1104
  values[7][1] = -hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
1105
 
  values[7][2] = -hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
 
1105
  values[7][2] = -hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0+(1.0/8.0);
1106
1106
}
1107
1107
void
1108
1108
basis_P1_H::hessian_eval(