.. _cape-json-ReportTecplot:

Tecplot Layout Subfigure
----------------------------
The ``"Tecplot"`` class of subfigure is used to set up *Tecplot* to open a
layout within each solution folder and attempt to export a figure.  There are
advanced options that instruct Cape to edit the layout file.  These values can
utilize the value of any trajectory key using sigils.  For example, the
following *ColorMap* instruction sets the Mach 0.0 color to ``"darkpurple"``,
the maximum Mach number color to ``"darkorange"``, a sharp purple-to-green
border at Mach 1.0, and the freestream Mach number to ``"white"``.

    .. code-block:: javascript
    
        "ColorMap": {
            "0.0": "darkpurple",
            "1.0": ["#b55fbf", "green"],
            "$mach": "white",
            "max(1.1,1.4*$mach)": "darkorange"
        }
            
Colors are interpreted by :mod:`cape.color`.  The value for ``$mach`` is
determined from the case number and the current
:class:`cape.runmatrix.RunMatrix` for the run configuration.  If *mach* is
not a trajectory key of the current run matrix, this specification will fail.

The full list of options is shown below.

    *S*: :class:`dict`
        Dictionary of settings for *Tecplot* subfigure
        
        *Type*: {``"Tecplot"``} | :class:`str`
            Subfigure type
            
        *Header*: {``""``} | :class:`str`
            Heading placed above subfigure (bold, italic)
            
        *Position*: ``"t"`` | ``"c"`` | {``"b"``}
            Vertical alignment of subfigure
            
        *Alignment*: ``"left"`` | {``"center"``}
            Horizontal alignment
            
        *Width*: {``0.5``} | :class:`float`
            Width of subfigure as a fraction of page text width
            
        *FigWidth*: {``1024``} | :class:`int`
            Width of the image generated by *Tecplot* in pixels
        
        *VarSet*: {``{}``} | :class:`dict`
            Dictionary of *Tecplot* variable values to set within layout file
            
        *ContourLevels*: {``[]``} | [*CL*] | :class:`list` (:class:`dict`)
            List of min, max, and delta values for contours; used to change
            limits for different solutions
            
        *ColorMaps*: {``[]``} | [*CM*] | :class:`list` (:class:`dict`
            List of color map dictionaries; used to change coloration for
            different solutions
            
The full set of options for the dictionaries used in *ContourLevels* is shown
below.

    *CL*: :class:`dict`
        Dictionary of *ContourLevel* settings for some conditions
        
        *NContour*: :class:`int`
            Index of *Tecplot* color map to alter
            
        *Constraints*: {``None``} | :class:`list` (:class:`str`)
            List of constraints to describe which cases these instructions
            should be applied to
            
        *MinLevel*: :class:`float` | :class:`str`
            Value of lower limit of minimum of contour level or Python text to
            :func:`eval` after substituting sigils
        
        *MaxLevel*: :class:`float` | :class:`str`
            Value of upper limit of minimum of contour level or Python text to
            :func:`eval` after substituting sigils
        
        *Delta*::class:`float` | :class:`str`
            Value of interval between contours or Python text to :func:`eval`
            after substituting sigils
            
The full set of options for the dictionaries used in *ColorMaps* is shown
below.

    *CM*: :class:`dict`
        Dictionary of *ColorMap* settings for some conditions
        
        *NContour*: :class:`int`
            Index of *Tecplot* color map to alter
            
        *Constraints*: {``None``} | :class:`list` (:class:`str`)
            List of constraints to describe which cases these instructions
            should be applied to
        
        *ColorMap*: :class:`dict`
            Dictionary of colors (or pair of colors if inserting a sharp color
            boundary) at specified values of the contour variable