a
     ɝh                     @   sh   d dl Z d dlmZmZ d dlZd dlZd dlZ	dd Z
dddZdddZd	d
 Zdd ZedkrddS )    N)hkc              	   C   s   d}d}d}d}d}d}d}d}| | d	| |  d
  | |  d }	| | | |  d }
dt |	d
 dt |
d
  d
 d }|	d | |< |
d | |< |d | |< tt td
d	tj t| |   d t| |  t dd | |< | S )z<
    Calculate Debye temperature and related parameters
    zBulk modulus (GPa)Shear modulus (GPa)Speed of sound (m s-1)zDensity (g cm-3),Sound velocity of the longitude wave (m s-1)-Sound velocity of the transverse wave (m s-1)   Volume (Å3)Acoustic Debye Temperature (K)      g      ?      gUUUUUUտi  UUUUUU?
   )powr   r   nppowermathpiarray)dfBGZVadensityLTVDebyeZVlZVtZVs r   7/var/www/html/AI4Kappa/streamlit_scripts/calculate_K.pycal_Debye_T   s     $$Jr    c                 C   s   |   }|d }|d }|| }t|dd dt|d d  |d< |durV||d< n(dd|d   ddd|d     |d< |S )	us   
    Calculate Grüneisen parameter and Poisson ratio
    If custom_gamma is provided, use that value directly
    r   r   r   zPoisson ratioN   Grüneisen parameterr   r   )copyr   )r   custom_gammagamma_dfr   r   ar   r   r   	cal_gamma#   s    $
(r&   c                 C   sp   d}d}|dur|}n| | }|dkrJddd|  dt |d   | |< n"ddd|  d	t |d
   | |< | S )uI   
    Calculate A value, optionally using custom Grüneisen parameter
    r!   ANr   g{Z>g r?gv/?r   g    `T)Ag333333@)r   )r   nr#   gammar'   Zgamma_valuer   r   r   cal_A6   s    $"r*   c           	      C   sz   d}d}d}d}d}d}d}d}| | | |  t | | d	 t | | d
 t | | d| | |   d | |< t|  | S )Nr'   zthe total atomic mass (amu)Number of Atomsr	   r   r!   ,  zKappa_Slack (W m-1 K-1)r   r   r   d   )r   print)	r   r'   MNr   r   r)   r   ZK_Slackr   r   r   cal_K_SlackG   s    Nr1   c                 C   s   ddl }|  }g d}|D ]}||jvrtd| q|d tj}|d tjd }|d tjd	 }|d
 tj}|d tj}	d}
||d}|| }||	 | ||
  | }|	|
||d}||d< |S )z9
    Calculate thermal conductivity using MTP method
    r   N)r!   r   r   r+   r   zMissing required column: r!   r   g    eAr   gKH9r+   r   r,   r   zKappa_cal (W m-1 K-1))numpyr"   columns
ValueErrorastypefloatvaluesr   expwhereisfinite)r   r   ZK_dfZrequired_columnscolr)   r   r   r0   vsr   ZV_termZexp_termkappar   r   r   by_MTPT   s$    
r>   __main__)N)N)r   scipy.constantsr   r   pandaspdr2   r   	streamlitstr    r&   r*   r1   r>   __name__r   r   r   r   <module>   s   

!