U
    q_OK                  	   @   s  d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlZejejedZed Zdd	d
ddddddZdddddddddZedZed edededededededdZ G dd dZ!dS )    )	Kempers01)	Kempers89)Mod_Kempers89)cubicpcsaftextended_cspcpaNplottingzdata/-z--z-.:)r   )      r   r      r   )VdWSRKPRPTSWPC-SAFTSPUNGCPA vosviridisgUUUUUU?gUUUUUU?g      ?gUUUUUU?g?g      ?c                   @   sb   e Zd ZdddZddd	Zdd
dZdd Zdd Zdd Zdd Z	dd Z
dd Zdd ZdS )DataPlottercov2   FTc                 C   s   || _ || _|| _|| _|| _|dkrj|dkrPtd d d | d | _t| _qtd | d | _t	| _n*|dkrtd | d | _t
| _ntdd S )	Nr   Tzplots/kempers89/no_h0/r   zplots/kempers01/z1'model' must be either 'Kempers89' or 'Kempers01')pointsmode
model_namepredexp	root_path
plots_pathr   	KempersXXr   r   
ValueError)selfmodelr"   r!   r   r$   r%    r,   V/home/ubuntu/Home/Documents/7_semester/irrev_prosjekt_renskriv/plotting/dataplotter.py__init__   s    zDataPlotter.__init__Nc                    s  | j d | }|dkr&|d7 }|d7 }tjtd dd dd	  jd
d  D } d }d}tt|t|| j	d }	d}
d}t
jdd}t
d}|ddddg td}t fdd	|D  }t|}t||D ]\}}|| || d
| |
   }d
| }| j||||gd}t
j|	d |j|	| jdd d ||| d t
j||||| t|dd qt
jd d!d" t
jd#d!d" |d k	rt
|d |d
  |d$7 }t
jd%d&d'd(}t
j| d!d" t
| t
j |d!d" t
j!|d)d* t"d+|d,  t
#| d S )-Nzetoh_h2o/ethanol_water_temp_T_CPA CPAethanol_water.csvNaN	na_valuesc                 S   s   g | ]}t |qS r,   int.0xr,   r,   r-   
<listcomp>5   s     z*DataPlotter.etoh_h2o_T.<locals>.<listcomp>r   cETOH,H2O  Q2@)\G@
      figsizeo   g{Gz?g)\(?g      ?gp=
ף?r   c                    s"   g | ]}d d  t | D qS )c                 S   s   g | ]}|qS r,   r,   r7   r,   r,   r-   r:   G   s     z5DataPlotter.etoh_h2o_T.<locals>.<listcomp>.<listcomp>)str)r8   Tdatar,   r-   r:   G   s     r9   r"   r        @@colorr9   rN   labelmarkerzT [$^{\circ}$C]   fontsize$s_T$ [mK$^{-1}$]_ylimu   $\omega_{EtOH}$ [–])g)\(?g=
ףp=?z
upper left)titlebbox_to_anchorlocX  dpiSaved.png)$r'   pdread_csv	data_pathcolumnsnplinspaceminmaxr!   pltfiguresubplotset_positioncmget_cmaparray	transposezipr(   plotget_soret_tempr"   scatterrF   xlabelylabelylimlegendsetp	get_titlescarW   savefigprintclose)r*   eoseos_namecpa_flagru   	save_path	temp_list	cons_listcompstemp_axM_h2oM_etohfigaxcmapST_matrmax_cSTr;   x_etohx_h2or+   rv   r,   rH   r-   
etoh_h2o_T.   sF    

0"

zDataPlotter.etoh_h2o_Tc                 C   s  | j d | }|dkr&|d7 }|d7 }tjtd dd}dd	 |jd
d  D }|d }d}	d}
d}tt|t|| j	}d
| }|| || ||
   }t
d}t|}tjdd}|D ]}t| | j|	||d d}| jdkrtj||j|| jdd
 d ||| d | jdkrtj||t| ||| t|dd qtjddd tjddd |d k	rt|d |d
  |d7 }t| tj|dd  td!|d"  t| d S )#Nzetoh_h2o/ethanol_water_cons_Tr/   r0   r1   r2   r3   c                 S   s   g | ]}t |qS r,   r5   r7   r,   r,   r-   r:   j   s     z*DataPlotter.etoh_h2o_c.<locals>.<listcomp>r   r;   r<   r>   r?   coolr@   rC   r=   temprK   rL   rM   r9   rO   u   $\omega_{{EtOH}}$ [–]rR   rS   rU   r   rV   rZ   r[   r]   r^   )r'   r_   r`   ra   rb   rc   rd   re   rf   r!   rk   rl   rg   rh   r{   r(   r$   rp   get_soret_compr"   r%   rr   rF   rs   rt   ru   rW   rz   r|   )r*   r}   r~   r   ru   r   rI   r   r   r   r   r   	w_etoh_axw_h20_ax	x_etoh_axr   max_Tr   rG   r+   r,   r,   r-   
