-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
executable file
·96 lines (67 loc) · 2.75 KB
/
main.py
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
import sys
import cProfile
from numpy import array
import math
from fluidsim.fluidSim import VortonSim
from fluidsim import vorticityDistribution
class GLUTVis:
def __init__(self, viscosity , density ):
self.fluidSim = VortonSim( viscosity , density ) #Simulation of fluid
self.renderWindow = 0 #Identifier for render window
self.frame = 0 #Frame counter
self.timeNow = 0.0 #Current virtual time
self.initialised = False #Whether the app has been initialised
self.mouseButtons = [0,0,0]
self.initialiseSimConditions()
self.timeStep = 1.0 / 30.0
def initialiseSimConditions(self):
# Setup the initial conditions for the simulation
self.frame = 0
self.timeNow = 0.0
self.fluidSim.clear()
fRadius = 1.0
fThickness = 1.0
fMagnitude = 20.0
numCellsPerDim = 16
numVortonsMax = numCellsPerDim * numCellsPerDim * numCellsPerDim
numTracersPer = 3.0
vortons = self.fluidSim.getVortons()
vorticityDistribution.assignVorticity( vortons , fMagnitude , numVortonsMax , vorticityDistribution.JetRing( fRadius , fThickness , array( [2.0 , 0.0 , 0.0] ) ),array([ 0.0 , 0.0 , 0.0 ]) )
self.fluidSim.initialise( numTracersPer )
#print "printing vorts"
#for vort in vortons:
#vort.dumpSelf()
#print "dumping influence tree"
#self.fluidSim.influenceTree.dumpSelf()
def addVortons(self):
fRadius = 1.0
fThickness = 1.0
fMagnitude = 20.0
numCellsPerDim = 16
numVortonsMax = numCellsPerDim * numCellsPerDim * numCellsPerDim
vortons = self.fluidSim.getVortons()
vorticityDistribution.assignVorticity( vortons , fMagnitude , numVortonsMax , vorticityDistribution.JetRing( fRadius , fThickness , array( [-2.0 , 0.0 , 0.0] ) ),array([ 12.0 , 0.0 , 0.0 ]) )
''' Move sim forward in time.
'''
def stepForward(self):
self.fluidSim.update( self.timeStep , self.frame )
self.frame += 1
self.timeNow += self.timeStep
def endSim(self):
self.fluidSim.simWF.endWork()
if __name__ == "__main__":
print("starting")
glsim = GLUTVis(0.05, 1.0)
#print glsim
#vorts = glsim.fluidSim.getVortons()
#for tracer in glsim.fluidSim.tracers:
#print tracer.position, tracer.velocity
#glsim.initialiseDisplay()
for i in range(20):
glsim.stepForward()
#if i == 200:
# glsim.addVortons()
#glsim.endSim()
#cProfile.runctx("glsim.fluidSim.update(1.0/60.0, 1)", globals(), locals(), "/tmp/fs.profile")
#glsim.fluidSim.update(1.0/60.0, 1)
#print vorts