Exemplo n.º 1
0
def xmldump(phile):
    print >> phile, "<section id='Section-Builtin'>"
    print >> phile, " <title>Built-In Physics: Fields, Fluxes, Equations, and Properties</title>"
    print >> phile, """<para>
    &oof2; is designed to be extendible, so it is easy to add new
    &properties;, &fields;, &fluxes;, and &equations;.  That means
    that the following lists of <emphasis>built-in</emphasis>
    objects may not be complete.  </para>"""

    # Property documentation.  propdict is a dictionary listing the
    # Properties that contribute to each Equation and Flux, or use
    # each Field.
    propdict = propertyregistration.xmldocs(phile)

    # Fields
    print >> phile, "<section id='Section-Fields'>"
    print >> phile, "<title>Fields</title>"
    print >> phile, """<para>

This list contains all of the predefined &fields; in &oof2;.  Click on
a &field; to see a brief description and a list of all &properties;
that use the &field;.

</para>"""
    print >> phile, "<itemizedlist>"
    # List of Fields.
    for fld in field.allCompoundFields.values():
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Field-%s'><varname>%s</varname></link>"\
            % (fld.name(), fld.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Field.
    for fld in field.allCompoundFields.values():
        name = fld.name()
        xmlmenudump.xmlIndexEntry(name, 'Field', 'Field-%s' % name)
        print >> phile, "<refentry xreflabel='%s' id='Field-%s'>" % (name,
                                                                     name)
        print >> phile, " <refnamediv>"
        print >> phile, "  <refname>%s</refname>" % name
        print >> phile, "  <refpurpose></refpurpose>"
        print >> phile, " </refnamediv>"
        print >> phile, " <refsect1>"
        print >> phile, "  <title>Details</title>"
        print >> phile, "  <itemizedlist>"
        print >> phile, "   <listitem><simpara>"
        print >> phile, "     Class: <classname>%s</classname>" % fld.__class__.__name__
        print >> phile, "   </simpara></listitem>"
        print >> phile, "   <listitem><simpara>"
        print >> phile, "     Dimension: ", fld.ndof()
        print >> phile, "   </simpara></listitem>"

        try:
            properties = propdict[fld]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><para>"
            print >> phile, "<varname>%s</varname> is used by the following &properties;:" % name
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':', '-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "</para></listitem>"

        print >> phile, "  </itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"

        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file("DISCUSSIONS/engine/builtin/field-%s.xml" % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISCUSSION for %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1>"
        print >> phile, "</refentry> <!-- %s -->" % fld.name()
    print >> phile, "</section> <!-- Fields -->"

    # Fluxes
    print >> phile, "<section id='Section-Fluxes'>"
    print >> phile, "<title>Fluxes</title>"
    print >> phile, """<para>
This list contains all of the predefined &fluxes; in &oof2;.  Click on
a &flux; to see a brief description and a list of all &properties;
that contribute to the &flux;.
</para>"""
    # List of Fluxes
    print >> phile, "<itemizedlist>"
    for flx in flux.allFluxes:
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Flux-%s'><varname>%s</varname></link>"\
            % (flx.name(), flx.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Flux
    for flx in flux.allFluxes:
        name = flx.name()
        xmlmenudump.xmlIndexEntry(name, 'Flux', 'Flux-%s' % name)
        print >> phile, "<refentry xreflabel='%s' id='Flux-%s'>" % (name, name)
        print >> phile, "<refnamediv>"
        print >> phile, "<refname>%s</refname>" % name
        print >> phile, "<refpurpose></refpurpose>"
        print >> phile, "</refnamediv>"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Details</title>"
        print >> phile, "<itemizedlist>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Class: <classname>%s</classname>" % (
            flx.__class__.__name__[:-3])  # strip 'Ptr'
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Dimension: ", flx.ndof()
        print >> phile, "</simpara></listitem>"
        try:
            properties = propdict[flx]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><simpara>"
            print >> phile, "The following &properties; contribute to <varname>%s</varname>:" % name
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':', '-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "</simpara></listitem>"

        print >> phile, "</itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file('DISCUSSIONS/engine/builtin/flux-%s.xml' % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISSCUSSION FOR %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1> <!--Description-->"
        print >> phile, "</refentry>"
    print >> phile, "</section> <!-- Fluxes -->"

    print >> phile, "<section id='Section-Equations'>"
    print >> phile, "<title>Equations</title>"
    print >> phile, """<para>
This is a list of all of the predefined &equations; in &oof2;.  Click
on an &equation; to see a description and a list of all &properties;
that contribute to the &equation;.
</para>"""
    # List of Equations
    print >> phile, "<itemizedlist>"
    for eqn in equation.allEquations:
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Equation-%s'><varname>%s</varname></link>" % (
            eqn.name(), eqn.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Equation
    links = {
        'PlaneFluxEquation': 'Section-Concepts-Mesh-Equation-PlaneFlux',
        'DivergenceEquation': 'Section-Concepts-Mesh-Equation-Divergence'
    }
    for eqn in equation.allEquations:
        name = eqn.name()
        xmlmenudump.xmlIndexEntry(name, 'Equation', 'Equation-%s' % name)
        classname = eqn.__class__.__name__[:-3]  # strip off 'Ptr'
        print >> phile, "<refentry xreflabel='%s' id='Equation-%s'>" % (name,
                                                                        name)
        print >> phile, "<refnamediv>"
        print >> phile, "<refname>%s</refname>" % name
        print >> phile, "<refpurpose></refpurpose>"
        print >> phile, "</refnamediv>"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Details</title>"
        print >> phile, "<itemizedlist>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Type: <link linkend='%s'><classname>%s</classname></link>" % (
            links[classname], classname)
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Flux: <link linkend='Flux-%s'><varname>%s</varname></link>" % (
            eqn.fluxname(), eqn.fluxname())
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Dimension:", eqn.ndof()
        print >> phile, "</simpara></listitem>"
        try:
            properties = propdict[eqn]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><simpara>"
            print >> phile, "The following &properties; make direct contributions to this &equation;:"
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':', '-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "Other &properties; make indirect contributions to the &equation; through the <link linkend='Flux-%s'><classname>%s</classname></link>." % (
                eqn.fluxname(), eqn.fluxname())
            print >> phile, "</simpara></listitem>"
        print >> phile, "</itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file("DISCUSSIONS/engine/builtin/eqn-%s.xml" % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISCUSSION FOR %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1> <!-- Description-->"

        print >> phile, "</refentry>"

    print >> phile, "</section> <!-- Equations -->"

    print >> phile, "</section> <!-- Built-In Physics -->"
