clc
clear
close all

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% USER INPUT
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Define fluid paramters: 
% Elongation L and dipole moment mu (2CLJD fluid)
% Elongation and quadrupole moment Q (2CLJQ fluid)


% L = 0.809997654705666; % reduced elongation L*
L = 0.67; % reduced elongation L*
% m = []; % squared reduced dipole moment µ*² 
m = 6.99993; % squared reduced dipole moment µ*² 
% q = 3.303635; % squared reduced quadrupole moment Q*²
q = []; % squared reduced quadrupole moment Q*²

% valid range for 2CLJD fluid: L = [0,1] and m  = [0,20]
% valid range for 2CLJD fluid: L = [0,0.8] and q  = [0,5]
% !!! Combination of mu and Q are not possible !!! --> set one variable to x = []

T_min = 0.2; % lowest temperature at which char. curves are calculated at.

ZenoCurveCalcMode = 'Zroute';    % decide whether density of Zeno curves should be adresses by direct fit results fom MD correlation ('directfit') 
                                            % or are received by evaluating the thermodynamic condition Z = 1 from with the pressure correlation results ('Zroute')
      

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% convert user input to variables for script
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if  ~isempty(m) && ~isempty(q)  
    error('Combinations of m and q are not possible. Define only one parameter and set the other to  "= []" ')
end

if ~isempty(m)
    multipole_type = 'dipole';
    multipole_type_abb = '\mu*²';
    y = m; 
elseif ~isempty(q)  
    multipole_type = 'quadrupole';
    multipole_type_abb = 'Q*²';
    y = q ; 
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% calculate VLE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Using the correaltion by [1] for the 2CLJD fluid and [2] for the 2CLJQ fluid
% 
% [1] Jürgen Stoll, Jadran Vrabec, Hans Hasse Fluid Phase Equilibria Volume 209, Issue 1, 30 June 2003, Pages 29-53 DOI: 10.1016/S0378-3812(03)00074-8
% [2] Jürgen Stoll, Jadran Vrabec, Hans Hasse, Johann Fischer Fluid Phase Equilibria 179 (2001) 339–362 DOI: 10.1016/S0378-3812(00)00506-9
    
% 2CLJD
if strcmpi(multipole_type,'dipole') 
    T_c =  1.454013+136.3894*m/(88+m)^2+2020.243*m^2/(88+m)^3+0.3269772/(0.1+L^2)+0.04910240/(0.1+L^5)+42.39005*m/((88+m)^2*(0.1+L^2))+...
           672.4083*m^2/((88+m)^3*(0.1+L^2))+79.13876*m^2/((88+m)^3*(0.1+L^5));
    rho_c = 0.3157828+9.871123*m/(88+m)^2-146.1751*m^2/(88+m)^3-0.1475616*L^2/(0.11+L^2)-0.04152214*L^5/(0.11+L^5)-10.10584*m/(88+m)^2*L^2/(0.11+L^2)+...
            41.05884*m^2/(88+m)^3*L^2/(0.11+L^2)+52.99302*m^2/(88+m)^3*L^5/(0.11+L^5);
    C1 = 0.2951644-0.6339151*m^2/(70+m)^2+3.182745*m^3/(70+m)^3-0.2359527*L^2*exp(L)+0.5466755*L^3+1.449170*m^2/(70+m)^2*L^8/(L+0.4)-...
         0.1955388*m^3/(70+m)^3*L^2/(L+0.4)^2-5.849357*m^3/(70+m)^3*L^8/(L+0.4);
    C21 = 0.06484789+0.7301440*m^2/(70+m)^2-8.780100*m^3/(70+m)^3-0.6551324*L^2*exp(L)+1.810641*L^3+4.808117*m^2/(70+m)^2*L^2*exp(L)+...
          1.937455*m^3/(70+m)^3*L^2*exp(L)-13.20822*m^2/(70+m)^2*L^3;
    C31 = -0.007258204-0.6215183*m^2/(70+m)^2+4.708560*m^3/(70+m)^3+0.4316296*L^2*exp(L)-L^3*1.166922-22.15021*m/(88+m)^2*L^2/(0.4+L)^2-...
          -78.03181*m^2/(88+m)^3*L^2/(0.4+L)^2-0.5735507*m/(88+m)^2*L^8/(0.4+L);
    C22 = -0.005486341+1.223952*m^2/(70+m)^2+1.350701*m^3/(70+m)^3+0.2479957*L^2/(0.4+L)^2-0.1684560*L^8/(0.4+L)-...
          -19.56742*m/(88+m)^2*L^2/(0.4+L)^2-228.9032*m^2/(88+m)^3*L^2/(0.4+L)^2+722.1121*m^2/(88+m)^3*L^8/(0.4+L);
    C32 = 0.02574709-2.940407*m/(88+m)^2-100.8706*m^2/(88+m)^3-0.09426323*L^2/(0.4+L)^2+0.1108324*L^8/(0.4+L)+25.43158*m/(88+m)^2*L^2/(0.4+L)^2+...
          59.87224*m^2/(88+m)^3*L^2/(0.4+L)^2-651.1462*m^2/(88+m)^3*L^8/(0.4+L);
    c1 = 4.411718+457.5129*m/(88+m)^2+2469.929*m^2/(88+m)^3-2.016356*L^2/(0.4+L)^2+0.4346103*L^8/(0.4+L)+978.7962*m^2/(88+m)^3*L^2/(0.4+L)^2+...
         2467.171*m^2/(88+m)^3*L^8/(0.4+L);
    c2 = -26.86327-3428.826*m/(88+m)^2-87208.08*m^2/(88+m)^3+127.5315*L^2/(0.75+L)^2-139.3077*L^3/(0.75+L)^3+7248.855*m/(88+m)^2*L^2/(0.75+L)^2+...
         571549.8*m^2/(88+m)^3*L^2/(0.75+L)^2-743396.2*m^2/(88+m)^3*L^3/(0.75+L)^3;
    c3 = -526.4689*m/(88+m)^2+6782.756*m^2/(88+m)^3+0.1812550*L^4;
    
    T = linspace(T_min,T_c, 500); % temperature for calculation
    for ii=1:1:length(T)
        rhoL(ii) = rho_c + C1*(T_c-T(ii))^(1/3)+C21*(T_c-T(ii))+C31*(T_c-T(ii))^(3/2);
        rhoV(ii) = rho_c - C1*(T_c-T(ii))^(1/3)+C22*(T_c-T(ii))+C32*(T_c-T(ii))^(3/2);
        p(ii) = exp(c1+c2/T(ii)+c3/T(ii)^4);
    end 
    p_c = p(end);

    T_VLE = T';
    rhoL_VLE =  rhoL;
    rhoV_VLE =  rhoV;
    p_VLE = p; 
end

