34 kv[0]->CalcShape(shape,
ijk[0], ip.
x);
37 for (
int i = 0; i <=
order; i++)
39 sum += (shape(i) *=
weights(i));
51 kv[0]->CalcDShape(grad,
ijk[0], ip.
x);
53 real_t sum = 0.0, dsum = 0.0;
54 for (
int i = 0; i <=
order; i++)
57 dsum += ( grad(i) *=
weights(i));
71 kv[0]->CalcDShape(grad,
ijk[0], ip.
x);
72 kv[0]->CalcD2Shape(hess,
ijk[0], ip.
x);
74 real_t sum = 0.0, dsum = 0.0, d2sum = 0.0;
75 for (
int i = 0; i <=
order; i++)
78 dsum += ( grad(i) *=
weights(i));
79 d2sum += ( hess(i) *=
weights(i));
83 add(sum, hess, -2*dsum*sum*sum, grad, hess);
84 add(1.0, hess, (-d2sum + 2*dsum*dsum*sum)*sum*sum,
shape_x, hess);
93 for (
int i = 0; i <=
order; i++)
96 if (!
kv[0]->inSpan(kx,
ijk[0]+
order)) {
continue; }
100 dofs(i) = coeff.
Eval(Trans, ip);
112 for (
int i = 0; i <=
order; i++)
115 if (!
kv[0]->inSpan(kx,
ijk[0]+
order)) {
continue; }
119 vc.
Eval(x, Trans, ip);
120 for (
int j = 0; j < x.
Size(); j++)
122 dofs(
dof*j+i) = x(j);
153 for (
int o = 0, j = 0; j <=
orders[1]; j++)
156 for (
int i = 0; i <=
orders[0]; i++, o++)
176 sum = dsum[0] = dsum[1] = 0.0;
177 for (
int o = 0, j = 0; j <=
orders[1]; j++)
180 for (
int i = 0; i <=
orders[0]; i++, o++)
193 for (
int o = 0; o <
dof; o++)
195 dshape(o,0) = dshape(o,0)*sum -
u(o)*dsum[0];
196 dshape(o,1) = dshape(o,1)*sum -
u(o)*dsum[1];
203 real_t sum, dsum[2], d2sum[3];
214 sum = dsum[0] = dsum[1] = 0.0;
215 d2sum[0] = d2sum[1] = d2sum[2] = 0.0;
216 for (
int o = 0, j = 0; j <=
orders[1]; j++)
219 for (
int i = 0; i <=
orders[0]; i++, o++)
224 dsum[0] += (
du(o,0) = dsx*sy*
weights(o) );
225 dsum[1] += (
du(o,1) = sx*dsy*
weights(o) );
227 d2sum[0] += ( hessian(o,0) = d2sx*sy*
weights(o) );
228 d2sum[1] += ( hessian(o,1) = dsx*dsy*
weights(o) );
229 d2sum[2] += ( hessian(o,2) = sx*d2sy*
weights(o) );
241 for (
int o = 0; o <
dof; o++)
243 hessian(o,0) = hessian(o,0)*sum
244 - 2*
du(o,0)*sum*dsum[0]
245 +
u[o]*sum*(2*dsum[0]*dsum[0] - d2sum[0]);
247 hessian(o,1) = hessian(o,1)*sum
248 -
du(o,0)*sum*dsum[1]
249 -
du(o,1)*sum*dsum[0]
250 +
u[o]*sum*(2*dsum[0]*dsum[1] - d2sum[1]);
252 hessian(o,2) = hessian(o,2)*sum
253 - 2*
du(o,1)*sum*dsum[1]
254 +
u[o]*sum*(2*dsum[1]*dsum[1] - d2sum[2]);
263 for (
int o = 0, j = 0; j <=
orders[1]; j++)
272 for (
int i = 0; i <=
orders[0]; i++, o++)
275 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
279 dofs(o) = coeff.
Eval(Trans, ip);
291 for (
int o = 0, j = 0; j <=
orders[1]; j++)
300 for (
int i = 0; i <=
orders[0]; i++, o++)
303 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
307 vc.
Eval(x, Trans, ip);
308 for (
int v = 0; v < x.
Size(); v++)
310 dofs(
dof*v+o) = x(v);
348 for (
int o = 0, k = 0; k <=
orders[2]; k++)
351 for (
int j = 0; j <=
orders[1]; j++)
354 for (
int i = 0; i <=
orders[0]; i++, o++)
377 sum = dsum[0] = dsum[1] = dsum[2] = 0.0;
378 for (
int o = 0, k = 0; k <=
orders[2]; k++)
381 for (
int j = 0; j <=
orders[1]; j++)
386 for (
int i = 0; i <=
orders[0]; i++, o++)
402 for (
int o = 0; o <
dof; o++)
404 dshape(o,0) = dshape(o,0)*sum -
u(o)*dsum[0];
405 dshape(o,1) = dshape(o,1)*sum -
u(o)*dsum[1];
406 dshape(o,2) = dshape(o,2)*sum -
u(o)*dsum[2];
413 real_t sum, dsum[3], d2sum[6];
427 sum = dsum[0] = dsum[1] = dsum[2] = 0.0;
428 d2sum[0] = d2sum[1] = d2sum[2] = d2sum[3] = d2sum[4] = d2sum[5] = 0.0;
430 for (
int o = 0, k = 0; k <=
orders[2]; k++)
433 for (
int j = 0; j <=
orders[1]; j++)
436 for (
int i = 0; i <=
orders[0]; i++, o++)
439 sum += (
u(o) = sx*sy*sz*
weights(o) );
441 dsum[0] += (
du(o,0) = dsx*sy*sz*
weights(o) );
442 dsum[1] += (
du(o,1) = sx*dsy*sz*
weights(o) );
443 dsum[2] += (
du(o,2) = sx*sy*dsz*
weights(o) );
445 d2sum[0] += ( hessian(o,0) = d2sx*sy*sz*
weights(o) );
446 d2sum[1] += ( hessian(o,1) = dsx*dsy*sz*
weights(o) );
447 d2sum[2] += ( hessian(o,2) = dsx*sy*dsz*
weights(o) );
448 d2sum[3] += ( hessian(o,3) = sx*d2sy*sz*
weights(o) );
449 d2sum[4] += ( hessian(o,4) = sx*dsy*dsz*
weights(o) );
450 d2sum[5] += ( hessian(o,5) = sx*sy*d2sz*
weights(o) );
469 for (
int o = 0; o <
dof; o++)
471 hessian(o,0) = hessian(o,0)*sum
472 - 2*
du(o,0)*sum*dsum[0]
473 +
u[o]*sum*(2*dsum[0]*dsum[0] - d2sum[0]);
475 hessian(o,1) = hessian(o,1)*sum
476 -
du(o,0)*sum*dsum[1]
477 -
du(o,1)*sum*dsum[0]
478 +
u[o]*sum*(2*dsum[0]*dsum[1] - d2sum[1]);
480 hessian(o,2) = hessian(o,2)*sum
481 -
du(o,0)*sum*dsum[2]
482 -
du(o,2)*sum*dsum[0]
483 +
u[o]*sum*(2*dsum[0]*dsum[2] - d2sum[2]);
485 hessian(o,3) = hessian(o,3)*sum
486 -
du(o,1)*sum*dsum[2]
487 -
du(o,2)*sum*dsum[1]
488 +
u[o]*sum*(2*dsum[1]*dsum[2] - d2sum[3]);
490 hessian(o,4) = hessian(o,4)*sum
491 - 2*
du(o,2)*sum*dsum[2]
492 +
u[o]*sum*(2*dsum[2]*dsum[2] - d2sum[4]);
494 hessian(o,5) = hessian(o,5)*sum
495 - 2*
du(o,1)*sum*dsum[1]
496 +
u[o]*sum*(2*dsum[1]*dsum[1] - d2sum[5]);
506 for (
int o = 0, k = 0; k <=
orders[2]; k++)
515 for (
int j = 0; j <=
orders[1]; j++)
524 for (
int i = 0; i <=
orders[0]; i++, o++)
527 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
531 dofs(o) = coeff.
Eval(Trans, ip);
545 for (
int o = 0, k = 0; k <=
orders[2]; k++)
554 for (
int j = 0; j <=
orders[1]; j++)
563 for (
int i = 0; i <=
orders[0]; i++, o++)
566 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
570 vc.
Eval(x, Trans, ip);
571 for (
int v = 0; v < x.
Size(); v++)
573 dofs(
dof*v+o) = x(v);
585 if (
kv1[0]) {
delete kv1[0]; }
586 if (
kv1[1]) {
delete kv1[1]; }
588 kv1[0] =
kv[0]->DegreeElevate(1);
589 kv1[1] =
kv[1]->DegreeElevate(1);
627 for (
int j = 0; j <=
orders[1]; j++)
630 for (
int i = 0; i <=
orders[0]+1; i++, o++)
637 for (
int j = 0; j <=
orders[1]+1; j++)
640 for (
int i = 0; i <=
orders[0]; i++, o++)
654 "NURBS_HDiv2DFiniteElement cannot be embedded in "
655 "3 dimensional spaces");
656 for (
int i=0; i<
dof; i++)
660 shape(i, 0) = sx * J(0, 0) + sy * J(0, 1);
661 shape(i, 1) = sx * J(1, 0) + sy * J(1, 1);
663 shape *= (1.0 / Trans.
Weight());
676 for (
int j = 0; j <=
orders[1]; j++)
679 for (
int i = 0; i <=
orders[0]+1; i++, o++)
685 for (
int j = 0; j <=
orders[1]+1; j++)
688 for (
int i = 0; i <=
orders[0]; i++, o++)
699 MFEM_ASSERT(dofs.
Size() ==
dof,
"");
700 MFEM_ASSERT(vc.
GetVDim() == 2,
"");
705 for (
int j = 0; j <=
orders[1]; j++)
714 for (
int i = 0; i <=
orders[0]+1; i++, o++)
717 if (!
kv1[0]->inSpan(kx,
ijk[0]+
orders[0]+1)) {
continue; }
721 vc.
Eval(x, Trans, ip);
728 for (
int j = 0; j <=
orders[1]+1; j++)
737 for (
int i = 0; i <=
orders[0]; i++, o++)
740 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
744 vc.
Eval(x, Trans, ip);
754 if (
kv1[0]) {
delete kv1[0]; }
755 if (
kv1[1]) {
delete kv1[1]; }
765 if (
kv1[0]) {
delete kv1[0]; }
766 if (
kv1[1]) {
delete kv1[1]; }
767 if (
kv1[2]) {
delete kv1[2]; }
769 kv1[0] =
kv[0]->DegreeElevate(1);
770 kv1[1] =
kv[1]->DegreeElevate(1);
771 kv1[2] =
kv[2]->DegreeElevate(1);
819 for (
int k = 0; k <=
orders[2]; k++)
822 for (
int j = 0; j <=
orders[1]; j++)
825 for (
int i = 0; i <=
orders[0]+1; i++, o++)
832 for (
int k = 0; k <=
orders[2]; k++)
835 for (
int j = 0; j <=
orders[1]+1; j++)
838 for (
int i = 0; i <=
orders[0]; i++, o++)
840 shape(o,1) =
shape_x(i)*sy1_sz;
845 for (
int k = 0; k <=
orders[2]+1; k++)
848 for (
int j = 0; j <=
orders[1]; j++)
851 for (
int i = 0; i <=
orders[0]; i++, o++)
853 shape(o,2) =
shape_x(i)*sy_sz1;
865 "RT_R2D_FiniteElement cannot be embedded in "
866 "3 dimensional spaces");
867 for (
int i=0; i<
dof; i++)
872 shape(i, 0) = sx * J(0, 0) + sy * J(0, 1) + sz * J(0, 2);
873 shape(i, 1) = sx * J(1, 0) + sy * J(1, 1) + sz * J(1, 2);
874 shape(i, 2) = sx * J(2, 0) + sy * J(2, 1) + sz * J(2, 2);
876 shape *= (1.0 / Trans.
Weight());
891 for (
int k = 0; k <=
orders[2]; k++)
894 for (
int j = 0; j <=
orders[1]; j++)
897 for (
int i = 0; i <=
orders[0]+1; i++, o++)
904 for (
int k = 0; k <=
orders[2]; k++)
907 for (
int j = 0; j <=
orders[1]+1; j++)
910 for (
int i = 0; i <=
orders[0]; i++, o++)
912 divshape(o) =
shape_x(i)*dy1_sz;
917 for (
int k = 0; k <=
orders[2]+1; k++)
920 for (
int j = 0; j <=
orders[1]; j++)
923 for (
int i = 0; i <=
orders[0]; i++, o++)
925 divshape(o) =
shape_x(i)*sy_dz1;
936 MFEM_ASSERT(dofs.
Size() ==
dof,
"");
937 MFEM_ASSERT(vc.
GetVDim() == 3,
"");
943 for (
int k = 0; k <=
orders[2]; k++)
952 for (
int j = 0; j <=
orders[1]; j++)
961 for (
int i = 0; i <=
orders[0]+1; i++, o++)
964 if (!
kv1[0]->inSpan(kx,
ijk[0]+
orders[0]+1)) {
continue; }
968 vc.
Eval(x, Trans, ip);
976 for (
int k = 0; k <=
orders[2]; k++)
985 for (
int j = 0; j <=
orders[1]+1; j++)
994 for (
int i = 0; i <=
orders[0]; i++, o++)
997 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
1001 vc.
Eval(x, Trans, ip);
1009 for (
int k = 0; k <=
orders[2]+1; k++)
1018 for (
int j = 0; j <=
orders[1]; j++)
1027 for (
int i = 0; i <=
orders[0]; i++, o++)
1030 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
1034 vc.
Eval(x, Trans, ip);
1047 if (
kv1[0]) {
delete kv1[0]; }
1048 if (
kv1[1]) {
delete kv1[1]; }
1049 if (
kv1[2]) {
delete kv1[2]; }
1057 if (
kv1[0]) {
delete kv1[0]; }
1058 if (
kv1[1]) {
delete kv1[1]; }
1060 kv1[0] =
kv[0]->DegreeElevate(1);
1061 kv1[1] =
kv[1]->DegreeElevate(1);
1099 for (
int j = 0; j <=
orders[1]+1; j++)
1102 for (
int i = 0; i <=
orders[0]; i++, o++)
1109 for (
int j = 0; j <=
orders[1]; j++)
1112 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1126 "NURBS_HCurl2DFiniteElement cannot be embedded in "
1127 "3 dimensional spaces");
1128 for (
int i=0; i<
dof; i++)
1132 shape(i, 0) = sx * JI(0, 0) + sy * JI(1, 0);
1133 shape(i, 1) = sx * JI(0, 1) + sy * JI(1, 1);
1147 for (
int j = 0; j <=
orders[1]+1; j++)
1150 for (
int i = 0; i <=
orders[0]; i++, o++)
1152 curl_shape(o,0) = -
shape_x(i)*dsy1;
1156 for (
int j = 0; j <=
orders[1]; j++)
1159 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1170 MFEM_ASSERT(dofs.
Size() ==
dof,
"");
1171 MFEM_ASSERT(vc.
GetVDim() == 2,
"");
1175 for (o = 0, j = 0; j <=
orders[1]+1; j++)
1184 for (i = 0; i <=
orders[0]; i++, o++)
1187 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
1191 vc.
Eval(x, Trans, ip);
1198 for (j = 0; j <=
orders[1]; j++)
1207 for (i = 0; i <=
orders[0]+1; i++, o++)
1210 if (!
kv1[0]->inSpan(kx,
ijk[0]+
orders[0]+1)) {
continue; }
1214 vc.
Eval(x, Trans, ip);
1224 if (
kv1[0]) {
delete kv1[0]; }
1225 if (
kv1[1]) {
delete kv1[1]; }
1234 if (
kv1[0]) {
delete kv1[0]; }
1235 if (
kv1[1]) {
delete kv1[1]; }
1236 if (
kv1[2]) {
delete kv1[2]; }
1238 kv1[0] =
kv[0]->DegreeElevate(1);
1239 kv1[1] =
kv[1]->DegreeElevate(1);
1240 kv1[2] =
kv[2]->DegreeElevate(1);
1288 for (
int k = 0; k <=
orders[2]+1; k++)
1291 for (
int j = 0; j <=
orders[1]+1; j++)
1294 for (
int i = 0; i <=
orders[0]; i++, o++)
1296 shape(o,0) =
shape_x(i)*sy1_sz1;
1301 for (
int k = 0; k <=
orders[2]+1; k++)
1304 for (
int j = 0; j <=
orders[1]; j++)
1307 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1314 for (
int k = 0; k <=
orders[2]; k++)
1317 for (
int j = 0; j <=
orders[1]+1; j++)
1320 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1334 "NURBS_HCurl3DFiniteElement must be in a"
1335 "3 dimensional spaces");
1336 for (
int i=0; i<
dof; i++)
1341 shape(i, 0) = sx * JI(0, 0) + sy * JI(1, 0) + sz * JI(2, 0);
1342 shape(i, 1) = sx * JI(0, 1) + sy * JI(1, 1) + sz * JI(2, 1);
1343 shape(i, 2) = sx * JI(0, 2) + sy * JI(1, 2) + sz * JI(2, 2);
1363 for (
int k = 0; k <=
orders[2]+1; k++)
1366 for (
int j = 0; j <=
orders[1]+1; j++)
1370 for (
int i = 0; i <=
orders[0]; i++, o++)
1372 curl_shape(o,0) = 0.0;
1373 curl_shape(o,1) =
shape_x(i)*sy1_dsz1;
1374 curl_shape(o,2) = -
shape_x(i)*dsy1_sz1;
1379 for (
int k = 0; k <=
orders[2]+1; k++)
1382 for (
int j = 0; j <=
orders[1]; j++)
1386 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1388 curl_shape(o,0) = -
shape1_x(i)*sy_dsz1;
1389 curl_shape(o,1) = 0.0;
1395 for (
int k = 0; k <=
orders[2]; k++)
1398 for (
int j = 0; j <=
orders[1]+1; j++)
1402 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1404 curl_shape(o,0) =
shape1_x(i)*dsy1_sz;
1406 curl_shape(o,2) = 0.0;
1417 MFEM_ASSERT(dofs.
Size() ==
dof,
"");
1418 MFEM_ASSERT(vc.
GetVDim() == 3,
"");
1423 for (
int k = 0; k <=
orders[2]+1; k++)
1432 for (
int j = 0; j <=
orders[1]+1; j++)
1441 for (
int i = 0; i <=
orders[0]; i++, o++)
1444 if (!
kv[0]->inSpan(kx,
ijk[0]+
orders[0])) {
continue; }
1448 vc.
Eval(x, Trans, ip);
1456 for (
int k = 0; k <=
orders[2]+1; k++)
1465 for (
int j = 0; j <=
orders[1]; j++)
1474 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1477 if (!
kv1[0]->inSpan(kx,
ijk[0]+
orders[0]+1)) {
continue; }
1481 vc.
Eval(x, Trans, ip);
1489 for (
int k = 0; k <=
orders[2]; k++)
1498 for (
int j = 0; j <=
orders[1]+1; j++)
1507 for (
int i = 0; i <=
orders[0]+1; i++, o++)
1510 if (!
kv1[0]->inSpan(kx,
ijk[0]+
orders[0]+1)) {
continue; }
1514 vc.
Eval(x, Trans, ip);
1527 if (
kv1[0]) {
delete kv1[0]; }
1528 if (
kv1[1]) {
delete kv1[1]; }
1529 if (
kv1[2]) {
delete kv1[2]; }
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
virtual real_t Eval(ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the coefficient in the element described by T at the point ip.
Data type dense matrix using column-major storage.
void Mult(const real_t *x, real_t *y) const
Matrix vector multiplication.
void MultTranspose(const real_t *x, real_t *y) const
Multiply a vector with the transpose matrix.
real_t * Data() const
Returns the matrix data array. Warning: this method casts away constness.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
int dof
Number of degrees of freedom.
int orders[Geometry::MaxDim]
Anisotropic orders.
int order
Order/degree of the shape functions.
Class for integration point with weight.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void SetOrder() const override
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &hessian) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const override
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const override
void SetOrder() const override
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &hessian) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void SetOrder() const override
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &hessian) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const override
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Array< const KnotVector * > kv
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
Array< const KnotVector * > kv1
~NURBS_HCurl2DFiniteElement()
void Project(VectorCoefficient &vcoeff, ElementTransformation &Trans, Vector &dofs) const override
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void SetOrder() const override
~NURBS_HCurl3DFiniteElement()
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void Project(VectorCoefficient &vcoeff, ElementTransformation &Trans, Vector &dofs) const override
void SetOrder() const override
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
Array< const KnotVector * > kv1
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
~NURBS_HDiv2DFiniteElement()
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void SetOrder() const override
Array< const KnotVector * > kv1
void Project(VectorCoefficient &vcoeff, ElementTransformation &Trans, Vector &dofs) const override
~NURBS_HDiv3DFiniteElement()
void SetOrder() const override
Array< const KnotVector * > kv1
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void Project(VectorCoefficient &vcoeff, ElementTransformation &Trans, Vector &dofs) const override
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows().
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols().
Base class for vector Coefficients that optionally depend on time and space.
int GetVDim()
Returns dimension of the vector.
virtual void Eval(Vector &V, ElementTransformation &T, const IntegrationPoint &ip)=0
Evaluate the vector coefficient in the element described by T at the point ip, storing the result in ...
int Size() const
Returns the size of the vector.
void SetSize(int s)
Resize the vector to size s.
void add(const Vector &v1, const Vector &v2, Vector &v)