590
590
values.resize(4);
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);
598
598
basis_P1_q::grad_eval(
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;
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;
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);
878
878
values.resize(6);
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;
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];
948
948
switch (i_dof_local) {
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);
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);
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);
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);
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);
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);
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);
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);
994
994
switch (i_dof_local) {
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);
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);
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);
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);
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);
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);
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);
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);
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);
1076
1076
basis_P1_H::grad_eval(
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);
1108
1108
basis_P1_H::hessian_eval(