Source code for fluidsim.base.turb_model.stress_tensor

"""Stress tensor 3D (:mod:`fluidsim.base.turb_model.stress_tensor`)
===================================================================

Provides:

.. autoclass:: StressTensorComputer3D
   :members:
   :private-members:
   :noindex:
   :undoc-members:

"""

import numpy as np


[docs] class StressTensorComputer3D: def __init__(self, oper): self.oper = oper
[docs] def grad_from_arr_fft(self, arr_fft): dx_arr_fft, dy_arr_fft, dz_arr_fft = self.oper.grad_fft_from_arr_fft( arr_fft ) ifft = self.oper.ifft return ifft(dx_arr_fft), ifft(dy_arr_fft), ifft(dz_arr_fft)
[docs] def compute_stress_tensor(self, ux_fft, uy_fft, uz_fft): dx_ux, dy_ux, dz_ux = self.grad_from_arr_fft(ux_fft) dx_uy, dy_uy, dz_uy = self.grad_from_arr_fft(uy_fft) dx_uz, dy_uz, dz_uz = self.grad_from_arr_fft(uz_fft) Sxx = dx_ux Syy = dy_uy Szz = dz_uz Syx = 0.5 * (dy_ux + dx_uy) Szx = 0.5 * (dz_ux + dx_uz) Szy = 0.5 * (dz_uy + dy_uz) return Sxx, Syy, Szz, Syx, Szx, Szy
[docs] def compute_norm(self, Sxx, Syy, Szz, Syx, Szx, Szy): return np.sqrt(Sxx**2 + Syy**2 + Szz**2 + 2 * (Syx**2 + Szx**2 + Szy**2))