# Load the COSMO species
database = CosmoRSSpeciesDatabase()
water = database.exportSpecies('water')
methanol = database.exportSpecies('methanol')
acetonitrile = database.exportSpecies('acetonitrile')

# Create the mixtures.
solvent_a = CosmoRSMixture([(water, 1)])
solvent_b = CosmoRSMixture([(methanol, 0.25), (acetonitrile, 0.75)])

# Define the mole fractions of solvent_a.
mole_fractions = (0, 0.5, 1)

# Create the liquid equilibrium object.
liquid_equilibrium = LiquidEquilibrium(
    solvent_a,
    solvent_b,
    mole_fractions=mole_fractions,
    temperature=298*Kelvin,
    parameters=CosmoRSParameters(),
)

# Get the excess Gibbs free energy.
excess_energy = liquid_equilibrium.excessEnergy()
for x, energy in zip(mole_fractions, excess_energy):
    nlprint(f'The excess energy at x = {x} is {energy}')

# Get the Gibbs free of mixing.
energy_of_mixing = liquid_equilibrium.freeEnergyOfMixing()
for x, energy in zip(mole_fractions, energy_of_mixing):
    nlprint(f'The energy of mixing at x = {x} is {energy}')

# Get the activity coefficients of water.
activity_coeffs = liquid_equilibrium.activityCoefficients()[0]
for x, activity_coeff in zip(mole_fractions, activity_coeffs):
    nlprint(f'The activity coefficient of water at x = {x} is {activity_coeff}')

# Get the activity of water.
activities = liquid_equilibrium.activities()[0]
for x, activity in zip(mole_fractions, activities):
    nlprint(f'The activity of water at x = {x} is {activity}')
