| 1553 | |
| 1554 | |
| 1555 | SymDevMatrixDifferentialOperator :: |
| 1556 | SymDevMatrixDifferentialOperator (shared_ptr<DifferentialOperator> adiffop, |
| 1557 | int avdim) |
| 1558 | : DifferentialOperator(sqr(avdim)*adiffop->Dim(), adiffop->BlockDim(), |
| 1559 | adiffop->VB(), adiffop->DiffOrder()), |
| 1560 | diffop(adiffop), vdim(avdim) |
| 1561 | { |
| 1562 | if (adiffop->Dimensions().Size() == 0) |
| 1563 | { |
| 1564 | SetDimensions ( { avdim, avdim } ); |
| 1565 | Matrix<> vsembedding(sqr(vdim), vdim*(vdim+1)/2-1); |
| 1566 | vsembedding = 0.0; |
| 1567 | for (int i = 0, ii = 0; i < vdim; i++) |
| 1568 | for (int j = 0; j <= i; j++, ii++) |
| 1569 | if (ii < vsembedding.Width()) |
| 1570 | { |
| 1571 | vsembedding(i*vdim+j, ii) = 1; |
| 1572 | vsembedding(j*vdim+i, ii) = 1; |
| 1573 | } |
| 1574 | for (int i = 0; i < vdim-1; i++) |
| 1575 | vsembedding.Row(vdim*vdim-1) -= vsembedding.Row(i*(vdim+1)); |
| 1576 | // cout << "SymDev vsembedding = " << vsembedding << endl; |
| 1577 | SetVectorSpaceEmbedding(vsembedding); |
| 1578 | } |
| 1579 | else |
| 1580 | throw Exception("no matrix-valued of vector-valued possible"); |
| 1581 | } |
| 1582 | |
| 1583 | |
| 1584 | SymDevMatrixDifferentialOperator :: ~SymDevMatrixDifferentialOperator () { ; } |
nothing calls this directly
no test coverage detected