Class xlifepp::SuTermMatrix#

class SuTermMatrix : public xlifepp::Term#

Inheritence diagram for xlifepp::SuTermMatrix:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::SuTermMatrix" tooltip="xlifepp::SuTermMatrix" fillcolor="#BFBFBF"] "2" [label="xlifepp::Term" tooltip="xlifepp::Term"] "1" -> "2" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::SuTermMatrix:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "90" [label="xlifepp::ApproximateMatrix< complex_t >" tooltip="xlifepp::ApproximateMatrix< complex_t >"] "75" [label="xlifepp::ApproximateMatrix< real_t >" tooltip="xlifepp::ApproximateMatrix< real_t >"] "96" [label="xlifepp::ApproximateMatrix< xlifepp::Matrix< complex_t > >" tooltip="xlifepp::ApproximateMatrix< xlifepp::Matrix< complex_t > >"] "93" [label="xlifepp::ApproximateMatrix< xlifepp::Matrix< real_t > >" tooltip="xlifepp::ApproximateMatrix< xlifepp::Matrix< real_t > >"] "84" [label="xlifepp::ClusterNode< FeDof >" tooltip="xlifepp::ClusterNode< FeDof >"] "78" [label="xlifepp::ClusterNode< I >" tooltip="xlifepp::ClusterNode< I >"] "69" [label="xlifepp::ClusterNode< xlifepp::FeDof >" tooltip="xlifepp::ClusterNode< xlifepp::FeDof >"] "87" [label="xlifepp::ClusterTree< I >" tooltip="xlifepp::ClusterTree< I >"] "81" [label="xlifepp::ClusterTree< xlifepp::FeDof >" tooltip="xlifepp::ClusterTree< xlifepp::FeDof >"] "36" [label="xlifepp::Collection< string_t >" tooltip="xlifepp::Collection< string_t >"] "100" [label="xlifepp::HMatrix< complex_t, I >" tooltip="xlifepp::HMatrix< complex_t, I >"] "88" [label="xlifepp::HMatrix< complex_t, xlifepp::FeDof >" tooltip="xlifepp::HMatrix< complex_t, xlifepp::FeDof >"] "98" [label="xlifepp::HMatrix< real_t, I >" tooltip="xlifepp::HMatrix< real_t, I >"] "67" [label="xlifepp::HMatrix< real_t, xlifepp::FeDof >" tooltip="xlifepp::HMatrix< real_t, xlifepp::FeDof >"] "104" [label="xlifepp::HMatrix< xlifepp::Matrix< complex_t >, I >" tooltip="xlifepp::HMatrix< xlifepp::Matrix< complex_t >, I >"] "94" [label="xlifepp::HMatrix< xlifepp::Matrix< complex_t >, xlifepp::FeDof >" tooltip="xlifepp::HMatrix< xlifepp::Matrix< complex_t >, xlifepp::FeDof >"] "102" [label="xlifepp::HMatrix< xlifepp::Matrix< real_t >, I >" tooltip="xlifepp::HMatrix< xlifepp::Matrix< real_t >, I >"] "91" [label="xlifepp::HMatrix< xlifepp::Matrix< real_t >, xlifepp::FeDof >" tooltip="xlifepp::HMatrix< xlifepp::Matrix< real_t >, xlifepp::FeDof >"] "66" [label="xlifepp::HMatrixEntry< xlifepp::FeDof >" tooltip="xlifepp::HMatrixEntry< xlifepp::FeDof >"] "101" [label="xlifepp::HMatrixNode< complex_t, I >" tooltip="xlifepp::HMatrixNode< complex_t, I >"] "89" [label="xlifepp::HMatrixNode< complex_t, xlifepp::FeDof >" tooltip="xlifepp::HMatrixNode< complex_t, xlifepp::FeDof >"] "99" [label="xlifepp::HMatrixNode< real_t, I >" tooltip="xlifepp::HMatrixNode< real_t, I >"] "68" [label="xlifepp::HMatrixNode< real_t, xlifepp::FeDof >" tooltip="xlifepp::HMatrixNode< real_t, xlifepp::FeDof >"] "105" [label="xlifepp::HMatrixNode< xlifepp::Matrix< complex_t >, I >" tooltip="xlifepp::HMatrixNode< xlifepp::Matrix< complex_t >, I >"] "95" [label="xlifepp::HMatrixNode< xlifepp::Matrix< complex_t >, xlifepp::FeDof >" tooltip="xlifepp::HMatrixNode< xlifepp::Matrix< complex_t >, xlifepp::FeDof >"] "103" [label="xlifepp::HMatrixNode< xlifepp::Matrix< real_t >, I >" tooltip="xlifepp::HMatrixNode< xlifepp::Matrix< real_t >, I >"] "92" [label="xlifepp::HMatrixNode< xlifepp::Matrix< real_t >, xlifepp::FeDof >" tooltip="xlifepp::HMatrixNode< xlifepp::Matrix< real_t >, xlifepp::FeDof >"] "60" [label="xlifepp::LargeMatrix< complex_t >" tooltip="xlifepp::LargeMatrix< complex_t >"] "56" [label="xlifepp::LargeMatrix< real_t >" tooltip="xlifepp::LargeMatrix< real_t >"] "63" [label="xlifepp::LargeMatrix< xlifepp::Matrix< complex_t > >" tooltip="xlifepp::LargeMatrix< xlifepp::Matrix< complex_t > >"] "61" [label="xlifepp::LargeMatrix< xlifepp::Matrix< real_t > >" tooltip="xlifepp::LargeMatrix< xlifepp::Matrix< real_t > >"] "29" [label="xlifepp::Matrix< real_t >" tooltip="xlifepp::Matrix< real_t >"] "33" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "44" [label="xlifepp::Vector< xlifepp::Vector< real_t > >" tooltip="xlifepp::Vector< xlifepp::Vector< real_t > >"] "46" [label="std::list< std::pair< number_t, real_t > >" tooltip="std::list< std::pair< number_t, real_t > >"] "85" [label="std::list< xlifepp::ClusterNode< FeDof > * >" tooltip="std::list< xlifepp::ClusterNode< FeDof > * >"] "80" [label="std::list< xlifepp::ClusterNode< I > * >" tooltip="std::list< xlifepp::ClusterNode< I > * >"] "72" [label="std::list< xlifepp::ClusterNode< T > * >" tooltip="std::list< xlifepp::ClusterNode< T > * >"] "74" [label="std::list< xlifepp::ClusterNode< xlifepp::FeDof > * >" tooltip="std::list< xlifepp::ClusterNode< xlifepp::FeDof > * >"] "25" [label="std::map< number_t, std::vector< number_t > >" tooltip="std::map< number_t, std::vector< number_t > >"] "24" [label="std::map< number_t, xlifepp::Geometry * >" tooltip="std::map< number_t, xlifepp::Geometry * >"] "8" [label="std::map< string_t, number_t >" tooltip="std::map< string_t, number_t >"] "47" [label="std::list< T >" tooltip="std::list< T >"] "9" [label="std::map< K, T >" tooltip="std::map< K, T >"] "7" [label="std::vector< T >" tooltip="std::vector< T >"] "39" [label="std::vector< T >" tooltip="std::vector< T >"] "83" [label="std::vector< FeDof >" tooltip="std::vector< FeDof >"] "79" [label="std::vector< I >" tooltip="std::vector< I >"] "32" [label="std::vector< K >" tooltip="std::vector< K >"] "21" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"] "12" [label="std::vector< bfPair >" tooltip="std::vector< bfPair >"] "52" [label="std::vector< const xlifepp::GeomDomain * >" tooltip="std::vector< const xlifepp::GeomDomain * >"] "35" [label="std::vector< const xlifepp::Transformation * >" tooltip="std::vector< const xlifepp::Transformation * >"] "40" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "30" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "51" [label="std::vector< std::vector< GeoNumPair > >" tooltip="std::vector< std::vector< GeoNumPair > >"] "26" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"] "37" [label="std::vector< string_t >" tooltip="std::vector< string_t >"] "65" [label="std::vector< xlifepp::DofComponent >" tooltip="std::vector< xlifepp::DofComponent >"] "73" [label="std::vector< xlifepp::Element * >" tooltip="std::vector< xlifepp::Element * >"] "70" [label="std::vector< xlifepp::FeDof >" tooltip="std::vector< xlifepp::FeDof >"] "50" [label="std::vector< xlifepp::GeomDomain * >" tooltip="std::vector< xlifepp::GeomDomain * >"] "49" [label="std::vector< xlifepp::GeomElement * >" tooltip="std::vector< xlifepp::GeomElement * >"] "64" [label="std::vector< xlifepp::Matrix< complex_t > >" tooltip="std::vector< xlifepp::Matrix< complex_t > >"] "62" [label="std::vector< xlifepp::Matrix< real_t > >" tooltip="std::vector< xlifepp::Matrix< real_t > >"] "58" [label="std::vector< xlifepp::MatrixStorage * >" tooltip="std::vector< xlifepp::MatrixStorage * >"] "6" [label="std::vector< xlifepp::Parameter * >" tooltip="std::vector< xlifepp::Parameter * >"] "23" [label="std::vector< xlifepp::Point >" tooltip="std::vector< xlifepp::Point >"] "53" [label="std::vector< xlifepp::Space * >" tooltip="std::vector< xlifepp::Space * >"] "10" [label="std::vector< xlifepp::Term * >" tooltip="std::vector< xlifepp::Term * >"] "41" [label="std::vector< xlifepp::Transformation * >" tooltip="std::vector< xlifepp::Transformation * >"] "54" [label="std::vector< xlifepp::Unknown * >" tooltip="std::vector< xlifepp::Unknown * >"] "45" [label="std::vector< xlifepp::Vector< real_t > >" tooltip="std::vector< xlifepp::Vector< real_t > >"] "76" [label="xlifepp::ApproximateMatrix< T >" tooltip="xlifepp::ApproximateMatrix< T >"] "20" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"] "71" [label="xlifepp::ClusterNode< T >" tooltip="xlifepp::ClusterNode< T >"] "82" [label="xlifepp::ClusterTree< T >" tooltip="xlifepp::ClusterTree< T >"] "38" [label="xlifepp::Collection< T >" tooltip="xlifepp::Collection< T >"] "3" [label="xlifepp::ComputingInfo" tooltip="xlifepp::ComputingInfo"] "17" [label="xlifepp::DomainInfo" tooltip="xlifepp::DomainInfo"] "27" [label="xlifepp::ExtrusionData" tooltip="xlifepp::ExtrusionData"] "48" [label="xlifepp::GeoNode" tooltip="xlifepp::GeoNode"] "16" [label="xlifepp::GeomDomain" tooltip="xlifepp::GeomDomain"] "19" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"] "86" [label="xlifepp::HMatrix< T, I >" tooltip="xlifepp::HMatrix< T, I >"] "97" [label="xlifepp::HMatrixEntry< I >" tooltip="xlifepp::HMatrixEntry< I >"] "77" [label="xlifepp::HMatrixNode< T, I >" tooltip="xlifepp::HMatrixNode< T, I >"] "59" [label="xlifepp::LargeMatrix< T >" tooltip="xlifepp::LargeMatrix< T >"] "31" [label="xlifepp::Matrix< K >" tooltip="xlifepp::Matrix< K >"] "55" [label="xlifepp::MatrixEntry" tooltip="xlifepp::MatrixEntry"] "57" [label="xlifepp::MatrixStorage" tooltip="xlifepp::MatrixStorage"] "18" [label="xlifepp::Mesh" tooltip="xlifepp::Mesh"] "22" [label="xlifepp::MinimalBox" tooltip="xlifepp::MinimalBox"] "5" [label="xlifepp::Parameters" tooltip="xlifepp::Parameters"] "43" [label="xlifepp::Parametrization" tooltip="xlifepp::Parametrization"] "42" [label="xlifepp::Point" tooltip="xlifepp::Point"] "4" [label="xlifepp::ReductionMethod" tooltip="xlifepp::ReductionMethod"] "14" [label="xlifepp::Space" tooltip="xlifepp::Space"] "15" [label="xlifepp::SpaceInfo" tooltip="xlifepp::SpaceInfo"] "11" [label="xlifepp::SuBilinearForm" tooltip="xlifepp::SuBilinearForm"] "1" [label="xlifepp::SuTermMatrix" tooltip="xlifepp::SuTermMatrix" fillcolor="#BFBFBF"] "2" [label="xlifepp::Term" tooltip="xlifepp::Term"] "28" [label="xlifepp::Transformation" tooltip="xlifepp::Transformation"] "13" [label="xlifepp::Unknown" tooltip="xlifepp::Unknown"] "34" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "90" -> "76" [dir=forward tooltip="template-instance"] "75" -> "76" [dir=forward tooltip="template-instance"] "96" -> "76" [dir=forward tooltip="template-instance"] "93" -> "76" [dir=forward tooltip="template-instance"] "84" -> "83" [dir=forward tooltip="usage"] "84" -> "71" [dir=forward tooltip="usage"] "84" -> "40" [dir=forward tooltip="usage"] "84" -> "20" [dir=forward tooltip="usage"] "84" -> "85" [dir=forward tooltip="usage"] "84" -> "73" [dir=forward tooltip="usage"] "84" -> "71" [dir=forward tooltip="template-instance"] "78" -> "79" [dir=forward tooltip="usage"] "78" -> "71" [dir=forward tooltip="usage"] "78" -> "40" [dir=forward tooltip="usage"] "78" -> "20" [dir=forward tooltip="usage"] "78" -> "80" [dir=forward tooltip="usage"] "78" -> "73" [dir=forward tooltip="usage"] "78" -> "71" [dir=forward tooltip="template-instance"] "69" -> "70" [dir=forward tooltip="usage"] "69" -> "71" [dir=forward tooltip="usage"] "69" -> "40" [dir=forward tooltip="usage"] "69" -> "20" [dir=forward tooltip="usage"] "69" -> "74" [dir=forward tooltip="usage"] "69" -> "73" [dir=forward tooltip="usage"] "69" -> "71" [dir=forward tooltip="template-instance"] "87" -> "79" [dir=forward tooltip="usage"] "87" -> "78" [dir=forward tooltip="usage"] "87" -> "82" [dir=forward tooltip="template-instance"] "81" -> "70" [dir=forward tooltip="usage"] "81" -> "69" [dir=forward tooltip="usage"] "81" -> "82" [dir=forward tooltip="template-instance"] "36" -> "37" [dir=forward tooltip="public-inheritance"] "36" -> "38" [dir=forward tooltip="template-instance"] "100" -> "101" [dir=forward tooltip="usage"] "100" -> "87" [dir=forward tooltip="usage"] "100" -> "86" [dir=forward tooltip="template-instance"] "88" -> "89" [dir=forward tooltip="usage"] "88" -> "81" [dir=forward tooltip="usage"] "88" -> "86" [dir=forward tooltip="template-instance"] "98" -> "99" [dir=forward tooltip="usage"] "98" -> "87" [dir=forward tooltip="usage"] "98" -> "86" [dir=forward tooltip="template-instance"] "67" -> "68" [dir=forward tooltip="usage"] "67" -> "81" [dir=forward tooltip="usage"] "67" -> "86" [dir=forward tooltip="template-instance"] "104" -> "105" [dir=forward tooltip="usage"] "104" -> "87" [dir=forward tooltip="usage"] "104" -> "86" [dir=forward tooltip="template-instance"] "94" -> "95" [dir=forward tooltip="usage"] "94" -> "81" [dir=forward tooltip="usage"] "94" -> "86" [dir=forward tooltip="template-instance"] "102" -> "103" [dir=forward tooltip="usage"] "102" -> "87" [dir=forward tooltip="usage"] "102" -> "86" [dir=forward tooltip="template-instance"] "91" -> "92" [dir=forward tooltip="usage"] "91" -> "81" [dir=forward tooltip="usage"] "91" -> "86" [dir=forward tooltip="template-instance"] "66" -> "67" [dir=forward tooltip="usage"] "66" -> "88" [dir=forward tooltip="usage"] "66" -> "91" [dir=forward tooltip="usage"] "66" -> "94" [dir=forward tooltip="usage"] "66" -> "97" [dir=forward tooltip="template-instance"] "101" -> "101" [dir=forward tooltip="usage"] "101" -> "78" [dir=forward tooltip="usage"] "101" -> "60" [dir=forward tooltip="usage"] "101" -> "90" [dir=forward tooltip="usage"] "101" -> "77" [dir=forward tooltip="template-instance"] "89" -> "89" [dir=forward tooltip="usage"] "89" -> "69" [dir=forward tooltip="usage"] "89" -> "60" [dir=forward tooltip="usage"] "89" -> "90" [dir=forward tooltip="usage"] "89" -> "77" [dir=forward tooltip="template-instance"] "99" -> "99" [dir=forward tooltip="usage"] "99" -> "78" [dir=forward tooltip="usage"] "99" -> "56" [dir=forward tooltip="usage"] "99" -> "75" [dir=forward tooltip="usage"] "99" -> "77" [dir=forward tooltip="template-instance"] "68" -> "68" [dir=forward tooltip="usage"] "68" -> "69" [dir=forward tooltip="usage"] "68" -> "56" [dir=forward tooltip="usage"] "68" -> "75" [dir=forward tooltip="usage"] "68" -> "77" [dir=forward tooltip="template-instance"] "105" -> "105" [dir=forward tooltip="usage"] "105" -> "78" [dir=forward tooltip="usage"] "105" -> "63" [dir=forward tooltip="usage"] "105" -> "96" [dir=forward tooltip="usage"] "105" -> "77" [dir=forward tooltip="template-instance"] "95" -> "95" [dir=forward tooltip="usage"] "95" -> "69" [dir=forward tooltip="usage"] "95" -> "63" [dir=forward tooltip="usage"] "95" -> "96" [dir=forward tooltip="usage"] "95" -> "77" [dir=forward tooltip="template-instance"] "103" -> "103" [dir=forward tooltip="usage"] "103" -> "78" [dir=forward tooltip="usage"] "103" -> "61" [dir=forward tooltip="usage"] "103" -> "93" [dir=forward tooltip="usage"] "103" -> "77" [dir=forward tooltip="template-instance"] "92" -> "92" [dir=forward tooltip="usage"] "92" -> "69" [dir=forward tooltip="usage"] "92" -> "61" [dir=forward tooltip="usage"] "92" -> "93" [dir=forward tooltip="usage"] "92" -> "77" [dir=forward tooltip="template-instance"] "60" -> "40" [dir=forward tooltip="usage"] "60" -> "57" [dir=forward tooltip="usage"] "60" -> "59" [dir=forward tooltip="template-instance"] "56" -> "40" [dir=forward tooltip="usage"] "56" -> "30" [dir=forward tooltip="usage"] "56" -> "57" [dir=forward tooltip="usage"] "56" -> "59" [dir=forward tooltip="template-instance"] "63" -> "40" [dir=forward tooltip="usage"] "63" -> "64" [dir=forward tooltip="usage"] "63" -> "57" [dir=forward tooltip="usage"] "63" -> "59" [dir=forward tooltip="template-instance"] "61" -> "40" [dir=forward tooltip="usage"] "61" -> "62" [dir=forward tooltip="usage"] "61" -> "57" [dir=forward tooltip="usage"] "61" -> "59" [dir=forward tooltip="template-instance"] "29" -> "30" [dir=forward tooltip="public-inheritance"] "29" -> "31" [dir=forward tooltip="template-instance"] "33" -> "30" [dir=forward tooltip="public-inheritance"] "33" -> "34" [dir=forward tooltip="template-instance"] "44" -> "45" [dir=forward tooltip="public-inheritance"] "44" -> "34" [dir=forward tooltip="template-instance"] "46" -> "47" [dir=forward tooltip="template-instance"] "85" -> "47" [dir=forward tooltip="template-instance"] "80" -> "47" [dir=forward tooltip="template-instance"] "72" -> "47" [dir=forward tooltip="template-instance"] "74" -> "47" [dir=forward tooltip="template-instance"] "25" -> "9" [dir=forward tooltip="template-instance"] "24" -> "9" [dir=forward tooltip="template-instance"] "8" -> "9" [dir=forward tooltip="template-instance"] "83" -> "7" [dir=forward tooltip="template-instance"] "79" -> "7" [dir=forward tooltip="template-instance"] "32" -> "7" [dir=forward tooltip="template-instance"] "21" -> "7" [dir=forward tooltip="template-instance"] "12" -> "7" [dir=forward tooltip="template-instance"] "52" -> "7" [dir=forward tooltip="template-instance"] "35" -> "7" [dir=forward tooltip="template-instance"] "40" -> "7" [dir=forward tooltip="template-instance"] "30" -> "7" [dir=forward tooltip="template-instance"] "51" -> "7" [dir=forward tooltip="template-instance"] "26" -> "7" [dir=forward tooltip="template-instance"] "37" -> "7" [dir=forward tooltip="template-instance"] "65" -> "7" [dir=forward tooltip="template-instance"] "73" -> "7" [dir=forward tooltip="template-instance"] "70" -> "7" [dir=forward tooltip="template-instance"] "50" -> "7" [dir=forward tooltip="template-instance"] "49" -> "7" [dir=forward tooltip="template-instance"] "64" -> "7" [dir=forward tooltip="template-instance"] "62" -> "7" [dir=forward tooltip="template-instance"] "58" -> "7" [dir=forward tooltip="template-instance"] "6" -> "7" [dir=forward tooltip="template-instance"] "23" -> "7" [dir=forward tooltip="template-instance"] "53" -> "7" [dir=forward tooltip="template-instance"] "10" -> "7" [dir=forward tooltip="template-instance"] "41" -> "7" [dir=forward tooltip="template-instance"] "54" -> "7" [dir=forward tooltip="template-instance"] "45" -> "7" [dir=forward tooltip="template-instance"] "20" -> "21" [dir=forward tooltip="usage"] "71" -> "71" [dir=forward tooltip="usage"] "71" -> "40" [dir=forward tooltip="usage"] "71" -> "20" [dir=forward tooltip="usage"] "71" -> "72" [dir=forward tooltip="usage"] "71" -> "73" [dir=forward tooltip="usage"] "82" -> "83" [dir=forward tooltip="usage"] "82" -> "84" [dir=forward tooltip="usage"] "38" -> "39" [dir=forward tooltip="public-inheritance"] "3" -> "4" [dir=forward tooltip="usage"] "17" -> "18" [dir=forward tooltip="usage"] "27" -> "28" [dir=forward tooltip="usage"] "27" -> "36" [dir=forward tooltip="usage"] "27" -> "40" [dir=forward tooltip="usage"] "27" -> "30" [dir=forward tooltip="usage"] "27" -> "33" [dir=forward tooltip="usage"] "27" -> "41" [dir=forward tooltip="usage"] "27" -> "42" [dir=forward tooltip="usage"] "48" -> "48" [dir=forward tooltip="usage"] "48" -> "19" [dir=forward tooltip="usage"] "16" -> "17" [dir=forward tooltip="usage"] "16" -> "16" [dir=forward tooltip="usage"] "16" -> "19" [dir=forward tooltip="usage"] "16" -> "52" [dir=forward tooltip="usage"] "19" -> "20" [dir=forward tooltip="usage"] "19" -> "22" [dir=forward tooltip="usage"] "19" -> "24" [dir=forward tooltip="usage"] "19" -> "25" [dir=forward tooltip="usage"] "19" -> "26" [dir=forward tooltip="usage"] "19" -> "27" [dir=forward tooltip="usage"] "19" -> "43" [dir=forward tooltip="usage"] "19" -> "19" [dir=forward tooltip="usage"] "19" -> "48" [dir=forward tooltip="usage"] "86" -> "87" [dir=forward tooltip="usage"] "97" -> "98" [dir=forward tooltip="usage"] "97" -> "100" [dir=forward tooltip="usage"] "97" -> "102" [dir=forward tooltip="usage"] "97" -> "104" [dir=forward tooltip="usage"] "77" -> "78" [dir=forward tooltip="usage"] "59" -> "40" [dir=forward tooltip="usage"] "59" -> "57" [dir=forward tooltip="usage"] "31" -> "32" [dir=forward tooltip="public-inheritance"] "55" -> "56" [dir=forward tooltip="usage"] "55" -> "60" [dir=forward tooltip="usage"] "55" -> "61" [dir=forward tooltip="usage"] "55" -> "63" [dir=forward tooltip="usage"] "57" -> "58" [dir=forward tooltip="usage"] "18" -> "19" [dir=forward tooltip="usage"] "18" -> "23" [dir=forward tooltip="usage"] "18" -> "49" [dir=forward tooltip="usage"] "18" -> "50" [dir=forward tooltip="usage"] "18" -> "40" [dir=forward tooltip="usage"] "18" -> "51" [dir=forward tooltip="usage"] "18" -> "18" [dir=forward tooltip="usage"] "22" -> "23" [dir=forward tooltip="usage"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "8" [dir=forward tooltip="usage"] "43" -> "19" [dir=forward tooltip="usage"] "43" -> "33" [dir=forward tooltip="usage"] "43" -> "44" [dir=forward tooltip="usage"] "43" -> "18" [dir=forward tooltip="usage"] "43" -> "5" [dir=forward tooltip="usage"] "43" -> "46" [dir=forward tooltip="usage"] "42" -> "30" [dir=forward tooltip="public-inheritance"] "14" -> "14" [dir=forward tooltip="usage"] "14" -> "15" [dir=forward tooltip="usage"] "14" -> "53" [dir=forward tooltip="usage"] "15" -> "16" [dir=forward tooltip="usage"] "11" -> "12" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "1" -> "11" [dir=forward tooltip="usage"] "1" -> "13" [dir=forward tooltip="usage"] "1" -> "14" [dir=forward tooltip="usage"] "1" -> "53" [dir=forward tooltip="usage"] "1" -> "55" [dir=forward tooltip="usage"] "1" -> "65" [dir=forward tooltip="usage"] "1" -> "66" [dir=forward tooltip="usage"] "1" -> "81" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "2" -> "5" [dir=forward tooltip="usage"] "2" -> "10" [dir=forward tooltip="usage"] "28" -> "29" [dir=forward tooltip="usage"] "28" -> "33" [dir=forward tooltip="usage"] "28" -> "35" [dir=forward tooltip="usage"] "13" -> "14" [dir=forward tooltip="usage"] "13" -> "13" [dir=forward tooltip="usage"] "13" -> "54" [dir=forward tooltip="usage"] "34" -> "32" [dir=forward tooltip="public-inheritance"] }

