Source code for pygacity.pythontex.sandler

"""
Sandler thermodynamics module imports and initializations.

This module is imported by pythontex if the `sandler` resource is specified
in a `pythontex` block of the document structure.
"""
from sandlertools import PropertiesDatabase, get_database
from sandlertools import SandlerSteamState as SANDLER
from sandlertools import get_tables
from sandlertools import Component, Reaction, ChemEqSystem
from sandlertools import (
    CSState, ureg,
    R, IdealGasEOS, VanDerWaalsEOS, PengRobinsonEOS )
import pint

SandlerProps = get_database()

SteamTables = get_tables()
suphPavail = SteamTables['suph'].uniqs['P']
satdTavail = SteamTables['satd'].DF['T']['T'].unique()

[docs] class Request: """ Class to handle requests for latex-formatted steam tables""" def __init__(self): self.suph = [] self.subc = [] self.satdP = False self.satdT = False
[docs] def register(self, *args, **kwargs): if 'satdP' in args: self.satdP = True if 'satdT' in args: self.satdT = True if 'suphP' in kwargs: P = kwargs['suphP'] if isinstance(P, pint.Quantity): P = P.to('MPa').magnitude if P in SteamTables['suph'].uniqs['P'] and not P in self.suph: self.suph.append(P) if 'subcP' in kwargs: P = kwargs['subcP'] if isinstance(P, pint.Quantity): P = P.to('MPa').magnitude if P in SteamTables['subc'].uniqs['P'] and not P in self.subc: self.subc.append(P) return self
[docs] def to_latex(self): unit_string = r"""\noindent $\hat{V}\ [=]\ \mbox{m$^3$/kg}$; $\hat{U}\ [=]\ \mbox{kJ/kg}$; $\hat{H}\ [=]\ \mbox{kJ/kg}$; $\hat{S}\ [=]\ \mbox{kJ/kg-K}$""" tables = [] if any(self.suph) or self.satdP or self.satdP: tables.append(r""" \clearpage \noindent THERMODYNAMIC PROPERTIES OF STEAM (Selected)\\*[1cm]""") if any(self.suph): tables.append(r"""Superheated steam:\\*[0mm]""") for p in sorted(self.suph): tables.append(SteamTables['suph'].to_latex(P=p)) if any(self.suph): tables.append(unit_string+r'\\*[1cm]') if any(self.subc): tables.append(r"""Subcooled liquid:\\*[1cm]""") for p in sorted(self.subc): tables.append(SteamTables['subc'].to_latex(P=p)) if self.satdP or self.satdT: if len(self.suph) + len(self.subc) > 1: tables.append(r"""\clearpage""") tables.append(r"""Saturated steam:\\*[5mm]""") if self.satdP: tables.append(SteamTables['satd'].to_latex(by='P')) tables.append(unit_string) if self.satdT: if self.satdP: tables.append(r"""\clearpage""") tables.append(SteamTables['satd'].to_latex(by='T')) tables.append(unit_string) return '\n'.join(tables)
STReq = Request() from .monkeypatches.component import * from .monkeypatches.reaction import * from .monkeypatches.chemeqsystem import * from .monkeypatches.sandlersteam import *