Exemplo n.º 2
0
def xmldocs(phile):
    # Called by xmldump in problem.py.

    # First, do some bookkeeping
    ptypedict = {}  # lists of Properties of each PropertyType.
    propdict = {}  # lists of Properties for each equation, field, or flux
    for reg in AllProperties.data.getObjects():
        if reg.secret():
            continue
        ptype = reg.propertyType()
        try:
            ptypedict[ptype].append(reg)
        except KeyError:
            ptypedict[ptype] = [reg]
        # propdict is returned to problem.xmldump so that equations
        # and fluxes can list their relevant properties.
        for eqn in reg.equations():
            try:
                propdict[eqn].append(reg)
            except KeyError:
                propdict[eqn] = [reg]
        for flux in reg.fluxes():
            try:
                propdict[flux].append(reg)
            except KeyError:
                propdict[flux] = [reg]
        for field in reg.fields():
            try:
                propdict[field].append(reg)
            except KeyError:
                propdict[field] = [reg]

    print >> phile, "<section id='Section-Properties'>"
    print >> phile, "<title>Material Properties</title>"
    print >> phile, """
<para>
This is a listing of &properties; by category.  Each &material; may
have at most one &property; from each category.  Follow the links for
more detail about each &property;, including which &fields; it
requires and which &fluxes; and/or &equations; it contributes to.
</para>"""
    print >> phile, "<itemizedlist>"
    ptypes = ptypedict.keys()
    ptypes.sort()
    for ptype in ptypes:
        print >> phile, '<listitem id="PropertyType-%s">' % ptype
        print >> phile, '<para>', ptype
        print >> phile, '<itemizedlist>'
        for reg in ptypedict[ptype]:
            print >> phile, '<listitem><simpara><link linkend="Property-%s">%s</link></simpara></listitem>' % (
                reg.name().replace(':', '-'), reg.name())
        print >> phile, '</itemizedlist>'
        print >> phile, '</para>'
        print >> phile, '</listitem>'
    print >> phile, '</itemizedlist>'

    # Create a refentry page for each Property
    for reg in AllProperties.data.getObjects():
        if reg.secret():
            continue
        name = reg.name()
        idname = name.replace(':', '-')
        ptype = reg.propertyType()
        xmlmenudump.xmlIndexEntry(name, ptype + " Property",
                                  "Property-" + idname)
        print >> phile, '<refentry xreflabel="%s" id="Property-%s" role="Property">' \
            % (name, idname)
        print >> phile, '<refnamediv>'
        print >> phile, '<refname>%s</refname>' % name
        if reg.tip is not parameter.emptyTipString:
            tip = reg.tip or "MISSING PROPERTY TIP STRING for %s" % name
        else:
            tip = ""
        print >> phile, '<refpurpose>%s</refpurpose>' % tip
        print >> phile, '</refnamediv>'
        print >> phile, '<refsect1>'
        print >> phile, '<title>Details</title>'
        print >> phile, '<itemizedlist>'
        # Category
        print >> phile, '<listitem><simpara>'
        print >> phile, 'Property Category: <link linkend="PropertyType-%(t)s">%(t)s</link>' % dict(
            t=ptype)
        print >> phile, '</simpara></listitem>'
        # Parameters
        print >> phile, '<listitem>'
        print >> phile, '<para>Parameters:'
        print >> phile, '<variablelist>'
        for param in reg.params:
            print >> phile, '<varlistentry>'
            print >> phile, '<term><varname>%s</varname></term>' % param.name
            print >> phile, '<listitem>'
            if param.tip is not parameter.emptyTipString:
                tip = param.tip or "MISSING PROPERTY PARAMETER TIP for %s" % name
            else:
                tip = ""
            print >> phile, '<simpara>%s <emphasis>Type</emphasis>: %s </simpara>'\
                % (tip, param.valueDesc())
            print >> phile, '</listitem>'
            print >> phile, '</varlistentry>'
        print >> phile, '</variablelist>'
        print >> phile, '</para></listitem> <!-- Parameters -->'

        for classname, plural, objlist in [('Field', 'Fields', reg.fields()),
                                           ('Flux', 'Fluxes', reg.fluxes()),
                                           ('Equation', 'Equations',
                                            reg.equations())]:
            if objlist:
                print >> phile, '<listitem><simpara>'
                text = [
                    "<link linkend='%s-%s'><varname>%s</varname></link>" %
                    (classname, obj.name(), obj.name()) for obj in objlist
                ]
                print >> phile, "%s: %s" % (plural, ", ".join(text))
                print >> phile, '</simpara></listitem>'

        print >> phile, '</itemizedlist>'
        print >> phile, '</refsect1> <!-- Details -->'

        print >> phile, '<refsect1>'
        print >> phile, '<title>Discussion</title>'
        try:
            print >> phile, xmlmenudump.getDiscussion(reg)
        except AttributeError:
            print >> phile, "<para>MISSING PROPERTY DISCUSSION: %s</para>" % name
        print >> phile, '</refsect1> <!-- Discussion -->'
        print >> phile, '</refentry>'

    print >> phile, "</section> <!-- Properties -->"

    return propdict