% 2CLJQ 
if strcmpi(multipole_type,'quadrupole')    
    T_c = 1.507579 + 0.02047231*q^2 - 0.001291671*q^3 + 0.3319456/(0.1+L^2) + 0.04136462/(0.1+L^5) +...
       q^2/(0.1+L^2)*0.009755649 -q^2/(0.1+L^5)*0.001715840 -q^3/(0.1+L^2)*0.0008173578 +q^3/(0.1+L^5)*0.0002301229;
    rho_c = 0.3143171 +q^2*0.002469999 -q^3*0.0002422011 - L^2/(0.11+L^2)*0.1452035 - L^5/(0.11+L^5)*0.04259098 -q^2*L^2/(0.11+L^2)*0.002700883 +...
       q^2*L^5/(0.11+L^5)*0.002785485 + 0.0003007566*q^3*L^2/(0.11+L^2) -q^3*L^5/(0.11+L^5)*0.0005084756;
    C1 = 0.3019549 -q^2*0.0003796746+q^3*0.0006745920-0.01608258*L^3/(L+0.4)^3-0.5227965*L^4/(L+0.4)^5+0.01122068*q^2*L^2/(L+0.4)-...
       q^2*L^3/(L+0.4)^7*0.004523730-q^3*L^2/(L+0.4)*0.002711606+q^3*L^3/(L+0.4)^7*0.0003949744;
    C21 = 0.04955956 +q^2*0.006125793-0.001684225*q^3+L^2*0.07665178+L^3*0.04320915-q^2*L^2*0.01489510-q^2*L^3*0.002119930+q^3*L^2*0.003030791;
    C31 = 0.0006676718-q^2*0.002125521+q^3*0.0005591744-L*0.005007894-L^4*0.07089158+q^2*L*0.001218855+q^2*L^4*0.008615708-q^3*L^4*0.001407562;
    C22 = 0.01984681-q^2*0.003677042+q^3*0.001251499-L^2*0.05941681+L^3*0.05235979+q^2*L^2*0.01966272-q^2*L^3*0.007711454-q^3*L^2*0.002604483;
    C32 = 0.01185765+q^2*0.001556412-q^3*0.0004872161+L*0.04232978-L^4*0.0002872173-q^2*L*0.002451944-q^2*L^4*0.005240982+q^3*L^4*0.001487717;
    c1 = 4.333882+q^2*0.1503665-q^3*0.02085311-L^2/(L^2+0.75)*1.870607-L^3/(L^3+0.75)*0.7103387-L^2*q^2/(L^2+0.75)*0.5758677+L^3*q^2/(L^3+0.75)*0.6802547+...
        L^2*q^3/(L^2+0.75)*0.1358236-L^3*q^3/(L^3+0.75)*0.1916098;
    c2 = -26.60590-q^2*1.144385+q^3*0.1097780+L^2/(L+0.75)^2*113.8729-L^3/(L+0.75)^3*108.2939+L^2*q^2/(L+0.75)^2*11.31664-L^3*q^2/(L+0.75)^3*17.32358-...
        L^2*q^3/(L+0.75)^2*1.609370+L^3*q^3/(L+0.75)^3*3.026670;
    c3 = -q^2*0.1059248-q^5*0.003559731-L^0.5*0.8836935;


    T = linspace(0.2 , T_c , 500); % temperature for calculation
    for ii=1:1:length(T)
        rhoL(ii) = rho_c + C1*(T_c-T(ii))^(1/3)+C21*(T_c-T(ii))+C31*(T_c-T(ii))^(3/2);
        rhoV(ii) = rho_c - C1*(T_c-T(ii))^(1/3)+C22*(T_c-T(ii))+C32*(T_c-T(ii))^(3/2);
        p(ii) = exp(c1+c2/T(ii)+c3/T(ii)^4);
    end 
    p_c = p(end);

    T_VLE = T';
    rhoL_VLE =  rhoL;
    rhoV_VLE =  rhoV;
    p_VLE = p; 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% calculate characteristic points ( ideal gas limit )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function_T_char = @(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12) (d1 + d2*L + d3*L^2 + d4*L^3 + d5*L^4)+y*((f1+f2*L+f3*L^2)+(f4 +f5*L+f6*L^2)*y+(f7+f8*L+f9*L^2)*y^2 + (f10+f11*L+f12*L^2)*y^3);


% 2CLJD
if strcmpi(multipole_type,'dipole') 
    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Amagat','dipole');
    T_B_max = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Boyle','dipole');
    T_B_zero = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Charles','dipole');
    T_B_asymptot = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
end

