<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ascend4.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Priya.bagde123</id>
	<title>ASCEND - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ascend4.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Priya.bagde123"/>
	<link rel="alternate" type="text/html" href="https://ascend4.org/Special:Contributions/Priya.bagde123"/>
	<updated>2026-04-28T23:13:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4237</id>
		<title>Equations of state</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4237"/>
		<updated>2013-06-18T21:36:27Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In physics and thermodynamics, an equation of state is a relation between state variables.[1] More specifically, an equation of state is a thermodynamic equation describing the state of matter under a given set of physical conditions. It is a constitutive equation which provides a mathematical relationship between two or more state functions associated with the matter, such as its temperature, pressure, volume, or internal energy. Equations of state are useful in describing the properties of fluids, mixtures of fluids, solids, and even the interior of stars. (Source : Wikipedia)&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Cubic Equations of State&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Cubic equations of state are called such because they can be rewritten as a cubic function of Vm.&lt;br /&gt;
&lt;br /&gt;
All the models below are first modeled as a general, re-usable model and then used in a test-model. &lt;br /&gt;
This code defines virial coefficients as well as the model for ideal gas laws: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
REQUIRE &amp;quot;thermodynamics.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ATOM vdwa REFINES solver_var&lt;br /&gt;
	DIMENSION M*L^5/Q^2/T^2&lt;br /&gt;
	DEFAULT 0.1 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	lower_bound := 0.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	upper_bound := 10.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	nominal := 0.1 {kg*m^5/mole^5/sec^2};&lt;br /&gt;
END vdwa;&lt;br /&gt;
&lt;br /&gt;
ATOM virialC REFINES solver_var&lt;br /&gt;
	DIMENSION L^6/Q^2&lt;br /&gt;
	DEFAULT 7000.0 {cm^6/mol^2};&lt;br /&gt;
	lower_bound := 0.0 {cm^6/mol^2};&lt;br /&gt;
	upper_bound := 1.0 {m^6/mol^2};&lt;br /&gt;
	nominal := 7000.0 {cm^6/mol^2};&lt;br /&gt;
END virialC;&lt;br /&gt;
&lt;br /&gt;
ATOM virialB REFINES solver_var&lt;br /&gt;
	DIMENSION L^3/Q&lt;br /&gt;
	DEFAULT 1.0 {m^3/mol};&lt;br /&gt;
	lower_bound := -1000.00 {m^3/mol};&lt;br /&gt;
	upper_bound := 1000.0 {m^3/mol};&lt;br /&gt;
	nominal := 1.0 {m^3/mol};&lt;br /&gt;
END virialB;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MODEL idealgas(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume;);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
&lt;br /&gt;
	eq: P*V = R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 298.0 {K};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END idealgas;&lt;br /&gt;
&lt;br /&gt;
MODEL testidealgas;&lt;br /&gt;
&lt;br /&gt;
	ig IS_A idealgas(P,T,V);&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume;&lt;br /&gt;
		&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		RUN ig.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 800.0 {K};&lt;br /&gt;
		RUN ig.values;&lt;br /&gt;
    END values;&lt;br /&gt;
END testidealgas;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4236</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4236"/>
		<updated>2013-06-18T21:30:21Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Create your own models file/library file and include them when you want them */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;quot;johnpye/extpy/extpy&amp;quot;;&lt;br /&gt;
IMPORT &amp;quot;vleplots&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;quot;mymodels.a4c:;&lt;br /&gt;
IMPORT &amp;quot;johnpye/extpy/extpy&amp;quot;;&lt;br /&gt;
IMPORT &amp;quot;vleplots&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=EnzymeKinetics&amp;diff=4235</id>
		<title>EnzymeKinetics</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=EnzymeKinetics&amp;diff=4235"/>
		<updated>2013-06-18T21:25:35Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Solving the Set of Ordinary Differential Equations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enzyme Kinetics. (work in progress, feel free to add/edit/correct!)&lt;br /&gt;