Exemplo n.º 3
0
def outputDump(file):
    scalars = output.scalarOutputs.getObjects()
    positions = output.positionOutputs.getObjects()
    aggregates = output.aggregateOutputs.getObjects()
    allOutputs = scalars + positions + aggregates
    # # allOutputs contains duplicates...
    # allOutputs.sort(lambda x, y: cmp(x.getPath(), y.getPath()))
    xmlids = {}
    _catalogPaths(scalars, xmlids, 'Output-Scalar-')
    _catalogPaths(positions, xmlids, 'Output-Position-')
    _catalogPaths(aggregates, xmlids, 'Output-Aggregates-')

    print >> file, "<section id='Section-Output'>"
    print >> file, " <title>Outputs</title>"
    print >> file, "<!--this section produced by SRC/engine/IO/xmloutputs.py-->"
    print >> file, """
    <para>
     The <classname>Output</classname> classes provide ways of
     extracting data from <link
     linkend='Section-Concepts-Mesh'>Meshes</link>.  Different kinds
     of <classname>Outputs</classname> produce different kinds of
     data.  <link
     linkend='RegisteredClass-FilledContourDisplay'>Contour
     plots</link>, for example, display the results of a <link
     linkend='Section-Output-Scalar'>Scalar Output</link> at
     locations determined by a <link
     linkend='Section-Output-Position'>Position Output</link>.
    </para>
    <para>
      <classname>Outputs</classname> are used for graphical output by
      some <xref linkend="RegisteredClass-DisplayMethod"/> classes,
      for post-processing on the <link
      linkend="Section-Tasks-Analysis">Analysis</link> and <link
      linkend="Section-Tasks-BdyAnalysis">Boundary Analysis</link> pages,
      and as data for
      <link linkend="MenuItem-OOF.Mesh.Scheduled_Output">scheduled
      outputs</link>.
    </para>
    <para>
     The three categories of outputs are
     <itemizedlist>
      <listitem><para id='Section-Output-Scalar'>
       <classname>ScalarOutputs</classname>:
       These are Outputs whose result is a single number at each evaluation
       point.  They are used as the <varname>what</varname> argument
       in the contour plotting commands, for example.
       <itemizedlist spacing='compact'>
       """
    paths = [(o.getPath(), o) for o in scalars]
    paths.sort()
    for path, o in paths:
        xmlmenudump.xmlIndexEntry(path, "Scalar Output", xmlids[o])
        print >> file, " <listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, "  <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>
      </para></listitem>
      <listitem><para id='Section-Output-Position'>
       <classname>PositionOutputs</classname>:
       These are Outputs whose result is a position.  They are used as the
       <varname>where</varname> argument in plotting commands.
        <itemizedlist spacing='compact'>"""
    paths = [(o.getPath(), o) for o in positions]
    paths.sort()
    for path, o in paths:
        xmlmenudump.xmlIndexEntry(path, "Position Output", xmlids[o])
        print >> file, " <listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, "  <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>
      </para></listitem>
      <listitem><para id='Section-Output-Aggregate'>
       <classname>AggregateOutputs</classname>:

       These are Outputs whose result is a (possibly) multidimensional
       object, such as a &field; or &flux;.
       They are used when interactively querying &mesh; data with the
       <link
       linkend='Section-Graphics-MeshInfo-DataViewer'>Data
       Viewer</link>.  Many of the <link
       linkend='Section-Output-Scalar'><classname>ScalarOutputs</classname></link>
       are also <classname>AggregateOutputs</classname>.
       <itemizedlist spacing='compact'> """
    paths = [(o.getPath(), o) for o in aggregates]
    paths.sort()
    for path, o in paths:
        xmlmenudump.xmlIndexEntry(path, "Aggregate Output", xmlids[o])
        print >> file, "<listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, " <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>

      </para></listitem>
     </itemizedlist>
     
    </para>
    """

    # for i in range(len(allOutputs)):
    #     if i==0 or (allOutputs[i] is not allOutputs[i-1]):
    #         o = allOutputs[i]
    for o, xmlid in xmlids.items():
        path = o.getPath()
        # xmlid = xmlids[path]
        print >> file, "<refentry id='%s' role='Output'>" % xmlid
        print >> file, " <refnamediv>"
        print >> file, "  <refname>%s</refname>" % path
        try:
            print >> file, " <refpurpose>%s</refpurpose>" % xmlmenudump.getHelp(
                o)
        except AttributeError:
            print >> file, " <refpurpose>MISSING TIP STRING: %s</refpurpose>" % xmlid
        print >> file, " </refnamediv>"
        print >> file, " <refsynopsisdiv>"
        print >> file, "  <title>Output Categories</title>"
        print >> file, "  <itemizedlist spacing='compact'>"
        if o in scalars:
            print >> file, "<listitem><simpara><link linkend='Section-Output-Scalar'><classname>ScalarOutput</classname></link></simpara></listitem>"
        if o in positions:
            print >> file, "<listitem><simpara><link linkend='Section-Output-Position'><classname>PositionOutput</classname></link></simpara></listitem>"
        if o in aggregates:
            print >> file, "<listitem><simpara><link linkend='Section-Output-Aggregate'><classname>AggregateOutput</classname></link></simpara></listitem>"
        print >> file, "  </itemizedlist>"
        print >> file, " </refsynopsisdiv>"
        params = o.getSettableParams().values()
        if params:
            print >> file, " <refsect1>"
            print >> file, "  <title>Parameters</title>"
            print >> file, "  <variablelist>"
            for param in params:
                xmlmenudump.process_param(param)
                print >> file, "   <varlistentry>"
                print >> file, "    <term><varname>%s</varname></term>" \
                      % param.name
                print >> file, "    <listitem>"
                try:
                    tip = xmlmenudump.getHelp(param)
                except AttributeError:
                    tip = "MISSING TIP STRING: %s" % param.name
                print >> file, "     <simpara>%s <emphasis>Type</emphasis>: %s</simpara>" \
                      % (tip, param.valueDesc())
                print >> file, "     </listitem>"
                print >> file, "   </varlistentry>"
            print >> file, "  </variablelist>"
            print >> file, " </refsect1>"
        print >> file, " <refsect1>"
        print >> file, "  <title>Description</title>"
        try:
            print >> file, xmlmenudump.getDiscussion(o)
        except AttributeError:
            print >> file, \
                  "<simpara>MISSING DISCUSSION: Output %s</simpara>" % path
        print >> file, " </refsect1>"

        print >> file, "</refentry>"

    print >> file, "</section>"  # End of Outputs
Exemplo n.º 4
0
def xmldocs(phile):
    # Called by xmldump in problem.py.

    # First, do some bookkeeping 
    ptypedict = {}  # lists of Properties of each PropertyType.
    propdict = {}   # lists of Properties for each equation, field, or flux
    for reg in AllProperties.data.getObjects():
        if reg.secret():
            continue
        ptype = reg.propertyType()
        try:
            ptypedict[ptype].append(reg)
        except KeyError:
            ptypedict[ptype] = [reg]
        # propdict is returned to problem.xmldump so that equations
        # and fluxes can list their relevant properties.
        for eqn in reg.equations():
            try:
                propdict[eqn].append(reg)
            except KeyError:
                propdict[eqn] = [reg]
        for flux in reg.fluxes():
            try:
                propdict[flux].append(reg)
            except KeyError:
                propdict[flux] = [reg]
        for field in reg.fields():
            try:
                propdict[field].append(reg)
            except KeyError:
                propdict[field] = [reg]


    print >> phile, "<section id='Section-Properties'>"
    print >> phile, "<title>Material Properties</title>"
    print >> phile, """