% 2CLJQ 
if strcmpi(multipole_type,'quadrupole') 
    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Amagat','quadrupole');
    T_B_max = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Boyle','quadrupole');
    T_B_zero = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar('Charles','quadrupole');
    T_B_asymptot = function_T_char(L , y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
end



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% calculate characteristic curves
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ft_parameter = @(L, y , d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12 ) (d1 + d2*L + d3*L^2 + d4*L^3 + d5*L^4)+y*((f1+f2*L+f3*L^2)+(f4 +f5*L+f6*L^2)*y+(f7+f8*L+f9*L^2)*y^2 + (f10+f11*L+f12*L^2)*y^3);

Curvename = {'Amagat', 'Boyle' , 'Charles' , 'Zeno'};


allcurves_plot_T_p = figure;
allcurves_plot_T_rho = figure;
% hold on
for jj = 1 : size(Curvename,2)

     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_p',multipole_type,'a');
    a_T_p = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_rho',multipole_type,'a');
    a_T_rho = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_p',multipole_type,'b');
    b_T_p = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_rho',multipole_type,'b');
    b_T_rho = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_p',multipole_type,'c');
    c_T_p = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_rho',multipole_type,'c');
    c_T_rho = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
    [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_p',multipole_type,'d');
    d_T_p = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

   [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_rho',multipole_type,'d');
    d_T_rho = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_p',multipole_type,'e');
    e_T_p = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);

     [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename{jj},'T_rho',multipole_type,'e');
    e_T_rho = ft_parameter(L,y, d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12);
    
    if strcmpi(Curvename{jj},'Amagat')
        T_char_red = T_B_max/T_c;        
    elseif strcmpi(Curvename{jj},'Boyle')        
        T_char_red = T_B_zero/T_c;
    elseif strcmpi(Curvename{jj},'Charles')
        T_char_red = T_B_asymptot/T_c;    
    elseif strcmpi(Curvename{jj},'Zeno')
        T_char_red = T_B_zero/T_c;
    end
    
    ft_T_p_red = fittype( @(a,b,c,d,e,x) (a.*(x-T_char_red) + b.*(x-T_char_red).^2 + c*(x-T_char_red).^3 + d.*tanh( 0.1*(x-T_char_red) ) + e.*( exp(0.1*(x-T_char_red) )-1 )) );
    ft_T_rho_red = fittype( @(a,b,c,d,e,x) (a.*(x-T_char_red) + b.*(x-T_char_red).^2 + c*(x-T_char_red).^3 + d.*tanh( 0.1*(x-T_char_red) ) + e.*( exp(0.1*(x-T_char_red) )-1 )) );

    % plot characteristic curve
    if strcmpi(Curvename{jj},'Amagat')
     
        cfit_T_p= cfit(ft_T_p_red,a_T_p,b_T_p,c_T_p,d_T_p,e_T_p);
        cfit_T_rho= cfit(ft_T_rho_red,a_T_rho,b_T_rho,c_T_rho,d_T_rho,e_T_rho);

        T_red = linspace(T_min,T_char_red,1000)';
        p_red = feval(cfit_T_p,T_red);
        rho_red = feval(cfit_T_rho,T_red);
        T_Amagat = T_red * T_c;
        p_Amagat= p_red * p_c;
        rho_Amagat = rho_red * rho_c;
        
        figure;       
        plot(T_Amagat,p_Amagat)
        title( sprintf('Amagat L = %0.5f   %s = %0.5f  T - p', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'p*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Amagat(end) ]);
        ylim( [0 1.2 * max(p_Amagat)]) ;
      
        figure;
        plot(T_Amagat,rho_Amagat)
        title( sprintf('Amagat L = %0.5f   %s = %0.5f  T - rho', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'rho*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Amagat(end) ]);
        ylim( [0 1.2 * max(rho_Amagat)]) ;

        figure(allcurves_plot_T_p);
        plot(T_Amagat,p_Amagat); 
        xlim( [0 , 1.2 * T_Amagat(end) ]);
        ylim( [0 1.2 * max(p_Amagat)]) ;
        figure(allcurves_plot_T_rho);
        plot(T_Amagat,rho_Amagat);
        xlim( [0 , 1.2 * T_Amagat(end) ]);
        ylim( [0 1.2 * max(rho_Amagat)]) ;

    elseif strcmpi(Curvename{jj},'Boyle')        
        cfit_T_p= cfit(ft_T_p_red,a_T_p,b_T_p,c_T_p,d_T_p,e_T_p);
        cfit_T_rho= cfit(ft_T_rho_red,a_T_rho,b_T_rho,c_T_rho,d_T_rho,e_T_rho);

        T_red = linspace(T_min,T_char_red,1000)';
        p_red = feval(cfit_T_p,T_red);
        rho_red = feval(cfit_T_rho,T_red);
        T_Boyle = T_red * T_c;
        p_Boyle = p_red * p_c;
        rho_Boyle = rho_red * rho_c;
        
        figure;      
        plot(T_Boyle,p_Boyle)
        title( sprintf('Boyle L = %0.5f   %s = %0.5f  T - p', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'p*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Boyle(end) ]);
        ylim( [0 1.2 * max(p_Boyle)]) ;
      
        figure;
        plot(T_Boyle,rho_Boyle)
        title( sprintf('Boyle L = %0.5f   %s = %0.5f  T - rho', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'rho*', 'Interpreter', 'none' );  
        xlim( [0 , 1.2 * T_Boyle(end) ]);
        ylim( [0 1.2 * max(rho_Boyle)]) ;
        
        
        figure(allcurves_plot_T_p);
        hold on
        plot(T_Boyle,p_Boyle); 
        figure(allcurves_plot_T_rho);
        hold on
        plot(T_Boyle,rho_Boyle); 

    elseif strcmpi(Curvename{jj},'Charles')
        cfit_T_p= cfit(ft_T_p_red,a_T_p,b_T_p,c_T_p,d_T_p,e_T_p);
        cfit_T_rho= cfit(ft_T_rho_red,a_T_rho,b_T_rho,c_T_rho,d_T_rho,e_T_rho);

        T_red = linspace(T_min,T_char_red,1000)';
        p_red = feval(cfit_T_p,T_red);
        rho_red = feval(cfit_T_rho,T_red);
        T_Charles = T_red * T_c;
        p_Charles = p_red * p_c;
        rho_Charles = rho_red * rho_c;
        
        figure;       
        plot(T_Charles,p_Charles)
        title( sprintf('Charles L = %0.5f   %s = %0.5f  T - p', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'p*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Charles(end) ]);
        ylim( [0 1.2 * max(p_Charles)]) ;
      
        figure;
        plot(T_Charles,rho_Charles)
        title( sprintf('Charles L = %0.5f   %s = %0.5f  T - rho', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'rho*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Charles(end) ]);
        ylim( [0 1.2 * max(rho_Charles)]) ;

        figure(allcurves_plot_T_p);
        hold on
        plot(T_Charles,p_Charles); 
        figure(allcurves_plot_T_rho);
        hold on
        plot(T_Charles,rho_Charles);

    
    elseif   strcmpi(Curvename{jj},'Zeno')

        cfit_T_p= cfit(ft_T_p_red,a_T_p,b_T_p,c_T_p,d_T_p,e_T_p);
        T_red = linspace(T_min,T_char_red,1000)';
        p_red = feval(cfit_T_p,T_red);
        T_Zeno = T_red * T_c;
        p_Zeno = p_red * p_c;
        
         switch true 
            case strcmpi(ZenoCurveCalcMode,'directfit')
                cfit_T_rho= cfit(ft_T_rho_red,a_T_rho,b_T_rho,c_T_rho,d_T_rho,e_T_rho);               
                rho_red = feval(cfit_T_rho,T_red);               
                rho_Zeno = rho_red * rho_c;

            case strcmpi(ZenoCurveCalcMode,'Zroute')
                rho_Zeno = p_Zeno ./ T_Zeno;                
        end
   
        figure;       
        plot(T_Zeno,p_Zeno)
        title( sprintf('Zeno L = %0.5f   %s = %0.5f  T - p', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'p*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Zeno(end) ]);
        ylim( [0 1.2 * max(p_Zeno)]) ;
      
        figure;
        plot(T_Zeno,rho_Zeno)
        title( sprintf('Zeno L = %0.5f   %s = %0.5f  T - rho', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'rho*', 'Interpreter', 'none' );
        xlim( [0 , 1.2 * T_Zeno(end) ]);
        ylim( [0 1.2 * max(rho_Zeno)]) ;

        figure(allcurves_plot_T_p);
        hold on
        plot(T_Zeno,p_Zeno); 
        plot(T_VLE,p_VLE,'black');
        scatter(T_c,p_c,'pentagram','black')
        title( sprintf('All Curves L = %0.5f   %s = %0.5f  T - p', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'p*', 'Interpreter', 'none' );
        legend('Amagat', 'Boyle' , 'Charles' , 'Zeno','binodal','critical point');
        set(gca, 'XScale', 'log')
        set(gca, 'YScale', 'log')
        ylim( [0.1 inf]);

        figure(allcurves_plot_T_rho);
        hold on
        plot(T_Zeno,rho_Zeno);
        title( sprintf('All Curves L = %0.5f   %s = %0.5f  T - rho', L , multipole_type_abb, y ) );
        xlabel( 'T*', 'Interpreter', 'none' );
        ylabel( 'rho*', 'Interpreter', 'none' );
        legend('Amagat', 'Boyle' , 'Charles' , 'Zeno');

    end

end

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% save data
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% settings for directoy and filename
% create directory name for current date
FOLDERNAME = sprintf('Result_%s', date);

% check if directory with current date already exists
if exist(strcat(pwd,filesep,FOLDERNAME), 'dir') ~= 7
    % create directory if it doesn't exist already
    mkdir(sprintf('Result_%s', date));
end

% save results
% open file
FILENAME = strcat(FOLDERNAME,filesep,'Correlation_results.txt');
FileID = fopen(FILENAME,'w');
Header = strcat('Zeno Temperature \t Zeno Density \t Zeno Pressure \t Boyle Temperature	\t Boyle Density \t Boyle Pressure \t Charles Temperature \t Charles Density \t	Charles Pressure \t	Amagat Temperature \t Amagat Density \t Amagat Pressure \n');
OutputData = [T_Zeno , rho_Zeno, p_Zeno , T_Boyle , rho_Boyle, p_Boyle , T_Charles , rho_Charles, p_Charles , T_Amagat , rho_Amagat, p_Amagat ,];
fprintf(FileID,Header);
fprintf(FileID,'%.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t %.10e \t \n', OutputData');
fclose(FileID);

fclose('all');

% plot end message
fprintf('\n\n-------------------\n -----  End  -----\n-------------------\n\n');



function [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_fit(Curvename, variable_type, multipole_type,parameter_type)


switch true
    case strcmpi(parameter_type,'a')
        ii = 1;
    case strcmpi(parameter_type,'b')
        ii = 2;
    case strcmpi(parameter_type,'c')
        ii = 3;
    case strcmpi(parameter_type,'d')
        ii = 4;
    case strcmpi(parameter_type,'e')
        ii = 5;   
end


switch true
    case strcmpi(multipole_type,'dipole')
        switch Curvename
            case 'Amagat'

                switch variable_type
                    case 'T_p'
                        coeff = [1329.98419741031	32308.2808574183	-117849.318451577	150203.456156807	-63597.6451352166	235.127397063665	-0.228820772005575	-0.352832177827373	0.244972154441323	-246.562224983431	18.0193277325742	-8.79420951414948	-206.057235331790	126.350615460370	4.85091154695052	16.6228335914946	-10.6577953960399
                                54.5415007070051	1376.06018365860	-5073.64989801330	6501.37704040476	-2757.67274754714	9.61845146584927	-0.00975703336539889	-0.0139886590377895	0.00948028998353884	-6.52842276075281	-3.87071833357155	-0.354940775155631	-8.85996318441834	5.68099222911112	0.206727552746074	0.684439039829809	-0.439903135154543
                                0.858512551074999	24.5339961458836	-92.7351649388761	120.251840122813	-51.2119301217174	0.153297250630145	-0.000173550661865107	-0.000199775532868344	0.000120517022030152	0.0382823643316250	-0.241554307671077	-0.00552188741415586	-0.158482584075138	0.109263411795308	0.00367707720632236	0.0109828161544739	-0.00692102363799010
                                -2725.34931458516	-36364.4257255545	103974.149091622	-114202.824915412	46131.9219298636	-803.305648619531	0.454984023520728	0.359248301717452	-0.475904456648413	3515.47573679933	-3246.49793774624	106.840454445406	-92.4068022651314	167.119071404368	-13.1309154460959	-7.85512555835089	7.03189368706913
                                -10606.0417155456	-288908.486569746	1085464.75531115	-1403931.43964392	597027.432402961	-1466.59883804628	1.80181483148736	3.25665605313414	-1.98674109970358	-1461.71291038481	3432.09956666065	-38.6870892371597	2224.51220457073	-1478.23971413942	-33.9606345745842	-162.824010893147	101.466321008964];


                    case 'T_rho'
                        coeff = [1.39903962261463	-388.701345154579	1665.95096903518	-2382.71917902116	1089.50553327037	-3.10018832603529	0.00209332216872653	0.00372299175063342	-0.00985672907570749	9.17927689013215	-5.70670692824638	0.623859062778083	-0.118702074970699	-1.39263311741571	-0.0704417126560085	-0.0739964720511649	0.264618789529803
                                0.0636506375451208	-16.1276104792006	69.2442481016796	-99.0817596778418	45.3092406609971	-0.128762281229260	8.78263874364455e-05	0.000144302545107711	-0.000394658264163217	0.385271366863217	-0.249980842666241	0.0259941632668881	-0.00759656828922650	-0.0530142050077624	-0.00295084040441909	-0.00275391010876120	0.0105056657235748
                                0.000946754713362134	-0.266613260685687	1.15000595298129	-1.64753295164310	0.753511380637147	-0.00219083332138083	1.52052193162773e-06	1.88324718728584e-06	-5.89402310375160e-06	0.00671675633026693	-0.00478035325422319	0.000445255590397456	-0.000273653218700947	-0.000658971559318679	-5.09755234027891e-05	-2.92881548266428e-05	0.000152500668805032
                                -5.54480167196633	759.794789550667	-3160.38451233476	4463.46529416303	-2028.92174988748	3.12617120445525	-0.00206596117703190	-0.0148512612877015	0.0243170249010508	-6.76083130988190	0.0559961797681665	-0.436650851897833	-3.09586386336348	5.53375148312780	0.0619430994947253	0.436263123614282	-0.731130969603022
                                -9.01063771473054	3097.66768620228	-13384.5236943502	19210.5502834337	-8799.29803051189	28.3716238052504	-0.0191446878870339	-0.0211526877368121	0.0736359993213912	-86.8404232944238	58.2886815386689	-5.94613097408583	4.85098383784314	8.03279860001284	0.654037764284657	0.255190675308345	-1.88739611163815];
                end
                    
            case 'Boyle'
                switch variable_type
                    case 'T_p'
                        coeff = [36881.5083495170	124645.725515694	-439824.622740664	515807.432981089	-185714.057712590	5273.48381642045	-2.05303830098819	12.3320619126395	-17.4776663411663	-9672.54624491441	11477.2864377395	-851.296212209497	3019.55357079646	-4477.24887379132	71.2878756938474	-374.624879774365	542.210760326166
                                 1788.18018068480	6033.25837043220	-27267.1914990107	37815.9724353100	-16177.3215439386	275.009744093526	-0.0823669396455959	0.601498284481953	-0.869804256954740	-588.774184597107	659.315231290734	-44.1149967478802	174.191822987188	-243.910864140771	3.17175383201457	-19.1712756197969	27.7016829109106
                                 52.8358822206363	178.847320613097	-1200.96402861094	1973.32324292325	-957.998794681436	9.27213699649767	-0.00111028147464297	0.0174957876242649	-0.0263270172545081	-24.5608598573956	25.1728009493371	-1.43148910469728	6.76457562230029	-8.64878778668282	0.0685448729568230	-0.613464719608537	0.880942622045736
                                 -10007.7632049126	-39978.0280073655	-1063071.92285561	2419537.87117576	-1385510.45637062	2406.21030182318	3.98615905652384	-2.80798904843011	0.382743502443732	-21235.1194743819	17433.0246788541	-338.913536400034	4699.59533191805	-4128.38723830791	-76.0443469501342	-94.5576156367890	131.657807101868
                                 -358883.472367010	-1206458.66040324	5461539.32656845	-7578135.70864569	3242951.37132609	-55141.8920824886	16.5448649318721	-120.512060102947	174.397470397127	117950.684367406	-132198.052416046	8851.76070192808	-34892.9453903470	48899.7591506145	-636.841496108751	3840.71383923897	-5553.79325442513];
                    case 'T_rho'
                        coeff = [-15910.5486240629	-15644.0148094807	-47372.7349226485	180269.345636886	-133544.278844901	-241.596638208578	-0.109519831979888	-2.33086406738781	4.80760789018413	-1755.46415266563	-684.199463149207	-168.991499357948	384.050175394862	503.126355523511	8.78766986641269	38.4009367259344	-124.023785465692
                                -421.249029690442	-726.102603949370	-2083.87817023647	7256.90088838670	-5108.81218928260	-5.11463803378180	0.00289704262767077	-0.125224887704947	0.205367936764719	-59.0253208977145	-26.3356854604528	-4.30974991994552	3.95792486677816	25.0207251534886	0.0866970157211820	2.62502914414002	-5.38424497440439
                                11.1495104941544	-18.2544361020419	-49.9572793178950	116.607208298809	-59.2314359166551	0.261082930433131	0.000659988036201255	-0.00460678589441305	0.00434332567839644	0.196123445620228	-0.574762112666398	0.143992140797820	-0.911289731336698	0.840974277496254	-0.0211007551997931	0.132053613717120	-0.121588742948915
                                74870.1063089550	10486.5027033841	58000.9745430379	-351394.861670255	313244.901182890	1408.41790819765	1.66811575755741	-1.74843851158345	-7.00981840277282	5688.02472020869	1649.62559523110	823.830786413669	-3040.98163027527	-39.6190838457090	-70.2601917893417	141.034511845758	163.875436293582
                                84226.5102708511	145971.956218113	415683.817687975	-1451263.56459347	1022187.93387585	1007.16308275543	-0.572824454774634	25.0569877759798	-41.0650519733719	11866.5599106679	5191.73605400933	866.144483917824	-799.458213047683	-4991.38225932184	-17.6201941348519	-525.046091723580	1076.33070635213];
                end
                  
            case 'Charles'
                switch variable_type
                    case 'T_p'
                        coeff = [8133.32805454030	-50070.4454076941	122036.381749069	-128745.278187273	48424.5193791965	-97.1088975230519	0.427308409290906	-1.59053687042886	1.23458357076951	256.786444219317	-169.062772635010	138.272910965974	-523.760222574499	410.329519892856	-15.6470496993344	58.3927427793654	-45.3834624507395
                                403.710924420277	-2128.54477903633	5117.00574300763	-5033.84306381510	1791.68695182373	-3.03092965162101	0.0189005457038856	-0.0580655423087681	0.0240501763821216	39.4091566408928	-25.3931869663276	6.27024387532801	-24.9560177315780	16.2219410978019	-0.704825752709250	2.38700779259386	-1.31571744721577
                                11.8689152639426	-38.4389238101151	86.6606914742978	-56.2966230771911	11.3240354194802	0.0286180859142256	0.000418975101711728	-0.000339984270371182	-0.00166442783584328	2.78870988798128	-1.74385113771150	0.153556761475912	-0.656607456689086	0.202394491305827	-0.0166243769326910	0.0362857673392438	0.0215137041038341
                                297.119834093397	69975.3827596247	-184207.201711924	267358.510118002	-120873.893026492	359.240305200590	-0.488071622814538	4.27638536744065	-7.66737850385393	5538.58086168279	-3567.72762481531	-125.778285682435	203.951619484146	-844.779237399602	15.2022813943607	-104.239721347799	192.444438595192
                                -81737.8972242278	430945.693013840	-1036491.82410740	1020108.76276932	-363242.224120885	613.921718792406	-3.78500241316597	11.6244751182251	-4.66575900496221	-8122.91399229768	5272.13303634402	-1257.71179969207	5035.34385741241	-3258.67357755655	141.296372023962	-479.653509470574	261.140077033619];
                    case 'T_rho'
                        coeff = [1747.65612105566	-10929.7682249512	35887.0216740486	-46985.5296962229	20967.5393618426	-124.691487691988	0.0535456268948564	-0.0150728640436499	-0.0198596581352649	359.064341314229	-231.709211787531	41.4607816000813	-98.9820378674259	64.0584235687060	-2.54609824863350	3.59835735725683	-1.68992718838131
                                67.6821418966437	-423.360209562109	1363.20606663836	-1770.64593819193	786.602744509376	-5.08852709137078	0.00229863152054979	-0.00253110297223620	0.000927651793240926	15.8631902409966	-10.7897771510403	1.64234126856969	-4.35093049180353	2.96061747605036	-0.105447385937328	0.201414354258785	-0.120064090287394
                                0.764955743373514	-4.82230549530304	13.4227327415448	-16.3057993669839	6.94825870559209	-0.0796104875534476	4.44587379806905e-05	-0.000181340714535831	0.000144921621054959	0.332524632954032	-0.264053614818895	0.0219472978762837	-0.0899844849536994	0.0713504342683523	-0.00176202793159414	0.00713951171651016	-0.00566539054103263
                                -3879.03340507609	24173.4971791530	-84955.9732100974	114176.271111870	-51684.4928074605	224.554600265229	-0.0735721006742356	-0.366461185762466	0.390099004309397	-390.411081093406	137.073681733114	-84.9262152777003	113.055167866928	-43.5683639340069	4.27830018365891	4.78369460745502	-7.43394620093490
                                -13604.2572765593	85143.7053373673	-273970.483419625	355743.871764091	-158018.065015431	1022.38348344620	-0.461918163395551	0.517357103571438	-0.191311166190801	-3201.26027525319	2180.76934335439	-329.711100464945	876.974243070173	-597.116477242000	21.1847320129032	-40.7791617358056	24.3341307792041];
                end

            case 'Zeno'
                switch variable_type
                    case 'T_p'
                        coeff = [236055.522222499	-1094033.73738827	2536779.13159967	-2146696.06639915	750111.077437651	10248.4409029698	0.343386227470793	-32.6699457087901	1.22810660326095	-27222.5019168007	37546.2075376549	1321.94348765329	-7770.86131057596	-1071.39247948238	-54.1660077787840	890.426843294783	95.7942255191906
                                7608.48340707511	-36860.6141747579	84726.5391399742	-68988.1196100000	23101.1115577064	357.545781237021	0.00140093759289151	-1.07760736819008	0.0227259573046623	-873.918385290512	1200.96762225002	43.2169522264672	-257.653491907764	-39.6127614389116	-1.62010900709960	29.4198750560737	3.74935741119829
                                -36.7493037564674	21.6118453582279	-122.022705131716	365.805051561159	-224.948672826271	0.972702937961032	-0.00100767454027875	0.00299888827441912	-0.00185241043363435	3.65122894222580	-5.93858187716949	-0.154730886361486	0.707962163816309	-0.443067259701657	0.0214879248605896	-0.0824582300387139	0.0543966599320778
                                -835897.816223208	3555472.06506715	-8395729.02220814	7652423.08010834	-2877204.61867674	-30878.7828824764	-3.12163862243744	110.849887796161	-7.95155508574250	98124.0310565634	-135710.811350200	-4542.75289362896	25958.9254078814	2853.58177185184	215.539156628578	-3005.80526986672	-205.549189070460
                                -1524822.82678747	7385064.39143878	-16972057.9831172	13813798.2851636	-4623379.94829894	-71597.8564224829	-0.317408186153696	215.931635005544	-4.41405775469531	173978.806095354	-239623.139892250	-8680.18673773634	51783.3930693914	7825.89675915004	326.365699727604	-5901.37531492473	-749.406417366500];
                    case 'T_rho'
                        coeff = [27113.5320802045	49354.0651392278	-127919.608735575	3817.53529245164	99616.3415099922	880.394986612868	0.122020547665671	-1.79790989498139	-0.210645796395498	18.3392379424616	1912.55525694412	171.489264434007	-766.991252038417	70.0683481444448	-9.08895650994712	54.1553497739809	15.5299474075045
                        879.746210675904	935.139703512845	-2321.82325372123	-1199.36703903399	3390.27121095491	35.0873077678495	0.00160077118931796	-0.0659901523159004	-0.00452274706922270	-19.5117214566705	72.9384284074066	4.32263191407856	-20.6266410677458	-3.14378466288009	-0.203592593851760	1.75761974536448	0.676513330372970
                        -3.69428274343635	-69.8501363004044	190.783635113842	-125.391263305182	0.926209530297757	0.496997428766524	-0.000244500444103167	-0.000461967699412861	0.000255819857370477	-2.01127071475972	0.843337692830109	-0.142053687033654	0.528964702992690	-0.537144170719148	0.0100324806586511	-0.00857132525160481	0.0147305915010203
                        -94954.7250039591	-307400.994273007	817256.493177659	-281018.100190895	-316536.942104039	-1770.76552961347	-0.897980774817430	4.73176881796120	1.19870548162466	-4010.73503367859	-4583.79780153634	-849.163421202186	3523.39333309625	-1324.37065971458	50.0612413950402	-188.259065648401	-20.0577303117695
                        -176198.037654120	-186121.975570338	461883.231563103	242900.419552640	-679651.298937257	-7035.19941901942	-0.321779898015852	13.2395842027244	0.918479390818786	3836.21783272339	-14552.2531779848	-865.445182964500	4143.95571731976	627.112251416410	40.8094880030324	-353.041680018458	-135.587029441412];
                end            
        end       
    case strcmpi(multipole_type,'quadrupole')

        switch Curvename
            case 'Amagat'

                switch variable_type
                    case 'T_p'
                        coeff = [2425.80530066118	-121.644775826383	18777.0271858615	-78323.7595643071	66847.3161016269	1636.06126331820	-60.4467289423628	307.667621518074	-345.607214384720	-8016.09127009574	7437.28848050137	-1835.23990832884	9021.10085408267	-8673.19911868443	652.669697523400	-3051.07664878382	3138.65906496173
                                99.8603678298330	26.6640386100690	614.429453282950	-2964.70437820824	2615.26214322305	66.3281720496641	-2.46982843664025	12.7912184813872	-14.5271840548724	-328.930693633825	308.236873580157	-74.8281534981937	372.210731030108	-361.545425493865	26.7268694179757	-126.481123322157	131.479863645919
                                1.60792840347482	1.95866822371637	2.27234132609231	-35.4669887342059	35.7547298863627	1.01359029233920	-0.0387181968973076	0.210811517601537	-0.246810783627943	-5.21791556262758	5.02511705042739	-1.16460551886931	6.00487772901063	-5.99973483441556	0.421746998997800	-2.06784925452648	2.21218118776677
                                -4713.05451563977	18097.5394900790	-121130.462249565	282509.849610408	-194638.037286869	-5769.83196243087	176.058069842368	-734.505417818422	693.573262470535	24397.8590529127	-20776.8376326367	5841.72451684228	-24637.4149395864	21250.4676988351	-1884.43137087282	7664.90325396814	-6862.73945166000
                                -19564.0351418267	-19160.4761088865	-55447.3646549172	482171.667524573	-463816.386715224	-10052.3203327757	414.747183916713	-2293.38640676451	2724.90657494718	53710.5675119248	-51892.3646349568	12009.4694215159	-63696.1619089074	63946.0032478400	-4496.08632693035	22308.9560753104	-24095.7957388742];
                    case 'T_rho'
                         coeff = [-3.04456781747102	-377.711893997748	2032.93100698083	-3502.18338802784	1921.00764646600	-7.16240243902321	0.201110276909972	-0.696120411404439	0.395749212530836	31.6033344548700	-28.5084827899547	6.25104216968148	-37.5357698492957	35.4399564050156	-2.17254653135915	9.39808193997259	-7.11377977972687
                                  -0.118529499634045	-15.7161916555790	84.6001226391302	-145.748018887646	79.9444329401151	-0.289617824886994	0.00819896461604547	-0.0287757359420186	0.0162629635364951	1.29011754718146	-1.16131371836104	0.251134643055565	-1.53968327175349	1.45302754279995	-0.0881894574076306	0.386819848605708	-0.291821650597986
                                  -0.00197751576553453	-0.262092931685392	1.41248293328835	-2.43460826037140	1.33564894282082	-0.00473017070455528	0.000136614992779216	-0.000495302124604031	0.000281816484307581	0.0213860128786750	-0.0191088918209582	0.00404477037771425	-0.0255745051802469	0.0240280864901628	-0.00145166896530703	0.00652154602707807	-0.00489776395756218
                                  3.99815038157160	725.545059488150	-3829.98105459536	6536.50768334050	-3567.04975439366	-3.43446325875458	0.110668937611972	-0.873095525304065	1.09729629236338	13.2023942105910	-9.70924469427433	3.99538862354219	-2.02357472648982	-2.99327840211870	-0.913714688335246	4.84243952313072	-5.93155646243902
                                  25.5319721815050	3020.70780935140	-16347.8568842396	28236.1351496471	-15509.6855485386	79.0341683871585	-2.23187013748885	8.28022590940326	-5.43851858653881	-344.972511102553	308.487563626928	-70.3311537692319	392.615403898489	-364.562430979809	23.7947428189268	-103.476293091548	81.0838690997626];
                end
                    
            case 'Boyle'
                switch variable_type
                    case 'T_p'
                        coeff = [49809.8336712294	-152429.616086570	844808.506827000	-1546901.98517627	896768.820060559	6482.13181891460	113.885491431636	-345.489462537302	191.797371081857	-24423.7124028711	30176.0279969750	1584.25089635163	4001.97878725396	-10646.6751057096	-785.844844683602	1361.09398776639	561.661650112012
                                2247.52619360926	-7424.65614248792	38952.1850252684	-71609.7110163970	42146.3865647611	465.128439937758	4.64929129594111	-15.5005967345871	8.72069002288312	-1737.13996986429	1796.73705589885	-29.4279356832534	430.846365984316	-665.349028606899	-18.2494231514076	18.4302931296474	66.1803242041300
                                55.0679500223503	-217.352914932590	1003.89232860740	-1866.81920041298	1144.88613618502	22.2653688372553	0.113788152011820	-0.503280292557432	0.337708135732860	-81.2750191189747	68.7647173561512	-6.53009594055517	22.6687092316931	-24.1237733889403	0.400538668045747	-1.09710782513419	3.14549397588436
                                -47329.7644795870	33082.1176420306	-631854.583097816	1103787.85602377	-514444.005562616	29404.8873030537	-230.267351261268	445.024854113323	-255.138178878779	-108664.580000399	62706.3831592857	-22704.5159582179	50458.5351579119	-30602.6697576983	4466.66216788047	-11049.2306735511	8656.02455264608
                                -450846.383888074	1491423.32464333	-7817115.20413413	14366684.4931795	-8454039.46568307	-94257.8670950338	-908.031495323863	3007.32717977155	-1660.80527213566	353052.099909442	-364607.060606319	6889.05810089576	-90600.9476245677	137177.723608684	3384.66419618613	-2529.52761157743	-14300.0396450342];
                    case 'T_rho'
                        coeff = [
                            -17201.0897984638	14097.6392808440	-74506.7228819603	95483.4880189468	-36229.1395248797	-1968.77280007627	-2.82376012821205	53.6495583983104	-99.1286623183662	-1384.94526821152	1867.22758966672	-114.839941359540	1230.62872201581	-2996.75463517325	13.9367906974320	-489.180318946590	993.510458240453
                            -459.055499701198	-409.721742153762	293.668338506267	-777.814386813549	821.590629612929	-133.129168935848	2.48404497811359	-8.79756276366489	6.37030917611284	202.088569992281	-153.544151568263	67.0693521916493	-245.149932121619	159.729432836451	-23.6076284056019	82.4650201227850	-57.1953723403530
                            11.7451390151251	-85.6194508046092	271.985486124800	-389.245631557588	199.788051990332	-6.74365281039598	0.257571957126563	-1.07457933386255	0.987059825327545	25.8623414850553	-22.6637860348541	7.13271595387803	-29.3700191041542	26.7858346267186	-2.41290310973903	10.0757196533486	-9.25842983335415
                            80193.0826578385	-223644.411011985	805941.618875348	-1113011.57764110	527695.631333382	-6823.56076961702	522.608767811183	-2278.87305106995	2247.41195253798	53444.8950451029	-48545.8356402265	14456.7080266169	-60649.5701079401	61216.0531249668	-4832.21086247766	21191.8002304169	-21175.6186993748
                            91809.1803338133	82690.3892014780	-60955.8395985592	158283.002731302	-165452.425996899	26507.5539753407	-494.299211539252	1741.91001049480	-1255.64635293197	-39572.5928129462	29850.5500316283	-13305.2077291575	48324.1146718159	-31229.0577140651	4691.99258766310	-16294.6740158920	11235.0798141633];
                end
                  
            case 'Charles'
                switch variable_type
                    case 'T_p'
                        coeff = [8636.89485025849	-80092.3106186106	281773.223505995	-401736.586474785	195917.744022896	-2058.03231870866	75.6379980714956	-305.958240273490	275.957322780847	6273.98865293032	-4658.03314843344	2854.70683548495	-11121.5447343715	9815.96890761531	-803.772033297526	3208.18882938643	-2871.30426744315
                                428.534071649683	-3546.18968886517	12790.7446217105	-18362.0400818722	9119.90464037240	-95.1327170954141	3.64892278422128	-12.1443336414847	8.04725912663776	258.634798747823	-141.627400039114	140.049833901208	-472.532207376468	356.140590985323	-38.5852098007792	130.808545805207	-90.5974308904009
                                12.5794072725850	-75.6019944520370	296.891270629327	-435.715480172794	228.162094289428	-2.27956474451754	0.0940994227370998	-0.139769128719486	-0.136540261656022	3.99074572851566	1.66102977038087	3.87106529007467	-8.31374968375085	1.83661747263966	-0.989668937294097	1.81441573029163	0.777075204233919
                                271.257700107375	84711.9065387056	-236182.353952205	313057.843518945	-119785.726102144	1481.38232539174	-16.6633218883461	600.327898005748	-1136.32353217121	-10923.1156641325	18408.9997968834	-293.453475256713	16000.8936420481	-26599.2613033680	228.939329214267	-5639.78661989951	10462.1113380405
                                -86749.0243899434	716588.209997137	-2582874.78363377	3706164.27845229	-1840312.16856579	19091.7113936785	-739.967035489629	2460.15568745801	-1623.95732664608	-51784.6873416084	28137.2576358093	-28254.4888428978	95214.9624434422	-71557.5542868073	7810.27285925781	-26447.3086556187	18254.4178651723];
                    case 'T_rho'
                        coeff = [1766.91862801998	-9550.51244455567	28751.3020320556	-36268.2763017860	16240.9055796672	-912.464332623074	19.2565744050972	-72.0210581221924	67.9605505809651	3541.77539741408	-3054.29179300481	806.169385449637	-3038.62554138209	2737.15148424933	-215.099459503473	810.735011312134	-748.825551426074
                                68.6250083813537	-382.892724731517	1156.42581259345	-1473.73364709384	668.091848326780	-35.0501838645138	0.719202455691484	-2.68923602755376	2.48529787539269	135.528991990373	-116.177058861048	30.8948902059604	-116.792264405874	104.098553947348	-8.16065175681693	30.8078223409444	-27.9969191694205
                                0.790478185880118	-5.36489971397800	16.5125418853291	-22.2518207512192	10.7274711624034	-0.377541412321962	0.00582959183615707	-0.0214909040867305	0.0154534687586077	1.41673252423166	-1.15546614292568	0.322101719839265	-1.24264999832136	1.01597732453699	-0.0773948424380376	0.294288514599220	-0.229349394630736
                                -3880.62911355349	18424.2644044874	-54725.1636200240	66036.5110370158	-27929.5343482058	2091.53546559551	-48.0115871757561	179.490534668318	-180.039583268628	-8223.85365243231	7232.30579935779	-1857.16995902552	6927.00822502596	-6464.05000346208	511.157056810318	-1914.90402471537	1861.94170155376
                                -13795.4473957428	77103.5805938871	-232857.314089278	296727.940898147	-134514.196659914	7033.09238277092	-144.563772291623	540.768099442644	-499.601362707916	-27193.9049398785	23310.5912729394	-6204.82668596840	23460.3452011522	-20908.1915864410	1639.93956510813	-6192.90538264604	5626.63590598869];
                end

            case 'Zeno'
                switch variable_type
                    case 'T_p'
                        coeff = [265248.494105078	-2451865.49348461	9775656.24080563	-15235726.2658503	8030428.65364750	18592.7205060096	105.929680895128	-107.876667378594	-114.146981710581	-87413.9079469864	96944.2432649495	6800.75382257405	-5834.64296815358	-6139.52205087983	-1105.97353807004	384.273225355064	2223.77720643313
                                8614.24458884783	-82219.4227341185	324941.297334145	-503302.257802608	263957.850248059	568.109279353535	0.748228915231175	-30.0602857534518	21.3976895730373	-1638.78101833401	1731.87349045884	87.7183181373255	-804.479153835009	424.896357952539	3.43088761655151	215.040776509791	-121.486685922675
                                -35.1622430815646	82.3550158435520	-595.934942093487	1219.55804698443	-766.312555305965	-5.43805531050181	-0.286093744432366	-2.47767949083307	2.36397771606769	124.478947308767	-146.232131730974	-14.1142374153357	-56.1546697725756	58.3894116292646	4.06254676235204	18.7609022805447	-18.2033835897277
                                -926324.667767693	8046704.39729613	-32661699.8501008	51538933.8014951	-27432407.1468026	-72468.5557562363	-902.337273322754	-5002.72530898859	5497.89109297411	548241.067749164	-625278.528550537	-50266.7870455085	-104534.121168938	148561.405825596	11690.3726632800	39788.6229331706	-47227.0536016438
                                -1726329.13529064	16472555.2981686	-65097270.8326819	100821992.040777	-52873792.2963573	-113457.989328737	-157.069811763688	6082.20554387619	-4357.62245256542	325892.012927898	-344157.039975610	-17741.3521052616	162889.671173586	-87183.0539488060	-630.485524483705	-43634.9916455649	24996.6809406131];
                    case 'T_rho'
                        coeff = [30042.6505889726	-13258.5070183030	40227.9919169684	-49656.3640179979	20123.9511784004	3652.80822121704	-8.47966652168066	59.0892064113155	-65.3242478780206	-2650.79439430573	2878.99197202796	-50.5061031063119	1686.13490978997	-1870.59450698901	99.5230358056572	-604.526599084129	661.369972556951
                                977.954930561718	-1493.16284710656	5870.83414770384	-9109.97526772589	4658.69468877945	94.1514633700371	0.0269243853349137	-6.00610888577377	5.77315528651007	154.638364267773	-177.008410313122	5.09781049631684	-203.214370466688	201.306148691992	0.849069729022726	58.8686631683225	-57.3722563469963
                                -3.79673229268186	-99.2670988650330	430.185340023792	-710.414230169079	380.851712676249	-2.78513405837458	0.0289824861174214	-0.764323659622817	0.760738837562760	23.2487851092899	-26.0907050372928	0.607892140035056	-24.7977926253126	25.1568911985167	-0.228771654351495	7.56296880084261	-7.58759309818128
                                -104572.410142312	-168031.638550641	779337.376374894	-1336432.46712086	736005.238311894	-17725.7750149505	91.0837696411719	-1802.35684777776	1818.96116465528	57794.3761452531	-64606.1456617540	1558.45872918760	-57867.7201145324	59363.2394868351	-834.592503726236	17925.7295370068	-18204.1398155708
                                -195873.479544410	300671.504431833	-1181826.29376439	1833285.83543969	-937385.834357264	-18801.0761525337	-6.31627171514829	1211.70807865930	-1165.99410117010	-31295.3792155918	35826.6034097207	-1054.80341295040	41015.1526648832	-40666.7378238161	-160.303625016521	-11883.0228732077	11593.2492958230];
                end       
         end
end

d1 =    coeff(ii,1);   
d2 =    coeff(ii,2); 
d3 =    coeff(ii,3);
d4 =    coeff(ii,4);
d5 =    coeff(ii,5);
f1 =    coeff(ii,6);
f10 =   coeff(ii,7);
f11 =   coeff(ii,8);
f12 =   coeff(ii,9);
f2 =    coeff(ii,10);
f3 =    coeff(ii,11);
f4 =    coeff(ii,12);
f5 =    coeff(ii,13);
f6 =    coeff(ii,14);
f7 =    coeff(ii,15);
f8 =    coeff(ii,16);
f9 =    coeff(ii,17);

end


function [d1,d2,d3,d4,d5,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12] = getparamter_Tchar(Curvename,multipole_type)

switch true
    case strcmpi(multipole_type,'dipole')

        switch Curvename
            case 'Amagat'
                    d1 =         102.163997354119;
                    d2 =        -144.914434210380;
                    d3 =         160.209123524943;
                    d4 =        -141.136958157908;
                    d5 =         57.6563497279526;
                    f1 =       0.0293480003176770;
                    f10 =    4.19818445121910e-05;
                    f11 =   -5.75338446899350e-05;
                    f12 =    0.000967345910625535;
                    f2 =       -0.370933166144968;
                    f3 =       -0.242886311655145;
                    f4 =        0.120814275718829;
                    f5 =       -0.112555987817189;
                    f6 =        0.294000911828188;
                    f7 =     -0.00222613064341653;  
                    f8 =     0.000627130717233842;
                    f9 =      -0.0282487415431700;

            case 'Boyle'
                    d1 =        13.3872569383521;
                    d2 =       -4.94464108312685;
                    d3 =       -47.0188198228491;
                    d4 =        78.3059628004635;  
                    d5 =       -35.7808087466156;
                    f1 =     0.00336399766408786;
                    f10 =   4.05493071751225e-06;
                    f11 =   7.30773866787073e-05;
                    f12 =  -5.88093782377342e-06;
                    f2 =      -0.179001521177348;
                    f3 =       0.150635227473778;
                    f4 =      0.0426172998130596;
                    f5 =     0.00234213598607373; 
                    f6 =     -0.0134964609343984;  
                    f7 =   -0.000871617867062654; 
                    f8 =    -0.00266452180715875;
                    f9 =     0.00120988267688072; 

            case 'Charles'
                    d1 =        24.8507722653719;
                    d2 =       -7.89959779049148;
                    d3 =       -90.0182567837004;   
                    d4 =        147.137160108825;
                    d5 =       -66.6202690503593;  
                    f1 =     0.00297199457056479;
                    f10 =   1.33085687346720e-05;
                    f11 =   5.76157480712697e-05;
                    f12 =   5.15966324015401e-06;
                    f2 =      -0.204532383207566;
                    f3 =       0.172896224386516;
                    f4 =      0.0679834822953458;
                    f5 =     -0.0198875455519013;
                    f6 =    -0.00620191447290691;
                    f7 =    -0.00146125284864985;
                    f8 =    -0.00223348619474780;
                    f9 =     0.00105471085354946;
         end

       
    case strcmpi(multipole_type,'quadrupole')

        switch Curvename
            case 'Amagat'
                d1 =           102.069508269195;
                d2 =          -166.778877953030;
                d3 =           325.930625512483;  
                d4 =          -498.909895548387;
                d5 =           288.746734262574;    
                f1 =          0.526524651089681;
                f10 =       -0.0197073818271396;
                f11 =      0.000848529265933951;
                f12 =        0.0387029819282889;
                f2 =          0.585554216286895;
                f3 =          -1.64283053186487;
                f4 =         -0.397049561984134;
                f5 =         -0.612587483503136;
                f6 =           1.96520043249056;  
                f7 =          0.226263099467541;
                f8 =        -0.0734610170044636;
                f9 =         -0.377853246943426;

            case 'Boyle'
                d1 =           13.3953514832072;
                d2 =          -1.92207210888493;
                d3 =          -71.4566656584074;
                d4 =           132.489020101384;
                d5 =          -71.4751667274618;
                f1 =       -0.00297481013735981;
                f10 =      0.000161669807206180;
                f11 =      -0.00128030552520453;
                f12 =       0.00158984040757706;
                f2 =         0.0187335443935197;
                f3 =         0.0369631009101357;
                f4 =         0.0996998259591252;
                f5 =         -0.214749753961042;
                f6 =          0.156052590782344;
                f7 =       -0.00346910729928255;
                f8 =         0.0161162850420176;
                f9 =        -0.0181089169290180;
           
            case 'Charles'      
                d1 =           24.8518380627387;
                d2 =          -2.01809630184826; 
                d3 =          -135.019960528799;
                d4 =           245.031054339966;
                d5 =          -130.524169067792;
                f1 =       -0.00622766695859667;
                f10 =      0.000262484411124245;
                f11 =      -0.00200231202464805;
                f12 =       0.00322380253024927;
                f2 =         0.0314127686246730;
                f3 =         0.0600699285888456;
                f4 =          0.160715883962764;
                f5 =         -0.335582078220996;
                f6 =          0.257384802743093;
                f7 =       -0.00476063951692874;
                f8 =         0.0197693220197506;
                f9 =        -0.0300100799635209;
        end
end
end

%% Correlation Dipol according to: Comprehensive study of the vapour-liquid equilibria of the pure two-centre Lennard-Jones plus pointdipole fluid
%%% Jürgen Stoll, Jadran Vrabec, Hans Hasse
%%%%% Fluid Phase Equilibria Volume 209, Issue 1, 30 June 2003, Pages 29-53
%%%%%%%  DOI: 10.1016/S0378-3812(03)00074-8
%%calculate points m = µ*^2_2CLJ
function [T_VLE, rhoL_VLE, rhoV_VLE, p_VLE, T_c, rho_c,p_c ] = correlation_Stoll_mu(L,m)   
    
    T_c =  1.454013+136.3894*m/(88+m)^2+2020.243*m^2/(88+m)^3+0.3269772/(0.1+L^2)+0.04910240/(0.1+L^5)+42.39005*m/((88+m)^2*(0.1+L^2))+...
           672.4083*m^2/((88+m)^3*(0.1+L^2))+79.13876*m^2/((88+m)^3*(0.1+L^5));
    rho_c = 0.3157828+9.871123*m/(88+m)^2-146.1751*m^2/(88+m)^3-0.1475616*L^2/(0.11+L^2)-0.04152214*L^5/(0.11+L^5)-10.10584*m/(88+m)^2*L^2/(0.11+L^2)+...
            41.05884*m^2/(88+m)^3*L^2/(0.11+L^2)+52.99302*m^2/(88+m)^3*L^5/(0.11+L^5);
    C1 = 0.2951644-0.6339151*m^2/(70+m)^2+3.182745*m^3/(70+m)^3-0.2359527*L^2*exp(L)+0.5466755*L^3+1.449170*m^2/(70+m)^2*L^8/(L+0.4)-...
         0.1955388*m^3/(70+m)^3*L^2/(L+0.4)^2-5.849357*m^3/(70+m)^3*L^8/(L+0.4);
    C21 = 0.06484789+0.7301440*m^2/(70+m)^2-8.780100*m^3/(70+m)^3-0.6551324*L^2*exp(L)+1.810641*L^3+4.808117*m^2/(70+m)^2*L^2*exp(L)+...
          1.937455*m^3/(70+m)^3*L^2*exp(L)-13.20822*m^2/(70+m)^2*L^3;
    C31 = -0.007258204-0.6215183*m^2/(70+m)^2+4.708560*m^3/(70+m)^3+0.4316296*L^2*exp(L)-L^3*1.166922-22.15021*m/(88+m)^2*L^2/(0.4+L)^2-...
          -78.03181*m^2/(88+m)^3*L^2/(0.4+L)^2-0.5735507*m/(88+m)^2*L^8/(0.4+L);
    C22 = -0.005486341+1.223952*m^2/(70+m)^2+1.350701*m^3/(70+m)^3+0.2479957*L^2/(0.4+L)^2-0.1684560*L^8/(0.4+L)-...
          -19.56742*m/(88+m)^2*L^2/(0.4+L)^2-228.9032*m^2/(88+m)^3*L^2/(0.4+L)^2+722.1121*m^2/(88+m)^3*L^8/(0.4+L);
    C32 = 0.02574709-2.940407*m/(88+m)^2-100.8706*m^2/(88+m)^3-0.09426323*L^2/(0.4+L)^2+0.1108324*L^8/(0.4+L)+25.43158*m/(88+m)^2*L^2/(0.4+L)^2+...
          59.87224*m^2/(88+m)^3*L^2/(0.4+L)^2-651.1462*m^2/(88+m)^3*L^8/(0.4+L);
    c1 = 4.411718+457.5129*m/(88+m)^2+2469.929*m^2/(88+m)^3-2.016356*L^2/(0.4+L)^2+0.4346103*L^8/(0.4+L)+978.7962*m^2/(88+m)^3*L^2/(0.4+L)^2+...
         2467.171*m^2/(88+m)^3*L^8/(0.4+L);
    c2 = -26.86327-3428.826*m/(88+m)^2-87208.08*m^2/(88+m)^3+127.5315*L^2/(0.75+L)^2-139.3077*L^3/(0.75+L)^3+7248.855*m/(88+m)^2*L^2/(0.75+L)^2+...
         571549.8*m^2/(88+m)^3*L^2/(0.75+L)^2-743396.2*m^2/(88+m)^3*L^3/(0.75+L)^3;
    c3 = -526.4689*m/(88+m)^2+6782.756*m^2/(88+m)^3+0.1812550*L^4;
    
    T = linspace(0.2 ,T_c, 500); % temperature for calculation
    for ii=1:1:length(T)
        rhoL(ii) = rho_c + C1*(T_c-T(ii))^(1/3)+C21*(T_c-T(ii))+C31*(T_c-T(ii))^(3/2);
        rhoV(ii) = rho_c - C1*(T_c-T(ii))^(1/3)+C22*(T_c-T(ii))+C32*(T_c-T(ii))^(3/2);
        p(ii) = exp(c1+c2/T(ii)+c3/T(ii)^4);
    end 
    p_c = p(end);

    T_VLE = T';
    rhoL_VLE =  rhoL;
    rhoV_VLE =  rhoV;
    p_VLE = p;
end