etoh_h2o_cc   s@    
,
*

zDataPlotter.etoh_h2o_cc                 C   s>  d}| j d | d | }ttd }dd |jdd  D }|d }d	}tt|t|| j	}	t
d
}
t|}t }t|D ]p\}}| j|||d d}|j|	| jdd d }tj|	||
|| d tj||| |
|| t|dd qtjddd tjddd tj|dd td|d  t| d S )Ntoluene_n_hexane_constoluene_hexane/_Toluene_n_hexane.xlsxc                 S   s   g | ]}t |qS r,   floatr7   r,   r,   r-   r:      s     z2DataPlotter.toluene_n_hexane_c.<locals>.<listcomp>r   
x_toluene:TOLU,NC6r   r=   r   rK   r   rL   rM   r9   rO   u   $x_{{Toluene}}$ [–]rR   rS   rU   rZ   r[   Saved r^   )r'   r_   
read_excelra   rb   rc   rd   re   rf   r!   rk   rl   rg   rh   	enumerater(   r   r"   rp   rr   rF   rs   rt   rz   r{   r|   )r*   r}   r~   plotnamer   rI   r   r   r   tolu_axr   r   r   irG   r+   soretr,   r,   r-   toluene_n_hexane_c   s(    
&zDataPlotter.toluene_n_hexane_cc              	   C   sd  d}| j d | d | }ttd }dd |jdd  D }|d  }d	}tt|t	|| j
d
 }	td}
t	|}t }|D ]}| j||t|d| gd}|j|	| jdd d }tj|	d
 ||
|| d tj||j|d |k j dd  |
|| t|dd qtjddd tjddd tj|dd td|d  t| d S )Ntoluene_n_hexane_tempr   r   r   c                 S   s   g | ]}t |qS r,   r   r7   r,   r,   r-   r:      s     z2DataPlotter.toluene_n_hexane_T.<locals>.<listcomp>r   r   r   r=   r   rJ   rK   r   rL   rM   r9   rO   z$T$ [$^{\circ}$C]rR   rS   rU   rZ   r[   r   r^   )r'   r_   r   ra   rb   to_listrc   rd   re   rf   r!   rk   rl   rg   rh   r(   rm   rq   r"   rp   rr   rY   valuesflattenrF   rs   rt   rz   r{   r|   )r*   r}   r~   r   r   rI   r   r   r   tempsr   r   r   r;   r+   r   r,   r,   r-   toluene_n_hexane_T   s0    
$
  zDataPlotter.toluene_n_hexane_Tc              	   C   s  t td | d }|d }|d }tt|t|| j}ddddd	d
dg}t }	|		|d | j
||	ddd}
t \}}| jdkrt|d d D ]V\}}t }	|		|| |
|	 tj||
j|| jdd d t| |t| d qt }	|		| | j
||	dd}
tj||
j|| jdd d td
 td
 |d td
 dd t }	|		|ddddd | j
||	dd}
tj||
j|| jdd d td td |d td dd | jdkrtj||dddd  tjd!| d" d#d$ |jd%d#d$ | jd | d& }| jr$| jr$n"| jr6|d'7 }n| jrF|d(7 }tj|d)d* td+|d,  t | t! }|D ](}tjddt| t| t| |d- qxtjdddddd. tj"d/d0 tj| jd1 d)d* td+| jd1  t | d S )2Nz
298_files/z	_298.xlsxr;   r   r   r   r   r   r   r   r   *  g     j@)r   presTrK   r   rL   	linestylerP   rN   r   rB   r   rQ   rP   rN   	markeveryClassicvdW	NIST_MEOSC3r9   blackExperimentalrQ   rN   rP   $x_{z}$[-]rR   rS   $S_T$ [mK$^{-1}$]Z_298_pred_exprZ   r[   r]   r^   r   rQ   rN   rP   rN   rQ   rP      ncolz298_files/legend.png)#r_   r   ra   rc   rd   re   rf   r!   r   initr(   rg   subplotsr$   r   set_eosrp   r   r"   
lines_dict
color_dictr   marker_dictr   ext_cspr%   rr   rs   
set_ylabelr'   rz   r{   r|   rh   rv   )r*   filenamer   compnamerI   x_dataST_datax_axiseos_listr}   r+   r   r   r   eos_keyr   keyr,   r,   r-   data_298   s    
  
      

 
zDataPlotter.data_298c                 C   sr   ddg}ddg}ddg}ddg}ddg}t d	D ]<}t d	D ].}| || ||  || ||  ||  q<q0d S )
Nbenzenetoluene_hexane_heptanez,NC6z,NC7BENZENETOLUr   )ranger   )r*   solute_namessolvent_namessolvent_codes
comp_codes	compnamesr   jr,   r,   r-   plot_298)  s    zDataPlotter.plot_298c              
   C   s2  ddddg}ddddd	d
dg}|D ]}| d\}}| jd }||d | 7 }ttd | d | d }|d }|d }	tt|t|| j	}
t
 \}}| jrt|d d D ]f\}}t|| t }||| | j||dd}t
