PYTHON: Add direction derivatives of velocity and magnetic field.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
parent
3b14ea26d0
commit
b350ecdedd
@ -142,6 +142,15 @@ class AmunXML:
|
||||
variables.append('vory')
|
||||
variables.append('vorz')
|
||||
variables.append('vort')
|
||||
variables.append('dvxdx')
|
||||
variables.append('dvxdy')
|
||||
variables.append('dvxdz')
|
||||
variables.append('dvydx')
|
||||
variables.append('dvydy')
|
||||
variables.append('dvydz')
|
||||
variables.append('dvzdx')
|
||||
variables.append('dvzdy')
|
||||
variables.append('dvzdz')
|
||||
if all(v in variables for v in ['magx','magy','magz']):
|
||||
variables.append('magnetic_vector')
|
||||
variables.append('magn')
|
||||
@ -150,6 +159,15 @@ class AmunXML:
|
||||
variables.append('cury')
|
||||
variables.append('curz')
|
||||
variables.append('curr')
|
||||
variables.append('dbxdx')
|
||||
variables.append('dbxdy')
|
||||
variables.append('dbxdz')
|
||||
variables.append('dbydx')
|
||||
variables.append('dbydy')
|
||||
variables.append('dbydz')
|
||||
variables.append('dbzdx')
|
||||
variables.append('dbzdy')
|
||||
variables.append('dbzdz')
|
||||
if 'pres' in variables and 'adiabatic_index' in self.attributes:
|
||||
variables.append('eint')
|
||||
if all(v in variables for v in ['dens','pres']):
|
||||
@ -624,6 +642,78 @@ class AmunXML:
|
||||
dset = 0.5 * np.sqrt(wx**2 + wy**2 + wz**2)
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvxdx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velx'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvxdy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velx'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvxdz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velx'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
elif var == 'dvydx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'vely'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvydy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'vely'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvydz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'vely'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
elif var == 'dvzdx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velz'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvzdy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velz'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dvzdz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'velz'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
elif var == 'divb':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magx'), cm)
|
||||
@ -726,6 +816,78 @@ class AmunXML:
|
||||
dset = 0.5 * np.sqrt(wx**2 + wy**2 + wz**2)
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbxdx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magx'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbxdy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magx'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbxdz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magx'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
elif var == 'dbydx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magy'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbydy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magy'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbydz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magy'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
elif var == 'dbzdx':
|
||||
p = self.attributes['ndims'] - 1
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magz'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbzdy':
|
||||
p = self.attributes['ndims'] - 2
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magz'), cm)
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
elif var == 'dbzdz':
|
||||
p = self.attributes['ndims'] - 3
|
||||
tmp = np.reshape(self.__read_binary_data(n, 'magz'), cm)
|
||||
if p >= 0:
|
||||
dset = np.roll(tmp, -1, axis=p) - np.roll(tmp, 1, axis=p)
|
||||
dset *= 0.5
|
||||
for p in range(self.chunks[n]['dblocks']):
|
||||
dset[...,p] /= self.cell_size[self.level[ids[p]]]
|
||||
else:
|
||||
dset = np.zeros_like(tmp)
|
||||
else:
|
||||
dset = self.__read_binary_data(n, var)
|
||||
dset = np.reshape(dset, cm)
|
||||
|
Loading…
x
Reference in New Issue
Block a user