a
    7b                     @   s`   d dl mZ d dlT d dlZd dlmZmZ d dlm	Z	 ddl
mZ ejZG dd	 d	ejZdS )
    )print_function)*N)platformexit)path   )thermoc                       s:   e Zd ZdZ fddZdddZdd Zd	d
 Z  ZS )pcsaftz
    Interface to cubic
    c                    sT   t t|   t| j| dd| _t| j| dd| _t| j| dd| _dS )z=
        Initialize cubic specific function pointers
        Z
eoslibinitZinit_pcsaftZsaft_interfaceZpc_saft_get_kijZpc_saft_set_kij_asymN)	superr	   __init__getattrtpZget_export_nameeoslibinit_init_pcsaft	s_get_kij	s_set_kij)self	__class__ \/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/pyctp/pcsaft.pyr      s    zpcsaft.__init__Defaultc                 C   s   |    t|d}tt|}t|d}tt|}ttttg| j_d| j_| |||| tt|	dt|	d| _
dS )zInitialize PC-SAFT model in thermopack

        Args:
            comps (str): Comma separated list of component names
            parameter_reference (str, optional): Which parameters to use?. Defaults to "Default".
        asciiN ,)activatec_char_pencode
c_len_typelenr   argtypesrestypemaxsplitZnc)r   compsZparameter_referenceZcomp_string_cZcomp_string_lenZref_string_cZref_string_lenr   r   r   init%   s"    zpcsaft.initc                 C   sb   |    t|}t|}td}ttttttg| j_d| j_| t|t|t| |jS )zGet binary well depth interaction parameter

        Args:
            c1 (int): Component one
            c2 (int): Component two

        Returns:
            kij (float): Well depth interaction parameter
        g        N)	r   c_intc_doublePOINTERr   r   r    byrefvalue)r   c1c2c1_cc2_ckij_cr   r   r   get_kij?   s    

zpcsaft.get_kijc                 C   s`   |    t|}t|}t|}ttttttg| j_d| j_| t|t|t| dS )zSet binary well depth interaction parameter

        Args:
            c1 (int): Component one
            c2 (int): Component two
            kij (float): Well depth interaction parameter
        N)r   r%   r&   r'   r   r   r    r(   )r   r*   r+   Zkijr,   r-   r.   r   r   r   set_kijX   s    
zpcsaft.set_kij)r   )	__name__
__module____qualname____doc__r   r$   r/   r0   __classcell__r   r   r   r   r	      s
   
r	   )
__future__r   ctypesZnumpynpsysr   r   osr    r   r   Z
thermopackr	   r   r   r   r   <module>   s   