handles numerical representation of single unknowns bilinear forms (SuBilinearForm).

Internal class

Public Functions

SuTermMatrix(const SuTermMatrix&, const string_t &na = "")#

copy constructor

SuTermMatrix(const SuTermMatrix&, SpecialMatrix, const complex_t& = 1., const string_t &na = "")#

construct a special matrix from a SuTermMatrix (e.g _IdMatrix)

construct special matrix from a structure given by a TermMatrix A: the SuTermMatrix model sm: special matrix type (up to now, only _idMatrix is available) a: coefficient to apply na: option name

SuTermMatrix(const Unknown&, const GeomDomain&, const Unknown&, const GeomDomain&, const OperatorOnKernel&, const string_t &na = "")#

constructor of matrix opker(xi,yj) (Lagrange interpolation)

constructor of matrix opker(xi,yj) - Lagrange interpolation - opker is evaluated on dof coordinates linked to Unknown and GeomDomains ux, domx is associated to matrix rows and uy, domy to matrix columns NOTE: do not use this constructor if kernel is singular on some couple of points

template<typename T>
SuTermMatrix(const Unknown*, const Space*, const Unknown*, const Space*, const std::vector<T>&, number_t, number_t, const string_t& = "")#

constructor from a row dense matrix

constructor from a row dense matrix (only scalar entry)

