Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
602 views
unlisted
ubuntu2404
�

=bi���b�dZddlZddlmZddlmZddlmZdd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)z6
Created on Fri Nov  7 19:15:57 2025

@author: davide
�N)�interpolate)�odeint)�	curve_fit�c
���t|||���\}}}}	t||||||||	���\}
}t|
dd�df|
dd�df|
dd�df|��S)zsreturns rotational dinamics from initial condition IC along time at Reynolds Rep for the spheroid with aspect ratio)�req�Rep)�IC�time�gammadot�r�b1�b2�b3�b4Nr��)�
load_betas�Einarsson_interface�split_orbits_and_get_C)r
r	�dirr
rrrrrr�nnn�ttts            �R/Users/ziqiwang/PD/MP_PD/2025-JFM/Jupyter_notebook_figures/figure_4/Einarsson15.py�deltaC_einarsson15rs}���S�Q�3�/�/�/�K�B�r�"�R�!�R�T�8�a�2�QS�WY�]_�`�`�`�G�C��!�#�a�a�a��c�(�3�q�q�q��s�8�C����!��H�Q�?�?�?�c��tj|dz��}tj|dz��}tj|dz��}tj|dz��}tj|dd�df|dd�df��}tj|dd�df|dd�df��}tj|dd�df|dd�df��}	tj|dd�df|dd�df��}
tj||��||��|	|��|
|��g��|z}|S)zWLoads the graphically extrapolated coefficients from Einarsson et al., PoF 2015, Fig. 2zB1.txtzB2.txtzB3.txtzB4.txtNrr)�np�loadtxtr�interp1d�array)�folderrr	�B1data�B2data�B3data�B4data�f1�f2�f3�f4�betass            rrrs8��
�Z��x��
(�
(�F�
�Z��x��
(�
(�F�
�Z��x��
(�
(�F�
�Z��x��
(�
(�F�	�	�f�Q�Q�Q�q�S�k�6�!�!�!�A�#�;�	7�	7�B�	�	�f�Q�Q�Q�q�S�k�6�!�!�!�A�#�;�	7�	7�B�	�	�f�Q�Q�Q�q�S�k�6�!�!�!�A�#�;�	7�	7�B�	�	�f�Q�Q�Q�q�S�k�6�!�!�!�A�#�;�	7�	7�B��H�b�b��g�g�b�b��g�g�b�b��g�g�b�b��g�g�6�7�7��<�E��Lrc
�r�tjgd�gd�gd�g��|z}tjgd�gd�gd�g��|z}	tj|tj|	|����}
tj|tj|tj|	|������}tj|tj|	tj|	|������}||z}||z}||z}||z}tj|||	zz|��||
z|zz
||
ztj|	|��||
zz
zz||
ztj||��zz|tj|tj|	|����||zz
zz|tj|	tj|	|����||zz
zzS)zMCalculates the rotation rate according to Einarsson et al., PoF, 2015: eq. 39)r��?r)g�rr)rrr)r-rr)rr!�dot)
�p�t�betarrrrr�Omega�E�pEp�pOEp�pEEps
             r�rotation_Einarssonr7(s	��
�X�{�{�{�<�<�<�
�
�
�;�
<�
<�x�
G�E�
��+�+�+�k�k�k�*�*�*�5�6�6��A�A�
��q����!�����C�	���"�&��r�v�a��{�{�+�+�	,�	,�D�	���"�&��2�6�!�A�;�;�'�'�	(�	(�D���L�B��X���b�(�l�b�2�x�<�2�
�6�%��Q��,�q�!�!�$�s�(�1�*�,�R��V�R�V�A�a�[�[��3��5F�-G�G��3��r�v�V[�\]���H^�^�_a�ce�ci�jo�pr�pv�wx�yz�p{�p{�c|�c|�~B�CD�~D�dD�`E�E�FH�JL�JP�QR�SU�SY�Z[�\]�S^�S^�J_�J_�`d�ef�`f�Jf�Fg�g�grc��|dzdz
|dzdzz}|}	tj|d|d|dg��}
tt|
|	||||||f���}||	fS)zQManages the integration of the Einarsson rotation rate from a given initial_valuerrr)�args)rr!rr7)r
rrr
rrrrr1�simtime�pinit�ptheorys            rrr2ss��
�q�D��F�Q��T�!�V��D��G�
�(�B�q�E�"�Q�%��1��&�
'�
'�E��'��g�D��"�R�PR�SU�;V�W�W�W�G��7�?�rc��||ztjtj|��dz|dztj|��dzzz��zS)Nr)r�sqrt�cos�sin��phi�Cr
s   r�
jeffery_modelrD<sA���q�5�2�7�2�6�#�;�;��>�A�q�D�2�6�#�;�;��>�,A�A�B�B�B�Brc�^���fd�}	t||tj|��dtjgdg���\}}|jr,tjtj|����dntj}|d|fS#t$rtjtjfcYSwxYw)Nc�&��t||���S)N)rDrAs  �r�modelzfit_C.<locals>.model@s����S�!�Q�'�'�'rr��?)�bounds�p0)	rr�tan�inf�sizer>�diag�nan�	Exception)�thetarBr
rG�C_fit�cov�C_stds  `    r�fit_CrU?s����(�(�(�(�(�"��u�c�2�6�%�=�=�!�R�V��RU�QV�W�W�W�
��s�,/�H�@��������%�%�a�(�(�"�&���Q�x������"�"�"��6�2�6�>�!�!�!�"���s�A>B�"B,�+B,c��|dkr+tjtj|����dk}n*tjtj|����dk}tj|t���}tj|��|dd�<|���dz}g}t|��D]�}tj|dd�|k��}	tj	||	||	��}
tj
||	��}|�t||
|������tj
|��jS)z&Method to split orbits in semi-periodsrHr)�dtyperN)r�diff�sign�
zeros_like�int�cumsum�max�range�where�arctan2�arccos�appendrUr!�T)�n1�n2�n3r
�sign_change�orbit_labels�
num_orbitsrC�i�
orbit_indsrBrQs            rrrJs��	�3�w�w��g�b�g�b�k�k�*�*�a�/����g�b�g�b�k�k�*�*�a�/���=��3�/�/�/�L��y��-�-�L������!�!�#�#�a�'�J�
�A�
�:�
�
�%�%���X�l�1�1�1�o�q�0�1�1�
��j��J���:��7�7���	�"�Z�.�)�)��	����u�S��#�#�$�$�$�$�
�8�A�;�;�=�r)rNNN)�__doc__�numpyr�scipyr�scipy.integrater�scipy.optimizerrrr7rrDrUr�rr�<module>rrs���������������"�"�"�"�"�"�$�$�$�$�$�$�@�@�@�@�
�
�
�g�g�g����C�C�C�	"�	"�	"�����r