~chaffra/ufl/main-old

« back to all changes in this revision

Viewing changes to ufl/algorithms/ufl2dot.py

  • Committer: Chaffra Affouda
  • Date: 2012-06-26 02:44:28 UTC
  • mfrom: (1170.1.257 scratch)
  • Revision ID: chaffra@gmail.com-20120626024428-g3py2piveuv0ssjg
merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
of UFL objects in the DOT graph visualization language,
3
3
mostly intended for debugging purposers."""
4
4
 
5
 
# Copyright (C) 2008-2011 Martin Sandve Alnes
 
5
# Copyright (C) 2008-2012 Martin Sandve Alnes
6
6
#
7
7
# This file is part of UFL.
8
8
#
53
53
    # Cutoff if we have handled e before
54
54
    if id(e) in nodes:
55
55
        return
56
 
    
 
56
 
57
57
    # Special-case Variable instances
58
58
    if isinstance(e, Variable):
59
59
        ops = (e._expression,)
71
71
            label = e._uflclass.__name__.split(".")[-1]
72
72
            if label in class2label:
73
73
                label = class2label[label]
74
 
    
 
74
 
75
75
    # Create node for parent e
76
76
    nodename = "n%04d" % (len(nodes) + nodeoffset)
77
77
    nodes[id(e)] = (nodename, label)
78
 
    
 
78
 
79
79
    # Handle all children recursively
80
80
    n = len(ops)
81
81
    oplabels = [None]*n
121
121
        ei = form.exterior_facet_integrals()
122
122
        ii = form.interior_facet_integrals()
123
123
        mi = form.macro_cell_integrals()
124
 
        
 
124
 
125
125
        subgraphs = []
126
126
        nodes = {}
127
127
        edges = []
133
133
            entitylist = format_entities(nodes, edges)
134
134
            integralnode = "%s_%s" % (formname, integrallabel)
135
135
            subgraphs.append(integralgraphformat % (integralnode, integrallabel, formname, integralnode, integralnode, rootnode, entitylist))
136
 
        
 
136
 
137
137
        s = ""
138
138
        if begin:
139
139
            s += 'digraph ufl_form\n{\n  node [shape="box"] ;\n'
141
141
        s += "\n".join(subgraphs)
142
142
        if end:
143
143
            s += "\n}"
144
 
    
 
144
 
145
145
    elif isinstance(expression, Expr):
146
146
        nodes = {}
147
147
        edges = []
148
148
        build_entities(integrand, nodes, edges, nodeoffset)
149
149
        entitylist = format_entities(nodes, edges)
150
150
        s = exprgraphformat % entitylist
151
 
    
 
151
 
152
152
    else:
153
153
        error("Invalid object type %s" % type(expression))
154
 
    
 
154
 
155
155
    return s, len(nodes) + nodeoffset
156
156