SuTermMatrix(const Unknown*, Space*, const Unknown*, Space*, MatrixEntry*, const string_t &na = "")#

basic constructor

SuTermMatrix(const Unknown*, Space*, const Unknown*, Space*, SuTermVector&, StorageType = _noStorage, AccessType = _noAccess, const string_t &na = "")#

constructor of a diagonal SuTermMatrix from a SuTermVector

SuTermMatrix(SuBilinearForm*, const Unknown*, const Unknown*, Space*, Space*, const std::vector<Space*>&, const std::vector<Space*>&, const string_t&, MatrixEntry* = nullptr)#

full constructor

SuTermMatrix(SuBilinearForm *subf, const string_t &na = "", ComputingInfo cp = ComputingInfo())#

basic constructor

SuTermMatrix(SuBilinearForm *subf = nullptr, const string_t &na = "", bool noass = false)#

basic constructor

SuTermMatrix(SuTermVector&, const string_t &na = "")#

constructor of a diagonal SuTermMatrix from a SuTermVector

constructor of a diagonal SuTermMatrix from a SuTermVector the diagonal Matrix is stored using SymCsStorage Note: SuTermVector cannot be passed as const because of a cast of the space pointer

SuTermMatrix(SuTermVector&, SuTermVector&, const SymbolicFunction &sf, const string_t &na = "")#

