MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / SymDevMatrixDifferentialOperator

Method SymDevMatrixDifferentialOperator

fem/diffop.cpp:1555–1581  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 () { ; }

Callers

nothing calls this directly

Calls 9

SetVectorSpaceEmbeddingFunction · 0.85
DiffOrderMethod · 0.80
DimensionsMethod · 0.80
SetDimensionsFunction · 0.70
DimMethod · 0.45
VBMethod · 0.45
SizeMethod · 0.45
WidthMethod · 0.45
RowMethod · 0.45

Tested by

no test coverage detected