<para>
This is a listing of &properties; by category.  Each &material; may
have at most one &property; from each category.  Follow the links for
more detail about each &property;, including which &fields; it
requires and which &fluxes; and/or &equations; it contributes to.
</para>"""
    print >> phile, "<itemizedlist>"
    ptypes = ptypedict.keys()
    ptypes.sort()
    for ptype in ptypes:
        print >> phile, '<listitem id="PropertyType-%s">' % ptype
        print >> phile, '<para>', ptype
        print >> phile, '<itemizedlist>'
        for reg in ptypedict[ptype]:
            print >> phile, '<listitem><simpara><link linkend="Property-%s">%s</link></simpara></listitem>' % (reg.name().replace(':', '-'), reg.name())
        print >> phile, '</itemizedlist>'
        print >> phile, '</para>'
        print >> phile, '</listitem>'
    print >> phile, '</itemizedlist>'

    # Create a refentry page for each Property
    for reg in AllProperties.data.getObjects():
        if reg.secret():
            continue
        name = reg.name()
        idname = name.replace(':', '-')
        ptype = reg.propertyType()
        xmlmenudump.xmlIndexEntry(name, ptype+" Property", "Property-"+idname)
        print >> phile, '<refentry xreflabel="%s" id="Property-%s" role="Property">' \
            % (name, idname)
        print >> phile, '<refnamediv>'
        print >> phile, '<refname>%s</refname>' % name
        if reg.tip is not parameter.emptyTipString:
            tip = reg.tip or "MISSING PROPERTY TIP STRING for %s" % name
        else:
            tip = ""
        print >> phile, '<refpurpose>%s</refpurpose>' % tip
        print >> phile, '</refnamediv>'
        print >> phile, '<refsect1>'
        print >> phile, '<title>Details</title>'
        print >> phile, '<itemizedlist>'
        # Category
        print >> phile, '<listitem><simpara>'
        print >> phile, 'Property Category: <link linkend="PropertyType-%(t)s">%(t)s</link>' % dict(t=ptype)
        print >> phile, '</simpara></listitem>'
        # Parameters
        print >> phile, '<listitem>'
        print >> phile, '<para>Parameters:'
        print >> phile, '<variablelist>'
        for param in reg.params:
            print >> phile, '<varlistentry>'
            print >> phile, '<term><varname>%s</varname></term>' % param.name
            print >> phile, '<listitem>'
            if param.tip is not parameter.emptyTipString:
                tip = param.tip or "MISSING PROPERTY PARAMETER TIP for %s"%name
            else:
                tip = ""
            print >> phile, '<simpara>%s <emphasis>Type</emphasis>: %s </simpara>'\
                % (tip, param.valueDesc())
            print >> phile, '</listitem>'
            print >> phile, '</varlistentry>'
        print >> phile, '</variablelist>'
        print >> phile, '</para></listitem> <!-- Parameters -->'

        for classname, plural, objlist in [('Field', 'Fields', reg.fields()),
                                 ('Flux', 'Fluxes', reg.fluxes()),
                                 ('Equation', 'Equations', reg.equations())]:
            if objlist:
                print >> phile, '<listitem><simpara>'
                text = ["<link linkend='%s-%s'><varname>%s</varname></link>"
                        % (classname, obj.name(), obj.name())
                        for obj in objlist]
                print >> phile, "%s: %s" % (plural, ", ".join(text))
                print >> phile, '</simpara></listitem>'

        print >> phile, '</itemizedlist>'
        print >> phile, '</refsect1> <!-- Details -->'

        print >> phile, '<refsect1>'
        print >> phile, '<title>Discussion</title>'
        try:
            print >> phile, xmlmenudump.getDiscussion(reg)
        except AttributeError:
            print >> phile, "<para>MISSING PROPERTY DISCUSSION: %s</para>" % name
        print >> phile, '</refsect1> <!-- Discussion -->'
        print >> phile, '</refentry>'

    print >> phile, "</section> <!-- Properties -->"

    return propdict
Exemplo n.º 5
0
def outputDump(file):
    scalars = output.scalarOutputs.getObjects()
    positions = output.positionOutputs.getObjects()
    aggregates = output.aggregateOutputs.getObjects()
    allOutputs = scalars + positions + aggregates
    # # allOutputs contains duplicates...
    # allOutputs.sort(lambda x, y: cmp(x.getPath(), y.getPath()))
    xmlids = {}
    _catalogPaths(scalars, xmlids, 'Output-Scalar-')
    _catalogPaths(positions, xmlids, 'Output-Position-')
    _catalogPaths(aggregates, xmlids, 'Output-Aggregates-')

    print >> file, "<section id='Section-Output'>"
    print >> file, " <title>Outputs</title>"
    print >> file, "<!--this section produced by SRC/engine/IO/xmloutputs.py-->"
    print >> file, """
    <para>
     The <classname>Output</classname> classes provide ways of
     extracting data from <link
     linkend='Section-Concepts-Mesh'>Meshes</link>.  Different kinds
     of <classname>Outputs</classname> produce different kinds of
     data.  <link
     linkend='RegisteredClass-FilledContourDisplay'>Contour
     plots</link>, for example, display the results of a <link
     linkend='Section-Output-Scalar'>Scalar Output</link> at
     locations determined by a <link
     linkend='Section-Output-Position'>Position Output</link>.
    </para>
    <para>
      <classname>Outputs</classname> are used for graphical output by
      some <xref linkend="RegisteredClass-DisplayMethod"/> classes,
      for post-processing on the <link
      linkend="Section-Tasks-Analysis">Analysis</link> and <link
      linkend="Section-Tasks-BdyAnalysis">Boundary Analysis</link> pages,
      and as data for
      <link linkend="MenuItem-OOF.Mesh.Scheduled_Output">scheduled
      outputs</link>.
    </para>
    <para>
     The three categories of outputs are
     <itemizedlist>
      <listitem><para id='Section-Output-Scalar'>
       <classname>ScalarOutputs</classname>:
       These are Outputs whose result is a single number at each evaluation
       point.  They are used as the <varname>what</varname> argument
       in the contour plotting commands, for example.
       <itemizedlist spacing='compact'>
       """
    paths = [(o.getPath(),o) for o in scalars]
    paths.sort()
    for path,o in paths:
        xmlmenudump.xmlIndexEntry(path, "Scalar Output", xmlids[o])
        print >> file, " <listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, "  <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>
      </para></listitem>
      <listitem><para id='Section-Output-Position'>
       <classname>PositionOutputs</classname>:
       These are Outputs whose result is a position.  They are used as the
       <varname>where</varname> argument in plotting commands.
        <itemizedlist spacing='compact'>"""
    paths = [(o.getPath(),o) for o in positions]
    paths.sort()
    for path,o in paths:
        xmlmenudump.xmlIndexEntry(path, "Position Output", xmlids[o])
        print >> file, " <listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, "  <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>
      </para></listitem>
      <listitem><para id='Section-Output-Aggregate'>
       <classname>AggregateOutputs</classname>:

       These are Outputs whose result is a (possibly) multidimensional
       object, such as a &field; or &flux;.
       They are used when interactively querying &mesh; data with the
       <link
       linkend='Section-Graphics-MeshInfo-DataViewer'>Data
       Viewer</link>.  Many of the <link
       linkend='Section-Output-Scalar'><classname>ScalarOutputs</classname></link>
       are also <classname>AggregateOutputs</classname>.
       <itemizedlist spacing='compact'> """
    paths = [(o.getPath(),o) for o in aggregates]
    paths.sort()
    for path,o in paths:
        xmlmenudump.xmlIndexEntry(path, "Aggregate Output", xmlids[o])
        print >> file, "<listitem><simpara><link linkend='%s'>" % xmlids[o]
        print >> file, " <classname>%s</classname>" % path
        print >> file, " </link></simpara></listitem>"
    print >> file, """
       </itemizedlist>

      </para></listitem>
     </itemizedlist>
     
    </para>
    """

    # for i in range(len(allOutputs)):
    #     if i==0 or (allOutputs[i] is not allOutputs[i-1]):
    #         o = allOutputs[i]
    for o,xmlid in xmlids.items():
            path = o.getPath()
            # xmlid = xmlids[path]
            print >> file, "<refentry id='%s' role='Output'>" % xmlid
            print >> file, " <refnamediv>"
            print >> file, "  <refname>%s</refname>" % path
            try:
                print >> file, " <refpurpose>%s</refpurpose>" % xmlmenudump.getHelp(o)
            except AttributeError:
                print >> file, " <refpurpose>MISSING TIP STRING: %s</refpurpose>" % xmlid
            print >> file, " </refnamediv>"
            print >> file, " <refsynopsisdiv>"
            print >> file, "  <title>Output Categories</title>"
            print >> file, "  <itemizedlist spacing='compact'>"
            if o in scalars:
                print >> file, "<listitem><simpara><link linkend='Section-Output-Scalar'><classname>ScalarOutput</classname></link></simpara></listitem>"
            if o in positions:
                print >> file, "<listitem><simpara><link linkend='Section-Output-Position'><classname>PositionOutput</classname></link></simpara></listitem>"
            if o in aggregates:
                print >> file, "<listitem><simpara><link linkend='Section-Output-Aggregate'><classname>AggregateOutput</classname></link></simpara></listitem>"
            print >> file, "  </itemizedlist>"
            print >> file, " </refsynopsisdiv>"
            params = o.getSettableParams().values()
            if params:
                print >> file, " <refsect1>"
                print >> file, "  <title>Parameters</title>"
                print >> file, "  <variablelist>"
                for param in params:
                    xmlmenudump.process_param(param)
                    print >> file, "   <varlistentry>"
                    print >> file, "    <term><varname>%s</varname></term>" \
                          % param.name
                    print >> file, "    <listitem>"
                    try:
                        tip = xmlmenudump.getHelp(param)
                    except AttributeError:
                        tip = "MISSING TIP STRING: %s" % param.name
                    print >> file, "     <simpara>%s <emphasis>Type</emphasis>: %s</simpara>" \
                          % (tip, param.valueDesc())
                    print >> file, "     </listitem>"
                    print >> file, "   </varlistentry>"
                print >> file, "  </variablelist>"
                print >> file, " </refsect1>"
            print >> file, " <refsect1>"
            print >> file, "  <title>Description</title>"
            try:
                print >> file, xmlmenudump.getDiscussion(o)
            except AttributeError:
                print >> file, \
                      "<simpara>MISSING DISCUSSION: Output %s</simpara>" % path
            print >> file, " </refsect1>"
            
            print >> file, "</refentry>"
            
    print >> file, "</section>"         # End of Outputs 
Exemplo n.º 6
0
def xmldump(phile):
    print >> phile, "<section id='Section-Builtin'>"
    print >> phile, " <title>Built-In Physics: Fields, Fluxes, Equations, and Properties</title>"
    print >> phile, """<para>
    &oof2; is designed to be extendible, so it is easy to add new
    &properties;, &fields;, &fluxes;, and &equations;.  That means
    that the following lists of <emphasis>built-in</emphasis>
    objects may not be complete.  </para>"""

    # Property documentation.  propdict is a dictionary listing the
    # Properties that contribute to each Equation and Flux, or use
    # each Field.
    propdict = propertyregistration.xmldocs(phile)

    # Fields
    print >> phile, "<section id='Section-Fields'>"
    print >> phile, "<title>Fields</title>"
    print >> phile, """<para>