constructor of a diagonal SuTermMatrix from a SuTermVector

virtual ~SuTermMatrix()#

destructor

AccessType accessType() const#

return access type of submatrix (_row, _col, _sym, _dual)

MatrixEntry *actual_entries() const#

return the actual pointer to entries (priority to scalar entry) access to rhs matrix pointer (r/w)

void addDenseToStorage(const std::vector<SuBilinearForm>&, MatrixStorage*) const#

add dense matrix indexes to storage (extension, double intg)

void addDenseToStorageFE(const std::vector<SuBilinearForm>&, MatrixStorage*) const#

add dense matrix indexes to storage (FE with domain restriction)

void addDGToStorage(const std::vector<SuBilinearForm>&, MatrixStorage*&) const#

add DG matrix indexes to storage

void buildFromSuTermVectorPair(const Unknown*, Space*, const Unknown*, Space*, SuTermVector&, SuTermVector&, const SymbolicFunction&, StorageType = _noStorage, AccessType = _noAccess, const string_t &na = "")#

actual constructor of diagonal SuTermMatrix from a SuTermVector

void buildSubspaces()#

build the required subspaces and largest subspaces

inline std::vector<DofComponent> &cdofsu()#

access to cdofs_u vector (r/w)

inline std::vector<DofComponent> &cdofsv()#