&lt;br /&gt;
Consider the following enzymatic reaction (E is the enzyme, S the substrate,&lt;br /&gt;
ES an enzyme substrate complex and P the product).  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathrm{E}} + {\mathrm{S}} {{{\mathrm{k_1}}\atop{\longrightarrow}} \atop{{\longleftarrow}\atop{{\mathrm{k_{-1}}}}}} {\mathrm{ES}} \stackrel{k_2}{\longrightarrow} \mathrm{E} + \mathrm{P} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Michaelis Menten equation&lt;br /&gt;
is often used to calculate the rate of enzymatic reactions and is arrived at using either&lt;br /&gt;
the pseudo steady state (the rate of change of ES with time is small, almost zero)&lt;br /&gt;
or the equilibrium assumption (that ES is always in equilibrium with E and S, the first&lt;br /&gt;
step in the reaction).  We show how this is arrived at and how to solve the equation.&lt;br /&gt;
&lt;br /&gt;
The elementary reactions are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[S]}{dt} = -k_1 [S][E] + k_{-1}[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[ES]}{dt} = k_1[S][E] - k_{-1}[ES] - k_2[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[E]}{dt} = -k_1 [S][E] + k_{-1}[ES] + k_2[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[P]}{dt} = \mathrm{rate} = k_2 [ES] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are two ways to solve for &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;[&#039;&#039;E&#039;&#039;&#039;&#039;S&#039;&#039;]&amp;lt;/span&amp;gt; so we can get a&lt;br /&gt;
rate expression that includes the substrate concentration and parameters&lt;br /&gt;
that can characterize the nature of the enzyme.&lt;br /&gt;
&lt;br /&gt;
The pseudo steady state (PSS) approximation states that we can assume that &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[ES]}{dt}&amp;lt;/math&amp;gt; is zero, while the equilibrium &lt;br /&gt;
assumption states that &amp;lt;math&amp;gt;{\mathrm{E}} + {\mathrm{S}} {{{\mathrm{k_1}}\atop{\longrightarrow}} \atop{{\longleftarrow}\atop{{\mathrm{k_{-1}}}}}} {\mathrm{ES}} &amp;lt;/math&amp;gt; is at equilibrium.  Either of these assumptions/approximations will lead you to the&lt;br /&gt;
Michaelis Menten form of the rate expression, written as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;rate = -\frac{dS}{dt} = \frac{dP}{dt} = \frac{V_m S}{K_m + S}&amp;lt;/math&amp;gt; where&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;V&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; can be shown to equal &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;k&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039;E&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;E&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; is the initial concentration of the enzyme &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;K&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
is &amp;lt;math&amp;gt;\frac{k_{-1}+k_2}{k_1}&amp;lt;/math&amp;gt;. (If you use the equilibrium assumption, &lt;br /&gt;
you get a very similar expression, where the &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;K&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; is &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{k_{-1}}{k_1}&amp;lt;/math&amp;gt; (PSS is considered a better approximation to use)&lt;br /&gt;
&lt;br /&gt;
The PSS approximation is a good one to make, as long as the substrate&lt;br /&gt;
concentration is much larger than that of the enzyme (you can check this&lt;br /&gt;
by manipulating these concentrations in the model below that includes&lt;br /&gt;
the four differential equations, see what happens if substrate is NOT much &lt;br /&gt;
larger than Enzyme concentration, the PSS assumption breaks down)&lt;br /&gt;
&lt;br /&gt;
In the PyGTK GUI, you can plot any of the dependent variable (Substrate (S), Enzyme (E),&lt;br /&gt;
EnzymeSubstrate Complex (ES) or product (P)) as a function of the independent variable (time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The Michaelis Menten Equation (Simplified Form) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;ivpsystem.a4l&amp;quot;;&lt;br /&gt;
REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL lowKm;&lt;br /&gt;
    dS_dt IS_A rate;&lt;br /&gt;
    Vm IS_A rate;&lt;br /&gt;
&lt;br /&gt;
    Km, S IS_A factor;&lt;br /&gt;
    dS_dt = -Vm*S/(Km + S);&lt;br /&gt;
&lt;br /&gt;
    t IS_A time;&lt;br /&gt;
METHODS&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
&lt;br /&gt;
    RUN reset; RUN values;&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
&lt;br /&gt;
END default_self;&lt;br /&gt;
METHOD specify;&lt;br /&gt;
    FIX Km, Vm, S;&lt;br /&gt;
&lt;br /&gt;
END specify;&lt;br /&gt;
METHOD values;&lt;br /&gt;
    S := 10.0;&lt;br /&gt;
&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
    Vm  := 1.0 {1/s};&lt;br /&gt;
&lt;br /&gt;
    Km := 20.0;&lt;br /&gt;
    t   := 0{s};&lt;br /&gt;
END values;&lt;br /&gt;
&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    S.obs_id :=1;&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD setup;&lt;br /&gt;
RUN specify;&lt;br /&gt;
RUN values;&lt;br /&gt;
END setup;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
    FREE dS_dt;&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2;&lt;br /&gt;
    S.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
END lowKm;&lt;br /&gt;
&lt;br /&gt;
MODEL highKm;&lt;br /&gt;
&lt;br /&gt;
    dS_dt IS_A rate;&lt;br /&gt;
    Vm IS_A rate;&lt;br /&gt;
&lt;br /&gt;
    Km, S IS_A factor;&lt;br /&gt;
    dS_dt = -Vm*S/(Km + S);&lt;br /&gt;
&lt;br /&gt;
    t IS_A time;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
    RUN reset; RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
END default_self;&lt;br /&gt;
&lt;br /&gt;
METHOD specify;&lt;br /&gt;
&lt;br /&gt;
    FIX Km, Vm, S;&lt;br /&gt;
END specify;&lt;br /&gt;
&lt;br /&gt;
METHOD values;&lt;br /&gt;
    S := 10.0;&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    Vm  := 1.0 {1/s};&lt;br /&gt;
    Km := 200.0;&lt;br /&gt;
    t   := 0{s};&lt;br /&gt;
&lt;br /&gt;
END values;&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    S.obs_id :=1;&lt;br /&gt;
&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD setup;&lt;br /&gt;
RUN specify;&lt;br /&gt;
RUN values;&lt;br /&gt;
&lt;br /&gt;
END setup;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
    FREE dS_dt;&lt;br /&gt;
&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2;&lt;br /&gt;
    S.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
&lt;br /&gt;
END highKm;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solving the Set of Ordinary Differential Equations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;ivpsystem.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MODEL simple;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dES_dt IS_A rate;&lt;br /&gt;
dS_dt IS_A rate;&lt;br /&gt;
&lt;br /&gt;
dP_dt IS_A rate;&lt;br /&gt;
dE_dt IS_A rate;&lt;br /&gt;
k1, k2, km1 IS_A rate;&lt;br /&gt;
&lt;br /&gt;
P, E, S, ES IS_A positive_factor;&lt;br /&gt;
&lt;br /&gt;
eq1: dES_dt = k1*E*S - km1*ES - k2*ES;&lt;br /&gt;
&lt;br /&gt;
eq2: dS_dt = -k1*E*S + km1*ES;&lt;br /&gt;
&lt;br /&gt;
eq3: dP_dt = k2*ES;&lt;br /&gt;
eq4: dE_dt = -k1*E*S + km1*ES + k2*ES;&lt;br /&gt;
&lt;br /&gt;
t IS_A time;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
    RUN specify;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
END default_self;&lt;br /&gt;
&lt;br /&gt;
METHOD specify;&lt;br /&gt;
&lt;br /&gt;
FIX k1, km1, k2;&lt;br /&gt;
FREE dS_dt, dP_dt, dE_dt, dES_dt;&lt;br /&gt;
&lt;br /&gt;
FREE S, E, P, ES;&lt;br /&gt;
FIX E, S, P, ES;&lt;br /&gt;
&lt;br /&gt;
END specify;&lt;br /&gt;
&lt;br /&gt;
METHOD values;&lt;br /&gt;
    ES := 0;&lt;br /&gt;
&lt;br /&gt;
    P := 0;&lt;br /&gt;
    S := 1.0;&lt;br /&gt;
    E := 0.1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
    dES_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    dP_dt := 0 {Hz};&lt;br /&gt;
    dE_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    k1 := 1.0 {1/s};&lt;br /&gt;
    km1 := 0.02 {1/s};&lt;br /&gt;
&lt;br /&gt;
    k2 := 0.02 {1/s};&lt;br /&gt;
    t   := 0 {s};&lt;br /&gt;
&lt;br /&gt;
END values;&lt;br /&gt;
&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    ES.obs_id :=1;&lt;br /&gt;
&lt;br /&gt;
    E.obs_id := 4;&lt;br /&gt;
    S.obs_id := 2;&lt;br /&gt;
&lt;br /&gt;
    P.obs_id := 3;&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    ES.ode_id := 2; dES_dt.ode_id := 2;&lt;br /&gt;
&lt;br /&gt;
    E.ode_id := 3; dE_dt.ode_id := 3;&lt;br /&gt;
&lt;br /&gt;
    P.ode_id := 4; dP_dt.ode_id := 4;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2; dES_dt.ode_type := 2; dP_dt.ode_type := 2; dE_dt.ode_type := 2;&lt;br /&gt;
&lt;br /&gt;
    S.ode_type := 1; E.ode_type := 1; ES.ode_type := 1; P.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
END simple;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=EnzymeKinetics&amp;diff=4234</id>
		<title>EnzymeKinetics</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=EnzymeKinetics&amp;diff=4234"/>
		<updated>2013-06-18T21:23:59Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* The Michaelis Menten Equation (Simplified Form) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Enzyme Kinetics. (work in progress, feel free to add/edit/correct!)&lt;br /&gt;
&lt;br /&gt;
Consider the following enzymatic reaction (E is the enzyme, S the substrate,&lt;br /&gt;
ES an enzyme substrate complex and P the product).  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathrm{E}} + {\mathrm{S}} {{{\mathrm{k_1}}\atop{\longrightarrow}} \atop{{\longleftarrow}\atop{{\mathrm{k_{-1}}}}}} {\mathrm{ES}} \stackrel{k_2}{\longrightarrow} \mathrm{E} + \mathrm{P} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Michaelis Menten equation&lt;br /&gt;
is often used to calculate the rate of enzymatic reactions and is arrived at using either&lt;br /&gt;
the pseudo steady state (the rate of change of ES with time is small, almost zero)&lt;br /&gt;
or the equilibrium assumption (that ES is always in equilibrium with E and S, the first&lt;br /&gt;
step in the reaction).  We show how this is arrived at and how to solve the equation.&lt;br /&gt;
&lt;br /&gt;
The elementary reactions are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[S]}{dt} = -k_1 [S][E] + k_{-1}[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[ES]}{dt} = k_1[S][E] - k_{-1}[ES] - k_2[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[E]}{dt} = -k_1 [S][E] + k_{-1}[ES] + k_2[ES]&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[P]}{dt} = \mathrm{rate} = k_2 [ES] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are two ways to solve for &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;[&#039;&#039;E&#039;&#039;&#039;&#039;S&#039;&#039;]&amp;lt;/span&amp;gt; so we can get a&lt;br /&gt;
rate expression that includes the substrate concentration and parameters&lt;br /&gt;
that can characterize the nature of the enzyme.&lt;br /&gt;
&lt;br /&gt;
The pseudo steady state (PSS) approximation states that we can assume that &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{d[ES]}{dt}&amp;lt;/math&amp;gt; is zero, while the equilibrium &lt;br /&gt;
assumption states that &amp;lt;math&amp;gt;{\mathrm{E}} + {\mathrm{S}} {{{\mathrm{k_1}}\atop{\longrightarrow}} \atop{{\longleftarrow}\atop{{\mathrm{k_{-1}}}}}} {\mathrm{ES}} &amp;lt;/math&amp;gt; is at equilibrium.  Either of these assumptions/approximations will lead you to the&lt;br /&gt;
Michaelis Menten form of the rate expression, written as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;rate = -\frac{dS}{dt} = \frac{dP}{dt} = \frac{V_m S}{K_m + S}&amp;lt;/math&amp;gt; where&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;V&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; can be shown to equal &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;k&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039;E&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; where&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;E&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; is the initial concentration of the enzyme &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;K&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
is &amp;lt;math&amp;gt;\frac{k_{-1}+k_2}{k_1}&amp;lt;/math&amp;gt;. (If you use the equilibrium assumption, &lt;br /&gt;
you get a very similar expression, where the &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;K&#039;&#039;&amp;lt;sub&amp;gt;&#039;&#039;m&#039;&#039;&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; is &lt;br /&gt;
&amp;lt;math&amp;gt;\frac{k_{-1}}{k_1}&amp;lt;/math&amp;gt; (PSS is considered a better approximation to use)&lt;br /&gt;
&lt;br /&gt;
The PSS approximation is a good one to make, as long as the substrate&lt;br /&gt;
concentration is much larger than that of the enzyme (you can check this&lt;br /&gt;
by manipulating these concentrations in the model below that includes&lt;br /&gt;
the four differential equations, see what happens if substrate is NOT much &lt;br /&gt;
larger than Enzyme concentration, the PSS assumption breaks down)&lt;br /&gt;
&lt;br /&gt;
In the PyGTK GUI, you can plot any of the dependent variable (Substrate (S), Enzyme (E),&lt;br /&gt;
EnzymeSubstrate Complex (ES) or product (P)) as a function of the independent variable (time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The Michaelis Menten Equation (Simplified Form) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;ivpsystem.a4l&amp;quot;;&lt;br /&gt;
REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL lowKm;&lt;br /&gt;
    dS_dt IS_A rate;&lt;br /&gt;
    Vm IS_A rate;&lt;br /&gt;
&lt;br /&gt;
    Km, S IS_A factor;&lt;br /&gt;
    dS_dt = -Vm*S/(Km + S);&lt;br /&gt;
&lt;br /&gt;
    t IS_A time;&lt;br /&gt;
METHODS&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
&lt;br /&gt;
    RUN reset; RUN values;&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
&lt;br /&gt;
END default_self;&lt;br /&gt;
METHOD specify;&lt;br /&gt;
    FIX Km, Vm, S;&lt;br /&gt;
&lt;br /&gt;
END specify;&lt;br /&gt;
METHOD values;&lt;br /&gt;
    S := 10.0;&lt;br /&gt;
&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
    Vm  := 1.0 {1/s};&lt;br /&gt;
&lt;br /&gt;
    Km := 20.0;&lt;br /&gt;
    t   := 0{s};&lt;br /&gt;
END values;&lt;br /&gt;
&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    S.obs_id :=1;&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD setup;&lt;br /&gt;
RUN specify;&lt;br /&gt;
RUN values;&lt;br /&gt;
END setup;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
    FREE dS_dt;&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2;&lt;br /&gt;
    S.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
END lowKm;&lt;br /&gt;
&lt;br /&gt;
MODEL highKm;&lt;br /&gt;
&lt;br /&gt;
    dS_dt IS_A rate;&lt;br /&gt;
    Vm IS_A rate;&lt;br /&gt;
&lt;br /&gt;
    Km, S IS_A factor;&lt;br /&gt;
    dS_dt = -Vm*S/(Km + S);&lt;br /&gt;
&lt;br /&gt;
    t IS_A time;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
    RUN reset; RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
END default_self;&lt;br /&gt;
&lt;br /&gt;
METHOD specify;&lt;br /&gt;
&lt;br /&gt;
    FIX Km, Vm, S;&lt;br /&gt;
END specify;&lt;br /&gt;
&lt;br /&gt;
METHOD values;&lt;br /&gt;
    S := 10.0;&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    Vm  := 1.0 {1/s};&lt;br /&gt;
    Km := 200.0;&lt;br /&gt;
    t   := 0{s};&lt;br /&gt;
&lt;br /&gt;
END values;&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    S.obs_id :=1;&lt;br /&gt;
&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD setup;&lt;br /&gt;
RUN specify;&lt;br /&gt;
RUN values;&lt;br /&gt;
&lt;br /&gt;
END setup;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
    FREE dS_dt;&lt;br /&gt;
&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2;&lt;br /&gt;
    S.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
&lt;br /&gt;
END highKm;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solving the Set of Ordinary Differential Equations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;ivpsystem.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MODEL simple;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dES_dt IS_A rate;&lt;br /&gt;
dS_dt IS_A rate;&lt;br /&gt;
&lt;br /&gt;
dP_dt IS_A rate;&lt;br /&gt;
dE_dt IS_A rate;&lt;br /&gt;
k1, k2, km1 IS_A rate;&lt;br /&gt;
&lt;br /&gt;
P, E, S, ES IS_A positive_factor;&lt;br /&gt;
&lt;br /&gt;
eq1: dES_dt = k1*E*S - km1*ES - k2*ES;&lt;br /&gt;
&lt;br /&gt;
eq2: dS_dt = -k1*E*S + km1*ES;&lt;br /&gt;
&lt;br /&gt;
eq3: dP_dt = k2*ES;&lt;br /&gt;
eq4: dE_dt = -k1*E*S + km1*ES + k2*ES;&lt;br /&gt;
&lt;br /&gt;
t IS_A time;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHOD on_load;&lt;br /&gt;
&lt;br /&gt;
    RUN default_self;&lt;br /&gt;
    RUN specify;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN set_obs;&lt;br /&gt;
&lt;br /&gt;
    RUN set_ode;&lt;br /&gt;
&lt;br /&gt;
END on_load;&lt;br /&gt;
&lt;br /&gt;
METHOD default_self;&lt;br /&gt;
END default_self;&lt;br /&gt;
&lt;br /&gt;
METHOD specify;&lt;br /&gt;
&lt;br /&gt;
FIX k1, km1, k2;&lt;br /&gt;
FREE dS_dt, dP_dt, dE_dt, dES_dt;&lt;br /&gt;
&lt;br /&gt;
FREE S, E, P, ES;&lt;br /&gt;
FIX E, S, P, ES;&lt;br /&gt;
&lt;br /&gt;
END specify;&lt;br /&gt;
&lt;br /&gt;
METHOD values;&lt;br /&gt;
    ES := 0;&lt;br /&gt;
&lt;br /&gt;
    P := 0;&lt;br /&gt;
    S := 1.0;&lt;br /&gt;
    E := 0.1;&lt;br /&gt;
&lt;br /&gt;
    dS_dt := 0 {Hz};&lt;br /&gt;
    dES_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    dP_dt := 0 {Hz};&lt;br /&gt;
    dE_dt := 0 {Hz};&lt;br /&gt;
&lt;br /&gt;
    k1 := 1.0 {1/s};&lt;br /&gt;
    km1 := 0.02 {1/s};&lt;br /&gt;
&lt;br /&gt;
    k2 := 0.02 {1/s};&lt;br /&gt;
    t   := 0 {s};&lt;br /&gt;
&lt;br /&gt;
END values;&lt;br /&gt;
&lt;br /&gt;
METHOD set_obs;&lt;br /&gt;
    ES.obs_id :=1;&lt;br /&gt;
&lt;br /&gt;
    E.obs_id := 4;&lt;br /&gt;
    S.obs_id := 2;&lt;br /&gt;
&lt;br /&gt;
    P.obs_id := 3;&lt;br /&gt;
END set_obs;&lt;br /&gt;
&lt;br /&gt;
METHOD set_ode;&lt;br /&gt;
&lt;br /&gt;
    S.ode_id := 1;   dS_dt.ode_id := 1;&lt;br /&gt;
&lt;br /&gt;
    ES.ode_id := 2; dES_dt.ode_id := 2;&lt;br /&gt;
&lt;br /&gt;
    E.ode_id := 3; dE_dt.ode_id := 3;&lt;br /&gt;
&lt;br /&gt;
    P.ode_id := 4; dP_dt.ode_id := 4;&lt;br /&gt;
&lt;br /&gt;
    dS_dt.ode_type := 2; dES_dt.ode_type := 2; dP_dt.ode_type := 2; dE_dt.ode_type := 2;&lt;br /&gt;
&lt;br /&gt;
    S.ode_type := 1; E.ode_type := 1; ES.ode_type := 1; P.ode_type := 1;&lt;br /&gt;
&lt;br /&gt;
    t.ode_type :=-1;&lt;br /&gt;
&lt;br /&gt;
END set_ode;&lt;br /&gt;
END simple;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4233</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4233"/>
		<updated>2013-06-18T21:22:39Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Using the PyGTK interface create Txy and Pxy plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;quot;johnpye/extpy/extpy&amp;quot;;&lt;br /&gt;
IMPORT &amp;quot;vleplots&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4231</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4231"/>
		<updated>2013-06-18T21:21:02Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Define a MODEL for antoine so you can add more component values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4229</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4229"/>
		<updated>2013-06-18T21:19:47Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Enter Temperature as Degrees C not in Kelvin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4226</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4226"/>
		<updated>2013-06-18T21:14:35Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Constants in a METHOD called values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4225</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4225"/>
		<updated>2013-06-18T21:13:37Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Using an exponential function, instead of natural log  (here&amp;#039;s why) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=VLE_examples&amp;diff=4224</id>
		<title>VLE examples</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=VLE_examples&amp;diff=4224"/>
		<updated>2013-06-18T21:12:33Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 IMPORT &amp;quot;johnpye/extpy/extpy&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 IMPORT &amp;quot;vleplot&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 MODEL modifiedraoult;&lt;br /&gt;
&lt;br /&gt;
    (* first declare the variables you are working with *)&lt;br /&gt;
&lt;br /&gt;
    T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
    P, P1S, P2S IS_A pressure;&lt;br /&gt;
&lt;br /&gt;
    A IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    gamma1, gamma2 IS_A positive_factor;&lt;br /&gt;
&lt;br /&gt;
    Pfac IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    A1, B1, C1 IS_A positive_factor;&lt;br /&gt;
    A2, B2, C2 IS_A positive_factor; x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
    (* now write down the equations that describe the vapor liquid equilibrium *)&lt;br /&gt;
    (* Antoine&#039;s equation for vapor pressure *)&lt;br /&gt;
&lt;br /&gt;
    vp1: P1S/1000.0{Pa} = exp(A1 - B1/(T/1{K} - C1));&lt;br /&gt;
&lt;br /&gt;
    vp2: P2S/1000.0{Pa} = exp(A2 - B2/(T/1{K} - C2));&lt;br /&gt;
&lt;br /&gt;
    (* summation equations for mole fractions in vapor and liquid phases *)&lt;br /&gt;
&lt;br /&gt;
    sumx: x1 + x2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    sumy: y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    (* the modified form of Raoult&#039;s Law - with a simple model for the activity coefficients *)&lt;br /&gt;
&lt;br /&gt;
    vle1: x1*gamma1*P1S = y1*P;&lt;br /&gt;
&lt;br /&gt;
    vle2: x2*gamma2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
    (* equations for the activity coefficients *)&lt;br /&gt;
&lt;br /&gt;
    activity1: gamma1 = exp(A*x2*x2);&lt;br /&gt;
&lt;br /&gt;
    activity2: gamma2 = exp(A*x1*x1);&lt;br /&gt;
&lt;br /&gt;
    eqA: A = 2.771 - 0.00523*T/1.0{K};&lt;br /&gt;
&lt;br /&gt;
    Pfac*100000.0 {Pa} = P;&lt;br /&gt;
&lt;br /&gt;
 METHODS&lt;br /&gt;
&lt;br /&gt;
     METHOD default_self;&lt;br /&gt;
         A1 := 16.59158;B1 := 3643.31;C1 := 33.424;&lt;br /&gt;
&lt;br /&gt;
         A2 := 14.25326;B2 := 2665.54;C2 := 53.424;&lt;br /&gt;
&lt;br /&gt;
     END default_self;&lt;br /&gt;
&lt;br /&gt;
     METHOD specify;&lt;br /&gt;
     FIX A1, B1, C1, A2, B2, C2;&lt;br /&gt;
&lt;br /&gt;
     FIX T, x1;&lt;br /&gt;
     END specify;&lt;br /&gt;
&lt;br /&gt;
     METHOD values;&lt;br /&gt;
&lt;br /&gt;
         T := 318.15 {K};&lt;br /&gt;
         x1 := 0.25;&lt;br /&gt;
     END values;&lt;br /&gt;
&lt;br /&gt;
     METHOD on_load;&lt;br /&gt;
     RUN reset;&lt;br /&gt;
     RUN values;&lt;br /&gt;
&lt;br /&gt;
     RUN default_self;&lt;br /&gt;
     END on_load;&lt;br /&gt;
&lt;br /&gt;
         METHOD fancyplot;&lt;br /&gt;
&lt;br /&gt;
     EXTERNAL vleplot(SELF);&lt;br /&gt;
         END fancyplot;&lt;br /&gt;
&lt;br /&gt;
 END modifiedraoult;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the vleplot.py (most of the work by John)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;# python script for calculating Pressure versus y from T and x&lt;br /&gt;
 # binary system, modified raoult&#039;s law, simple activity coefficient model&lt;br /&gt;
&lt;br /&gt;
 import extpy&lt;br /&gt;
 from pylab import *&lt;br /&gt;
&lt;br /&gt;
 from solverreporter import *&lt;br /&gt;
&lt;br /&gt;
 def vleplot(self):&lt;br /&gt;
&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # I have chosen three temperatures&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
    for T in [320,340,370]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
 #&lt;br /&gt;
 # collect the data for plotting in two sets of arrays (one for X, one for Y)&lt;br /&gt;
 # I have two sets here - one for P versus y and other for P versus x&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # change x1 from 0 to 1.0&lt;br /&gt;
 # there has to be a space between &amp;amp;quot;in&amp;amp;quot; and &amp;amp;quot;[&amp;amp;quot;&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
 #&lt;br /&gt;
 # send the pair of values T x1 to the solver&lt;br /&gt;
 # and append the Pressure and y1 (from the solver) to the arrays&lt;br /&gt;
&lt;br /&gt;
 # the x&#039;s are also appended&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
 ## plot the data&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
&lt;br /&gt;
 ## legend()&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
 extpy.registermethod(vleplot)&lt;br /&gt;
 #the above method can be called using &amp;amp;quot;EXTERNAL vleplot(self)&amp;amp;quot; in ASCEND.&lt;br /&gt;
 # if you want to see the azeotrope clearly, restrict the calculation to one&lt;br /&gt;
&lt;br /&gt;
 # temperature&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4223</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4223"/>
		<updated>2013-06-18T21:09:57Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* No Units, All variables declared as Factors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4222</id>
		<title>Vapor-liquid equilibrium</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vapor-liquid_equilibrium&amp;diff=4222"/>
		<updated>2013-06-18T21:08:02Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: /* Defining Units like Pressure and Temperature */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt at describing how models can be written for solutions in vapor-liquid equilibrium. The answer is written in stages, to show how a model might reasonably be developed using ASCEND.&lt;br /&gt;
&lt;br /&gt;
The first stage being all variables defined as a &amp;quot;factor&amp;quot;. Variables are later defined as &amp;quot;pressure&amp;quot; or &amp;quot;temperature&amp;quot; and so on. While ASCEND allows the modeler to write without much/any structure, &lt;br /&gt;
as the models become more complex and as the need for their distribution becomes greater, paying attention to the art of model writing becomes important.Yet, when a new user starts with the ASCEND documentation, it can be difficult to read through the elegant models.  Thus, this exercise.  Note that the discussion in the [[Intro to ASCEND - thin walled tank|thin-walled tank tutorial]] details the type of thinking we use here in evolving a model.&lt;br /&gt;
&lt;br /&gt;
The example ends with how &#039;&#039;P-x-y&#039;&#039; or &#039;&#039;T-x-y&#039;&#039; plots can be generated python and the scripts written by [[User:Jpye|John Pye]]. The page was written by [[User:Kchittur|Krishnan Chittur]].&lt;br /&gt;
&lt;br /&gt;
== Question ==&lt;br /&gt;
&lt;br /&gt;
This is Example 10.1 from the book &#039;&#039;Chemical Engineering Thermodynamics&#039;&#039; by Van Ness and Smith, 7th Edition, page 352. [[Special:BookSources/0073104450|ISBN 0073104450]] (read online with Amazon).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:solid 1 pt green&amp;quot;&amp;gt;&lt;br /&gt;
Binary system acetonitrile(1)/nitromethane(2) conforms closely to Raolt&#039;s law. Vapour pressures for the pure species are given by the following [http://antoine.frostburg.edu/chem/senese/101/liquids/faq/antoine-vapor-pressure.shtml Antoine equations]:&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_1^{sat}}{1 \mathrm{kPa}} = 14.2724 - \frac{2945.47}{(T/{1^\circ \mathrm C)} + 224.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ln \frac{p_2^{sat}}{1 \mathrm{kPa}} = 14.2043 - \frac{2972.64}{(T/{1^\circ \mathrm C)} + 209.00}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
:(a) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;p&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a temperature of 75 °C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:(b) Prepare a graph showing &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; vs &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; for a pressure of 70 kPa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Answer ==&lt;br /&gt;
A brief explanation of the variables. &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;&amp;lt;/span&amp;gt; is the system temperature,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;&amp;lt;/span&amp;gt; is the total system pressure,&lt;br /&gt;
&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components in the&lt;br /&gt;
liquid phase and &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; are the mole fractions of the two components&lt;br /&gt;
in the vapor phase and &amp;lt;math&amp;gt;P_1^S, P_2^S&amp;lt;/math&amp;gt; are the vapor pressures&lt;br /&gt;
of components 1 and 2 (which we assume we can predict using&lt;br /&gt;
Antoine&#039;s equation and &amp;lt;math&amp;gt;A_1, B_1, C_1, A_2, B_2~and~C_2&amp;lt;/math&amp;gt; are the &lt;br /&gt;
Antoine&#039;s coefficients).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The relevant equations are (for a binary system)&lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 P_1^S = y_1 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x_2 P_2^S = y_2 P&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; + &#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; = 1.0&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_1^S) = A_1 - \frac{B_1}{T + C_1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;ln(P_2^S) = A_2 - \frac{B_2}{T + C_2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Name of Calculation&lt;br /&gt;
!  What is Known&lt;br /&gt;
!  What we want to calculate&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Pressure&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Bubble Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|  Dew Point Temperature&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;P&#039;&#039;,&#039;&#039;y&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|  &amp;lt;span class=&amp;quot;texhtml&amp;quot;&amp;gt;&#039;&#039;T&#039;&#039;,&#039;&#039;x&#039;&#039;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== No Units, All variables declared as Factors ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
    P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    ln(P1S) = 14.2724 - 2945.47/(T + 224.0);&lt;br /&gt;
&lt;br /&gt;
    ln(P2S) = 14.2043 - 2972.64/(T + 209.0);&lt;br /&gt;
&lt;br /&gt;
    x1 + x2 = 1.0;&lt;br /&gt;
    y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    x1*P1S = y1*P;&lt;br /&gt;
    x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
        FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.6;&lt;br /&gt;
        T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
        FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
        x1 := 0.1;&lt;br /&gt;
        P := 70.0;&lt;br /&gt;
            T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
        RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
            RUN ClearAll;&lt;br /&gt;
        RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using an exponential function, instead of natural log [[VLEWhy#UsingExponential| (here&#039;s why)]]===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S = exp(14.2724 - 2945.47/(T + 224.0));&lt;br /&gt;
&lt;br /&gt;
P2S = exp(14.2043 - 2972.64/(T + 209.0));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constants in a METHOD called values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P, T, x1, x2, y1, y2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
ln(P1S) = A1 - B1/(T + C1);&lt;br /&gt;
&lt;br /&gt;
ln(P2S) = A2 - B2/(T + C2);&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD values;&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 75.0;&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0;&lt;br /&gt;
        T := 300.0;&lt;br /&gt;
&lt;br /&gt;
    END partb;&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Defining Units like Pressure and Temperature ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;REQUIRE &amp;quot;atoms.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
P1S/100000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/100000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enter Temperature as Degrees C not in Kelvin ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
&lt;br /&gt;
    A1 := 14.2724; B1 := 2945.47; C1 := 224.0;&lt;br /&gt;
&lt;br /&gt;
    A2 := 14.2043; B2 := 2972.64; C2 := 209.0;&lt;br /&gt;
&lt;br /&gt;
    FIX A1; FIX B1; FIX C1; FIX A2; FIX B2; FIX C2;&lt;br /&gt;
&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN values;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Define a MODEL for antoine so you can add more component values ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using the PyGTK interface create Txy and Pxy plots ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is the &#039;&#039;&#039;Python script&#039;&#039;&#039; that should be in ascdata or where ASCEND/pygtk can find it:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; Script written by John Pye, minor changes by Krishnan Chittur.  There are two methods txy and pxyplot &#039;&#039;&lt;br /&gt;
{{src|models/kchittur/vleplots.py}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;import extpy&lt;br /&gt;
from pylab import *&lt;br /&gt;
&lt;br /&gt;
from solverreporter import *&lt;br /&gt;
def txyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for P in [70000.0]:&lt;br /&gt;
&lt;br /&gt;
        self.P.setRealValue(P)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        TT1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        TT2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;P =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (P,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                TT1.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                TT2.append(float(self.TdegC))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,TT1)&lt;br /&gt;
        plot(XX2,TT2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(txyplot)&lt;br /&gt;
&lt;br /&gt;
def pxyplot(self):&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
    for T in [340]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
extpy.registermethod(pxyplot)&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create your own models file/library file and include them when you want them ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
REQUIRE &amp;amp;quot;mymodels.a4c&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
IMPORT &amp;amp;quot;vleplots&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL example101;&lt;br /&gt;
&lt;br /&gt;
A1, B1, C1, A2, B2, C2 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
P1S, P2S, P IS_A pressure;&lt;br /&gt;
T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
T_degC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
TdegC IS_A factor;&lt;br /&gt;
&lt;br /&gt;
nc1, nc2 IS_A symbol_constant;&lt;br /&gt;
&lt;br /&gt;
nc1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
nc2 :== &#039;nitromethane&#039;;&lt;br /&gt;
&lt;br /&gt;
mync1 IS_A antoine(nc1);&lt;br /&gt;
&lt;br /&gt;
mync2 IS_A antoine(nc2);&lt;br /&gt;
&lt;br /&gt;
A1 = mync1.A;&lt;br /&gt;
&lt;br /&gt;
B1 = mync1.B;&lt;br /&gt;
C1 = mync1.C;&lt;br /&gt;
A2 = mync2.A;&lt;br /&gt;
&lt;br /&gt;
B2 = mync2.B;&lt;br /&gt;
C2 = mync2.C;&lt;br /&gt;
&lt;br /&gt;
P1S/1000.0{Pa} = exp(A1 - B1/(T/1.0{K} - 273.15 + C1));&lt;br /&gt;
&lt;br /&gt;
P2S/1000.0{Pa} = exp(A2 - B2/(T/1.0{K} - 273.15 + C2));&lt;br /&gt;
&lt;br /&gt;
x1 + x2 = 1.0;&lt;br /&gt;
y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
x1*P1S = y1*P;&lt;br /&gt;
x2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
T_degC = T/1{K} - 273.15;&lt;br /&gt;
TdegC = T_degC;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
&lt;br /&gt;
    METHOD parta;&lt;br /&gt;
    FIX T; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.6;&lt;br /&gt;
    T := 348.15 {K};&lt;br /&gt;
    END parta;&lt;br /&gt;
&lt;br /&gt;
    METHOD partb;&lt;br /&gt;
    FIX P; FIX x1;&lt;br /&gt;
&lt;br /&gt;
    x1 := 0.1;&lt;br /&gt;
    P := 70.0 {kPa};&lt;br /&gt;
    END partb;&lt;br /&gt;
&lt;br /&gt;
    METHOD doparta;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
&lt;br /&gt;
    END doparta;&lt;br /&gt;
&lt;br /&gt;
    METHOD dopartb;&lt;br /&gt;
        RUN ClearAll;&lt;br /&gt;
&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    END dopartb;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN parta;&lt;br /&gt;
    RUN doparta;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL pxyplot(SELF);&lt;br /&gt;
        END generatepxyplot;&lt;br /&gt;
&lt;br /&gt;
        METHOD generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
    RUN ClearAll;&lt;br /&gt;
    RUN partb;&lt;br /&gt;
    RUN dopartb;&lt;br /&gt;
&lt;br /&gt;
        EXTERNAL txyplot(SELF);&lt;br /&gt;
        END generatetxyplot;&lt;br /&gt;
&lt;br /&gt;
END example101;&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;This file named mymodels.a4c&#039;&#039;&#039; has the model antoine and should be in ascdata (preferably) or share/ascend/models and you can add/edit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
MODEL antoine(nc WILL_BE symbol_constant;);&lt;br /&gt;
&lt;br /&gt;
A, B, C IS_A factor;&lt;br /&gt;
&lt;br /&gt;
SELECT(nc)&lt;br /&gt;
&lt;br /&gt;
CASE &#039;acetonitrile&#039;:A = 14.2724; B = 2945.47; C = 224.070;&lt;br /&gt;
&lt;br /&gt;
CASE &#039;nitromethane&#039;:A = 14.2043; B = 2972.64; C = 209.000;&lt;br /&gt;
&lt;br /&gt;
END SELECT;&lt;br /&gt;
&lt;br /&gt;
END antoine;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Ideas ==&lt;br /&gt;
&#039;&#039; Extend this to multiple components (more than 2) and create a &#039;components file&#039; for antoine coefficients &#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4217</id>
		<title>Equations of state</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4217"/>
		<updated>2013-06-18T04:19:02Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In physics and thermodynamics, an equation of state is a relation between state variables.[1] More specifically, an equation of state is a thermodynamic equation describing the state of matter under a given set of physical conditions. It is a constitutive equation which provides a mathematical relationship between two or more state functions associated with the matter, such as its temperature, pressure, volume, or internal energy. Equations of state are useful in describing the properties of fluids, mixtures of fluids, solids, and even the interior of stars.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Cubic Equations of State&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Cubic equations of state are called such because they can be rewritten as a cubic function of Vm.&lt;br /&gt;
&lt;br /&gt;
All the models below are first modeled as a general, re-usable model and then used in a test-model. &lt;br /&gt;
This code defines virial coefficients as well as the model for ideal gas laws: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
REQUIRE &amp;quot;thermodynamics.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ATOM vdwa REFINES solver_var&lt;br /&gt;
	DIMENSION M*L^5/Q^2/T^2&lt;br /&gt;
	DEFAULT 0.1 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	lower_bound := 0.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	upper_bound := 10.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	nominal := 0.1 {kg*m^5/mole^5/sec^2};&lt;br /&gt;
END vdwa;&lt;br /&gt;
&lt;br /&gt;
ATOM virialC REFINES solver_var&lt;br /&gt;
	DIMENSION L^6/Q^2&lt;br /&gt;
	DEFAULT 7000.0 {cm^6/mol^2};&lt;br /&gt;
	lower_bound := 0.0 {cm^6/mol^2};&lt;br /&gt;
	upper_bound := 1.0 {m^6/mol^2};&lt;br /&gt;
	nominal := 7000.0 {cm^6/mol^2};&lt;br /&gt;
END virialC;&lt;br /&gt;
&lt;br /&gt;
ATOM virialB REFINES solver_var&lt;br /&gt;
	DIMENSION L^3/Q&lt;br /&gt;
	DEFAULT 1.0 {m^3/mol};&lt;br /&gt;
	lower_bound := -1000.00 {m^3/mol};&lt;br /&gt;
	upper_bound := 1000.0 {m^3/mol};&lt;br /&gt;
	nominal := 1.0 {m^3/mol};&lt;br /&gt;
END virialB;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MODEL idealgas(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume;);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
&lt;br /&gt;
	eq: P*V = R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 298.0 {K};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END idealgas;&lt;br /&gt;
&lt;br /&gt;
MODEL testidealgas;&lt;br /&gt;
&lt;br /&gt;
	ig IS_A idealgas(P,T,V);&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume;&lt;br /&gt;
		&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		RUN ig.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 800.0 {K};&lt;br /&gt;
		RUN ig.values;&lt;br /&gt;
    END values;&lt;br /&gt;
END testidealgas;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== &#039;&#039;&#039;Van der Waals equation of state&#039;&#039;&#039; ==&lt;br /&gt;
The [[Van der Waals equation]] of state may be written:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{\left(p + \frac{a}{V_m^2}\right)\left(V_m-b\right) = RT}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;V_m&amp;lt;/math&amp;gt; is [[molar volume]]. The substance-specific constants &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; can be calculated from the [[critical properties]] &amp;lt;math&amp;gt;p_c, T_c&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;V_c&amp;lt;/math&amp;gt; (noting that &amp;lt;math&amp;gt;V_c&amp;lt;/math&amp;gt; is the molar volume at the critical point) as:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;a = 3p_c \,V_c^2&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;b = \frac{V_c}{3}.&amp;lt;/math&amp;gt;&lt;br /&gt;
Also written as&lt;br /&gt;
:&amp;lt;math&amp;gt;a = \frac{27(R\,T_c)^2}{64p_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;b = \frac{R\,T_c}{8p_c}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The van der Waals equation may be considered as the ideal gas law, “improved” due to two independent reasons:&lt;br /&gt;
# Molecules are thought as particles with volume, not material points. Thus &amp;lt;math&amp;gt;V_m&amp;lt;/math&amp;gt; cannot be too little, less than some constant. So we get (&amp;lt;math&amp;gt;V_m - b&amp;lt;/math&amp;gt;) instead of &amp;lt;math&amp;gt;V_m&amp;lt;/math&amp;gt;.&lt;br /&gt;
# While ideal gas molecules do not interact, we consider molecules attracting others within a distance of several molecules&#039; radii. It makes no effect inside the material, but surface molecules are attracted into the material from the surface. We see this as diminishing of pressure on the outer shell (which is used in the ideal gas law), so we write (&amp;lt;math&amp;gt;p +&amp;lt;/math&amp;gt; something) instead of &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. To evaluate this ‘something’, let&#039;s examine an additional force acting on an element of gas surface. While the force acting on each surface molecule is ~&amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, the force acting on the whole element is ~&amp;lt;math&amp;gt;\rho^2&amp;lt;/math&amp;gt;~&amp;lt;math&amp;gt;\frac{1}{V_m^2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the reduced state variables, i.e. V&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;=V&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;/V&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;, P&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;=P/P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt; and T&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;=T/T&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;, the reduced form of the Van der Waals equation can be formulated:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{\left(P_r + \frac{3}{V_r^2}\right)\left(3V_r-1\right) = 8T_r}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The benefit of this form is that for given T&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt; and P&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;, the reduced volume of the liquid and gas can be calculated directly using [[Cubic function#Cardano.27s_method|Cardano&#039;s method]] for the reduced cubic form:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{V_r^3-\left(\frac{1}{3}+ \frac{8T_r}{3P_r}\right)V_r^2+\frac{3V_r}{P_r}-\frac{1}{P_r}=0}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For P&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;&amp;lt;1 and T&amp;lt;sub&amp;gt;r&amp;lt;/sub&amp;gt;&amp;lt;1, the system is in a state of vapor-liquid equilibrium. The reduced cubic equation of state yields in that case 3 solutions. The largest and the lowest solution are the gas and liquid reduced volume.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL vanderwaals(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume;&lt;br /&gt;
	Z WILL_BE factor;&lt;br /&gt;
	data WILL_BE td_component_constants;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	b IS_A molar_volume;&lt;br /&gt;
	a IS_A vdwa;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
	eq: (P*V^2 + a)*(V - b) = R*T*V^2;&lt;br /&gt;
	eqb: b*8.0*data.Pc = R*data.Tc;&lt;br /&gt;
	eqa: a*64.0*data.Pc = 27.0*R^2*(data.Tc)^2;&lt;br /&gt;
	eqc: Z*R*T = P*V;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
	    P.fixed := TRUE;&lt;br /&gt;
	    T.fixed := TRUE;&lt;br /&gt;
	    V.fixed := FALSE;&lt;br /&gt;
	    Z.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
	    P := 12.0 {atm};&lt;br /&gt;
	    T := 298.15 {K};&lt;br /&gt;
	    V := 0.075 {m^3/mole};&lt;br /&gt;
	    V.nominal := 0.05 {m^3/mole};&lt;br /&gt;
	    V.upper_bound := 100 {m^3/mole};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END vanderwaals;&lt;br /&gt;
&lt;br /&gt;
MODEL testvanderwaals;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	vd IS_A vanderwaals(P,T,V,Z,cd.data[c1]);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume;&lt;br /&gt;
	Z IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;  &lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		Z.fixed := FALSE;&lt;br /&gt;
		RUN vd.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN vd.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testvanderwaals;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL truncated_virial_equation (P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature; V WILL_BE molar_volume; Z WILL_BE factor;  &lt;br /&gt;
	data WILL_BE td_component_constants;);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	omega IS_A factor; &lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	B IS_A virialB;&lt;br /&gt;
	C IS_A virialC;&lt;br /&gt;
&lt;br /&gt;
	Bhat, B0, B1 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: Bhat = B0 + omega*B1;&lt;br /&gt;
	eq5: B0*Tr^(1.6) = 0.083*Tr^(1.6) - 0.422;&lt;br /&gt;
	eq6: B1*Tr^(4.2) = 0.139*Tr^(4.2) - 0.172;&lt;br /&gt;
&lt;br /&gt;
	eq7: Z = 1.0 + B0*Pr/Tr + omega*B1*Pr/Tr;&lt;br /&gt;
&lt;br /&gt;
	eq8: Z*R*T = P*V;&lt;br /&gt;
	eq9: B = Bhat*1.0{m^3/mol};&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T_degC.fixed := FALSE;&lt;br /&gt;
		T.fixed := TRUE;  &lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END truncated_virial_equation;&lt;br /&gt;
&lt;br /&gt;
MODEL testtruncatedvirial;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tve IS_A truncated_virial_equation(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tve.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tve.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testtruncatedvirial; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== &#039;&#039;&#039;Redlich–Kwong equation of state&#039;&#039;&#039; ===&lt;br /&gt;
:&amp;lt;math&amp;gt;{p = \frac{R\,T}{V_m-b} - \frac{a}{\sqrt{T}\,V_m\left(V_m+b\right)}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;a = \frac{0.42748\,R^2\,T_c^{\,2.5}}{p_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;b = \frac{0.08662\,R\,T_c}{p_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Redlich–Kwong equation is adequate for calculation of gas phase properties when the ratio of the pressure to the [[critical properties|critical pressure]] (reduced pressure) is less than about one-half of the ratio of the temperature to the [[critical properties|critical temperature]] (reduced temperature):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{p}{p_c} &amp;lt; \frac{T}{2T_c}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL rk(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.42748; &lt;br /&gt;
	OMEGA :== 0.08664; &lt;br /&gt;
	sigma :== 1.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = Tr^(0.5);&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 1.0;&lt;br /&gt;
    END values;&lt;br /&gt;
END rk;&lt;br /&gt;
&lt;br /&gt;
MODEL testrk;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	trk IS_A rk(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN trk.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
		METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN trk.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testrk; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== &#039;&#039;&#039;Soave modification of Redlich–Kwong&#039;&#039;&#039; ===&lt;br /&gt;
:&amp;lt;math&amp;gt;p = \frac{R\,T}{V_m-b} - \frac{a\,\alpha}{V_m\left(V_m+b\right)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;a = \frac{0.427\,R^2\,T_c^2}{P_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;b = \frac{0.08664\,R\,T_c}{P_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\alpha = \left(1 + \left(0.48508 + 1.55171\,\omega - 0.15613\,\omega^2\right) \left(1-T_r^{\,0.5}\right)\right)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;T_r = \frac{T}{T_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where ω is the [[acentric factor]] for the species.&lt;br /&gt;
&lt;br /&gt;
This formulation for &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is due to Graboski and Daubert.  The original formulation from Soave is:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\alpha = \left(1 + \left(0.48 + 1.574\,\omega - 0.176\,\omega^2\right) \left(1-T_r^{\,0.5}\right)\right)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for hydrogen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\alpha = 1.202 \exp\left(-0.30288\,T_r\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can also write it in the polynomial form, with: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \frac{a\,\alpha\,P}{R^2\,T^2}&amp;lt;/math&amp;gt; &lt;br /&gt;
:&amp;lt;math&amp;gt;B = \frac{b\,P}{R\,T}&amp;lt;/math&amp;gt;&lt;br /&gt;
then we have:&lt;br /&gt;
:&amp;lt;math&amp;gt;0 = Z^3-Z^2+Z\left(A-B-B^2\right)-AB&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL srk(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.42748; &lt;br /&gt;
	OMEGA :== 0.08664; &lt;br /&gt;
	sigma :== 1.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = (1.0 + (0.480+1.574*omega-0.176*omega^2)*(1.0-Tr^(0.5)))^2;&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 1.0;&lt;br /&gt;
    END values;&lt;br /&gt;
END srk;&lt;br /&gt;
&lt;br /&gt;
MODEL testsrk;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tsrk IS_A srk(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tsrk.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tsrk.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testsrk; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== &#039;&#039;&#039;Peng–Robinson equation of state&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;p=\frac{R\,T}{V_m-b} - \frac{a\,\alpha}{V_m^2+2bV_m-b^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;a = \frac{0.457235\,R^2\,T_c^2}{p_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;b = \frac{0.077796\,R\,T_c}{p_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\alpha = \left(1 + \kappa \left(1-T_r^{\,0.5}\right)\right)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\kappa = 0.37464 + 1.54226\,\omega - 0.26992\,\omega^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;T_r = \frac{T}{T_c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In polynomial form:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \frac{a\alpha p}{ R^2\,T^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;B = \frac{b p}{RT}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Z^3 - (1-B)\ Z^2 + (A-2B-3B^2)\ Z -(AB-B^2-B^3) = 0 \,\!&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where, &amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt; is the [[acentric factor]] of the species, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; is the [[universal gas constant]] and Z=PV/(RT) is [[compressibility factor]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL pengrobinson(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.45724; &lt;br /&gt;
	OMEGA :== 0.07780; &lt;br /&gt;
	sigma :== 2.414213562; &lt;br /&gt;
	eps :== 0.414213562; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = (1.0 + (0.37464+1.54226*omega-0.26992*omega^2)*(1.0-Tr^(0.5)))^2;&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 0.1;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END pengrobinson;&lt;br /&gt;
&lt;br /&gt;
MODEL testpengrobinson;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tpeng IS_A pengrobinson(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tpeng.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tpeng.values;&lt;br /&gt;
    END values;&lt;br /&gt;
  &lt;br /&gt;
END testpengrobinson; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL vdw(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	alpha, PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 27.0/64.0; &lt;br /&gt;
	OMEGA :== 1.0/8.0; &lt;br /&gt;
	sigma :== 0.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
	alpha :== 1.0;&lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
	    P.fixed := TRUE;&lt;br /&gt;
	    T.fixed := TRUE;&lt;br /&gt;
	    T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
	    P := 12.0 {bar};&lt;br /&gt;
	    T := 298.15 {K};&lt;br /&gt;
	    Z.lower_bound := 0.0;&lt;br /&gt;
	    Z.upper_bound := 10.0;&lt;br /&gt;
	    Z.nominal := 0.1;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END vdw;&lt;br /&gt;
&lt;br /&gt;
MODEL testvdw;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tvdw IS_A vdw(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tvdw.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tvdw.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testvdw; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This a test model to run all the models above. &lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL testall;&lt;br /&gt;
&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	Vvanderwaals, Vvdw, Videal, Vtruncvirial, Vrk, Vsrk, Vpeng IS_A molar_volume; &lt;br /&gt;
	Zvanderwaals, Zvdw, Ztruncvirial, Zrk, Zsrk, Zpeng IS_A factor; &lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	ig IS_A idealgas(P,T,Videal);&lt;br /&gt;
	vd IS_A vanderwaals(P,T,Vvanderwaals,Zvanderwaals,cd.data[c1]);&lt;br /&gt;
	vdd IS_A vdw(P,T,Vvdw,Zvdw,cd.data[c1]);&lt;br /&gt;
	tve IS_A truncated_virial_equation(P,T,Vtruncvirial,Ztruncvirial,cd.data[c1]);&lt;br /&gt;
	trk IS_A rk(P,T,Vrk,Zrk,cd.data[c1]);&lt;br /&gt;
	tsrk IS_A srk(P,T,Vsrk,Zsrk,cd.data[c1]); &lt;br /&gt;
	tpeng IS_A pengrobinson(P,T,Vpeng,Zpeng,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		(* RUN ClearAll; *)&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		Videal.fixed := FALSE;&lt;br /&gt;
		Vvanderwaals.fixed := FALSE;&lt;br /&gt;
		Vvdw.fixed := FALSE;&lt;br /&gt;
		Vtruncvirial.fixed := FALSE;&lt;br /&gt;
		Vrk.fixed := FALSE;&lt;br /&gt;
		Vsrk.fixed := FALSE;&lt;br /&gt;
		Vpeng.fixed := FALSE;&lt;br /&gt;
		Zvanderwaals.fixed := FALSE;&lt;br /&gt;
		Zvdw.fixed := FALSE;&lt;br /&gt;
		Ztruncvirial.fixed := FALSE;&lt;br /&gt;
		Zrk.fixed := FALSE;&lt;br /&gt;
		Zsrk.fixed := FALSE;&lt;br /&gt;
		Zpeng.fixed := FALSE;&lt;br /&gt;
		RUN ig.specify;&lt;br /&gt;
		RUN vd.specify;&lt;br /&gt;
		RUN vdd.specify;&lt;br /&gt;
		RUN tve.specify;&lt;br /&gt;
		RUN trk.specify;&lt;br /&gt;
		RUN tsrk.specify;&lt;br /&gt;
		RUN tpeng.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 306.12 {atm};&lt;br /&gt;
		T := 561 {K};&lt;br /&gt;
		RUN ig.values;&lt;br /&gt;
		RUN vd.values;&lt;br /&gt;
		RUN vdd.values;&lt;br /&gt;
		RUN tve.values;&lt;br /&gt;
		RUN trk.values;&lt;br /&gt;
		RUN tsrk.values;&lt;br /&gt;
		RUN tpeng.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testall;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4216</id>
		<title>Equations of state</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Equations_of_state&amp;diff=4216"/>
		<updated>2013-06-18T03:51:32Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: Created page with &amp;quot;In physics and thermodynamics, an equation of state is a relation between state variables.[1] More specifically, an equation of state is a thermodynamic equation describing th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In physics and thermodynamics, an equation of state is a relation between state variables.[1] More specifically, an equation of state is a thermodynamic equation describing the state of matter under a given set of physical conditions. It is a constitutive equation which provides a mathematical relationship between two or more state functions associated with the matter, such as its temperature, pressure, volume, or internal energy. Equations of state are useful in describing the properties of fluids, mixtures of fluids, solids, and even the interior of stars.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Cubic Equations of State&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Cubic equations of state are called such because they can be rewritten as a cubic function of Vm.&lt;br /&gt;
&lt;br /&gt;
All the models below are first modeled as a general, re-usable model and then used in a test-model. &lt;br /&gt;
This code defines virial coefficients as well as the model for ideal gas laws: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
REQUIRE &amp;quot;thermodynamics.a4l&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
ATOM vdwa REFINES solver_var&lt;br /&gt;
	DIMENSION M*L^5/Q^2/T^2&lt;br /&gt;
	DEFAULT 0.1 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	lower_bound := 0.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	upper_bound := 10.0 {kg*m^5/mole^2/sec^2};&lt;br /&gt;
	nominal := 0.1 {kg*m^5/mole^5/sec^2};&lt;br /&gt;
END vdwa;&lt;br /&gt;
&lt;br /&gt;
ATOM virialC REFINES solver_var&lt;br /&gt;
	DIMENSION L^6/Q^2&lt;br /&gt;
	DEFAULT 7000.0 {cm^6/mol^2};&lt;br /&gt;
	lower_bound := 0.0 {cm^6/mol^2};&lt;br /&gt;
	upper_bound := 1.0 {m^6/mol^2};&lt;br /&gt;
	nominal := 7000.0 {cm^6/mol^2};&lt;br /&gt;
END virialC;&lt;br /&gt;
&lt;br /&gt;
ATOM virialB REFINES solver_var&lt;br /&gt;
	DIMENSION L^3/Q&lt;br /&gt;
	DEFAULT 1.0 {m^3/mol};&lt;br /&gt;
	lower_bound := -1000.00 {m^3/mol};&lt;br /&gt;
	upper_bound := 1000.0 {m^3/mol};&lt;br /&gt;
	nominal := 1.0 {m^3/mol};&lt;br /&gt;
END virialB;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MODEL idealgas(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume;);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
&lt;br /&gt;
	eq: P*V = R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 298.0 {K};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END idealgas;&lt;br /&gt;
&lt;br /&gt;
MODEL testidealgas;&lt;br /&gt;
&lt;br /&gt;
	ig IS_A idealgas(P,T,V);&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume;&lt;br /&gt;
		&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		RUN ig.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 1.0 {atm};&lt;br /&gt;
		T := 800.0 {K};&lt;br /&gt;
		RUN ig.values;&lt;br /&gt;
    END values;&lt;br /&gt;
END testidealgas;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Van der Waals equation of state&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL vanderwaals(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume;&lt;br /&gt;
	Z WILL_BE factor;&lt;br /&gt;
	data WILL_BE td_component_constants;&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	b IS_A molar_volume;&lt;br /&gt;
	a IS_A vdwa;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
	eq: (P*V^2 + a)*(V - b) = R*T*V^2;&lt;br /&gt;
	eqb: b*8.0*data.Pc = R*data.Tc;&lt;br /&gt;
	eqa: a*64.0*data.Pc = 27.0*R^2*(data.Tc)^2;&lt;br /&gt;
	eqc: Z*R*T = P*V;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
	    P.fixed := TRUE;&lt;br /&gt;
	    T.fixed := TRUE;&lt;br /&gt;
	    V.fixed := FALSE;&lt;br /&gt;
	    Z.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
	    P := 12.0 {atm};&lt;br /&gt;
	    T := 298.15 {K};&lt;br /&gt;
	    V := 0.075 {m^3/mole};&lt;br /&gt;
	    V.nominal := 0.05 {m^3/mole};&lt;br /&gt;
	    V.upper_bound := 100 {m^3/mole};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END vanderwaals;&lt;br /&gt;
&lt;br /&gt;
MODEL testvanderwaals;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	vd IS_A vanderwaals(P,T,V,Z,cd.data[c1]);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume;&lt;br /&gt;
	Z IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;  &lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		Z.fixed := FALSE;&lt;br /&gt;
		RUN vd.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN vd.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testvanderwaals;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL truncated_virial_equation (P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature; V WILL_BE molar_volume; Z WILL_BE factor;  &lt;br /&gt;
	data WILL_BE td_component_constants;);&lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	omega IS_A factor; &lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	B IS_A virialB;&lt;br /&gt;
	C IS_A virialC;&lt;br /&gt;
&lt;br /&gt;
	Bhat, B0, B1 IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: Bhat = B0 + omega*B1;&lt;br /&gt;
	eq5: B0*Tr^(1.6) = 0.083*Tr^(1.6) - 0.422;&lt;br /&gt;
	eq6: B1*Tr^(4.2) = 0.139*Tr^(4.2) - 0.172;&lt;br /&gt;
&lt;br /&gt;
	eq7: Z = 1.0 + B0*Pr/Tr + omega*B1*Pr/Tr;&lt;br /&gt;
&lt;br /&gt;
	eq8: Z*R*T = P*V;&lt;br /&gt;
	eq9: B = Bhat*1.0{m^3/mol};&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T_degC.fixed := FALSE;&lt;br /&gt;
		T.fixed := TRUE;  &lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END truncated_virial_equation;&lt;br /&gt;
&lt;br /&gt;
MODEL testtruncatedvirial;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tve IS_A truncated_virial_equation(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tve.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tve.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testtruncatedvirial; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL rk(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;&lt;br /&gt;
); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.42748; &lt;br /&gt;
	OMEGA :== 0.08664; &lt;br /&gt;
	sigma :== 1.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = Tr^(0.5);&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 1.0;&lt;br /&gt;
    END values;&lt;br /&gt;
END rk;&lt;br /&gt;
&lt;br /&gt;
MODEL testrk;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	trk IS_A rk(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN trk.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
		METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN trk.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testrk; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL srk(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.42748; &lt;br /&gt;
	OMEGA :== 0.08664; &lt;br /&gt;
	sigma :== 1.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = (1.0 + (0.480+1.574*omega-0.176*omega^2)*(1.0-Tr^(0.5)))^2;&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 1.0;&lt;br /&gt;
    END values;&lt;br /&gt;
END srk;&lt;br /&gt;
&lt;br /&gt;
MODEL testsrk;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tsrk IS_A srk(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tsrk.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tsrk.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testsrk; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL pengrobinson(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	alpha, beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 0.45724; &lt;br /&gt;
	OMEGA :== 0.07780; &lt;br /&gt;
	sigma :== 2.414213562; &lt;br /&gt;
	eps :== 0.414213562; &lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq4: alpha = (1.0 + (0.37464+1.54226*omega-0.26992*omega^2)*(1.0-Tr^(0.5)))^2;&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
        P.fixed := TRUE;&lt;br /&gt;
        T.fixed := TRUE;&lt;br /&gt;
        T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
        P := 12.0 {bar};&lt;br /&gt;
        T := 298.15 {K};&lt;br /&gt;
        Z.lower_bound := 0.0;&lt;br /&gt;
        Z.upper_bound := 10.0;&lt;br /&gt;
        Z.nominal := 0.1;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END pengrobinson;&lt;br /&gt;
&lt;br /&gt;
MODEL testpengrobinson;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tpeng IS_A pengrobinson(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tpeng.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tpeng.values;&lt;br /&gt;
    END values;&lt;br /&gt;
  &lt;br /&gt;
END testpengrobinson; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL vdw(P WILL_BE pressure;&lt;br /&gt;
	T WILL_BE temperature;&lt;br /&gt;
	V WILL_BE molar_volume; &lt;br /&gt;
	Z WILL_BE factor; &lt;br /&gt;
	data WILL_BE td_component_constants;); &lt;br /&gt;
&lt;br /&gt;
	R IS_A molar_gas_constant;&lt;br /&gt;
	Pc IS_A pressure;&lt;br /&gt;
	Tc IS_A temperature;&lt;br /&gt;
	T_degC IS_A factor;&lt;br /&gt;
	beta, q,Tr, Pr, omega IS_A factor;&lt;br /&gt;
&lt;br /&gt;
	alpha, PSI, OMEGA, sigma, eps IS_A real_constant; &lt;br /&gt;
&lt;br /&gt;
	PSI :== 27.0/64.0; &lt;br /&gt;
	OMEGA :== 1.0/8.0; &lt;br /&gt;
	sigma :== 0.0; &lt;br /&gt;
	eps :== 0.0; &lt;br /&gt;
	alpha :== 1.0;&lt;br /&gt;
&lt;br /&gt;
	Pc = data.Pc;&lt;br /&gt;
	Tc = data.Tc;&lt;br /&gt;
	omega = data.omega;&lt;br /&gt;
&lt;br /&gt;
	eq1: Tr = T/Tc;&lt;br /&gt;
	eq2: Pr = P/Pc;&lt;br /&gt;
	eq3: T_degC = T/1{K} - 273.15;&lt;br /&gt;
&lt;br /&gt;
	eq5: q = PSI*alpha/(OMEGA*Tr);&lt;br /&gt;
	eq6: beta = OMEGA*Pr/Tr;&lt;br /&gt;
	eq7: Z = 1.0 + beta - q*beta*(Z - beta)/((Z + eps*beta)*(Z + sigma*beta));&lt;br /&gt;
	eq8: P*V = Z*R*T;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
	    P.fixed := TRUE;&lt;br /&gt;
	    T.fixed := TRUE;&lt;br /&gt;
	    T_degC.fixed := FALSE;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
	    P := 12.0 {bar};&lt;br /&gt;
	    T := 298.15 {K};&lt;br /&gt;
	    Z.lower_bound := 0.0;&lt;br /&gt;
	    Z.upper_bound := 10.0;&lt;br /&gt;
	    Z.nominal := 0.1;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END vdw;&lt;br /&gt;
&lt;br /&gt;
MODEL testvdw;&lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;ethylene&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	V IS_A molar_volume; &lt;br /&gt;
	Z IS_A factor; &lt;br /&gt;
	tvdw IS_A vdw(P,T,V,Z,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		RUN ClearAll;&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		V.fixed := FALSE;&lt;br /&gt;
		Z.fixed := FALSE;  &lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		RUN tvdw.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 12.0 {bar};&lt;br /&gt;
		T := 298.15 {K};&lt;br /&gt;
		RUN tvdw.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testvdw; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=a4c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MODEL testall;&lt;br /&gt;
&lt;br /&gt;
	P IS_A pressure;&lt;br /&gt;
	T IS_A temperature;&lt;br /&gt;
	Vvanderwaals, Vvdw, Videal, Vtruncvirial, Vrk, Vsrk, Vpeng IS_A molar_volume; &lt;br /&gt;
	Zvanderwaals, Zvdw, Ztruncvirial, Zrk, Zsrk, Zpeng IS_A factor; &lt;br /&gt;
&lt;br /&gt;
	c1 IS_A symbol_constant;&lt;br /&gt;
	c1 :== &#039;acetonitrile&#039;;&lt;br /&gt;
	cd IS_A components_data([c1],c1);&lt;br /&gt;
	Tr, Pr IS_A factor;&lt;br /&gt;
	ig IS_A idealgas(P,T,Videal);&lt;br /&gt;
	vd IS_A vanderwaals(P,T,Vvanderwaals,Zvanderwaals,cd.data[c1]);&lt;br /&gt;
	vdd IS_A vdw(P,T,Vvdw,Zvdw,cd.data[c1]);&lt;br /&gt;
	tve IS_A truncated_virial_equation(P,T,Vtruncvirial,Ztruncvirial,cd.data[c1]);&lt;br /&gt;
	trk IS_A rk(P,T,Vrk,Zrk,cd.data[c1]);&lt;br /&gt;
	tsrk IS_A srk(P,T,Vsrk,Zsrk,cd.data[c1]); &lt;br /&gt;
	tpeng IS_A pengrobinson(P,T,Vpeng,Zpeng,cd.data[c1]); &lt;br /&gt;
&lt;br /&gt;
	eqTr: Tr = T/cd.data[c1].Tc;&lt;br /&gt;
	eqPr: Pr = P/cd.data[c1].Pc;&lt;br /&gt;
&lt;br /&gt;
METHODS&lt;br /&gt;
    METHOD default_self;&lt;br /&gt;
		(* RUN ClearAll; *)&lt;br /&gt;
		RUN specify;&lt;br /&gt;
		RUN values;&lt;br /&gt;
    END default_self;&lt;br /&gt;
    METHOD specify;&lt;br /&gt;
		P.fixed := TRUE;&lt;br /&gt;
		T.fixed := TRUE;&lt;br /&gt;
		Videal.fixed := FALSE;&lt;br /&gt;
		Vvanderwaals.fixed := FALSE;&lt;br /&gt;
		Vvdw.fixed := FALSE;&lt;br /&gt;
		Vtruncvirial.fixed := FALSE;&lt;br /&gt;
		Vrk.fixed := FALSE;&lt;br /&gt;
		Vsrk.fixed := FALSE;&lt;br /&gt;
		Vpeng.fixed := FALSE;&lt;br /&gt;
		Zvanderwaals.fixed := FALSE;&lt;br /&gt;
		Zvdw.fixed := FALSE;&lt;br /&gt;
		Ztruncvirial.fixed := FALSE;&lt;br /&gt;
		Zrk.fixed := FALSE;&lt;br /&gt;
		Zsrk.fixed := FALSE;&lt;br /&gt;
		Zpeng.fixed := FALSE;&lt;br /&gt;
		RUN ig.specify;&lt;br /&gt;
		RUN vd.specify;&lt;br /&gt;
		RUN vdd.specify;&lt;br /&gt;
		RUN tve.specify;&lt;br /&gt;
		RUN trk.specify;&lt;br /&gt;
		RUN tsrk.specify;&lt;br /&gt;
		RUN tpeng.specify;&lt;br /&gt;
    END specify;&lt;br /&gt;
    METHOD values;&lt;br /&gt;
		P := 306.12 {atm};&lt;br /&gt;
		T := 561 {K};&lt;br /&gt;
		RUN ig.values;&lt;br /&gt;
		RUN vd.values;&lt;br /&gt;
		RUN vdd.values;&lt;br /&gt;
		RUN tve.values;&lt;br /&gt;
		RUN trk.values;&lt;br /&gt;
		RUN tsrk.values;&lt;br /&gt;
		RUN tpeng.values;&lt;br /&gt;
    END values;&lt;br /&gt;
&lt;br /&gt;
END testall;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4215</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4215"/>
		<updated>2013-06-18T02:26:53Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will summarise the models that exist for Chemical Engineering problems using ASCEND. &lt;br /&gt;
&lt;br /&gt;
* [[Thermodynamics with ASCEND]] : consists models dealing with calculating physical property data and phase equilibria.&lt;br /&gt;
* {{src|models/thermodynamics_example.a4c.}} : this file includes a range of examples that show how to use ASCEND for thermodynamics calculations with physical property data from the ASCEND &#039;thermodynamics.a4l&#039; library.&lt;br /&gt;
* [[Vapor-liquid equilibrium]] : describes how to write models for solutions in vapor-liquid equilibrium using ASCEND. &lt;br /&gt;
* [[VLE examples]] : models dealing with vapor-liwuid equlibrium. &lt;br /&gt;
* [[Equations OF State]] : &lt;br /&gt;
* [[Conditional modelling]] : this page demonstrates the logic of solving problems involving conditional modelling. &lt;br /&gt;
* {{src|models/heatex.a4c}}This example shows how we can represent and solve a conditional model containing differential equations for a heat exchanger using ASCEND conditional solver, CMSlv.&lt;br /&gt;
* [[EnzymeKinetics]] : consists of models solving Michaelis Menten equations and ODEs. &lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4214</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4214"/>
		<updated>2013-06-18T02:04:09Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will summarise the models that exist for Chemical Engineering problems using ASCEND. &lt;br /&gt;
&lt;br /&gt;
* [[Thermodynamics with ASCEND]] : consists models dealing with calculating physical property data and phase equilibria.&lt;br /&gt;
* {{src|models/thermodynamics_example.a4c.}} : this file includes a range of examples that show how to use ASCEND for thermodynamics calculations with physical property data from the ASCEND &#039;thermodynamics.a4l&#039; library.&lt;br /&gt;
* [[Vapor-liquid equilibrium]] : describes how to write models for solutions in vapor-liquid equilibrium using ASCEND. &lt;br /&gt;
* [[VLE examples]] : models dealing with vapor-liwuid equlibrium. &lt;br /&gt;
* [[Conditional modelling]] : this page demonstrates the logic of solving problems involving conditional modelling. &lt;br /&gt;
* {{src|models/heatex.a4c}}This example shows how we can represent and solve a conditional model containing differential equations for a heat exchanger using ASCEND conditional solver, CMSlv.&lt;br /&gt;
* [[EnzymeKinetics]] : consists of models solving Michaelis Menten equations and ODEs. &lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Vleexample&amp;diff=4213</id>
		<title>Vleexample</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Vleexample&amp;diff=4213"/>
		<updated>2013-06-18T01:48:41Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved Vleexample to VLE examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[VLE examples]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=VLE_examples&amp;diff=4212</id>
		<title>VLE examples</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=VLE_examples&amp;diff=4212"/>
		<updated>2013-06-18T01:48:41Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved Vleexample to VLE examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;REQUIRE &amp;amp;quot;atoms.a4l&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 IMPORT &amp;amp;quot;johnpye/extpy/extpy&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 IMPORT &amp;amp;quot;vleplot&amp;amp;quot;;&lt;br /&gt;
&lt;br /&gt;
 MODEL modifiedraoult;&lt;br /&gt;
&lt;br /&gt;
    (* first declare the variables you are working with *)&lt;br /&gt;
&lt;br /&gt;
    T IS_A temperature;&lt;br /&gt;
&lt;br /&gt;
    P, P1S, P2S IS_A pressure;&lt;br /&gt;
&lt;br /&gt;
    A IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    gamma1, gamma2 IS_A positive_factor;&lt;br /&gt;
&lt;br /&gt;
    Pfac IS_A factor;&lt;br /&gt;
&lt;br /&gt;
    A1, B1, C1 IS_A positive_factor;&lt;br /&gt;
    A2, B2, C2 IS_A positive_factor; x1, x2, y1, y2 IS_A fraction;&lt;br /&gt;
&lt;br /&gt;
    (* now write down the equations that describe the vapor liquid equilibrium *)&lt;br /&gt;
    (* Antoine&#039;s equation for vapor pressure *)&lt;br /&gt;
&lt;br /&gt;
    vp1: P1S/1000.0{Pa} = exp(A1 - B1/(T/1{K} - C1));&lt;br /&gt;
&lt;br /&gt;
    vp2: P2S/1000.0{Pa} = exp(A2 - B2/(T/1{K} - C2));&lt;br /&gt;
&lt;br /&gt;
    (* summation equations for mole fractions in vapor and liquid phases *)&lt;br /&gt;
&lt;br /&gt;
    sumx: x1 + x2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    sumy: y1 + y2 = 1.0;&lt;br /&gt;
&lt;br /&gt;
    (* the modified form of Raoult&#039;s Law - with a simple model for the activity coefficients *)&lt;br /&gt;
&lt;br /&gt;
    vle1: x1*gamma1*P1S = y1*P;&lt;br /&gt;
&lt;br /&gt;
    vle2: x2*gamma2*P2S = y2*P;&lt;br /&gt;
&lt;br /&gt;
    (* equations for the activity coefficients *)&lt;br /&gt;
&lt;br /&gt;
    activity1: gamma1 = exp(A*x2*x2);&lt;br /&gt;
&lt;br /&gt;
    activity2: gamma2 = exp(A*x1*x1);&lt;br /&gt;
&lt;br /&gt;
    eqA: A = 2.771 - 0.00523*T/1.0{K};&lt;br /&gt;
&lt;br /&gt;
    Pfac*100000.0 {Pa} = P;&lt;br /&gt;
&lt;br /&gt;
 METHODS&lt;br /&gt;
&lt;br /&gt;
     METHOD default_self;&lt;br /&gt;
         A1 := 16.59158;B1 := 3643.31;C1 := 33.424;&lt;br /&gt;
&lt;br /&gt;
         A2 := 14.25326;B2 := 2665.54;C2 := 53.424;&lt;br /&gt;
&lt;br /&gt;
     END default_self;&lt;br /&gt;
&lt;br /&gt;
     METHOD specify;&lt;br /&gt;
     FIX A1, B1, C1, A2, B2, C2;&lt;br /&gt;
&lt;br /&gt;
     FIX T, x1;&lt;br /&gt;
     END specify;&lt;br /&gt;
&lt;br /&gt;
     METHOD values;&lt;br /&gt;
&lt;br /&gt;
         T := 318.15 {K};&lt;br /&gt;
         x1 := 0.25;&lt;br /&gt;
     END values;&lt;br /&gt;
&lt;br /&gt;
     METHOD on_load;&lt;br /&gt;
     RUN reset;&lt;br /&gt;
     RUN values;&lt;br /&gt;
&lt;br /&gt;
     RUN default_self;&lt;br /&gt;
     END on_load;&lt;br /&gt;
&lt;br /&gt;
         METHOD fancyplot;&lt;br /&gt;
&lt;br /&gt;
     EXTERNAL vleplot(SELF);&lt;br /&gt;
         END fancyplot;&lt;br /&gt;
&lt;br /&gt;
 END modifiedraoult;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the vleplot.py (most of the work by John)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;a4c&amp;quot;&amp;gt;# python script for calculating Pressure versus y from T and x&lt;br /&gt;
 # binary system, modified raoult&#039;s law, simple activity coefficient model&lt;br /&gt;
&lt;br /&gt;
 import extpy&lt;br /&gt;
 from pylab import *&lt;br /&gt;
&lt;br /&gt;
 from solverreporter import *&lt;br /&gt;
&lt;br /&gt;
 def vleplot(self):&lt;br /&gt;
&lt;br /&gt;
    browser = extpy.getbrowser()&lt;br /&gt;
    ioff()&lt;br /&gt;
    figure()&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # I have chosen three temperatures&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
    for T in [320,340,370]:&lt;br /&gt;
&lt;br /&gt;
        self.T.setRealValue(T)&lt;br /&gt;
 #&lt;br /&gt;
 # collect the data for plotting in two sets of arrays (one for X, one for Y)&lt;br /&gt;
 # I have two sets here - one for P versus y and other for P versus x&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
        XX1 = []&lt;br /&gt;
        PP1 = []&lt;br /&gt;
        XX2 = []&lt;br /&gt;
        PP2 = []&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # change x1 from 0 to 1.0&lt;br /&gt;
 # there has to be a space between &amp;amp;quot;in&amp;amp;quot; and &amp;amp;quot;[&amp;amp;quot;&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
        for x1 in [0.01,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.7,0.75,0.8,0.85,0.9,0.95,0.99]:&lt;br /&gt;
&lt;br /&gt;
            self.x1.setRealValue(x1)&lt;br /&gt;
 #&lt;br /&gt;
 # send the pair of values T x1 to the solver&lt;br /&gt;
 # and append the Pressure and y1 (from the solver) to the arrays&lt;br /&gt;
&lt;br /&gt;
 # the x&#039;s are also appended&lt;br /&gt;
            try:&lt;br /&gt;
                browser.sim.solve(browser.solver,SimpleSolverReporter(browser,message=&amp;amp;quot;T =&amp;amp;nbsp;%f, x1 =&amp;amp;nbsp;%f&amp;amp;quot; % (T,x1)))&lt;br /&gt;
&lt;br /&gt;
                XX1.append(float(self.x1))&lt;br /&gt;
                PP1.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
                XX2.append(float(self.y1))&lt;br /&gt;
                PP2.append(float(self.P))&lt;br /&gt;
&lt;br /&gt;
            except:&lt;br /&gt;
                browser.reporter.reportError(&#039;Failed to solve for x1 =&amp;amp;nbsp;%f&#039; % x1)&lt;br /&gt;
&lt;br /&gt;
                continue&lt;br /&gt;
 ## plot the data&lt;br /&gt;
        plot(XX1,PP1)&lt;br /&gt;
        plot(XX2,PP2)&lt;br /&gt;
&lt;br /&gt;
        hold(1)&lt;br /&gt;
&lt;br /&gt;
 ## legend()&lt;br /&gt;
    ion()&lt;br /&gt;
    show()&lt;br /&gt;
&lt;br /&gt;
 extpy.registermethod(vleplot)&lt;br /&gt;
 #the above method can be called using &amp;amp;quot;EXTERNAL vleplot(self)&amp;amp;quot; in ASCEND.&lt;br /&gt;
 # if you want to see the azeotrope clearly, restrict the calculation to one&lt;br /&gt;
&lt;br /&gt;
 # temperature&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4211</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4211"/>
		<updated>2013-06-18T01:27:58Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will summarise the models that exist for Chemical Engineering problems using ASCEND. &lt;br /&gt;
&lt;br /&gt;
* [[Thermodynamics with ASCEND]] : consists models dealing with calculating physical property data and phase equilibria.&lt;br /&gt;
&lt;br /&gt;
[[test]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Talk:Chemical_Engineering&amp;diff=4210</id>
		<title>Talk:Chemical Engineering</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Talk:Chemical_Engineering&amp;diff=4210"/>
		<updated>2013-06-18T01:18:27Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved Talk:Chemical Engineering to Talk:Chemical Engineering Models with ASCEND&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Chemical Engineering Models with ASCEND]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=User:Priya.bagde123&amp;diff=4208</id>
		<title>User:Priya.bagde123</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=User:Priya.bagde123&amp;diff=4208"/>
		<updated>2013-06-18T01:18:09Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved Chemical Engineering to Chemical Engineering Models with ASCEND&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Chemical Engineering Models with ASCEND]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4207</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4207"/>
		<updated>2013-06-18T01:18:09Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved Chemical Engineering to Chemical Engineering Models with ASCEND&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am in 5th year of chemical engineering pursuing dual degree (B.Tech + M.Tech) from IIT Bombay. I am working upon my dual degree project which is &amp;quot;Popularising ASCEND for academic learning in chemical engineering&amp;quot; under the guidance of Prof. Kannan Moudgalya. I have coded a few solutions to the examples from the book &amp;quot;Elementary principles of chemical processes&amp;quot; by Felder &amp;amp; Rousseau as a part of this project.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
jvbjhgvbujbi&lt;br /&gt;
&lt;br /&gt;
[[test]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4206</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4206"/>
		<updated>2013-06-17T22:29:54Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am in 5th year of chemical engineering pursuing dual degree (B.Tech + M.Tech) from IIT Bombay. I am working upon my dual degree project which is &amp;quot;Popularising ASCEND for academic learning in chemical engineering&amp;quot; under the guidance of Prof. Kannan Moudgalya. I have coded a few solutions to the examples from the book &amp;quot;Elementary principles of chemical processes&amp;quot; by Felder &amp;amp; Rousseau as a part of this project.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
jvbjhgvbujbi&lt;br /&gt;
&lt;br /&gt;
[[test]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4203</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4203"/>
		<updated>2013-06-16T23:02:57Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am in 5th year of chemical engineering pursuing dual degree (B.Tech + M.Tech) from IIT Bombay. I am working upon my dual degree project which is &amp;quot;Popularising ASCEND for academic learning in chemical engineering&amp;quot; under the guidance of Prof. Kannan Moudgalya. I have coded a few solutions to the examples from the book &amp;quot;Elementary principles of chemical processes&amp;quot; by Felder &amp;amp; Rousseau as a part of this project.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
jvbjhgvbujbi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://ascend4.org/Help:Contents Help Contents]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=User_talk:Priya.bagde123&amp;diff=4202</id>
		<title>User talk:Priya.bagde123</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=User_talk:Priya.bagde123&amp;diff=4202"/>
		<updated>2013-06-16T23:00:01Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved User talk:Priya.bagde123 to Talk:Chemical Engineering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Talk:Chemical Engineering]]&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4199</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4199"/>
		<updated>2013-06-16T22:59:43Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: moved User:Priya.bagde123 to Chemical Engineering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am in 5th year of chemical engineering pursuing dual degree (B.Tech + M.Tech) from IIT Bombay. I am working upon my dual degree project which is &amp;quot;Popularising ASCEND for academic learning in chemical engineering&amp;quot; under the guidance of Prof. Kannan Moudgalya. I have coded a few solutions to the examples from the book &amp;quot;Elementary principles of chemical processes&amp;quot; by Felder &amp;amp; Rousseau as a part of this project.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
jvbjhgvbujbi&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
	<entry>
		<id>https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4197</id>
		<title>Chemical Engineering Models with ASCEND</title>
		<link rel="alternate" type="text/html" href="https://ascend4.org/index.php?title=Chemical_Engineering_Models_with_ASCEND&amp;diff=4197"/>
		<updated>2013-06-16T22:29:21Z</updated>

		<summary type="html">&lt;p&gt;Priya.bagde123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I am in 5th year of chemical engineering pursuing dual degree (B.Tech + M.Tech) from IIT Bombay. I am working upon my dual degree project which is &amp;quot;Popularising ASCEND for academic learning in chemical engineering&amp;quot; under the guidance of Prof. Kannan Moudgalya. I have coded a few solutions to the examples from the book &amp;quot;Elementary principles of chemical processes&amp;quot; by Felder &amp;amp; Rousseau as a part of this project.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
jvbjhgvbujbi&lt;/div&gt;</summary>
		<author><name>Priya.bagde123</name></author>
	</entry>
</feed>