queries/pickNamedArgs.py# ----------------------------------------------------------------------------
# CLASSES: nightly
#
# Test Case: pickNamedArgs.py #
# Tests: queries - Pick using named-arguments
# Pick using query results as arguments
#
# Defect ID: 1781
#
# Programmer: Kathleen Biagas
# Date: July 11, 2014
#
# Modifications:
# Kathleen Biagas, Tue Jul 22 11:51:27 MST 2014
# Added Pick_ByGlobalId.
#
# Kathleen Biagas, Wed Aug 28 09:04:00 MST 2019
# Turn off cycling of colors for all Curve plot tests. Set the colors
# individually to match current baseline results.
#
# ----------------------------------------------------------------------------
def TimePick():
OpenDatabase(silo_data_path("wave.visit"))
AddPlot("Pseudocolor", "pressure")
DrawPlots()
# to demonstrate the effect of changing time options, use timestep for x axis.
q = GetQueryOverTimeAttributes()
q.timeType = q.Timestep
SetQueryOverTimeAttributes(q)
# Controlling which time steps are queried, showing defaults used
# stride => int default: 1
# start_time => int default: 0 (min time index)
# end_time => int default: max time index, as determined from DB
# Controlling the plot type when multiple vars are queried
# curve_plot_type: 0 (Single Y Axis), or 1 (Multiple Y Axes) default: 0
# Which is used for subsequent timesteps, the coordinate or the element?
# preserve_coord: 0 (use the element) or 1 (use the coordinate)
c = CurveAttributes()
c.curveColorSource = c.Custom
c.curveColor = (255, 0, 0, 255)
SetDefaultPlotOptions(c)
vars =("pressure", "v", "direction_magnitude")
PickByNode(element=8837, vars=vars, do_time=1, preserve_coord=0,curve_plot_type=0)
SetActiveWindow(2);
Test("TimePick_NamedArgs_00")
# this test and NamedArgs_03 using curve type 1 should return same values
PFirstYVal = 0.019999999552965164
VFirstYVal = 0.0010749432258307394
firstYVal=GetPlotInformation()["Curves"]["pressure"][1]
TestValueEQ("Curve type 0, pressure first value", firstYVal, PFirstYVal, 14)
firstYVal=GetPlotInformation()["Curves"]["v"][1]
TestValueEQ("Curve type 0, v first value", firstYVal, VFirstYVal, 14)
DeleteAllPlots()
c.curveColor = (0, 255, 0, 255)
SetDefaultPlotOptions(c)
SetActiveWindow(1)
PickByNode(element=8837, vars=vars, do_time=1, preserve_coord=0,curve_plot_type=0,start_time=15, end_time=50, stride=7)
SetActiveWindow(2);
Test("TimePick_NamedArgs_01")
DeleteAllPlots()
c.curveColor = (0, 0, 255, 255)
SetDefaultPlotOptions(c)
SetActiveWindow(1)
# different way for specifying time options, result should be same as previopus:
time_opt = {'stride':7, 'start_time': 15, 'end_time':50}
PickByNode(element=8837, vars=vars, do_time=1, preserve_coord=0, time_options=time_opt)
SetActiveWindow(2);
Test("TimePick_NamedArgs_02")
DeleteAllPlots()
SetActiveWindow(1)
PickByNode(element=8837, vars=vars, do_time=1, preserve_coord=0,curve_plot_type=1)
SetActiveWindow(2);
Test("TimePick_NamedArgs_03")
# these should be the same as TimePick_NamedArgs_00
firstYVal=GetPlotInformation()["Curves"]["pressure"][1]
TestValueEQ("Curve type 1, pressure first value", firstYVal, PFirstYVal, 14)
firstYVal=GetPlotInformation()["Curves"]["v"][1]
TestValueEQ("Curve type 1, v first value", firstYVal, VFirstYVal, 14)
DeleteAllPlots()
SetActiveWindow(1);
PickByNode(element=8837, vars=vars, do_time=1, preserve_coord=0,curve_plot_type=1,stride=10)
SetActiveWindow(2);
Test("TimePick_NamedArgs_04")
DeleteAllPlots()
SetActiveWindow(1)
DeleteAllPlots()
CloseDatabase(silo_data_path("wave.visit"))
def PickUsingQueryResults():
ResetPickLetter()
OpenDatabase(silo_data_path("wave.visit"))
AddPlot("FilledBoundary", "Material")
SetTimeSliderState(31)
DrawPlots()
# Make it easier to get coordinate values
SetQueryOutputToValue()
s = "Pick using results of Node Coords query:\n"
node_8837_coords = Query("Node Coords", element=8837)
# Now test that NodePick using those coords will return the correct node id
# Utilizes named args: coord (a tuple containing spatial coordinates)
pick_out = NodePick(coord=node_8837_coords)
if pick_out['node_id'] == 8837:
s = s + " NodePick with coordinate succeeded.\n"
else:
s = s + " NodePick with coordinate failed to return correct node id.\n"
s = "Pick using results of Zone Center query:\n"
# select a zone that is incident to node 8837
adjacent_zone = pick_out['incident_zones'][0]
# Get it's coords and try a pick
adjacent_zone_coords = Query("Zone Center", element=adjacent_zone)
pick_out = ZonePick(coord=adjacent_zone_coords)
if pick_out['zone_id'] == adjacent_zone:
s = s + " ZonePick with coordinate succeeded.\n"
else:
s = s + " ZonePick with coordinate failed to return correct node id\n"
# Now, does Pick report that our original node id is incident to the picked zone?
if 8837 in pick_out['incident_nodes']:
s = s + " ZonePick correctly reported incident node\n"
else:
s = s + " ZonePick failed to correctly report incident node\n"
DeleteAllPlots()
CloseDatabase(silo_data_path("wave.visit"))
OpenDatabase(silo_data_path("multi_rect3d.silo"))
# d is zonal quantity, so picks will be by-zone
AddPlot("Pseudocolor", "d")
DrawPlots()
# Change query output type for parse-ability of MinMax results
SetQueryOutputToObject()
# Do a MinMax query, and use the results to drive a pick.
res = Query("MinMax")
s = s + "\nQuery for MinMax of 'd': \n" + GetQueryOutputString()
s = s + "Pick using results of MinMax Query:\n\n"
# Pick using MinMax results
# Utilizes named args:
# domain (an integer),
# element (an integer representing node id or zone id depending on the type of Pick)
pick_out = PickByZone(domain=res['min_domain'], element=res['min_element_num'])
s = s + "Pick for zone at 'd' minimum: \n" + GetPickOutput()
pick_out = PickByZone(domain=res['max_domain'], element=res['max_element_num'])
s = s + "Pick for zone at 'd' maximum: \n" + GetPickOutput()
TestText("Pick_UsingQueryResults", s)
ResetPickLetter()
DeleteAllPlots()
CloseDatabase(silo_data_path("multi_rect3d.silo"))
def doGlobalPicks(centering):
s = "Global node pick on %s_centered data:\n\n" %centering
d = PickByGlobalNode(element=246827)
# use json.dumps for dictionary object, makes for easier parsing
# of diffs when there are errors
s = s + "dictionary output:\n" + json.dumps(d,indent=2) + "\n\n"
s = s + "string output: " + GetPickOutput() + "\n\n"
s = s + "\nGlobal zone pick on %s_centered data:\n\n" %centering
d = PickByGlobalZone(element=237394)
s = s + "dictionary output:\n" + json.dumps(d,indent=2) + "\n\n"
s = s + "string output: " + GetPickOutput() + "\n\n"
return s
def PickByGlobalElement():
OpenDatabase(silo_data_path("global_node.silo"))
AddPlot("Pseudocolor", "dist")
DrawPlots()
ResetView()
p = GetPickAttributes()
p.showGlobalIds = 0
SetPickAttributes(p)
s = "NOT SHOWING GLOBAL IDS\n\n"
s = s + doGlobalPicks("node")
# Repeat, showing global ids
p.showGlobalIds = 1
SetPickAttributes(p)
s = s + "SHOWING GLOBAL IDS\n\n"
s = s + doGlobalPicks("node")
p.showGlobalIds = 0
SetPickAttributes(p)
# now use a zone-centered var
ChangeActivePlotsVar("p")
s = s + "NOT SHOWING GLOBAL IDS\n\n"
s = s + doGlobalPicks("zone")
# Repeat, showing global ids
p.showGlobalIds = 1
SetPickAttributes(p)
s = s + "SHOWING GLOBAL IDS\n\n"
s = s + doGlobalPicks("zone")
TestText("Pick_ByGlobalElement", s)
# cleanup
p.showGlobalIds = 0
SetPickAttributes(p)
DeleteAllPlots()
ResetPickLetter()
TimePick()
PickUsingQueryResults()
PickByGlobalElement()
Exit()