access to cdofs_v vector (r/w)

inline const std::vector<DofComponent> &cdofsv() const#

access to cdofs_v vector (r)

void changeTestFunction(const Unknown &newv)#

change TestFuncion (row unknown) to an other (be cautious)

change test function (csay row unknown) to an other be cautious: nothing is recomputed, bilinear form is not updated, numbering remains the same.

Be sure what you are doing !!! emit warnings if something seems to be hazardous

void changeUnknown(const Unknown &newu)#

change unknown (col unknown) to an other (be cautious)

change unknown (col unknown) to an other be cautious: nothing is recomputed, bilinear form is not updated, numbering remains the same.

Be sure what you are doing !!! emit warnings if something seems to be hazardous

void changeUnknowns(const Unknown &newu, const Unknown &newv)#

change both first Unknown and TestFuncion to others (be cautious)

change unknown and test function to others be cautious: nothing is recomputed, bilinear form is not updated, numbering remains the same.

Be sure what you are doing !!! emit warnings if something seems to be hazardous

virtual void clear()#

deallocate memory used by a SuTermMatrix

void clearScalar()#

deallocate memory used by scalar part of SuTermMatrix

number_t colRank(const Dof&) const#

rank (>=1) in column of a Dof

number_t colRank(const DofComponent&) const#

