23 double *fval =
new double[num_points];
27 for(
int j = 0; j < num_points; j++) {
29 for(
int i = 0; i < num_points; i++) VDM(i, j) = fval[i];
37 for(
int i = 0; i <=
order; i++) {
38 for(
int j = 0; j <=
order; j++) {
40 for(
int k = 0; k <=
order - std::max(i, j); k++, idx++) {
45 for(
int l = 0; l < num_points; l++) {
46 double oneMinW = std::max(1e-14, 1 -
points(l, 2));
47 VDM(idx, l) = std::pow(
points(l, 0), i);
48 VDM(idx, l) *= std::pow(
points(l, 1), j);
49 VDM(idx, l) *= std::pow(
points(l, 2), k);
50 VDM(idx, l) *= std::pow(oneMinW, std::max(i, j) - i - j);
74 double *fval =
new double[N];
77 for(
int i = 0; i < N; i++) {
93 double *fval =
new double[N];
95 for(
int iPt = 0; iPt < NPts; iPt++) {
96 bergot->
f(coord(iPt, 0), coord(iPt, 1), coord(iPt, 2), fval);
97 for(
int i = 0; i < N; i++) {
99 for(
int j = 0; j < N; j++)
112 Msg::Error(
"Node out of range for pyramidal basis");
118 double *fval =
new double[N];
133 double(*dfval)[3] =
new double[N][3];
136 for(
int i = 0; i < N; i++) {
140 for(
int j = 0; j < N; j++) {
157 double(*dfv)[3] =
new double[N][3];
158 dfm.
resize(3 * NPts, N,
false);
160 for(
int iPt = 0; iPt < NPts; iPt++) {
161 df(coord(iPt, 0), coord(iPt, 1), coord(iPt, 2), dfv);
162 for(
int i = 0; i < N; i++) {
163 dfm(3 * iPt + 0, i) = dfv[i][0];
164 dfm(3 * iPt + 1, i) = dfv[i][1];
165 dfm(3 * iPt + 2, i) = dfv[i][2];
173 double grad[3])
const
178 Msg::Error(
"Node out of range for pyramidal basis gradient");
184 double(*dfval)[3] =
new double[N][3];
190 for(
int j = 0; j < N; j++) {