Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Turbulence-Resolving Integral Simulations (TRIS) applies a moment-of-momentum integral approach, derived from Navier-Stokes, to run the time evolution of the integrated velocity and pressure fields. The Python code here provides an animation of a chosen field depending on the user input.

71 views
unlisted
ubuntu2204
o

nBfg3�@s$ddlTddlZddlZddlmZddlmZddlZej	�
dddd��ej	�
dd	d
��ejddd
�ejddd�dd�Zdd�Z
Gdd�d�ZGdd�d�Zdd�Zd6dd�Zd6dd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd6d(d)�Zd6d*d+�Zd,d-�Zd6d.d/�Zd0d1�Zd2d3�Zd4d5�ZdS)7�)�*N)�Image��g�������?)zlines.linewidthzlines.markersizezlines.markeredgewidth��)z	font.sizezlegend.fontsize�font�serif)�family�textT)�usetexcC�t�|�dS)Nr��spec�sici��x�r�0/home/user/JFM-Notebooks/figure-3/tris_models.py�Si�rcCr
)Nrrrrrr�Cirrc@seZdZdZddd
�ZdS)�ParamszJData structure for storing and passing input parameters for TRIS closures.�=
ףp=�?�������@��r@�333333�?�333333�?�{�G�z�?�@���?TcCsX||_||_||_||_||_||_||_||_|	|_|
|_	||_
||_|
|_||_
dS�N)�kappa�B�Re�Pi_ref�Cuv�Cs0�Cs1�Cp�Cn�n�Ctau�CPi�	linearize�
flow_angle)�selfr#r$r%r&r'r(r)r*r+r,r-r.r/r0rrr�__init__s
zParams.__init__N)rrrrrrrrr r r!r!Tr )�__name__�
__module__�__qualname__�__doc__r2rrrrrsrc@s*eZdZdZddd�Zdd�Zd	d
�ZdS)
�	Animationz=Data structure for creating an animation of a given quantity.�	animation�png�,cCs4||_||_||_||_|jd|j|_d|_dS)N�vid_r)�name�dir�fmt�dpi�filename�N)r1�vname�vdirr>r?rrrr2+s
zAnimation.__init__c	Cs�|jj}|jj}t�d�}tjddd�tj|jjt	�
|jj�t	�|jj�ddd|d|f|dd	d
�}t�|�}|�
t	jdd	d	d��tjt	�d|d�d
d�t	�d|d�D�dd�tjt	�d|d�dd�t	�d|d�D�dd�|jdkr|t�d�|jdkr�t�d�|jdkr�t�d�|jdkr�t�d�|jdkr�t�d�|jdkr�t�d�|jdkr�t�d�tj|jd t|�d!|j|jd"|jd#�t�d�|jd7_dS)$N�RdBu_rr)rg�?)�figsize�bicubic�lowerr������)�
interpolation�origin�extent�cmap�vmin�vmax)�num�cS�g|]}dt|d�d�qS��$N��pi_formatter��.0�valrrr�
<listcomp><�z$Animation.update.<locals>.<listcomp>r)�fontsize�cSrRrSrUrWrrrrZ=r[�u0z"$\left< \widetilde{u} \right>_0^s$�u1z"$\left< \widetilde{u} \right>_1^s$�w0z"$\left< \widetilde{w} \right>_0^s$�w1z"$\left< \widetilde{w} \right>_1^s$�v0z"$\left< \widetilde{v} \right>_0^s$�p0z"$\left< \widetilde{p} \right>_0^s$z"$\left< \widetilde{p} \right>_1^s$�_�.�tight)�format�bbox_inchesr?)�msh�Lx�Lz�plt�get_cmap�figure�imshowrY�T�np�mean�std�colorbar�	set_ticks�linspace�xticks�yticksr<�title�savefigr@�strr>r?�closerA)r1�i�fieldrjrk�colormap�im�cbrrr�update3s8
*�
..













.
zAnimation.updatecCsvtt�d��}dd�|D�}d|d}|dj|d|dd�d	dd
�dg}t�|jd|j�}t�||�dS)
Nzanimation/*.pngcSsg|]}t�|��qSr)r�open)rX�imagerrrrZRsz%Animation.compile.<locals>.<listcomp>z
animation/z.gifrTr�d)�save_all�
append_images�duration�loop�rmz_*.)�sorted�glob�saver@r>�
subprocess�run)r1�animation_variable�image_files�images�gif_path�cmd�filesrrr�compilePs
�zAnimation.compileN)r8r9r:)r3r4r5r6r2r�r�rrrrr7(s

r7cCst||��d�S)N��?)�div�smult)r_rarrr�calc_v0asr�FcJCs>t||�}|||||fD]}|��qt|j|j|j|j|�\}}	}
}t||	|
||�\}}
}}}}t|j|d�}t|j|d�}t|j|
d�}t|j|d�}t|j|d�}t|j|d�}||||||fD]}|��qct||��	d�}t||��	d�}t||�}t||��	d�}t||��	d�}t||�}|�
|�}|�
|�}||fD]}|��q�|�|�	d��}|�|�	d��}|�t||��	d��}t||	|
||�\} }!}"}#t|j| d�}$t|j|!d�}%t|j|"d�}&t|j|#d�}'|$|%|&|'fD]}|��q�|�|$�	d��}|�|%�	d��}|�t|$|%��	d��}|�|&�	d��}|�|'�	d��}|�t|&|'��	d��}t
||	|
||�\}(})t|jd|(|jd�}*t|jd|)|jd�}+|*|+fD]}|���qU|�|*�}|�|+�}|�t�|j��}|�t�|j��}|�t�|j��}|�t�|j��}t||�\},}-}.}/t||�\}0}1}2}3|j�r�|jj}4|jj}5|jj}6|jj}7|4|6}8|5|7}9|/��}:|:�	|j��	|8��	|9�};|3��}:|:�	|j��	|8��	|9�}<nt|/|3|�};|;}<|,�
|;�}=|-�
|;�}>|.�
|;�}?|0�
|<�}@|1�
|<�}A|2�
|<�}Bt|=|?�}Ct|?|>�}Dt|@|B�}Et|B|A�}F|�|C�}|�|D�}|�|E�}|�|F�}|�t|C|D��}|�t|E|F��}d|j}G|�|���	|G��}|�|���	|G��}|�|���	|G��}|�|���	|G��}t|�}H|�|H� ��	d��}|�|H�!��	d��}t"||H|�}I|�|I� ��	d��}|�|I�!��	d��}|||||H|IfS)N)rYg��@g@��r!)#r��ifft�profile_paramsrY�structural_model�Varri�fftr�r��mult�add�stress_model�top_velocity_modelr%�saddrq�cosr0�sin�strain_rater/rjrk�nx�nz�sqrtr(r)�eddy_viscosity_model�	laplacian�calc_p0�diff_x�diff_z�new_calc_p1)Jr^r`r_ra�params�verboserbr~r%�thRe�Pi�thPi�r0xx�r0zz�r0xz�r1xx�r1zz�r1xz�uu0�uw0�ww0�uu1�uw1�ww1�rhs_u0�rhs_w0�rhs_p0�rhs_u1�rhs_w1�rhs_p1�uv0�wv0�taux�tauz�ztaux�ztauz�tx�tz�ztx�ztz�utopx�utopz�visc_x�visc_z�S0xx�S0zz�S0xz�S02�S1xx�S1zz�S1xz�S12rjrkr�r��dx�dz�Smag�nuT0�nuT1�tau0xx�tau0zz�tau0xz�tau1xx�tau1zz�tau1xz�f0x�f0z�f1x�f1z�nu_effrc�p1rrr�calc_rhsds�

 























r�cCsP|j}|j}dtjdd|tjdd|}dtjdd|tjdd|}	t�|d|	d�}
t�||
||tjddd�}t�|	�t�||
�}tjdd|||tjddt�|�}tjdd|||tjddt�	|�}	t�|d|	d�}
t�|	�t�||
�}|||
|fS)Nr�r]r)
r#r$rq�pir��exp�sign�arccosr�r�)�U0�W0�U1�W1r�r�r#r$�q1�q2�qmagr%r�r�r�rrrr��s(((22r�cC�J|j}|j}|j}||||d}|j|}d||dk<t||d�S�Ng>��N}a+r ��hat�ri�KX�KZrr�)�rhsri�kx�kz�k2�p0_hatrrrr���r�c	Cs\|j}|�|�d|��}|j}|j}|j}||||}|j|d|}t||d�S�Nr�r�r)r*r�r�rirrrr�)	rrcr�r*rirrr�p1_hatrrr�old_calc_p1sr
cCr�r�r)rrirrrrrrr�calc_p1r
rcCsX|j}|�|�d|��}|j}|j}|j}||||}t||j|d|d�Sr)r*r�r�rirrr�r)rrcr�r*rirrrrrrr�sr�cCs�|j}|j}|j}|j}	|j}
t�|�||}t�|�||}d|d||d|d|d}
||||	|||||ddttj�tj}d|	|d|d|	}|
t�	|�d}||dt�	|�t�	|�7}||t�	|�d7}|
t�
|�d}||dt�
|�t�
|�7}||t�
|�d7}|
t�	|�t�
|�}||t�	|�t�
|�t�
|�t�	|�7}||t�	|�t�
|�7}d|d||d|d|d}ddtjd||||	|||}|d||dddtjdttj�tjt�tj�tjd8}ddtj|	|d|d|	}|t�	|�d}||dt�	|�t�	|�7}||t�	|�d7}|t�
|�d}||dt�
|�t�
|�7}||t�
|�d7}|t�	|�t�
|�}||t�	|�t�
|�t�
|�t�	|�7}||t�	|�t�
|�7}||||||fS)Nr�rrIr�r]g�?�)
r#r$r%r&r/rq�logrr�r�r�r�euler_gamma)r%r�r�r�r�r�r#r$�Re_refr&�lin�ff�ff_ref�r0RR�r0RP�r0PPr�r�r��r1RR�r1RP�r1PPr�r�r�rrrr�"sB(<  0(.L&  0r�cCs�|j}|j}|j}|j}	|j}
|j}|j}|j}
|j}|j	}||	d|}|t
�|�}|t
�|�}dd|
|
}d|
|}d|
}||t
�|�|t
�|�|}||t
�|�|t
�|�|}||||fS)Nr�r!r)
r#r$r/r%r&r'r-r.r+r,rqr�r�)r%r�r�r�r�r�r#r$rrr&r'r-r.r+r,�tmag�tX�tZ�ttR�ttP�ttref�ttX�ttZrrrr�Ss&$$r�c
Csv|j}|j}|j}|j}t�|�||}	d||}
|	t�|�|
t�|�}|	t�|�|
t�|�}||fS)Nr��r#r$r%r&rqrr�r�)
r%r�r�r�r�r#r$rr&�utR�utP�utx�utzrrrr�msr�cCsv|j}|j}|j}|j}	t�|�d||}
|	|}|
t�|�|t�|�}|
t�|�|t�|�}
||
fS)Nr!r$)r%r�r�r�r�r�r#r$rr&�R0_ref�P0_ref�u0_ref�w0_refrrr�ref_zeroth_momentxsr-c
Csx|��}|��}|��}|��}|}|�|�}|�d�}|}|�|�}	|	�|�|��}	|	�|�|�d���}	||||	fS)Nr�r�)r�r�r�r�r�)
�u�w�dudx�dudz�dwdx�dwdz�Sxx�Sxz�Szz�Smag2rrrr��s


r�cCs"|j}|�|�}|��}|�|�Sr")r(r�r�r�)r�r�r��Csr�rrrr��s

r�cCsXtt�|tj��}|dkrdS|dkrdS|dkrdS|ddkr'd�|�Sd�|�S)	Nr�0rz\pi�����z-\pir�z{0}\pi)�intrq�roundr�rg)r�posrArrrrV�s

rV)F)�
periodic2dr�r��
scipy.special�specialr�PILrrl�rcParamsr��rcrrrr7r�r�r�r�r
rr�r�r�r�r-r�r�rVrrrr�<module>s89

}



1