rank (>=1) in column of a DofComponent

virtual void compute()#

compute SuTermMatrix from bilinear form compute SuTermMatrix from a linear combination of SuTermMatrix’s

compute the term matrix from bilinear form and constraints data (possibly none) the process works as follows:

  • collect bilinear forms by type (FE, FE requiring domain extension, SP, mixed FE-SP, IE, mixed IE-SP)

  • if not imposed, find a suited storage with the following rule: compressed sparse for FE, else dense

  • construct the storage

  • create matrix entry with the right type

  • call computation routines for each collection of bilinear forms

void compute(const LcTerm<SuTermMatrix>&, const string_t &na = "")#

compute SuTermMatrix from a linear combination of SuTermMatrix’s (same unknowns) the current SuTermMatrix is assumed to be void, this function fills every things if it is not the case, every thing is clear step 1 : find structure and value type of the linear combination move SuTermMatrix’s entries to entries_p if not allocated (means move to vector representation) find largest spaces choose storage type (type, access, symmetry) step 2 : if dense storage create a new one from largest spaces if not, merge SutermMatrix storage building the colIndices (to be improved) and then create a new storage step 3 : do the linear combination step 4 : update info and go back to original representation of SuTermMatrix’s

template<number_t CM>
void compute(const std::vector<SuBilinearForm>&, ValueType, StrucType)#

