Use Expression in VisIt

Create Expressions

To create expressions from GUI: click from menu Controls->Expressions, the “Expressions” dialog will appear, click “New” button from the bottom of the left side panel, then at the right side panel, give the new expression a name, indicate it’s data type, and define its mathematical equation using the help from “Insert Function...” and “Insert Variable...” buttons. click Apply.

_images/new_expression.png

Defer Expression Evaluation

For example, I have a large dataset which contains a scalar variable called “fr9373”. I want to do some de-noising before a volume rendering. I define two new scalars called “f” and “sf”, to do median filter and gaussian filtering separately. Because the dataset is large, I want to apply a box operator, so the volume rendering only render a subset of the whole dataset. After adding a volume rendering plot to scalar “fr9373”, I first add a box operator, then apply a deferred expression and set its variable to “f” or “sf”, then draw the plot. This way, the de-noise filter will only be applied after the Box operator, thus “deferred”.

Python code example:

import visit
import sys


database = "fr9373.*.bov database"


OpenDatabase(database)

DefineScalarExpression("f", "median_filter(fr9373)")
DefineScalarExpression("sf", "conservative_smoothing(fr9373)")


AddPlot("Volume", "fr9373", 1, 1)

AddOperator("Box", 1)
BoxAtts = BoxAttributes()
BoxAtts.amount = BoxAtts.Some
BoxAtts.minx = 460
BoxAtts.maxx = 1220
BoxAtts.miny = 0
BoxAtts.maxy = 1120
BoxAtts.minz = 0
BoxAtts.maxz = 512
SetOperatorOptions(BoxAtts, 1)

AddOperator("DeferExpression", 1)
DeferExpressionAtts = DeferExpressionAttributes()
DeferExpressionAtts.exprs = ("sf")
SetOperatorOptions(DeferExpressionAtts, 1)


DrawPlots()
SaveWindow()

DeleteAllPlots()
CloseDatabase(database)

sys.exit()