This list contains all of the predefined &fields; in &oof2;.  Click on
a &field; to see a brief description and a list of all &properties;
that use the &field;.

</para>"""
    print >> phile, "<itemizedlist>"
    # List of Fields.
    for fld in field.allCompoundFields.values():
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Field-%s'><varname>%s</varname></link>"\
            % (fld.name(), fld.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Field.
    for fld in field.allCompoundFields.values():
        name = fld.name()
        xmlmenudump.xmlIndexEntry(name, 'Field', 'Field-%s' % name)
        print >> phile, "<refentry xreflabel='%s' id='Field-%s'>" % (name, name)
        print >> phile, " <refnamediv>"
        print >> phile, "  <refname>%s</refname>" % name
        print >> phile, "  <refpurpose></refpurpose>"
        print >> phile, " </refnamediv>"
        print >> phile, " <refsect1>"
        print >> phile, "  <title>Details</title>"
        print >> phile, "  <itemizedlist>"
        print >> phile, "   <listitem><simpara>"
        print >> phile, "     Class: <classname>%s</classname>" % fld.__class__.__name__
        print >> phile, "   </simpara></listitem>"
        print >> phile, "   <listitem><simpara>"
        print >> phile, "     Dimension: ", fld.ndof()
        print >> phile, "   </simpara></listitem>"

        try:
            properties = propdict[fld]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><para>"
            print >> phile, "<varname>%s</varname> is used by the following &properties;:" % name
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':', '-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "</para></listitem>"
            
        print >> phile, "  </itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"

        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file("DISCUSSIONS/engine/builtin/field-%s.xml" % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISCUSSION for %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1>"
        print >> phile, "</refentry> <!-- %s -->" % fld.name()
    print >> phile, "</section> <!-- Fields -->"

    # Fluxes
    print >> phile, "<section id='Section-Fluxes'>"
    print >> phile, "<title>Fluxes</title>"
    print >> phile, """<para>