utility for computing SuTermMatrix

template<typename T, typename K>
void computeIR(const SuLinearForm &sulf, T *mat, K &vt, const std::vector<Point> &xs, const std::vector<Vector<real_t>> *ns = nullptr)#

compute integral representation returns single unknown bilinear forms

FE computation of a scalar SuLinearForm with kernels on a == unique domain == Rij= intg_gamma opk(xi,y)*op(wj)(y) dy.

example: intg_gamma G(x,y)*U(y) dy

Note: U comes from a SuTermVector having same unknown as SuLinearForm

Parameters:
  • sulf – a single unknown linear form defined on a unique domain (assumed)

  • vt – to pass as template the scalar type (real or complex)

  • xs – points where to evaluate IR

  • nxs – pointers to normal where to evaluate IR

  • mat – pointer to a matrix stored as row dense, storing the result Rij

void copy(const SuTermMatrix&)#

copy SuTermMatrix in current SuTermMatrix

void diagFromSuTermVector(const Unknown*, Space*, const Unknown*, Space*, SuTermVector&, StorageType = _noStorage, AccessType = _noAccess, const string_t &na = "")#

actual constructor of diagonal SuTermMatrix from a SuTermVector

inline const MatrixEntry *entries() const#

access to entries pointer (r)

FactorizationType factorization() const#

return factorization type if factorized

template<typename T>
HMatrix<T, FeDof> &getHMatrix(StrucType str = _undefStrucType) const#

get HMatrix representation if it exists access to cdofs_u vector (r)

get HMatrix representation if it exists, it returns a reference to the HMatrix if scalar and vector representations both exist, the scalar representation is prior except if StrucType argument is specified

template<typename T>
LargeMatrix<T> &getLargeMatrix(StrucType str = _undefStrucType) const#

get LargeMatrix representation

get internal matrix (restrictive), i.e LargeMatrix object if available if scalar and vector representations both exist, the scalar representation is prior except if StrucType argument is specified It returns a reference to the LargeMatrix

Value getScalarValue(number_t, number_t, dimen_t = 0, dimen_t = 0) const#

access to scalar matrix coefficient (i,j >= 1)

access to the matrix coefficient (i,j) >= 1 when a matrix of of m x n matrices if(k!=0) returns A(i,j)(k,l) so i,j are indexes in the vector numberings ! else i,j are indexes in the scalar numberings and function returns A(I,J)(k,l) with I=(i-1)/m + 1, k=(i-1)m +1 , J=(j-1)/n + 1, l=(j-1)n +1

Value getValue(number_t, number_t) const#

access to matrix coefficient (i,j >= 1)

access to the matrix coefficient (i,j) >= 1 in the scalar/vector row-col numbering return a scalar value if a scalar matrix, a matrix value if a matrix of matrices see getScalarValue to get scalar coefficient if (i,j) is out of storage return 0

bool hasDomainRestriction(const std::vector<SuBilinearForm> &subfs) const#

check if there are some FE subfs with domain restriction

void initPointers()#

set all pointers to 0 initialize a SuTermVector consistent with matrix rows or columns

inline virtual void name(const string_t &nam)#

update the name of a SuTermMatrix

number_t nnz() const#

return the number of non zero (scalar non zero)

real_t norm2() const#

Frobenius norm of a SuTermMatrix.

real_t norminfty() const#

infinite norm of a SuTermMatrix

number_t numberOfCols() const#

number of columns (counted in scalar dof)

number_t numberOfRows() const#

number of rows (counted in scalar dof)

template<typename T>
SuTermMatrix &operator*=(const T&)#

SutermMatrix *= t.

SuTermMatrix &operator+=(const SuTermMatrix&)#

SutermMatrix += SutermMatrix.

Algebraic operation += and -= the result of these operations is a SuTermMatrix with extended dof numbering, may require a new storage !!! works with entries prior to scalar entries.

SuTermMatrix &operator-=(const SuTermMatrix&)#

SutermMatrix -= SutermMatrix.

template<typename T>
SuTermMatrix &operator/=(const T&)#

SutermMatrix /= t.

SuTermMatrix &operator=(const SuTermMatrix&)#

assign operator constructor from a linear combination of SuTermMatrix’s

virtual void print(std::ostream&) const#

print SuTermMatrix

void print(std::ostream&, bool) const#

print SuTermMatrix with header option

void printSummary(std::ostream&) const#

print SuTermMatrix in brief

inline const MatrixEntry *rhs_matrix() const#

access to rhs matrix pointer (r)

SuTermMatrix &roundToZero(real_t aszero = 10 * theEpsilon)#

round to zero all coefficients close to 0 (|.

| < aszero)

number_t rowRank(const Dof&) const#

rank (>=1) in row of a Dof

number_t rowRank(const DofComponent&) const#

rank (>=1) in row of a DofComponent

void saveToFile(const string_t &fn, StorageType st, number_t prec = fullPrec, bool encode = false, real_t tol = theTolerance) const#

save TermMatrix to file (dense or Matlab format) save TermMatrix to file (dense or Matlab format)

inline MatrixEntry *&scalar_entries()#

access to entries pointer (r/w)

inline const MatrixEntry *scalar_entries() const#

access to entries pointer (r)

MatrixStorage *scalarStoragep() const#

return scalar storage of submatrix (0 if no scalar entries or storage)

void setCol(const Value&, number_t r1, number_t r2)#

set values of matrix colss c1->c2 (>= 1)

set values of a matrix cols c1->c2 (>= 1), c2=0 means nbrows, no storage change!

void setRow(const Value&, number_t r1, number_t r2)#

