public static DotGraph ToGraphViz(this GaNumMapBilinearTree bilinearMap, bool showFullGraph = false, bool showLeafValues = false) { var dotGraph = DotGraph.Directed("Graph"); dotGraph.AddQuadTree(bilinearMap.BasisBladesMapTree, showFullGraph); if (!showLeafValues) { return(dotGraph); } foreach (var leafPair in bilinearMap.BasisBladesMapTree.LeafValuePairs) { var dotHtmlTable = DotUtils.Table(); dotHtmlTable.SetBorder(0); dotHtmlTable.SetCellBorder(1); var dotHtmlRow = dotHtmlTable.AddRow(); var mv = leafPair.Item3; foreach (var term in mv.Terms) { var columnTable = DotUtils.Table(); columnTable.SetBorder(0); columnTable.SetCellBorder(0); columnTable.AddRow( term.Key.PatternToString(mv.VSpaceDimension).ToHtmlString() ); columnTable.AddRow(term.Value.ToString("G")); dotHtmlRow.AddCell(columnTable); } var parentNodeName = leafPair.Item1.PatternToString(bilinearMap.DomainVSpaceDimension) + ", " + leafPair.Item2.PatternToString(bilinearMap.DomainVSpaceDimension); var node = dotGraph.AddNode("coef" + parentNodeName); node.SetLabel(dotHtmlTable); node.SetShape(DotNodeShape.Note); node.SetStyle(DotNodeStyle.Solid); node.SetColor(DotColor.Rgb(Color.Black)); node.SetFontColor(DotColor.Rgb(Color.Black)); var dotEdge = node.AddEdgeFrom(parentNodeName); dotEdge.SetArrowHead(DotArrowType.Inv); dotEdge.SetArrowTail(DotArrowType.Inv); dotEdge.SetStyle(DotEdgeStyle.Solid); dotEdge.SetColor(DotColor.Rgb(Color.Black)); dotEdge.SetFontColor(DotColor.Rgb(Color.Black)); } return(dotGraph); }
public static GaNumMapBilinearTree ToTreeMap(this IGaNumMapBilinear bilinearMap) { var resultMap = GaNumMapBilinearTree.Create( bilinearMap.DomainVSpaceDimension, bilinearMap.TargetVSpaceDimension ); foreach (var basisBladeMapping in bilinearMap.BasisBladesMaps()) { var id1 = basisBladeMapping.Item1; var id2 = basisBladeMapping.Item2; var mv = basisBladeMapping.Item3; resultMap.SetBasisBladesMap(id1, id2, mv); } return(resultMap); }
private long OpTreeTableSize() { return(GaNumMapBilinearTree.CreateFromOuterProduct(Frame).SizeInBytes()); }