# -*- coding: utf-8 -*-
"""
Created on Mon Jan 29 08:59:30 2024

@author: Willger
"""

import os
import pandas as pd
import numpy as np


def Calculate_gamma(T,x1,paras_NRTL,alpha):
    """
    Parameters
    ----------
    T : float
        Temperature /K
    x1 : float
        liquid mole fraction comp 1
    delta_g_12 : float
        : adjustable energy parameter/K
    delta_g_21 : float
        energy parameter/K
    alpha : float
        non randomness parameter 

    Returns
    -------
    gamma_1 : float
        activity coefficient comp 1
    gamma_2 : float
        activity coefficient comp 2

    """
    
    a12=paras_NRTL[0];a21=paras_NRTL[1];b12=paras_NRTL[2];b21=paras_NRTL[3];
    c12=paras_NRTL[4];c21=paras_NRTL[5]
   
    delta_g_12=a12+b12*10**-3*T+c12*10**-5*T**2
    delta_g_21=a21+b21*10**-3*T+c21*10**-5*T**2
    

        
    R=8.314
    tau_12=delta_g_12/(T*R)
    tau_21=delta_g_21/(T*R)
    G_12=np.exp(-alpha*tau_12)
    G_21=np.exp(-alpha*tau_21)
    
    gamma_1=np.exp((1-x1)**2*(tau_21*(G_21/(x1+(1-x1)*G_21))**2+(tau_12*G_12)/((1-x1)+x1*G_12)**2))
    gamma_2=np.exp(x1**2*((tau_12*G_12**2)/((1-x1)+x1*G_12)**2+(tau_21*G_21)/(x1+(1-x1)*G_21)**2))
    
    dicti={'gamma_1':gamma_1,
           'gamma_2':gamma_2} 
    frame=pd.DataFrame(dicti)
    return(frame)     
    
    
   


        


def GibbsExcess(gamma_1, gamma_2, x_1, T):
    R = 8.314
    T_in_k = T 
    excess_gibbs = ((x_1 * np.log(gamma_1))+((1-x_1) * np.log(gamma_2))) * R * T_in_k / 1000
    return(excess_gibbs)