%% %% This is file `thermodynamics.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% thermodynamics.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2017-2018 by Karl D. Hammond %% %% Karl D. Hammond, %% Department of Chemical Engineering %% 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. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{thermodynamics} [2022/04/29 v1.00 thermodynamics package] \RequirePackage{amstext} \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}} } \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} \newcommand*{\thermo@underline}[1]{% \mkern1mu\underline{\mkern-1mu #1\mkern-4mu}\mkern4mu% } \newcommand*{\thermo@overline}[1]{% \mkern2mu\overline{\mkern-2mu #1\mkern-1mu}\mkern1mu% } \newcommand*{\PartialOpen}{(} \newcommand*{\PartialClose}{)} \newcommand*{\PartialEmptyClose}{)} \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}% } \DeclareOption{delta}{\let\dbar\delta} \let\@extensive\relax \let\@intensive\relax \let\@specific\hat \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}} } } \newif\if@subscripted \@subscriptedtrue \DeclareOption{subscripts}{\@subscriptedtrue} \DeclareOption{nosubscripts}{\@subscriptedfalse} \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}% } \newcommand*{\ncomponents}{C} \newcommand*{\allNs}{\allcomponents{\Nt}} \newcommand*{\allXs}{\allcomponents{x}} \newcommand*{\allYs}{\allcomponents{y}} \newcommand*{\allmus}{\allcomponents{\mu}} \newcommand*{\allMs}{\allcomponents{m}} \newcommand*{\allWs}{\allcomponents{w}}% \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}}% \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 } \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 } } \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}} \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 } } } \ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,moles-index} \ProcessOptions \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} \def\Partial@start{\left\PartialOpen} \def\Partial@end{\right\PartialClose} \def\Partial@empty@end{\right\PartialEmptyClose} \def\Partial{\@ifstar\Partial@star\Partial@nostar} \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 } \def\PartialBigg{% \def\Partial@start{\Biggl\PartialOpen}% \def\Partial@end{\Biggr\PartialClose}% \def\Partial@empty@end{\Biggr\PartialClose}% \Partial% } \def\Partialbigg{% \def\Partial@start{\biggl\PartialOpen}% \def\Partial@end{\biggr\PartialClose}% \def\Partial@empty@end{\biggr\PartialClose}% \Partial% } \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 } \def\PartialSecondBigg{% \def\Partial@start{\expandafter\Biggl\PartialOpen}% \def\Partial@end{\expandafter\Biggr\PartialClose}% \PartialSecond% } \def\PartialSecondbigg{% \def\Partial@start{\expandafter\biggl\PartialOpen}% \def\Partial@end{\expandafter\biggr\PartialClose}% \PartialSecond% } \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 } \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% } \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 }% } \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}{} \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}} } \newcommand*{\heatcapacitysymbol}{C} \newcommand*{\compressibilitysymbol}{\kappa} \newcommand*{\expansivitysymbol}{\alpha} \DeclareSubscrSymbol{cV}{\@intensive\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cP}{\@intensive\heatcapacitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{cVt}{\@extensive\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPt}{\@extensive\heatcapacitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{cVs}{\@specific\heatcapacitysymbol}{\volume@symbol} \DeclareSubscrSymbol{cPs}{\@specific\heatcapacitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{kappaT}{\compressibilitysymbol}{\temperature@symbol} \DeclareSubscrSymbol{kappaS}{\compressibilitysymbol}{\entropy@symbol} \DeclareSubscrSymbol{alphaP}{\expansivitysymbol}{\pressure@symbol} \DeclareSubscrSymbol{alphaS}{\expansivitysymbol}{\entropy@symbol} \newcommand*{\sat}{{\text{sat}}} \newcommand*{\Psat}{P^\sat} \let\Pvap\Psat \newcommand*{\phisat}{\phi^\sat} \newcommand*{\fsat}{f^\sat} \let\std\circ \newcommand*{\Pstd}{P^\std} \newcommand*{\fstd}{f^\std} \newcommand*{\mixing}{{\text{mix}}} \newcommand*{\Deltamix}[1]{\Delta{#1}_\mixing} \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} \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} \newcommand*{\fmix}{\hat{f}} \newcommand*{\phimix}{\hat\phi} \newcommand*{\fpure}{f} \let\phipure\phi \let\pm@symbol\relax \newcommand*{\partialmolar}[1]{\gdef\pm@symbol{#1}\generic@pm} \def\generic@pm{\@ifnextchar_\@generic@pm\@@generic@pm} \def\@generic@pm#1#2{% \gdef\pm@arg{#2}% % if nextchar after argument is ^ \@ifnextchar^\@@@generic@pm\@@@@generic@pm } \def\@@@generic@pm#1#2{\thermo@overline{\pm@symbol^{#2}_{\pm@arg}}} \def\@@@@generic@pm{\thermo@overline{\pm@symbol_{\pm@arg}}} \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}}} \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} \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} \newcommand*{\Wm}{\@intensive\work@symbol} \newcommand*{\Mm}{\@intensive M} \newcommand*{\Bm}{\@intensive B} \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} \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}} \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}% } \newcommand*{\residual}{R} \newcommand*{\excess}{E} \newcommand*{\UR}{\Um^\residual} \newcommand*{\HR}{\Hm^\residual} \newcommand*{\FR}{\Fm^\residual} \newcommand*{\GR}{\Gm^\residual} \newcommand*{\VR}{\Vm^\residual} \newcommand*{\SR}{\Sm^\residual} \newcommand*{\URt}{\Ut^\residual} \newcommand*{\HRt}{\Ht^\residual} \newcommand*{\FRt}{\Ft^\residual} \newcommand*{\GRt}{\Gt^\residual} \newcommand*{\VRt}{\Vt^\residual} \newcommand*{\SRt}{\St^\residual} \newcommand*{\URs}{\Us^\residual} \newcommand*{\HRs}{\Hs^\residual} \newcommand*{\FRs}{\Fs^\residual} \newcommand*{\GRs}{\Gs^\residual} \newcommand*{\VRs}{\Vs^\residual} \newcommand*{\SRs}{\Ss^\residual} \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}} \newcommand*{\UE}{\Um^\excess} \newcommand*{\FE}{\Fm^\excess} \newcommand*{\HE}{\Hm^\excess} \newcommand*{\GE}{\Gm^\excess} \newcommand*{\SE}{\Sm^\excess} \newcommand*{\VE}{\Vm^\excess} \newcommand*{\UEt}{\Ut^\excess} \newcommand*{\FEt}{\Ft^\excess} \newcommand*{\HEt}{\Ht^\excess} \newcommand*{\GEt}{\Gt^\excess} \newcommand*{\SEt}{\St^\excess} \newcommand*{\VEt}{\Vt^\excess} \newcommand*{\UEs}{\Us^\excess} \newcommand*{\FEs}{\Fs^\excess} \newcommand*{\HEs}{\Hs^\excess} \newcommand*{\GEs}{\Gs^\excess} \newcommand*{\SEs}{\Ss^\excess} \newcommand*{\VEs}{\Vs^\excess} \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}} \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}} \newcommand*{\IG}{{\text{IG}}} \newcommand*{\IGM}{{\text{IGM}}} \newcommand*{\IS}{{\text{IS}}} \newcommand*{\Henryrat}{h} \newcommand*{\Henrymol}{{\mathcal{H}}} \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} \newcommand*{\Jacobian}[4]{\frac{\partial{(#1,#2)}}{\partial{(#3,#4)}}}% \endinput %% %% End of file `thermodynamics.sty'.