j|
|j|
| jdd d t| |t| d qt }|| | j||dd}t
j|
|j|
| jdd d td
 td
 |d td
 dd t }||ddddd | j||dd}t
j|
|j|
| jdd d td td |d  td dd | jrt
j||	d!d"d#d$ | jr| jrn:| jr(|d%7 }n(| jrP|d&7 }t
jd'd( t
jd'd( t
jd)| d* d+d( t
j d,d+d( t
j!|d-d( t
j"|d.d/ td0|d1  t
#| t
$ }|D ](}t
jd2d2t| t| t| |d3 qt
jd2d2d"d!d#d4 t
j%d5d6 t
j"| jd7 d.d/ td0| jd7  t
#| q"d S )8NzNC10,NC5zNC12,NC6zNC12,NC7zNC12,NC8r   r   r   r   r   r   r   ,z
n_alkanes/r   z
n-alkanes/z
_298K.xlsxr;   r   r   r   r   rK   r   rL   r   rB   r   r   r   r   r   r   r9   r   r   r   r   r      rS   r   z}$ [-]rR   r      rZ   r[   r]   r^   r   r   r   r   r   zn_alkanes/legend.png)&splitr'   r_   r   ra   rc   rd   re   rf   r!   rg   r   r$   r   r{   r   r   r(   rp   r   r"   r   r   r   r   r   r   r%   rr   yticksxticksrs   rt   rW   rz   r|   rh   rv   )r*   mixturesr   r   comp1comp2r   rI   x1_list
soret_listr   r   r   r   r   r}   r+   r   r,   r,   r-   	n_alkanes5  s    


 
      

 
zDataPlotter.n_alkanesc              	   C   sT  d}d}| j d t| d }ttd t| d }|d }|d }tt|t|| j	}dd	d
ddg}t
 }	| jdkrXt|D ]d\}
}t| t }||| | j|||d}t
j||j|| jdd d t| t| |d qt }||d	dddd | j||dd}t
j||j|| jdd d td td |d td dd | jdkrxt
j||dddd t
jd d!d" t
jd#d!d" t
j|d$d% td&|d'  t
|	 t
 }	|D ](}t
jd(d(t| t| t| |d) qt
jd(d(td td td dd) t
jd(d(dddd t
j d*d+ t
j| j d, d$d% t
|	 d S )-NzAR,C1X   zcold_gases/AR_C1_KzK.xlsxr;   r   r   r   r   r   r   Tr   rK   r   rL   )rN   r   rP   r   r   r   r   r   r   r   rB   r   r9   r   r   r   z$x_{AR}$ [-]rR   rS   r   rZ   r[   r]   r^   r   r   r   r   zcold_gases/legend.png)!r'   rF   r_   r   ra   rc   rd   re   rf   r!   rg   rh   r$   r   r{   r   r   r(   rp   r   r"   r   r   r   r   r   r%   rr   rs   rt   rz   r|   rv   )r*   r   rG   r   rI   x_listr   r   r   r   r   r   r}   r+   r   r,   r,   r-   
cold_gases~  sf         
 
 zDataPlotter.cold_gasesc              	   C   s  | j d }ttd }|d }|d }tt|t|| j}d}t	
 }dddd	d
g}|D ]T}	t }
|
||	 | ||
}t	j||j|| jdd d t|	 t|	 |	d q^t }
|
|d | ||
}t	j||j|| jdd d td td td ddd t	j||ddd t	dd t	d t	d t	  t	j|dd td|d  t	| t	
 }|D ](}	t	jddt|	 t|	 t|	 |	d qxt	jdddddd  t	jdd! t	| j d"  t	| d S )#Npropanol_h2ozIsopropanol.xlsxr;   r   zPROP1OL,H2Or   r   r   r   r   rK   r   rL   )r   rN   rP   r   zSRK-CPAr   )r   rN   rQ   rP   r   r9   r   )rQ   rN   ir   z$x_{H_2O}$ [-]r   rZ   r[   r]   r^   r   r   r   r   z/propanol_legend.png)r'   r_   r   ra   rc   rd   re   rf   r!   rg   rh   r   r   r(   rp   r   r"   r   r   r   r   rr   ru   rs   rt   rv   rz   r{   r|   )r*   r   rI   r   r   r   r   r   eos_keysr   r}   r+   r,   r,   r-   r     sZ    
     


 
zDataPlotter.propanol_h2o)r   r   FTT)FN)FN)__name__
__module____qualname__r.   r   r   r   r   r   r   r   r   r   r,   r,   r,   r-   r      s   

5
8%#FI9r   )"models.kempers01r   models.kempers89r   models.modKempers89_r   pycThermopack.pyctpr   r   r   r   numpyrc   pandasr_   matplotlib.pyplotpyplotrg   Zmatplotlib.cmrk   ospathdirnameabspath__file__stripr&   ra   r   r   rl   eos_cmapr   r   r,   r,   r,   r-   <module>   s<      
  
   