Line¶
Description¶
Interpolate data over a line using the VTK library.
Parameters¶
- base:
Base
The input base containing the data to extract over the line.
- base:
- coordinates: list(str)
The variable names that define the set of coordinates. If no value is given, the default coordinate system of the base is used (see
Base.coordinate_names
).
- point1: tuple(float)
The coordinates of the starting point of the line.
- point2: tuple(float)
The coordinates of the end point of the line.
- nbpoints: int
Number of points on the line.
- memory_mode: bool, default= False
If True, the initial base is deleted on the fly to limit memory usage.
- mask: bool, default= True
If False, the points that were not interpolated on the ‘ line are not deleted in the output base.
- probe_tolerance: int in [0, …, 14], default= 0
If different from 0, then set the VTK probe tolerance. Increasing probe tolerance could be really expensive.
- sampling: str, default= ‘uniform’
If “uniform” the line is discretized using the nbpoints keyword. If “cell boundaries”, the points are automatically calculated as the interception between the line and the cell boundaries.
Preconditions¶
Postconditions¶
The output base will only contain data located at nodes.
Example¶
import antares
myt = antares.Treatment('line')
myt['base'] = base
myt['coordinates'] = ['x', 'y', 'z']
myt['point1'] = [0.0, 0.0, 0.0]
myt['point2'] = [1.0, 1.0, 1.0]
myt['nbpoints'] = 100
line = myt.execute()
Main functions¶
Example¶
import os
if not os.path.isdir("OUTPUT"):
os.makedirs("OUTPUT")
from antares import Reader, Treatment, Writer
# ------------------
# Reading the files
# ------------------
reader = Reader("bin_tp")
reader["filename"] = os.path.join(
"..", "data", "ROTOR37", "GENERIC", "flow_<zone>_ite0.dat"
)
base = reader.read()
print(base)
base.compute_coordinate_system(current_coord_sys=["x", "y", "z"])
base.coordinate_names = ["x", "r", "theta"]
# ------------------
# Define line
# ------------------
nb = 20
p1 = [-10.0, 180.0, 0.0]
p2 = [95.0, 180.0, 0.34]
# ------------------------
# Interpolate on the line
# ------------------------
line = Treatment("line")
line["base"] = base
line["point1"] = p1
line["point2"] = p2
line["nbpoints"] = nb
line["memory_mode"] = True
line["mask"] = True
# line['probe_tolerance'] = 10
new_base = line.execute()
print(new_base)
print(new_base[0])
print(new_base[0][0])
# ------------------------
# Write result
# ------------------------
w = Writer("column")
w["base"] = new_base
w["filename"] = os.path.join("OUTPUT", "ex_line.dat")
w.dump()