In [1]:
%matplotlib inline
import numpy as np
import math
import random
import pyJHTDB
import matplotlib.pyplot as plt
import time as tt
N = 3
T = pyJHTDB.dbinfo.channel5200['time'][-1]
time = np.random.random()*T
spatialInterp = 6 # 6 point Lagrange
temporalInterp = 0 # no time interpolation
FD4Lag4 = 44 # 4 point Lagrange interp for derivatives
# mhdc has starttime .364 and endtime .376
startTime = time
endTime = startTime + 0.012
lag_dt = 0.0004
# Select points in the database to query
lpoints = []
for i in range(0,N):
lpoints.append([random.uniform(0, 8*3.14),random.uniform(-1, 1),random.uniform(0, 3*3.14)])
# 2D array with single precision values
points = np.array(lpoints,dtype='float32')
In [2]:
# load shared library
lTDB = pyJHTDB.libJHTDB()
#initialize webservices
lTDB.initialize()
#Add token
auth_token = "edu.jhu.pha.turbulence.testing-201311" #Replace with your own token here
lTDB.add_token(auth_token)
print('Coordinates of {0} points where variables are requested:'.format(N))
for p in range(N):
print('{0}: {1}'.format(p, points[p]))
print('Data is requested at time {0}'.format(time))
In [3]:
print('Requesting velocity at {0} points...'.format(N))
result = lTDB.getData(time, points,data_set = 'channel',
sinterp = spatialInterp, tinterp = temporalInterp,
getFunction = 'getVelocity')
for p in range(N):
print('{0}: {1}'.format(p, result[p]))
In [4]:
print('Requesting pressure at {0} points...'.format(N))
result = lTDB.getData(time, points,data_set = 'channel',
sinterp = spatialInterp, tinterp = temporalInterp,
getFunction = 'getPressure')
for p in range(N):
print('{0}: {1}'.format(p, result[p]))
In [5]:
print('Requesting velocity and pressure at {0} points...'.format(N))
result = lTDB.getData(time, points,data_set = 'channel',
sinterp = spatialInterp, tinterp = temporalInterp,
getFunction = 'getVelocityAndPressure')
for p in range(N):
print('{0}: {1}'.format(p, result[p]))
In [6]:
print('Requesting velocity gradient at {0} points...'.format(N))
result = lTDB.getData(time, points,
sinterp = FD4Lag4, tinterp = temporalInterp,data_set ='channel',
getFunction = 'getVelocityGradient')
for p in range(N):
print('{0}: '.format(p) +
'duxdx = {0:+e}, duxdy = {1:+e}, duxdz = {2:+e}\n '.format(result[p][0], result[p][1], result[p][2]) +
'duydx = {0:+e}, duydy = {1:+e}, duydz = {2:+e}\n '.format(result[p][3], result[p][4], result[p][5]) +
'duzdx = {0:+e}, duzdy = {1:+e}, duzdz = {2:+e}'.format(result[p][6], result[p][7], result[p][8]))
In [7]:
print('Requesting velocity hessian at {0} points...'.format(N))
result = lTDB.getData(time, points,data_set = 'channel',sinterp = FD4Lag4, tinterp = temporalInterp,
getFunction = 'getVelocityHessian')
for p in range(N):
print('{0}: '.format(p) +
'd2uxdxdx = {0:+e}, d2uxdxdy = {1:+e}, d2uxdxdz = {2:+e}\n '.format(result[p][ 0], result[p][ 1], result[p][ 2])
+ 'd2uxdydy = {0:+e}, d2uxdydz = {1:+e}, d2uxdzdz = {2:+e}\n '.format(result[p][ 3], result[p][ 4], result[p][ 5])
+ 'd2uydxdx = {0:+e}, d2uydxdy = {1:+e}, d2uydxdz = {2:+e}\n '.format(result[p][ 6], result[p][ 7], result[p][ 8])
+ 'd2uydydy = {0:+e}, d2uydydz = {1:+e}, d2uydzdz = {2:+e}\n '.format(result[p][ 9], result[p][10], result[p][11])
+ 'd2uzdxdx = {0:+e}, d2uzdxdy = {1:+e}, d2uzdxdz = {2:+e}\n '.format(result[p][12], result[p][13], result[p][14])
+ 'd2uzdydy = {0:+e}, d2uzdydz = {1:+e}, d2uzdzdz = {2:+e}'.format(result[p][15], result[p][16], result[p][17]))
In [8]:
print('Requesting velocity laplacian at {0} points...'.format(N))
result = lTDB.getData(time, points,
sinterp = FD4Lag4, tinterp = temporalInterp, data_set = 'channel',
getFunction = 'getVelocityLaplacian')
for p in range(N):
print('{0}: '.format(p) +
'grad2ux = {0:+e}, grad2uy = {1:+e}, grad2uz = {2:+e}, '.format(result[p][0], result[p][1], result[p][2]))
In [9]:
print('Requesting pressure gradient at {0} points...'.format(N))
result = lTDB.getData(time, points,
sinterp = FD4Lag4, tinterp = temporalInterp, data_set = 'channel',
getFunction = 'getPressureGradient')
for p in range(N):
print('{0}: '.format(p)
+ 'dpdx = {0:+e}, dpdy = {1:+e}, dpdz = {2:+e}, '.format(result[p][0], result[p][1], result[p][2]))
In [10]:
print('Requesting pressure hessian at {0} points...'.format(N))
result = lTDB.getData(time, points,
sinterp = FD4Lag4, tinterp = temporalInterp, data_set = 'channel',
getFunction = 'getPressureHessian')
for p in range(N):
print('{0}: '.format(p) +
'd2pdxdx = {0:+e}, d2pdxdy = {1:+e}, d2pdxdz = {2:+e}\n '.format(result[p][0], result[p][1], result[p][2])
+ 'd2pdydy = {0:+e}, d2pdydz = {1:+e}, d2pdzdz = {2:+e}'.format(result[p][3], result[p][4], result[p][5]))
In [11]:
print('Requesting pressure hessian at {0} points...'.format(N))
result = lTDB.getData(time, points,
sinterp = FD4Lag4, tinterp = temporalInterp, data_set = 'channel',
getFunction = 'getInvariant')
for p in range(N):
print('{0}: '.format(p) +
'S2 = {0:+e}, O2 = {1:+e}'.format(result[p][0], result[p][1]))
In [12]:
result = lTDB.getThreshold(
data_set = 'channel',
field = 'vorticity',
time = 0,
threshold = 65,
x_start = 1, y_start = 1, z_start = 1,
x_end = 4, y_end = 4, z_end = 4,
sinterp = 40,
tinterp = 0)
for p in range(result.shape[0]):
print('{0}: '.format(p)
+ 'i_x = {0}, i_y = {1}, i_z = {2}, value = {3} '.format(result[p][0], result[p][1], result[p][2],result[p][3]))
In [13]:
start = tt.time()
result = lTDB.getCutout(
data_set = 'channel',
field='u',
time_step=int(1),
start = np.array([1, 1, 1], dtype = np.int),
end = np.array([512, 512, 1], dtype = np.int),
step = np.array([1, 1, 1], dtype = np.int),
filter_width = 1)
#print(result)
end = tt.time()
print(end - start)
In [14]:
print(result.shape)
fig = plt.figure(figsize = (20, 40))
a = fig.add_subplot(121)
#a.set_axis_off()
a.imshow(result[0,:,:,0],
extent = [0, 3.14, 0, 2],
interpolation = 'none')
Out[14]:
In [15]:
x, t = lTDB.getPosition(
starttime = 0.1,
endtime = 0.2,
dt = 0.01,
data_set = 'channel',
point_coords = points[0:1,:],
steps_to_keep = 10)
print(x)
In [16]:
t1 = np.linspace(0, 4*3.14, 256)
t2 = np.linspace(-1, 1, 256)
x = np.zeros((t1.shape[0], t2.shape[0], 3), np.float32)
x[:, :, 0] = t1[np.newaxis, :]
x[:, :, 1] = t2[:, np.newaxis]
x[:, :, 2] = .0
In [17]:
T = pyJHTDB.dbinfo.channel5200['time'][-1]
time = np.random.random()*T
u = lTDB.getData(
time,
x,
data_set = 'channel5200',
sinterp = 4,
getFunction='getVelocity')
In [18]:
print(u.shape)
fig = plt.figure(figsize = (t1[-1] - t1[0], t2[-1] - t2[0]))
a = fig.add_subplot(121)
a.set_axis_off()
a.imshow(u[:,:,0],
extent = [t1[0], t1[-1] - t1[0], t2[0], t2[-1] - t2[0]],
interpolation = 'none')
Out[18]:
In [19]:
lTDB.finalize()