This list contains all of the predefined &fluxes; in &oof2;.  Click on
a &flux; to see a brief description and a list of all &properties;
that contribute to the &flux;.
</para>"""
    # List of Fluxes
    print >> phile, "<itemizedlist>"
    for flx in flux.allFluxes:
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Flux-%s'><varname>%s</varname></link>"\
            % (flx.name(), flx.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Flux
    for flx in flux.allFluxes:
        name = flx.name()
        xmlmenudump.xmlIndexEntry(name, 'Flux', 'Flux-%s' % name)
        print >> phile, "<refentry xreflabel='%s' id='Flux-%s'>" % (name, name)
        print >> phile, "<refnamediv>"
        print >> phile, "<refname>%s</refname>" % name
        print >> phile, "<refpurpose></refpurpose>"
        print >> phile, "</refnamediv>"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Details</title>"
        print >> phile, "<itemizedlist>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Class: <classname>%s</classname>" % (
            flx.__class__.__name__[:-3]) # strip 'Ptr'
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Dimension: ", flx.ndof()
        print >> phile, "</simpara></listitem>"
        try:
            properties = propdict[flx]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><simpara>"
            print >> phile, "The following &properties; contribute to <varname>%s</varname>:" % name
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':', '-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "</simpara></listitem>"

        print >> phile, "</itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file('DISCUSSIONS/engine/builtin/flux-%s.xml' % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISSCUSSION FOR %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1> <!--Description-->"
        print >> phile, "</refentry>"
    print >> phile, "</section> <!-- Fluxes -->"

    print >> phile, "<section id='Section-Equations'>"
    print >> phile, "<title>Equations</title>"
    print >> phile, """<para>
