Spaces:
Paused
Paused
File size: 2,938 Bytes
2ab7cb8 1feac69 2ab7cb8 1feac69 2ab7cb8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
import pyvista as pv
import sys
import numpy as np
import time
points = []
types = []
file = "pressure_buffer.txt"
file = "position_buffer.txt"
if len(sys.argv) == 2:
file = sys.argv[1]
colours = {1.1: "lightblue", 2.1: "green", 2.2: "turquoise", 3: "#eeeeee"}
colours = {1.1: "blue", 2.2: "turquoise"}
line_count = 0
pcount = 0
all_points = []
all_point_types = []
time_count = 0
logStep = None
include_boundary = False
for l in open(file):
ws = l.split()
#print(ws)
if line_count == 6:
numOfElasticP = int(ws[0])
if line_count == 7:
numOfLiquidP = int(ws[0])
if line_count == 8:
numOfBoundaryP = int(ws[0])
if line_count == 9:
timeStep = float(ws[0])
if line_count == 10:
logStep = int(ws[0])
if len(ws) == 4:
type = float(ws[3])
if not (type == 3 and not include_boundary):
points.append([float(ws[0]), float(ws[1]), float(ws[2])])
types.append(type)
if logStep is not None:
pcount+=1
if pcount==numOfBoundaryP+numOfElasticP+numOfLiquidP:
print('End of one batch of %i added, %i total points at line %i, time: %i'%(len(points),pcount, line_count, time_count))
all_points.append(points)
all_point_types.append(types)
points = []
types=[]
pcount = 0
numOfBoundaryP=0
time_count+=1
line_count += 1
#all_points_np = np.array(all_points)
print(f"Loaded positions with %i elastic, %i liquid and %i boundary points (%i total), %i lines"%(numOfElasticP,numOfLiquidP, numOfBoundaryP,numOfElasticP+numOfLiquidP+numOfBoundaryP, line_count))
print("Num of time points found: %i"%len(all_points))
pl = pv.Plotter()
pl.set_background("lightgrey")
pl.camera.position = (300, 100, -100.0)
pl.camera.focal_point = (50,0,100)
pl.camera.up = (0.0, 1.0, 0.0)
#pl.add_axes_at_origin(labels_off=False)
#pl.add_mesh(pv.Cube(center=(50,0,50)))
last_mesh = None
def create_mesh(step):
step_count = step
value=step_count
global last_mesh
index = int(value)
print('Changing to time point: %s (%s) '%(index,value))
curr_points = all_points[index]
curr_types = all_point_types[index]
if last_mesh is None:
last_mesh = pv.PolyData(curr_points)
last_mesh["types"] = curr_types
print(last_mesh)
last_actor = pl.add_mesh(
last_mesh,
render_points_as_spheres=True,
cmap=[c for c in colours.values()],
point_size=3,
)
else:
last_mesh.points = curr_points
pl.render()
time.sleep(0.01)
return
create_mesh(0)
max_time = len(all_points)-1
pl.add_slider_widget(create_mesh, rng=[0,max_time], value=max_time, title='Time point')
pl.add_timer_event( max_steps=len(all_points), duration=200, callback=create_mesh)
pl.show()
|