# Evgenii Rudnyi
# Entropy and Miscibility Gap: Tutorial for Biologists
# http://blog.rudnyi.ru/2013/05/entropy-and-miscibility-gap.html
# Python script to solve Eq 24 and 23

# I use in the script equations where thermodynamic properties is divided by R
# Hence no R in the script below

import sys

if len(sys.argv) < 2:
	Tini = 700
else:
	Tini = float(sys.argv[1])

# Cp is defined as Cp/R
if len(sys.argv) < 3:
	Cp = 20
else:
	Cp = float(sys.argv[2])

# beta is defined as beta/R
if len(sys.argv) < 4:
	beta = 2000
else:
	beta = float(sys.argv[4])

print 'Tini =', Tini, 'beta =', beta, 'Cp = ', Cp

import math
import scipy
import scipy.optimize

def f(z):
	return 2*Cp*beta*z/(Cp*Tini + beta*(0.25 - (0.5 - z)*(0.5 + z))) + math.log(0.5 - z) - math.log(0.5 + z)

z = scipy.optimize.bisect(f, 1e-6, 0.4999)

Tfin = Tini + beta*(0.25 - (0.5 - z)*(0.5 + z))/Cp

print 'Tfin =', Tfin
print 'z =', z, 'x(L1) =', 0.5 - z, 'x(L2) =', 0.5 + z