set values of matrix rows r1->r2 (>= 1)

set values of a matrix rows r1->r2 (>= 1), c2=0 means nbrows, value has to be consistant with matrix structure no storage change

void setScalarValue(number_t, number_t, const Value&, dimen_t = 0, dimen_t = 0)#

set matrix coefficient (i,j) >= 1 from a value when a matrix of of m x n matrices if(k!=0) set A(i,j)(k,l) so i,j are indexes in the vector numberings ! else i,j are indexes in the scalar numberings and function sets A(I,J)(k,l) with I=(i-1)/m + 1, k=(i-1)m +1 , J=(j-1)/n + 1, l=(j-1)n +1

void setStorage(StorageType, AccessType)#

set the storage of SuTermMatrix

void setValue(number_t, number_t, const Value&)#

set value to matrix coefficient (i,j >= 1) in storage set value to matrix coefficient (i,j >= 1) in storage

set value to matrix coefficient (i,j >= 1) in storage, Value must be of the same type of the matrix coefficient (i,j) must be in the matrix storage else an error occurs see getScalarValue to set a scalar coefficient of a matrix of matrices

inline Space *&space_up()#

return the pointer to the largest space in u involved in SuBilinearForm (write)

inline Space *space_up() const#

return the pointer to the largest space in u involved in SuBilinearForm

inline Space &space_v() const#

return the largest space in v involved in SuBilinearForm

inline Space *&space_vp()#

return the pointer to the largest space in v involved in SuBilinearForm (write)

inline Space *space_vp() const#

return the pointer to the largest space in v involved in SuBilinearForm

MatrixStorage *storagep() const#

return storage of submatrix (0 if no entries or storage)

StorageType storageType() const#

return storage type of submatrix (_cs,_skyline,_dense)

StrucType strucType() const#

return structure type (_scalar, _matrix) return the largest space in u involved in SuBilinearForm

inline SuBilinearForm *&subfp()#

return pointer to bilinear form

SymType symmetry() const#

return symmetry of submatrix

inline TermType termType() const#

return _sutermMatrix

SuTermMatrix &toComplex()#

go to complex representation

SuTermMatrix &toConj()#

change to conj(U)

SuTermMatrix &toImag()#

go to real representation getting the imag part when complex

SuTermMatrix &toReal()#

go to real representation getting the real part when complex

void toScalar(bool keepEntries = false)#

go to scalar representation

create scalar representation scalar_entries_p and cdofs_u, cdofs_v numbering vectors

  • if one of unknowns is a vector unknown a new MatrixEntry is created using MatrixEntry::toScalar() function and linked to the MatrixEntry pointer scalar_entries_p. In that case, if keepVector is false the vector representation is destroyed

  • if both unknowns are scalar unknown, no new MatrixEntry: scalar_entries_p = entries_p This function builds also, in any case, the cdofs_u, cdofs_v numbering vectors (vector of ComponentDof’s)

void toStorage(StorageType, AccessType)#

change the storage of SuTermMatrix (real algorithm)

void toVectorUnknown()#

go to vector unknown representation if it has component unknown

move to vector unknown representation if SuTermMatrix has component unknown Note: the SutermMatrix is modified its unknowns too

virtual std::set<const Space*> unknownSpaces() const#

list of involved unknown spaces access to entries pointer (r/w)

inline const Unknown *&up()#

return pointer to unknown (column) (write)

inline const Unknown *up() const#

return pointer to unknown (column)

void updateStorageType(const std::vector<SuBilinearForm>&, std::set<number_t>&, std::set<number_t>&, StorageType&) const#

update storage type

ValueType valueType() const#

return value type (_real, _complex)

void viewStorage(std::ostream&) const#

print storage on stream

inline const Unknown *&vp()#

return pointer to testfunction (line) (write)

inline const Unknown *vp() const#

return pointer to testfunction (line)

Friends

friend SuTermMatrix *mergeSuTermMatrix(const std::list<SuTermMatrix*>&)#

merge SuTerMatrix’s referring to the same vector unknown

friend SuTermMatrix operator*(const SuTermMatrix&, const SuTermMatrix&)#

product SuTermMatrix * SuTermMatrix

friend SuTermVector operator*(const SuTermMatrix&, const SuTermVector&)#

Product of a SuTermMatrix M and a SuTermVector V, the result is a SuTermVector R the columns dof indices of M, say (j1,j2, …jn), may be different from the dof indices of V say (k1,k2, … kp).

product SuTermMatrix * SuTermVector

The dof indices of result vector will be always the lines dof indices of the matrix, say (i1,i2, …im). It means that the product M_i,j * V_j is performed only for j=k.

  • when {k1,k2, … kp}={j1,j2, …jn} the product is performed using largematrix product

  • when {k1,k2, … kp} differs from {j1,j2, …jn}, the vector V is extended and reduced to {j1,j2, …jn} and the product is performed using largematrix product

friend SuTermVector operator*(const SuTermVector&, const SuTermMatrix&)#

Product of a SuTermVector V and a SuTermMatrix M, the result is a SuTermVector R the lines dof indices of M, say (i1,i2, …in), may be different from the dof indices of V say (k1,k2, … kp).

product SuTermVector * SuTermMatrix

The dof indices of result vector will be always the columns dof indices of the matrix, say (j1,j2, …jm). It means that the product V_i * M_i,j is performed only for i=k.

  • when {k1,k2, … kp}={i1,i2, …in} the product is performed using largematrix product

  • when {k1,k2, … kp} differs from {i1,i2, …in}, the vector V is extended and reduced to {i1,i2, …in} and the product is performed using largematrix product

exists only for particular storage type