% \iffalse meta-comment % File: thermodynamics.dtx Copyright (C) 2021 Karl D. Hammond % % Karl D. Hammond % Chemical Engineering Program % University of Missouri % Contact: hammondkd@missouri.edu % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is K. D. Hammond. % % This work consists of the files thermodynamics.dtx and thermodynamics.ins % and the derived files thermodynamics.sty, thermodynamics.pdf, % thermodynamics-examples.tex, and thermodynamics-examples.pdf. % \fi % % \iffalse %<*driver> \ProvidesFile{thermodynamics.dtx} % % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{thermodynamics} %<*package> [2022/04/29 v1.00 thermodynamics package] % % %<*driver> \documentclass[11pt,letterpaper]{ltxdoc} \usepackage[margin=1in,left=1.85in]{geometry} \usepackage[T1]{fontenc} \usepackage[full]{textcomp} \usepackage{amsmath} \usepackage{pxfonts} \usepackage{array} \usepackage{booktabs} \usepackage{footmisc} \usepackage[labelfont=bf,labelsep=period]{caption} %\EnableCrossrefs %\CodelineIndex \PageIndex \CodelineNumbered \RecordChanges %\OnlyDescription \begin{document} \DocInput{thermodynamics.dtx} \end{document} % % \fi % % \CheckSum{2286} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \changes{v1.00}{2022/04/29}{Initial public release} % % \GetFileInfo{thermodynamics.dtx} % % \title{The \textsf{thermodynamics} package\thanks{This document % corresponds to \textsf{thermodynamics}~\fileversion, dated \filedate.}} % \author{Karl D. Hammond \\ \texttt{hammondkd@missouri.edu}} % \date{\filedate} % \maketitle % % \begin{abstract} % A package, \textsf{thermodynamics}, is defined that makes typesetting % quantities found in thermodynamics texts relatively simple. The commands are % flexible and intended to be relatively intuitive. It handles several sets % of notation for total, specific, and molar quantities; allows changes between % symbols (e.g., $A$ vs.\ $F$ for Helmholtz free energy); and greatly % simplifies the typesetting of symbols and partial derivatives commonly % encountered in mixture thermodynamics. Changes of one's notes from one % textbook to another can be achieved relatively easily by changing package % options. % \end{abstract} % % \newcommand*{\thermounderline}[1]{% % \mkern2mu\underline{\mkern-2mu #1\mkern-3mu}\mkern3mu% % } % \newcommand*{\thermooverline}[1]{% % \mkern2mu\overline{\mkern-2mu #1\mkern-2mu}\mkern2mu% % } % \newcommand*{\Partial}[3]{\ensuremath{\left(\frac{\partial #1}{\partial #2}\right)_{#3}}} % \newcommand*{\Ut}{\mkern1mu\underline{\mkern-1mu U\mkern-4mu}\mkern4mu} % \newcommand*{\Upm}[2][]{\mkern2mu\overline{\mkern-2mu U_{#2}^{#1}\mkern-2mu}\mkern2mu} % \newcommand*{\Ht}{\mkern1mu\underline{\mkern-1mu H\mkern-4mu}\mkern4mu} % \newcommand*{\Hm}{H} % \newcommand*{\Hpm}[2][]{\mkern2mu\overline{\mkern-2mu H_{#2}^{#1}\mkern-1mu}\mkern1mu} % \newcommand*{\Ft}{\mkern1mu\underline{\mkern-1mu A\mkern-4mu}\mkern4mu} % \newcommand*{\Gt}{\mkern1mu\underline{\mkern-1mu G\mkern-4mu}\mkern4mu} % \newcommand*{\Gpm}[2][]{\mkern2mu\overline{\mkern-2mu G_{#2}^{#1}\mkern-1mu}\mkern1mu} % \newcommand*{\Spm}[2][]{\mkern2mu\overline{\mkern-2mu S_{#2}^{#1}\mkern-1mu}\mkern1mu} % \newcommand*{\Vpm}[2][]{\mkern1mu\overline{\mkern-1mu V_{\mkern-2mu #2}^{#1}\mkern-2mu}\mkern2mu} % \newcommand*{\St}{\mkern1mu\underline{\mkern-1mu S\mkern-3mu}\mkern3mu} % \newcommand*{\Vt}{\mkern3mu\underline{\mkern-3mu V\mkern-4mu}\mkern4mu} % \newcommand*{\Lt}{\mkern1mu\underline{\mkern-1mu \Omega\mkern-4mu}\mkern4mu} % \newcommand*{\cPpm}[2][]{\mkern2mu\overline{\mkern-2mu C_{P,#2}^{#1}\mkern-1mu}\mkern1mu} % % \newcommand*{\Nt}{n} % \newcommand*{\allNs}{\vec\Nt} % \newcommand*{\allNsbut}[2][j]{\Nt_{#1\neq #2}} % \newcommand*{\allXs}{\vec x} % % \section{Introduction} % The purpose of this package is to simplify the typesetting of equations in % thermodynamics, specifically chemical engineering thermodynamics, which are % often cumbersome to enter. For example, consider the following equation: % \begin{equation} % d\Ut = \Partial{\Ut}{\St}{\Vt,\allNs} \mkern-10mu d\St % + \Partial{\Ut}{\Vt}{\St,\allNs} \mkern-10mu d\Vt % + \sum_{i=1}^C \Partial{\Ut}{\Nt_i}{\St,\Vt,\allNsbut{i}} % \mkern-10mu d\Nt_i. % \label{eq:chain-rule-U} % \end{equation} % This equation is pretty basic, and equations like it occur all the time in % thermodynamics. Without this package, you might typeset it like this: % \begin{verbatim} % d\underline{U} = % \left(\frac{\partial\underline{U}} % {\partial\underline{S}}\right)_{\underline{V},\vec{n}} % d\underline{S} % + \left(\frac{\partial\underline{U}} % {\partial\underline{V}}\right)_{\underline{S},\vec{n}} % d\underline{V} % + \sum_{i=1}^C \left(\frac{\partial\underline{U}} % {\partial n_i}\right)_{\underline{S},\underline{V},n_{j\neq i}} % dn_i. %\end{verbatim} % This is a lot of code, and even then the output is slightly clunky: % \[ d\underline{U} = % \left(\frac{\partial\underline{U}} % {\partial\underline{S}}\right)_{\underline{V},\vec{n}} % d\underline{S} % + \left(\frac{\partial\underline{U}} % {\partial\underline{V}}\right)_{\underline{S},\vec{n}} % d\underline{V} % + \sum_{i=1}^C \left(\frac{\partial\underline{U}} % {\partial n_i}\right)_{\underline{S},\underline{V},n_{j\neq i}} % dn_i. % \] % It is also frustratingly difficult to change one's notes or handouts from one % textbook that uses, say, $n_1$ to denotes moles of component 1 to another % textbook that uses $N_1$ for the same quantity, or perhaps denotes the % total internal energy as $U$ or $U^t$ rather than $\Ut$. % For example, if you wanted it to be % \[ % dU = \Partial{U}{S}{V,N_1,\dotsc,N_n} \mkern-15mu dS % + \Partial{U}{V}{S,N_1,\dotsc,N_n} \mkern-15mu dV % + \sum_{i=1}^n \Partial{U}{N_i}{S,V,N_1,\dotsc,[N_i],\dotsc,N_n} % \mkern-20mu dN_i % \] % without changing any of your code---to update it across all handouts, exams, % and homework sets after changing textbooks, say---you would be out of luck % (or in for a lot of work). % % With this package, you could reduce the code to typeset this equation to % \begin{verbatim} % \begin{equation} % d\Ut = \Partial*{\Ut}{\St}{\Vt,\allNs} d\St % + \Partial*{\Ut}{\Vt}{\St,\allNs} d\Vt % + \sumall_i \Partial*{\Ut}{\Nt_i}{\St,\Vt,\allNsbut{i}} d\Nt_i % \end{equation} %\end{verbatim} % and it will render similarly to Equation~\eqref{eq:chain-rule-U}, including % the shortened underscores and negative kerning. % If you later decide to change the notation such that extensive properties are % not underlined, you can do that without changing any of your code (just % change a package option). Similarly, if you want $\vec{n}$ replaced by % $n_1,\dots,n_C$, you can do that with a package option, too. % % The package handles second derivatives, too. For example, % \begin{verbatim} % \Partial*{\Hm}{T}{P} = T\Partial*{\Sm}{T}{P} % = -T\PartialSecond*{\Gm}{T}{P} = \cP %\end{verbatim} % renders (using the default options) % \[ \left(\frac{\partial H}{\partial T}\right)_P \mkern-8mu % = T\left(\frac{\partial S}{\partial T}\right)_P \mkern-8mu % = -T\left(\frac{\partial^2 G}{\partial T^2}\right)_P \mkern-8mu % = C_P \] % Similarly, macros are defined for mixed second partial derivatives that allow % things like % \begin{verbatim} % \Partial*{\Gpm_i}{P}{T,\allNs} % = \PartialMixSecond*{\Gt}{P}{\Nt_i}{T,\allNsbut{i}} % = \PartialMixSecond*{\Gt}{\Nt_i}{P}{T,\allNsbut{i}} % = \Partial*{Vt}{\Nt_i}{T,P,\allNsbut{i}} = \Vpm_i %\end{verbatim} % which renders % \[ \left(\frac{\partial \Gpm{i}}{\partial P}\right)_{T,\allNs} % \mkern-15mu% % = \left(\frac{\partial^2 \Gt}{\partial P\partial n_i}\right)_{T,\allNsbut{i}} % \mkern-15mu% % = \left(\frac{\partial^2 \Gt}{\partial n_i\partial P}\right)_{T,\allNsbut{i}} % \mkern-15mu% % = \left(\frac{\partial \Vt}{\partial n_i}\right)_{T,P,\allNsbut{i}} % \mkern-15mu% % = \Vpm{i} % \] % using the defaults. % % ^^A------------------------------------------------------------------------- % % \section{Using the Package} \label{sec:using} % There are three categories of macros defined in this package: macros % that produce symbols (or groups of them), macros that typeset derivatives, % and macros that are used internally that the user need not know about. % There are also several environments that allow the user to switch locally % between different delimiters on partial derivatives. % % \subsection{Predefined Symbols} % The macros used to produce symbols fall into five categories: extensive % properties, molar properties, specific properties (i.e., per unit mass), % partial molar properties, and shortcut macros (e.g., macros for the heat % capacities, saturation pressure, and so forth). The macros corresponding to % extensive, molar, and specific properties are shown in % Table~\ref{table:symbols}. Examples using the enthalpy are % \DescribeMacro{\Ht} % \DescribeMacro{\Hm} % \DescribeMacro{\Hs} % \DescribeMacro{\Hpm} % \begin{verbatim} % \[ \Ht \quad \Hm \quad \Hs \quad \Hpm_i. \] %\end{verbatim} % Using the default package options, the above renders as % \[ \Ht \quad \Hm \quad \hat H \quad \Hpm{i}. \] % In addition, the properties in % Table~\ref{table:conveniences} are defined for convenience. % % \DescribeMacro{\Ut} % \DescribeMacro{\Um} % How these symbols are rendered can be customized by package options. As long % as the user consistently uses \cs{Ut} to render the total internal energy, % \cs{Um} to render the molar internal energy, and so forth, switching notation % from, say, $\thermounderline{U}$ to $U^t$ for extensive properties is trivial. % % ^^A \DescribeMacro{\cP} % ^^A \DescribeMacro{\cV} % \DescribeMacro{\cPt} % \DescribeMacro{\cVt} % \DescribeMacro{\cPs} % \DescribeMacro{\cVs} % \DescribeMacro{\cPpm} % \DescribeMacro{\cVpm} % The heat capacities (see Table~\ref{table:conveniences}) are generally % assumed to be molar (e.g., \cs{cP} is interpreted to be the molar heat % capacity). To get the specific heat capacities, the macros \cs{cPs} and % \cs{cVs} are provided, which by default render as $\hat C_P$ and $\hat C_V$, % respectively. There are also extensive versions, so \cs{cPt} and \cs{cVt} % will render as $\thermounderline{C}_P$ and $\thermounderline{C}_V,$ % respectively. Note that \cs{cP} and friends require you to surround % \cs{text} with brackets if the portion with \cs{text} in it is not the last % argument. For example, \verb"\cP_i^\text{A}" will work as expected, but % \verb"\cP^\text{A}_i" will not: you need to use \verb"\cP^{\text{A}}_i". % Using \verb"\cP^\IG_i" will work as expected. % % You can also get partial molar heat capacities via \cs{cPpm} and \cs{cVpm}, % though the latter's mathematical definition is a bit hard to wrap one's head % around: % \begin{verbatim} % \[ \cVpm_i = \Partial{\cVt}{\Nt_i}{T,P,\allNsbut{i}} % = \frac{\partial}{\partial\Nt_i} % \left[ -T\PartialSecond{\Ft}{T}{\Vt,\allNs} % \right]_{T,P,\allNsbut{i}} \] %\end{verbatim} % yields % \[ \thermooverline{C_{V,i}} % = \left(\frac{\partial\thermounderline{C}_V} % {\partial\Nt_i}\right)_{T,P,\allNsbut{i}} % = \frac{\partial}{\partial\Nt_i} % \left[ -T\left(\frac{\partial^2\Ft}{\partial T^2}\right)_{\Vt,\allNs} % \right]_{T,P,\allNsbut{i}} \] % % \begin{table} % \caption{Commands defined in this package to represent extensive % thermodynamic quantities and their molar and specific analogs. % These macros should be used even if the symbol the user % wishes to use does not match the command used (e.g., \cs{Ft} % for total Helmholtz free energy even if it ends up being set as % $\thermounderline{A}$)\@. % } % \label{table:symbols} % \SpecialUsageIndex{\Qt}\relax % \SpecialUsageIndex{\Qm}\relax % \SpecialUsageIndex{\Qs}\relax % \SpecialUsageIndex{\Wt}\relax % \SpecialUsageIndex{\Wm}\relax % \SpecialUsageIndex{\Ws}\relax % \SpecialUsageIndex{\Et}\relax % \SpecialUsageIndex{\Em}\relax % \SpecialUsageIndex{\Es}\relax % \SpecialUsageIndex{\Epm}\relax % \SpecialUsageIndex{\Ut}\relax % \SpecialUsageIndex{\Um}\relax % \SpecialUsageIndex{\Us}\relax % \SpecialUsageIndex{\Upm}\relax % \SpecialUsageIndex{\Ht}\relax % \SpecialUsageIndex{\Hm}\relax % \SpecialUsageIndex{\Hs}\relax % \SpecialUsageIndex{\Hpm}\relax % \SpecialUsageIndex{\St}\relax % \SpecialUsageIndex{\Sm}\relax % \SpecialUsageIndex{\Ss}\relax % \SpecialUsageIndex{\Spm}\relax % \SpecialUsageIndex{\Ft}\relax % \SpecialUsageIndex{\Fm}\relax % \SpecialUsageIndex{\Fs}\relax % \SpecialUsageIndex{\Fpm}\relax % \SpecialUsageIndex{\Gt}\relax % \SpecialUsageIndex{\Gm}\relax % \SpecialUsageIndex{\Gs}\relax % \SpecialUsageIndex{\Gpm}\relax % \SpecialUsageIndex{\At}\relax % \SpecialUsageIndex{\Am}\relax % \SpecialUsageIndex{\As}\relax % \SpecialUsageIndex{\Apm}\relax % \SpecialUsageIndex{\Nt}\relax % \SpecialUsageIndex{\Lt}\relax % \SpecialUsageIndex{\Lm}\relax % \SpecialUsageIndex{\Ls}\relax % \SpecialUsageIndex{\Lpm}\relax % \SpecialUsageIndex{\Bt}\relax % \SpecialUsageIndex{\Bm}\relax % \SpecialUsageIndex{\Bs}\relax % \SpecialUsageIndex{\Bpm}\relax % \SpecialUsageIndex{\Mt}\relax % \SpecialUsageIndex{\Mm}\relax % \SpecialUsageIndex{\Ms}\relax % \SpecialUsageIndex{\Mpm}\relax % \centering % \begin{minipage}{4.12in}\renewcommand*{\footnoterule}{\vskip-1ex}% % \centering\small % \begin{tabular}{l l l l l} % \toprule % Property & Total & Molar & Specific & Partial Molar \\ % \midrule % Heat & \cs{Qt} & \cs{Qm} & \cs{Qs} & N/A \\ % Work & \cs{Wt} & \cs{Wm} & \cs{Ws} & N/A \\ % Total energy & \cs{Et} & \cs{Em} & \cs{Es} & \cs{Epm} \\ % Internal energy & \cs{Ut} & \cs{Um} & \cs{Us} & \cs{Upm} \\ % Enthalpy & \cs{Ht} & \cs{Hm} & \cs{Hs} & \cs{Hpm} \\ % Entropy & \cs{St} & \cs{Sm} & \cs{Ss} & \cs{Spm} \\ % Volume & \cs{Vt} & \cs{Vm} & \cs{Vs} & \cs{Vpm} \\ % Helmholtz free energy & \cs{Ft} & \cs{Fm} & \cs{Fs} & \cs{Fpm} \\ % Gibbs free energy & \cs{Gt} & \cs{Gm} & \cs{Gs} & \cs{Gpm} \\ % Surface area & \cs{At} & \cs{Am} & \cs{As} & \cs{Apm} \\ % Grand potential\footnote{The grand potential, % $\Lt(T,\Vt,\vec{\mu}\mkern1mu) = \Ut - T\St - \sum_i^C \mu_i \Nt_i,$ % is also called the Landau free energy by some authors.} % & \cs{Lt} & \cs{Lm} & \cs{Ls} & \cs{Lpm} \\ % Moles & \cs{Nt} & N/A & N/A & N/A \\ % $B$ (generic property) & \cs{Bt} & \cs{Bm} & \cs{Bs} & \cs{Bpm} \\ % $M$ (generic property) & \cs{Mt} & \cs{Mm} & \cs{Ms} & \cs{Mpm} \\ % \bottomrule % \end{tabular} % \end{minipage} % \end{table} % % \begin{table} % \caption{Convenience macros and their default symbols. % These are generally ``smart'': for example, % \texttt{\textbackslash cP\_i} renders as $C_{P,i}$, as expected, and % \texttt{\textbackslash cP\_i\^{}\textbackslash circ} renders as % $C_{P,i}^\circ$, also as expected. You can also reverse it: % \texttt{\textbackslash cP\^{}\textbackslash circ\_i} becomes % $C^\circ_{P,i}$.} % \label{table:conveniences} % \SpecialUsageIndex{\cP}\relax % \SpecialUsageIndex{\cV}\relax % \SpecialUsageIndex{\kappaT}\relax % \SpecialUsageIndex{\kappaS}\relax % \SpecialUsageIndex{\alphaP}\relax % \SpecialUsageIndex{\alphaS}\relax % \SpecialUsageIndex{\heatcapacitysymbol}\relax % \SpecialUsageIndex{\compressibilitysymbol}\relax % \SpecialUsageIndex{\expansivitysymbol}\relax % \SpecialUsageIndex{\fpure}\relax % \SpecialUsageIndex{\fmix}\relax % \SpecialUsageIndex{\fsat}\relax % \SpecialUsageIndex{\phipure}\relax % \SpecialUsageIndex{\phimix}\relax % \SpecialUsageIndex{\phisat}\relax % \SpecialUsageIndex{\Psat}\relax % \SpecialUsageIndex{\Pvap}\relax % \SpecialUsageIndex{\sat}\relax % \SpecialUsageIndex{\Henryrat}\relax % \SpecialUsageIndex{\Henrymol}\relax % \SpecialUsageIndex{\gammarat}\relax % \SpecialUsageIndex{\gammamol}\relax % \SpecialUsageIndex{\Deltamix}\relax % \SpecialUsageIndex{\Deltarxn}\relax % \SpecialUsageIndex{\Deltavap}\relax % \SpecialUsageIndex{\Deltasub}\relax % \SpecialUsageIndex{\Deltafus}\relax % \SpecialUsageIndex{\mixing}\relax % \SpecialUsageIndex{\reaction}\relax % \SpecialUsageIndex{\fusion}\relax % \SpecialUsageIndex{\vaporization}\relax % \SpecialUsageIndex{\sublimation}\relax % \begin{minipage}{\linewidth} % \small % \addtolength{\tabcolsep}{-2pt}\relax % \addtolength{\extrarowheight}{0.75ex}\relax % \renewcommand*{\footnoterule}{\vskip-1.5ex}\relax % \begin{tabular}{l l l l l} % \toprule % \\[-1.5\normalbaselineskip] % Name & Macro & Sym. & Definition & Base Symbol Macro \\ % \midrule % Isobaric heat capacity & \verb"\cP"\footnote{\relax % Extensive and specific (per-unit-mass) versions are available % as \texttt{\textbackslash cPt} and \texttt{\textbackslash cPs}, % respectively, with similar macros for the isochoric heat capacity. % \label{fn:cP}} % & $C_P$ & $\displaystyle T\left(\frac{\partial S}{\partial T}\right)_P$ % & \verb"\heatcapacitysymbol" \\[2.0ex] % Isochoric heat capacity & \verb"\cV"\footref{fn:cP} & $C_V$ % & $\displaystyle T\left(\frac{\partial S}{\partial T}\right)_V$ % & \verb"\heatcapacitysymbol" \\[2.0ex] % Isothermal compressibility & \verb"\kappaT" & $\kappa_T$ & % \(\displaystyle -\frac{1}{V} \left(\frac{\partial V}{\partial P}\right)_T \) % & \verb"\compressibilitysymbol" \\[2.0ex] % Isentropic compressibility & \verb"\kappaS" & $\kappa_S$ & % \(\displaystyle -\frac{1}{V} \left(\frac{\partial V}{\partial P}\right)_S\) % & \verb"\compressibilitysymbol" \\[2.0ex] % Isobaric expansivity & \verb"\alphaP" & $\alpha_P$ & % \(\displaystyle \frac{1}{V} \left(\frac{\partial V}{\partial T}\right)_P\) % & \verb"\expansivitysymbol" \\[2.0ex] % Isentropic expansivity & \verb"\alphaS" & $\alpha_S$ & % \(\displaystyle \frac{1}{V} \left(\frac{\partial V}{\partial T}\right)_S\) % & \verb"\expansivitysymbol" \\[2.0ex] % Pure fugacity & \verb"\fpure" & $f$ & $\phi P$ \\ % Mixture fugacity & \verb"\fmix" & $\hat f$ & $\hat f_i = x_i\hat\phi_i P$ \\[0.5ex] % Saturation fugacity & \verb"\fsat" & $f^\text{sat}$ % & $\phi^\text{sat} P^\text{sat}$ & \cs{sat} \\ % Pure fugacity coeff.\ & \verb"\phipure" & $\phi$ & % \multicolumn{2}{l}{\( \phi_i % = \exp\left(\frac{1}{RT}\int_0^P V_i(T,p) % - \frac{RT}{p}\,dp\right) \)} \\ % Mixture fugacity coeff.\ & \verb"\phimix" & $\hat\phi$ % & \multicolumn{2}{l}{\( \hat\phi_i % = \exp\left(\frac{1}{RT}\int_0^P \Vpm{i}(T,p,\allXs) % - \frac{RT}{p}\,dp\right) \)} \\ % Henry's constant (rational) & \verb"\Henryrat" & $h$ % & $\gamma_i^\infty f_i$ \\ % Henry's constant (molal) & \verb"\Henrymol" & $\mathcal{H}$ % & $M_s \gamma_i^\infty f_i$ \\ % Rational activity coeff.\ & \verb"\gammarat" & $\gamma^\ast$ % & $\gamma/\gamma^\infty$ \\ % Molal activity coeff.\ & \verb"\gammamol" & $\gamma^\square$ % & $x_s \gamma/\gamma^\infty$ \\ % Saturation fugacity coeff.\ & \verb"\phisat" & $\phi^\text{sat}$ % & $\phi(T,P^\text{sat})$ & \cs{sat} \\ % Saturation pressure & \verb"\Psat" & $P^\text{sat}$ && \cs{sat} \\ % Vapor pressure & \verb"\Pvap" & \multicolumn{3}{l}{Currently a synonym % for \cs{Psat}\footnote{If you want \cs{Pvap} to produce $P^\text{vap}$ % instead of $P^\text{sat}$, you should redefine the \cs{sat} macro.}} \\ % Standard state & \verb"\std"\footnote{Typical usage would be % \texttt{\$\cs{mu}\_i = \cs{mu}\textasciicircum\cs{std}\_i % + RT \cs{log} a\_i\$}, % yielding $\mu_i = \mu_i^\circ + RT \log a_i$.} & $\circ$ \\ % Standard pressure & \verb"\Pstd" & $P^\circ$ & & \cs{std} \\ % Standard fugacity & \verb"\fstd" & $f^\circ$ & $f(T,P^\circ)$ & \cs{std} % \\ % Change on mixing & \verb"\Deltamix"\footnote{The usual usage would be % something like % \texttt{\$\cs{Deltamix}\cs{Vm}\textasciicircum\cs{IGM} = 0\$}.\relax % \label{fn:Deltausage}} % & $\Delta M$\textsubscript{mix} % & $M - \sum_i x_i M_i$ & \verb"\mixing" \\ % Change on reaction & \verb"\Deltarxn"\footref{fn:Deltausage} % & $\Delta M_\text{rxn}$ % & $\sum_i \nu_i M_i$ & \verb"\reaction" \\ % Change on melting & \verb"\Deltafus"\footref{fn:Deltausage} % & $\Delta M^\text{fus}$ & $M^L - M^S$ & \verb"\fusion" \\ % Change on boiling & \verb"\Deltavap"\footref{fn:Deltausage} % & $\Delta M^\text{vap}$ & $M^V - M^L$ & \verb"\vaporization" \\ % Change on subliming & \verb"\Deltasub"\footref{fn:Deltausage} % & $\Delta M^\text{sub}$ & $M^V - M^S$ & \verb"\sublimation" \\ % \bottomrule % \end{tabular} % \end{minipage} % \end{table} % % \subsection{Partial Molar Properties} % \DescribeMacro{\Upm} % \DescribeMacro{\Hpm} % Partial molar quantities are typically defined with the suffix \verb"pm". % For example, \cs{Upm} refers to the partial molar internal energy. There % are two options for how to enter partial molar quantities: as commands or % as super/subscripts. For example, % \begin{verbatim} % \[ \Upm{i} \quad \Upm[\IG]{i} \quad \Hpm_i \quad \Hpm^\IG_i \] %\end{verbatim} % will typeset as % \[ \Upm{i} \quad \Upm[\text{IG}]{i} \quad \Hpm{i} \quad \Hpm[\text{IG}]{i}\] % There are also partial molar heat capacities available via \cs{cPpm} and % \cs{cVpm}. % \textbf{Important}: The \cs{text} command defined by the \verb"amstext" % package is usually robust enough that something like \verb"\Um^\text{L}" will % work as expected, without additional braces. This does \emph{not} work for % partial molar properties; for example, \verb"\Hpm^\text{L}_i" will produce an % error, as will \verb"\Hpm_i^\text{L}". The expression % \verb"\Hpm_i^{\text{L}}" will work as expected. % % \DescribeMacro{\partialmolar} % New partial molar properties can be defined for any ``simple'' symbol using % the \cs{partialmolar} macro. ``Simple'' means it has no subscripts or % superscripts. For example, the macro for the partial molar Gibbs free energy % is defined via the macro % \DescribeMacro{\Gpm} % \begin{verbatim} % \newcommand*{\Gpm}{\partialmolar{\Gibbs@symbol}} %\end{verbatim} % A list of pre-defined macros for total, molar, specific, and partial molar % quantities commonly used in thermodynamics is included in % Table~\ref{table:symbols}. % % \subsection{Other Predefined Symbols and Modifiers} % There are a number of predefined symbols and modifiers. % While these symbols could be defined or used without these macros, such use % is not recommended: changing package options will result in inconsistencies % if these macros are not used. % % \subsubsection{Heat Capacities, Compressibilities, and Expansivities} % \DescribeMacro{\cP} % \DescribeMacro{\cV} % \DescribeMacro{\kappaS} % \DescribeMacro{\kappaT} % \DescribeMacro{\alphaP} % \DescribeMacro{\alphaS} % The isobaric and isochoric heat capacities are produced with \cs{cP} and % \cs{cV}, respectively. Four other measurable quantities are defined: the % isothermal and isentropic compressibilities, \cs{kappaT} and \cs{kappaS}, % respectively; and the isobaric and isentropic volume expansivities, % \cs{alphaP} and \cs{alphaS}, respectively. Some textbooks use $\beta$ instead % of $\alpha$ for the volume expansivity to differentiate it from the % \emph{linear} expansivity; this can be changed by redefining % \cs{expansivitysymbol}, which is done automatically by some of the % package options that create notation specific to a particular textbook. % % \subsubsection{Fugacities and Fugacity Coefficients} % \DescribeMacro{\fpure} % \DescribeMacro{\fmix} % \DescribeMacro{\phipure} % \DescribeMacro{\phimix} % Different textbooks use different modifications of the symbol $f$ for % fugacity, so it is recommended to use the macro \cs{fpure} to denote the % pure-component fugacity and \cs{fmix} to denote the mixture fugacity. % Similarly, the pure-component fugacity coefficient should be generated with % \cs{phipure}, and that in the mixture should be \cs{phimix}. % % For example, the following markup is an example of a common equation in % mixture thermodynamics: % \begin{verbatim} % \[ \fmix_j = x_j \phimix_j P = x_j \gamma_j \fpure_j. \] %\end{verbatim} % With the default package options, this produces % \[ \hat f_j = x_j \hat\phi_j P = x_j \gamma_j f_j. \] % With the |Thompson| package option, however, the same markup produces % \[ \hat f_j = x_j \hat\phi_j P = x_j \gamma_j f^\bullet_j. \] % Similarly, the |Prausnitz| package option causes it to generate % \[ f_j = x_j \phi_j P = x_j \gamma_j f_{\text{pure},j}, \] % and the |Sandler| option causes it to generate % \[ \bar f_j = x_j \bar \phi_j P = x_j \gamma_j f_j. \] % % \subsubsection{Activity Coefficients and Henry's Constants} % \DescribeMacro{\gammarat} % \DescribeMacro{\gammamol} % \DescribeMacro{\Henryrat} % \DescribeMacro{\Henrymol} % The activity coefficient can be generated with \cs{gamma}, as usual. % The Henry's Law activity coefficients should be produced with \cs{gammarat} % (rational basis) and \cs{gammamol} (molal basis). % There are also macros to generate the Henry's law constants for both the % rational basis (\cs{Henryrat}) and the molal basis (\cs{Henrymol}). % These are interrelated: % \begin{verbatim} % \[ \fmix_i = x_i \gamma_i \fpure_i = x_i \gammarat_i \Henryrat_i % = C_i \gammamol_i \Henrymol_i \] %\end{verbatim} % produces % \[ \hat f_i = x_i \gamma_i f_i = x_i \gamma^*_i h_i % = C_i \gamma^\square_i \mathcal{H}_i \] % using the default options. % % \subsubsection{Saturation Properties} % \DescribeMacro{\Psat} % \DescribeMacro{\Pvap} % \DescribeMacro{\fsat} % \DescribeMacro{\phisat} % The saturation pressure is generated with \cs{Psat}. The macro \cs{Pvap} is % an alias for \cs{Psat}. The fugacity and fugacity coefficient at saturation % are accessed via \cs{fsat} and \cs{phisat}, respectively. Package options % can be used to change some of these to match the notation of specific % textbooks. % % \DescribeMacro{\sat} % The \cs{sat} macro is used ``behind the scenes'' as part of % \cs{Psat}, \cs{fsat}, and \cs{phisat}, which produce $P^\text{sat}$, % $f^\text{sat}$, and $\phi^\text{sat}$, respectively. If you wanted to % redefine them to be $P^\text{vap}$, $f^\text{vap}$, and $\phi^\text{vap}$, % you could simply redefine \cs{sat} with % \verb"\renewcommand*{\sat}{{\text{vap}}}". % This is done automatically using package option |Sandler|. % % \subsubsection{Standard States} % \DescribeMacro{\std} % \DescribeMacro{\Pstd} % \DescribeMacro{\fstd} % The symbol $\circ$ (\cs{circ}) is used by default for standard states. % This is intended to be easy to change should the user want to replace % $P^\circ$ with $P^\ominus$, say. This is accessed via the \cs{std} macro. % The macro \cs{Pstd} is defined as |P^\std| for convenience to denote % standard pressures, and \cs{fstd} is defined for standard fugacities so as to % ease implementation across textbooks. % % The usual usage would be something like this: % \begin{verbatim} % \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mu^\std_i % + \nu_i RT \log\left(\frac{\fmix_i}{\fstd_i}\right) \right] % = \Deltarxn\Gm^\std + RT \log\left[\prodall_i a_i^{\nu_i} \right] \] %\end{verbatim} % which produces % \[ \Delta G_\text{rxn} = \sum_{i=1}^C \nu_i \mu_i % = \sum_{i=1}^C \left[ \nu_i \mu^\circ_i % + \nu_i RT \log\left(\frac{\hat f_i}{f_i^\circ}\right) \right] % = \Delta G^\circ_\text{rxn} % + RT \log\left[\prod_{i=1}^C a_i^{\nu_i} \right] \] % with the default settings. % % \subsubsection{Changes on Mixing, Reaction, Fusion, Vaporization, and % Sublimation} % \DescribeMacro{\Deltamix} % Mixing properties are handled via the \cs{Deltamix} macro, and are used as in % the following example: % \begin{verbatim} % \[ \Deltamix\Gm = \Gm - \sumall_i x_i \Gm_i = \Deltamix\Hm - T\Deltamix\Sm \] %\end{verbatim} % which yields % \[ \Delta G_\text{mix} = G - \sum_{i=1}^C x_i G_i % = \Delta H_\text{mix} - T\Delta S_\text{mix}. \] % Some textbooks (|Sandler|, |Thompson|) choose to typeset these with the word % ``mix'' \emph{before} the symbol, which is handled automatically by this % package. % \DescribeMacro{\mixing} % The macro \cs{mixing} determines how the change in mixing label is rendered; % the default is \verb"{\text{mix}}". % % \DescribeMacro{\Deltafus} % \DescribeMacro{\Deltasub} % \DescribeMacro{\Deltavap} % The commands \cs{Deltafus}, \cs{Deltasub}, and \cs{Deltavap} % typeset changes due to fusion (melting), sublimation (subliming), and % vaporization (boiling), respectively. Their use is straightforward, viz., % \begin{verbatim} % \[ \Deltasub\Hm = \Hm^V - \Hm^S = \Hm^V - \Hm^L + (\Hm^L - \Hm^S) % = \Deltafus\Hm + \Deltavap\Hm \] %\end{verbatim} % yielding % \[ \Delta\Hm^\text{sub} = \Hm^V - \Hm^S = \Hm^V - \Hm^L + (\Hm^L - \Hm^S) % = \Delta\Hm^\text{vap} + \Delta\Hm^\text{fus} \] % with the default options. Note that some textbooks (e.g., |Sandler|) typeset % these quantities quite differently. % % \DescribeMacro{\Deltaf} % \DescribeMacro{\Deltarxn} % The macros \cs{Deltaf} and \cs{Deltarxn} are intended to typeset the enthalpy % or free energy of formation and reaction, respectively. For example, % \begin{verbatim} % \[ \Deltarxn\Hm^\std = \sumall_i \nu_i \Deltaf\Hm_i^\std \] %\end{verbatim} % results in % \[ \Delta\Hm_\text{rxn}^\circ = \sum_{i=1}^C \nu_i \Delta\Hm_{f,i}^\circ. \] % It is not anticipated that this command will be combined with something like % a heat capacity, which already has a (potentially double) subscript, but as % there is no ``formation'' heat capacity, that should not present a problem. % % \subsection{Residual and Excess Properties} % \DescribeMacro{\UR} % \DescribeMacro{\URt} % \DescribeMacro{\URs} % \DescribeMacro{\URpm} % \DescribeMacro{\UE} % \DescribeMacro{\UEt} % \DescribeMacro{\UEs} % \DescribeMacro{\UEpm} % Additional macros are defined that make it easy to typeset the residual % (also called ``departure'') and excess total, molar, specific, and partial % molar properties. These macros follow the same pattern: \cs{UR}, \cs{URt}, % \cs{URs}, and \cs{URpm} typeset the molar, total, specific, and partial molar % residual internal energies, respectively, and by default expand to $U^R,$ % $\thermounderline{U}^R,$ $\hat U^R, $ and $\smash[t]{\Upm[R]{i}}$ (the last % is called as \verb"\URpm{i}" or \verb"\URpm_i"). Similarly, \cs{UE}, % \cs{UEt}, \cs{UEs}, and \cs{UEpm} typeset the corresponding excess % properties. The first character of the macros for other properties follow the % same pattern as in Table~\ref{table:symbols}. % % \DescribeMacro{\excess} % \DescribeMacro{\residual} % The $R$ and $E$ characters are generated by the macros \cs{residual} and % \cs{excess}, respectively. These macros can be redefined; for example, if you % want \cs{SE}, which normally produces $S^E$, to give you $S^{EX}$---and let's % be honest, who doesn't want that?\footnote{You knew that joke was % coming.}---then you can redefine it with % \begin{verbatim} % \renewcommand*{\excess}{{EX}} %\end{verbatim} % or possibly % \begin{verbatim} % \renewcommand*{\excess}{{\mathrm{EX}}} %\end{verbatim} % or even % \begin{verbatim} % \renewcommand*{\excess}{\text{EX}} %\end{verbatim} % which cause \cs{SE} to expand to $S^{EX},$ $S^\mathrm{EX},$ and % $S^\text{EX},$ respectively. % % It is generally not possible to use superscripts with the excess or % residual properties; in the event the user needs this, the \cs{excess} and % \cs{residual} macros can be used directly, viz., % \begin{verbatim} % \begin{gather*} % \Hm^{\excess,\std} = \HE(T,\Pstd) \\ % \renewcommand*{\excess}{EX} % \Hm^{\excess,\std} = \HE(T,\Pstd) % \end{gather*} %\end{verbatim} % which yields % \begin{gather*} % \Hm^{E,\circ} = H^E(T,P^\circ) \\ % \Hm^{EX,\circ} = H^{EX}(T,P^\circ) % \end{gather*} % using the default options. % \clearpage % % \subsection{Partial Derivatives} % \DescribeMacro{\Partial}% % \DescribeMacro{\Partial*}% % Partial derivatives are easily rendered using the \cs{Partial} command. % There is a starred form (\cs{Partial*}) that additionally adjusts the % spacing after the closing symbol to remove some of the space, anticipating % that the following binary operator will overhang the subscripts. Compare % the following: % \begin{verbatim} % \begin{gather*} % \Partial{\Hm}{T}{P} = \cP \qquad \Partial*{\Hm}{T}{P} = \cP % \end{gather*} %\end{verbatim} % which yields % \begin{gather*} % \left(\frac{\partial\Hm}{\partial T}\right)_{P} = C_P \qquad % \left(\frac{\partial\Hm}{\partial T}\right)_{P} \mkern-8mu = C_P % \end{gather*} % \DescribeMacro{\PartialSecond}% % \DescribeMacro{\PartialSecond*}% % \DescribeMacro{\PartialMixSecond}% % \DescribeMacro{\PartialMixSecond*}% % Second partial derivatives and mixed-second partial derivatives are typeset % with the commands \cs{PartialSecond} and \cs{PartialMixSecond}, respectively. % Like the first-order variety, these also have starred versions that remove % the space immediately following the closing symbols, anticipating that the % equals sign or other binary operator following the derivative will overhang % the elements held constant. For example, % \begin{verbatim} % \[ \Vpm_i = \Partial*{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \PartialMixSecond*{\Gt}{\Nt_i}{P}{T,\allNsbut{i}} % = \PartialMixSecond*{\Gt}{P}{\Nt_i}{T,\allNsbut{i}} % = \Partial{\Gpm_i}{P}{T,\allNs} \] %\end{verbatim} % looks like % \[ \Vpm{i} = \left(\frac{\partial\Vt} % {\partial\Nt_i}\right)_{T,P,\allNsbut{i}} % \mkern-15mu % = \left(\frac{\partial^2\Gt} % {\partial\Nt_i\partial P}\right)_{T,\allNsbut{i}} % \mkern-15mu % = \left(\frac{\partial^2\Gt} % {\partial P\partial\Nt_i}\right)_{T,\allNsbut{i}} % \mkern-15mu % = \left(\frac{\partial\Gpm{i}}{\partial P}\right)_{T,\allNs}. \] % \DescribeMacro{\PartialBigg} % \SpecialUsageIndex{\PartialBigg*}\relax % \DescribeMacro{\PartialSecondBigg} % \SpecialUsageIndex{\PartialSecondBigg*}\relax % \DescribeMacro{\PartialMixSecondBigg} % \SpecialUsageIndex{\PartialMixSecondBigg*}\relax % \DescribeMacro{\Partialbigg} % \SpecialUsageIndex{\Partialbigg*}\relax % \DescribeMacro{\PartialSecondbigg} % \SpecialUsageIndex{\PartialSecondbigg*}\relax % \DescribeMacro{\PartialMixSecondbigg} % \SpecialUsageIndex{\PartialMixSecondbigg*}\relax % There are instances (such as the line above) when \cs{Partial} causes % parentheses that are slightly % too tall but do not need to be---particularly when partial molar properties, % specific quantities, or fugacities are involved. The macro \cs{PartialBigg} % uses \verb"amsmath"'s \cs{Biggl} and \cs{Biggr} macros in place of \cs{left} % and \cs{right} to size the parentheses accordingly; \cs{Partiallbigg} uses % \cs{biggl} and \cs{biggr} in a similar fashion. For example, compare the % following: % \begin{verbatim} % \[ \Vpm_i = \Partial*{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \Partial*{\Gpm_i}{P}{T,\allNs} % = \PartialBigg*{\Gpm_i}{P}{T,\allNs} % = RT\Partial*{\log\fmix_i}{P}{T,\allNs} % = RT\,\PartialBigg*{\log\fmix_i}{P}{T,\allNs} % = RT\,\Partialbigg{\log\fmix_i}{P}{T,\allNs} \] %\end{verbatim} % which typesets as % \[ \Vpm{i} % = \left(\frac{\partial\Vt}{\partial \Nt_i}\right)_{T,P,\allNsbut{i}} % \mkern-15mu % = \left(\frac{\partial\Gpm{i}}{\partial P}\right)_{T,\allNs} % \mkern-15mu % = \Biggl(\frac{\partial\Gpm{i}}{\partial P}\Biggr)_{T,\allNs} % \mkern-15mu % = RT\left(\frac{\partial\log\hat f_i}{\partial P}\right)_{T,\allNs} % \mkern-15mu % = RT\,\Biggl(\frac{\partial\log\hat f_i}{\partial P}\Biggr)_{T,\allNs} % \mkern-15mu % = RT\,\biggl(\frac{\partial\log\hat f_i}{\partial P}\biggr)_{T,\allNs} \] % Note that a similar effect---possibly with other side effects---can be % achieved with \verb"amsmath"'s \cs{smash} command, which has the effect of % removing all vertical space associated with a particular character. % Observe: % \begin{verbatim} % \[ \Vpm_i = \Partial{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \Partial{\smash{\Gpm_i}}{P}{T,\allNs} \] % \end{verbatim} % produces % \[ \Vpm{i} % = \left(\frac{\partial\Vt}{\partial \Nt_i}\right)_{T,P,\allNsbut{i}} % = \left(\frac{\partial\smash{\Gpm{i}}}{\partial P}\right)_{T,\allNs}. \] % Note that the vertical spacing is not quite as good here as it was above. % This can be fixed by using the optional argument to \cs{smash}, viz., % \begin{verbatim} % \[ \Vpm_i = \Partial{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \Partial{\smash[t]{\Gpm_i}}{P}{T,\allNs} \] %\end{verbatim} % \[ \Vpm{i} % = \left(\frac{\partial\Vt}{\partial \Nt_i}\right)_{T,P,\allNsbut{i}} % = \left(\frac{\partial\smash[t]{\Gpm{i}}}{\partial P}\right)_{T,\allNs}. \] % It is possible to ``fake'' higher-order derivatives via some trickery. % For example, % \begin{verbatim} % \[ \cPpm_i = T\Partial{\Spm_i}{T}{P,\allXs} % = T\PartialSecond{\St}{T}{\Nt_i}{P,\allNsbut{i}} % = -T\Partial{^3\Gt}{T^2\partial\Nt_i}{P,\allNsbut{i}} \] %\end{verbatim} % gives % \[ \cPpm{i} = T\Partial{\Spm{i}}{T}{P,\allXs} % = T\Partial{^2\St}{T\partial\Nt_i}{P,\allNsbut{i}} % = -T\Partial{^3\Gt}{T^2\partial\Nt_i}{P,\allNsbut{i}}, \] % which is probably pretty close to what you wanted. Using this trickery with % the package option \verb"nosubscripts" will not work as well, and the use of % third- and higher-order derivatives with this package should generally be % considered unsupported. % % \subsection{Holding Constant the Number of Moles of Several Species} % \DescribeMacro{\allNs}% % \DescribeMacro{\allNsbut}% % \DescribeMacro{\allmus}% % \DescribeMacro{\allmusbut}% % \DescribeMacro{\allXs}% % \DescribeMacro{\allXsbut}% % \DescribeMacro{\allYs}% % \DescribeMacro{\allYsbut}% % \DescribeMacro{\allMs}% % \DescribeMacro{\allMsbut}% % \DescribeMacro{\allWs}% % \DescribeMacro{\allWsbut}% % It is common in thermodynamics to use notation such as % \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_{j\neq k}} \] % or perhaps % \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_1,\dotsc,[\Nt_k],\dots,\Nt_C} \] % to mean partial derivatives that hold the number of moles of each species % constant \emph{except} the one being changed. % Similarly, a property determined with all mole fractions held % constant might be written % \[ C_P = \left(\frac{\partial\Hm}{\partial T}\right)_{P,\vec{x}} \] % or perhaps % \[ C_P = \left(\frac{\partial\Hm}{\partial T}\right)_{P,x_1,\dotsc,x_C}. \] % There are several macros that standardize such constructs. % The \cs{allNs} macro expands to something meaning the number of moles of all % species; by default, this is $\vec{n}$ (package option % \verb"moles-index"), but can be changed to $n_1,\dotsc,n_C$ using the package % option \verb"moles-range". Similarly, the macros \cs{allmus} and % \cs{allmusbut} do the same but with $n$ replaced by $\mu$, and \cs{allMsbut} % is the same with $m$ instead of $n$. There are analogous macros for mole % fractions, namely \cs{allXs} and \cs{allXsbut} for $x$ and \cs{allYs} and % \cs{allYsbut} for $y$, as well as \cs{allWs} and \cs{allWsbut} for mass % fractions---these implicitly assume that all mole or mass fractions % \emph{except} the last are used as variables. The macros \cs{allNsbut}, % \cs{allMsbut}, \cs{allmusbut}, \cs{allXsbut}, \cs{allYsbut}, and % \cs{allWsbut} take an optional argument; for example, % \begin{verbatim} % \Partial{\Ht}{\Nt_1}{T,P,\allNsbut{1}} = % \Partial{\Ht}{\Nt_1}{T,P,\allNsbut[m]{1}} = \Hpm_1 %\end{verbatim} % typesets as % \[ \left(\frac{\partial\Ht}{\partial\Nt_1}\right)_{T,P,\Nt_{j\neq 1}} % = \left(\frac{\partial\Ht}{\partial\Nt_1}\right)_{T,P,\Nt_{m\neq 1}} % = \Hpm{1} \] % Similarly, % \begin{verbatim} % \Partial{\Hm}{x_i}{T,P,\allXsbut{i}} = % \Partial{\Hm}{x_i}{T,P,\allXsbut[m]{i}} = \Hpm_i - \Hpm_\ncomponents %\end{verbatim} % becomes % \[ \left(\frac{\partial\Hm}{\partial x_i}\right)_{T,P,x_{j\neq i,C}} % = \left(\frac{\partial\Hm}{\partial x_i}\right)_{T,P,x_{m\neq i,C}} % = \Hpm{i} - \Hpm{C} \] % The user must supply their own redefinition if they wish to hold something % other than \cs{ncomponents} constant in addition to the argument. % Using the \verb"moles-range" package option, for which \verb"\allXsbut{k}" % expands to $x_1,\dotsc,[x_k],\dotsc,x_{C-1}$ rather than $x_{j \neq k,C}$, % the optional argument is ignored. % % \DescribeMacro{\allbut} % \DescribeMacro{\allbutlastand} % Users can define new ``all but'' macros using the \cs{allbut} and % \cs{allbutlastand} commands. For example, % \begin{verbatim} % \newcommand*{\allNsbut}[2][j]{\allbut[#1]{#2}{\Nt}} % \newcommand*{\allXsbut}[2][j]{\allbutlastand[#1]{#2}{x}} %\end{verbatim} % are the definitions of \cs{allNsbut} and \cs{allXsbut}, respectively. % % \subsection{Sums and Products} % \DescribeMacro{\sumall} % \DescribeMacro{\sumallbutlast} % \DescribeMacro{\prodall} % It is common to require sums and products such as % \[ \sum_{i=1}^C x_i = 1 \quad \text{or} \quad % x_C = 1 - \sum_{i=1}^{C-1} x_i \quad \text{or} \quad % \Gt = \sum_{j=1}^C \mu_j\Nt_j \quad \text{and} \quad % K = \prod_{k=1}^C a_k^{\nu_k}. \] % This package defines shortcuts to typeset such terms thus: % \begin{verbatim} % \[ \sumall_i x_i = 1 \quad \text{or} \quad % x_\ncomponents = 1 - \sumallbutlast_i x_i \quad \text{or} \quad % \Gt = \sumall_j \mu_j\Nt_j \quad \text{and} \quad % K = \prodall_k a_k^{\nu_k}. \] %\end{verbatim} % The symbol $C$ can be changed by redefining \cs{ncomponents}. This is done % automatically by some package options (e.g., |TesterModell| changes it to % $n$; |Sandler| changes it to $\mathcal{C}$; |Thompson| changes it to % $c$). % % \section{Loading the Package} \label{sec:loading} % To load the package with the defaults enabled, load it the usual way: % \begin{verbatim} % \usepackage{thermodynamics} %\end{verbatim} % The package options loaded by default are \verb"EUAGHan", \verb"subscripts", % \verb"parentheses", \verb"intensive-plain", and \verb"moles-index". % These define, respectively, the default symbols to use for total energy, % internal energy, Helmholtz free energy, and so forth; the manner of writing % partial derivatives; the delimiters around partial derivatives; and the % manner of denoting extensive, molar, and specific properties. The default % behavior can be altered by options in the following section. % % \subsection{Package Options} % There are three categories of options: options that affect which symbols are % used, options that affect how symbols are decorated, and options that affect % how partial derivatives are displayed. These are presented in turn. % % \subsubsection{Options that Change Symbol Sets} % There are several options that choose the set of symbols to use for total % energy, internal energy, Helmholtz free energy, and so forth. These are % summarized in Table~\ref{table:symbol-sets}. The default is \verb"EUAGHan". % % \begin{table} % \caption{Options controlling which symbols to use by default. The % macros \cs{Et}, \cs{Ut}, \cs{Ft}, \cs{Gt}, \cs{Ht}, \cs{At}, and % \cs{Nt} represent the total energy, internal energy, % Helmholtz free energy, Gibbs free energy, enthalpy, surface area, % and number of moles, respectively. Symbols are shown as they would % appear with the (default) option \texttt{intensive-plain}. % } % \label{table:symbol-sets} % \centering\small % \begin{tabular}{l l l l l l l l l} % \toprule % Option & \verb"\Et" & \verb"\Ut" & \verb"\Ft" & \verb"\Gt" & \verb"\Ht" % & \verb"\At" & \verb"\Nt" \\ % \midrule % \verb"EUAGHan" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{A}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $n$ % \\ % \verb"EUAGHaN" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{A}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $N$ % \\ % \verb"EUHAGan" & \multicolumn{7}{l}{(synonym for \texttt{EUAGHan})} \\ % \verb"EUHAGaN" & \multicolumn{7}{l}{(synonym for \texttt{EUAGHaN})} \\ % \verb"EUFGHAn" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $n$ % \\ % \verb"EUFGHAN" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $N$ % \\ % \verb"EEFGHAn" & $\thermounderline{E}$ % & $\thermounderline{E}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $n$ % \\ % \verb"EEFGHAn" & $\thermounderline{E}$ % & $\thermounderline{E}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $N$ % \\ % \verb"EEFGHan" & $\thermounderline{E}$ % & $\thermounderline{E}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $n$ % \\ % \verb"EEFGHaN" & $\thermounderline{E}$ % & $\thermounderline{E}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $N$ % \\ % \verb"EEAGHaN" & $\thermounderline{E}$ % & $\thermounderline{E}$ % & $\thermounderline{A}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $N$ % \\ % \verb"EUAGHAn" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{A}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $n$ % \\ % \verb"EUAGHAN" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{A}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{A}$ % & $N$ % \\ % \verb"EUFGHan" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $n$ % \\ % \verb"EUFGHaN" & $\thermounderline{E}$ % & $\thermounderline{U}$ % & $\thermounderline{F}$ % & $\thermounderline{G}$ % & $\thermounderline{H}$ % & $\thermounderline{a}$ % & $N$ % \\ % \bottomrule % \end{tabular} % \end{table} % % Using \verb"EUAGHan" (the default), we might use the following markup: % \begin{verbatim} % \[ \Ft = \Ut - T\St = -P\Vt + \sum_i \mu_i \Nt_i + \sigma d\At % \qquad \Hm = \Um + P\Vm \qquad \Et = \Ut + \frac12 mv^2 \] %\end{verbatim} % which would look like % \[ \thermounderline{A} % = \thermounderline{U} - T\thermounderline{S} % = -P\thermounderline{V} + \sum_i \mu_i n_i + \sigma d\thermounderline{a} % \qquad H = U + PV % \qquad \thermounderline{E} = \thermounderline{U} + \frac12 mv^2. \] % Using the \verb"EUFGHAN" option, the same markup would yield % \[ \thermounderline{F} % = \thermounderline{U} - T\thermounderline{S} % = -P\thermounderline{V} + \sum_i \mu_i N_i + \sigma d\thermounderline{A} % \qquad H = U + PV % \qquad \thermounderline{E} = \thermounderline{U} + \frac12 mv^2. \] % % \subsubsection{Options for Extensive vs.\ Molar Properties} % There are four sets of notation that define how extensive properties are % represented, as shown in Table~\ref{table:extensive}. % The default is \verb"intensive-plain", which (using the volume as an % example) represents the total, molar, specific, and partial molar volumes, % respectively, as $\thermounderline{V},$ $V,$ $\hat V,$ and $\Vpm{j},$ % respectively. % % For example, the definition of the partial molar enthalpy would be different % depending on which set of notation is used. The markup % \begin{verbatim} % \Hpm_i = \Partial{\Ht}{\Nt_i}{T,P,\allNsbut{i}} % = \Partial{\Nt\Hm}{\Nt_i}{T,P,\allNsbut{i}} %\end{verbatim} % yields the following, depending on the package option loaded: % \begin{align*} % \Hpm{i} &= \left(\frac{\partial\thermounderline{H}} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % = \left(\frac{\partial nH} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % && \text{\texttt{intensive-plain}} \\ % \Hpm{i} &= \left(\frac{\partial H} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % = \left(\frac{\partial n\thermounderline{H}} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % && \text{\texttt{extensive-plain}} \\ % \Hpm{i} &= \left(\frac{\partial H^t} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % = \left(\frac{\partial nH} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % && \text{\texttt{extensive-superscript}} \\ % \Hpm{i} &= \left(\frac{\partial H} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % = \left(\frac{\partial nh} % {\partial n_i}\right)_{T,P,n_{j\neq i}} % && \text{\texttt{intensive-lowercase}} % \end{align*} % The use of \verb"intensive-lowercase" is strongly discouraged. % % Note that the number of moles can be changed from $n$ to $N$ via the % options in the previous section. % % \begin{table} % \caption{Notation sets that can be set using the options % \texttt{intensive-plain} (the default), \texttt{extensive-plain}, % \texttt{extensive-superscript}, and \texttt{intensive-lowercase}, % respectively. Note that specific quantities are generally assumed to % look like the molar symbol with a caret on top.} % \label{table:extensive} % \centering\small % \newcommand*{\vpm}[2][]{\mkern1mu\overline{\mkern-1mu v_{\mkern-2mu #2}^{#1}\mkern-2mu}\mkern2mu} % \begin{tabular}{l l l l l l} % \toprule % Option & \verb"\Vt" & \verb"\Vm" & \verb"\Vs" & \verb"\Vpm_i" \\ % \midrule % \verb"intensive-plain" & $\thermounderline{V}$ & $V$ & $\hat V$ % & $\Vpm{i}$ \\ % \verb"extensive-plain" & $V$ & $\thermounderline{V}$ & $\hat V$ % & $\Vpm{i}$\rule{0pt}{2.5ex} \\ % \verb"extensive-superscript" & $V^t$ & $V$ & $\hat V$ % & $\Vpm{i}$\rule{0pt}{2.5ex} \\ % \verb"intensive-lowercase" & $V$ & $v$ & $\hat v$ % & $\vpm{i}$\rule{0pt}{2.5ex} \\ % \bottomrule % \end{tabular} % \end{table} % % \subsubsection{Options Affecting Partial Derivatives} % There are several options that change how partial derivatives are rendered. % First are the options that affect the delimiters. We will use the following % code as an example: % \begin{verbatim} % \[ \Partial*{\Vm}{T}{P} = \PartialMixSecond{\Gm}{T}{P}{} % = \PartialMixSecond{\Gm}{P}{T}{} % = -\Partial{\Sm}{P}{T}. \] %\end{verbatim} % Using the \verb"parentheses" option (the default), this gives % \[ \left(\frac{\partial V}{\partial T}\right)_{P} \mkern-8mu % = \left(\frac{\partial^2 G}{\partial T \partial P}\right) % = \left(\frac{\partial^2 G}{\partial P \partial T}\right) % = -\left(\frac{\partial S}{\partial P}\right)_{T}. \] % The option \verb"brackets" changes the output to % \[ \left[\frac{\partial V}{\partial T}\right]_{P} \mkern-8mu % = \left[\frac{\partial^2 G}{\partial T \partial P}\right] % = \left[\frac{\partial^2 G}{\partial P \partial T}\right] % = -\left[\frac{\partial S}{\partial P}\right]_{T}. \] % The option \verb"bar" changes the output to % \[ \left.\frac{\partial V}{\partial T}\right\rvert_{P} \mkern-8mu % = \left.\frac{\partial^2 G}{\partial T \partial P}\right. % = \left.\frac{\partial^2 G}{\partial P \partial T}\right. % = -\left.\frac{\partial S}{\partial P}\right\rvert_{T}. \] % The option \verb"plain-derivatives" eliminates all delimiters; this forces % the \verb"nosubscripts" option. The output in this case is % \[ \left.\frac{\partial V(T,P)}{\partial T}\right. % = \left.\frac{\partial^2 G(T,P)}{\partial T \partial P}\right. % = \left.\frac{\partial^2 G(P,T)}{\partial P \partial T}\right. % = -\left.\frac{\partial S(P,T)}{\partial P}\right. \] % % Accompanying the \verb"plain-derivatives" option is the \verb"nosubscripts" % option, which overrides the default option \verb"subscripts". This option % makes partial derivatives such as % \[ \left(\frac{\partial V}{\partial P}\right)_{T} % \qquad \text{(\texttt{subscripts} option)}, \] % and instead renders them % \[ \left(\frac{\partial V(P,T)}{\partial P}\right) % \qquad \text{(\texttt{nosubscripts} option)}. \] % Combined with \verb"plain-derivatives", this would give % \[ \left.\frac{\partial V(P,T)}{\partial P}\right. % \qquad \text{(\texttt{nosubscripts} and \texttt{plain-derivatives} % options)} . \] % The order of the variables is determined by the arguments given: it is % always written with the variable that is changing first, and the other % variables in the order given in the final argument to \cs{Partial} and % friends. This will result in things like the following: % \begin{verbatim} % \[ \Partial{\Vm}{T}{P} = \PartialMixSecond{\Gm}{T}{P}{} % = \PartialMixSecond{\Gm}{P}{T}{} = -\Partial{\Sm}{P}{T}, \] %\end{verbatim} % which would produce (using \verb"plain-derivatives") % \[ \frac{\partial V(T,P)}{\partial T} % = \frac{\partial^2 G(T,P)}{\partial T\partial P} % = \frac{\partial^2 G(P,T)}{\partial P\partial T} % = - \frac{\partial S(P,T)}{\partial P} \] % This is not unclear, but the variables appear in a different order. % % \DescribeEnv{thermoparentheses} % \DescribeEnv{thermobrackets} % \DescribeEnv{thermobar} % \DescribeEnv{thermoplain} % If you want to use parentheses \emph{locally}, even though your overall % document uses another delimiter, the |thermoparentheses| environment will do % that. Similarly, |thermobrackets| will temporarily switch to brackets, % |thermobar| will temporarily switch to a tailing vertical bar, and % |thermoplain| will remove delimiters altogether. % % \DescribeEnv{thermosubscripts} % \DescribeEnv{thermoNOsubscripts} % The environments |thermosubscripts| and |thermoNOsubscripts| force the % use or disuse of subscripts, respectively. % % \subsubsection{Options Regarding the Number of Moles} % \DescribeMacro{\allNs} % \DescribeMacro{\allNsbut} % The default option \verb"moles-index" defines the macro \cs{allNs} to expand % to $\vec{n}$ and the macro \verb"\allNsbut{i}" to expand to $n_{j\neq i}$. % You can change the dummy index: \verb"\allNsbut[k]{i}" expands to % $n_{k\neq i}$ by default. This is typically not necessary, however: if you % type \verb"\allNsbut{j}", the package will figure out that you want % $\Nt_{k\neq j}$ rather than $\Nt_{j\neq j}$. The time to use the optional % argument is in situations such as % \[ \Partial{\mu_j}{\Nt_k}{\Nt_{i\neq k}}, \] % which is incorrect if the dummy index $j$ is used in place of the $i$. % % You can change these to expand to ranges using the \verb"moles-range" % option, which renders \cs{allNs} as $n_1,\dotsc,n_C$ and \verb"\allNsbut{i}" % as $n_1,\dotsc,[n_i],\dotsc,n_C$. The optional argument is ignored in this % set of notation. Examples of these options are shown in % Table~\ref{table:allNs}. % % \DescribeMacro{\ncomponents} % You can change the symbol for the number of components (default: $C$) by % redefining the macro \cs{ncomponents}. % % \begin{table} % \caption{Illustration of the \texttt{moles-index} and \texttt{moles-range} % options and their effects on \cs{allNs} and \cs{allNsbut}.} % \label{table:allNs} % \SpecialUsageIndex{\allNs}\relax % \SpecialUsageIndex{\allNsbut}\relax % \SpecialUsageIndex{\allXs}\relax % \SpecialUsageIndex{\allXsbut}\relax % \centering % \begin{minipage}{4.49in}\renewcommand*{\footnoterule}{\vskip-1.5ex}% % \small % \begin{tabular}{l l l} % \toprule % Macro\footnote{You may use $C$ directly instead of \cs{ncomponents} % here, but then it will not change $C-1$ to $C-2$ (or, say, $M-1$ to % $M-2$) if you want to redefine \cs{ncomponents} later.} % & \verb"moles-index" & \verb"moles-range" \\ % \midrule % \verb"\allNs" & $\vec{n}$ & $n_1,\dotsc,n_C$ \\ % \verb"\allNsbut{1}" & $n_{j\neq 1}$ & $n_2,\dotsc,n_C$ \\ % \verb"\allNsbut{i}" & $n_{j\neq i}$ & $n_1,\dotsc,[n_i],\dotsc,n_C$ \\ % \verb"\allNsbut{j}" & $n_{k\neq j}$ & $n_1,\dotsc,[n_j],\dotsc,n_C$ \\ % \verb"\allNsbut{\ncomponents}" & $n_{j\neq C}$ & $n_1,\dotsc,n_{C-1}$ \\ % \verb"\allNsbut[k]{i}" & $n_{k\neq i}$ & $n_1,\dotsc,[n_i],\dotsc,n_C$ \\ % \verb"\allXs" & $\vec{x}$ & $x_1,\dotsc,x_{C}$ \\ % \verb"\allXsbut{1}" & $x_{j\neq 1,C}$ & $x_2,\dotsc,x_{C-1}$ \\ % \verb"\allXsbut{i}" & $x_{j\neq i,C}$ & $x_1,\dotsc,[x_i],\dotsc,x_{C-1}$ \\ % \verb"\allXsbut{j}" & $x_{k\neq j,C}$ & $x_1,\dotsc,[x_j],\dotsc,x_{C-1}$ \\ % \verb"\allXsbut{\ncomponents-1}" & $x_{j\neq C-1,C}$ & $x_1,\dotsc,x_{C-2}$ \\ % \verb"\allXsbut[k]{\ncomponents-1}" & $x_{k\neq C-1,C}$ & $x_1,\dotsc,x_{C-2}$ \\ % \verb"\allXsbut{\ncomponents}"\footnote{This would typically be used % to denote something like $\Gt(T,P,n,x_1,\dotsc,x_{C-1})$ rather % than in a subscript, but it looks silly if we don't handle this % case this way.} % & $x_{j\neq C}$ & $x_1,\dotsc,x_{C-1}$ \\ % \bottomrule % \end{tabular} % \end{minipage} % \end{table} % % \subsubsection{Other Options} % \DescribeMacro{\dbar} % \newcommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-10mu d}}\relax % The default for path-dependent one-forms (often called ``inexact % differentials'') is \cs{dbar}, which looks like $\dbar$. This can be changed, % if desired, to a delta ($\delta$) with the \verb"delta" option to the % package. % % It should be noted that the \cs{dbar} macro is not very stable: changing % the typeface to something not supported will probably ruin it, as the kerning % is very font-specific. This package currently supports Computer Modern, % Times, Palatino, Bitstream Charter, Garamond, and Utopia, but other typefaces % may require a manual redefinition. % % \subsubsection{Options for Specific Textbooks} % There are several options that load package options and/or redefine % particular commands to match the notation in a particular textbook. So far % the following textbooks are supported: % \begin{description} % \item[Bejan] Notation used by Bejan, \emph{Advanced Engineering % Thermodynamics}, Third Edition. Wiley: Hoboken, 2006. Loads non-default % package options \verb"EUFGHAN", \verb"intensive-lowercase", and % \verb"delta". Also swaps the definitions of \verb"\@specific" and % \verb"\@intensive" and redefines \cs{cV}, \cs{cVs}, \cs{cVt}, % \cs{expansivitysymbol}, and \cs{ncomponents} to match his notation. % \item[CBK] Notation used by \c Cengel, Boles, and Kano\u glu, % \emph{Thermodynamics: An Engineering Approach}, Ninth Edition. % McGraw Hill: Singapore, 2020. Loads the non-default package options % \verb"EUAGHAN" and \verb"intensive-lowercase"; also redefines % partial molar, specific, and molar properties' notation to fit theirs, % and redefines \cs{pressure@symbol}, \cs{Deltarxn}, % \cs{compressibilitysymbol}, and \cs{expansivitysymbol} to fit their % usage. Their prodigal symbols for specific and total volume are not % supported. % \item[ElliottLira] Notation used by Elliott and Lira, \emph{Introductory % Chemical Engineering Thermodynamics}, Second Edition. Prentice Hall: % Upper Saddle River, 2012. Loads the default package options and % redefines \cs{allcomponents} and \cs{Deltarxn} to fit their notation. % \item[Koretsky] Notation used by Koretsky, \emph{Engineering and Chemical % Thermodynamics}, Second Edition, Wiley: New Caledonia, 2013. % Loads the non-default package options \verb"EUAGHAn", \verb"brackets", % \verb"intensive-lowercase", and \verb"delta"; modifies the % \verb"intensive-lowercase" defaults to make uppercase partial molar % properties to match Koretsky's notation and redefines % \cs{expansivitysymbol}, \cs{IS}, \cs{residual}, \cs{IG}, \cs{IGM}, % \cs{Deltafus}, \cs{Deltasub}, \cs{Deltavap}, \cs{Henryrat}, % \cs{gammarat}, \cs{Deltafus}, \cs{Deltavap}, and \cs{Deltasub} to match % his use. Also redefines the fugacity coefficients to use $\varphi$ % instead of $\phi$. % \item[MSBB] Notation used by Moran, Shapiro, Boettner, and Bailey, % \emph{Fundamentals of Engineering Thermodynamics}, Eighth Edition. % Wiley: Kendallville, 2014. Loads the non-default package options % \verb"EUFGHAn", \verb"intensive-lowercase", and \verb"delta"; removes the % left parenthesis in partial derivatives and redefines \cs{IGM}, \cs{IG}, % \cs{expansitivitysymbol}, \cs{allcomponents}, \cs{allbut}, \cs{Ft}, % \cs{Helmholtz@symbol}, \cs{@intensive}, \cs{@specific}, \cs{fmix}, % \cs{phimix}, and \cs{pressure@symbol} to fit their somewhat ill-advised % notation. Also resets \cs{partialmolar} to match their use. % \item[Prausnitz] Notation used by Prausnitz, Lichtenthaler, and de Azevedo, % \emph{Molecular Thermodynamics of Fluid-Phase Equilibria}, Third Edition, % Pearson, 1998. Loads the non-default package option % \verb"intensive-lowercase" and redefines \cs{fmix}, \cs{phimix}, % \cs{fpure}, \cs{phipure}, \cs{residual}, \cs{allcomponents}, and % \cs{allbut} to fit their notation. % \item[Sandler] Notation used by Sandler, \emph{Chemical, Biochemical, and % Engineering Thermodynamics}, Fifth Edition. Wiley: Hoboken, 2017. % Loads non-default package options \verb"EUAGHaN" and % \verb"extensive-plain"; also redefines \cs{sat}, \cs{excess}, % \cs{residual}, \cs{ncomponents}, \cs{fmix}, \cs{fstd}, \cs{phimix}, % \cs{allcomponents}, \cs{IS}, \cs{Deltamix}, \cs{Deltarxn}, \cs{Deltasub}, % \cs{Deltafus}, \cs{Deltavap}, and \cs{Henryrat}. Also redefines \cs{cV}, % \cs{cP}, \cs{cVt}, and \cs{cPt}. % \item[SVNAS] Notation used by Smith, Van Ness, Abbott, and Swihart, % \emph{Introduction to Chemical Engineering Thermodynamics}, Ninth % Edition. McGraw-Hill: Boston, 2021. Loads the non-default package option % \verb"extensive-superscript" and redefines \cs{allcomponents}, % \cs{allbut}, \cs{IG}, \cs{IGM}, \cs{IS}, \cs{expansivitysymbol}, and % \cs{Deltarxn} to fit their notation. The extensive heat capacities are % also redefined, as they do not use such an entity. % \item[TesterModell] Notation used by Tester and Modell, % \emph{Thermodynamics and Its Applications}, Third Edition, Prentice Hall: % Upper Saddle River, 1997. Loads the non-default package options % \verb"EUAGHaN" and \verb"delta"; also redefines \cs{ncomponents} to be % $n$ and redefines \cs{allcomponents}, \cs{allbut}, and \cs{allbutlastand} % to fit their (somewhat inconsistent) notation. Also redefines \cs{IG}, % \cs{IGM}, \cs{IS}, \cs{excess}, \cs{reaction}, \cs{Henryrat}, % \cs{Henrymol}, \cs{gammarat}, and \cs{gammamol} to fit their style. % \item[Thompson] Notation used by Thompson, \emph{A Unified Introduction to % Chemical Engineering Thermodynamics}, Stillwater Press: Orono, 2000. % Loads the non-default package options \verb"EUAGHAn" and \verb"delta"; % also redefines \cs{excess}, \cs{residual}, \cs{allcomponents}, % \cs{ncomponents}, \cs{IS}, \cs{IG}, \cs{IGM}, \cs{fpure}, \cs{phipure}, % \cs{mix}, \cs{Deltamix}, \cs{Deltarxn}, \cs{@intensive}, and \cs{allbut} % to match his notation. Note that he uses $c$, $n_C$, and $\mathrm{n}$ % for the number of components in various places in the book; I chose $c$ % for the definition of \cs{ncomponents}, but it is impossible to be % completely consistent with his notation. % \end{description} % There may well be some inconsistencies between the notation in these books % and the symbols used here. I will fix such inconsistencies as I become aware % of them. % % \StopEventually{\PrintChanges\PrintIndex} % % ^^A-------------------------------------------------------------------------- % \iffalse %<*package> % \fi % % \section{Implementation} % This package requires the \verb"amstext" package, as \cs{text} is used to % handle \cs{sat}, \cs{IS}, \cs{IG}, \cs{IGM}, \cs{Henrymol}, \cs{fusion}, % \cs{reaction}, \cs{vaporization}, and \cs{sublimation} by default, as well % as several other macros defined by package options. % \begin{macrocode} \RequirePackage{amstext} % \end{macrocode} % % \subsection{Symbols Controlled by Package Options} % We set some symbols prior to declaring the package options. The default % symbols follow package option |EUAGHan|, even though the macros follow % the option |EUFGHAN|. % % \begin{macro}{\dbar} % The way \cs{dbar} is defined depends on the typeface you are using. % We try to determine, at \verb"\begin{document}", which typeface you chose % based on the packages that are loaded and some of their internal definitions. % The \textsf{thermodynamics} package currently supports % Computer Modern (the default or through \verb"lmodern"), % Palatino (through \verb"pxfonts" or \verb"newpxmath"), % Times (through \verb"txfonts", \verb"mathptmx", or \verb"newtxmath"), % Utopia (through \verb"mathdesign"), % Bitstream Charter (through \verb"mathdesign"), and % Garamond (through \verb"mathdesign"). % Definitions of \cs{dbar} (with \cs{newcommand*} or \cs{providecommand*}) % in the preamble will override the ones here. % \begin{macrocode} \AtBeginDocument{ \@ifpackageloaded{pxfonts}{% \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-10mu d}}% }{} \@ifpackageloaded{newpxmath}{% \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-10mu d}}% }{} \@ifpackageloaded{txfonts}{% \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-11mu d}}% }{} \@ifpackageloaded{mathptmx}{% \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-10mu d}}% }{} \@ifpackageloaded{newtxmath}{% \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-12mu d}}% }{} \@ifpackageloaded{mathdesign}{% \def\@charter{mdbch}% \def\@utopia{mdput}% \def\@garamond{mdugm}% \ifx\MD@default@family\@utopia \providecommand*{\dbar}{{\mkern8mu\mathchar'26\mkern-20mu d}}% \fi \ifx\MD@default@family\@charter \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-15mu d}}% \fi \ifx\MD@default@family\@garamond \providecommand*{\dbar}{{\mkern5mu\mathchar'26\mkern-17mu d}}% \fi }{} % Defaults to Computer Modern \providecommand*{\dbar}{{\mkern3mu\mathchar'26\mkern-12mu d}} } % \end{macrocode} % \end{macro} % % Symbols are defined for the total energy, internal energy, Helmholtz free % energy, Gibbs free energy, enthalpy, entropy, surface area, volume, number % of moles, heat, and work; these are $E$, $U$, $A$, $G$, $H$, $S$, $a$, % $V$, $n$, $Q$, and $W$, respectively. These commands should not be used on % their own, but rather accessed through the macros \cs{Ut}, \cs{Um}, and % \cs{Us} (using the internal energy as an example). % % \begin{macro}{\totalenergy@symbol} % \begin{macro}{\internalenergy@symbol} % \begin{macro}{\Helmholtz@symbol} % \begin{macro}{\Gibbs@symbol} % \begin{macro}{\Landau@symbol} % \begin{macro}{\enthalpy@symbol} % \begin{macro}{\entropy@symbol} % \begin{macro}{\area@symbol} % \begin{macro}{\volume@symbol} % \begin{macro}{\mole@symbol} % \begin{macro}{\heat@symbol} % \begin{macro}{\work@symbol} % \begin{macro}{\temperature@symbol} % \begin{macro}{\pressure@symbol} % The default symbols are not intended to be easy to change---the intended % mechanism is through package options. If you want to use a non-standard % symbol that is not available through one of the package options, you can % redefine these macros inside % \cs{makeatletter}\dots\cs{makeatother}. For example, % \begin{verbatim} % \makeatletter % \renewcommand*{\Helmholtz@symbol}{H} % \renewcommand*{\enthalpy@symbol}{h} % \makeatother %\end{verbatim} % would define the ill-advised notation that I have nonetheless heard of % that uses $H$ for Helmholtz free energy and $h$ for enthalpy. % Note that the macros for temperature and pressure are only used inside % the definitions of the compressibilities, expansivitites, and heat % capacities; there is no user-level macro for the temperature or the pressure, % so it is up to the user to use consistent symbols for those properties. % \begin{macrocode} \newcommand*{\totalenergy@symbol}{E} \newcommand*{\internalenergy@symbol}{U} \newcommand*{\Helmholtz@symbol}{A} \newcommand*{\Gibbs@symbol}{G} \newcommand*{\Landau@symbol}{\Omega} \newcommand*{\enthalpy@symbol}{H} \newcommand*{\entropy@symbol}{S} \newcommand*{\area@symbol}{a} \newcommand*{\volume@symbol}{V} \newcommand*{\mole@symbol}{n} \newcommand*{\heat@symbol}{Q} \newcommand*{\work@symbol}{W} \newcommand*{\temperature@symbol}{T} \newcommand*{\pressure@symbol}{P} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\thermo@underline} % \begin{macro}{\thermo@overline} % We then define two macros and several lengths that we shall use when % drawing rules above or below a symbol. The default is to use underlined % symbols for extensive quantities, plain symbols for molar quantities, and % carets for specific quantities, but this can be changed using package % options. % ^^A TODO these would work better as kern 0.1*width, symbol, kern 0.2*width % \begin{macrocode} \newcommand*{\thermo@underline}[1]{% \mkern1mu\underline{\mkern-1mu #1\mkern-4mu}\mkern4mu% } \newcommand*{\thermo@overline}[1]{% \mkern2mu\overline{\mkern-2mu #1\mkern-1mu}\mkern1mu% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\PartialOpen} % \begin{macro}{\PartialClose} % \begin{macro}{\PartialEmptyClose} % We define three commands to use to denote the beginning and end of partial % derivatives. These symbols can be customized by package options. Default % is \verb"parentheses", meaning that \verb"\[ \Partial{f}{x}{y} \]" renders as % \[ \left(\frac{\partial f}{\partial x}\right)_y \] % with the defaults. The macro \cs{PartialEmptyClose} is used when the last % argument to \cs{Partial} is empty, which is important for the \verb"bar" % option to the document class or inside the \verb"thermobar" environment. % \begin{macrocode} \newcommand*{\PartialOpen}{(} \newcommand*{\PartialClose}{)} \newcommand*{\PartialEmptyClose}{)} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Package Options} % We declare a bunch of options for which sets of symbols to use. % These are summarized in Table~\ref{table:symbol-sets}. % \begin{macrocode} \DeclareOption{EUAGHan}{}% the default \DeclareOption{EUAGHaN}{\renewcommand*{\mole@symbol}{N}}% \DeclareOption{EUHAGan}{\ExecuteOptions{EUAGHan}} \DeclareOption{EUHAGaN}{\ExecuteOptions{EUAGHaN}} \DeclareOption{EUFGHAn}{% this is my favorite set of symbols \renewcommand*{\Helmholtz@symbol}{F}% \renewcommand*{\area@symbol}{A}% } \DeclareOption{EUFGHAN}{% this is my second favorite set of symbols \renewcommand*{\Helmholtz@symbol}{F}% \renewcommand*{\area@symbol}{A}% \renewcommand*{\mole@symbol}{N}% } \DeclareOption{EEFGHAn}{% this treats all energy the same way(?) \renewcommand*{\internalenergy@symbol}{E}% \renewcommand*{\Helmholtz@symbol}{F}% \renewcommand*{\area@symbol}{A}% } \DeclareOption{EEFGHAN}{% this treats all energy the same way(?) \renewcommand*{\internalenergy@symbol}{E}% \renewcommand*{\Helmholtz@symbol}{F}% \renewcommand*{\area@symbol}{A}% \renewcommand*{\mole@symbol}{N}% } \DeclareOption{EEFGHan}{% \renewcommand*{\internalenergy@symbol}{E}% \renewcommand*{\Helmholtz@symbol}{F} } \DeclareOption{EEFGHaN}{% \renewcommand*{\internalenergy@symbol}{E}% \renewcommand*{\Helmholtz@symbol}{F} \renewcommand*{\mole@symbol}{N}% } \DeclareOption{EEAGHan}{% \renewcommand*{\internalenergy@symbol}{E}% } \DeclareOption{EEAGHaN}{% \renewcommand*{\internalenergy@symbol}{E}% \renewcommand*{\mole@symbol}{N}% } \DeclareOption{EUAGHAn}{% Helmholtz free energy and area look the same here \renewcommand*{\area@symbol}{A}% } \DeclareOption{EUAGHAN}{% Helmholtz free energy and area look the same here \renewcommand*{\area@symbol}{A}% \renewcommand*{\mole@symbol}{N}% } \DeclareOption{EUFGHan}{% \renewcommand*{\Helmholtz@symbol}{F}% } \DeclareOption{EUFGHaN}{% \renewcommand*{\Helmholtz@symbol}{F}% \renewcommand*{\mole@symbol}{N}% } % \end{macrocode} % The \verb"delta" option redefines \cs{dbar} to produce the symbol $\delta$. % The default is to use a $d$ with a slash through it ($\dbar$) for inexact % differentials unless the user overrides it with this option. The macro could % also be redefined manually, of course. % \begin{macrocode} \DeclareOption{delta}{\let\dbar\delta} % \end{macrocode} % % \begin{macro}{\@extensive} % \begin{macro}{\@intensive} % \begin{macro}{\@specific} % Next, we define options for the set of notation. The default is % \verb"intensive-plain", which produces things like $V$ for molar volume, % $\Vt$ for total volume, and $\hat V$ for specific volume. % These are defined via the internal macros \verb"\@extensive", % \verb"\@intensive", and \verb"\@specific". % \begin{macrocode} \let\@extensive\relax \let\@intensive\relax \let\@specific\hat % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macrocode} \DeclareOption{extensive-plain}{% \let\@extensive\relax \let\@intensive\thermo@underline } \DeclareOption{intensive-plain}{% the default \let\@extensive\thermo@underline \let\@intensive\relax } \DeclareOption{intensive-lowercase}{% PLEASE don't use this! \let\@extensive\MakeUppercase \let\@intensive\MakeLowercase \def\@specific#1{\MakeLowercase{\hat #1}} \AtEndOfPackage{ \renewcommand*{\partialmolar}[1]{% \gdef\pm@symbol{\MakeLowercase #1}\generic@pm} \renewcommand*{\heatcapacitysymbol}{c} } } \DeclareOption{extensive-superscript}{% \gdef\@extensive#1{{#1}^t}% \let\@intensive\relax% \AtEndOfPackage{% \renewcommand*{\URt}{\internalenergy@symbol^{\residual,t}} \renewcommand*{\HRt}{\enthalpy@symbol^{\residual,t}} \renewcommand*{\FRt}{\Helmholtz@symbol^{\residual,t}} \renewcommand*{\GRt}{\Gibbs@symbol^{\residual,t}} \renewcommand*{\VRt}{\volume@symbol^{\residual,t}} \renewcommand*{\SRt}{\entropy@symbol^{\residual,t}} \renewcommand*{\UEt}{\internalenergy@symbol^{\excess,t}} \renewcommand*{\HEt}{\enthalpy@symbol^{\excess,t}} \renewcommand*{\FEt}{\Helmholtz@symbol^{\excess,t}} \renewcommand*{\GEt}{\Gibbs@symbol^{\excess,t}} \renewcommand*{\VEt}{\volume@symbol^{\excess,t}} \renewcommand*{\SEt}{\entropy@symbol^{\excess,t}} } } % \end{macrocode} % % The next two options choose whether variables held constant are subscripted % (the default) or placed next to the function. The \verb"nosubscripts" % option currently requires that the variable being changed is the first one % in the argument list. The difference is % \[ \left(\frac{\partial U}{\partial S}\right)_V \quad\text{versus}\quad % \left(\frac{\partial U(S,V)}{\partial S}\right) \] % for \verb"subscripts" and \verb"nosubscripts", respectively. % \begin{macrocode} \newif\if@subscripted \@subscriptedtrue \DeclareOption{subscripts}{\@subscriptedtrue} \DeclareOption{nosubscripts}{\@subscriptedfalse} % \end{macrocode} % These options change how \cs{Partial} and friends render derivatives. % The default is parentheses, but other options include brackets, braces, % a vertical bar on the right side, or plain (undecorated) derivatives. % \begin{macrocode} \DeclareOption{parentheses}{} \DeclareOption{brackets}{% \renewcommand*{\PartialOpen}{[}% \renewcommand*{\PartialClose}{]}% \renewcommand*{\PartialEmptyClose}{]}% } \DeclareOption{braces}{% \renewcommand*{\PartialOpen}{\{}% \renewcommand*{\PartialClose}{\}}% \renewcommand*{\PartialEmptyClose}{\}}% } \DeclareOption{bar}{% \renewcommand*{\PartialOpen}{.}% \renewcommand*{\PartialClose}{\rvert}% \renewcommand*{\PartialEmptyClose}{.}% } \DeclareOption{plain-derivatives}{% This implies dU(S,V,N)/dS notation \renewcommand*{\PartialOpen}{.}% \renewcommand*{\PartialClose}{.}% \renewcommand*{\PartialEmptyClose}{.}% \ExecuteOptions{nosubscripts}% } % \end{macrocode} % \subsection{The Number of Moles Macros} % \begin{macro}{\ncomponents} % We define the number of components, default $C$, for use in the ``all moles'' % and related macros. % \begin{macrocode} \newcommand*{\ncomponents}{C} % \end{macrocode} % \end{macro} % % \begin{macro}{\allNs} % \begin{macro}{\allNsbut} % \begin{macro}{\allMs} % \begin{macro}{\allmus} % \begin{macro}{\allMsbut} % \begin{macro}{\allmusbut} % Several macros define a shorthand for ``moles of all species'' (\cs{allNs}) % and ``moles of all species except'' (\cs{allNsbut}), as well as similar % quantities for masses (\cs{allMs}, \cs{allMsbut}) and chemical potentials % (\cs{allmus}, \cs{allmusbut}), which occur frequently in mixture % thermodynamics. The default is for \cs{allNs} to become $\vec{n}$ and % \verb"allNsbut{i}" to become $n_{j\neq i}$. The optional argument changes % which index (default: $j$) to use in the left side of the inequality.\relax % \footnote{The index \!$j$ is automatically replaced with $k$ if the user % issues \texttt{\textbackslash allNsbut\{j\}}.} % Essentially identical commands are defined for chemical potentials and % masses: \cs{allmus} and \cs{allmusbut} and \cs{allMs} and \cs{allMsbut}, % respectively. % \begin{macrocode} \newcommand*{\allNs}{\allcomponents{\Nt}} \newcommand*{\allXs}{\allcomponents{x}} \newcommand*{\allYs}{\allcomponents{y}} \newcommand*{\allmus}{\allcomponents{\mu}} \newcommand*{\allMs}{\allcomponents{m}} \newcommand*{\allWs}{\allcomponents{w}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\allXs} % \begin{macro}{\allYs} % \begin{macro}{\allWs} % \begin{macro}{\allWsbut} % \begin{macro}{\allXsbut} % \begin{macro}{\allYsbut} % Similar commands are defined for mole fractions (\cs{allXs}, \cs{allYs}, % etc.), but these assume the last mole fraction is \emph{not} one of the % variables---that is, \cs{allXsbut} and \cs{allYsbut} assume the argument % \emph{and} \cs{ncomponents} are held constant. For example, % \begin{verbatim} % \[ \Partial{\Gm}{T}{P,\allXs} = -\Sm \qquad % \Partial{\Gm}{x_i}{T,P,\allXsbut{i}} \neq \Gpm_i \] %\end{verbatim} % yields % \[ \Partial{G}{T}{P,\allXs} = -S \qquad % \Partial{G}{x_i}{T,P,x_{j\neq i,C}} \neq \Gpm{i}. \] % \begin{macrocode} \newcommand*{\allNsbut}[2][j]{\allbut[#1]{#2}{\Nt}} \newcommand*{\allXsbut}[2][j]{\allbutlastand[#1]{#2}{x}} \newcommand*{\allYsbut}[2][j]{\allbutlastand[#1]{#2}{y}} \newcommand*{\allmusbut}[2][j]{\allbut[#1]{#2}{\mu}} \newcommand*{\allMsbut}[2][j]{\allbut[#1]{#2}{m}} \newcommand*{\allWsbut}[2][j]{\allbutlastand[#1]{#2}{w}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\allbutlastand} % \begin{macro}{\allbut} % \begin{macro}{\allcomponents} % The \cs{allcomponents}, \cs{allbut}, and \cs{allbutlastand} macros can be % used to define new entities; say, if you want to use $z_i$ as a mole % fraction, then use % \begin{verbatim} % \newcommand*{\allZsbut}[2][j]{\allbutlastand[#1]{#2}{z}} %\end{verbatim} % Similarly, something meaning the concentrations of every species could be % defined via % \begin{verbatim} % \newcommand*{\allCs}{\allcomponents{C}} %\end{verbatim} % \begin{macrocode} \newcommand*{\allcomponents}[1]{\vec{#1}} \newcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_{k\neq #2}% \else {#3}_{#1\neq #2}% \fi } \newcommand*{\allbutlastand}[3][j]{% \edef\tmp@arg{#1}% \edef\tmp@@arg{#2}% \ifx\tmp@@arg\ncomponents {#3}_{#1 \neq #2}% \else \ifx\tmp@arg\tmp@@arg {#3}_{k \neq #2,\ncomponents}% \else {#3}_{#1 \neq #2,\ncomponents}% \fi \fi } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % We then define two package options that change how to render \cs{allNs} and % friends. % \begin{macrocode} \DeclareOption{moles-index}{} \DeclareOption{moles-range}{% \renewcommand*{\allcomponents}[1]{{#1}_1,\dots,{#1}_{\ncomponents}} \renewcommand*{\allbut}[3][j]{% \def\@one{1}% \edef\tmp@arg{#2}% \ifx\tmp@arg\@one {#3}_2,\dots,{#3}_{\ncomponents}% \else \ifx\tmp@arg\ncomponents {#3}_1,\dots,{#3}_{\ncomponents-1}% \else {#3}_1,\dots,[{#3}_{#2}],\dots,{#3}_{\ncomponents}% \fi \fi } \renewcommand*{\allbutlastand}[3][j]{% \def\@one{1}% \edef\tmp@arg{#2}% \edef\@ncminusone{\ncomponents-1}% \ifx\tmp@arg\@one {#3}_2,\dots,{#3}_{\ncomponents-1}% \else \ifx\tmp@arg\@ncminusone {#3}_1,\dots,{#3}_{\ncomponents-2}% \else \ifx\tmp@arg\ncomponents {#3}_1,\dots,{#3}_{\ncomponents-1}% \else {#3}_1,\dots,[{#3}_{#2}],\dots,{#3}_{\ncomponents}% \fi \fi \fi } } % \end{macrocode} % The remaining options define textbook-specific notation. % \begin{macrocode} \DeclareOption{Bejan}{ \ExecuteOptions{EUFGHAN,intensive-lowercase,delta} \let\@specific\MakeLowercase \def\@intensive#1{\MakeLowercase{\bar #1}} \AtEndOfPackage{ \DeclareSubscrSymbol{cV}{\bar\heatcapacitysymbol}{v} \DeclareSubscrSymbol{cVs}{\heatcapacitysymbol}{v} \DeclareSubscrSymbol{cVt}{\Nt\heatcapacitysymbol}{v} \renewcommand*{\expansivitysymbol}{\beta} \renewcommand*{\ncomponents}{n} } } \DeclareOption{CBK}{ \ExecuteOptions{EUAGHAN,intensive-lowercase} \AtEndOfPackage{ \let\thermo@overline\widetilde \let\@specific\MakeLowercase \renewcommand*{\@intensive}[1]{\MakeLowercase{\bar{#1}}} \renewcommand*{\pressure@symbol}{p} \renewcommand*{\Deltarxn}[1]{#1_R} \renewcommand*{\compressibilitysymbol}{\beta} \renewcommand*{\expansivitysymbol}{\alpha} } } \DeclareOption{ElliottLira}{ \AtEndOfPackage{ \renewcommand*{\allcomponents}[1]{#1} \renewcommand*{\Deltarxn}[1]{\Delta #1} } } \DeclareOption{Koretsky}{ \ExecuteOptions{EUAGHAn,brackets,intensive-lowercase,delta} \AtEndOfPackage{ \renewcommand*{\partialmolar}[1]{\gdef\pm@symbol{#1}\generic@pm} \renewcommand*{\expansivitysymbol}{\beta} \renewcommand*{\IS}{{\text{ideal}}} \renewcommand*{\residual}{{\text{dep}}} \renewcommand*{\IG}{{\text{ideal}}} \renewcommand*{\IGM}{{\text{ideal}}} \renewcommand*{\Deltafus}[1]{\Delta{#1}_\fusion} \renewcommand*{\Deltasub}[1]{\Delta{#1}_\sublimation} \renewcommand*{\Deltavap}[1]{\Delta{#1}_\vaporization} \renewcommand*{\Henryrat}{{\mathcal{H}}} \renewcommand*{\gammarat}{\gamma^\text{Henry's}} \let\phipure\varphi \renewcommand*{\phimix}{\hat\varphi} \renewcommand*{\phisat}{\varphi^\sat} \let\Delta@fus@sym\relax \DeclareSubscrSymbol{@Deltafus}{\Delta@fus@sym}{\fusion} \renewcommand*{\Deltafus}[1]{\def\Delta@fus@sym{\Delta #1}\@Deltafus} \let\Delta@vap@sym\relax \DeclareSubscrSymbol{@Deltavap}{\Delta@vap@sym}{\vaporization} \renewcommand*{\Deltasub}[1]{\def\Delta@sub@sym{\Delta #1}\@Deltasub} \let\Delta@sub@sym\relax \DeclareSubscrSymbol{@Deltasub}{\Delta@sub@sym}{\sublimation} \renewcommand*{\Deltasub}[1]{\def\Delta@sub@sym{\Delta #1}\@Deltasub} } } \DeclareOption{MSBB}{ \ExecuteOptions{EUFGHAn,intensive-lowercase,delta} \AtEndOfPackage{ \renewcommand*{\IGM}{\ast} \renewcommand*{\IG}{\ast} \renewcommand*{\expansivitysymbol}{\beta} \renewcommand*{\allcomponents}[1]{#1} \renewcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_{k}% \else {#3}_{#1}% \fi } \let\Helmholtz@symbol\psi \renewcommand*{\Ft}{\Psi} \def\@intensive#1{\MakeLowercase{\thermo@overline #1}} \let\@specific\MakeLowercase \renewcommand*{\partialmolar}[1]{\gdef\pm@symbol{#1}\generic@pm} \renewcommand*{\fmix}{\bar f} \renewcommand*{\phimix}{\bar\phi} \renewcommand*{\pressure@symbol}{p} } } \DeclareOption{Prausnitz}{ \ExecuteOptions{intensive-lowercase} \AtEndOfPackage{ \renewcommand*{\fmix}{f} \let\phimix\phi \renewcommand*{\fsat}{\fpure^\sat} \DeclareSubscrSymbol{fpure}{f}{{\text{pure}}} \DeclareSubscrSymbol{phipure}{\phi}{{\text{pure}}} \renewcommand*{\residual}{{{\mathcal{R}}}} \renewcommand*{\allcomponents}[1]{{#1}_i} \renewcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_{k}% \else {#3}_{#1}% \fi } } } \DeclareOption{Sandler}{ \ExecuteOptions{EUAGHaN,extensive-plain} \AtEndOfPackage{ \renewcommand*{\sat}{{\text{vap}}} \renewcommand*{\excess}{{\text{{ex}}}} \renewcommand*{\residual}{{\text{r}}} \renewcommand*{\ncomponents}{\mathcal{C}} \renewcommand*{\fmix}{\bar f} \renewcommand*{\fstd}{\bar f^\circ} \renewcommand*{\phimix}{\bar\phi} \renewcommand*{\allcomponents}[1]{\thermo@underline{#1}} \renewcommand*{\IG}{{\text{IG}}} \renewcommand*{\IGM}{{\text{IGM}}} \renewcommand*{\IS}{{\text{IM}}} \renewcommand*{\Deltamix}[1]{\Delta_\mixing #1} \renewcommand*{\Deltarxn}[1]{\Delta_\reaction #1} \renewcommand*{\Deltasub}[1]{\Delta_\sublimation #1} \renewcommand*{\Deltafus}[1]{\Delta_\fusion #1} \renewcommand*{\Deltavap}[1]{\Delta_\vaporization #1} \renewcommand*{\Henryrat}{H} \DeclareSubscrSymbol{cV}{\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cP}{\heatcapacitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{cVt}{\Nt\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPt}{\Nt\heatcapacitysymbol}{\pressure@symbol} } } \DeclareOption{SVNAS}{ \ExecuteOptions{extensive-superscript} \AtEndOfPackage{ \renewcommand*{\allcomponents}[1]{#1} \renewcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_{k}% \else {#3}_{#1}% \fi } \renewcommand*{\IG}{{ig}} \renewcommand*{\IGM}{{ig}} \renewcommand*{\IS}{{id}} \renewcommand*{\expansivitysymbol}{\beta} \renewcommand*{\Deltarxn}[1]{\Delta #1} \DeclareSubscrSymbol{cVt}{\Nt\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPt}{\Nt\heatcapacitysymbol}{\pressure@symbol} } } \DeclareOption{TesterModell}{ \ExecuteOptions{EUAGHaN,delta} \AtEndOfPackage{ \renewcommand*{\ncomponents}{n} \renewcommand*{\allcomponents}[1]{{#1}_i} \renewcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_k\relax[#2] \else {#3}_{#1}\relax[#2] \fi } \renewcommand*{\allbutlastand}[3][j]{% \edef\tmp@arg{#1}% \edef\tmp@@arg{#2}% \ifx\tmp@@arg\ncomponents {#3}_{#1}\relax[#2]% \else \ifx\tmp@arg\tmp@@arg {#3}\relax[#2,\ncomponents]% \else {#3}\relax[#2,\ncomponents]% \fi \fi } \renewcommand*{\IG}{{ig}} % Tester & Modell never use "igm" anywhere, and I only found ig once \renewcommand*{\IGM}{{igm}} \renewcommand*{\IS}{{ID}} \renewcommand*{\excess}{{EX}}% \renewcommand*{\reaction}{{rx}} \renewcommand*{\Henryrat}{f^{\ast\ast}} \renewcommand*{\Henrymol}{f^\ast} \renewcommand*{\gammarat}{\gamma^{\ast\ast}} \renewcommand*{\gammamol}{\gamma^\ast} } } \DeclareOption{Thompson}{ \ExecuteOptions{EUAGHAn,delta} \AtEndOfPackage{ \renewcommand*{\excess}{{EX}} \renewcommand*{\residual}{{R}} \renewcommand*{\allcomponents}[1]{{#1}_j} \renewcommand*{\ncomponents}{c} \renewcommand*{\IS}{{IS}} \renewcommand*{\IG}{{IG}} \let\IGM\IG \def\@fpure_#1{f_{#1}\@ifnextchar^{}{^\bullet}} \renewcommand*{\fpure}{\@ifnextchar_{\@fpure}{f}} \def\@phi@pure_#1{\phi_{#1}\@ifnextchar^{}{^\bullet}} \renewcommand*{\phipure}{\@ifnextchar_{\@phi@pure}{\phi}} \renewcommand*{\mixing}{{MIX}} \renewcommand*{\Deltamix}[1]{\Delta_\mixing #1} \renewcommand*{\Deltarxn}[1]{\Delta #1} \def\@@intensive_#1{_{#1}\@ifnextchar^{}{^\bullet}} \newcommand*{\@intensive}[1]{#1\@ifnextchar_{\@@intensive}{}} \renewcommand*{\allbut}[3][j]{% \def\tmp@arg{#2}% \def\tmp@@arg{#1}% \ifx\tmp@arg\tmp@@arg {#3}_{k}\neq{#3}_{#2}% \else {#3}_{#1}\neq{#3}_{#2}% \fi } } } % \end{macrocode} % We execute the default options below. % \begin{macrocode} \ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,moles-index} \ProcessOptions % \end{macrocode} % % \subsection{Commands for Partial Derivatives} % The \cs{Partial} command and its second-order siblings are defined as below. % They typeset partial derivatives of the first argument with respect to % the second (and third, in the case of mixed second partial derivatives) % arguments, holding the last argument constant. % % The starred forms adjust the spacing after the partial derivative so the % trailing binary operator (assumed to be the same width as an equals sign) % overhangs the variables held constant. % We thus set \verb"operator@width" to be \emph{just} greater than the width of % an equals sign. %^^A 3/1/2022: changed adjust@width to 2pt (up from 1pt) %^^A 4/21/2022: changed adjust@width to 0.1\operator@width (from 2pt) % \begin{macrocode} \newlength{\Partial@const@width} \newlength{\operator@width} \settowidth{\operator@width}{=} \newlength{\adjust@width} \setlength{\adjust@width}{0.1\operator@width} \addtolength{\operator@width}{\adjust@width} % \end{macrocode} % \begin{macro}{\Partial*} % \begin{macro}{\Partial} % The command \cs{Partial} and its friends drastically simplify the creation % of partial derivatives. The command \cs{Partial*} is the same as % \cs{Partial} except that it adjusts the spacing so the (presumably) binary % operator that follows it slightly overlaps the subscripts. % \begin{macrocode} \def\Partial@start{\left\PartialOpen} \def\Partial@end{\right\PartialClose} \def\Partial@empty@end{\right\PartialEmptyClose} \def\Partial{\@ifstar\Partial@star\Partial@nostar} %^^A Several ifs to use later (breaks it if these definitions are inside) \newif\iftwo@has@Nt \two@has@Ntfalse \newif\iftwo@has@xory \two@has@xoryfalse \newif\ifthree@has@Nt \three@has@Ntfalse \newif\ifthree@has@xory \three@has@xoryfalse \AtEndOfPackage{% \edef\thermo@Nt{\Nt}% \edef\thermo@x{x}% \edef\thermo@y{y}% } \def\thermo@parse@two#1\relax{% \@tfor\@i:=#1\do{% \edef\@@i{\@i}% \ifx\@@i\thermo@Nt \two@has@Nttrue \@break@tfor \fi \ifx\@@i\thermo@x \two@has@xorytrue \@break@tfor \fi \ifx\@@i\thermo@y \two@has@xorytrue \@break@tfor \fi } } \newcommand*{\Partial@nostar}[3]{% \def\tmp@arg{#3}% \if@subscripted % Handles situation of empty variables held constant \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial #1} {\partial #2}\Partial@empty@end}% \else \ensuremath{\Partial@start\frac{\partial #1} {\partial #2}\Partial@end_{#3}}% \fi \else % If not subscripted, we put the arguments (if any) in the derivative \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial #1} {\partial #2}\Partial@empty@end}% \else % Check for whether #3 contains \allNsbut{i}/etc. and #2 is \Nt_i/etc. \thermo@parse@two#2\relax \iftwo@has@Nt \renewcommand*{\allbut}[3][j]{\allcomponents{##3}}% \ensuremath{\Partial@start\frac{\partial #1(#3)} {\partial #2}\Partial@end}% \else \iftwo@has@xory \renewcommand*{\allbutlastand}[3][j]{\allbut{\ncomponents}{##3}}% \ensuremath{\Partial@start\frac{\partial #1(#3)} {\partial #2}\Partial@end}% \else \ensuremath{\Partial@start\frac{\partial #1(#2,#3)} {\partial #2}\Partial@end}% \fi \fi \fi \fi } \newcommand*{\Partial@star}[3]{% \settowidth{\Partial@const@width}{\ensuremath{#3}}% \addtolength{\Partial@const@width}{-0.15\Partial@const@width}% \Partial@nostar{#1}{#2}{#3}% \if@subscripted \ifdim\operator@width<\Partial@const@width \kern -\operator@width \else \kern -\Partial@const@width \fi \fi } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\PartialBigg} % \begin{macro}{\PartialBigg*} % The \cs{PartialBigg} macro (and its starred form) replace the \cs{left} % and \cs{right} commands in \cs{Partial} with \verb"amsmath"'s \cs{Biggl} % and \cs{Biggr} variants. The starred form is inherited from \cs{Partial} % without modification. % \begin{macrocode} \def\PartialBigg{% \def\Partial@start{\Biggl\PartialOpen}% \def\Partial@end{\Biggr\PartialClose}% \def\Partial@empty@end{\Biggr\PartialClose}% \Partial% } % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\Partialbigg} % \begin{macro}{\Partialbigg*} % The \cs{Partialbigg} macro does the same thing as \cs{PartialBigg}, except % using \verb"amsmath"'s \cs{biggl}/\cs{biggr} variants. % \begin{macrocode} \def\Partialbigg{% \def\Partial@start{\biggl\PartialOpen}% \def\Partial@end{\biggr\PartialClose}% \def\Partial@empty@end{\biggr\PartialClose}% \Partial% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\PartialSecond} % \begin{macro}{\PartialSecond*} % The second partial derivatives are defined similarly to \cs{Partial}. % \begin{macrocode} \def\PartialSecond{\@ifstar\PartialSecond@star\PartialSecond@nostar} \newcommand*{\PartialSecond@nostar}[3]{% \def\tmp@arg{#3}% \if@subscripted % Handles situation of empty variables held constant \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial^2 #1} {\partial #2^2}\Partial@empty@end}% \else \ensuremath{\Partial@start\frac{\partial^2 #1} {\partial #2^2}\Partial@end_{#3}}% \fi \else \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial^2 #1} {\partial #2^2}\Partial@empty@end}% \else % Check for whether #3 contains \allNsbut{i}/etc. and #2 is \Nt_i/etc. \thermo@parse@two#2\relax \iftwo@has@Nt \renewcommand*{\allbut}[3][j]{\allcomponents{##3}}% \ensuremath{\Partial@start\frac{\partial^2 #1(#3)} {\partial #2^2}\Partial@end}% \else \iftwo@has@xory \renewcommand*{\allbutlastand}[3][j]{\allbut{\ncomponents}{##3}}% \ensuremath{\Partial@start\frac{\partial^2 #1(#3)} {\partial #2^2}\Partial@end}% \else \ensuremath{\Partial@start\frac{\partial^2 #1(#2,#3)} {\partial {#2}^2}\Partial@end}% \fi \fi \fi \fi } \newcommand*{\PartialSecond@star}[3]{% \settowidth{\Partial@const@width}{\ensuremath{#3}}% \addtolength{\Partial@const@width}{-0.15\Partial@const@width}% \PartialSecond@nostar{#1}{#2}{#3}% \if@subscripted \ifdim\operator@width<\Partial@const@width \kern -\operator@width \else \kern -\Partial@const@width \fi \fi } % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\PartialSecondBigg} % \begin{macro}{\PartialSecondBigg*} % The \cs{PartialSecondBigg} macro and its starred variant replace \cs{left} % and \cs{right} with \verb"amsmath"'s \cs{Biggl} and \cs{Biggr}. % \begin{macrocode} \def\PartialSecondBigg{% \def\Partial@start{\expandafter\Biggl\PartialOpen}% \def\Partial@end{\expandafter\Biggr\PartialClose}% \PartialSecond% } % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\PartialSecondbigg} % \begin{macro}{\PartialSecondbigg*} % The \cs{PartialSecondbigg} macro and its starred variant replace \cs{left} % and \cs{right} with \verb"amsmath"'s \cs{biggl} and \cs{biggr}. % \begin{macrocode} \def\PartialSecondbigg{% \def\Partial@start{\expandafter\biggl\PartialOpen}% \def\Partial@end{\expandafter\biggr\PartialClose}% \PartialSecond% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\PartialMixSecond} % \begin{macro}{\PartialMixSecond*} % The macro \cs{PartialMixSecond} takes an extra argument, but is otherwise % the same as its same-variable cousin. % \begin{macrocode} \def\PartialMixSecond{\@ifstar\PartialMixSecond@star\PartialMixSecond@nostar} \newcommand*{\PartialMixSecond@nostar}[4]{% \def\tmp@arg{#4}% \if@subscripted % Handles situation of empty variables held constant \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial^2 #1} {\partial #2\partial#3}\Partial@empty@end}% \else \ensuremath{\Partial@start\frac{\partial^2 #1} {\partial #2\partial#3}\Partial@end_{#4}}% \fi \else \ifx\tmp@arg\@empty \ensuremath{\Partial@start\frac{\partial^2 #1(#2,#3)} {\partial #2\partial#3}\Partial@empty@end}% \else % This time, we check whether #2 OR #3 are \Nt_i/etc. \thermo@parse@two#3\relax \iftwo@has@Nt\three@has@Nttrue\fi \iftwo@has@xory\three@has@xorytrue\fi \two@has@Ntfalse \two@has@xoryfalse \thermo@parse@two#2\relax \iftwo@has@Nt \renewcommand*{\allbut}[3][j]{\allcomponents{##3}}% \ensuremath{\Partial@start\frac{\partial^2 #1(#3,#4)} {\partial #2\partial#3}\Partial@end}% \else \iftwo@has@xory \renewcommand*{\allbutlastand}[3][j]{\allbut{\ncomponents}{##3}}% \ensuremath{\Partial@start\frac{\partial^2 #1(#3,#4)} {\partial #2\partial#3}\Partial@end}% \else \ifthree@has@Nt \renewcommand*{\allbut}[3][j]{\allcomponents{##3}}% \ensuremath{\Partial@start\frac{\partial^2 #1(#2,#4)} {\partial #2\partial#3}\Partial@end}% \else \ifthree@has@xory \PackageWarning{thermodynamics}{GOT HERE} %\renewcommand*{\allbutlastand}[3][j]{\allbut{\ncomponents}{##3}}% \renewcommand*{\allbutlastand}[3][j]{SCREW YOU}% \ensuremath{\Partial@start\frac{\partial^2 #1(#2,#4)} {\partial #2\partial#3}\Partial@end}% \else \ensuremath{\Partial@start\frac{\partial^2 #1(#2,#3,#4)} {\partial #2\partial#3}\Partial@end}% \fi \fi \fi \fi \fi \fi } \newcommand*{\PartialMixSecond@star}[4]{% \settowidth{\Partial@const@width}{\ensuremath{#4}}% \addtolength{\Partial@const@width}{-0.25\Partial@const@width}% \PartialMixSecond@nostar{#1}{#2}{#3}{#4}% \if@subscripted \ifdim\operator@width<\Partial@const@width \kern -\operator@width \else \kern -\Partial@const@width \fi \fi } % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\PartialMixSecondBigg} % \begin{macro}{\PartialMixSecondBigg*} % \begin{macro}{\PartialMixSecondbigg} % \begin{macro}{\PartialMixSecondbigg*} % The macro \cs{PartialMixSecondBigg} and its starred form are analogous to % \cs{PartialBigg} and \cs{PartialSecondBigg}. \cs{PartialMixSecondbigg} and % its starred form are similarly analogous to \cs{Partialbigg} and % \cs{PartialSecondbigg}. % \begin{macrocode} \def\PartialMixSecondBigg{% \def\Partial@start{\expandafter\Biggl\PartialOpen}% \def\Partial@end{\expandafter\Biggr\PartialClose}% \PartialMixSecond% } \def\PartialMixSecondbigg{% \def\Partial@start{\expandafter\biggl\PartialOpen}% \def\Partial@end{\expandafter\biggr\PartialClose}% \PartialMixSecond% } % \end{macrocode} % If the user does not load the \verb"amsmath" package, we will not have access % to \cs{Biggl}, \cs{Biggr}, \cs{biggl}, and \cs{biggr}, so we revert them back % to the ordinary \cs{left} and \cs{right} versions and warn the user. % \begin{macrocode} \AtBeginDocument{% \@ifpackageloaded{amsmath}{}{% \PackageWarningNoLine{thermodynamics} {Package amsmath not loaded; load to make PartialBigg and friends work correctly}% \let\PartialBigg\Partial \let\Partialbigg\Partial \let\PartialSecondBigg\PartialSecond \let\PartialSecondbigg\PartialSecond \let\PartialMixSecondBigg\PartialMixSecond \let\PartialMixSecondbigg\PartialMixSecond }% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{Local Override of Delimiters} % \begin{environment}{thermoparentheses} % \begin{environment}{thermobrackets} % \begin{environment}{thermobraces} % \begin{environment}{thermobar} % \begin{environment}{thermoplain} % We define seven environments that \emph{locally} override the delimiters on % partial derivatives generated with \cs{Partial} and friends and/or the % subscript notation for partial derivatives. % \begin{macrocode} \newenvironment*{thermoparentheses}{ \renewcommand*{\PartialOpen}{(}% \renewcommand*{\PartialClose}{)}% \renewcommand*{\PartialEmptyClose}{)}% }{} \newenvironment*{thermobrackets}{% \renewcommand*{\PartialOpen}{[}% \renewcommand*{\PartialClose}{]}% \renewcommand*{\PartialEmptyClose}{]}% }{} \newenvironment*{thermobraces}{% \renewcommand*{\PartialOpen}{\{}% \renewcommand*{\PartialClose}{\}}% \renewcommand*{\PartialEmptyClose}{\}}% }{} \newenvironment*{thermobar}{% \renewcommand*{\PartialOpen}{.}% \renewcommand*{\PartialClose}{\rvert}% \renewcommand*{\PartialEmptyClose}{.}% }{} \newenvironment*{thermoplain}{% \renewcommand*{\PartialOpen}{.}% \renewcommand*{\PartialClose}{.}% \renewcommand*{\PartialEmptyClose}{.}% \@subscriptedfalse }{} \newenvironment*{thermoNOsubscripts}{\@subscriptedfalse}{} \newenvironment*{thermosubscripts}{\@subscriptedtrue}{} % \end{macrocode} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % % \subsection{User-Interface Macros to Define Symbols} % \begin{macro}{\DeclareSubscrSymbol} % First, we define a (messy!)\ command that serves to create ``subscripted'' % symbols; for example, typing \verb"\cP_i" should yield $C_{P,i}$ rather % than $C_{Pi}$, ${C_P}_i$, or ${C_{P_i}}$. Superscripts are also handled % properly and can be in either order. % \begin{macrocode} \newcommand*{\DeclareSubscrSymbol}[3]{% \expandafter\def\csname #1\endcsname{% \@ifnextchar^{\csname @#1\endcsname} {\@ifnextchar_{\csname @@#1\endcsname}{{#2}_{#3}}} } \expandafter\def\csname @#1\endcsname ##1##2{% {#2}^{##2}\@ifnextchar_{\csname @@@#1\endcsname}{_{#3}}% } \expandafter\def\csname @@#1\endcsname ##1##2{{#2}_{#3,##2}} \expandafter\def\csname @@@#1\endcsname ##1##2{_{#3,##2}} } % \end{macrocode} % \end{macro} % \begin{macro}{\heatcapacitysymbol} % \begin{macro}{\compressibilitysymbol} % \begin{macro}{\expansivitysymbol} % Now we define symbols for the heat capacities, compressibilities, and % so forth. % \begin{macrocode} \newcommand*{\heatcapacitysymbol}{C} \newcommand*{\compressibilitysymbol}{\kappa} \newcommand*{\expansivitysymbol}{\alpha} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\cV} % \begin{macro}{\cP} % The heat capacities are molar by default; we also declare extensive and % specific heat capacities. % The heat capacities themselves are defined to be ``smart'': \verb"\cV_i" will % recognize the subscript appropriately and render $C_{V,i}$ rather than % ${C_V}_i$ or some other unintended symbol. Superscripts are also handled % appropriately and can be in either order. % \begin{macrocode} \DeclareSubscrSymbol{cV}{\@intensive\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cP}{\@intensive\heatcapacitysymbol}{\pressure@symbol} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\cVt} % \begin{macro}{\cPt} % We also introduce \emph{extensive} (rather than molar) heat capacity macros. % \begin{macrocode} \DeclareSubscrSymbol{cVt}{\@extensive\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPt}{\@extensive\heatcapacitysymbol}{\pressure@symbol} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\cPs} % \begin{macro}{\cVs} % \cs{cPs} and \cs{cVs} are the specific heat capacities. % \begin{macrocode} \DeclareSubscrSymbol{cVs}{\@specific\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPs}{\@specific\heatcapacitysymbol}{\pressure@symbol} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\kappaT} % \begin{macro}{\kappaS} % The isothermal and adiabatic compressibilities are defined similarly, but % those do not have extensive versions for obvious reasons. % \begin{macrocode} \DeclareSubscrSymbol{kappaT}{\compressibilitysymbol}{\temperature@symbol} \DeclareSubscrSymbol{kappaS}{\compressibilitysymbol}{\entropy@symbol} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\alphaP} % \begin{macro}{\alphaS} % The macro \cs{alphaP} is intended to refer to the isobaric volume % expansivity, while \cs{alphaS} is the isentropic volume expansivity. % \begin{macrocode} \DeclareSubscrSymbol{alphaP}{\expansivitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{alphaS}{\expansivitysymbol}{\entropy@symbol} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Psat} % \begin{macro}{\Pvap} % The \cs{Psat} macro (and its clone, the \cs{Pvap} macro) should be used for % the saturation pressure. % \begin{macro}{\phisat} % \begin{macro}{\fsat} % \begin{macro}{\sat} % Similarly, a \cs{phisat} macro typesets the fugacity coefficient at % saturation. The \cs{fsat} macro similarly renders the fugacity at saturation. % Other saturation properties should use \verb"M^\sat" or similar, preferably % by defining another macro such as \verb"\Gmsat". % \begin{macrocode} \newcommand*{\sat}{{\text{sat}}} \newcommand*{\Psat}{P^\sat} \let\Pvap\Psat \newcommand*{\phisat}{\phi^\sat} \newcommand*{\fsat}{f^\sat} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{std} % \begin{macro}{Pstd} % \begin{macro}{fstd} % The \cs{std} macro denotes standard properties. \cs{Pstd} and \cs{fstd} are % defined for convenience and for consistency across textbooks. % \begin{macrocode} \let\std\circ \newcommand*{\Pstd}{P^\std} \newcommand*{\fstd}{f^\std} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\Deltamix} % \begin{macro}{\mixing} % Mixing properties, such as $\Delta G_\text{mix}$, should be accessed using % \verb"\Deltamix\Gm" and similar constructions---this construct will typeset % as $\Delta_{MIX}G$ using the \verb"Thompson" package option, for example, % and as $\Delta_\text{mix}G$ using the \verb"Sandler" package option. % \begin{macrocode} \newcommand*{\mixing}{{\text{mix}}} \newcommand*{\Deltamix}[1]{\Delta{#1}_\mixing} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\Deltafus} % \begin{macro}{\fusion} % \begin{macro}{\Deltavap} % \begin{macro}{\vaporization} % \begin{macro}{\Deltasub} % \begin{macro}{\sublimation} % \begin{macro}{\Deltarxn} % \begin{macro}{\reaction} % Similar entities for property changes on fusion, reaction, sublimation, and % vaporization are defined. The heat of reaction is handled differently if % \cs{cP} is its argument: one must typeset $\Delta C_{P,\text{rxn}}$ and % $\Delta C_{P,\text{rxn}}^\circ$ rather than % $\Delta{C_P}_\text{rxn}$ and $\Delta{C_P}^\circ_\text{rxn}$. % \begin{macrocode} \newcommand*{\fusion}{{\text{fus}}} \newcommand*{\reaction}{{\text{rxn}}} \newcommand*{\sublimation}{{\text{sub}}} \newcommand*{\vaporization}{{\text{vap}}} \newcommand*{\formation}{f} \newcommand*{\Deltafus}[1]{\Delta{#1}^\fusion} \newcommand*{\Deltasub}[1]{\Delta{#1}^\sublimation} \newcommand*{\Deltavap}[1]{\Delta{#1}^\vaporization} % TODO It would be nice not to have to handle \cP in a special way.... \let\Delta@rxn@sym\relax \DeclareSubscrSymbol{@DeltarxncP}{\Delta@rxn@sym}{\pressure@symbol,\reaction} \DeclareSubscrSymbol{@Deltarxn}{\Delta@rxn@sym}{\reaction} \newcommand*{\Deltarxn}[1]{% \def\tmp@arg{#1}% \def\tmp@@arg{\cP}% \ifx\tmp@arg\tmp@@arg\relax \def\@command{\def\Delta@rxn@sym{\Delta\@intensive\heatcapacitysymbol}% \@DeltarxncP} \else \def\@command{\def\Delta@rxn@sym{\Delta{#1}}\@Deltarxn} \fi \@command } \let\Delta@f@sym\relax \DeclareSubscrSymbol{@Deltaf}{\Delta@f@sym}{f} \newcommand*{\Deltaf}[1]{\def\Delta@f@sym{\Delta{#1}}\@Deltaf} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\fmix} % The \cs{fmix} command is intended to describe fugacities in mixtures. % It renders as $\hat f$ by default, and would be used as \verb"\fmix_i" or % the like, producing $\hat f_i$; some authors like to use $\bar f_i$ or % just $f_i$, and this command creates a consistent way to change between % such options. % \begin{macrocode} \newcommand*{\fmix}{\hat{f}} % \end{macrocode} % \end{macro} % \begin{macro}{\phimix} % A similar command, \cs{phimix}, renders $\hat\phi$ by default to represent % the fugacity coefficient in the mixture. % \begin{macrocode} \newcommand*{\phimix}{\hat\phi} % \end{macrocode} % \end{macro} % \begin{macro}{\fpure} % The \cs{fpure} command is intended to describe fugacities in pure substances. % It renders as $f$ by default, and would be used as \verb"\fpure" or % \verb"\fpure_i" or the like, producing $f_i$; some authors like to use % $f_{\text{pure},i}$, and others like to use $f_i^\bullet$; this command % creates a consistent way to change between the these options. A similar % command for $\phi$ is given, \cs{phipure}, for fugacity coefficients. % \begin{macrocode} \newcommand*{\fpure}{f} \let\phipure\phi % \end{macrocode} % \end{macro} % % \subsection{Partial Molar Quantities} % \begin{macro}{\partialmolar} % Partial molar quantities appear as $\thermooverline{G_i}$ or, % for residual properties, $\thermooverline{G_i^R}$, rather than something like % $\thermooverline{G}_i$ or $\thermooverline{G}_i^R$, which looks better but % is harder to implement for obvious reasons. Their definitions allow them to % be used as symbols, something like \verb"\Gpm_i", \verb"\Gpm^{\IGM}_i", % \verb"\Gpm^{\IGM}_i", and even \verb"\Gpm_i^{\IGM}"; % they can also be treated as commands: \verb"\Gpm{i}" is equivalent to % \verb"\Gpm_i" and \verb"\Gpm[\IGM]{i}" is equivalent to \verb"\Gpm_i^{\IGM}". % The macro \cs{partialmolar} can be used to create an arbitrary partial % molar symbol. % \begin{macrocode} \let\pm@symbol\relax \newcommand*{\partialmolar}[1]{\gdef\pm@symbol{#1}\generic@pm} % if nextchar is _ \def\generic@pm{\@ifnextchar_\@generic@pm\@@generic@pm} % then store the argument \def\@generic@pm#1#2{% \gdef\pm@arg{#2}% % if nextchar after argument is ^ \@ifnextchar^\@@@generic@pm\@@@@generic@pm } % then print it this way \def\@@@generic@pm#1#2{\thermo@overline{\pm@symbol^{#2}_{\pm@arg}}} % else do it this way \def\@@@@generic@pm{\thermo@overline{\pm@symbol_{\pm@arg}}} % else, check whether there is also a ^ coming, otherwise assume % it's [] or {} \def\@@generic@pm{\@ifnextchar^\@@@@@generic@pm\@pm@bracket@check} \def\@@@@@generic@pm#1#2#3#4{\thermo@overline{\pm@symbol^{#2}_{#4}}} \def\@pm@bracket@check{\@ifnextchar[\@pm@bracket@yes\@pm@bracket@no} \def\@pm@bracket@yes[#1]#2{\thermo@overline{\pm@symbol^{#1}_{#2}}} \def\@pm@bracket@no#1{\thermo@overline{\pm@symbol_{#1}}} % \end{macrocode} % \end{macro} % % \subsection{Symbol Definitions} % These macros define the user interface to the symbols for energy, volume, % and so forth. We define the ``extra'' symbols \cs{Bt} and \cs{Mt} to % represent arbitrary properties. % \begin{macro}{\Nt} % \begin{macro}{\Et} % \begin{macro}{\Ut} % \begin{macro}{\Ft} % \begin{macro}{\Gt} % \begin{macro}{\Ht} % \begin{macro}{\Lt} % \begin{macro}{\At} % \begin{macro}{\St} % \begin{macro}{\Vt} % \begin{macro}{\Qt} % \begin{macro}{\Wt} % \begin{macro}{\Mt} % \begin{macro}{\Bt} % \penalty-600% % First, the extensive properties. % \begin{macrocode} \newcommand*{\Nt}{\mole@symbol} \newcommand*{\Et}{\@extensive\totalenergy@symbol} \newcommand*{\Ut}{\@extensive\internalenergy@symbol} \newcommand*{\Ft}{\@extensive\Helmholtz@symbol} \newcommand*{\Gt}{\@extensive\Gibbs@symbol} \newcommand*{\Ht}{\@extensive\enthalpy@symbol} \newcommand*{\Lt}{\@extensive\Landau@symbol} \newcommand*{\At}{\@extensive\area@symbol} \newcommand*{\St}{\@extensive\entropy@symbol} \newcommand*{\Vt}{\@extensive\volume@symbol} \newcommand*{\Qt}{\@extensive\heat@symbol} \newcommand*{\Wt}{\@extensive\work@symbol} \newcommand*{\Mt}{\@extensive M} \newcommand*{\Bt}{\@extensive B} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\Em} % \begin{macro}{\Um} % \begin{macro}{\Fm} % \begin{macro}{\Gm} % \begin{macro}{\Hm} % \begin{macro}{\Lm} % \begin{macro}{\Am} % \begin{macro}{\Sm} % \begin{macro}{\Vm} % \begin{macro}{\Qm} %^^A \penalty-600% % Then the molar properties. % \begin{macrocode} \newcommand*{\Em}{\@intensive\totalenergy@symbol} \newcommand*{\Um}{\@intensive\internalenergy@symbol} \newcommand*{\Fm}{\@intensive\Helmholtz@symbol} \newcommand*{\Gm}{\@intensive\Gibbs@symbol} \newcommand*{\Hm}{\@intensive\enthalpy@symbol} \newcommand*{\Lm}{\@intensive\Landau@symbol} \newcommand*{\Am}{\@intensive\area@symbol} \newcommand*{\Sm}{\@intensive\entropy@symbol} \newcommand*{\Vm}{\@intensive\volume@symbol} \newcommand*{\Qm}{\@intensive\heat@symbol} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\Wm} % \begin{macro}{\Mm} % \begin{macro}{\Bm} % More molar properties. % \begin{macrocode} \newcommand*{\Wm}{\@intensive\work@symbol} \newcommand*{\Mm}{\@intensive M} \newcommand*{\Bm}{\@intensive B} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\Es} % \begin{macro}{\Us} % \begin{macro}{\Fs} % \begin{macro}{\Gs} % \begin{macro}{\Hs} % \begin{macro}{\Ls} % \begin{macro}{\As} % \begin{macro}{\Ss} % \begin{macro}{\Vs} % \begin{macro}{\Qs} % \begin{macro}{\Ws} % \begin{macro}{\Ms} % \begin{macro}{\Bs} % \penalty-600% % Now the specific (per unit mass) properties. % \begin{macrocode} \newcommand*{\Us}{\@specific\internalenergy@symbol} \newcommand*{\Es}{\@specific\totalenergy@symbol} \newcommand*{\Fs}{\@specific\Helmholtz@symbol} \newcommand*{\Gs}{\@specific\Gibbs@symbol} \newcommand*{\Hs}{\@specific\enthalpy@symbol} \newcommand*{\Ls}{\@specific\Landau@symbol} \newcommand*{\As}{\@specific\area@symbol} \newcommand*{\Ss}{\@specific\entropy@symbol} \newcommand*{\Vs}{\@specific\volume@symbol} \newcommand*{\Qs}{\@specific\heat@symbol} \newcommand*{\Ws}{\@specific\work@symbol} \newcommand*{\Ms}{\@specific M} \newcommand*{\Bs}{\@specific B} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\Epm} % \begin{macro}{\Upm} % \begin{macro}{\Hpm} % \begin{macro}{\Fpm} % \begin{macro}{\Gpm} % \begin{macro}{\Apm} % \begin{macro}{\Spm} % \begin{macro}{\Vpm} % \begin{macro}{\Lpm} % \begin{macro}{\Mpm} % \begin{macro}{\Bpm} % Now the partial molar properties. % \begin{macrocode} \newcommand*{\Epm}{\partialmolar{\totalenergy@symbol}} \newcommand*{\Upm}{\partialmolar{\internalenergy@symbol}} \newcommand*{\Hpm}{\partialmolar{\enthalpy@symbol}} \newcommand*{\Fpm}{\partialmolar{\Helmholtz@symbol}} \newcommand*{\Gpm}{\partialmolar{\Gibbs@symbol}} \newcommand*{\Apm}{\partialmolar{\area@symbol}} \newcommand*{\Spm}{\partialmolar{\entropy@symbol}} \newcommand*{\Vpm}{\partialmolar{\volume@symbol}} \newcommand*{\Lpm}{\partialmolar{\Omega}} \newcommand*{\Mpm}{\partialmolar{M}} \newcommand*{\Bpm}{\partialmolar{B}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\cPpm} % \begin{macro}{\cVpm} % Partial molar heat capacities are \emph{hard}, but the following % implementation seems to work flawlessly\dots so far. % \begin{macrocode} \newcommand*{\cPpm}{% \def\@@@generic@pm##1##2{% \thermo@overline{\pm@symbol^{##2}_{\pressure@symbol,\pm@arg}}}% \def\@@@@generic@pm{\thermo@overline{\pm@symbol_{\pressure@symbol,\pm@arg}}}% \def\@@@@@generic@pm##1##2##3##4{% \thermo@overline{\pm@symbol^{##2}_{\pressure@symbol,##4}}}% \def\@pm@bracket@yes[##1]##2{% \thermo@overline{\pm@symbol^{##1}_{\pressure@symbol,##2}}}% \def\@pm@bracket@no##1{\thermo@overline{\pm@symbol_{\pressure@symbol,##1}}}% \partialmolar{\heatcapacitysymbol}% } \newcommand*{\cVpm}{% \def\@@@generic@pm##1##2{% \thermo@overline{\pm@symbol^{##2}_{\volume@symbol,\pm@arg}}}% \def\@@@@generic@pm{\thermo@overline{\pm@symbol_{\volume@symbol,\pm@arg}}}% \def\@@@@@generic@pm##1##2##3##4{% \thermo@overline{\pm@symbol^{##2}_{\volume@symbol,##4}}}% \def\@pm@bracket@yes[##1]##2{% \thermo@overline{\pm@symbol^{##1}_{\volume@symbol,##2}}}% \def\@pm@bracket@no##1{\thermo@overline{\pm@symbol_{\volume@symbol,##1}}}% \partialmolar{\heatcapacitysymbol}% } % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Residual and Excess Properties} % \begin{macro}{\residual} % \begin{macro}{\excess} % Macros are defined for residual properties (departure from non-ideal gases) % and excess properties (departure from ideal solutions). We begin with two % macros to use for defining generic residual and excess properties that are % not already defined. % \begin{macrocode} \newcommand*{\residual}{R} \newcommand*{\excess}{E} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\UR} % \begin{macro}{\HR} % \begin{macro}{\FR} % \begin{macro}{\GR} % \begin{macro}{\VR} % \begin{macro}{\SR} % The ordinary residual properties are molar. % \begin{macrocode} \newcommand*{\UR}{\Um^\residual} \newcommand*{\HR}{\Hm^\residual} \newcommand*{\FR}{\Fm^\residual} \newcommand*{\GR}{\Gm^\residual} \newcommand*{\VR}{\Vm^\residual} \newcommand*{\SR}{\Sm^\residual} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \pagebreak[3]% % \begin{macro}{\URt} % \begin{macro}{\HRt} % \begin{macro}{\FRt} % \begin{macro}{\GRt} % \begin{macro}{\VRt} % \begin{macro}{\SRt} % We define similar macros for the extensive residual properties. These are % appended by a \verb"t" (for ``total''). % \begin{macrocode} \newcommand*{\URt}{\Ut^\residual} \newcommand*{\HRt}{\Ht^\residual} \newcommand*{\FRt}{\Ft^\residual} \newcommand*{\GRt}{\Gt^\residual} \newcommand*{\VRt}{\Vt^\residual} \newcommand*{\SRt}{\St^\residual} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\URs} % \begin{macro}{\HRs} % \begin{macro}{\FRs} % \begin{macro}{\GRs} % \begin{macro}{\VRs} % \begin{macro}{\SRs} % Similar macros are declared for the specific residual properties. % These are appended by an \verb"s". % \begin{macrocode} \newcommand*{\URs}{\Us^\residual} \newcommand*{\HRs}{\Hs^\residual} \newcommand*{\FRs}{\Fs^\residual} \newcommand*{\GRs}{\Gs^\residual} \newcommand*{\VRs}{\Vs^\residual} \newcommand*{\SRs}{\Ss^\residual} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \penalty-500 % \begin{macro}{\URpm} % \begin{macro}{\HRpm} % \begin{macro}{\FRpm} % \begin{macro}{\GRpm} % \begin{macro}{\VRpm} % \begin{macro}{\SRpm} % Now for the partial molar residual properties. % These are appended by \verb"pm". % \begin{macrocode} \newcommand*{\URpm}{\partialmolar{\internalenergy@symbol^\residual}} \newcommand*{\HRpm}{\partialmolar{\enthalpy@symbol^\residual}} \newcommand*{\FRpm}{\partialmolar{\Helmholtz@symbol^\residual}} \newcommand*{\GRpm}{\partialmolar{\Gibbs@symbol^\residual}} \newcommand*{\VRpm}{\partialmolar{\volume@symbol^\residual}} \newcommand*{\SRpm}{\partialmolar{\entropy@symbol^\residual}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\UE} % \begin{macro}{\HE} % \begin{macro}{\FE} % \begin{macro}{\GE} % \begin{macro}{\VE} % \begin{macro}{\SE} % Now for the excess molar properties. % \begin{macrocode} \newcommand*{\UE}{\Um^\excess} \newcommand*{\FE}{\Fm^\excess} \newcommand*{\HE}{\Hm^\excess} \newcommand*{\GE}{\Gm^\excess} \newcommand*{\SE}{\Sm^\excess} \newcommand*{\VE}{\Vm^\excess} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\UEt} % \begin{macro}{\HEt} % \begin{macro}{\FEt} % \begin{macro}{\GEt} % \begin{macro}{\VEt} % \begin{macro}{\SEt} % Similarly, the extensive excess properties. % \begin{macrocode} \newcommand*{\UEt}{\Ut^\excess} \newcommand*{\FEt}{\Ft^\excess} \newcommand*{\HEt}{\Ht^\excess} \newcommand*{\GEt}{\Gt^\excess} \newcommand*{\SEt}{\St^\excess} \newcommand*{\VEt}{\Vt^\excess} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\UEs} % \begin{macro}{\HEs} % \begin{macro}{\FEs} % \begin{macro}{\GEs} % \begin{macro}{\VEs} % \begin{macro}{\SEs} % Now for the specific excess properties. % \begin{macrocode} \newcommand*{\UEs}{\Us^\excess} \newcommand*{\FEs}{\Fs^\excess} \newcommand*{\HEs}{\Hs^\excess} \newcommand*{\GEs}{\Gs^\excess} \newcommand*{\SEs}{\Ss^\excess} \newcommand*{\VEs}{\Vs^\excess} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \pagebreak[3]% % \begin{macro}{\UEpm} % \begin{macro}{\HEpm} % \begin{macro}{\FEpm} % \begin{macro}{\GEpm} % \begin{macro}{\VEpm} % \begin{macro}{\SEpm} % Finally, the excess partial molar quantities. % \begin{macrocode} \newcommand*{\UEpm}{\partialmolar{\internalenergy@symbol^\excess}} \newcommand*{\HEpm}{\partialmolar{\enthalpy@symbol^\excess}} \newcommand*{\FEpm}{\partialmolar{\Helmholtz@symbol^\excess}} \newcommand*{\GEpm}{\partialmolar{\Gibbs@symbol^\excess}} \newcommand*{\VEpm}{\partialmolar{\volume@symbol^\excess}} \newcommand*{\SEpm}{\partialmolar{\entropy@symbol^\excess}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\prodall} % \begin{macro}{\sumall} % \begin{macro}{\sumallbutlast} % The \cs{sumall} command and its cousin, \cs{sumallbutlast}, simplify the % typesetting of commonly-used sums; the command \cs{prodall} does the same % thing for products, viz., % \begin{verbatim} % \[ \sumall_i x_i = 1 \qquad \sumallbutlast_i x_i = 1 - x_\ncomponents % \qquad K = \exp\left(\frac{-\Deltarxn\Gm^\std}{RT}\right) % = \prodall_i a_i^{\nu_i} \] %\end{verbatim} % gives % \[ \sum_{i=1}^C x_i = 1 \qquad \sum_{i=1}^{C-1} x_i = 1 - x_C \qquad % K = \exp\left(\frac{-\Delta G_\text{rxn}^\circ}{RT}\right) % = \prod_{i=1}^C a_i^{\nu_i} \] % \begin{macrocode} \newcommand*{\sumall}{\@ifnextchar_\@sumall\@@sumall} \def\@sumall#1#2{\sum_{#2=1}^{\ncomponents}} \def\@@sumall#1{\sum_{#1=1}^{\ncomponents}} \newcommand*{\sumallbutlast}{\@ifnextchar_\@sumallbutlast\@@sumallbutlast} \def\@sumallbutlast#1#2{\sum_{#2=1}^{\ncomponents-1}} \def\@@sumallbutlast#1{\sum_{#1=1}^{\ncomponents-1}} \newcommand*{\prodall}{\@ifnextchar_\@prodall\@@prodall} \def\@prodall#1#2{\prod_{#2=1}^{\ncomponents}} \def\@@prodall#1{\prod_{#1=1}^{\ncomponents}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\IG} % \begin{macro}{\IGM} % \begin{macro}{\IS} % The \cs{IG}, \cs{IGM}, and \cs{IS} macros (meaning ``ideal gas,'' ``ideal % gas mixture,'' and ``ideal solution,'' respectively) should be used to % make clean transitions between textbooks---some use ``IM'' rather than ``IS'' % for example. % \begin{macrocode} \newcommand*{\IG}{{\text{IG}}} \newcommand*{\IGM}{{\text{IGM}}} \newcommand*{\IS}{{\text{IS}}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\Henryrat} % \begin{macro}{\Henrymol} % The Henry's Law constants for the rational basis ($y_i P = x_i h_i$) and % the molal basis ($y_i P = C_i \mathcal{H}_i$) are given by the macros % \cs{Henryrat} and \cs{Henrymol}, respectively. Using them this way % consistently allows for easy switching back and forth. % \begin{macrocode} \newcommand*{\Henryrat}{h} \newcommand*{\Henrymol}{{\mathcal{H}}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\gammarat} % \begin{macro}{\gammamol} % The ordinary activity coefficient is universally denoted $\gamma$, so I % have not defined a special macro for that. However, the Henry's Law activity % coefficients are far from universal, so I have defined macros to make their % use consistent. The defaults render \cs{gammarat} as $\gamma^\ast$ and % \cs{gammamol} as $\gamma^\square$. % \cs{gammamol} will use \cs{square} from packages if it is defined; if not, % it ``fakes it'' with the definition below (based on the \textsf{amsthm} % package). %^^A Code for \square ripped off from amsthm.sty with tweaks % \begin{macrocode} \AtBeginDocument{% \providecommand*{\square}{% \text{\leavevmode \hbox to.77778em{% \hfil\vrule \vbox to.6em{\hrule width.6em\vfil\hrule}% \vrule\hfil}% }% }% } \newcommand*{\gammarat}{\gamma^\ast} \newcommand*{\gammamol}{\gamma^\square} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{Jacobian} % The \cs{Jacobian} command typesets the Jacobian, viz., % \begin{verbatim} % \[ \Jacobian{K}{L}{X}{Y} = % \begin{vmatrix} % \displaystyle \Partial{K}{X}{Y} & \displaystyle \Partial{K}{Y}{X} % \\[2ex] % \displaystyle \Partial{L}{X}{Y} & \displaystyle \Partial{L}{Y}{X} % \end{vmatrix} % \] %\end{verbatim} % produces % \[ \left(\frac{\partial(K,L)}{\partial(X,Y)}\right) = % \begin{vmatrix} % \displaystyle \left(\frac{\partial K}{\partial X}\right)_Y % & \displaystyle \left(\frac{\partial K}{\partial Y}\right)_X \\[2ex] % \displaystyle \left(\frac{\partial L}{\partial X}\right)_Y % & \displaystyle \left(\frac{\partial L}{\partial Y}\right)_X % \end{vmatrix} % \] % This macro is defined purely for convenience. % \begin{macrocode} \newcommand*{\Jacobian}[4]{\frac{\partial{(#1,#2)}}{\partial{(#3,#4)}}}% % \end{macrocode} % \end{macro} % % \iffalse % %<*example> \documentclass{article} \usepackage[margin=1in]{geometry} \usepackage{amsmath,amssymb} \usepackage{thermodynamics} \title{Examples to Accompany the \textsf{thermodynamics} Package} \author{Karl D. Hammond} \date{} \begin{document} \maketitle\noindent The combined laws: \begin{align*} d\Et &= d\Ut + d\left(\frac12 m v^2\right) - d(m\phi) \\ d\Ut &= \dbar\Qt + \dbar\Wt + \Um d\Nt = \dbar\Qt - P d\Vt + \Hm d\Nt \\ &= \Partial*{\Ut}{\St}{\Vt,\allNs} d\St + \Partial*{\Ut}{\Vt}{\St,\allNs} d\Vt + \sumall_i \Partial*{\Ut}{\Nt_i}{\Vt,\St,\allNsbut{i}} d\Nt_i \\ &= T d\St - P d\Vt + \sumall_i \mu_i d\Nt_i \end{align*} With surfaces present: \begin{gather*} d\Ut = T d\St - P d\Vt + \sigma d\At + \sumall_i \mu_i d\Nt_i \\ d\Ht = T d\St + \Vt dP + \sigma d\At + \sumall_i \mu_i d\Nt_i \\ d\Ft = -\St dT - P d\Vt + \sigma d\At + \sumall_i \mu_i d\Nt_i \\ d\Gt = -\St dT + \Vt dP + \sigma d\At + \sumall_i \mu_i d\Nt_i \\ d\Lt = -\St dT - P d\Vt + \sigma d\At - \sumall_i \Nt_i d\mu_i \\ \Bt = \Ut + P\Vt - T\St - \sigma\At \\ d\Bt = -\St dT + \Vt dP - \At d\sigma + \sumall_i \mu_i d\Nt_i \\ \mu_i = \Bpm_i = \Gpm_i + \sigma \Apm_i \end{gather*} Some Maxwell reciprocity relations: \begin{gather*} \Partial*{\Vt}{T}{P,\allNs} = \PartialMixSecond*{\Gt}{T}{P}{\allNs} = \PartialMixSecond*{\Gt}{P}{T}{\allNs} = -\Partial{\St}{P}{T,\allNs} \\ \Partial*{\Gpm_i}{T}{P,\allXs} = \PartialMixSecond*{\Gt}{T}{\Nt_i}{P,\allNsbut{i}} = \PartialMixSecond*{\Gt}{\Nt_i}{T}{P,\allNsbut{i}} = -\Partial*{\St}{\Nt_i}{T,P,\allNsbut{i}} = -\Spm_i \end{gather*} The heat capacities: \begin{gather*} \cV = T \Partial*{\Sm}{T}{\Vm,\allXs} = \Partial*{\Um}{T}{\Vm,\allXs} = -T\PartialSecond{\Fm}{T}{\Vm,\allXs} \\ \cP^\IGM = T \Partial*{\Sm^\IGM}{T}{P,\allYs} = \Partial*{\Hm^\IGM}{T}{P,\allYs} \begin{thermobrackets} = -T\PartialSecond{\Gm^\IGM}{T}{P,\allYs} \end{thermobrackets} \\ \cVt = T \Partial*{\St}{T}{\Vt,\allNs} = \Partial*{\Ut}{T}{\Vt,\allNs} \begin{thermobraces} = -T\PartialSecond{\Ft}{T}{\Vm,\allNs} \end{thermobraces} \\ \begin{thermobar} \cPt = T \Partial*{\St}{T}{P,\allNs} = \Partial*{\Ht}{T}{P,\allNs} = -T\PartialSecond{\Gt}{T}{P,\allNs} \end{thermobar} \\ \cVs = T \Partial*{\Ss}{T}{\Vs,\allWs} = \Partial*{\Us}{T}{\Vs,\allWs} \begin{thermoplain} = -T\PartialSecond{\Fs}{T}{\Vs,\allWs} \end{thermoplain} \\ \cPs = T \Partialbigg*{\Ss}{T}{P,\allWs} = \Partialbigg*{\Hs}{T}{P,\allWs} = -T\PartialSecondbigg{\Gs}{T}{P,\allWs} \\ \begin{split} \cPpm_i &= \Partial*{\cPt}{\Nt_i}{T,P,\allNsbut{i}} = T \PartialMixSecond*{\St}{\Nt_i}{T}{P,\allNsbut{i}} = T \PartialMixSecond*{\St}{T}{\Nt_i}{P,\allNsbut{i}} \\ &= T \Partial*{\Spm_i}{T}{P,\allXs} = \Partial*{\Hpm_i}{T}{P,\allXs} = \PartialMixSecond*{\Ht}{T}{\Nt_i}{P,\allNsbut{i}} = \PartialMixSecond*{\Ht}{\Nt_i}{T}{P,\allNsbut{i}} \\ &= -T\PartialSecond*{\Gpm_i}{T}{P,\allXs} = -T\Partial{{}^3 \Gt}{T^2\partial \Nt_i}{P,\allNsbut{i}} \end{split} \end{gather*} Other measurable quantities: \begin{align*} \alphaS &= \frac{1}{\Vm} \Partial{\Vm}{T}{\Sm} & \alphaP &= \frac{1}{\Vm} \Partial{\Vm}{T}{P} \\ \kappaS &= -\frac{1}{\Vm} \Partial{\Vm}{P}{\Sm} & \kappaT &= -\frac{1}{\Vm} \Partial{\Vm}{P}{T} \end{align*} The chemical potential, fugacity, and activity: \[ \mu_i = \Gpm_i = \Gm_i^\std + RT \ln a_i = \Gm_i^\std + RT\ln\left(\frac{\fmix_i}{\fstd_i}\right) \] Equilibrium in a chemical reaction: \[ \sumall_i \nu_i \mu_i = 0 \Rightarrow \exp\left(\frac{-\Delta\Gm^\std}{RT}\right) = K = \prodall_i a_i^{\nu_i} \] Partial molar quantities: \begin{align*} \Hpm{i} &= \Partial*{\Ht}{\Nt_i}{T,P,\allNsbut{i}} = \Hm + \Nt \Partial*{\Hm}{\Nt_i}{T,P,\allNsbut{i}} \\ &= \Hm + \Partial*{\Hm}{x_i}{T,P,\allXsbut{i}} - \sumallbutlast_j x_j \Partial*{\Hm}{x_j}{T,P,\allXsbut{j}} = \Partial*{\Hm}{x_i}{T,P,\allXsbut{i}} + \Hpm_\ncomponents \end{align*} \[ \Vpm_i = \Partial{\Vt}{\Nt_i}{T,P,\allNsbut{i}} \] Fugacity and related properties: \begin{gather*} \Gpm_i = \mu_i = \Gm_i^\std(T) + RT\ln a_i = \Gm_i^\std(T) + RT\ln\left(\frac{\fmix_i}{\fstd_i}\right) \\ a_i = \frac{\fmix_i}{\fstd_i} = x_i \gamma_i \exp\left(\frac{1}{RT} \int_{\Pstd}^P \Vm_i(T,p) dp\right) \approx x_i \gamma_i \\ \begin{split} \fmix_i &= x_i \phimix_i P = x_i \gamma_i \fpure_i = x_i \gamma_i \phipure_i P = x_i \gammarat_i \Henryrat_i = C_i \gammamol_i \Henrymol_i = x_i \gamma_i \fsat_i \exp\left(\frac{1}{RT} \int_{\Psat_i}^P \Vm_i(T,p) dp\right) \\ &= x_i \gamma_i \Psat_i \phisat_i \exp\left(\frac{1}{RT} \int_{\Psat_i}^P \Vm_i(T,p) dp\right) \approx x_i \gamma_i \Psat_i \end{split} \end{gather*} Chemical Equilibria: \begin{gather*} \Deltarxn\Hm^\std = \sumall_i \nu_i \Deltaf\Hm_i^\std \\ \Deltarxn\Gm^\std = \sumall_i \nu_i \Deltaf\Gm_i^\std = \sumall_i \nu_i \mu_i^\std \\ \Deltarxn\cP^\std = \sumall_i \nu_i \cP_i^\std \\ \mu_i = \mu_i^\std + RT\ln a_i \\ a_i = \begin{cases} \displaystyle \frac{y_i \phimix_i P}{\Pstd} \approx \frac{y_i P}{\Pstd} & \text{(gases)} \\ \rule{0pt}{5ex}% \displaystyle x_i \gamma_i \exp\left(\frac{1}{RT} \int_{\Pstd}^P \Vm_i(T,p)\,dp\right) \approx x_i \gamma_i \exp\left(\frac{\Vm_i(P-\Pstd)}{RT}\right) \approx x_i \gamma_i \approx 1 & \text{(solids, solvents)} \\ \displaystyle \rule{0pt}{5ex}% \frac{C_i \gammamol_i}{C_i^\std} \exp\left(\frac{1}{RT} \int_{\Pstd}^P \Vpm_i^\infty(T,p,\allXs)\,dp\right) \approx \frac{C_i \gammamol_i}{C_i^\std} \approx \frac{C_i}{C_i^\std} & \text{(solutes)} \end{cases} \end{gather*} Phase change properties: \begin{gather*} \Deltafus\Sm = \Sm^L - \Sm^S \\ \Deltasub\Vm = \Vm^V - \Vm^S \\ \Deltavap\Gm = \Gm^V - \Gm^L \end{gather*} Specific properties: \newcommand*{\Btilde}[2][]{\widetilde{B}_{#2}^{#1}} \[ \Btilde{j} \equiv \Partial{\Bt}{m_j}{T,\Vs,\allMsbut[i]{j}} \] and thus \[ \Btilde{i} = \frac{\Bpm{i}}{M_i} + \Biggl(\Vs - \frac{\Vpm_i}{M_i}\Biggr) \Partial*{\Bs}{\Vs}{T,\allMs} = \frac{\Bpm{i}}{M_i} + \Biggl(\Vs - \frac{\Vpm_i}{M_i}\Biggr) \Partial{\Bs}{\Vs}{T,m,\allWs} \] and \[ \Bs = \sumall_i w_i \Btilde{i}. \] Excess and Residual (Departure) Properties: \begin{align*} \HR &= \Hm - \Hm^\IG & \FR &= \Fm - \Fm^\IGM \\ \SE &= \Sm - \Sm^\IS & \VRpm_k &= \Vpm_k - \Vpm_k^\IGM \end{align*} \end{document} % % \fi % % \Finale \endinput