This is a list of all of the predefined &equations; in &oof2;.  Click
on an &equation; to see a description and a list of all &properties;
that contribute to the &equation;.
</para>"""
    # List of Equations
    print >> phile, "<itemizedlist>"
    for eqn in equation.allEquations:
        print >> phile, "<listitem><simpara>"
        print >> phile, "<link linkend='Equation-%s'><varname>%s</varname></link>" % (eqn.name(), eqn.name())
        print >> phile, "</simpara></listitem>"
    print >> phile, "</itemizedlist>"
    # Reference page for each Equation
    links = {'PlaneFluxEquation' : 'Section-Concepts-Mesh-Equation-PlaneFlux',
             'DivergenceEquation' : 'Section-Concepts-Mesh-Equation-Divergence'}
    for eqn in equation.allEquations:
        name = eqn.name()
        xmlmenudump.xmlIndexEntry(name, 'Equation', 'Equation-%s' % name)
        classname = eqn.__class__.__name__[:-3] # strip off 'Ptr'
        print >> phile, "<refentry xreflabel='%s' id='Equation-%s'>" % (
            name, name)
        print >> phile, "<refnamediv>"
        print >> phile, "<refname>%s</refname>" % name
        print >> phile, "<refpurpose></refpurpose>"
        print >> phile, "</refnamediv>"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Details</title>"
        print >> phile, "<itemizedlist>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Type: <link linkend='%s'><classname>%s</classname></link>" % (links[classname], classname)
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Flux: <link linkend='Flux-%s'><varname>%s</varname></link>" % (eqn.fluxname(), eqn.fluxname())
        print >> phile, "</simpara></listitem>"
        print >> phile, "<listitem><simpara>"
        print >> phile, "Dimension:", eqn.ndof()
        print >> phile, "</simpara></listitem>"
        try:
            properties = propdict[eqn]
        except KeyError:
            pass
        else:
            print >> phile, "<listitem><simpara>"
            print >> phile, "The following &properties; make direct contributions to this &equation;:"
            print >> phile, "<itemizedlist>"
            for prop in properties:
                print >> phile, "<listitem><simpara>"
                print >> phile, "<xref linkend='Property-%s'/>" % (
                    prop.name().replace(':','-'))
                print >> phile, "</simpara></listitem>"
            print >> phile, "</itemizedlist>"
            print >> phile, "Other &properties; make indirect contributions to the &equation; through the <link linkend='Flux-%s'><classname>%s</classname></link>." % (eqn.fluxname(), eqn.fluxname())
            print >> phile, "</simpara></listitem>"
        print >> phile, "</itemizedlist>"
        print >> phile, "</refsect1> <!-- Details -->"
        print >> phile, "<refsect1>"
        print >> phile, "<title>Description</title>"
        try:
            src = file("DISCUSSIONS/engine/builtin/eqn-%s.xml" % name, "r")
        except IOError:
            print >> phile, "<para>MISSING DISCUSSION FOR %s</para>" % name
        else:
            print >> phile, src.read()
            src.close()
        print >> phile, "</refsect1> <!-- Description-->"
        
        print >> phile, "</refentry>"
        
    print >> phile, "</section> <!-- Equations -->"

    print >> phile, "</section> <!-- Built-In Physics -->"