summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-11-19 22:31:53 +0000
committerKarl Berry <karl@freefriends.org>2019-11-19 22:31:53 +0000
commitcd4709399a589a422927b1fb813a4849614bef74 (patch)
tree47a4935cffb40ecfdc0a024a846669a9891c2a91
parent98500025d9c808bcf8c40735c38a5d9840f68a38 (diff)
chemplants (19nov19)
git-svn-id: svn://tug.org/texlive/trunk@52863 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/chemplants/README.md31
-rw-r--r--Master/texmf-dist/doc/latex/chemplants/chemplants-changes.pdfbin0 -> 119507 bytes
-rw-r--r--Master/texmf-dist/doc/latex/chemplants/chemplants-changes.tex233
-rw-r--r--Master/texmf-dist/doc/latex/chemplants/chemplants-doc.pdfbin0 -> 722239 bytes
-rw-r--r--Master/texmf-dist/doc/latex/chemplants/chemplants-doc.tex5559
-rw-r--r--Master/texmf-dist/tex/latex/chemplants/chemplants.sty1758
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/chemplants.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc1
9 files changed, 7583 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/chemplants/README.md b/Master/texmf-dist/doc/latex/chemplants/README.md
new file mode 100644
index 00000000000..811d5a75065
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/chemplants/README.md
@@ -0,0 +1,31 @@
+# The chemplants package
+
+Copyright 2018-2019 Elia Arnese Feffin.
+
+Contact: <elia24913@me.com>.
+
+Current version: 0.9.8 - 2019/11/19.
+
+## Abstract
+
+The `chemplants` package offers tools to draw simple or barely complex schemes of
+chemical processes. The package defines several standard symbols and styles to
+draw process units and streams. The guiding light of the package is the UNICHIM
+regulation.
+
+All of the symbols and styles are defined using tools of the `tikz` package, thus
+a basic knowledge of the logic of this powerful tool is required to profitably use
+`chemplants`.
+
+## Licensing
+
+The `chemplants` package is covered by the LaTeX Project Public License (LPPL),
+version 1.3c or later. The latest version can be found at
+<http://www.latex-project.org/lppl.txt>.
+
+## Documentation
+
+The documentation of the package can be found in `chemplants-doc.pdf`, provided
+together with its source code. Changes to the package facilities are collected
+in `chemplants-changes.pdf`, which is provided together with its source code too.
+However, notice that versions prior to 0.9.8 were never officially published.
diff --git a/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.pdf b/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.pdf
new file mode 100644
index 00000000000..ec93be26dac
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.tex b/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.tex
new file mode 100644
index 00000000000..0b515b68121
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/chemplants/chemplants-changes.tex
@@ -0,0 +1,233 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% chemplants-changes.tex
+%% Copyright 2018-2019 Elia Arnese Feffin
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% 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.3c 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 Elia Arnese Feffin.
+% The Current Maintainer can be reached at the e-mail: elia24913@me.com.
+%
+% This work consists of the files chemplants.sty, chemplants-doc.tex
+% and chemplants-changes.tex, together with the derived files
+% chemplants-doc.pdf and chemplants-changes.pdf.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[12pt]{article} % Document Class
+\usepackage[T1]{fontenc} % Font Encoding
+\usepackage[utf8]{inputenc} % Input Encoding
+\usepackage[italian,english]{babel} % Document Language
+\usepackage[a4paper]{geometry} % Page Geometry
+ \geometry{top=2.0cm,bottom=2.5cm}
+ \geometry{left=2.75cm,right=2.75cm}
+ \geometry{heightrounded}
+\usepackage{microtype} % Micro Typography
+\usepackage{relsize} % Text Rescale
+ \newcommand*{\ac}[1]{% % Acronyms
+ \textsmaller{#1}%
+ }
+\usepackage{chemplants} % Process Schemes
+ \newcommand*{\chpn}[1]{\texttt{#1}} % chemplats Node
+ \newcommand*{\chpp}[1]{\texttt{#1}} % chemplats Unit
+ \newcommand*{\chps}[1]{\texttt{#1}} % chemplats Path Style
+ \newcommand*{\chpa}[1]{\texttt{#1}} % chemplats Pic Argument
+ \newcommand*{\chemplants}{chemplants}
+ \newcommand*{\TikZ}{Ti\textit{k}Z}
+\usepackage[hyperfootnotes=false]{hyperref} % Hyperlinks
+% \hypersetup{%
+% linkbordercolor=LinkColor,%
+% urlbordercolor=URLColor,%
+% citebordercolor=CiteColor}
+ \newcommand{\mail}[1]{% % eMail as Hypertext
+ \href{mailto:#1}{\texttt{#1}}%
+ }
+\usepackage{bookmark} % PDF Bookmarks
+ \bookmarksetup{%
+ numbered,%
+ open,%
+ depth=3%
+ }
+
+%: Document Informations
+
+\title{Changes to the chemplants package}
+\author{Elia Arnese Feffin}
+\date{\chpdate}
+
+%: PDF Properties
+
+\hypersetup{pdfinfo={%
+ Title={Changes to the chemplants package},%
+ Author={Elia Arnese Feffin},%
+ Subject={version \chpversion},%
+ Creator={pdfLaTeX},%
+ Producer={TeXShop with LaTeX Compiler}%
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Document Start
+
+\begin{document} % Document Begins
+
+%: Frontpage
+
+\pdfbookmark[1]{Frontpage}{fronts} % Frontpage Bookmark
+
+\maketitle % Title
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{Version 0.7.0 -- 2019/02/13}
+
+\begin{itemize}
+ \item The \chemplants\ package sees the light for the first time.
+ \item First writing of the documentation.
+\end{itemize}
+
+\subsection*{Version 0.8.0 -- 2019/02/19}
+
+\begin{itemize}
+ \item Implementation of the anchor coordinates nodes in the units code.
+ \item Rewriting of the documentation with coordinate nodes.
+ \item New example using coordinate nodes: absorption and stripping
+ integration.
+\end{itemize}
+
+\subsection*{Versione 0.8.1 -- 2019/02/20}
+
+\begin{itemize}
+ \item Bug fixed: coordinates node are not sensible to the global scale
+ factor.
+\end{itemize}
+
+\subsection*{Version 0.8.2 -- 2019/02/20}
+
+\begin{itemize}
+ \item New units: \chpp{lamination valve}, \chpp{inlet}, \chpp{outlet} and
+ \chpp{block}.
+ \item Bibliography updating: \TikZ\ version 3.1.1.
+\end{itemize}
+
+\subsection*{Version 0.8.5 -- 2019/02/21}
+
+\begin{itemize}
+ \item New units: \chpp{cyclone}, \chpp{stirred reactor},
+ \chpp{packed bed reactor} and\\
+ \chpp{film reactor}.
+ \item Units order is changed and categories (documentation sections) have
+ been inserted into the .sty file.
+\end{itemize}
+
+\subsection*{Version 0.9.0 -- 2019/02/22}
+
+\begin{itemize}
+ \item New definition of \chpp{centrifugal pump} and bottom node addition.
+ \item New units: \chpp{rotary pump}, \chpp{liquid ring pump},
+ \chpp{reciprocating pump}, \chpp{fan},\\
+ \chpp{centrifugal compressor}, \chpp{rotary compressor},
+ \chpp{reciprocating compressor},\\
+ \chpp{multistage compressor} and \chpp{ejector}.
+\end{itemize}
+
+\subsection*{Version 0.9.1 -- 2019/02/24}
+
+\begin{itemize}
+ \item New units: \chpp{cone tank}, \chpp{dome tank},
+ \chpp{floating roof tank}, \chpp{bell gasholder} and
+ \chpp{dry gasholder}.
+\end{itemize}
+
+\subsection*{Version 0.9.2 -- 2019/02/25}
+
+\begin{itemize}
+ \item Review of the \chpp{film reactor} symbol.
+ \item Review of the \chpp{heat exchangers} node names, now defined as shell
+ and pipes for the sake of clearance.
+\end{itemize}
+
+\subsection*{Version 0.9.3 -- 2019/02/26}
+
+\begin{itemize}
+ \item Review of the \chpp{cyclone} node names
+ \item New units: \chpp{fluidized bed reactor}, \chpp{steam trap},
+ \chpp{scrubber}, \chpp{stratifier} and \chpp{settler}.
+\end{itemize}
+
+\subsection*{Version 0.9.4 -- 2019/02/26}
+
+\begin{itemize}
+ \item New units: \chpp{gas-liquid separator}, \chpp{kettle boiler},
+ \chpp{tube bundle evaporator}, \chpp{basket evaporator},
+ \chpp{climbing film evaporator}, \chpp{stirred crystallizer} and
+ \chpp{pipe bundle crystallizer}.
+\end{itemize}
+
+\subsection*{Version 0.9.5 -- 2019/03/03}
+
+\begin{itemize}
+ \item Review of the \chpn{kettle boiler} node names.
+ \item Review of the code to draw packings: no more sharp knees protruding
+ around units
+ \item Added a \TikZ\ library to access to the Hobby's algorithm.
+ \item New units: \chpp{air heat exchanger},
+ \chpp{tube bundle heat exchanger}, \chpp{plates heat exchanger},
+ \chpp{spiral heat exchanger} and \chpp{pipe furnace}.
+\end{itemize}
+
+\subsection*{Version 0.9.6 -- 2019/03/04}
+
+\begin{itemize}
+ \item Review of the \chpp{stirred reactor} and \chpp{stirred crystallizer}
+ node names: now the end of the stirrer is called \chpn{shaft}.
+ \item New units: associative pics for reactors, which are
+ \chpp{tank reactor}, \chpp{jacket}, \chpp{stirrer}, \chpp{coil},
+ \chpp{sprayer}, \chpp{bubbler} and \chpp{packing}.
+\end{itemize}
+
+\subsection*{Version 0.9.7 -- 2019/11/18}
+
+\begin{itemize}
+ \item Documentation language revision: thanks to Desi Costa for the help.
+ \item Now also the source code of the documentation is provided with the
+ package.
+ \item Changes are written in a more gracious format.
+ \item Review of the \chpp{plates heat exchanger}: now it is called
+ \chpp{plate heat exchanger}.
+ \item Review of the \chpp{pipe furnace} node names: now the ends of the
+ pipes are called \chpn{pipes left} and \chpn{pipes right}.
+ \item Review of the \chpp{film reactor}: now it is called
+ \chpp{tube bundle reactor}.
+ \item Review of the \chps{utility stream} style: the default thickness is now
+ \verb|very thin|.
+ \item Review of the \chps{signal} style: the default thickness is now
+ \verb|very thin| and the algorithm to place markings has changed.
+ \item New stream style: \chps{secondary stream} (provided of thickness
+ custumisation command).
+ \item Review of \chpp{valve} and \chpp{valve triple}: these units now accept
+ a new argument for \chps{secondary streams} thickness.
+ \item Review of \chpp{actuator}: dimensione of this units are now doubled.
+ \item New units: \chpp{valve quadruple}, \chpp{safety valve}.
+\end{itemize}
+
+\subsection*{Version 0.9.8 -- 2019/11/19}
+
+\begin{itemize}
+ \item The \chemplants\ package is ready to be officially published since,
+ though not complete as I wish, it is mature enough.
+ \item The package is now explicitly covered by the \LaTeX\ Project Public
+ License (\ac{LPPL}), versione 1.3c.
+ \item The bibliography database is no more supplied, since it has been
+ embedded into the source file of the documentation.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\end{document} % Document End \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.pdf b/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.pdf
new file mode 100644
index 00000000000..1c601e6b827
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.tex b/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.tex
new file mode 100644
index 00000000000..10d862c9a2a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/chemplants/chemplants-doc.tex
@@ -0,0 +1,5559 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% chemplants-doc.tex
+%% Copyright 2018-2019 Elia Arnese Feffin
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% 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.3c 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 Elia Arnese Feffin.
+% The Current Maintainer can be reached at the e-mail: elia24913@me.com.
+%
+% This work consists of the files chemplants.sty, chemplants-doc.tex
+% and chemplants-changes.tex, together with the derived files
+% chemplants-doc.pdf and chemplants-changes.pdf.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Primary Settings
+
+\documentclass[12pt]{article} % Document Class
+\usepackage[T1]{fontenc} % Font Encoding
+\usepackage[utf8]{inputenc} % Input Encoding
+\usepackage[italian,english]{babel} % Document Language
+
+%: Page Geometry
+
+\usepackage[a4paper]{geometry} % Page Geometry
+ \geometry{top=2.0cm,bottom=2.5cm}
+ \geometry{left=2.75cm,right=2.75cm}
+ \geometry{heightrounded}
+
+%: Colors
+
+\usepackage{guit} % GuIT Logo
+ \definecolor{LinkColor}{rgb}{% % Link Color
+ 0.116, 0.565, 1.000%
+ }
+ \definecolor{URLColor}{rgb}{% % URL Color
+ 1.000, 0.250, 0.250%
+ }
+ \definecolor{CiteColor}{rgb}{% % Citation Color
+ 0.235, 0.700, 0.444%
+ }
+
+%: Text
+
+\usepackage{microtype} % Micro Typography
+\usepackage{relsize} % Text Rescale
+ \newcommand{\foreignformat}{% % Foreign Text Format
+ \itshape%
+ }
+ \providecommand*{\ap}[1]{% % Upright Superscript
+ \textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}%
+ }
+ \providecommand*{\ped}[1]{% % Upright Subscript
+ \textormath{$_{\mbox{\fontsize\sf@size\z@\selectfont#1}}$}{_\mathrm{#1}}%
+ }
+ \newcommand{\italiano}[1]{% % Italian Text
+ \foreignlanguage{italian}{\foreignformat #1}%
+ }
+ \newcommand*{\ac}[1]{% % Acronyms
+ \textsmaller{#1}%
+ }
+\raggedbottom % Raggedbottom Document
+
+%: Sectioning and Contents
+
+\setcounter{secnumdepth}{2} % Section Heads Level
+\setcounter{tocdepth}{2} % TOC Level
+%\renewcommand{\subsubsection}[1]{} % Gobbles Any \subsubsec
+
+%: Figures
+
+\usepackage{graphicx} % External Images
+
+%: Floats
+
+\usepackage{caption} % Captions
+ \captionsetup{%
+ font=small,%
+ labelfont={bf},%
+ format=hang,%
+ tableposition=top,%
+ figureposition=bottom%
+ }
+\usepackage{float} % Floats
+ \floatplacement{table}{htp} % Tables Placement
+ \floatplacement{figure}{htp} % Figures Placement
+
+%: Bibliography
+
+\usepackage[autostyle,italian=guillemets]{csquotes} % Citations
+\usepackage[%
+ useprefix,%
+ hyperref,%
+ url=true,%
+ language=auto,%
+ autolang=hyphen,%
+ bibstyle=numeric,%
+ citestyle=authoryear%
+]{biblatex} % Bibliography
+\begin{filecontents}{chemplants-bd.bib}
+@book{cacciatore:disegno,
+ title = {Manuale di disegno di impianti chimici},
+ author = {Cacciatore, Alfonso and Calatozzolo, Mariano},
+ date = {2018},
+ publisher = {Edisco},
+ location = {Torino},
+ isbn = {978\,88\,441\,2085\,6},
+ langid = {italian},
+}
+@book{cremer:tikz,
+ title = {A Very Minimal Introduction to \TikZ},
+ author = {Cr\'emer, Jacques},
+ date = {2011},
+ url = {http://cremeronline.com/LaTeX/minimaltikz.pdf},
+ langid = {english},
+}
+@book{fiadrino:tikz,
+ title = {Introduzione all'uso di \TikZ\ in ingegneria},
+ author = {Fiandrino, Claudio},
+ date = {2014},
+ url = {http://www.guitex.org/home/images/doc/GuideGuIT/introingtikz.pdf},
+ langid = {italian},
+}
+@book{pantieri:latexpedia,
+ title = {\LaTeX pedia},
+ author = {Pantieri, Lorenzo},
+ date = {2017},
+ url = {http://www.lorenzopantieri.net/LaTeX_files/LaTeXpedia.pdf},
+ langid = {italian},
+}
+@book{pantieri:artedi,
+ title = {L'arte di disegnare con \LaTeX},
+ author = {Pantieri, Lorenzo and Gordini, Tommaso},
+ date = {2014},
+ langid = {italian},
+}
+@manual{tantau:tikz,
+ title = {\TikZ\ and \PGF\ Manual},
+ subtitle = {Version 3.1.1},
+ author = {Tantau, Till},
+ date = {2019},
+ url = {http://ctan.mirror.garr.it/mirrors/CTAN/graphics/pgf/base/doc/pgfmanual.pdf},
+ langid = {english},
+}
+@manual{unichim:impianti,
+ title = {Impianti chimici},
+ subtitle = {Simboli e sigle per schemi e disegni},
+ number = {Manuale N.~6},
+ author = {\ac{UNICHIM}},
+ date = {1994},
+ location = {Milano},
+ langid = {italian},
+}
+\end{filecontents}
+\bibliography{chemplants-bd} % Bibliography Database
+
+%: Chemical Process Schemes
+
+\usepackage{chemplants} % Process Schemes
+ \tikzset{every node/.style={font=\footnotesize}}
+ \tikzset{anchor mark/.pic=% % Anchor Point
+ {%
+ \draw [red]
+ (-2.828pt,0) -- (2.828pt,0)
+ (0,-2.828pt) -- (0,2.828pt);
+ }%
+ }
+ \tikzset{node mark/.pic=% % Remarkable Node
+ {%
+ \draw [blue]
+ (-2pt,-2pt) -- (2pt,2pt)
+ (2pt,-2pt) -- (-2pt,2pt);
+ }%
+ }
+
+%: Math
+
+\usepackage{amsmath} % Math Package
+ \renewcommand{\vec}[1]{\boldsymbol{#1}} % Vectors
+ \newcommand*{\flow}[1]{\dot{#1}} % Flow-Rate
+
+%: Physics
+
+\usepackage{siunitx} % Measurement Units
+ \sisetup{exponent-product={\cdot}}
+
+%: Chemistry
+
+\usepackage{chemmacros} % Chemistry Utilities
+ \chemsetup{formula=chemformula,greek=textgreek}
+
+%: Codes
+
+\usepackage{listings} % Listings
+ \lstset{escapeinside={£!}{!£}}
+ \newcommand*{\meta}[1]{% % Metacode
+ $\langle$\textrm{\textit{#1}}$\rangle$%
+ }
+ \lstnewenvironment{chpcode}[1][]{% % chemplats Code
+ \lstset{%
+ basicstyle=\small\ttfamily,%
+ frame=none,%
+ numbers=none,%
+ %numberstyle=\footnotesize,%
+ tabsize=4,%
+ showstringspaces=false,%
+ language=[LaTeX]TeX,%
+ keywordstyle=\color{black},%
+ commentstyle=\color{black},%
+ gobble=4,%
+ #1%
+ }%
+ }{}
+ \newcommand*{\chpn}[1]{\texttt{#1}} % chemplats Node
+ \newcommand*{\chpp}[1]{\texttt{#1}} % chemplats Unit
+ \newcommand*{\chps}[1]{\texttt{#1}} % chemplats Path Style
+ \newcommand*{\chpa}[1]{\texttt{#1}} % chemplats Pic Argument
+ \newcommand*{\chemplants}{chemplants}
+ \newcommand*{\TikZ}{Ti\textit{k}Z}
+ \newcommand*{\CircuiTikZ}{Circui\TikZ}
+ \newcommand*{\PGF}{PGF}
+ \newcommand*{\UNICHIM}{\ac{UNICHIM}}
+ \newcommand*{\siunitx}{siunitx}
+ \newcommand*{\chemformula}{chemformula}
+ \newcommand*{\babel}{babel}
+ \newcommand*{\TeXlive}{\TeX live}
+ \newcommand*{\MiKTeX}{MiK\TeX}
+
+%: Cross References
+
+\newcommand*{\figurerefname}{}
+\addto\captionsenglish{\renewcommand*{\figurerefname}{figure}}
+\newcommand*{\fref}[1]{\figurerefname~\ref{#1}}
+\newcommand*{\listingrefname}{}
+\addto\captionsenglish{\renewcommand*{\listingrefname}{listing}}
+\newcommand*{\lref}[1]{\listingrefname~\ref{#1}}
+
+%: Hyper References
+
+\usepackage{url} % Web Sites
+\usepackage[hyperfootnotes=false]{hyperref} % Hyperlinks
+ \hypersetup{%
+ linkbordercolor=LinkColor,%
+ urlbordercolor=URLColor,%
+ citebordercolor=CiteColor}
+ \newcommand{\mail}[1]{% % eMail as Hypertext
+ \href{mailto:#1}{\texttt{#1}}%
+ }
+\usepackage[all]{hypcap} % Captions References
+
+%: Bookmarks
+
+\usepackage{bookmark} % PDF Bookmarks
+ \bookmarksetup{%
+ numbered,%
+ open,%
+ depth=3%
+ }
+
+%: Document Informations
+
+\title{The chemplants package}
+\author{Elia Arnese Feffin\footnote{e-mail: \mail{elia24913@me.com}}}
+\date{Version \chpversion\ -- \chpdate}
+
+%: PDF Properties
+
+\hypersetup{pdfinfo={%
+ Title={The chemplants package},%
+ Author={Elia Arnese Feffin},%
+ Subject={version \chpversion},%
+ Creator={pdfLaTeX},%
+ Producer={TeXShop with LaTeX Compiler}%
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Document Start
+
+\begin{document} % Document Begins
+
+%: Frontpage
+
+\pdfbookmark[1]{Frontpage}{fronts} % Frontpage Bookmark
+
+\maketitle % Title
+
+\begin{abstract}
+The \chemplants\ package offers tools to draw simple or barely complex schemes of
+chemical processes. Process units and styles for streams and utilities are
+defined to be a sort of extension of the \TikZ\ package, thus a basic knowledge
+of the logic of this powerful tool is required to profitably use \chemplants.
+\end{abstract}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pdfbookmark[1]{\contentsname}{tabcon} % Contents Bookmark
+
+\tableofcontents % Table of Contents
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Motivations}
+
+The \chemplants\ package had birth during my bachelor's degree in Chemical
+Engineering at the University of Padova. I discovered \LaTeX\ during the first
+year and I started using it to write my lecture notes, my reports and almost
+every document I had to produce; the more I used it, the more I explored the
+boundless universe of extensions available, both using them and studying relative
+documentation (and guides). Soon, I encountered one the most beautiful and
+complex packages of the \LaTeX\ distribution: the \TikZ\ package.
+
+Programmed drawing really changed the way I look at technical drawings and
+schematic representation. \TikZ\ gives the author the possibility to use one
+program only to produce written documents and the drawings they require, allowing
+a perfect integration between them. I used this extremely powerful tool to draw
+schematics of mechanics, sketches of diagrams and electrical circuits (with
+another powerful package based on \TikZ: \CircuiTikZ).
+
+At a certain point, as a chemical engineering student, I had the need to start
+drawing schematics of chemical processes in the forms of a block flow diagram
+(\ac{BFD}) or of a process flow diagram (\ac{PFD}). \ac{BFD}s are not an issue
+since they are very simple, but \ac{PFD}s require specific symbols for the
+representation of process units. I looked for a long time for a \CircuiTikZ-like
+package useful for chemical plants, but nothing seems to be available to this
+aim.
+
+At that point \chemplants\ kicked in, starting as a simple idea: to use \TikZ,
+in particular the possibility to define custom styles and pics, to fix a standard
+set of symbols to be used with \TikZ\ drawing commands, symbols meant to be
+easy-to-use and easy-to-modify. Initially, just the units I had the need to
+represent were considered, but then the set of definitions started growing and a
+more flexible code structure was required, thus the real birth of the package
+took place. This happened during the first year of my master's degree.
+
+As already told, the motivations of the \chemplants\ package are to fill a lack
+in the \LaTeX\ packages tree and to give everyone the possibility to draw
+schematics of chemical processes, particularly \ac{PFD}s, in a simple way. A
+basic knowledge of \TikZ\ is clearly required.
+
+All of the symbols and styles defined are based on the \UNICHIM\ regulation,
+the Italian code to draw chemical processes diagrams. It takes its name from
+the homolog association: \italiano{associazione per l'unificazione del settore
+dell'industria chimica}. This package is not pretentious enough to strictly
+follow \UNICHIM, also because this regulation defines parameters to draw
+schematics way more complex than \ac{PFD}s. Anyway, \UNICHIM\ is still the
+guiding light of the representation of units and streams defined by
+\chemplants.
+
+\section{Starting Point}
+
+\subsection{Licensing}
+
+The \chemplants\ package is covered by the \LaTeX\ Project Public License
+(\ac{LPPL}), version 1.3c or later. Basically, this means that users are free to
+use, modify and distribute any part of the package. More accurate and detailed
+informations can be found into the license itself, the latest version of which
+is available at \url{http://www.latex-project.org/lppl.txt}.
+
+\subsection{Installation}
+
+The package is supplied as a simple zip archive containing the
+\verb|chemplants.sty| file, the main code of the package, and the
+\verb|chemplants_doc.pdf| file, the documentation (this file), together with its
+source code. The simplest way to make the package work is to place
+\verb|chemplants.sty| into the same directory of the \verb|.tex| file that uses
+\chemplants, a solution useful to users who do not want to go along a full
+installation.
+
+A better installation procedure for users who adopt the \TeXlive\ distribution
+on a Linux-like system (including MacOS) consists in looking for the main
+directory of the distribution and following the path:
+\begin{chpcode}
+ ../texlive/texmf-local/tex/latex/
+\end{chpcode}
+in which a new folder called \verb|chemplants| should be created. The file
+\verb|chemplants.sty| should be placed into that folder. After that, it is
+necessary to let \TeX\ know that the tree structure is changed and that a new
+package is available, hence it is necessary to type in the terminal of the
+system:
+\begin{chpcode}
+ sudo texhash
+\end{chpcode}
+and to wait for the magic to be done (the insertion of the user password may be
+required after this instruction). Another option is to let the \verb|tlmgr|
+utility do all the work, moving the terminal action to the directory in which
+\verb|chemplants.sty| is (\verb|cd| instruction) and typing:
+\begin{chpcode}
+ sudo tlmgr install chemplants
+\end{chpcode}
+
+For a Windows system running \TeXlive\ it should work the same way, but commands
+have to be typed in the prompt removing the \verb|sudo| prefix, used by
+Linux-like systems. Finally, \MiKTeX\ should provide a custom package manager to
+handle the \TeX\ tree structure, so \chemplants\ have to be installed in the way
+\MiKTeX\ manager usually handles new packages.
+
+\subsection{Basic Knowledge Required}
+
+In order to profitably use the \chemplants\ package, a basic knowledge of the
+\TikZ\ package is required. There are a lot of excellent introductory guides to
+this gigantic package and for every doubt there is also the enormous and
+excellent documentation of the package: \cite{tantau:tikz}. For impatient
+readers, \cite{cremer:tikz} (available on \ac{CTAN} into the \TikZ\ package
+directory) offers a short but useful introduction to \TikZ.
+
+Italian language users can find on the internet some very useful guides
+to learn the bases of \TikZ\ (and more of what is needed to use \chemplants). A
+short but effective introduction is given in a dedicated chapter of
+\cite{pantieri:latexpedia}, derived from a previous article of the same author:
+\cite{pantieri:artedi}. Users who want to be really surprised by the capability
+of \TikZ, besides the full documentation aforementioned, can check
+\cite{fiadrino:tikz}, an excellent guide available on the \GuIT\ website (the
+Italian \TeX\ and \LaTeX\ users group).
+
+Finally, readers interested on \UNICHIM\ regulations can easily find some
+tables on the internet, or a more interesting source of information in
+\cite{cacciatore:disegno}. This book reports a selection of tables coming form
+\cite{unichim:impianti}, the official \UNICHIM\ manual, mainly the ones
+concerning process units, styles for streams and control instrumentation; there
+are also some examples of \ac{PFD}s.
+
+\subsection{Purposes of the Package}
+
+Having mentioned the \UNICHIM\ regulation, it is important to spend a couple
+of words more about the aim of this package. The \chemplants\ package is meant
+to help users which have a basic knowledge of \TikZ\ in representing schemes of
+chemical processes and plants in a simple way. This requires to access to symbols
+for process units, styles for streams and, possibly, symbols and styles for
+control instrumentation. These three elements, plus a rudimental mechanism to
+set the main parameters of the drawing, are what \chemplants\ provides.
+
+This package is not meant to produce representation of complex units or of very
+specialised equipments such as the Linde column used in air distillation plants
+or the Casale reactor used in ammonia synthesis. A fine representation of units
+like the two just mentioned requires more than a simple symbol to be placed
+somewhere in a \ac{PFD}, but a complex and detailed scheme, which goes beyond the
+scope of \chemplants. Moreover, complex drawings like these are not that common,
+so they do not need to be defined as pics in order to be extensively used and
+easily modified. Users in the need to represent specialised schematics should
+exploit the basic and advanced features of the \TikZ\ package in a more general
+way, rather than asking \chemplants\ to do it for them.
+
+\section{Streams and Utilities}
+
+Streams to be used in \ac{BFD}s and \ac{PFD}s can be obtained by means of the
+\verb|\draw| command of \TikZ\ to represent lines with the operator \verb|--|.
+The graphicas aspect of a stream is defined as a \TikZ\ style and can be applied
+to any \verb|\draw| command as an option to the command itself. Although not
+explicitly showed, all of the following example instructions are intended to be
+used within a \verb|tikzpicture| environment.
+
+\subsection{Main Stream}
+
+A main stream indicates the main path of a process, the one prime matters
+follow to be transformed into the desired products. It is defined as a style
+called \chps{main stream}, to be applied to the \verb|\draw| command:
+\begin{chpcode}
+ \draw[main stream] (0,0) -- (2,0);
+\end{chpcode}
+and yields an arrow of \verb|semithick| thickness:
+\begin{center}
+\begin{tikzpicture}
+ \draw[main stream] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+As for all of the \TikZ\ arrows declared through the \verb|->| option, the tip
+is present only on the last point of the path:
+\begin{center}
+\begin{tikzpicture}
+ \draw[main stream] (0,0) -- (1,0) -- (1,1) -| (2,0);
+\end{tikzpicture}
+\end{center}
+so every main stream (arrow) to be represented requires its own \verb|\draw|
+command.
+
+\subsection{Secondary Stream}
+
+A secondary stream indicates a process stream different from the main one, still
+very important to the process, though not as the principal line (reactants
+recycle is an example). It is defined as a style called \chps{secondary stream},
+to be applied to the \verb|\draw| command:
+\begin{chpcode}
+ \draw[secondary stream] (0,0) -- (2,0);
+\end{chpcode}
+and yields an arrow of \verb|thin| thickness:
+\begin{center}
+\begin{tikzpicture}
+ \draw[secondary stream] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+
+\subsection{Utility Stream}
+
+A utility stream indicates all of the streams different from the main and
+secondary ones, but anyway useful to the process (at least in a \ac{PFD}), such
+as heating steam or cooling water. It is defined as a style called
+\chps{utility stream}, to be applied to the \verb|\draw| command:
+\begin{chpcode}
+ \draw[utility stream] (0,0) -- (2,0);
+\end{chpcode}
+and yields an arrow of \verb|very thin| thickness (the standard one in \TikZ):
+\begin{center}
+\begin{tikzpicture}
+ \draw[utility stream] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+
+The standard arrow tip defined for \chps{main stream}, \chps{secondary stream}
+and \chps{utility stream} styles (and for everything else in \chemplants\ that
+has an arrow tip) is the \verb|stealth| arrow of \TikZ. This can be changed, as
+a lot of other graphical parameters can. The way such customisations can be
+achieved will be discussed after the introduction of all units.
+
+\subsection{Signal}
+
+In a \ac{PFD}, it is possibile to sketch also the main paths of the control
+system of a chemical plant. Controllers are connected to units and to actuators
+through a signal line, which in a \ac{PFD} is intended as a generic signal (no
+distinction between pneumatic, electric and so on). It is defined as a style
+called \chps{signal}, to be applied to the \verb|\draw| command:
+\begin{chpcode}
+ \draw[signal] (0,0) -- (2,0);
+\end{chpcode}
+and yields a line of \verb|very thin| thickness with parallel and oblique short
+lines placed at regular intervals:
+\begin{center}
+\begin{tikzpicture}
+ \draw[signal] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+
+It should be notice that \chps{signal} style is not very flexible. Markings
+start \SI{5}{\mm} after the path initial point and are spaced by \SI{5}{\mm},
+ending at least \SI{5}{\mm} before the final point of the path. Thus, the optimal
+result is obtained if a path has a length which is a multiple of \SI{5}{\mm}.
+Otherwise, there will be an ``uncovered portion'' of the path. For example, the
+code:
+\begin{chpcode}
+ \draw[signal] (0,2) -- (2,2);
+ \draw[signal] (0,1) -- (1.8,1);
+ \draw[signal] (0,0) -- (2.2,0);
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \draw[signal] (0,2) -- (2,2);
+ \draw[signal] (0,1) -- (1.9,1);
+ \draw[signal] (0,0) -- (2.1,0);
+\end{tikzpicture}
+\end{center}
+The top line only yields the correct graphical result. Notice also that the
+minimum length a \chps{signal} path should have is \SI{1}{\mm}, which results
+into a short signal with a single mark on its middle point.
+
+Sometimes the \chps{signal} style is not flexible enough, such as for very short
+paths. For this specific aim, a \chps{short signal} style is defined, to be used
+in the same way of the standard \chps{signal}, but it places a single mark in
+the middle of the path:
+\begin{center}
+\begin{tikzpicture}
+ \draw[short signal] (0,0) -- (0.5,0);
+\end{tikzpicture}
+\end{center}
+so it is recommended when a signal shorter than \SI{1}{\cm} has to be drawn.
+
+\subsection{Hidden Streams and Components}
+
+Although not really considered by the \UNICHIM\ regulation, it is sometimes
+useful to show streams and components within a unit. Two special styles are
+defined to this aim.
+
+The \chps{hidden stream} style is defined to be applied to the \verb|\draw|
+command:
+\begin{chpcode}
+ \draw[main stream, hidden stream] (0,0) -- (2,0);
+\end{chpcode}
+and yields a \verb|dashed| line with no specified thickness, so it has to be
+used with either \chps{main stream} or \chps{utility stream} to draw the arrow
+of the right thickness:
+\begin{center}
+\begin{tikzpicture}
+ \draw[main stream, hidden stream] (0,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+
+The \chps{hidden component} style is defined to be applied to the \verb|\pic|
+command to draw components within a unit (in the way that will be introduced
+later):
+\begin{chpcode}
+ \pic[hidden component] at (0,0) {valve=main};
+\end{chpcode}
+and yields the required unit represented not with a solid line, but with a
+\verb|densely dotted| pattern:
+\begin{center}
+\begin{tikzpicture}
+ \pic[hidden component] at (0,0) {valve=main};
+\end{tikzpicture}
+\end{center}
+
+\section{Process Units}
+
+Process units are defined as pics. A pic is a \TikZ\ object that represents a
+simple draw to be placed at certain coordinates through the \verb|\pic| command.
+The advantages of using a pic to define a standard symbol are the easiness of
+use and of modification of the symbol itself, if needed.
+
+In order to define a pic, it is important to specify the starting point and, of
+course, the code that draws the pic. The starting point is the most important
+point of the pic since it is its anchor, the point that will be placed to the
+coordinates declared by the \verb|\pic| command. The drawing code defines,
+instead, the dimensions of the pic and its default orientation (and the line
+thickness, \verb|thick| by default in \chemplants).
+
+The two features just introduced imply to specify what is the logic of the
+pics defined by \chemplants. The main anchor is almost always defined as the
+centre of the symbol (or as an important point close to it). This choice let all
+of the transformation options defined by \TikZ\ to be applied to the pics
+representing the units, so a high flexibility in placing and orienting units is
+granted. However, there is also a drawback in this approach: the coordinates of
+the main anchor of the pic cn be established, but the coordinates of the points
+in which streams touch the unit have to be calculated by hand.
+
+The problem just highlighted was the main trouble of the \chemplants\ package.
+This issue was fixed redefining units in a more cleaver way and using more
+advanced tools of the \TikZ\ package. I would like to explain a little bit of
+history of the package before going on.
+
+When I started to define units, since they where few and very simple (and since I
+was not that able in programmed drawing), pics contained the simple geometrical
+description of the symbols. This was easy to do, but it had the great
+disadvantage of forcing the user (only me at that time) to manually calculate
+coordinates for the placement of units and for streams connections. In a certain
+way, the problem is also an opportunity because it forces the drawer to
+accurately plan the layout of the schematics, but it is silly and very
+time-consuming in large and complex drawings.
+
+My dream was to build a simple automatic interface like the \CircuiTikZ\
+one, which uses the \verb|to| operator of \TikZ\ in a very clever way (within a
+custom environment of the package). Anyway, electric networks schematics are
+simpler than chemical processes drawing under this aspect: a great part of
+electrical components, such as resistors, capacitors and inductors, are bipoles,
+which means with one input and one output only, just two connections points. In
+chemical plants, most of the units are not simple bipoles, but can have a wide
+variety of inlet and outlet streams connected in variable points. Due to this
+necessity, I was not able to find a simple solution during the very first writing
+of the package code.
+
+After some researches, I saw the light: coordinate nodes. The \TikZ\ package
+offers the possibility to define a pic with some internal coordinate nodes,
+special points to which a name can be assigned. In this way it is not necessary
+to calculate by hand the position of the remarkable points of a unit, but it is
+enough to know the names of the coordinate nodes which represent them to snap a
+stream on those points. Moving a unit will then move also anchors, so the snap
+will be held. Finally, \TikZ\ let a pic to be prefixed with a name that
+univocally identifies the pic. This name is prefixed also to anchors declared
+in the pic definition, hence also anchors are univocally determined, avoiding to
+snap a stream to the wrong unit.
+
+\subsection{Understanding Symbols}
+
+Units defined by \chemplants\ can be two different kinds of pics:
+\begin{itemize}
+ \item simple pic objects, which can be used by just calling them through a
+ \verb|\pic| command;
+ \item pic objects with a mandatory argument, in which the pic name called
+ through the \verb|\pic| command has to be followed by a specification.
+\end{itemize}
+The second category is particularly useful to draw similar units distinguished
+by some details, such as different columns types, or to let units to be
+sensible to the context, for example units that have to be drawn with different
+thicknesses. A third possibility is to give a text argument to the pic that has
+to be represented inside the pic itself; this is particularly useful for control
+instruments.
+
+\subsubsection{The General Pic Syntax}
+
+A pic is a \TikZ\ object which can be called by the \verb|\pic| command. The
+general syntax of the command is more or less:
+\begin{chpcode}
+ \pic [£!\meta{options}!£] (£!\meta{identifier}!£) at (£!\meta{coordinate}!£) {£!\meta{name}!£};
+\end{chpcode}
+where:
+\begin{itemize}
+ \item \meta{options} is a list of options to be passed to the pic and it
+ is, as the name says, an optional argument;
+ \item \meta{identifier} is a user-defined name assigned to the pic that
+ should univocally determine it and that will be prefixed, together with
+ a dash, \verb|-|, to all of the nodes names (it is an optional argument
+ for the pic, but mandatory if one wants to access the node features);
+ \item \meta{coordinates} is whichever expression \TikZ\ recognises as a
+ specification of the coordinates on its canvas;
+ \item \meta{name} is the name of the pic to be drawn.
+\end{itemize}
+This syntax holds true for simple pics only. Units defined as pics with arguments
+have a similar syntax, but with an extra argument:
+\begin{chpcode}
+ \pic [£!\meta{options}!£] (£!\meta{identifier}!£) at (£!\meta{coordinate}!£) {£!\meta{name}!£=£!\meta{type}!£};
+\end{chpcode}
+where \meta{type} is the argument to be passed to the \meta{name} unit and which
+specifies some features of the unit itself. The usage of these syntaxes will
+be clearer in the future, when examples will be shown.
+
+\subsubsection{Common Nodes}
+
+In the following, units defined by \chemplants\ are listed, described and shown.
+In order to profitably draw units it is important to know where their anchors
+and nodes are, what their dimensions are and which is their default orientation.
+Units will be drawn and some information will be given in the meanwhile:
+\begin{itemize}
+ \item drawings will be shown in their default orientation;
+ \item anchors will be represented on units by a little
+ \textcolor{red}{red cross};
+ \item remarkable nodes, the ones defined by the pic code, will be
+ represented on units by a little \textcolor{blue}{blue cross} with an
+ abbreviation of the name of the node on its side;
+ \item dimensions will be marked on drawings, both total dimensions and
+ distances from the important points to the anchor.
+\end{itemize}
+
+Only instructions to produce the ``raw units'' will be shown, so, in order to
+avoid confusion, three units will be presented: a ``pure'' unit; a unit marked
+with dimensions; a unit marked with the nodes.
+
+What concerns the names of the remarkable nodes which will be used in the
+following require a clarification. As a general rule, nine standard names are
+used to identify \chemplants\ nodes. These names are long for the sake of
+clearance, but they will be abbreviated in this discussion just to limit the
+space they require. A short list:
+\begin{itemize}
+ \item the node \chpn{anchor} is always placed where the pic is anchored and
+ it will be never marked by a name, but only by the small red cross
+ mentioned above;
+ \item the node \chpn{left} is placed on the left limit of the unit, in its
+ centre, and will be indicated using the abbreviated name \chpn{l};
+ \item the node \chpn{bottom left} is placed on the left limit of the unit,
+ in its lower useful point, and will be indicated using the abbreviated
+ name \chpn{bl};
+ \item the node \chpn{bottom} is placed on the lower limit of the unit, in
+ its centre, and will be indicated using the abbreviated name \chpn{b};
+ \item the node \chpn{bottom right} is placed on the right limit of the unit,
+ in its lower useful point, and will be indicated using the abbreviated
+ name \chpn{br};
+ \item the node \chpn{right} is placed on the right limit of the unit, in its
+ centre, and will be indicated using the abbreviated name \chpn{r};
+ \item the node \chpn{top right} is placed on the right limit of the unit,
+ in its upper useful point, and will be indicated using the abbreviated
+ name \chpn{tr};
+ \item the node \chpn{top} is placed on the upper limit of the unit, in
+ its centre, and will be indicated using the abbreviated name \chpn{t};
+ \item the node \chpn{top left} is placed on the left limit of the unit,
+ in its upper useful point, and will be indicated using the abbreviated
+ name \chpn{tl}.
+\end{itemize}
+
+Taking as example a tank, full names of the nodes, shown on the unit on the left,
+will be indicated using abbreviated names, as on the unit on the right:
+\begin{center}
+\begin{tikzpicture}
+\pic (T1) at (0,0) {tank};
+ \pic at (T1-anchor) {anchor mark};
+ \pic at (T1-left) {node mark};
+ \pic at (T1-bottom left) {node mark};
+ \pic at (T1-bottom) {node mark};
+ \pic at (T1-bottom right) {node mark};
+ \pic at (T1-right) {node mark};
+ \pic at (T1-top right) {node mark};
+ \pic at (T1-top) {node mark};
+ \pic at (T1-top left) {node mark};
+ \node[left] at (T1-left) {\chpn{left}};
+ \node[left] at (T1-bottom left) {\chpn{bottom left}};
+ \node[below] at (T1-bottom) {\chpn{bottom}};
+ \node[right] at (T1-bottom right) {\chpn{bottom right}};
+ \node[right] at (T1-right) {\chpn{right}};
+ \node[right] at (T1-top right) {\chpn{top right}};
+ \node[above] at (T1-top) {\chpn{top}};
+ \node[left] at (T1-top left) {\chpn{top left}};
+ \pic (T2) at (8,0) {tank};
+ \pic at (T2-anchor) {anchor mark};
+ \pic at (T2-left) {node mark};
+ \pic at (T2-bottom left) {node mark};
+ \pic at (T2-bottom) {node mark};
+ \pic at (T2-bottom right) {node mark};
+ \pic at (T2-right) {node mark};
+ \pic at (T2-top right) {node mark};
+ \pic at (T2-top) {node mark};
+ \pic at (T2-top left) {node mark};
+ \node[left] at (T2-left) {\chpn{l}};
+ \node[left] at (T2-bottom left) {\chpn{bl}};
+ \node[below] at (T2-bottom) {\chpn{b}};
+ \node[right] at (T2-bottom right) {\chpn{br}};
+ \node[right] at (T2-right) {\chpn{r}};
+ \node[right] at (T2-top right) {\chpn{tr}};
+ \node[above] at (T2-top) {\chpn{t}};
+ \node[left] at (T2-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+
+It should be noticed that not all of the ``boundary nodes'' are defined for
+every unit. Usually they are all present in a rectangle-shaped unit, such as a
+tank, but in circle-shaped units the ``corner nodes'' are not present.
+Furthermore, units represented by strange symbols can have some special nodes to
+indicate their remarkable points. Special nodes will be discussed, both with
+extended and abbreviated names, describing units which require them.
+
+It is important to recall that to access the node features of pics it is
+mandatory to assign an identifier to the \verb|\pic| command. Assuming that
+such identifier is \chpn{T}, then one can access to all of the nodes inside the
+pic thanks to it using them as coordinates nodes (as they are). Also interposing
+a dash, \verb|-|, is fundamental. For example \chpn{T-bottom right} used as
+coordinate identifies the point of the \chpn{bottom right} node of the pic
+identified (prefixed) by \chpn{T}.
+
+\subsubsection{A Command to Show Measures}
+
+By the way, \chemplants\ defines a command to draw dimensions: \verb|\measure|.
+This command has to be used directly within a \verb|tikzpicture| environment
+(also without the final semicolon) and requires three mandatory arguments:
+start point coordinates, end point coordinates and the text of the measure.
+Coordinates can be declared in any way recognised by \TikZ, while the text can
+be anything that can be placed into a \TikZ\ node.
+
+The default appearance of a measure is a grey \verb|thin| line with flat tips.
+The measure is yield as text placed in the middle of the line, sloped in its
+direction and always below it. Anyway, \verb|\measure| accepts an optional
+argument in which any anchor specification that can be passed to a \TikZ\ node
+can be used. The most useful is \verb|above|, which moves the text of a measure
+above the line.
+
+Some examples using the \siunitx\ package (but also normal text will work).
+The code:
+\begin{chpcode}
+ \measure{(0,0)}{(2,0)}{\SI{2}{\cm}}
+ \measure{(0,1.2)}{(0,0.2)}{\SI{1}{\cm}}
+ \measure{(1,0.2)}{(1,1.2)}{\SI{1}{\cm}}
+ \measure[above]{(2,1.2)}{(2,0.2)}{\SI{1}{\cm}}
+ \measure[above]{(0,1.4)}{(2,1.4)}{\SI{2}{\cm}}
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \measure{(0,0)}{(2,0)}{\SI{2}{\cm}}
+ \measure{(0,1.2)}{(0,0.2)}{\SI{1}{\cm}}
+ \measure{(1,0.2)}{(1,1.2)}{\SI{1}{\cm}}
+ \measure[above]{(2,1.2)}{(2,0.2)}{\SI{1}{\cm}}
+ \measure[above]{(0,1.4)}{(2,1.4)}{\SI{2}{\cm}}
+\end{tikzpicture}
+\end{center}
+It is important to notice that the value of the measure is not calculated
+automatically, but it must be passed as an argument. This is useful to indicate,
+for example, the length of a pipe or the real dimensions of a unit in a process
+scheme.
+
+\subsection{Fluids and Solids Storage}
+
+\subsubsection{Tank}
+
+A tank is a generic recipient useful to store process fluids or solids. A generic
+symbol is defined for a process tank and it can be used with no distinction on
+its shape, which is represented by a rectangle with rounded bases. It is defined
+as a simple pic called \chpp{tank}:
+\begin{chpcode}
+ \pic at (0,0) {tank};
+\end{chpcode}
+and yields a vertical tank anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4,0) {tank};
+ \pic at (0,0) {tank};
+ \measure{(-1,-1.7)}{(1,-1.7)}{\SI{20}{\mm}}
+ \measure{(-1.2,1.5)}{(-1.2,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.2,0.915)}{(1.2,0)}{\SI{9.15}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (4,0) {tank};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the tank
+to the point where the curvature begins. This point is identified by the
+\chpn{top right} node and by its analogs.
+
+The \chpp{tank} pic is generic and it is useful to represent process tanks.
+Storage tanks can be represented with the same pic, but there are also some
+specific symbols.
+
+\subsubsection{Cone Roof Tank}
+
+A cone roof tank is a large tank placed on the ground and useful to store
+process fluids or solids. As the name says, it has a cone-shaped roof. It is
+defined as a simple pic called \chpp{cone tank}:
+\begin{chpcode}
+ \pic at (0,0) {cone tank};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a cone-shaped
+roof:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {cone tank};
+ \pic at (0,0) {cone tank};
+ \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}}
+ \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.7,1.1)}{(1.7,0)}{\SI{11}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (5,0) {cone tank};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the bottom right indicates the distance from the middle of
+the tank to the point where the outlet stream should be connected. This point is
+identified by the \chpn{bottom right} node and by its analogous node on the left.
+
+\subsubsection{Dome Roof Tank}
+
+A dome roof tank is the same of a cone roof tank, but, clearly, it has a
+dome-shaped roof. It is defined as a simple pic called \chpp{dome tank}:
+\begin{chpcode}
+ \pic at (0,0) {dome tank};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a dome-shaped
+roof:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {dome tank};
+ \pic at (0,0) {dome tank};
+ \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}}
+ \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.7,0.7)}{(1.7,0)}{\SI{7}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (5,0) {dome tank};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top right indicates the distance from the middle of the
+tank to the point where the curvature begins, while the measure on the bottom
+right indicates the distance from the middle of the tank to the point where the
+outlet stream should be connected. This last point is identified by the
+\chpn{bottom right} node and by its analogous node on the left.
+
+\subsubsection{Floating Roof Tank}
+
+A floating roof tank is a large tank placed on the ground and useful to store
+process fluids or solids. It has the advantage to change in volume depending on
+how much it is filled, which allows to compensate pressure unbalances during
+the filling and the draining of the tank, also to avoid the formation of a gas
+pocket above the stored substance. It is defined as a simple pic called
+\chpp{floating roof tank}:
+\begin{chpcode}
+ \pic at (0,0) {floating roof tank};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a sketch of the
+floating roof:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {floating roof tank};
+ \pic at (0,0) {floating roof tank};
+ \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}}
+ \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.7,1.2)}{(1.7,0)}{\SI{12}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (5,0) {floating roof tank};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the bottom right indicates the distance from the middle of
+the tank to the point where the outlet stream should be connected. This point is
+identified by the \chpn{bottom right} node and by its analogous node on the left.
+
+\subsubsection{Bell GasHolder}
+
+Tanks introduced so far can be used to represent general systems to store either
+solids, liquids and gases. For gases storage, a specific kind of tanks exists,
+which is designed to control the gas pressure in a simple way: gasholders.
+
+The most common gasholder uses a bell-shaped floating roof to expand and contract
+its volume depending on the amount of gas to be stored. It is defined as a simple
+pic called \chpp{bell gasholder}:
+\begin{chpcode}
+ \pic at (0,0) {bell gasholder};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a sketch of
+the bell-shaped floating roof:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {bell gasholder};
+ \pic at (0,0) {bell gasholder};
+ \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}}
+ \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.7,0.7)}{(1.7,0)}{\SI{7}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}}
+ \measure[above]{(-1.45,1.7)}{(1.45,1.7)}{\SI{29}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (5,0) {bell gasholder};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top indicates the width of the moving roof, th measure
+on the top right indicates the distance from the middle of the gasholder to the
+point where the curvature begins and the measure on the bottom right indicates
+the distance from the middle of the gasholder to the point where a stream should
+be connected. This last point is identified by the \chpn{bottom right} node and
+by its analogous node on the left.
+
+It should be quite obvious that \chpn{left} and \chpn{right} nodes, falling on
+the roof rails, are not meant to be used for stream connections, but just to
+labelling purposes or for control instrumentation connections.
+
+\subsubsection{Dry GasHolder}
+
+Another kind of gasholder is the so called dry gasholder, where there is a fixed
+structure that contains an ``expandable ballon'' in which the gas is stored. It
+is defined as a simple pic called \chpp{dry gasholder}:
+\begin{chpcode}
+ \pic at (0,0) {dry gasholder};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a sketch of the
+ballon inside it:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {dry gasholder};
+ \pic at (0,0) {dry gasholder};
+ \measure{(-1.5,-1.2)}{(1.5,-1.2)}{\SI{30}{\mm}}
+ \measure{(-1.7,1.0)}{(-1.7,-1.0)}{\SI{20}{\mm}}
+ \measure[above]{(1.7,0.5)}{(1.7,0)}{\SI{5}{\mm}}
+ \measure[above]{(2.2,0)}{(2.2,-0.9)}{\SI{9}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (T) at (5,0) {dry gasholder};
+ \pic at (T-anchor) {anchor mark};
+ \pic at (T-left) {node mark};
+ \pic at (T-bottom left) {node mark};
+ \pic at (T-bottom) {node mark};
+ \pic at (T-bottom right) {node mark};
+ \pic at (T-right) {node mark};
+ \pic at (T-top right) {node mark};
+ \pic at (T-top) {node mark};
+ \pic at (T-top left) {node mark};
+ \pic at (T-dome top) {node mark};
+ \node[left] at (T-left) {\chpn{l}};
+ \node[left] at (T-bottom left) {\chpn{bl}};
+ \node[below] at (T-bottom) {\chpn{b}};
+ \node[right] at (T-bottom right) {\chpn{br}};
+ \node[right] at (T-right) {\chpn{r}};
+ \node[right] at (T-top right) {\chpn{tr}};
+ \node[above] at (T-top) {\chpn{t}};
+ \node[left] at (T-top left) {\chpn{tl}};
+ \node[above] at (T-dome top) {\chpn{dt}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top right indicates the distance from the middle of the
+gasholder to the top of the internal balloon, while the measure on the bottom
+right indicates the distance from the middle of the gasholder to the point where
+a stream should be connected. This last point is identified by the
+\chpn{bottom right} node and by its analogous node on the left.
+
+A special node is defined for the \chpp{dry gasholder}: usually the inlet stream
+is connected to one bottom side of the balloon, on the \chpn{bottom right} node
+or on the \chpn{bottom left} node, while the outlet is connected to the top of
+the dome (and not to the top of the containing structure). This special node is
+called \chpn{dome top} and it is marked in the above drawing using the
+abbreviated name \chpn{dt}. This node can be called in the usual way: for
+example, in a \chpn{dry gasholder} identified as \chpn{G} the node is
+\chpn{G-dome top}.
+
+\subsection{Fluid Handling}
+
+Fluid handling devices are essential to chemical plants because it is always
+necessary to move a fluid, from one place to another against pressure drops
+generated by pipes or units.
+
+Fluid handling units used in the chemical industry are basically classified
+considering the kind of fluid they can move, either a liquid or a gas. On the
+basis of this classification, there is a main distinction between pumps for
+liquids and equipments to move gases. The latter are furthermore distinguished
+with respect to the pressure rise a unit can achieve: fans, blowers and
+compressors.
+
+\subsubsection{Centrifugal Pump}
+
+A pump is a mechanical machine useful to move a liquid and to increase its
+pressure. The most simple and widely used pump is a simple kinetic machine known
+as centrifugal pump. It is defined as a simple pic called
+\chpp{centrifugal pump}:
+\begin{chpcode}
+ \pic at (0,0) {centrifugal pump};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, supported by a
+triangular base and containing a little circle representing the inlet nozzle:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {centrifugal pump};
+ \pic at (0,0) {centrifugal pump};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}}
+ \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (P) at (3,0) {centrifugal pump};
+ \pic at (P-anchor) {anchor mark};
+ \pic at (P-left) {node mark};
+ \pic at (P-bottom) {node mark};
+ \pic at (P-right) {node mark};
+ \pic at (P-top) {node mark};
+ \node[left] at (P-left) {\chpn{l}};
+ \node[below] at (P-bottom) {\chpn{b}};
+ \node[right] at (P-right) {\chpn{r}};
+ \node[above] at (P-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the inlet of the pump
+to its base, while the measure on the top indicates the diameter of the circle.
+
+Nodes are defined only for the remarkable outlet points of the pump, but not for
+its inlet: this is placed on the anchor point, so it should not be difficult to
+find it (use the \chpn{anchor} node to snap purposes). Anyway, it should be
+noticed that the centrifugal pump, together with the fan that will be introduced
+later on, is the only unit that requires the inlet to be placed in the centre of
+the symbol, while other units do not. Finally, the \chpn{bottom} node is not
+really meant to connect streams, but it could be exploited to labelling purposes.
+
+The centrifugal pump is for sure the most widely used one, but its applications
+are quite limiting with respect to the pressure rise and the kind of treatable
+liquid. Other pumps exist, such as the ones belonging to the volumetric machines:
+these are mainly rotary pumps and reciprocating pumps.
+
+\subsubsection{Rotary Pump}
+
+Rotary pumps are themselves a large family of machines, but \UNICHIM\ defines
+a generic symbol to represent them all. It is defined as a simple pic called
+\chpp{rotary pump}:
+\begin{chpcode}
+ \pic at (0,0) {rotary pump};
+\end{chpcode}
+and yields an oblong circle supported by a triangular base and containing the
+sketch of two little circle, where the anchor is in the centre of the lowest
+one:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {rotary pump};
+ \pic at (0,0) {rotary pump};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.9)}{(-0.7,-0.6)}{\SI{13}{\mm}}
+ \measure[above]{(-0.4,1.1)}{(0.4,1.1)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}}
+ \measure[above]{(1.2,0)}{(1.2,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (P) at (3,0) {rotary pump};
+ \pic at (P-anchor) {anchor mark};
+ \pic at (P-left) {node mark};
+ \pic at (P-bottom) {node mark};
+ \pic at (P-right) {node mark};
+ \pic at (P-top) {node mark};
+ \node[left] at (P-left) {\chpn{l}};
+ \node[below] at (P-bottom) {\chpn{b}};
+ \node[right] at (P-right) {\chpn{r}};
+ \node[above] at (P-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where measures on the right indicate the distance from the inlet of the pump
+(placed on its boundary, either \chpn{left} or \chpn{right} nodes) to its
+anchor, \SI{2.5}{\mm}, and the distance form the anchor of the pump to its
+base, \SI{6}{\mm}, while the measure on the top indicates the width of the body.
+
+\subsubsection{Liquid Ring Pump}
+
+As told before, the \chpp{rotary pump} is generic, so it can be used to
+represent gear pumps, lobe pumps, screw pumps, hollow disc pumps and other
+similar machines. A remarkable exception of a rotary pump not representable by
+means of the generic symbol is the liquid ring pump, useful to aspire a fluid
+rather than to compress it, hence to generate vacuum. It is defined as a simple
+pic called \chpp{liquid ring pump}:
+\begin{chpcode}
+ \pic at (0,0) {liquid ring pump};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, supported by a
+triangular base and containing a smaller circle representing the liquid ring:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {liquid ring pump};
+ \pic at (0,0) {liquid ring pump};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}}
+ \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (P) at (3,0) {liquid ring pump};
+ \pic at (P-anchor) {anchor mark};
+ \pic at (P-left) {node mark};
+ \pic at (P-bottom) {node mark};
+ \pic at (P-right) {node mark};
+ \pic at (P-top) {node mark};
+ \node[left] at (P-left) {\chpn{l}};
+ \node[below] at (P-bottom) {\chpn{b}};
+ \node[right] at (P-right) {\chpn{r}};
+ \node[above] at (P-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the inlet of the pump
+(placed on its boundary) to its base, while the measure on the top indicates the
+diameter of the circle.
+
+\subsubsection{Reciprocating Pump}
+
+The other category of volumetric pumps are the reciprocating ones, which work
+through the classical principle of cylinder and piston. A generic reciprocating
+pump is defined as a simple pic called \chpp{reciprocating pump}:
+\begin{chpcode}
+ \pic at (0,0) {reciprocating pump};
+\end{chpcode}
+and yields a square, in which centre there is the anchor, supported by a
+squared base:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {reciprocating pump};
+ \pic at (0,0) {reciprocating pump};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}}
+ \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (P) at (3,0) {reciprocating pump};
+ \pic at (P-anchor) {anchor mark};
+ \pic at (P-left) {node mark};
+ \pic at (P-bottom) {node mark};
+ \pic at (P-right) {node mark};
+ \pic at (P-top) {node mark};
+ \node[left] at (P-left) {\chpn{l}};
+ \node[below] at (P-bottom) {\chpn{b}};
+ \node[right] at (P-right) {\chpn{r}};
+ \node[above] at (P-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the inlet of the pump
+(placed on its boundary) to its base, while the measure on the top indicates the
+length of the side side of the square.
+
+\subsubsection{Fan}
+
+Liquid handling equipments are done, so the description can move to gas handling
+units. As told before, these are mainly distinguished on the basis of the
+pressure rise they can achieve, but also on their working principle.
+
+If it is simply required to move a gas, without a significant pressure rise, a
+fan or, at most, a blower, is enough. These two units are simple kinetic machines
+similar to a centrifugal pump and both of them are defined by \UNICHIM\ as a
+single symbol, which in \chemplants\ can be found under the name of \chpp{fan}:
+\begin{chpcode}
+ \pic at (0,0) {fan};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a squared
+vertex, supported by a triangular base and containing a little circle
+representing the inlet nozzle:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {fan};
+ \pic at (0,0) {fan};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}}
+ \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (F) at (3,0) {fan};
+ \pic at (F-anchor) {anchor mark};
+ \pic at (F-left) {node mark};
+ \pic at (F-bottom) {node mark};
+ \pic at (F-right) {node mark};
+ \pic at (F-top) {node mark};
+ \pic at (F-outlet) {node mark};
+ \node[left] at (F-left) {\chpn{l}};
+ \node[below] at (F-bottom) {\chpn{b}};
+ \node[right] at (F-right) {\chpn{r}};
+ \node[above] at (F-top) {\chpn{t}};
+ \node[above right] at (F-outlet) {\chpn{o}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the inlet of the fan
+(this time again placed in its centre) to its base, while the measure on the top
+indicates the diameter of the circle.
+
+A special node is defined for the \chpp{fan}: the squared vertex indicates the
+outlet of the unit, thus it is identified by the \chpn{outlet} node, indicated
+as \chpn{o} in the above representation. As for the centrifugal pump, the
+\chpn{anchor} node should be used to snap the inlet stream to the fan.
+
+\subsubsection{Centrifugal Compressor}
+
+When a gas needs a high pressure rise, there is no other way but using a
+compressor. The only kinetic machine useful to compress a gas that has a
+symbol defined by \chemplants\ is the centrifugal compressor. It is defined as a
+simple pic called \chpp{centrifugal compressor}:
+\begin{chpcode}
+ \pic at (0,0) {centrifugal compressor};
+\end{chpcode}
+and yields a cone frustum, in which middle there is the anchor, supported by a
+squared base:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4,0) {centrifugal compressor};
+ \pic at (0,0) {centrifugal compressor};
+ \measure{(-1.0,-0.8)}{(1.0,-0.8)}{\SI{20}{\mm}}
+ \measure{(-1.7,0.4)}{(-1.7,-0.6)}{\SI{10}{\mm}}
+ \measure{(-1.2,0.4)}{(-1.2,-0.4)}{\SI{8}{\mm}}
+ \measure[above]{(-0.9,0.6)}{(0.9,0.6)}{\SI{18}{\mm}}
+ \measure[above]{(1.2,0.2)}{(1.2,-0.2)}{\SI{4}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (4,0) {centrifugal compressor};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-right) {node mark};
+ \pic at (C-inlet bottom) {node mark};
+ \pic at (C-outlet bottom) {node mark};
+ \pic at (C-outlet top) {node mark};
+ \pic at (C-inlet top) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[right] at (C-right) {\chpn{r}};
+ \node[below left] at (C-inlet bottom) {\chpn{ib}};
+ \node[below right] at (C-outlet bottom) {\chpn{ob}};
+ \node[above] at (C-outlet top) {\chpn{ot}};
+ \node[above] at (C-inlet top) {\chpn{it}};
+\end{tikzpicture}
+\end{center}
+
+Measures require some clarifications. The unit has a total width of \SI{20}{\mm}
+and a total height of \SI{10}{\mm}. The cone frustum has a length of
+\SI{18}{\mm} (the base protrudes horizontally \SI{1}{\mm} on each side, as for
+all of the other symbols defined as fluid handling units), its larger base has
+a height of \SI{8}{\mm} and the smaller one of \SI{4}{\mm}.
+
+Also nodes are not that easy to understand. As always, the \chpn{bottom} node is
+defined to labelling purposes. The \chpn{left} and \chpn{right} nodes should
+not be used to connect streams, but can be exploited to connect control
+instrumentation or to represent the shaft of the compressor. Streams should be
+connected on the sides of the cone frustum: more precisely the inlet stream has
+to enter the unit on the side of the larger base and the outlet one has to leave
+the unit on the side of the smaller one, both of them vertically, in the
+direction perpendicular to the axis of the cone frustum. To this aim, four
+special nodes are defined:
+\begin{itemize}
+ \item a node called \chpn{inlet bottom}, abbreviated in the picture above as
+ \chpn{ib};
+ \item a node called \chpn{outlet bottom}, abbreviated in the picture above as
+ \chpn{ob};
+ \item a node called \chpn{outlet top}, abbreviated in the picture above as
+ \chpn{ot};
+ \item a node called \chpn{inlet top}, abbreviated in the picture above as
+ \chpn{it}.
+\end{itemize}
+(At most, it is possible to tolerate the inlet
+placed on the left side of the unit, on the \chpn{left} node, but the outlet has
+to be compulsorily on the side of the smaller base.)
+
+\subsubsection{Rotary Compressor}
+
+As for pumps, also compressors are not kinetic machines only, but also
+volumetric, again rotary and reciprocating. Also in this case, a generic symbol
+is defined by \UNICHIM\ to indicate all of the rotary compressors. It is defined
+as a simple pic called \chpp{rotary compressor}:
+\begin{chpcode}
+ \pic at (0,0) {rotary compressor};
+\end{chpcode}
+and yields an oblong circle supported by a triangular base and containing the
+sketch of a sort of S, where the anchor is in the centre of the lowest branch:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {rotary compressor};
+ \pic at (0,0) {rotary compressor};
+ \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.9)}{(-0.7,-0.6)}{\SI{13}{\mm}}
+ \measure[above]{(-0.4,1.1)}{(0.4,1.1)}{\SI{8}{\mm}}
+ \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}}
+ \measure[above]{(1.2,0)}{(1.2,-0.6)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (P) at (3,0) {rotary compressor};
+ \pic at (P-anchor) {anchor mark};
+ \pic at (P-left) {node mark};
+ \pic at (P-bottom) {node mark};
+ \pic at (P-right) {node mark};
+ \pic at (P-top) {node mark};
+ \node[left] at (P-left) {\chpn{l}};
+ \node[below] at (P-bottom) {\chpn{b}};
+ \node[right] at (P-right) {\chpn{r}};
+ \node[above] at (P-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where measures on the right indicate the distance from the inlet of the
+compressor (placed on its boundary, either \chpn{left} or \chpn{right} nodes)
+to its anchor, \SI{2.5}{\mm}, and the distance from the anchor of the
+compressor to its base, \SI{6}{\mm}, while the measure on the top indicates the
+width of the body.
+
+\subsubsection{Reciprocating Compressor}
+
+Differently from what happens for pumps, reciprocating compressors are
+represented by means of two different symbols, one for single stage operations
+and one for multistage units. The simple stage unit is defined as a simple pic
+called \chpp{reciprocating compressor}:
+\begin{chpcode}
+ \pic at (0,0) {reciprocating compressor};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, merged with the
+rectangular body of the unit, all of which is supported by a squared base:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4,0) {reciprocating compressor};
+ \pic at (0,0) {reciprocating compressor};
+ \measure{(-0.5,-1.3)}{(1.5,-1.3)}{\SI{20}{\mm}}
+ \measure{(-0.4,-0.8)}{(1.4,-0.8)}{\SI{18}{\mm}}
+ \measure{(-1.2,0.4)}{(-1.2,-0.6)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.4)}{(-0.7,-0.4)}{\SI{8}{\mm}}
+ \measure[above]{(0,1.1)}{(1.4,1.1)}{\SI{14}{\mm}}
+ \measure[above]{(0,0.6)}{(0.8,0.6)}{\SI{8}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-0.6)}{\SI{6}{\mm}}
+ \measure[above]{(2.2,0.346)}{(2.2,-0.346)}{\SI{6.92}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (4,0) {reciprocating compressor};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-top) {node mark};
+ \pic at (C-inlet bottom) {node mark};
+ \pic at (C-outlet) {node mark};
+ \pic at (C-inlet top) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[above] at (C-top) {\chpn{t}};
+ \node[above] at (C-inlet bottom) {\chpn{ib}};
+ \node[right] at (C-outlet) {\chpn{o}};
+ \node[above] at (C-inlet top) {\chpn{it}};
+\end{tikzpicture}
+\end{center}
+The circle is a sketch of the engine of the compressor, while the rectangle is
+the main body of the unit, where the gas gets effectively compressed.
+
+Measures require some clarification. The unit has a total width of \SI{20}{\mm}
+and a total height of \SI{10}{\mm}. The figure obtained joining the circle and
+the rectangle has a length of \SI{18}{\mm} (the base protrudes horizontally
+\SI{1}{\mm} on each side). The circle has a diameter of \SI{8}{\mm}, while the
+rectangle has a height of \SI{6.92}{\mm}. The base of the unit is \SI{6}{\mm}
+below its anchor point.
+
+Since the ``real'' compressing part of the unit is the rectangle, nodes on the
+circle should be used to labelling purposes, to connect the control
+instrumentation or to sketch the shaft of the engine. The gas inlet stream
+should be connected to the \chpn{inlet bottom} or \chpn{inlet top} nodes, showed
+in the above drawing using the abbreviated names \chpn{ib} and \chpn{it}
+respectively, while the outlet stream has to be connected to the \chpn{outlet}
+node, \chpn{o} in the above representation. The two measures not cited yet are
+referred to these remarkable points of the unit: inlet nodes are \SI{8}{\mm} to
+the right of the anchor, while the outlet node is \SI{14}{\mm} to the right of
+the anchor.
+
+\subsubsection{MultiStage Compressor}
+
+Besides all of the above mentioned symbols, the most common unit used to indicate
+gas handling machine is the one that represents the multistage reciprocating
+compressor. Indeed, this is also widely used to represent a generic compression
+unit, despite its real meaning. It is defined as a simple pic called
+\chpp{multistage compressor}:
+\begin{chpcode}
+ \pic at (0,0) {multistage compressor};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, merged with three
+rectangles, all of which is supported by a squared base:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4,0) {multistage compressor};
+% \pic at (0,0) {multistage compressor};
+% \measure{(-0.5,-1.3)}{(1.5,-1.3)}{\SI{20}{\mm}}
+% \measure{(-0.4,-0.8)}{(1.4,-0.8)}{\SI{18}{\mm}}
+% \measure{(-1.7,0.4)}{(-1.7,-0.6)}{\SI{10}{\mm}}
+% \measure{(-1.2,0.4)}{(-1.2,-0.4)}{\SI{8}{\mm}}
+% \measure{(-0.7,0)}{(-0.7,-0.6)}{\SI{6}{\mm}}
+% \measure[above]{(0,2.1)}{(1.4,2.1)}{\SI{14}{\mm}}
+% \measure[above]{(0,1.6)}{(1.25,1.6)}{\SI{12.5}{\mm}}
+% \measure[above]{(0,1.1)}{(0.9,1.1)}{\SI{9}{\mm}}
+% \measure[above]{(0,0.6)}{(0.45,0.6)}{\SI{4.5}{\mm}}
+% \measure[above]{(2.7,0.346)}{(2.7,-0.346)}{\SI{6.92}{\mm}}
+% \measure[above]{(2.1,0.231)}{(2.1,-0.231)}{\SI{4.62}{\mm}}
+% \measure[above]{(1.7,0.116)}{(1.7,-0.116)}{\SI{2.32}{\mm}}
+% \pic at (0,0) {anchor mark};
+% \pic (C) at (4,0) {multistage compressor};
+% \pic at (C-anchor) {anchor mark};
+% \pic at (C-left) {node mark};
+% \pic at (C-bottom) {node mark};
+% \pic at (C-top) {node mark};
+% \pic at (C-first bottom) {node mark};
+% \pic at (C-second bottom) {node mark};
+% \pic at (C-third bottom) {node mark};
+% \pic at (C-outlet) {node mark};
+% \pic at (C-third top) {node mark};
+% \pic at (C-second top) {node mark};
+% \pic at (C-first top) {node mark};
+% \node[left] at (C-left) {\chpn{l}};
+% \node[below] at (C-bottom) {\chpn{b}};
+% \node[above] at (C-top) {\chpn{t}};
+% \node[above left] at (C-first bottom) {\chpn{fb}};
+% \node[above] at (C-second bottom) {\chpn{sb}};
+% \node[below right] at (C-third bottom) {\chpn{tb}};
+% \node[right] at (C-outlet) {\chpn{o}};
+% \node[above] at (C-third top) {\chpn{tt}};
+% \node[above] at (C-second top) {\chpn{st}};
+% \node[above] at (C-first top) {\chpn{ft}};
+\end{tikzpicture}
+\end{center}
+Again the circle is a sketch of the engine of the compressor, while the three
+rectangles are the main body of the unit and represent the compression stages.
+Rigorously, there should be as many rectangles as the compression stages are, but
+usually a symbol with three rectangles is used independently of the number of
+stages.
+
+No measures or nodes are shown in the above drawing, that is the pure symbol,
+because of its complexity. In order to better understand measures and nodes,
+here is a huge \chpp{multistage compressor}:
+\begin{center}
+\begin{tikzpicture}
+ \pic[scale=3] (C) at (0,0) {multistage compressor};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-top) {node mark};
+ \pic at (C-first bottom) {node mark};
+ \pic at (C-second bottom) {node mark};
+ \pic at (C-third bottom) {node mark};
+ \pic at (C-outlet) {node mark};
+ \pic at (C-third top) {node mark};
+ \pic at (C-second top) {node mark};
+ \pic at (C-first top) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[above] at (C-top) {\chpn{t}};
+ \node[above] at (C-first bottom) {\chpn{fb}};
+ \node[above] at (C-second bottom) {\chpn{sb}};
+ \node[above] at (C-third bottom) {\chpn{tb}};
+ \node[right] at (C-outlet) {\chpn{o}};
+ \node[above] at (C-third top) {\chpn{tt}};
+ \node[above] at (C-second top) {\chpn{st}};
+ \node[above] at (C-first top) {\chpn{ft}};
+ \measure{(-1.5,-2.9)}{(4.5,-2.9)}{\SI{20}{\mm}}
+ \measure{(-1.2,-2.4)}{(4.2,-2.4)}{\SI{18}{\mm}}
+ \measure{(-3.1,1.2)}{(-3.1,-1.8)}{\SI{10}{\mm}}
+ \measure{(-2.6,1.2)}{(-2.6,-1.2)}{\SI{8}{\mm}}
+ \measure{(-2.1,0)}{(-2.1,-1.8)}{\SI{6}{\mm}}
+ \measure[above]{(0,3.3)}{(4.2,3.3)}{\SI{14}{\mm}}
+ \measure[above]{(0,2.8)}{(3.75,2.8)}{\SI{12.5}{\mm}}
+ \measure[above]{(0,2.3)}{(2.7,2.3)}{\SI{9}{\mm}}
+ \measure[above]{(0,1.8)}{(1.35,1.8)}{\SI{4.5}{\mm}}
+ \measure[above]{(6.1,1.038)}{(6.1,-1.038)}{\SI{6.92}{\mm}}
+ \measure[above]{(5.6,0.639)}{(5.6,-0.693)}{\SI{4.62}{\mm}}
+ \measure[above]{(5.1,0.348)}{(5.1,-0.348)}{\SI{2.32}{\mm}}
+\end{tikzpicture}
+\end{center}
+where measure bars are just expanded, but numbers are correct and refer to the
+real dimensions of the little unit above.
+
+The unit has a total width of \SI{20}{\mm} and a total height of \SI{10}{\mm}.
+The figure obtained joining the circle and the three rectangles has a length of
+\SI{18}{\mm}. The circle has a diameter of \SI{8}{\mm}, while the base of the
+unit is \SI{6}{\mm} below its anchor point. Measures on the right refer to the
+heights of the three rectangles: starting from the left of the symbol, the first
+rectangle has a height of \SI{6.92}{\mm}, the second one has a height of
+\SI{4.62}{\mm} and the third one is \SI{2.32}{\mm} high.
+
+Understanding measures on the top requires to discuss first about nodes. As for
+the single stage reciprocating compressor, inlets are on the sides of the
+rectangles, which means on the top and on the bottom of each one, while the
+outlet is on the right side of the unit, point identified by the \chpn{outlet}
+node marked in the drawing as \chpn{o} and placed \SI{14}{\mm} to the right of
+the anchor.
+
+Since rectangles represent compression stages, two nodes are defined for each
+one:
+\begin{itemize}
+ \item the first stage is provided with a node called \chpn{first bottom} and
+ with a node called \chpn{first top}, marked in the drawing as \chpn{fb}
+ and \chpn{ft} respectively and both placed \SI{4.5}{\mm} to the right
+ of the anchor;
+ \item the second stage is provided with a node called \chpn{second bottom}
+ and with a node called \chpn{second top}, marked in the drawing as
+ \chpn{sb} and \chpn{st} respectively and both placed \SI{9}{\mm} to the
+ right of the anchor;
+ \item the third stage is provided with a node called \chpn{third bottom} and
+ with a node called \chpn{third top}, marked in the drawing as \chpn{tb}
+ and \chpn{tt} respectively and both placed \SI{12.5}{\mm} to the right
+ of the anchor.
+\end{itemize}
+These nodes should be used as connection points for the inlet and are present to
+enable a flexible representation when complex necessities exist, such as the
+case of a stream which has to enter the compressor in the second stage, being
+mixed and compressed together with the one that enters in the first. Also
+complex paths can be produced thanks to these nodes, using them improperly as
+outlets to represent cooling operations applied to the fluid and interposed
+between compression stages.
+
+\subsubsection{Ejector}
+
+The last fluid handling unit defined by \chemplants\ is neither a kinetic nor
+a volumetric machine, but it belongs to (and is the most remarkable example of)
+static machines category. The ejector works thanks to the relation of the
+pressure energy with the kinetic energy of a fluid, usually a gas, and most of
+the time is used to suck a secondary fluid into a driving stream or to generate
+vacuum thanks to this effect. It is defined as a simple pic called
+\chpp{ejector}:
+\begin{chpcode}
+ \pic at (0,0) {ejector};
+\end{chpcode}
+and yields a square, in which centre there is the anchor, jointed with a cone
+frustum:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.5,0) {ejector};
+ \pic at (0,0) {ejector};
+ \measure{(-0.25,-0.45)}{(1.25,-0.45)}{\SI{15}{\mm}}
+ \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}}
+ \measure[above]{(0,0.45)}{(1.25,0.45)}{\SI{12.5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3.5,0) {ejector};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-main inlet) {node mark};
+ \pic at (E-suck inlet bottom) {node mark};
+ \pic at (E-outlet) {node mark};
+ \pic at (E-suck inlet top) {node mark};
+ \node[left] at (E-main inlet) {\chpn{mi}};
+ \node[below] at (E-suck inlet bottom) {\chpn{sib}};
+ \node[right] at (E-outlet) {\chpn{o}};
+ \node[above] at (E-suck inlet top) {\chpn{sit}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top indicates the distance from the outlet of the
+ejector to its anchor.
+
+None of the common nodes are defined for the \chpp{ejector} since its symbols
+recall its real shape, where every point has a specific function. The driving
+stream enters from the \chpn{main inlet} node, abbreviated as \chpn{mi}, while
+the secondary one is aspired through the \chpn{suck inlet bottom} node or the
+\chpn{suck inlet top} node, abbreviated as \chpn{sib} and \chpn{sit}
+respectively. The two streams, mixed together, leave the unit from the
+\chpn{outlet} node, identified as \chpn{o} in the above drawing.
+
+\subsection{Heat Exchangers}
+
+Many variants of heat exchangers are defined by \chemplants. Among ``simple
+symbols'', two heat exchangers are available to general purposes, while three
+more are meant to be used to represent specific operations. There are also some
+symbols reserved to represent specific machines.
+
+\subsubsection{Heat Exchanger}
+
+The simplest possibile heat exchanger is useful to indicate thermal energy
+transfer between fluids which do not undergo phase change. It is defined as a
+simple pic called \chpp{heat exchanger}:
+\begin{chpcode}
+ \pic at (0,0) {heat exchanger};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a sketch of the
+path of internal pipes crossing the symbol in horizontal:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {heat exchanger};
+ \pic at (0,0) {heat exchanger};
+ \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3,0) {heat exchanger};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-shell bottom) {node mark};
+ \pic at (E-shell top) {node mark};
+ \pic at (E-pipes left) {node mark};
+ \pic at (E-pipes right) {node mark};
+ \node[below] at (E-shell bottom) {\chpn{sb}};
+ \node[above] at (E-shell top) {\chpn{st}};
+ \node[left] at (E-pipes left) {\chpn{pl}};
+ \node[right] at (E-pipes right) {\chpn{pr}};
+\end{tikzpicture}
+\end{center}
+
+The \chpp{heat exchanger} has none of the common nodes, but it has some special
+ones. The stream crossing the exchanger through its internal pipes can be
+connected to the \chpn{pipes left} node, abbreviated in the picture above as
+\chpn{pl}, and to the \chpn{pipes right} node, abbreviated in the picture above
+as \chpn{pr}. In the same way, the stream crossing the exchanger through its
+shell can be connected to the \chpn{shell bottom} node, abbreviated in the
+picture above as \chpn{sb}, and to the \chpn{shell top} node, abbreviated in
+the picture above as \chpn{st}.
+
+\subsubsection{Heat Exchanger BiPhase}
+
+An alternative heat exchanger is useful to indicate thermal energy transfer
+between fluids where one of them, usually the main process stream, partially
+changes phase (but it can also be used in the place of a simple heat exchanger
+without any phase change). It is defined as a simple pic called
+\chpp{heat exchanger biphase}:
+\begin{chpcode}
+ \pic at (0,0) {heat exchanger biphase};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a sketch of the
+path of internal pipes which enter and leave the unit on the right side:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {heat exchanger biphase};
+ \pic at (0,0) {heat exchanger biphase};
+ \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}}
+ \measure[above]{(0,0.7)}{(0.433,0.7)}{\SI{4.33}{\mm}}
+ \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3,0) {heat exchanger biphase};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-shell left) {node mark};
+ \pic at (E-shell bottom) {node mark};
+ \pic at (E-shell right) {node mark};
+ \pic at (E-shell top) {node mark};
+ \pic at (E-pipes bottom) {node mark};
+ \pic at (E-pipes top) {node mark};
+ \node[left] at (E-shell left) {\chpn{sl}};
+ \node[below] at (E-shell bottom) {\chpn{sb}};
+ \node[right] at (E-shell right) {\chpn{sr}};
+ \node[above] at (E-shell top) {\chpn{st}};
+ \node[below right] at (E-pipes bottom) {\chpn{pb}};
+ \node[above right] at (E-pipes top) {\chpn{pt}};
+\end{tikzpicture}
+\end{center}
+where measures on the right and on the top indicate the distances from the
+middle of the heat exchanger to the point where the internal pipes patch
+touches the boundary of the circle. It is also useful to remember that the same
+point can be identified in polar coordinates and lies \ang{30} and \SI{5}{\mm}
+from to centre of the circle.
+
+The \chpp{heat exchanger biphase} has none of the common nodes, but it has some
+special ones. The stream crossing the exchanger through its internal pipes can
+be connected to the \chpn{pipes bottom} node, abbreviated in the picture above
+as \chpn{pb}, and to the \chpn{pipes top} node, abbreviated in the picture above
+as \chpn{pt}. In the same way the stream crossing the exchanger through its
+shell can be connected to four nodes:
+\begin{itemize}
+ \item the \chpn{shell left} node, abbreviated in the picture above as
+ \chpn{sl};
+ \item the \chpn{shell bottom} node, abbreviated in the picture above as
+ \chpn{sb};
+ \item the \chpn{shell right} node, abbreviated in the picture above as
+ \chpn{sr};
+ \item the \chpn{shell top} node, abbreviated in the picture above as
+ \chpn{st}.
+\end{itemize}
+
+\subsubsection{Boiler and Condenser}
+
+The other two heat exchangers defined are the boiler and the condenser. Even
+though the name should be self explicative, the boiler is useful to vaporise a
+liquid, while the condenser is useful to condense a vapour (both totally or
+partially). The boiler is defined as a simple pic called \chpp{boiler}:
+\begin{chpcode}
+ \pic at (0,0) {boiler};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a sketch of the
+path of internal pipes that crosses the circle falling down from the left to
+the right:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.4,0) {boiler};
+ \pic at (0,0) {boiler};
+ \measure{(-0.7,-0.7)}{(0.7,-0.7)}{\SI{14}{\mm}}
+ \measure{(-0.9,0.5)}{(-0.9,-0.5)}{\SI{10}{\mm}}
+ \measure[above]{(-0.7,0.7)}{(-0.5,0.7)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (B) at (3.4,0) {boiler};
+ \pic at (B-anchor) {anchor mark};
+ \pic at (B-left) {node mark};
+ \pic at (B-bottom) {node mark};
+ \pic at (B-right) {node mark};
+ \pic at (B-top) {node mark};
+ \pic at (B-pipes inlet) {node mark};
+ \pic at (B-pipes outlet) {node mark};
+ \node[left] at (B-left) {\chpn{l}};
+ \node[below] at (B-bottom) {\chpn{b}};
+ \node[right] at (B-right) {\chpn{r}};
+ \node[above] at (B-top) {\chpn{t}};
+ \node[left] at (B-pipes inlet) {\chpn{pi}};
+ \node[right] at (B-pipes outlet) {\chpn{po}};
+\end{tikzpicture}
+\end{center}
+while the condenser is defined as a simple pic called \chpp{condenser}:
+\begin{chpcode}
+ \pic at (0,0) {condenser};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a sketch of the
+path of internal pipes that crosses the circle rising up from the left to the
+right:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.4,0) {condenser};
+ \pic at (0,0) {condenser};
+ \measure{(-0.7,-0.7)}{(0.7,-0.7)}{\SI{14}{\mm}}
+ \measure{(-0.9,0.5)}{(-0.9,-0.5)}{\SI{10}{\mm}}
+ \measure[above]{(0.5,0.7)}{(0.7,0.7)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3.4,0) {condenser};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-right) {node mark};
+ \pic at (C-top) {node mark};
+ \pic at (C-pipes inlet) {node mark};
+ \pic at (C-pipes outlet) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[right] at (C-right) {\chpn{r}};
+ \node[above] at (C-top) {\chpn{t}};
+ \node[left] at (C-pipes inlet) {\chpn{pi}};
+ \node[right] at (C-pipes outlet) {\chpn{po}};
+\end{tikzpicture}
+\end{center}
+
+Both the \chpp{boiler} and the \chpp{condenser} have some special nodes. Among
+the common ones, only \chpn{left}, \chpn{bottom}, \chpn{right} and \chpn{top} are
+defined (and here it is not explicitly specified that these nodes belong to the
+shell because of the more generality of the two pics). In addition there are two
+nodes more: a node called \chpn{pipes inlet}, abbreviated in the picture above as
+\chpn{pi}, and a node called \chpn{pipes outlet}, abbreviated in the picture
+above as \chpn{po}.
+
+Boiler and condenser deserve a couple of words more. When looking at schemes
+coming from different sources, especially from different countries,
+understanding which one is the boiler and which one is the condenser is not
+obvious at all. In the \UNICHIM\ regulation the arrows crossing the exchangers
+represent somehow the energy level variations of the utility fluids: for
+example, in a condenser the energy of the auxiliary fluid rises due to the
+enthalpy of condensation released by the vapour. In some books (especially if
+they come from the \ac{USA}) it is not that rare to see the boiler symbol used in
+the place of the condenser one: in this case it should be interpreted as ``the
+vapour is knocked down as a liquid''. This can lead to confusion and
+misunderstandings, hence it is advisable to define preventively and clearly what
+are the meanings of the symbols used.
+
+\subsubsection{Air Heat Exchanger}
+
+Another kind of special heat exchanger defined by \chemplants\ is a simple fan
+that blows on pipes, technically known as air heat exchanger. It is defined as
+a simple pic called \chpp{air heat exchanger}:
+\begin{chpcode}
+ \pic at (0,0) {air heat exchanger};
+\end{chpcode}
+and yields a square, in which centre there is the anchor, with a sketch of the
+fan:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {air heat exchanger};
+ \pic at (0,0) {air heat exchanger};
+ \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3,0) {air heat exchanger};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-left) {node mark};
+ \pic at (E-bottom) {node mark};
+ \pic at (E-right) {node mark};
+ \pic at (E-top) {node mark};
+ \node[left] at (E-left) {\chpn{l}};
+ \node[below] at (E-bottom) {\chpn{b}};
+ \node[right] at (E-right) {\chpn{r}};
+ \node[above] at (E-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+The just introduced \chpp{air heat exchanger} is the last example of ``simple
+symbol'' defined as heat transfer equipments. This concept means that the
+units can be used to generic representation purposes, especially the
+\chpp{heat exchanger} and the \chpp{heat exchanger biphase}.
+
+It is not seldom to find also more complex and realistic representation of
+equipments, in fact also \UNICHIM\ indicates some variants of the simple symbols
+to be used to give a better idea of the unit or to identify a specific equipment
+in a more general family. This should not be a surprise after the many symbols to
+represent fluids handling machines discussed above.
+
+\subsubsection{Tube Bundle Heat Exchanger}
+
+The most widely used heat transfer equipment in the chemical industry is for
+sure the tube bundle heat exchanger, made up of a bundle of pipes enclosed into
+a shell. It is defined as a simple pic called \chpp{tube bundle heat exchanger}:
+\begin{chpcode}
+ \pic at (0,0) {tube bundle heat exchanger};
+\end{chpcode}
+and yields a horizontal rectangle, in which centre there is the anchor, with a
+rounded end and a sketch of the internal pipes:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {tube bundle heat exchanger};
+% \pic at (0,0) {tube bundle heat exchanger};
+% \measure{(-1.0,-0.5)}{(1.0,-0.5)}{\SI{20}{\mm}}
+% \measure{(-1.2,0.35)}{(-1.2,-0.35)}{\SI{7}{\mm}}
+% \measure[above]{(-0.8,0.5)}{(0,0.5)}{\SI{8}{\mm}}
+% \measure[above]{(0,0.5)}{(0.5,0.5)}{\SI{5}{\mm}}
+% \measure[above]{(1.2,0.3)}{(1.2,-0.3)}{\SI{6}{\mm}}
+% \pic at (0,0) {anchor mark};
+% \pic (E) at (3.6,0) {tube bundle heat exchanger};
+% \pic at (E-anchor) {anchor mark};
+% \pic at (E-right) {node mark};
+% \pic at (E-head left) {node mark};
+% \pic at (E-head bottom) {node mark};
+% \pic at (E-head top) {node mark};
+% \pic at (E-shell bottom left) {node mark};
+% \pic at (E-shell bottom) {node mark};
+% \pic at (E-shell bottom right) {node mark};
+% \pic at (E-shell top right) {node mark};
+% \pic at (E-shell top) {node mark};
+% \pic at (E-shell top left) {node mark};
+% \node[right] at (E-right) {\chpn{r}};
+% \node[left] at (E-head left) {\chpn{hl}};
+% \node[below left] at (E-head bottom) {\chpn{hb}};
+% \node[above left] at (E-head top) {\chpn{ht}};
+% \node[below] at (E-shell bottom left) {\chpn{sbl}};
+% \node[below] at (E-shell bottom) {\chpn{sb}};
+% \node[below] at (E-shell bottom right) {\chpn{sbr}};
+% \node[above] at (E-shell top right) {\chpn{str}};
+% \node[above] at (E-shell top) {\chpn{st}};
+% \node[above] at (E-shell top left) {\chpn{stl}};
+\end{tikzpicture}
+\end{center}
+
+Only the pure symbol has been shown because, just like for the already
+discussed \chpp{multistage compressor}, there are a lot of measures and
+custom nodes to show:
+\begin{center}
+\begin{tikzpicture}
+ \pic[scale=2] (E) at (0,0) {tube bundle heat exchanger};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-left) {node mark};
+ \pic at (E-right) {node mark};
+ \pic at (E-head bottom) {node mark};
+ \pic at (E-head top) {node mark};
+ \pic at (E-shell bottom left) {node mark};
+ \pic at (E-shell bottom) {node mark};
+ \pic at (E-shell bottom right) {node mark};
+ \pic at (E-shell top right) {node mark};
+ \pic at (E-shell top) {node mark};
+ \pic at (E-shell top left) {node mark};
+ \node[left] at (E-left) {\chpn{l}};
+ \node[right] at (E-right) {\chpn{r}};
+ \node[below] at (E-head bottom) {\chpn{hb}};
+ \node[above] at (E-head top) {\chpn{ht}};
+ \node[below] at (E-shell bottom left) {\chpn{sbl}};
+ \node[below] at (E-shell bottom) {\chpn{sb}};
+ \node[below] at (E-shell bottom right) {\chpn{sbr}};
+ \node[above] at (E-shell top right) {\chpn{str}};
+ \node[above] at (E-shell top) {\chpn{st}};
+ \node[above] at (E-shell top left) {\chpn{stl}};
+ \measure{(-2.0,-1.3)}{(2.0,-1.3)}{\SI{20}{\mm}}
+ \measure{(-2.7,0.7)}{(-2.7,-0.7)}{\SI{7}{\mm}}
+ \measure[above]{(-1.6,1.3)}{(0,1.3)}{\SI{8}{\mm}}
+ \measure[above]{(0,1.3)}{(1.0,1.3)}{\SI{5}{\mm}}
+ \measure[above]{(2.7,0.6)}{(2.7,-0.6)}{\SI{6}{\mm}}
+\end{tikzpicture}
+\end{center}
+Again, the symbol is bigger, but measures are referred to the one with the
+right dimensions. Measures should be clear. The only remark regards measures on
+the sides of the unit: the left one indicates the total height, while the right
+one ignores the little protrusions of the vertical lines.
+
+Only the \chpn{left} and \chpn{right} nodes are defined among the common ones.
+The others are aimed to identify some remarkable points of the two main sections
+of the \chpp{tube bundle heat exchanger}: the head of the tube bundle and the
+shell that encloses it. Two nodes are defined for the head: the
+\chpn{head bottom} node, shown above as \chpn{hb}, and the \chpn{head top} node,
+shown above as \chpn{ht}. The fluid that passes through the internal pipes have
+to be connected using these nodes. Six more nodes are defined for the shell:
+\begin{itemize}
+ \item the \chpn{shell bottom left} node is abbreviated in the drawing as
+ \chpn{sbl};
+ \item the \chpn{shell bottom} node is abbreviated in the drawing as
+ \chpn{sb};
+ \item the \chpn{shell bottom right} node is abbreviated in the drawing as
+ \chpn{sbr};
+ \item the \chpn{shell top right} node is abbreviated in the drawing as
+ \chpn{str};
+ \item the \chpn{shell top} node is abbreviated in the drawing as
+ \chpn{st};
+ \item the \chpn{shell top left} node is abbreviated in the drawing as
+ \chpn{stl}.
+\end{itemize}
+So many nodes are defined for the shell to allow the representation to be as
+flexible as possibile, in fact flow configuration can have a great impact on
+the heat exchanger performances and it is often useful to represent it also
+graphically.
+
+\subsubsection{Plate Heat Exchanger}
+
+The tube bundle heat exchanger is the most widely used, but it is not the only
+one. Another equipment useful to transfer thermal energy is the plate heat
+exchanger. It is defined as a simple pic called \chpp{plate heat exchanger}:
+\begin{chpcode}
+ \pic at (0,0) {plate heat exchanger};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a sketch of
+the plates pushed together:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {plate heat exchanger};
+ \pic at (0,0) {plate heat exchanger};
+ \measure{(-0.5,-0.95)}{(0.5,-0.95)}{\SI{10}{\mm}}
+ \measure{(-1.2,0.75)}{(-1.2,-0.75)}{\SI{15}{\mm}}
+ \measure{(-0.7,0.7)}{(-0.7,-0.7)}{\SI{14}{\mm}}
+ \measure[above]{(0.7,0.6)}{(0.7,0)}{\SI{6}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3,0) {plate heat exchanger};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-left) {node mark};
+ \pic at (E-bottom) {node mark};
+ \pic at (E-right) {node mark};
+ \pic at (E-inner left) {node mark};
+ \pic at (E-inner right) {node mark};
+ \pic at (E-outer left) {node mark};
+ \pic at (E-outer right) {node mark};
+ \pic at (E-top) {node mark};
+ \node[left] at (E-left) {\chpn{l}};
+ \node[below] at (E-bottom) {\chpn{b}};
+ \node[right] at (E-right) {\chpn{r}};
+ \node[above] at (E-top) {\chpn{t}};
+ \node[left] at (E-inner left) {\chpn{il}};
+ \node[right] at (E-inner right) {\chpn{ir}};
+ \node[left] at (E-outer left) {\chpn{ol}};
+ \node[right] at (E-outer right) {\chpn{or}};
+\end{tikzpicture}
+\end{center}
+where the measure on the inner left indicates the height of the rectangle without
+the small protruding vertical lines, while the measure on the right indicates the
+distance from the centre of the rectangle to the end of the oblique line.
+
+Some special nodes are defined for the \chpp{plates heat exchanger}. The
+construction of the machine does not imply the existence of two well defined
+chambers, but the two fluids travel into alternate plates. Anyway, an oblique
+line is sketched on the unit to identify one of the paths, which ends fall on
+\chpn{inner left} and \chpn{inner right} nodes, abbreviated above as \chpn{il}
+and \chpn{ir} respectively. The other fluid can be connected to the
+\chpn{outer left} node, abbreviated above as \chpn{ol}, and to the
+\chpn{outer right} node, abbreviated above as \chpn{or}. The remaining nodes
+should not be used for streams connections.
+
+\subsubsection{Spiral Heat Exchanger}
+
+Another common heat exchanger, somehow the ``wrapped version'' of the plate
+heat exchanger, is the spiral heat exchanger. It is defined as a simple pic
+called \chpp{spiral heat exchanger}:
+\begin{chpcode}
+ \pic at (0,0) {spiral heat exchanger};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a sketch of
+the spiral path:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.4,0) {spiral heat exchanger};
+ \pic at (0,0) {spiral heat exchanger};
+ \measure{(-0.7,-0.9)}{(0.7,-0.9)}{\SI{14}{\mm}}
+ \measure{(-0.9,0.7)}{(-0.9,-0.7)}{\SI{14}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3.4,0) {spiral heat exchanger};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-inner center) {node mark};
+ \pic at (E-inner edge) {node mark};
+ \pic at (E-outer center) {node mark};
+ \pic at (E-outer edge) {node mark};
+ \node[left] at (E-inner center) {\chpn{ic}};
+ \node[right] at (E-inner edge) {\chpn{ie}};
+ \node[above] at (E-outer center) {\chpn{oc}};
+ \node[below] at (E-outer edge) {\chpn{oe}};
+\end{tikzpicture}
+\end{center}
+
+The \chpp{spiral heat exchanger} has none of the common nodes, but it has some
+special ones. Also in this case it is not possibile to individuate an internal
+and an external chamber, but this time the paths of the fluids are continuous and
+one is effectively internal to the other. Usually, one of the end of the
+path is placed on the centre of the cross section of the unit, while the other
+one is on its boundary: this justifies the names of the nodes. The
+\chpn{inner center} node is abbreviated above as \chpn{ic}, while the
+\chpn{inner edge} node is abbreviated above as \chpn{ie}; these two nodes should
+be used to connect the inner fluid. In the same way, but for the outer fluid,
+the \chpn{outer center} node is abbreviated above as \chpn{oc}, while the
+\chpn{outer edge} node is abbreviated above as \chpn{oe}.
+
+\subsubsection{Pipe Furnace}
+
+The last heat transfer equipment defined by \chemplants\ (at least in this
+section of the manual) is not properly a heat exchanger, but it is a furnace.
+It is defined as a simple pic called \chpp{pipe furnace}:
+\begin{chpcode}
+ \pic at (0,0) {pipe furnace};
+\end{chpcode}
+and yields a rectangle, in which centre there is the anchor, with a sketch of
+the path of the internal pipes crossing the symbol in horizontal and a
+representation of the furnace chimneystack:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4.0,0) {pipe furnace};
+ \pic at (0,0) {pipe furnace};
+ \measure{(-1.0,-0.7)}{(1.0,-0.7)}{\SI{20}{\mm}}
+ \measure{(-1.2,1.5)}{(-1.2,-0.5)}{\SI{20}{\mm}}
+ \measure[above]{(-0.2,1.7)}{(0.2,1.7)}{\SI{4}{\mm}}
+ \measure[above]{(1.2,1.5)}{(1.2,0)}{\SI{15}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (4.0,0) {pipe furnace};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-bottom) {node mark};
+ \pic at (E-top) {node mark};
+ \pic at (E-pipes left) {node mark};
+ \pic at (E-pipes right) {node mark};
+ \node[below] at (E-bottom) {\chpn{b}};
+ \node[above] at (E-top) {\chpn{t}};
+ \node[left] at (E-pipes left) {\chpn{pl}};
+ \node[right] at (E-pipes right) {\chpn{pr}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the anchor point to
+the top of the chimneystack.
+
+The \chpp{pipe furnace} has some special nodes. Among the common ones, only
+\chpn{bottom} and \chpn{top} are defined and they may be useful to represent
+fuel inlet and stack gases outlet. In addition, there are two nodes more: a node
+called \chpn{pipes left}, abbreviated in the picture above as \chpn{pl}, and a
+node called \chpn{pipes right}, abbreviated in the picture above as \chpn{pr}.
+
+\subsection{Separators}
+
+Separation unit operations are some of the most important operations in chemical
+engineering. Besides the separation of homogenous mixtures, that is usually done
+in ``simple'' equipments which will be introduced in the following, the
+separation of heterogeneous mixtures is practically much more simple and some
+specific equipments based on mechanical principles exist. Also more complex
+separation units will be introduced after the mechanical ones, mainly the ones
+based on thermal energy supply or removal and aimed to separate special kinds of
+homogenous mixtures. (Notice that the terms gas and vapour will be used
+indiscriminately, although not properly correct.)
+
+\subsubsection{Steam Trap}
+
+When the condensation of steam or of some other vapours is involved, it is always
+necessary to withdraw a liquid from somewhere. To avoid the steam to escape from
+the liquid outlet, a stream trap can be profitably used. It is defined as a
+simple pic called \chpp{steam trap}:
+\begin{chpcode}
+ \pic at (0,0) {steam trap};
+\end{chpcode}
+and yields a little half field circle anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.3,0) {steam trap};
+ \pic at (0,0) {steam trap};
+ \measure{(-0.15,-0.35)}{(0.15,-0.35)}{\SI{3}{\mm}}
+ \measure{(-0.35,0.15)}{(-0.35,-0.15)}{\SI{3}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (2.3,0) {steam trap};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-left) {node mark};
+ \pic at (S-bottom) {node mark};
+ \pic at (S-right) {node mark};
+ \pic at (S-top) {node mark};
+ \node[left] at (S-left) {\chpn{l}};
+ \node[below] at (S-bottom) {\chpn{b}};
+ \node[right] at (S-right) {\chpn{r}};
+ \node[above] at (S-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+In the default orientation, which is the one commonly used in process diagrams
+and should not be changed, the inlet of the steam trap have to touch the empty
+half of the circle, while the outlet have to come out from the filled half.
+
+\subsubsection{Gas-Liquid Separator}
+
+When more sophisticated separations of gases and liquids mixtures are needed
+another unit is useful: the gas-liquid separator. It is defined as a simple pic
+called \chpp{gas-liquid separator}:
+\begin{chpcode}
+ \pic at (0,0) {gas-liquid separator};
+\end{chpcode}
+and yields a tank, in which centre there is the anchor, with a sketch of the
+anti-entrainment system on its top:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {gas-liquid separator};
+ \pic at (0,0) {gas-liquid separator};
+ \measure{(-0.8,-1.7)}{(0.8,-1.7)}{\SI{16}{\mm}}
+ \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(1.0,1.032)}{(1.0,0)}{\SI{10.32}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (3.6,0) {gas-liquid separator};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-bottom left) {node mark};
+ \pic at (S-bottom right) {node mark};
+ \pic at (S-top right) {node mark};
+ \pic at (S-top left) {node mark};
+ \pic at (S-inlet left) {node mark};
+ \pic at (S-inlet right) {node mark};
+ \pic at (S-gas outlet) {node mark};
+ \pic at (S-liquid outlet) {node mark};
+ \node[left] at (S-bottom left) {\chpn{bl}};
+ \node[right] at (S-bottom right) {\chpn{br}};
+ \node[right] at (S-top right) {\chpn{tr}};
+ \node[left] at (S-top left) {\chpn{tl}};
+ \node[left] at (S-inlet left) {\chpn{il}};
+ \node[right] at (S-inlet right) {\chpn{ir}};
+ \node[above] at (S-gas outlet) {\chpn{go}};
+ \node[below] at (S-liquid outlet) {\chpn{lo}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the tank
+to the point where the curvature begins.
+
+Besides the common nodes, special nodes are defined for stream connections. In
+the above drawing, \chpn{il} and \chpn{ir} indicate respectively the
+\chpn{inlet left} node and the \chpn{inlet right} node, which should be used
+to connect the inlet stream. On the top of the unit there is the
+\chpn{gas outlet} node, abbreviated as \chpn{go} in the figure, while on its
+bottom there is the \chpn{liquid outlet} node, abbreviated as \chpn{lo} in the
+figure. Names should be self-explicative.
+
+\subsubsection{Cyclone}
+
+A cyclone is a unit useful to separate solid powders entrained by a gas stream.
+It is defined as a simple pic called \chpp{cyclone}:
+\begin{chpcode}
+ \pic at (0,0) {cyclone};
+\end{chpcode}
+and yields a little rectangle, on which base there is the anchor, attached to a
+triangular funnel:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.6,0) {cyclone};
+ \pic at (0,0) {cyclone};
+ \measure{(-0.3,-1.2)}{(0.3,-1.2)}{\SI{6}{\mm}}
+ \measure{(-0.5,0.25)}{(-0.5,-1.0)}{\SI{12.5}{\mm}}
+ \measure[above]{(0.5,0.25)}{(0.5,0)}{\SI{2.5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (2.6,0) {cyclone};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-inlet left) {node mark};
+ \pic at (S-inlet right) {node mark};
+ \pic at (S-gas outlet) {node mark};
+ \pic at (S-solid outlet) {node mark};
+ \node[left] at (S-inlet left) {\chpn{il}};
+ \node[right] at (S-inlet right) {\chpn{ir}};
+ \node[above] at (S-gas outlet) {\chpn{go}};
+ \node[below] at (S-solid outlet) {\chpn{so}};
+\end{tikzpicture}
+\end{center}
+
+None of the common nodes are defined for the \chpn{cyclone}, but there are
+special nodes to be used to connect specific streams. In the above drawing,
+\chpn{il} and \chpn{ir} indicate respectively the \chpn{inlet left} node and the
+\chpn{inlet right} node, which should be used to connect the inlet stream. On
+the top of the unit there is the \chpn{gas outlet} node, abbreviated as
+\chpn{go} in the figure, while on its bottom there is the \chpn{solid outlet}
+node, abbreviated as \chpn{so} in the figure. Names should be self-explicative.
+
+\subsubsection{Stratifier}
+
+A common operation to be carried out in chemical processes is the separation of
+two immiscible liquids. If they have different densities, time and gravity will
+do the job, so a stratifier can be used. It is defined as a simple pic called
+\chpp{stratifier}:
+\begin{chpcode}
+ \pic at (0,0) {stratifier};
+\end{chpcode}
+and yields a horizontal tank, in which centre there is the anchor, with a sketch
+of the internal baffles:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {stratifier};
+ \pic at (0,0) {stratifier};
+ \measure{(-1.5,-1.0)}{(1.5,-1.0)}{\SI{30}{\mm}}
+ \measure{(-1.7,0.8)}{(-1.7,-0.8)}{\SI{16}{\mm}}
+ \measure[above]{(0,1.0)}{(1.032,1.0)}{\SI{10.32}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (5,0) {stratifier};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-left) {node mark};
+ \pic at (S-bottom) {node mark};
+ \pic at (S-right) {node mark};
+ \pic at (S-top right) {node mark};
+ \pic at (S-top left) {node mark};
+ \pic at (S-inlet) {node mark};
+ \pic at (S-light outlet) {node mark};
+ \pic at (S-heavy outlet) {node mark};
+ \node[left] at (S-left) {\chpn{l}};
+ \node[below] at (S-bottom) {\chpn{b}};
+ \node[right] at (S-right) {\chpn{r}};
+ \node[above] at (S-top right) {\chpn{tr}};
+ \node[above] at (S-top left) {\chpn{tl}};
+ \node[above] at (S-inlet) {\chpn{i}};
+ \node[below] at (S-light outlet) {\chpn{lo}};
+ \node[below] at (S-heavy outlet) {\chpn{ho}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top indicates the distance from the middle of the tank
+to the point where the curvature begins.
+
+Besides the common nodes, special nodes are defined for stream connections. The
+inlet stream should enter from the \chpn{inlet} node, marked as \chpn{i} in the
+figure, and, after the stratification, the light liquid comes out from the
+\chpn{light outlet} node, marked as \chpn{lo} in the figure, while the heavy
+liquid comes out from the \chpn{heavy outlet} node, marked as \chpn{ho} in the
+figure.
+
+\subsubsection{Settler}
+
+Previously, the cyclone have been introduced. A unit with the same purposes, but
+useful when a solid suspended into a liquid has to be separated, is the settler.
+It is defined as a simple pic called \chpp{settler}:
+\begin{chpcode}
+ \pic at (0,0) {settler};
+\end{chpcode}
+and yields a horizontal rectangle, in which centre there is the anchor, with a
+triangular funnel end:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {settler};
+ \pic at (0,0) {settler};
+ \measure{(-1.5,-1.0)}{(1.5,-1.0)}{\SI{30}{\mm}}
+ \measure{(-1.7,0.8)}{(-1.7,-0.8)}{\SI{16}{\mm}}
+ \measure[above]{(1.7,0)}{(1.7,-0.2)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (5,0) {settler};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-inlet left) {node mark};
+ \pic at (S-inlet right) {node mark};
+ \pic at (S-inlet top) {node mark};
+ \pic at (S-liquid outlet left) {node mark};
+ \pic at (S-liquid outlet right) {node mark};
+ \pic at (S-solid outlet) {node mark};
+ \node[left] at (S-inlet left) {\chpn{il}};
+ \node[right] at (S-inlet right) {\chpn{ir}};
+ \node[above] at (S-inlet top) {\chpn{it}};
+ \node[left] at (S-liquid outlet left) {\chpn{lol}};
+ \node[right] at (S-liquid outlet right) {\chpn{lor}};
+ \node[below] at (S-solid outlet) {\chpn{so}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the unit
+to the point where the funnel begins.
+
+None of the common nodes are defined for the \chpp{settler}, but there are
+special nodes to be used to connect specific streams. In the above drawing,
+\chpn{il}, \chpn{ir} and \chpn{it} indicate respectively the
+\chpn{inlet left} node, the \chpn{inlet right} node and the \chpn{inlet top}
+node, which should be used to connect the inlet stream. On the top left of
+the unit there is the \chpn{liquid outlet left} node, abbreviated as \chpn{lol}
+in the figure, while on the top right of the unit there is the
+\chpn{liquid outlet right} node, abbreviated as \chpn{lor} in the figure.
+Finally, on the bottom of the unit there is the \chpn{solid outlet} node,
+abbreviated as \chpn{so} in the figure. Three inlets are defined to give
+flexibility to the representation, in fact the same symbol can be used to
+indicate circular settling basins as well as rectangular settling basins.
+
+\subsubsection{Scrubber}
+
+Another case in which the separation of a ``gas-liquid'' mixture is needed is
+the one where a condensable vapour must be knocked out from a gas stream by
+condensation, or when liquid droplets are entrained by a gas stream. There are a
+lot of possibilities to achieve this operation, but in some particular cases a
+simple wash of the gas using water (or some appropriate solvent) will be
+enough, thus a scrubber can be used. It is defined as a simple pic called
+\chpp{scrubber}:
+\begin{chpcode}
+ \pic at (0,0) {scrubber};
+\end{chpcode}
+and yields a little tank, in which centre there is the anchor, with a triangular
+funnel end:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.6,0) {scrubber};
+ \pic at (0,0) {scrubber};
+ \measure{(-0.3,-0.95)}{(0.3,-0.95)}{\SI{6}{\mm}}
+ \measure{(-0.5,0.75)}{(-0.5,-0.75)}{\SI{15}{\mm}}
+ \measure[above]{(0.5,0.55)}{(0.5,0)}{\SI{5.5}{\mm}}
+ \measure[above]{(1.0,0)}{(1.0,-0.25)}{\SI{2.5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (2.6,0) {scrubber};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-gas inlet left) {node mark};
+ \pic at (S-gas inlet right) {node mark};
+ \pic at (S-liquid inlet left) {node mark};
+ \pic at (S-liquid inlet right) {node mark};
+ \pic at (S-gas outlet) {node mark};
+ \pic at (S-liquid outlet) {node mark};
+ \node[left] at (S-gas inlet left) {\chpn{gil}};
+ \node[right] at (S-gas inlet right) {\chpn{gir}};
+ \node[left] at (S-liquid inlet left) {\chpn{lil}};
+ \node[right] at (S-liquid inlet right) {\chpn{lir}};
+ \node[above] at (S-gas outlet) {\chpn{go}};
+ \node[below] at (S-liquid outlet) {\chpn{lo}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top right indicates the distance from the middle of the
+tank to the point where the curvature begins, while the measure on the bottom
+right indicates the distance from the middle of the tank to the point where the
+funnel begins.
+
+None of the common nodes are defined for the \chpp{scrubber}, but there are
+special nodes to be used to connect specific streams. In the above drawing,
+\chpn{gil} and \chpn{gir} indicate respectively the \chpn{gas inlet left} node
+and the \chpn{gas inlet right} node, which should be used to connect the inlet
+gas stream. In the same way \chpn{lil} and \chpn{lir} indicate respectively the
+\chpn{liquid inlet left} node and the \chpn{liquid inlet right} node, which
+should be used to connect the inlet liquid stream. On the top of the unit there
+is the \chpn{gas outlet} node, abbreviated as \chpn{go} in the figure, while on
+its bottom there is the \chpn{liquid outlet} node, abbreviated as \chpn{lo} in
+the figure. Names should be self-explicative.
+
+As a final remark, it should be noticed that the \chpp{scrubber} can be used
+also to represent a barometric condenser: it is sufficient to place it high
+enough above the ground reference and to draw a long vertical stream coming
+out from the \chpn{liquid outlet} to indicate the drain pipe.
+
+\subsubsection{Kettle Boiler}
+
+The scrubber is the first example of separation unit based on thermal energy
+exchange. In that case, the transfer is achieved by direct contact of the inlet
+gas stream using a liquid, but it is more common to use non-contact systems in
+which a pure energy transfer is achieved. One of the simplest, this time
+useful to concentrate a solution of a non-volatile solute (or to simply
+partially boil a liquid), is the kettle boiler. It is defined as a simple pic
+called \chpp{kettle boiler}:
+\begin{chpcode}
+ \pic at (0,0) {kettle boiler};
+\end{chpcode}
+and yields a strage symbol which recalls a tube bundle heath exchanger with an
+enlarged room for the vapour:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {kettle boiler};
+% \pic at (0,0) {kettle boiler};
+% \measure{(-1.0,-0.5)}{(1.0,-0.5)}{\SI{20}{\mm}}
+% \measure{(-1.2,0.7)}{(-1.2,-0.3)}{\SI{10}{\mm}}
+% \pic at (0,0) {anchor mark};
+% \pic (E) at (3.6,0) {kettle boiler};
+% \pic at (E-anchor) {anchor mark};
+% \pic at (E-right) {node mark};
+% \pic at (E-inlet) {node mark};
+% \pic at (E-gas outlet) {node mark};
+% \pic at (E-liquid outlet) {node mark};
+% \pic at (E-head left) {node mark};
+% \pic at (E-head bottom) {node mark};
+% \pic at (E-head top) {node mark};
+% \node[right] at (E-right) {\chpn{r}};
+% \node[below] at (E-inlet) {\chpn{i}};
+% \node[above] at (E-gas outlet) {\chpn{go}};
+% \node[below] at (E-liquid outlet) {\chpn{lo}};
+% \node[left] at (E-head left) {\chpn{hl}};
+% \node[below] at (E-head bottom) {\chpn{hb}};
+% \node[above] at (E-head top) {\chpn{ht}};
+\end{tikzpicture}
+\end{center}
+
+Only the pure symbol has been shown because, just like for the already
+discussed \chpp{tube bundle heat exchanger}, there are a lot of measures and
+custom nodes to show:
+\begin{center}
+\begin{tikzpicture}
+ \pic[scale=2] (E) at (0,0) {kettle boiler};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-left) {node mark};
+ \pic at (E-right) {node mark};
+ \pic at (E-inlet) {node mark};
+ \pic at (E-gas outlet) {node mark};
+ \pic at (E-liquid outlet) {node mark};
+ \pic at (E-head bottom) {node mark};
+ \pic at (E-head top) {node mark};
+ \node[left] at (E-left) {\chpn{l}};
+ \node[right] at (E-right) {\chpn{r}};
+ \node[below] at (E-inlet) {\chpn{i}};
+ \node[above] at (E-gas outlet) {\chpn{go}};
+ \node[below] at (E-liquid outlet) {\chpn{lo}};
+ \node[below] at (E-head bottom) {\chpn{hb}};
+ \node[above] at (E-head top) {\chpn{ht}};
+ \measure{(-2.0,-1.8)}{(2.0,-1.8)}{\SI{20}{\mm}}
+ \measure{(-1.6,-1.3)}{(0,-1.3)}{\SI{8}{\mm}}
+ \measure{(0,-1.3)}{(1.4,-1.3)}{\SI{7}{\mm}}
+ \measure{(-3.2,1.4)}{(-3.2,-0.6)}{\SI{10}{\mm}}
+ \measure{(-2.7,0.6)}{(-2.7,-0.6)}{\SI{6}{\mm}}
+ \measure[above]{(-0,2.1)}{(0.4,2.1)}{\SI{2}{\mm}}
+ \measure[above]{(2.7,0.4)}{(2.7,0)}{\SI{2}{\mm}}
+ \measure[above]{(3.2,0)}{(3.2,-0.6)}{\SI{3}{\mm}}
+ \measure[above]{(3.2,1.4)}{(3.2,0)}{\SI{7}{\mm}}
+\end{tikzpicture}
+\end{center}
+Again, the symbol is bigger, but measures are referred to the one with the
+right dimensions.
+
+Only the \chpn{left} and \chpn{right} nodes are defined among the common ones.
+The others are aimed to identify some remarkable points of the two main sections
+of the \chpp{kettle boiler}: the head of the tube bundle and the shell of the
+boiling chamber. Two nodes are defined for the head: the \chpn{head bottom}
+node, shown above as \chpn{hb}, and the \chpn{head top} node, shown above as
+\chpn{ht}. Here the heating fluid has to be connected. Three more nodes are
+defined for the boiling chamber: the \chpn{inlet}, shown above as \chpn{i}, the
+\chpn{gas outlet}, shown above as \chpn{go}, and the \chpn{liquid outlet}, shown
+above as \chpn{lo}. Their usage should be clear.
+
+The kettle boiler is the simplest machine belonging to the family of
+evaporators. These units, like the name says, are meant to vaporise a liquid, so
+they are a special kind of heat exchangers. Anyway, they are described together
+with the separators because they are mainly used to concentrate solutions of
+non-volatile or poorly-volatile solutes, hence ``separating'' a part of the
+solvent from the solution.
+
+\subsubsection{Tube Bundle Evaporator}
+
+A slightly more complex evaporator, which indeed works in the same way of a
+kettle boiler, is the tube bundle evaporator. It is defined as a simple pic
+called \chpp{tube bundle evaporator}:
+\begin{chpcode}
+ \pic at (0,0) {tube bundle evaporator};
+\end{chpcode}
+and yields a tank, in which centre there is the anchor, with sketches of the tube
+bundle and of the anti-entrainment system on its top:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {tube bundle evaporator};
+ \pic at (0,0) {tube bundle evaporator};
+ \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}}
+ \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}}
+ \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}}
+ \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (E) at (3.6,0) {tube bundle evaporator};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-bottom left) {node mark};
+ \pic at (E-bottom right) {node mark};
+ \pic at (E-top right) {node mark};
+ \pic at (E-top left) {node mark};
+ \pic at (E-inlet left) {node mark};
+ \pic at (E-inlet right) {node mark};
+ \pic at (E-gas outlet) {node mark};
+ \pic at (E-liquid outlet) {node mark};
+ \pic at (E-pipes left) {node mark};
+ \pic at (E-pipes right) {node mark};
+ \node[left] at (E-bottom left) {\chpn{bl}};
+ \node[right] at (E-bottom right) {\chpn{br}};
+ \node[right] at (E-top right) {\chpn{tr}};
+ \node[left] at (E-top left) {\chpn{tl}};
+ \node[left] at (E-inlet left) {\chpn{il}};
+ \node[right] at (E-inlet right) {\chpn{ir}};
+ \node[above] at (E-gas outlet) {\chpn{go}};
+ \node[below] at (E-liquid outlet) {\chpn{lo}};
+ \node[left] at (E-pipes left) {\chpn{pl}};
+ \node[right] at (E-pipes right) {\chpn{pr}};
+\end{tikzpicture}
+\end{center}
+where the measure on bottom indicates the total width of the unit, the measure on
+top indicates the width of the tank, the measure on the right indicates the
+distance from the middle of the tank to the point where the curvature begins and
+the measure on bottom right refers to the distance from the anchor point to the
+middle of the pipe bundle.
+
+Some of the special nodes defined should be clear at this point, at least
+\chpn{inlet left}, \chpn{inlet right}, \chpn{gas outlet} and
+\chpn{liquid outlet}. Two more special nodes are defined for this pic:
+\chpn{pipes left}, abbreviated above as \chpn{pl}, and \chpn{pipes right},
+abbreviated above as \chpn{pr}.
+
+\subsubsection{Basket Evaporator and Climbing Film Evaporator}
+
+A different evaporator is the one that uses the basket system. In this case the
+heating fluid passes through the shell of the tube bundle, while in the former
+one it passes through the pipes. It is defined as a simple pic called
+\chpp{basket evaporator}:
+\begin{chpcode}
+ \pic at (0,0) {basket evaporator};
+\end{chpcode}
+and yields a tank, in which centre there is the anchor, with sketches of the
+tube bundle and of the anti-entrainment system on its top:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {basket evaporator};
+% \pic at (0,0) {basket evaporator};
+% \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}}
+% \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}}
+% \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}}
+% \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}}
+% \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}}
+% \pic at (0,0) {anchor mark};
+% \pic (E) at (3.6,0) {basket evaporator};
+% \pic at (E-anchor) {anchor mark};
+% \pic at (E-bottom left) {node mark};
+% \pic at (E-bottom right) {node mark};
+% \pic at (E-top right) {node mark};
+% \pic at (E-top left) {node mark};
+% \pic at (E-inlet left) {node mark};
+% \pic at (E-inlet right) {node mark};
+% \pic at (E-gas outlet) {node mark};
+% \pic at (E-liquid outlet) {node mark};
+% \pic at (E-shell top left) {node mark};
+% \pic at (E-shell left) {node mark};
+% \pic at (E-shell bottom left) {node mark};
+% \pic at (E-shell right) {node mark};
+% \pic at (E-shell bottom right) {node mark};
+% \pic at (E-shell top right) {node mark};
+% \node[left] at (E-bottom left) {\chpn{bl}};
+% \node[right] at (E-bottom right) {\chpn{br}};
+% \node[right] at (E-top right) {\chpn{tr}};
+% \node[left] at (E-top left) {\chpn{tl}};
+% \node[above left] at (E-inlet left) {\chpn{il}};
+% \node[above right] at (E-inlet right) {\chpn{ir}};
+% \node[above] at (E-gas outlet) {\chpn{go}};
+% \node[below] at (E-liquid outlet) {\chpn{lo}};
+% \node[left] at (E-shell top left) {\chpn{stl}};
+% \node[left] at (E-shell left) {\chpn{sl}};
+% \node[left] at (E-shell bottom left) {\chpn{sbl}};
+% \node[right] at (E-shell bottom right) {\chpn{sbr}};
+% \node[right] at (E-shell right) {\chpn{sr}};
+% \node[right] at (E-shell top right) {\chpn{str}};
+\end{tikzpicture}
+\end{center}
+
+The \chpp{basket evaporator} has a pretty complex nodes structure, so it will be
+described later on, together with a unit that is defined more or less with the
+same nodes: the climbing film evaporator. It is defined as a simple pic called
+\chpp{climbing film evaporator}:
+\begin{chpcode}
+ \pic at (0,0) {climbing film evaporator};
+\end{chpcode}
+and yields a strange shape, , in which centre there is the anchor, with sketches
+of the tube bundle, of the anti-entrainment system on its top and of the internal
+liquid recirculation path:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {climbing film evaporator};
+% \pic at (0,0) {climbing film evaporator};
+% \measure{(-0.4,-1.7)}{(0.4,-1.7)}{\SI{8}{\mm}}
+% \measure{(-1.8,1.5)}{(-1.8,-1.5)}{\SI{30}{\mm}}
+% \measure{(-1.3,0.6)}{(-1.3,0)}{\SI{6}{\mm}}
+% \measure{(-0.8,0.2)}{(-0.8,0)}{\SI{2}{\mm}}
+% \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}}
+% \measure[above]{(1.1,0)}{(1.1,-1.1)}{\SI{11}{\mm}}
+% \measure[above]{(0.6,0)}{(0.6,-0.45)}{\SI{4.5}{\mm}}
+% \pic at (0,0) {anchor mark};
+% \pic (E) at (3.6,0) {climbing film evaporator};
+% \pic at (E-anchor) {anchor mark};
+% \pic at (E-top right) {node mark};
+% \pic at (E-top left) {node mark};
+% \pic at (E-inlet left) {node mark};
+% \pic at (E-inlet right) {node mark};
+% \pic at (E-gas outlet) {node mark};
+% \pic at (E-liquid outlet) {node mark};
+% \pic at (E-shell top left) {node mark};
+% \pic at (E-shell left) {node mark};
+% \pic at (E-shell bottom left) {node mark};
+% \pic at (E-shell right) {node mark};
+% \pic at (E-shell bottom right) {node mark};
+% \pic at (E-shell top right) {node mark};
+% \node[right] at (E-top right) {\chpn{tr}};
+% \node[left] at (E-top left) {\chpn{tl}};
+% \node[left] at (E-inlet left) {\chpn{il}};
+% \node[right] at (E-inlet right) {\chpn{ir}};
+% \node[above] at (E-gas outlet) {\chpn{go}};
+% \node[below] at (E-liquid outlet) {\chpn{lo}};
+% \node[left=1mm] at (E-shell top left) {\chpn{stl}};
+% \node[left=1mm] at (E-shell left) {\chpn{sl}};
+% \node[left=1mm] at (E-shell bottom left) {\chpn{sbl}};
+% \node[right] at (E-shell bottom right) {\chpn{sbr}};
+% \node[right] at (E-shell right) {\chpn{sr}};
+% \node[right] at (E-shell top right) {\chpn{str}};
+\end{tikzpicture}
+\end{center}
+
+In order to better understand, larger versions of both the
+\chpp{basket evaporator} and the \chpp{climbing film evaporator} are shown
+below with full markings of measures (which values, as usual, refer to the
+dimension of real units) and nodes:
+\begin{center}
+\begin{tikzpicture}
+ \pic[scale=2] (EB) at (0,0) {basket evaporator};
+ \pic at (EB-anchor) {anchor mark};
+ \pic at (EB-bottom left) {node mark};
+ \pic at (EB-bottom right) {node mark};
+ \pic at (EB-top right) {node mark};
+ \pic at (EB-top left) {node mark};
+ \pic at (EB-inlet left) {node mark};
+ \pic at (EB-inlet right) {node mark};
+ \pic at (EB-gas outlet) {node mark};
+ \pic at (EB-liquid outlet) {node mark};
+ \pic at (EB-shell top left) {node mark};
+ \pic at (EB-shell left) {node mark};
+ \pic at (EB-shell bottom left) {node mark};
+ \pic at (EB-shell right) {node mark};
+ \pic at (EB-shell bottom right) {node mark};
+ \pic at (EB-shell top right) {node mark};
+ \node[left] at (EB-bottom left) {\chpn{bl}};
+ \node[right] at (EB-bottom right) {\chpn{br}};
+ \node[right] at (EB-top right) {\chpn{tr}};
+ \node[left] at (EB-top left) {\chpn{tl}};
+ \node[left] at (EB-inlet left) {\chpn{il}};
+ \node[right] at (EB-inlet right) {\chpn{ir}};
+ \node[above] at (EB-gas outlet) {\chpn{go}};
+ \node[below] at (EB-liquid outlet) {\chpn{lo}};
+ \node[left] at (EB-shell top left) {\chpn{stl}};
+ \node[left] at (EB-shell left) {\chpn{sl}};
+ \node[left] at (EB-shell bottom left) {\chpn{sbl}};
+ \node[right] at (EB-shell bottom right) {\chpn{sbr}};
+ \node[right] at (EB-shell right) {\chpn{sr}};
+ \node[right] at (EB-shell top right) {\chpn{str}};
+ \measure{(-1.7,-3.7)}{(1.7,-3.7)}{\SI{17}{\mm}}
+ \measure{(-2.9,3.0)}{(-2.9,-3.0)}{\SI{30}{\mm}}
+ \measure{(-2.4,2.064)}{(-2.4,0)}{\SI{10.32}{\mm}}
+ \measure[above]{(-1.6,3.7)}{(1.6,3.7)}{\SI{16}{\mm}}
+ \measure[above]{(3.4,0)}{(3.4,-1.8)}{\SI{9}{\mm}}
+ \measure[above]{(2.9,0)}{(2.9,-1.0)}{\SI{5}{\mm}}
+ \measure[above]{(2.4,0)}{(2.4,-0.4)}{\SI{2}{\mm}}
+ \draw[dashed] (4,5) -- (4,-5);
+ \begin{scope}[xshift=7.5cm]
+ \pic[scale=2] (E) at (0,0) {climbing film evaporator};
+ \pic at (E-anchor) {anchor mark};
+ \pic at (E-top right) {node mark};
+ \pic at (E-top left) {node mark};
+ \pic at (E-inlet left) {node mark};
+ \pic at (E-inlet right) {node mark};
+ \pic at (E-gas outlet) {node mark};
+ \pic at (E-liquid outlet) {node mark};
+ \pic at (E-shell top left) {node mark};
+ \pic at (E-shell left) {node mark};
+ \pic at (E-shell bottom left) {node mark};
+ \pic at (E-shell right) {node mark};
+ \pic at (E-shell bottom right) {node mark};
+ \pic at (E-shell top right) {node mark};
+ \node[right] at (E-top right) {\chpn{tr}};
+ \node[left] at (E-top left) {\chpn{tl}};
+ \node[left] at (E-inlet left) {\chpn{il}};
+ \node[right] at (E-inlet right) {\chpn{ir}};
+ \node[above] at (E-gas outlet) {\chpn{go}};
+ \node[below] at (E-liquid outlet) {\chpn{lo}};
+ \node[left=3mm] at (E-shell top left) {\chpn{stl}};
+ \node[left=3mm] at (E-shell left) {\chpn{sl}};
+ \node[left=3mm] at (E-shell bottom left) {\chpn{sbl}};
+ \node[right] at (E-shell bottom right) {\chpn{sbr}};
+ \node[right] at (E-shell right) {\chpn{sr}};
+ \node[right] at (E-shell top right) {\chpn{str}};
+ \measure{(-0.8,-3.7)}{(0.8,-3.7)}{\SI{8}{\mm}}
+ \measure{(-2.8,3.0)}{(-2.8,-3.0)}{\SI{30}{\mm}}
+ \measure{(-2.3,1.2)}{(-2.3,0)}{\SI{6}{\mm}}
+ \measure[above]{(-1.6,3.7)}{(1.6,3.7)}{\SI{16}{\mm}}
+ \measure[above]{(2.6,0)}{(2.6,-2.2)}{\SI{11}{\mm}}
+ \measure[above]{(2.1,0)}{(2.1,-0.9)}{\SI{4.5}{\mm}}
+ \measure[above]{(1.6,0.4)}{(1.6,0)}{\SI{2}{\mm}}
+ \end{scope}
+\end{tikzpicture}
+\end{center}
+
+Measures should be clear enough. The only remark is that the measure on the
+bottom of the \chpp{climbing film evaporator} refers to the width of the tube
+bundle part of the unit without taking into account the little protruding
+lines. Always for this unit, labels of the three nodes on the lower left part
+are far from their marks only to avoid overlaps with the internal recirculation
+path.
+
+For both units there are two of the common nodes: \chpn{top left} and
+\chpn{top right}, while for the \chpp{basket evaporator} there are also
+\chpn{bottom left} and \chpn{bottom right}. Other nodes are common to both
+units. Two main inlet nodes: \chpn{inlet left} and \chpn{inlet right},
+abbreviated above as \chpn{il} and \chpn{ir} respectively. Two outlet nodes:
+\chpn{gas outlet} and \chpn{liquid outlet}, abbreviated above as \chpn{go} and
+\chpn{lo} respectively. The remaining nodes are to be used to connect the
+heating fluid to the shell of the pipe bundle:
+\begin{itemize}
+ \item the \chpn{shell top left} node is abbreviated in the drawing as
+ \chpn{stl};
+ \item the \chpn{shell left} node is abbreviated in the drawing as
+ \chpn{sl};
+ \item the \chpn{shell bottom left} node is abbreviated in the drawing as
+ \chpn{sbl};
+ \item the \chpn{shell bottom right} node is abbreviated in the drawing as
+ \chpn{sbr};
+ \item the \chpn{shell right} node is abbreviated in the drawing as
+ \chpn{sr};
+ \item the \chpn{shell top right} node is abbreviated in the drawing as
+ \chpn{str}.
+\end{itemize}
+Just like for the \chpp{tube bundle heat exchanger}, so many nodes are defined
+for the shell to allow the representation to be as flexible as possibile, in
+fact flow configuration can have a great impact on the evaporator performances
+and it is often useful to represent it also graphically.
+
+As a last remark on these two units, often also the \chpp{basket evaporator} has
+an internal recirculation path, but this is not marked on the default symbol. If
+one wants to show it, this should be done drawing an arrow of \verb|thick|
+thickness and with a \verb|stealth| tip from the \chpn{bottom right} node to the
+\chpn{inlet right} node (or the same using nodes on the left).
+
+\subsubsection{Stirred Crystallizer}
+
+The last kind of separator defined by \chemplants\ is often used in conjunction
+with an evaporator and can push the operation of concentration far enough to
+achieve the saturation of the solution, causing consequently the precipitation
+of solids. A simple non-thermal crystallizer is a stirred tank with a
+cone-shaped bottom useful to collect solids in the direction of the outlet
+pipe. It is defined as a simple pic called \chpp{stirred crystallizer}:
+\begin{chpcode}
+ \pic at (0,0) {stirred crystallizer};
+\end{chpcode}
+and yields a vertical tank, in which centre there is the anchor, with the sketch
+of a mechanical stirrer:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {stirred crystallizer};
+ \pic at (0,0) {stirred crystallizer};
+ \measure{(-0.8,-1.7)}{(0.8,-1.7)}{\SI{16}{\mm}}
+ \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}}
+ \measure[above]{(1.5,0)}{(1.5,-1.032)}{\SI{10.32}{\mm}}
+ \measure[above]{(1.0,1.5)}{(1.0,0)}{\SI{15}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3.6,0) {stirred crystallizer};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-bottom left) {node mark};
+ \pic at (C-bottom right) {node mark};
+ \pic at (C-top right) {node mark};
+ \pic at (C-top left) {node mark};
+ \pic at (C-inlet left) {node mark};
+ \pic at (C-inlet right) {node mark};
+ \pic at (C-liquid outlet) {node mark};
+ \pic at (C-solid outlet) {node mark};
+ \pic at (C-shaft) {node mark};
+ \node[left] at (C-bottom left) {\chpn{bl}};
+ \node[right] at (C-bottom right) {\chpn{br}};
+ \node[right] at (C-top right) {\chpn{tr}};
+ \node[left] at (C-top left) {\chpn{tl}};
+ \node[left] at (C-inlet left) {\chpn{il}};
+ \node[right] at (C-inlet right) {\chpn{ir}};
+ \node[above] at (C-liquid outlet) {\chpn{lo}};
+ \node[below] at (C-solid outlet) {\chpn{so}};
+ \node[above] at (C-shaft) {\chpn{s}};
+\end{tikzpicture}
+\end{center}
+where the measure on the bottom-right indicates the distance from the middle of
+the tank to the point where the cone begins, while measures on the top right
+indicate the distances from the stirrer end point to the anchor point in the
+middle of the tank.
+
+The end of the stirrer outside the tank is also identified by a special
+coordinate node, indicated in the above drawing as \chpn{s} and called
+\chpn{shaft}. It should be evident that this is not a point defined to connect
+streams, but it may be useful for some kind of control systems. In addition
+to this node, also the \chpn{inlet left} node and \chpn{inlet right} node are
+defined, shown above as \chpn{il} and \chpn{ir} respectively, and finally the
+\chpn{liquid outlet} node and \chpn{solid outlet} node, shown above as \chpn{lo}
+and \chpn{so} respectively.
+
+\subsubsection{Tube Bundle Crystallizer}
+
+A stirred crystallizer can be used to sketch diagrams of crystallization
+operation held in multiple units, such as a cooling in a heat exchanger and the
+following crystallization in a proper equipment. However, there is also a simple
+all-in-one machine that realizes heath exchange and crystallization at the same
+time. It is defined as a simple pic called \chpp{tube bundle crystallizer}:
+\begin{chpcode}
+ \pic at (0,0) {tube bundle crystallizer};
+\end{chpcode}
+and yields a tank, in which centre there is the anchor, with sketches of the tube
+bundle:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {tube bundle crystallizer};
+ \pic at (0,0) {tube bundle crystallizer};
+ \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}}
+ \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}}
+ \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}}
+ \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}}
+ \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3.6,0) {tube bundle crystallizer};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-bottom left) {node mark};
+ \pic at (C-bottom right) {node mark};
+ \pic at (C-top right) {node mark};
+ \pic at (C-top left) {node mark};
+ \pic at (C-inlet left) {node mark};
+ \pic at (C-inlet right) {node mark};
+ \pic at (C-liquid outlet) {node mark};
+ \pic at (C-solid outlet) {node mark};
+ \pic at (C-pipes left) {node mark};
+ \pic at (C-pipes right) {node mark};
+ \node[left] at (C-bottom left) {\chpn{bl}};
+ \node[right] at (C-bottom right) {\chpn{br}};
+ \node[right] at (C-top right) {\chpn{tr}};
+ \node[left] at (C-top left) {\chpn{tl}};
+ \node[left] at (C-inlet left) {\chpn{il}};
+ \node[right] at (C-inlet right) {\chpn{ir}};
+ \node[above] at (C-liquid outlet) {\chpn{lo}};
+ \node[below] at (C-solid outlet) {\chpn{so}};
+ \node[left] at (C-pipes left) {\chpn{pl}};
+ \node[right] at (C-pipes right) {\chpn{pr}};
+\end{tikzpicture}
+\end{center}
+where the measure on bottom indicates the total width of the unit, the measure on
+top indicates the width of the tank, the measure on the right indicates the
+distance from the middle of the tank to the point where the curvature begins and
+the measure on bottom right refers to the distance from the anchor point to the
+middle of the pipe bundle.
+
+Some of the special nodes defined should be clear at this point, at least
+\chpn{inlet left}, \chpn{inlet right}, \chpn{liquid outlet} and
+\chpn{solid outlet}. Two more special nodes are defined for this pic:
+\chpn{pipes left}, abbreviated above as \chpn{pl}, and \chpn{pipes right},
+abbreviated above as \chpn{pr}.
+
+\subsection{Columns}
+
+A column is the most characteristic piece of equipment of the chemical industry
+and is a vertical pipe with large diameter featured by various types of
+internals; it can be used in a wide set of applications. It is defined as a pic
+with arguments called \chpp{column}:
+\begin{chpcode}
+ \pic at (0,0) {column=empty};
+\end{chpcode}
+and yields a vertical column anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {column=empty};
+ \pic at (0,0) {column=empty};
+ \measure{(-0.5,-3.2)}{(0.5,-3.2)}{\SI{10}{\mm}}
+ \measure{(-0.7,3)}{(-0.7,-3)}{\SI{60}{\mm}}
+ \measure[above]{(0.7,2.6)}{(0.7,0)}{\SI{26}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3,0) {column=empty};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-bottom right) {node mark};
+ \pic at (C-right) {node mark};
+ \pic at (C-top right) {node mark};
+ \pic at (C-top) {node mark};
+ \pic at (C-top left) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[left] at (C-bottom left) {\chpn{bl}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[right] at (C-bottom right) {\chpn{br}};
+ \node[right] at (C-right) {\chpn{r}};
+ \node[right] at (C-top right) {\chpn{tr}};
+ \node[above] at (C-top) {\chpn{t}};
+ \node[left] at (C-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the
+column to the points where the nodes are placed. It should be noticed that this
+point is not where the curvature begins, like in tank-shaped units. The curvature
+begins \SI{27}{\mm} above the middle of the unit (in my opinion, a better
+graphical effect is obtained with a stream placed slightly below this point).
+Similar considerations apply the similar nodes on the bottom.
+
+Four kinds of columns are defined: \chpa{empty}, \chpa{trayed}, \chpa{packed}
+and \chpa{packed double}, which represent respectively an empty column, a column
+with trays, a column with a single packed zone and a column with two packed
+zones (useful to represent distillation in packed columns). These keys should be
+used as arguments of the \chpp{column} pic. The code:
+\begin{chpcode}
+ \pic at (0,0) {column=empty};
+ \pic at (3,0) {column=trayed};
+ \pic at (6,0) {column=packed};
+ \pic at (9,0) {column=packed double};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {column=empty};
+ \pic at (3,0) {column=trayed};
+ \pic at (6,0) {column=packed};
+ \pic at (9,0) {column=packed double};
+\end{tikzpicture}
+\end{center}
+All of the columns have the same dimensions and the anchor mark is always at the
+centre of the pic (they are all defined as variants of the \chpa{empty} column).
+Finally, it is useful to remember that trays (or packings) start \SI{24}{\mm}
+above the middle of the column and are spaced \SI{2}{\mm} each.
+
+\subsection{Reactors}
+
+Besides columns, reactors are the other most characteristic equipments of the
+industrial chemistry, for which is essential to realize a reaction, but on a
+very large scale. The variety of reactors available in the industry is
+wide-ranged in every aspect: shape, phases within the reactor, operating
+principles, stream configurations and so on. For this reason, it is impossibile
+to summarise all of the existing reactors using one symbol only, but it is anyway
+possible to represent the most common ones in terms of operating principled,
+which is what is done by \chemplants.
+
+\subsubsection{Stirred Reactor}
+
+One of the most common representation of a reactor used in chemical engineering
+is a simple vessel provided with a stirrer sketch, which is the core of the
+perfectly mixed reactor models. This kind of symbol is defined as a simple pic
+called \chpp{stirred reactor}:
+\begin{chpcode}
+ \pic at (0,0) {stirred reactor};
+\end{chpcode}
+and yields a vertical, in which centre there is the anchor, with the sketch of a
+mechanical stirrer:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {stirred reactor};
+ \pic at (0,0) {stirred reactor};
+ \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}}
+ \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}}
+ \measure{(-1.5,1.5)}{(-1.5,-1.2)}{\SI{27}{\mm}}
+ \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}}
+ \measure[above]{(1.0,1.5)}{(1.0,0)}{\SI{15}{\mm}}
+ \measure[above]{(1.5,0)}{(1.5,-0.732)}{\SI{7.32}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (R) at (3.6,0) {stirred reactor};
+ \pic at (R-anchor) {anchor mark};
+ \pic at (R-left) {node mark};
+ \pic at (R-bottom left) {node mark};
+ \pic at (R-bottom) {node mark};
+ \pic at (R-bottom right) {node mark};
+ \pic at (R-right) {node mark};
+ \pic at (R-top right) {node mark};
+ \pic at (R-top) {node mark};
+ \pic at (R-top left) {node mark};
+ \pic at (R-shaft) {node mark};
+ \node[left] at (R-left) {\chpn{l}};
+ \node[left] at (R-bottom left) {\chpn{bl}};
+ \node[below] at (R-bottom) {\chpn{b}};
+ \node[right] at (R-bottom right) {\chpn{br}};
+ \node[right] at (R-right) {\chpn{r}};
+ \node[right] at (R-top right) {\chpn{tr}};
+ \node[above] at (R-top) {\chpn{t}};
+ \node[left] at (R-top left) {\chpn{tl}};
+ \node[above] at (R-shaft) {\chpn{s}};
+\end{tikzpicture}
+\end{center}
+
+Reading measures is not that easy, so it is better to give some clarification:
+the pic have an overall height of \SI{27}{\mm} and an overall width of
+\SI{16}{\mm}, while the tank (without the stirrer protruding part) is
+\SI{24}{\mm} high; the measure on the bottom right indicates the distance from
+the middle of the tank to the point where the curvature begins, while measures on
+the top right indicate the distances from the stirrer end point to the anchor
+point in the middle of the tank.
+
+The end of the stirrer outside the tank is also identified by a special
+coordinate node, indicated in the above drawing as \chpn{s} and called
+\chpn{shaft}. It should be evident that this is not a point defined to connect
+streams, but it may be useful for some kind of control systems.
+
+A stirred reactor can be used to represent two ideal reactor models among the
+most commonly used in the chemical engineering: the perfectly mixed batch reactor
+and the continuous stirred tank reactor (\ac{CSTR}). Anyway, a
+\chpp{stirred reactor} is a very generic representation, so it will be
+appropriate for all of the reactors in which there is a mixer, regardless from
+the mixer type or of the phases within the reactor.
+
+\subsubsection{Packed Bed Crystallizer}
+
+The third most common ideal reactor model, the plug flow reactor (\ac{PFR}), can
+be functionally represented by a packed bed reactor, that is clearly useful to
+represent also a real packed bed reactor. It is defined as a simple pic called
+\chpp{packed bed reactor}:
+\begin{chpcode}
+ \pic at (0,0) {packed bed reactor};
+\end{chpcode}
+and yields a rectangular reactor, in which centre there is the anchor, with the
+representation of the inside packing:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4,0) {packed bed reactor};
+ \pic at (0,0) {packed bed reactor};
+ \measure{(-1,-0.65)}{(1,-0.65)}{\SI{20}{\mm}}
+ \measure{(-1.2,0.45)}{(-1.2,-0.45)}{\SI{9}{\mm}}
+ \measure[above]{(1.2,0.4)}{(1.2,-0.4)}{\SI{8}{\mm}}
+ \measure[above]{(0.8,0.65)}{(1.0,0.65)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (R) at (4,0) {packed bed reactor};
+ \pic at (R-anchor) {anchor mark};
+ \pic at (R-left) {node mark};
+ \pic at (R-bottom) {node mark};
+ \pic at (R-right) {node mark};
+ \pic at (R-top) {node mark};
+ \pic at (R-utility bottom left) {node mark};
+ \pic at (R-utility bottom right) {node mark};
+ \pic at (R-utility top right) {node mark};
+ \pic at (R-utility top left) {node mark};
+ \node[left] at (R-left) {\chpn{l}};
+ \node[below] at (R-bottom) {\chpn{b}};
+ \node[right] at (R-right) {\chpn{r}};
+ \node[above] at (R-top) {\chpn{t}};
+ \node[below] at (R-utility bottom left) {\chpn{ubl}};
+ \node[below] at (R-utility bottom right) {\chpn{ubr}};
+ \node[above] at (R-utility top right) {\chpn{utr}};
+ \node[above] at (R-utility top left) {\chpn{utl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the height of the rectangle without the
+small protruding vertical edges, while the measure on the top indicates the width
+of the section without the packing.
+
+The \chpp{packed bed reactor} has some special nodes. Among the common ones,
+only \chpn{left}, \chpn{bottom}, \chpn{right} and \chpn{top} are defined. In
+addition, there are four nodes more:
+\begin{itemize}
+ \item a node called \chpn{utility bottom left}, abbreviated in the picture
+ above as \chpn{ubl};
+ \item a node called \chpn{utility bottom right}, abbreviated in the picture
+ above as \chpn{ubr};
+ \item a node called \chpn{utility top right}, abbreviated in the picture
+ above as \chpn{utr};
+ \item a node called \chpn{utility top left}, abbreviated in the picture above
+ as \chpn{utl}.
+\end{itemize}
+These nodes are useful to simulate the presence of a jacket associated to the
+reactor and can be used, for example, to connect utility streams carrying fluids
+of a temperature control system.
+
+\subsubsection{Fluidized Bed Reactor}
+
+Even though the two above mentioned reactors are the most common ones, there are
+many others and one example is the fluidized bed reactor. Its usage have the same
+aims of the packed bed reactor, but this time solids are free to move within
+the reactor entrained and mixed by the gas. It is defined as a simple pic called
+\chpp{fluidized reactor}:
+\begin{chpcode}
+ \pic at (0,0) {fluidized bed reactor};
+\end{chpcode}
+and yields a half tank-shaped reactor anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {fluidized bed reactor};
+ \pic at (0,0) {fluidized bed reactor};
+ \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}}
+ \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}}
+ \measure[above]{(-0.2,1.4)}{(0.2,1.4)}{\SI{4}{\mm}}
+ \measure[above]{(1.0,0)}{(1.0,-0.4)}{\SI{4}{\mm}}
+ \measure[above]{(1.5,0.732)}{(1.5,0)}{\SI{7.32}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (R) at (3.6,0) {fluidized bed reactor};
+ \pic at (R-anchor) {anchor mark};
+ \pic at (R-left) {node mark};
+ \pic at (R-bottom left) {node mark};
+ \pic at (R-bottom) {node mark};
+ \pic at (R-bottom right) {node mark};
+ \pic at (R-right) {node mark};
+ \pic at (R-top right) {node mark};
+ \pic at (R-top) {node mark};
+ \pic at (R-top left) {node mark};
+ \node[left] at (R-left) {\chpn{l}};
+ \node[left] at (R-bottom left) {\chpn{bl}};
+ \node[below] at (R-bottom) {\chpn{b}};
+ \node[right] at (R-bottom right) {\chpn{br}};
+ \node[right] at (R-right) {\chpn{r}};
+ \node[right] at (R-top right) {\chpn{tr}};
+ \node[above] at (R-top) {\chpn{t}};
+ \node[left] at (R-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the tank
+to the point where the curvature begins.
+
+No special node is defined for the \chpp{fluidized reactor}. Anyway, it should
+be noticed that the restriction of the bottom represents a real section
+change in the tank, which allows the bed to be firstly entrained by a fast
+flow and then to fall down due to the slowing of the stream caused by the
+expansion of the cross section. For this reason, the main inlet should be placed
+on the \chpn{bottom} node, while the main outlet should be connected to the
+\chpn{top} node. Other nodes, in particular \chpn{bottom left},
+\chpn{bottom right}, \chpn{top right} and \chpn{top left}, can be used for
+connections if one needs to represent a solid stream going through the reactor.
+
+\subsubsection{Tube Bundle Reactor}
+
+Another possibility to represent a reacting system is a tube bundle reactor,
+which can be used as a film reactor, thus to contact a liquid stream falling
+inside the reactor in the form of a film distributed on the walls of the internal
+pipes and a gas stream flowing in the internal spaces of the pipes, or as a
+multi-pipe packed bed reactor. It is defined as a simple pic called
+\chpp{tube bundle reactor}:
+\begin{chpcode}
+ \pic at (0,0) {tube bundle reactor};
+\end{chpcode}
+and yields a tank-shaped reactor, in which centre there is the anchor, with the
+sketch of the internal pipes:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {tube bundle reactor};
+ \pic at (0,0) {tube bundle reactor};
+ \measure{(-0.85,-1.4)}{(0.84,-1.4)}{\SI{17}{\mm}}
+ \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}}
+ \measure[above]{(1.0,0.732)}{(1.0,0)}{\SI{7.32}{\mm}}
+ \measure[above]{(-0.8,1.4)}{(0.8,1.4)}{\SI{16}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (R) at (3.6,0) {tube bundle reactor};
+ \pic at (R-anchor) {anchor mark};
+ \pic at (R-left) {node mark};
+ \pic at (R-bottom left) {node mark};
+ \pic at (R-bottom) {node mark};
+ \pic at (R-bottom right) {node mark};
+ \pic at (R-right) {node mark};
+ \pic at (R-top right) {node mark};
+ \pic at (R-top) {node mark};
+ \pic at (R-top left) {node mark};
+ \node[left] at (R-left) {\chpn{l}};
+ \node[left] at (R-bottom left) {\chpn{bl}};
+ \node[below] at (R-bottom) {\chpn{b}};
+ \node[right] at (R-bottom right) {\chpn{br}};
+ \node[right] at (R-right) {\chpn{r}};
+ \node[right] at (R-top right) {\chpn{tr}};
+ \node[above] at (R-top) {\chpn{t}};
+ \node[left] at (R-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the tank
+to the point where the curvature begins, while the measure on the top indicates
+the width of the reactor without the small protruding horizontal lines which
+represent the support plates of internal pipes.
+
+No special node is defined for the \chpp{tube bundle reactor}, but it is a good
+idea to specify that \chpn{left} and \chpn{right} nodes identify two points which
+fall between the support plates of internal pipes, so they are the ``access'' to
+the outer side of the pipe bundle. For this reason these two points are perfect
+to connect utility streams carrying fluids of a temperature control system.
+Unlike evaporators, there are not so many nodes for the shell of the pipes: an
+evaporator is a purely thermal unit and the flow configuration can be an
+important information to show, while for a reactor it is not that important.
+
+Finally, another useful information is that both support plates of the pipes are
+placed to a vertical distance of \SI{6.5}{\mm} from the anchor point, even though
+not explicitly marked in the above drawing.
+
+\subsection{Associative Pics for Reactors}
+
+The just introduced reactors are only a little part of the huge variety of
+symbols one can find looking at process schemes. It is almost impossible to
+accomplish all of the requests about the representation of reactors: one wants
+to draw a jacket, another one wants a stirrer and a jacket, another one wants a
+stirrer but no jacket, another one wants a sprayer, a stirrer and a jacket and
+so on.
+
+Even though the number of possibile combinations is huge, a smart and efficient
+solution can always be found. A possibile way is what I like to call associative
+pics, a palette of pics which can be overlapped and bonded together thanks to
+anchors. In this way, only the building blocks need to be defined and then users
+can play with them to produce symbols they like the most, or the ones they need.
+It should be clear that some pics will exclude the usage of others (for example a
+stirrer should not be represented in a packed bed reactor).
+
+\subsubsection{Tank Reactor}
+
+It is necessary to specify that this technique is adopted in \chemplants\ only
+for reactors, more precisely for tank shaped reactors. The main building block
+is, in fact, a little tank which represents a generic empty reactor. It is
+defined as a simple pic called \chpp{tank reactor}:
+\begin{chpcode}
+ \pic at (0,0) {tank reactor};
+\end{chpcode}
+and yields a vertical tank anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {tank reactor};
+ \pic at (0,0) {tank reactor};
+ \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}}
+ \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}}
+ \measure[above]{(1.0,0.732)}{(1.0,0)}{\SI{7.32}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (R) at (3.6,0) {tank reactor};
+ \pic at (R-anchor) {anchor mark};
+ \pic at (R-left) {node mark};
+ \pic at (R-bottom left) {node mark};
+ \pic at (R-bottom) {node mark};
+ \pic at (R-bottom right) {node mark};
+ \pic at (R-right) {node mark};
+ \pic at (R-top right) {node mark};
+ \pic at (R-top) {node mark};
+ \pic at (R-top left) {node mark};
+ \node[left] at (R-left) {\chpn{l}};
+ \node[left] at (R-bottom left) {\chpn{bl}};
+ \node[below] at (R-bottom) {\chpn{b}};
+ \node[right] at (R-bottom right) {\chpn{br}};
+ \node[right] at (R-right) {\chpn{r}};
+ \node[right] at (R-top right) {\chpn{tr}};
+ \node[above] at (R-top) {\chpn{t}};
+ \node[left] at (R-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the tank
+to the point where the curvature begins.
+
+This pic is formally analogue to the \chpp{tank}, the very first pic
+introduced, but smaller. It is useful to know that the scale factor to
+``convert'' a \chpp{tank reactor} into a \chpp{tank} is \num{1.25}. The reason
+why it is useful to know it will be explained in the future, when pics
+transformations will be introduced.
+
+As told before, the \chpp{tank reactor} is the starting point of all of the
+representation. In particular, almost all of the other pics defined later on
+(apart two of them) can be bonded to the \chpp{tank reactor} using the
+\chpn{anchor} node. Assuming that the reactor is declared as:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+\end{chpcode}
+thus identified as \chpn{R}, the point in which other pics have to be declared
+is the node \chpn{R-anchor}.
+
+\subsubsection{Jacket}
+
+The first gadget for the \chpp{tank reactor} is a jacket for temperature
+control. It is defined as a simple pic called \chpp{jacket}:
+\begin{chpcode}
+ \pic at (0,0) {jacket};
+\end{chpcode}
+and yields the sketch of and external jacket anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-4.0,0) {jacket};
+ \pic at (0,0) {jacket};
+ \measure[above]{(-1.0,0.9)}{(1.0,0.9)}{\SI{20}{\mm}}
+ \measure{(-1.2,0.7)}{(-1.2,-1.3)}{\SI{20}{\mm}}
+ \measure{(-0.1,-1.5)}{(0.1,-1.5)}{\SI{2}{\mm}}
+ \measure[above]{(1.7,0.5)}{(1.7,0)}{\SI{5}{\mm}}
+ \measure[above]{(1.2,0)}{(1.2,-1.3)}{\SI{13}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (J) at (4.0,0) {jacket};
+ \pic at (J-anchor) {anchor mark};
+ \pic at (J-left) {node mark};
+ \pic at (J-bottom left) {node mark};
+ \pic at (J-bottom right) {node mark};
+ \pic at (J-right) {node mark};
+ \pic at (J-top right) {node mark};
+ \pic at (J-top left) {node mark};
+ \node[left] at (J-left) {\chpn{l}};
+ \node[below left] at (J-bottom left) {\chpn{bl}};
+ \node[below right] at (J-bottom right) {\chpn{br}};
+ \node[right] at (J-right) {\chpn{r}};
+ \node[right] at (J-top right) {\chpn{tr}};
+ \node[left] at (J-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+where the measure on the bottom right indicates the distance from the anchor of
+the jacket to its bottom, while the measure on the bottom indicates the width of
+the ``bottom hole''.
+
+The \chpp{jacket} has to be bonded to the \chpp{tank reactor} using its
+\chpn{anchor} node:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {jacket};
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {jacket};
+\end{tikzpicture}
+\end{center}
+It should be noticed that the \chpp{jacket} extends the dimensions of the
+\chpp{tank reactor} by \SI{2}{\mm} in horizontal on both sides and by
+\SI{1}{\mm} in vertical on the bottom.
+
+This solution is functional, but it introduces also a drawback: being the
+\chpp{jacket} and the \chpp{tank reactor} two different pics, they have to be
+identified using two different prefixes. In the above example, the node
+\chpn{R-left} identifies the \chpn{left} node of the reactor, but not the
+\chpn{left} node of the jacket. The drawback is that it is necessary to remember
+to use the correct prefix to identify nodes of the right pic, but this is also
+a safer approach.
+
+\subsubsection{Stirrer}
+
+The \chpp{jacket} is the only external gadget defined, but there are a lot of
+internal accessories, among which there is the already known stirrer. It is
+defined a simple pic called \chpp{stirrer}:
+\begin{chpcode}
+ \pic at (0,0) {stirrer};
+\end{chpcode}
+and yields the sketch of a mechanical stirrer:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.0,0) {stirrer};
+ \pic at (0,0) {stirrer};
+ \measure{(-0.5,-0.575)}{(0.5,-0.575)}{\SI{10}{\mm}}
+ \measure{(-0.7,1.5)}{(-0.7,-0.375)}{\SI{18.75}{\mm}}
+ \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}}
+ \measure[above]{(0.7,1.5)}{(0.7,0)}{\SI{15}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (S) at (3.0,0) {stirrer};
+ \pic at (S-anchor) {anchor mark};
+ \pic at (S-shaft) {node mark};
+ \node[above] at (S-shaft) {\chpn{s}};
+\end{tikzpicture}
+\end{center}
+where measures on the right and on the top indicate the distances from the
+anchor of the stirrer to the end of its shaft.
+
+The \chpp{stirrer} has a special node: the \chpn{shaft} node is placed at the
+end of the shaft and it is abbreviated above as \chpn{s}.
+
+The \chpp{stirrer} has to be bonded to the \chpp{tank reactor} using its
+\chpn{anchor} node:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {stirrer};
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {stirrer};
+\end{tikzpicture}
+\end{center}
+It should be noticed that the \chpp{stirrer} extends the dimensions of the
+\chpp{tank reactor} by \SI{3}{\mm} in vertical on the top. The pic obtained in
+this way is exactly the same of the \chpp{stirred reactor}, but this last one
+has still its own definition as a single pic due to its importance.
+
+\subsubsection{Coil}
+
+Instead of using a jacket to control the temperature of a reactor, there is
+another solution: a coil, either electrical or carrier of a temperature
+controlling fluid, placed within the reactor. It is defined as a simple pic
+called \chpp{coil}:
+\begin{chpcode}
+ \pic at (0,0) {coil};
+\end{chpcode}
+and yields the sketch of a coil anchored in its center:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {coil};
+ \pic at (0,0) {coil};
+ \measure{(-0.7,-0.9)}{(1.0,-0.9)}{\SI{17}{\mm}}
+ \measure{(-1.0,0.7)}{(-1.0,-0.7)}{\SI{14}{\mm}}
+ \measure[above]{(0,0.9)}{(1.0,0.9)}{\SI{10}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3.6,0) {coil};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-top) {node mark};
+ \node[right] at (C-bottom) {\chpn{b}};
+ \node[right] at (C-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where the measure on the top indicates the distance from the anchor of the coil
+to the end of its path.
+
+The two nodes declared for the \chpp{coil} are the \chpn{bottom} node and the
+\chpn{top} node, abbreviated above as \chpn{b} and \chpn{t} respectively.
+
+The \chpp{coil} has to be bonded to the \chpp{tank reactor} using its
+\chpn{anchor} node:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {coil};
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {coil};
+\end{tikzpicture}
+\end{center}
+It should be noticed that the \chpp{coil} extends the dimensions of the
+\chpp{tank reactor} by \SI{2}{\mm} in horizontal on the right.
+Even though some overlapping is obtained, the \chpp{coil} and the \chpp{stirrer}
+can be used together.
+
+\subsubsection{Sprayer}
+
+When it is important to represent the distribution of a liquid fed to a reactor,
+a special pic comes in hand. It is defined as a simple pic called \chpp{sprayer}:
+\begin{chpcode}
+ \pic at (0,0) {sprayer};
+\end{chpcode}
+and yields the sketch of a sprayer anchored on its inlet end, the one on the
+right:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.4,0) {sprayer};
+ \pic at (0,0) {sprayer};
+ \measure{(0,-0.3)}{(1.4,-0.3)}{\SI{14}{\mm}}
+ \measure{(-0.2,0)}{(-0.2,-0.1)}{\SI{1}{\mm}}
+ \pic at (0,0) {anchor mark};
+\end{tikzpicture}
+\end{center}
+and no special or common nodes are defined for this pic, apart from the usual
+\chpn{anchor} node.
+
+The \chpp{sprayer} has to be bonded to the \chpp{tank reactor} using its
+\chpn{top left} node (or its \chpn{top right} node using a trick that will be
+introduced in the following):
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-top left) {sprayer};
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-top left) {sprayer};
+\end{tikzpicture}
+\end{center}
+
+\subsubsection{Bubbler}
+
+In the same way, when it is important to represent the distribution of a gas fed
+to a reactor, a special pic comes in hand. It is defined a simple pic called
+\chpp{bubbler}:
+\begin{chpcode}
+ \pic at (0,0) {bubbler};
+\end{chpcode}
+and yields the sketch of a bubbler anchored on its inlet end, the one on the
+right:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.4,0) {bubbler};
+ \pic at (0,0) {bubbler};
+ \measure{(0,-0.3)}{(1.4,-0.3)}{\SI{14}{\mm}}
+ \measure{(-0.2,0.1)}{(-0.2,0)}{\SI{1}{\mm}}
+ \pic at (0,0) {anchor mark};
+\end{tikzpicture}
+\end{center}
+and no special or common nodes are defined for this pic, apart the usual
+\chpn{anchor} node.
+
+The \chpp{bubbler} has to be bonded to the \chpp{tank reactor} using its
+\chpn{bottom left} node (or its \chpn{bottom right} node using a trick that will
+be introduced in the following):
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-bottom left) bubbler;
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-bottom left) {bubbler};
+\end{tikzpicture}
+\end{center}
+
+\subsubsection{Packing}
+
+Finally, the last pic defined as a gadget for the \chpp{tank reactor} is useful
+to obtain an alternative representation of the \chpp{packed bed reactor}.
+It is defined as a simple pic called \chpp{packing}:
+\begin{chpcode}
+ \pic at (0,0) {packing};
+\end{chpcode}
+and yields the representation of a packing:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3.6,0) {packing};
+ \pic at (0,0) {packing};
+ \measure{(-0.8,-0.9)}{(0.8,-0.9)}{\SI{16}{\mm}}
+ \measure{(-1.0,0.7)}{(-1.0,-0.7)}{\SI{14}{\mm}}
+ \pic at (0,0) {anchor mark};
+\end{tikzpicture}
+\end{center}
+and no special or common nodes are defined for this pic, apart from the usual
+\chpn{anchor} node.
+
+The \chpp{packing} has to be bonded to the \chpp{tank reactor} using its
+\chpn{anchor} node:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {packing};
+\end{chpcode}
+and the result is:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {packing};
+\end{tikzpicture}
+\end{center}
+It should be clear enough that this pic has not to be used with any of the
+preceding ones, but, at most, with the \chpp{jacket}.
+
+\section{Process Utility Units}
+
+Process utilities is the name given to a set of special units useful to
+better specify what is going on in a process; such units are valves, pipe joints,
+equipment nozzles and so on. Among process utilities, there are also control
+instrumentation and ``gadgets'' for units to be used, for example, to let
+the control system automatically act on the process.
+
+\subsection{Valves}
+
+A utility valve should not be misconceived with a lamination valve (as it often
+happens). Despite the extremely common fact that the same symbol is used for
+both the units, for the sake of clearance \UNICHIM\ indicates the lamination of
+a fluid through a valve using a different symbol with respect to the one used
+for regulation or interception valves.
+
+\subsubsection{Lamination Valve}
+
+A lamination valve is a unit useful to expand a fluid, hence to reduce its
+pressure. It can be represented using a simple pic called
+\chpp{lamination valve}:
+\begin{chpcode}
+ \pic at (0,0) {lamination valve};
+\end{chpcode}
+which yields a rectangle anchored in its centre in which there is an arrow
+sketch:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.4,0) {lamination valve};
+ \pic at (0,0) {lamination valve};
+ \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}}
+ \measure{(-0.4,0.1)}{(-0.4,-0.1)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (V) at (2.4,0) {lamination valve};
+ \pic at (V-anchor) {anchor mark};
+ \pic at (V-inlet) {node mark};
+ \pic at (V-outlet) {node mark};
+ \node[left] at (V-inlet) {\chpn{i}};
+ \node[right] at (V-outlet) {\chpn{o}};
+\end{tikzpicture}
+\end{center}
+
+Nodes defined for the \chpp{lamination valve} are particular. A lamination
+valve is a unit much more similar to a simple electric bipole, in fact it has
+only two nodes (plus the \chpn{anchor}); moreover this unit is a ``one way
+operation'', so the nodes have a simple logic: one \chpn{inlet} and one
+\chpn{outlet}. These two are indicated in the drawing above as \chpn{i} and
+\chpn{o} respectively.
+
+\subsubsection{Valve}
+
+A generic valve, intended as a a regulation valve or as an interception valve,
+can be represented using a pic with arguments called \chpp{valve}:
+\begin{chpcode}
+ \pic at (0,0) {valve=main};
+\end{chpcode}
+which yields a horizontal valve anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.4,0) {valve=main};
+ \pic at (0,0) {valve=main};
+ \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}}
+ \measure{(-0.4,0.1)}{(-0.4,-0.1)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (V) at (2.4,0) {valve=main};
+ \pic at (V-anchor) {anchor mark};
+ \pic at (V-left) {node mark};
+ \pic at (V-right) {node mark};
+ \node[left] at (V-left) {\chpn{l}};
+ \node[right] at (V-right) {\chpn{r}};
+\end{tikzpicture}
+\end{center}
+
+Note that the \chpn{anchor} node comes in hand with a \chpp{valve}. If one
+wants to specify that a valve has a sensor or an actuator (pics will be
+introduced in the following), its pic can be simply ``bonded'' to the valve
+placing it on the \chpn{anchor} node of the \chpp{valve}. For example, if a
+\chpp{valve} is identified as \chpn{V}, placing the actuator in the
+\chpn{V-anchor} node will do the job.
+
+The \chpp{valve} pic is defined with an argument to make it sensible to the
+stream on which it is placed, in fact two kinds of valves are defined:
+\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively
+with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These
+keys should be used as arguments of the \chpp{valve} pic. The code:
+\begin{chpcode}
+ \draw[main stream] (0,2) -- (0.8,2);
+ \pic at (1,2) {valve=main};
+ \draw[main stream] (1.2,2) -- (2,2);
+ \draw[secondary stream] (0,1) -- (0.8,1);
+ \pic at (1,1) {valve=secondary};
+ \draw[secondary stream] (1.2,1) -- (2,1);
+ \draw[utility stream] (0,0) -- (0.8,0);
+ \pic at (1,0) {valve=utility};
+ \draw[utility stream] (1.2,0) -- (2,0);
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \draw[main stream] (0,2) -- (0.8,2);
+ \pic at (1,2) {valve=main};
+ \draw[main stream] (1.2,2) -- (2,2);
+ \draw[secondary stream] (0,1) -- (0.8,1);
+ \pic at (1,1) {valve=secondary};
+ \draw[secondary stream] (1.2,1) -- (2,1);
+ \draw[utility stream] (0,0) -- (0.8,0);
+ \pic at (1,0) {valve=utility};
+ \draw[utility stream] (1.2,0) -- (2,0);
+\end{tikzpicture}
+\end{center}
+Conversely, \chpp{lamination valve} is defined as a simple pic because it is
+more similar to a unit operation rather than to a regulation valve, hence it is
+drawn with a \verb|thick| line just like process units.
+
+\subsubsection{Three-Way Valve}
+
+Even though it is not properly a valve, the similarities of the symbols qualify a
+pipes joint also with the name of three-way valve. It is defined as a pic with
+arguments called \chpp{valve triple}:
+\begin{chpcode}
+ \pic at (0,0) {valve triple=main};
+\end{chpcode}
+which yields a horizontal valve anchored in its centre with the third way going
+out from the top:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.4,0) {valve triple=main};
+ \pic at (0,0) {valve triple=main};
+ \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}}
+ \measure{(-0.4,0.2)}{(-0.4,-0.1)}{\SI{3}{\mm}}
+ \measure[above]{(0.4,0.2)}{(0.4,0)}{\SI{2}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (V) at (2.4,0) {valve triple=main};
+ \pic at (V-anchor) {anchor mark};
+ \pic at (V-left) {node mark};
+ \pic at (V-right) {node mark};
+ \pic at (V-top) {node mark};
+ \node[left] at (V-left) {\chpn{l}};
+ \node[right] at (V-right) {\chpn{r}};
+ \node[above] at (V-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the middle of the
+joint to its top.
+
+Just like for the valve, three kinds of three-way valves are defined:
+\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively
+with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These
+keys should be used as arguments of the \chpp{valve triple} pic.
+
+\subsubsection{Four-Way Valve}
+
+Just like three-way valve, also a joint of four pipes is not properly a valve,
+but the similarity of its symbols to the one used to denote valves gives it the
+informal name of four-way valve. It is defined as a pic with arguments called
+\chpp{valve quadruple}:
+\begin{chpcode}
+ \pic at (0,0) {valve quadruple=main};
+\end{chpcode}
+which yields a ``cross valve'' anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.4,0) {valve quadruple=main};
+ \pic at (0,0) {valve quadruple=main};
+ \measure{(-0.2,-0.4)}{(0.2,-0.4)}{\SI{4}{\mm}}
+ \measure{(-0.4,0.2)}{(-0.4,-0.2)}{\SI{4}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (V) at (2.4,0) {valve quadruple=main};
+ \pic at (V-anchor) {anchor mark};
+ \pic at (V-left) {node mark};
+ \pic at (V-bottom) {node mark};
+ \pic at (V-right) {node mark};
+ \pic at (V-top) {node mark};
+ \node[left] at (V-left) {\chpn{l}};
+ \node[below] at (V-bottom) {\chpn{b}};
+ \node[right] at (V-right) {\chpn{r}};
+ \node[above] at (V-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+Just like for the valve, three kinds of four-way valves are defined:
+\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively
+with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These
+keys should be used as arguments of the \chpp{valve quadruple} pic.
+
+\subsubsection{Safety Valve}
+
+A special kind of valve is the one used to protect a vessel against pressure
+anomalies: the safety valve. The \chemplants\ package defines a single symbols to
+represent both safety valves and relief valves. It is defined as a pic with
+arguments called \chpp{safety quadruple}:
+\begin{chpcode}
+ \pic at (0,0) {safety valve=main};
+\end{chpcode}
+which yields a bent valve, in which central node there is the anchor, with
+sketches of the spring and of the vent:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.5,0) {safety valve=main};
+ \pic at (0,0) {safety valve=main};
+ \measure{(-0.1,-0.4)}{(0.4,-0.4)}{\SI{5}{\mm}}
+ \measure{(-0.3,0.3)}{(-0.3,-0.2)}{\SI{5}{\mm}}
+ \measure[above]{(0,0.5)}{(0.4,0.5)}{\SI{4}{\mm}}
+ \measure[above]{(0.6,0.3)}{(0.6,0)}{\SI{3}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (V) at (2.5,0) {safety valve=main};
+ \pic at (V-anchor) {anchor mark};
+ \pic at (V-inlet) {node mark};
+ \pic at (V-outlet) {node mark};
+ \node[below] at (V-inlet) {\chpn{i}};
+ \node[right] at (V-outlet) {\chpn{o}};
+\end{tikzpicture}
+\end{center}
+where the measure on the right indicates the distance from the anchor to the top
+of the spring, while the measure on the measure on the top indicates the distance
+from the anchor to the vent.
+
+Nodes defined for the \chpp{safety valve} follow the same logic of the ones
+defined for the \chpp{lamination valve}. Being a safety valve a ``directional''
+unit, the nodes have a simple logic: one \chpn{inlet} and one \chpn{outlet}.
+These two are indicated in the drawing above as \chpn{i} and \chpn{o}
+respectively. The \chpn{outlet} node may be used to represent the collection of
+the discharged stream into a particular treatment circuit.
+
+Though a safety valve should never be included into the main process path,
+possibly even not into the secondary paths, three kinds of safety valves are
+defined: \chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn
+respectively with \verb|semithick| lines, \verb|thin| lines and \verb|very thin|
+lines. These keys should be used as arguments of the \chpp{safety valve} pic.
+
+\subsection{Control Instruments}
+
+\subsubsection{Instrument}
+
+Often not present in a \ac{PFD}, schematics of control instrumentation is a
+valuable integration to the process scheme. It can be shown in order to better
+describe a (simple) plant. A generic instrument symbol is defined as a pic with
+arguments called \chpp{instrument}:
+\begin{chpcode}
+ \pic at (0,0) {instrument=TIC};
+\end{chpcode}
+and yields a circle anchored in its centre, with \verb|thin| line thickness and
+containing the designation of the instrument:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {instrument=TIC};
+ \pic at (0,0) {instrument=TIC};
+ \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (I) at (3,0) {instrument=TIC};
+ \pic at (I-anchor) {anchor mark};
+ \pic at (I-left) {node mark};
+ \pic at (I-bottom) {node mark};
+ \pic at (I-right) {node mark};
+ \pic at (I-top) {node mark};
+ \node[left] at (I-left) {\chpn{l}};
+ \node[below] at (I-bottom) {\chpn{b}};
+ \node[right] at (I-right) {\chpn{r}};
+ \node[above] at (I-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+The behaviour of the \chpp{instrument} pic differs with respect to other pics
+with arguments and it is more similar to the third argument of the
+\verb|\measure| command: the argument can be anything accepted by a \TikZ\ node
+and, in the case of chemical plants control instrumentation, it should be a text
+specifying the type of instrument, as shown above (\ac{TIC} stands for
+temperature indicator and controller).
+
+\subsubsection{Controller}
+
+Sometimes it is necessary to represent a different kind of instrumentation. A
+common case is a computer connected to a measurement and control system, which
+acts as a simple controller. For instance, it may be a programmable logic
+controller (\ac{PLC}) or a distribute control system (\ac{DCS}). In such cases, a
+special pic exists. It is defined as a pic with arguments called
+\chpp{controller}:
+\begin{chpcode}
+ \pic at (0,0) {controller=PLC};
+\end{chpcode}
+and yields a square anchored in its centre, with \verb|thin| line thickness and
+containing the specification of the controller:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-3,0) {controller=PLC};
+ \pic at (0,0) {controller=PLC};
+ \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}}
+ \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (C) at (3,0) {controller=PLC};
+ \pic at (C-anchor) {anchor mark};
+ \pic at (C-left) {node mark};
+ \pic at (C-bottom) {node mark};
+ \pic at (C-right) {node mark};
+ \pic at (C-top) {node mark};
+ \node[left] at (C-left) {\chpn{l}};
+ \node[below] at (C-bottom) {\chpn{b}};
+ \node[right] at (C-right) {\chpn{r}};
+ \node[above] at (C-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+Arguments to be used with a \chpp{controller} pic follow exactly the same
+logic of the ones used within an \chpp{instrument}: simple text specifying the
+controller functions.
+
+\subsubsection{Actuator}
+
+Signal paths have already been discussed and can be drawn with the \chps{signal}
+style, but there is another utility for control instrumentation. Connections
+between signals and units can be made through a sensor, to collect informations,
+or through an actuator, to act on the units. Usually sensors are indicated
+simply connecting a signal to the point of measurement, a unit or a stream, but
+for actuators an additional symbol is used. It is defined as a simple pic called
+\chpp{actuator}:
+\begin{chpcode}
+ \pic at (0,0) {actuator};
+\end{chpcode}
+and yields a half circle supported by a vertical stem, at the end of which
+there is the anchor point:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.1,0) {actuator};
+ \pic at (0,0) {actuator};
+ \measure{(-0.1,-0.2)}{(0.1,-0.2)}{\SI{2}{\mm}}
+ \measure{(-0.25,0.3)}{(-0.25,-0)}{\SI{3}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (A) at (0,0) {actuator};
+ \pic at (A-anchor) {anchor mark};
+ \pic at (A-top) {node mark};
+ \node[above] at (A-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+The \chpp{actuator} is a strange thing to represent in a scheme and obtaining a
+good graphical result is not that easy. In order to get a better drawing, its
+line thickness is the same of instruments, but its dimensions are defined to be
+relative to the units. This aspect will be better clarified in the future.
+
+This is a good time to give a practical example of how coordinate nodes can be
+used. Introducing the \chpp{valve}, it was said that its \chpn{anchor} node can
+come in hand when representing actuators. This simple code:
+\begin{chpcode}
+ \pic (V) at (1,0) {valve=main};
+ \pic (A) at (V-anchor) {actuator};
+ \pic (FC) at (3,0.8) {instrument=FC};
+ \draw[main stream] (0,0) -- (V-left);
+ \draw[main stream] (V-right) -- (3.5,0);
+ \draw[short signal] (3,0) -- (FC-bottom);
+ \draw[signal] (FC-left) -| (A-top);
+\end{chpcode}
+produces the representation of a flow-rate control loop:
+\begin{center}
+\begin{tikzpicture}
+ \pic (V) at (1,0) {valve=main};
+ \pic (A) at (V-anchor) {actuator};
+ \pic (FC) at (3,0.8) {instrument=FC};
+ \draw[main stream] (0,0) -- (V-left);
+ \draw[main stream] (V-right) -- (3.5,0);
+ \draw[short signal] (3,0) -- (FC-bottom);
+ \draw[signal] (FC-left) -| (A-top);
+\end{tikzpicture}
+\end{center}
+
+It should be noticed that coordinate nodes are really useful, but appealing to
+them implies that the diagram my need to be planned in a non-linear way. In
+particular, it is convenient to fix positions of all of the units first and then
+connecting their nodes using streams and signals. This procedure requires a
+little of practice, but, doubtlessly, its advantages worth the effort. A simple
+example: if one decides to move the valve from the coordinates \verb|(1,0)| to
+the coordinates \verb|(1.5,0)|, the only thing to do is to change the coordinates
+of the point where the \chpp{valve} is placed in the first line of the example
+code and all of the other points will automatically move themselves accordingly:
+\begin{center}
+\begin{tikzpicture}
+ \pic (V) at (1.5,0) {valve=main};
+ \pic (A) at (V-anchor) {actuator};
+ \pic (FC) at (3,0.8) {instrument=FC};
+ \draw[main stream] (0,0) -- (V-left);
+ \draw[main stream] (V-right) -- (3.5,0);
+ \draw[short signal] (3,0) -- (FC-bottom);
+ \draw[signal] (FC-left) -| (A-top);
+\end{tikzpicture}
+\end{center}
+
+\subsection{Process Inlets and Outlets}
+
+When representing the scheme of a process, it is always necessary to indicate
+where prime matters enter and where products leave. One can simply use a stream
+with a free end, but \UNICHIM\ defines two particular symbols to these special
+purposes. An inlet is defined as a simple pic called
+\chpp{inlet}:
+\begin{chpcode}
+ \pic at (0,0) {inlet};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with a filled arrow
+sketch:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.5,0) {inlet};
+ \pic at (0,0) {inlet};
+ \measure{(-0.25,-0.45)}{(0.25,-0.45)}{\SI{5}{\mm}}
+ \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (I) at (2.5,0) {inlet};
+ \pic at (I-anchor) {anchor mark};
+ \pic at (I-left) {node mark};
+ \pic at (I-bottom) {node mark};
+ \pic at (I-stream) {node mark};
+ \pic at (I-top) {node mark};
+ \node[left] at (I-left) {\chpn{l}};
+ \node[below] at (I-bottom) {\chpn{b}};
+ \node[right] at (I-stream) {\chpn{s}};
+ \node[above] at (I-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+while an outlet is defined as a simple pic called \chpp{outlet}:
+\begin{chpcode}
+ \pic at (0,0) {output};
+\end{chpcode}
+and yields a circle, in which centre there is the anchor, with an empty arrow
+sketch:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-2.5,0) {outlet};
+ \pic at (0,0) {outlet};
+ \measure{(-0.25,-0.45)}{(0.25,-0.45)}{\SI{5}{\mm}}
+ \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (O) at (2.5,0) {outlet};
+ \pic at (O-anchor) {anchor mark};
+ \pic at (O-stream) {node mark};
+ \pic at (O-bottom) {node mark};
+ \pic at (O-right) {node mark};
+ \pic at (O-top) {node mark};
+ \node[left] at (O-stream) {\chpn{s}};
+ \node[below] at (O-bottom) {\chpn{b}};
+ \node[right] at (O-right) {\chpn{r}};
+ \node[above] at (O-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+For both \chpp{inlet} and \chpp{outlet} pics, streams should be connected to
+specific points. More precisely, inlet streams enter the scheme coming from the
+tip of the arrow sketch, while outlet streams leave the scheme going into the
+base of the arrow sketch. These special anchor points are marked as
+\chpn{stream} nodes, which positions are indicated in the above drawings by means
+of the abbreviated name \chpn{s}. Other nodes are defined to make the labelling
+of inlets and outlets easier.
+
+\subsection{Nozzles}
+
+It is sometimes useful to highlight nozzles on units to indicate where a fluid
+can go in and where it will come out, if there is a one way path to be followed.
+Two simple pics are defined to accomplish this kind of need. An input nozzle is
+defined as a simple pic called \chpp{input}:
+\begin{chpcode}
+ \pic at (0,0) {input};
+\end{chpcode}
+and yields an empty circle anchored in its centre:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {input};
+ \measure{(-0.05,-0.25)}{(0.05,-0.25)}{\SI{1}{\mm}}
+ \measure{(-0.25,0.05)}{(-0.25,-0.05)}{\SI{1}{\mm}}
+ \pic at (-2.1,0) {input};
+ \pic at (0,0) {anchor mark};
+\end{tikzpicture}
+\end{center}
+while an output nozzle is defined as a simple pic called \chpp{output}:
+\begin{chpcode}
+ \pic at (0,0) {output};
+\end{chpcode}
+and yields a filled circle anchored in its centtr:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {output};
+ \measure{(-0.05,-0.25)}{(0.05,-0.25)}{\SI{1}{\mm}}
+ \measure{(-0.25,0.05)}{(-0.25,-0.05)}{\SI{1}{\mm}}
+ \pic at (-2.1,0) {output};
+ \pic at (0,0) {anchor mark};
+\end{tikzpicture}
+\end{center}
+Both \chpp{input} and \chpp{output} pics are drawn with a \verb|thick| line, the
+same thickness used for units.
+
+Except for the \chpn{anchor} node, placed on the anchor points of the units,
+both \chpp{input} and \chpp{output} have no extra coordinate nodes.
+
+\subsection{Blocks}
+
+Units introduced so far are useful to represent the \ac{PFD} of a chemical
+process, but sometimes it is enough (or required) to represent a process using
+a much more simpler \ac{BFD}, a diagram in which entire sections of the process
+are gathered into a self-explicative block. In order to represent \ac{BFD}s,
+only the \chps{main stream} style should be used for lines. Blocks can be
+obtained by means of a special pic with arguments called \chpp{block}:
+\begin{chpcode}
+ \pic at (0,0) {block=reactor};
+\end{chpcode}
+which yields a rectangle anchored in its centre, with \verb|thick| line
+thickness and containing the specification of the block:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (-5,0) {block=reactor};
+ \pic at (0,0) {block=reactor};
+ \measure{(-1.5,-0.95)}{(1.5,-0.95)}{\SI{30}{\mm}}
+ \measure{(-1.7,0.75)}{(-1.7,-0.75)}{\SI{15}{\mm}}
+ \pic at (0,0) {anchor mark};
+ \pic (B) at (5,0) {block=reactor};
+ \pic at (B-anchor) {anchor mark};
+ \pic at (B-left) {node mark};
+ \pic at (B-bottom) {node mark};
+ \pic at (B-right) {node mark};
+ \pic at (B-top) {node mark};
+ \node[left] at (B-left) {\chpn{l}};
+ \node[below] at (B-bottom) {\chpn{b}};
+ \node[right] at (B-right) {\chpn{r}};
+ \node[above] at (B-top) {\chpn{t}};
+\end{tikzpicture}
+\end{center}
+
+The argument passed to the \chpp{block} pic is its specification, so it should
+be a text string containing the name of the block. Text is, by default, written
+in \verb|\footnotesize| and placed in the centre of the block.
+
+It should be noticed that the definition of the \chpp{block} pic permits to
+split the text passed as argument over multiple lines; use the \verb|\\| command
+to brake lines. For example, the code:
+\begin{chpcode}
+ \pic at (0,0) {block=product\\purification};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {block=product\\purification};
+\end{tikzpicture}
+\end{center}
+and the text is always aligned to the centre of the block.
+
+Nodes defined for the block deserve an explanation. A \ac{BDF} is a very free
+and general representation of a process, thus there are no specific positions
+defined to connect streams. The nodes defined by \chemplants\ are the ones on the
+``remarkable boundaries'' of the block, but a stream may be connected to any
+point of the block. If one wants to connect a stream in a different place with
+respect to the given nodes, coordinates have to be calculated by hand (and it not
+so difficult with a rectangle).
+
+\section{Transforming Units}
+
+As told before, all of the units described so far are shown in their default
+orientation. Anyway, the method of defining them as pics permits to apply all of
+the pic actions available in \TikZ. Among them, the most useful ones are for
+sure tranformations.
+
+\subsubsection{Useful Transformations}
+
+A transformation refers to the manipulation of the coordinates that describe the
+drawing to obtain some specific effects, of example a rotation or a scaling.
+These two are the main transformations which can be applied to units, they will
+be briefly summarised in the following using as a model a
+\chpp{heat exchanger biphase}.
+
+\begin{itemize}
+ \item To make the confrontation easier, the standard
+ \chpp{heat exchanger biphase} is:
+ \begin{center}
+ \begin{tikzpicture}
+ \pic at (0,0) {heat exchanger biphase};
+ \end{tikzpicture}
+ \end{center}
+ \item A pic can be rotated using the \verb|rotate| transformation:
+ \begin{chpcode}[gobble=12]
+ \pic[rotate=90] at (0,0) {heat exchanger biphase};
+ \end{chpcode}
+ which yields:
+ \begin{center}
+ \begin{tikzpicture}
+ \pic[rotate=90] at (0,0) {heat exchanger biphase};
+ \end{tikzpicture}
+ \end{center}
+ \item A pic can be horizontally scaled using the \verb|xscale|
+ transformation:
+ \begin{chpcode}[gobble=12]
+ \pic[xscale=1.5] at (0,0) {heat exchanger biphase};
+ \end{chpcode}
+ which yields:
+ \begin{center}
+ \begin{tikzpicture}
+ \pic[xscale=1.5] at (0,0) {heat exchanger biphase};
+ \end{tikzpicture}
+ \end{center}
+ \item A pic can be vertically scaled using the \verb|yscale|
+ transformation:
+ \begin{chpcode}[gobble=12]
+ \pic[yscale=1.5] at (0,0) {heat exchanger biphase};
+ \end{chpcode}
+ which yields:
+ \begin{center}
+ \begin{tikzpicture}
+ \pic[yscale=1.5] at (0,0) {heat exchanger biphase};
+ \end{tikzpicture}
+ \end{center}
+ \item A pic can be scaled using the \verb|scale| transformation:
+ \begin{chpcode}[gobble=12]
+ \pic[scale=1.5] at (0,0) {heat exchanger biphase};
+ \end{chpcode}
+ which yields:
+ \begin{center}
+ \begin{tikzpicture}
+ \pic[scale=1.5] at (0,0) {heat exchanger biphase};
+ \end{tikzpicture}
+ \end{center}
+\end{itemize}
+
+\subsubsection{Some Tricks}
+
+Now some tricks based on transformations. Even though scaling a unit in a single
+direction can appear useless, this transformation can be used in a clever way.
+One example is ``transforming'' a tank in a wide horizontal basin with a code
+like:
+\begin{chpcode}
+ \pic at (0,0) {tank};
+ \pic[xscale=2.5, yscale=1.25, rotate=90] at (6.75,0) {tank};
+\end{chpcode}
+which yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {tank};
+ \pic[xscale=2.5, yscale=1.25, rotate=90] at (6.75,0) {tank};
+\end{tikzpicture}
+\end{center}
+(Note that, for some obscure reasons, the pic is firstly rotated and then
+scaled).
+
+Another useful trick based on the single direction scaling can be used to flip a
+unit. If a condenser with the utility stream going from left to right is needed,
+the \chpp{condenser} can be flipped horizontally scaling its coordinates by
+a $- 1$ factor, thus inverting them. The code:
+\begin{chpcode}
+ \pic at (0,0) {condenser};
+ \pic[xscale=-1] at (3.4,0) {condenser};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {condenser};
+ \pic[xscale=-1] at (3.4,0) {condenser};
+\end{tikzpicture}
+\end{center}
+This trick works with \verb|yscale| and \verb|scale| as well
+
+Last, but not least, it should be noticed that sequential scaling factors are
+cumulative. The code:
+\begin{chpcode}
+ \pic at (0,0) {centrifugal pump};
+ \pic[scale=2] at (3.5,0) {centrifugal pump};
+ \pic[scale=2, scale=2] at (8.5,0) {centrifugal pump};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {centrifugal pump};
+ \pic[scale=2] at (3.5,0) {centrifugal pump};
+ \pic[scale=2, scale=2] at (8.5,0) {centrifugal pump};
+\end{tikzpicture}
+\end{center}
+in fact the pump in the middle has twice the dimensions of the one on the left,
+while the pump on the right has twice the dimensions of the one in the middle,
+which means four times the dimensions of the one on the left. This
+characteristic of the scaling factors is useful for a feature of \chemplants\
+which will be introduced soon. Note also that the thickness of the lines is not
+scaled, which is the main advantage to scale the geometric description of a
+figure rather than its vectorial representation.
+
+It is important to remark that all of the above mentioned transformations affect
+not just the pics drawings, but also the positions of the nodes defined into
+them. Anyway, names never change, so careful evaluations have to be done when it
+is required to transform a unit and to use its nodes at the same time.
+
+Here are some examples of the most ``invasive'' transformations. Rotating a unit
+rotates also its nodes:
+\begin{center}
+\begin{tikzpicture}
+ \pic (T1) at (0,0) {tank};
+ \pic at (T1-anchor) {anchor mark};
+ \pic at (T1-left) {node mark};
+ \pic at (T1-bottom left) {node mark};
+ \pic at (T1-bottom) {node mark};
+ \pic at (T1-bottom right) {node mark};
+ \pic at (T1-right) {node mark};
+ \pic at (T1-top right) {node mark};
+ \pic at (T1-top) {node mark};
+ \pic at (T1-top left) {node mark};
+ \node[left] at (T1-left) {\chpn{l}};
+ \node[left] at (T1-bottom left) {\chpn{bl}};
+ \node[below] at (T1-bottom) {\chpn{b}};
+ \node[right] at (T1-bottom right) {\chpn{br}};
+ \node[right] at (T1-right) {\chpn{r}};
+ \node[right] at (T1-top right) {\chpn{tr}};
+ \node[above] at (T1-top) {\chpn{t}};
+ \node[left] at (T1-top left) {\chpn{tl}};
+ \pic[rotate=90] (T2) at (5.5,0) {tank};
+ \pic at (T2-anchor) {anchor mark};
+ \pic at (T2-left) {node mark};
+ \pic at (T2-bottom left) {node mark};
+ \pic at (T2-bottom) {node mark};
+ \pic at (T2-bottom right) {node mark};
+ \pic at (T2-right) {node mark};
+ \pic at (T2-top right) {node mark};
+ \pic at (T2-top) {node mark};
+ \pic at (T2-top left) {node mark};
+ \node[below] at (T2-left) {\chpn{l}};
+ \node[below] at (T2-bottom left) {\chpn{bl}};
+ \node[right] at (T2-bottom) {\chpn{b}};
+ \node[above] at (T2-bottom right) {\chpn{br}};
+ \node[above] at (T2-right) {\chpn{r}};
+ \node[above] at (T2-top right) {\chpn{tr}};
+ \node[left] at (T2-top) {\chpn{t}};
+ \node[below] at (T2-top left) {\chpn{tl}};
+\end{tikzpicture}
+\end{center}
+while flipping a unit, for example horizontally with \verb|xscale=-1|, flips
+also its nodes:
+\begin{center}
+\begin{tikzpicture}
+ \pic (B1) at (0,0) {boiler};
+ \pic at (B1-anchor) {anchor mark};
+ \pic at (B1-left) {node mark};
+ \pic at (B1-bottom) {node mark};
+ \pic at (B1-right) {node mark};
+ \pic at (B1-top) {node mark};
+ \pic at (B1-pipes inlet) {node mark};
+ \pic at (B1-pipes outlet) {node mark};
+ \node[left] at (B1-left) {\chpn{l}};
+ \node[below] at (B1-bottom) {\chpn{b}};
+ \node[right] at (B1-right) {\chpn{r}};
+ \node[above] at (B1-top) {\chpn{t}};
+ \node[left] at (B1-pipes inlet) {\chpn{pi}};
+ \node[right] at (B1-pipes outlet) {\chpn{po}};
+ \pic[xscale=-1] (B2) at (3.4,0) {boiler};
+ \pic at (B2-anchor) {anchor mark};
+ \pic at (B2-left) {node mark};
+ \pic at (B2-bottom) {node mark};
+ \pic at (B2-right) {node mark};
+ \pic at (B2-top) {node mark};
+ \pic at (B2-pipes inlet) {node mark};
+ \pic at (B2-pipes outlet) {node mark};
+ \node[right] at (B2-left) {\chpn{l}};
+ \node[below] at (B2-bottom) {\chpn{b}};
+ \node[left] at (B2-right) {\chpn{r}};
+ \node[above] at (B2-top) {\chpn{t}};
+ \node[right] at (B2-pipes inlet) {\chpn{pi}};
+ \node[left] at (B2-pipes outlet) {\chpn{po}};
+\end{tikzpicture}
+\end{center}
+
+Finally, some special considerations concerning associative pics used to give
+flexible representation of reactors. It has been specified that the
+\chpp{tank reactor} is analogue to the \chpp{tank} and that the scale factor to
+``convert'' the first into the second is \num{1.25}. This is useful, for
+example, if one has to represent a stirrer within a tank. The code:
+\begin{chpcode}
+ \pic (T) at (0,0) {tank};
+ \pic[scale=1.25] at (T-anchor) {stirrer};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic (T) at (0,0) {tank};
+ \pic[scale=1.25] at (T-anchor) {stirrer};
+\end{tikzpicture}
+\end{center}
+This is just an example, but this trick can be used to associate any two pics
+one wants to bond.
+
+The \chpp{stirrer} can be subject to another transformation not mentioned yet. By
+default, the pic is slanted to avoid that the interception point between the
+shaft of the stirrer and the dome of the tank reactor falls on the \chpn{top}
+node of the tank. If one does not like the slanted shape of the \chpp{stirrer}
+and prefers to have a straight stirrer, the \verb|xslant| transformation can be
+used. The code:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic[xslant=-0.285, xshift=-2.04] at (R-anchor) {stirrer};
+\end{chpcode}
+yields:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic[xslant=-0.285, xshift=-2.04] at (R-anchor) {stirrer};
+\end{tikzpicture}
+\end{center}
+As it can be seen, the transformation is not that straightforward, in fact also a
+little of shift in the $x$ direction is needed.
+
+Finally, the mirroring trick based on the \verb|xscale=-1| transformation can be
+used to mirror both the \chpp{sprayer} and the \chpp{bubbler} to connect
+them to the right side of the \chpp{tank reactor} rather than to its left.
+Taking as an example a jacketed sparger reactor, if one wants the gas to enter
+from the right side, the code:
+\begin{chpcode}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {jacket};
+ \pic at (R-anchor) {stirrer};
+ \pic[xscale=-1] at (R-bottom right) {bubbler};
+\end{chpcode}
+will do the job:
+\begin{center}
+\begin{tikzpicture}
+ \pic (R) at (0,0) {tank reactor};
+ \pic at (R-anchor) {jacket};
+ \pic at (R-anchor) {stirrer};
+ \pic[xscale=-1] at (R-bottom right) {bubbler};
+\end{tikzpicture}
+\end{center}
+
+\section{Customisation}
+
+Some of the graphical aspects used by the \chemplants\ package can be
+customised at will of the user. Of course, symbols of the units should not be
+changed, but there could be some precise necessities that makes the standard
+\chemplants\ parameters unsuitable to accomplish requirements. A case could be
+the need to draw the scheme of a big process: standard dimensione of units may
+make the whole diagram too large to fit it into a single sheet. Another case is
+when one is not satisfied by the default unit or streams line thicknesses and
+would like to change them.
+
+To solve issues like these, \chemplants\ provides a rudimental mechanism to set
+a number of graphical features of streams and units. In the following, the
+customisable parameters are described.
+
+Styles for streams can be tuned setting arrow tips and line thickness; the
+former is common to all of the streams and the latter is specific to each stream
+style.
+\begin{itemize}
+ \item Arrow tip used by \chps{main stream}, \chps{secondary stream} and
+ \chps{utility stream} styles can be set using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpstreamtip{£!\meta{arrow tip}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ arrow tip; default
+ value is \verb|stealth|.
+ \item Line thickness used by the \chps{main stream} style can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchpmainstreamthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|semithick|.
+ \item Line thickness used by the \chps{secondary stream} style can be set
+ using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpsecondarystreamthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|thin|.
+ \item Line thickness used by the \chps{utility stream} style can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchputilitystreamthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|very thin|.
+\end{itemize}
+
+Styles for units can be tuned setting line thickness and unit base dimension.
+The latter is extremely important because permits to scale all of the units by a
+given scale factor, thus enabling the overall scaling by means of a single
+command. Units can furthermore be scaled individually witusing the \verb|scale|
+transformation thanks to the cumulative behaviour of scaling factors.
+\begin{itemize}
+ \item Line thickness used by all of the units defined as pics can be set
+ using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpunitthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|thick|.
+ \item Scale factor to be applied to all of the units defined as pics can be
+ set using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpunitscale{£!\meta{scale factor}!£}
+ \end{chpcode}
+ which requires as argument a numerical value to be used as scale factor
+ and that will multiply every dimension of all of the units; default
+ value is \verb|1|.
+\end{itemize}
+
+Styles for control instrumentation can be tuned setting signal style line
+thickness, instruments pics line thickness, font dimension and base dimension.
+This last feature works exactly like the one of units, but it is a different
+parameter in order to allow independent scaling of units and instruments.
+\begin{itemize}
+ \item Line thickness used by the \chps{signal} style can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchpsignalthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|very thin|.
+ \item Line thickness used by all of the instrumentation defined as pics can
+ be set using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpinstrumentthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|thin|.
+ \item Scale factor to be applied to all of the instrumentation defined as
+ pics can be set using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpinstrumentscale{£!\meta{scale factor}!£}
+ \end{chpcode}
+ which requires as argument a numerical value to be used as scale factor
+ and that will multiply every dimension of all of the instrumentation;
+ default value is \verb|1|.
+ \item Font size to be used within all of the instrumentation defined as
+ pics can be set using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpinstrumentfontsize{£!\meta{font size}!£}
+ \end{chpcode}
+ which requires as argument a font size attribute understood by \LaTeX;
+ default value is \verb|\footnotesize|.
+\end{itemize}
+
+Since parameters of both units and instrumentation have been introduced, it is
+possible to better specify how these features influence the \chpp{actuator}
+pic, a sort of hybrid between a unit and an instrument. As told before,
+\chpp{actuator} is sensible to instruments line thickness, but not to their
+dimensions, in fact it is defined in relative terms to the unit dimensions.
+This means that \verb|\setchpunitscale| will change the scale of the
+\chpp{actuator}, while \verb|\setchpinstrumentthickness| will change its line
+thickness.
+
+Styles for hidden streams and components can be tuned setting line patterns for
+both styles.
+\begin{itemize}
+ \item Line pattern used by the \chps{hidden stream} style can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchphiddenstreamstyle{£!\meta{line pattern}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line pattern; default
+ value is \verb|dashed|.
+ \item Line pattern used by the \chps{hidden component} style can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchphiddencomponentstyle{£!\meta{line pattern}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line pattern; default
+ value is \verb|densely dotted|.
+\end{itemize}
+
+
+Styles for the \verb|\measure| command can be tuned setting line color, tips and
+thickness, plus font size of the measure value.
+\begin{itemize}
+ \item Line color used by the \verb|\measure| command can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchpmeasurecolor{£!\meta{line color}!£}
+ \end{chpcode}
+ which requires as argument whichever expression can be used to indicate
+ a color in \LaTeX; default value is \verb|gray|.
+ \item Line thickness used by the \verb|\measure| command can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchpmeasurethickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|thin|.
+ \item Line tip used by the \verb|\measure| command can be set using the
+ command:
+ \begin{chpcode}[gobble=12]
+ \setchpmeasuretip{£!\meta{line tip}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ arrow tip; default
+ value is \verb!|!.
+ \item Font size to be used within the \verb|\measure| command can be set
+ using the command:
+ \begin{chpcode}[gobble=12]
+ \setchpmeasurefontsize{£!\meta{font size}!£}
+ \end{chpcode}
+ which requires as argument a font size attribute understood by \LaTeX;
+ default value is \verb|\footnotesize|.
+\end{itemize}
+
+For what concerns the \verb|\measure| line tip, it should be noticed that there
+is no possibility to set different tips for the two extremes of the line.
+Using the name of an arrow tip will yield the same tip pointing out on both
+sides. For example, after:
+\begin{chpcode}
+ \setchpmeasuretip{stealth}
+\end{chpcode}
+\setchpmeasuretip{stealth}
+the \verb|\measure| will appear again as:
+\begin{center}
+\begin{tikzpicture}
+ \measure{(0,0)}{(2,0)}{\SI{2}{\cm}}
+\end{tikzpicture}
+\end{center}
+
+Although rudimental, the customisation mechanism of \chemplants\ offers a very
+useful opportunity. After giving a new:
+\begin{chpcode}
+ \setchpmeasuretip{|}
+\end{chpcode}
+\setchpmeasuretip{|}
+the \verb|\measure| will appear again as:
+\begin{center}
+\begin{tikzpicture}
+ \measure{(0,0)}{(2,0)}{\SI{2}{\cm}}
+\end{tikzpicture}
+\end{center}
+and this means that all of the setting commands listed above act like
+declarations and have local validity, so they can be changed everywhere into the
+document (even multiple times inside the same \verb|tikzpicture| environment).
+This is particularly useful to solve the problem introduced above as example,
+the possibly too large base dimension of units in the case of large diagrams. One
+can simply scale down all of the units before the scheme and restore the default
+unit scale after that. An example. After giving:
+\begin{chpcode}
+ \setchpunitscale{0.5}
+\end{chpcode}
+\setchpunitscale{0.5}
+all of the units will be half their default sizes:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {centrifugal pump};
+ \pic at (3,0) {heat exchanger};
+ \pic at (6,0) {column=packed};
+\end{tikzpicture}
+\end{center}
+and after a new:
+\begin{chpcode}
+ \setchpunitscale{1}
+\end{chpcode}
+\setchpunitscale{1}
+all of the units will be restored to their default dimensions:
+\begin{center}
+\begin{tikzpicture}
+ \pic at (0,0) {centrifugal pump};
+ \pic at (3,0) {heat exchanger};
+ \pic at (6,0) {column=packed};
+\end{tikzpicture}
+\end{center}
+
+Styles for blocks can be tuned setting line thickness, font dimension and base
+dimension. Also this last feature, like the scale factor for instruments,
+regards blocks only and it is independent of the units scale factor.
+\begin{itemize}
+ \item Line thickness used by the \chpp{block} pic can be set using the
+ command:
+ \begin{chpcode}[gobble=12]
+ \setchpblockthickness{£!\meta{line thickness}!£}
+ \end{chpcode}
+ which requires as argument the name of a \TikZ\ line thickness; default
+ value is \verb|thick|.
+ \item Scale factor to be applied to the \chpp{block} pic can be set using
+ the command:
+ \begin{chpcode}[gobble=12]
+ \setchpblockscale{£!\meta{scale factor}!£}
+ \end{chpcode}
+ which requires as argument a numerical value to be used as scale factor
+ and that will multiply every dimension of the block; default value is
+ \verb|1|.
+ \item Font size to be used within the \chpp{block} pic can be set using the
+ command:
+ \begin{chpcode}[gobble=12]
+ \setchpinstrumentfontsize{£!\meta{font size}!£}
+ \end{chpcode}
+ which requires as argument a font size attribute understood by \LaTeX;
+ default value is \verb|\footnotesize|.
+\end{itemize}
+
+A last remark: the listed commands permit to easily tune a number of graphical
+parameters in order to satisfy different necessities. Demanding users who have
+a good knowledge of the \TikZ\ package can anyway customise even more the styles
+used by \chemplants\ looking for the code of the package and modifying the
+``internal styles'' (the ones not meant to be used directly by the ``common''
+user and prefixed by \verb|chp|) as they like, but at their own risk.
+
+\section{Examples}
+
+\tikzset{every node/.style={}}
+
+Some ``complete'' examples will be presented in order to give a better view
+of how the \chemplants\ package works. Both codes and resulting diagrams will be
+shown.
+
+\subsubsection{Some Remarks on the Drawing Procedure}
+
+If some users want to try and replicate (copy and paste) the examples, they are
+free to do that. In this case they will find useful to add some additional macros
+to their preambles, some commands I defined during time and that I use
+extensively:
+\begin{chpcode}
+ \renewcommand{\vec}[1]{\boldsymbol{#1}} % vector notation
+ \newcommand{\flow}[1]{\dot{#1}} % flow-rate notation
+\end{chpcode}
+and which I defined only for easiness of change. Moreover, one of the examples
+will use the basic system to parse chemistry notation of the \chemformula\
+package (that, by the way, is an excellent suite for documents dealing with
+chemistry). Finally, two macros defined by the Italian option passed to the
+\babel\ package:
+\begin{chpcode}
+ \providecommand*{\ap}[1]{% % upright superscripts
+ \textormath{%
+ \textsuperscript{#1}%
+ }%
+ {%
+ ^{\mathrm{#1}}%
+ }%
+ }
+ \providecommand*{\ped}[1]{% % upright subscripts
+ \textormath{%
+ $_{\mbox{\fontsize\sf@size\z@\selectfont#1}}$%
+ }%
+ {%
+ _\mathrm{#1}%
+ }%
+ }
+\end{chpcode}
+
+Before moving on to the real examples it is useful to recall the two main
+approaches one can follow to draw the scheme of a chemical process. As a general
+rule, it is almost always better to plan the scheme before starting its real
+drawing, where ``to plan'' means to decide where to put units, how to connect
+them through streams, where signal lines should pass on the scheme, how much
+space is required between units and so on. This permits to avoid to reach the end
+of the scheme and to realize only too late that it is too large to fit on the
+page, when spacing units a little less would have solved the problem.
+
+Once the plan has been done, it is possible to move to the real construction of
+the drawing, but here it is necessary to choose the approach:
+\begin{itemize}
+ \item building the scheme thinking linearly (following the streams) and
+ calculating by hand the coordinates of the points in which units will
+ be placed and in which streams will be connected;
+ \item building the scheme thinking in a more global way, placing units first
+ and then using their coordinates nodes to connect them through streams
+ and signals.
+\end{itemize}
+As told before, the second way requires a little more practice, but the
+resulting scheme is much more easy to obtain and flexible to modify (even though
+the code can be slightly more complex to read). Anyway, users are free to choose
+the approach they like the most, being ready to accept all of its implications.
+
+In the following examples, both approaches will be shown, but not for the
+same code: some of the examples will be structured calculating coordinates by
+hand, while the remaining will use nodes. (Readers should use care in deciding to
+follow strictly the drawing methods which will be shown in the following codes,
+in fact examples are mainly the schemes I had to represent. It is likely that
+better ways to draw a scheme can be found.)
+
+\subsubsection{Hand Calculation of Coordinates}
+
+\begin{chpcode}[caption=Scheme of a flash process.,
+ label=lst:flash]
+ \begin{tikzpicture}
+ \draw[main stream] (-0.5,0) -- (1.5,0);
+ \node[above right] at (-0.5,0) {$\flow{n}\ap{F}, \vec{z}$};
+ \pic at (1.5,0) {centrifugal pump};
+ \draw[main stream] (1.5,0.4) -- (3,0.4);
+ \pic at (3.5,0.4) {heat exchanger};
+ \draw[utility stream] (3.5,1.4) -- (3.5,0.9);
+ \node[above left] at (3.5,0.9) {$\flow{Q}$};
+ \draw[utility stream] (3.5,-0.1) -- (3.5,-0.6);
+ \draw[main stream] (4,0.4) -- (4.8,0.4);
+ \pic at (5,0.4) {lamination valve};
+ \draw[main stream] (5.2,0.4) -- (6,0.4);
+ \node[above left] at (6,0.4) {$P$};
+ \pic at (6.8,0.4) {gas-liquid separator};
+ \draw[main stream] (6.8,1.9) |- (9,2.5);
+ \node[above left] at (9,2.5) {$\flow{n}\ap{V}, \vec{y}$};
+ \draw[main stream] (6.8,-1.1) |- (9,-1.7);
+ \node[below left] at (9,-1.7) {$\flow{n}\ap{L}, \vec{x}$};
+ \end{tikzpicture}
+\end{chpcode}
+
+\begin{figure}
+\centering
+\begin{tikzpicture}
+ \draw[main stream] (-0.5,0) -- (1.5,0);
+ \node[above right] at (-0.5,0) {$\flow{n}\ap{F}, \vec{z}$};
+ \pic at (1.5,0) {centrifugal pump};
+ \draw[main stream] (1.5,0.4) -- (3,0.4);
+ \pic at (3.5,0.4) {heat exchanger};
+ \draw[utility stream] (3.5,1.4) -- (3.5,0.9);
+ \node[above left] at (3.5,0.9) {$\flow{Q}$};
+ \draw[utility stream] (3.5,-0.1) -- (3.5,-0.6);
+ \draw[main stream] (4,0.4) -- (4.8,0.4);
+ \pic at (5,0.4) {lamination valve};
+ \draw[main stream] (5.2,0.4) -- (6,0.4);
+ \node[above left] at (6,0.4) {$P$};
+ \pic at (6.8,0.4) {gas-liquid separator};
+ \draw[main stream] (6.8,1.9) |- (9,2.5);
+ \node[above left] at (9,2.5) {$\flow{n}\ap{V}, \vec{y}$};
+ \draw[main stream] (6.8,-1.1) |- (9,-1.7);
+ \node[below left] at (9,-1.7) {$\flow{n}\ap{L}, \vec{x}$};
+\end{tikzpicture}
+\caption{Scheme of a flash process produced by the \lref{lst:flash} code.}
+\label{fig:flash}
+\end{figure}
+
+\begin{chpcode}[caption=Scheme of a countercurrent multiple flash process.,
+ label=lst:mflash]
+ \begin{tikzpicture}
+ \draw[main stream] (0.5,0) -- (2,0);
+ \node[above right] at (0.5,0)
+ {$\flow{n}\ap{F}, \vec{z}\ap{F}$};
+ \pic at (3,0) {tank};
+ \draw[main stream] (3,1.5) |- (5,2);
+ \node[above] at (3,2)
+ {$\flow{n}\ap{V_\mathit{j + 1}},
+ \vec{y}\ap{V_\mathit{j + 1}}$};
+ \pic at (6,3) {tank};
+ \draw[main stream] (6,4.5) |- (8.333,5) |- (9,2);
+ \node[above] at (6,5)
+ {$\flow{n}\ap{V_\mathit{j}},
+ \vec{y}\ap{V_\mathit{j}}$};
+ \pic at (10,3) {tank};
+ \draw[main stream] (10,4.5) |- (12.3,5);
+ \pic[rotate=180] at (12.5,5) {valve triple=main};
+ \draw[main stream] (12.7,5) -- (14,5);
+ \node[above left] at (14,5)
+ {$\flow{n}\ap{D}, \vec{y}\ap{D}$};
+ \draw[main stream] (12.5,4.8) -- (12.5,4);
+ \pic[rotate=-90] at (12.5,3.5) {heat exchanger};
+ \draw[utility stream] (11.5,3.5) -- (12,3.5);
+ \draw[utility stream] (13,3.5) -- (13.5,3.5);
+ \node[above] at (13.5,3.5) {$\flow{Q}\ped{C}$};
+ \draw[main stream] (12.5,3) |- (11,2);
+ \draw[main stream] (10,1.5) |- (7.688,1) |- (7,4);
+ \node[below] at (10,1)
+ {$\flow{n}\ap{L_1}, \vec{x}\ap{L_1}$};
+ \draw[main stream] (6,1.5) |- (4,1);
+ \node[below] at (6,1)
+ {$\flow{n}\ap{L_\mathit{j}},
+ \vec{x}\ap{L_\mathit{j}}$};
+ \draw[main stream] (3,-1.5) |- (5,-2);
+ \node[below] at (3,-2)
+ {$\flow{n}\ap{L_\mathit{k - 1}},
+ \vec{x}\ap{L_\mathit{k - 1}}$};
+ \pic at (6,-3) {tank};
+ \draw[main stream] (6,-4.5) |- (8.333,-5) |- (9,-2);
+ \node[below] at (6,-5)
+ {$\flow{n}\ap{L_\mathit{k}},
+ \vec{x}\ap{L_\mathit{k}}$};
+ \pic at (10,-3) {tank};
+ \draw[main stream] (10,-4.5) |- (12.3,-5);
+ \pic at (12.5,-5) {valve triple=main};
+ \draw[main stream] (12.7,-5) -- (14,-5);
+ \node[below left] at (14,-5)
+ {$\flow{n}\ap{R}, \vec{x}\ap{R}$};
+ \draw[main stream] (12.5,-4.8) -- (12.5,-4);
+ \pic[rotate=-90] at (12.5,-3.5) {heat exchanger};
+ \draw[utility stream] (13.5,-3.5) -- (13,-3.5);
+ \draw[utility stream] (12,-3.5) -- (11.5,-3.5);
+ \node[below] at (13.5,-3.5) {$\flow{Q}\ped{B}$};
+ \draw[main stream] (12.5,-3) |- (11,-2);
+ \node[above] at (6,-1)
+ {$\flow{n}\ap{V_\mathit{k}},
+ \vec{y}\ap{V_\mathit{k}}$};
+ \draw[main stream] (10,-1.5) |- (7.688,-1) |- (7,-4);
+ \node[above] at (10,-1)
+ {$\flow{n}\ap{V_{\mathit{N\ped{T}}}},
+ \vec{y}\ap{V_{\mathit{N\ped{T}}}}$};
+ \draw[main stream] (6,-1.5) |- (4,-1);
+ \end{tikzpicture}
+\end{chpcode}
+
+\begin{figure}
+\centering
+\begin{tikzpicture}
+ \draw[main stream] (0.5,0) -- (2,0);
+ \node[above right] at (0.5,0)
+ {$\flow{n}\ap{F}, \vec{z}\ap{F}$};
+ \pic at (3,0) {tank};
+ \draw[main stream] (3,1.5) |- (5,2);
+ \node[above] at (3,2)
+ {$\flow{n}\ap{V_\mathit{j + 1}},
+ \vec{y}\ap{V_\mathit{j + 1}}$};
+ \pic at (6,3) {tank};
+ \draw[main stream] (6,4.5) |- (8.333,5) |- (9,2);
+ \node[above] at (6,5)
+ {$\flow{n}\ap{V_\mathit{j}},
+ \vec{y}\ap{V_\mathit{j}}$};
+ \pic at (10,3) {tank};
+ \draw[main stream] (10,4.5) |- (12.3,5);
+ \pic[rotate=180] at (12.5,5) {valve triple=main};
+ \draw[main stream] (12.7,5) -- (14,5);
+ \node[above left] at (14,5)
+ {$\flow{n}\ap{D}, \vec{y}\ap{D}$};
+ \draw[main stream] (12.5,4.8) -- (12.5,4);
+ \pic[rotate=-90] at (12.5,3.5) {heat exchanger};
+ \draw[utility stream] (11.5,3.5) -- (12,3.5);
+ \draw[utility stream] (13,3.5) -- (13.5,3.5);
+ \node[above] at (13.5,3.5) {$\flow{Q}\ped{C}$};
+ \draw[main stream] (12.5,3) |- (11,2);
+ \draw[main stream] (10,1.5) |- (7.688,1) |- (7,4);
+ \node[below] at (10,1)
+ {$\flow{n}\ap{L_1}, \vec{x}\ap{L_1}$};
+ \draw[main stream] (6,1.5) |- (4,1);
+ \node[below] at (6,1)
+ {$\flow{n}\ap{L_\mathit{j}},
+ \vec{x}\ap{L_\mathit{j}}$};
+ \draw[main stream] (3,-1.5) |- (5,-2);
+ \node[below] at (3,-2)
+ {$\flow{n}\ap{L_\mathit{k - 1}},
+ \vec{x}\ap{L_\mathit{k - 1}}$};
+ \pic at (6,-3) {tank};
+ \draw[main stream] (6,-4.5) |- (8.333,-5) |- (9,-2);
+ \node[below] at (6,-5)
+ {$\flow{n}\ap{L_\mathit{k}},
+ \vec{x}\ap{L_\mathit{k}}$};
+ \pic at (10,-3) {tank};
+ \draw[main stream] (10,-4.5) |- (12.3,-5);
+ \pic at (12.5,-5) {valve triple=main};
+ \draw[main stream] (12.7,-5) -- (14,-5);
+ \node[below left] at (14,-5)
+ {$\flow{n}\ap{R}, \vec{x}\ap{R}$};
+ \draw[main stream] (12.5,-4.8) -- (12.5,-4);
+ \pic[rotate=-90] at (12.5,-3.5) {heat exchanger};
+ \draw[utility stream] (13.5,-3.5) -- (13,-3.5);
+ \draw[utility stream] (12,-3.5) -- (11.5,-3.5);
+ \node[below] at (13.5,-3.5) {$\flow{Q}\ped{B}$};
+ \draw[main stream] (12.5,-3) |- (11,-2);
+ \node[above] at (6,-1)
+ {$\flow{n}\ap{V_\mathit{k}},
+ \vec{y}\ap{V_\mathit{k}}$};
+ \draw[main stream] (10,-1.5) |- (7.688,-1) |- (7,-4);
+ \node[above] at (10,-1)
+ {$\flow{n}\ap{V_{\mathit{N\ped{T}}}},
+ \vec{y}\ap{V_{\mathit{N\ped{T}}}}$};
+ \draw[main stream] (6,-1.5) |- (4,-1);
+\end{tikzpicture}
+\caption{Scheme of a countercurrent multiple flash process produced by the
+ \lref{lst:mflash} code.}
+\label{fig:mflash}
+\end{figure}
+
+\begin{chpcode}[caption=Scheme of a continuous distillation process.,
+ label=lst:distil]
+ \begin{tikzpicture}
+ \draw [main stream] (-2,0) -- (-0.5,0);
+ \node[above right] at (-2,0)
+ {$\flow{n}\ap{F}, \vec{z}\ap{F}$};
+ \pic at (0,0) {column=trayed};
+ \pic at (1.5,3.5) {condenser};
+ \draw [main stream] (0,3) |- (1,3.5);
+ \node [above right] at (0,3.5) {$\flow{n}\ap{V}$};
+ \draw [main stream] (1.5,4) |- (3,4.5);
+ \node[above left] at (3,4.5)
+ {$\flow{n}\ap{D}, \vec{y}\ap{D}$};
+ \draw [secondary stream] (1.5,3) |- (0.5,2.6);
+ \node [below left] at (1.5,2.6) {$\flow{n}\ap{L}$};
+ \pic at (1.5,-3.5) {boiler};
+ \draw [main stream] (0,-3) |- (1,-3.5);
+ \node [below right] at (0,-3.5) {$\flow{n}\ap{L'}$};
+ \draw [main stream] (1.5,-4) |- (3,-4.5);
+ \node[below left] at (3,-4.5)
+ {$\flow{n}\ap{R}, \vec{x}\ap{R}$};
+ \draw [secondary stream] (1.5,-3) |- (0.5,-2.6);
+ \node [above left] at (1.5,-2.6) {$\flow{n}\ap{V'}$};
+ \end{tikzpicture}
+\end{chpcode}
+
+\begin{figure}
+\centering
+\begin{tikzpicture}
+ \draw [main stream] (-2,0) -- (-0.5,0);
+ \node[above right] at (-2,0)
+ {$\flow{n}\ap{F}, \vec{z}\ap{F}$};
+ \pic at (0,0) {column=trayed};
+ \pic at (1.5,3.5) {condenser};
+ \draw [main stream] (0,3) |- (1,3.5);
+ \node [above right] at (0,3.5) {$\flow{n}\ap{V}$};
+ \draw [main stream] (1.5,4) |- (3,4.5);
+ \node[above left] at (3,4.5)
+ {$\flow{n}\ap{D}, \vec{y}\ap{D}$};
+ \draw [secondary stream] (1.5,3) |- (0.5,2.6);
+ \node [below left] at (1.5,2.6) {$\flow{n}\ap{L}$};
+ \pic at (1.5,-3.5) {boiler};
+ \draw [main stream] (0,-3) |- (1,-3.5);
+ \node [below right] at (0,-3.5) {$\flow{n}\ap{L'}$};
+ \draw [main stream] (1.5,-4) |- (3,-4.5);
+ \node[below left] at (3,-4.5)
+ {$\flow{n}\ap{R}, \vec{x}\ap{R}$};
+ \draw [secondary stream] (1.5,-3) |- (0.5,-2.6);
+ \node [above left] at (1.5,-2.6) {$\flow{n}\ap{V'}$};
+\end{tikzpicture}
+\caption{Scheme of a continuous distillation process produced by the
+ \lref{lst:distil} code.}
+\label{fig:distil}
+\end{figure}
+
+The following is the very first usage I did of \chemplants\ (when it was just a
+foggy idea), and, probably, still the most complex one. In this scheme, I had
+the need to represent sensors on valves, so I used the \chpp{actuator} pic to
+this aim.
+
+\begin{chpcode}[caption=Complete \ac{PFD} of a vanadium redox flow battery pilot
+plant., label=lst:vrfbis]
+ \begin{tikzpicture}[font=\footnotesize]
+ % Positive Electrolyte
+ % tank outlet
+ \pic at (3,3.5) {tank};
+ \node[align=center] at (3,4) {Positive\\ Electrolyte};
+ \node at (3,3) {\ch{VO2+}/\ch{VO^2+}};
+ \draw[main stream] (3,2) -- (3,1.7);
+ \pic[rotate=90] at (3,1.5) {valve triple=main};
+ \draw[main stream] (3,1.3) |- (2,0.6);
+ \pic at (2,0.6) {centrifugal pump};
+ \draw[main stream] (2,1) -| (1,1.3);
+ \pic[rotate=270] at (1,1.5) {valve triple=main};
+ % pump recycle
+ \draw[secondary stream] (1.2,1.5) -- (1.8,1.5);
+ \pic at (2,1.5) {valve=secondary};
+ \node[above] at (2,1.5) {$V\ped{P}^+$};
+ \draw[secondary stream] (2.2,1.5) -- (2.8,1.5);
+ % battery stream
+ \draw[main stream] (1,1.7) -- (1,3);
+ \pic at (1,3.5) {instrument=FM};
+ \draw[main stream] (1,4) -- (1,5.3);
+ \draw[signal] (0.5,3.5) -| (0.25,2.5);
+ \pic at (0.25,2) {controller=PID};
+ \draw[signal] (0.25,1.5) |- (1.6,0.6);
+ \pic[rotate=90] at (1,5.5) {valve=main};
+ \node[right] at (1,5.5) {$V_1^+$};
+ \draw[main stream] (1, 5.7) |- (2.8,6.9);
+ \pic[rotate=90] at (3,6.9) {valve triple=main};
+ \draw[main stream] (3,7.1) |- (6.2,7.5);
+ \pic at (4,8.5) {instrument=TM};
+ \draw[short signal] (4,8) -- (4,7.5);
+ % battery bypass
+ \draw[secondary stream] (3,6.7) -- (3,6.4);
+ \pic[rotate=270] at (3,6.2) {valve=secondary};
+ \pic[rotate=270] at (3,6.2) {actuator};
+ \node[left] at (3,6.2) {$V\ped{B}^+$};
+ \draw[secondary stream] (3,6) -- (3,5.7);
+ % battery outlet
+ \draw[main stream] (8,7) |- (5.2,5.5);
+ \pic at (6,4.5) {instrument=TM};
+ \draw [short signal] (6,5) -- (6,5.5);
+ \pic at (5,5.5) {valve=main};
+ \pic at (5,5.5) {actuator};
+ \node[below] at (5,5.5) {$V_2^+$};
+ \draw[main stream] (4.8,5.5) -- (3.2,5.5);
+ \pic at (5,6.5) {instrument=PM};
+ \draw[short signal] (5,7) -- (5,7.5);
+ \draw[signal] (5.5,6.5) -- (7,6.5);
+ % tank inlet
+ \pic[rotate=270] at (3,5.5) {valve triple=main};
+ \draw[main stream] (3,5.3) -- (3,5);
+ % Negative Electrolyte
+ % tank outlet
+ \pic at (12,3.5) {tank};
+ \node[align=center] at (12,4) {Negative\\ Electrolyte};
+ \node at (12,3) {\ch{V^3+}/\ch{V^2+}};
+ \draw[main stream] (12,2) -- (12,1.7);
+ \pic[rotate=270] at (12,1.5) {valve triple=main};
+ \draw[main stream] (12,1.3) |- (13,0.6);
+ \pic at (13,0.6) {centrifugal pump};
+ \draw[main stream] (13,1) -| (14,1.3);
+ \pic[rotate=90] at (14,1.5) {valve triple=main};
+ % pump recycle
+ \draw[secondary stream] (13.8,1.5) -- (13.2,1.5);
+ \pic at (13,1.5) {valve=secondary};
+ \node[above] at (13,1.5) {$V\ped{P}^-$};
+ \draw[secondary stream] (12.8,1.5) -- (12.2,1.5);
+ % battery stream
+ \draw[main stream] (14,1.7) -- (14,3);
+ \pic at (14,3.5) {instrument=FM};
+ \draw[main stream] (14,4) -- (14,5.3);
+ \draw[signal] (14.5,3.5) -| (14.75,2.5);
+ \pic at (14.75,2) {controller=PID};
+ \draw[signal] (14.75,1.5) |- (13.4,0.6);
+ \pic[rotate=90] at (14,5.5) {valve=main};
+ \node[left] at (14,5.5) {$V_1^-$};
+ \draw[main stream] (14, 5.7) |- (12.2,6.9);
+ \pic[rotate=270] at (12,6.9) {valve triple=main};
+ \draw[main stream] (12,7.1) |- (8.8,7.5);
+ \pic at (11,8.5) {instrument=TM};
+ \draw[short signal] (11,8) -- (11,7.5);
+ % battery bypass
+ \draw[secondary stream] (12,6.7) -- (12,6.4);
+ \pic[rotate=90] at (12,6.2) {valve=secondary};
+ \pic[rotate=90] at (12,6.2) {actuator};
+ \node[right] at (12,6.2) {$V\ped{B}^-$};
+ \draw[secondary stream] (12,6) -- (12,5.7);
+ % battery outlet
+ \draw[main stream] (7,7) |- (8.5,5) |- (9.8,5.5);
+ \pic at (9,4.5) {instrument=TM};
+ \draw[short signal] (9,5) -- (9,5.5);
+ \pic at (10,5.5) {valve=main};
+ \pic at (10,5.5) {actuator};
+ \node[below] at (10,5.5) {$V_2^-$};
+ \draw[main stream] (10.2,5.5) -- (11.8,5.5);
+ \pic at (10,6.5) {instrument=PM};
+ \draw[short signal] (10,7) -- (10,7.5);
+ \draw[signal] (9.5,6.5) -- (8,6.5);
+ % tank inlet
+ \pic[rotate=90] at (12,5.5) {valve triple=main};
+ \draw[main stream] (12,5.3) -- (12,5);
+ % Battery
+ % block structure
+ \draw[thick] (6,7) rectangle (9, 9.6);
+ \node[above] at (7.5,9.6) {Battery};
+ % positive main stream
+ \pic at (6.2,7.5) {input};
+ \draw[main stream, hidden stream]
+ (6.2,7.55) |- (7.8,9.2) |- (7.95,8.5);
+ \pic at (8,8.5) {output};
+ \draw[main stream] (8,8.5) -- (8.3,8.5);
+ \pic[rotate=90] at (8.5,8.5) {valve triple=main};
+ \pic[rotate=270] at (8.5,8.5) {actuator};
+ \draw[main stream] (8.5,8.3) |- (8,8);
+ \pic at (8,8) {input};
+ \draw[main stream, hidden stream] (8,7.95) -- (8,7.7);
+ \pic[rotate=90, hidden component] at (8,7.5)
+ {valve triple=main};
+ \draw[main stream, hidden stream] (8,7.3) -- (8,7);
+ % negative main stream
+ \pic at (8.8,7.5) {input};
+ \draw[main stream, hidden stream]
+ (8.8,7.55) |- (7.2,9.4) |- (7.05,8.5);
+ \pic at (7,8.5) {output};
+ \draw[main stream] (7,8.5) -- (6.7,8.5);
+ \pic[rotate=270] at (6.5,8.5) {valve triple=main};
+ \pic[rotate=90] at (6.5,8.5) {actuator};
+ \draw[main stream] (6.5,8.3) |- (7,8);
+ \pic at (7,8) {input};
+ \draw[main stream, hidden stream] (7,7.95) -- (7,7.7);
+ \pic[rotate=270, hidden component] at (7,7.5)
+ {valve triple=main};
+ \draw[main stream, hidden stream] (7,7.3) -- (7,7);
+ % positive to negative remixing
+ \draw[secondary stream, color=red] (8.5,8.7) |- (8,9);
+ \pic at (8,9) {input};
+ \draw[secondary stream, hidden stream, color=red]
+ (7.95,9) -| (7.4,7.5) -- (7.2,7.5);
+ % negative to positive remixing
+ \draw[secondary stream, color=red] (6.5,8.7) |- (7,9);
+ \pic at (7,9) {input};
+ \draw[secondary stream, hidden stream, color=red]
+ (7,8.95) |- (7.6,8.75) |- (7.8,7.5);
+ % Tanks Connection
+ \draw (4,2.585) -- (7.3,2.585);
+ \pic at (7.5,2.585) {valve=secondary};
+ \node[below] at (7.5,2.585) {$V\ped{C}$};
+ \draw (7.7,2.585) -- (11,2.585);
+ \end{tikzpicture}
+\end{chpcode}
+
+\begin{figure}
+\centering
+\begin{tikzpicture}[font=\footnotesize]
+% Positive Electrolyte
+ % tank outlet
+ \pic at (3,3.5) {tank};
+ \node[align=center] at (3,4) {Positive\\ Electrolyte};
+ \node at (3,3) {\ch{VO2+}/\ch{VO^2+}};
+ \draw[main stream] (3,2) -- (3,1.7);
+ \pic[rotate=90] at (3,1.5) {valve triple=main};
+ \draw[main stream] (3,1.3) |- (2,0.6);
+ \pic at (2,0.6) {centrifugal pump};
+ \draw[main stream] (2,1) -| (1,1.3);
+ \pic[rotate=270] at (1,1.5) {valve triple=main};
+ % pump recycle
+ \draw[secondary stream] (1.2,1.5) -- (1.8,1.5);
+ \pic at (2,1.5) {valve=secondary};
+ \node[above] at (2,1.5) {$V\ped{P}^+$};
+ \draw[secondary stream] (2.2,1.5) -- (2.8,1.5);
+ % battery stream
+ \draw[main stream] (1,1.7) -- (1,3);
+ \pic at (1,3.5) {instrument=FM};
+ \draw[main stream] (1,4) -- (1,5.3);
+ \draw[signal] (0.5,3.5) -| (0.25,2.5);
+ \pic at (0.25,2) {controller=PID};
+ \draw[signal] (0.25,1.5) |- (1.6,0.6);
+ \pic[rotate=90] at (1,5.5) {valve=main};
+ \node[right] at (1,5.5) {$V_1^+$};
+ \draw[main stream] (1, 5.7) |- (2.8,6.9);
+ \pic[rotate=90] at (3,6.9) {valve triple=main};
+ \draw[main stream] (3,7.1) |- (6.2,7.5);
+ \pic at (4,8.5) {instrument=TM};
+ \draw[short signal] (4,8) -- (4,7.5);
+ % battery bypass
+ \draw[secondary stream] (3,6.7) -- (3,6.4);
+ \pic[rotate=270] at (3,6.2) {valve=secondary};
+ \pic[rotate=270] at (3,6.2) {actuator};
+ \node[left] at (3,6.2) {$V\ped{B}^+$};
+ \draw[secondary stream] (3,6) -- (3,5.7);
+ % battery outlet
+ \draw[main stream] (8,7) |- (5.2,5.5);
+ \pic at (6,4.5) {instrument=TM};
+ \draw [short signal] (6,5) -- (6,5.5);
+ \pic at (5,5.5) {valve=main};
+ \pic at (5,5.5) {actuator};
+ \node[below] at (5,5.5) {$V_2^+$};
+ \draw[main stream] (4.8,5.5) -- (3.2,5.5);
+ \pic at (5,6.5) {instrument=PM};
+ \draw[short signal] (5,7) -- (5,7.5);
+ \draw[signal] (5.5,6.5) -- (7,6.5);
+ % tank inlet
+ \pic[rotate=270] at (3,5.5) {valve triple=main};
+ \draw[main stream] (3,5.3) -- (3,5);
+% Negative Electrolyte
+ % tank outlet
+ \pic at (12,3.5) {tank};
+ \node[align=center] at (12,4) {Negative\\ Electrolyte};
+ \node at (12,3) {\ch{V^3+}/\ch{V^2+}};
+ \draw[main stream] (12,2) -- (12,1.7);
+ \pic[rotate=270] at (12,1.5) {valve triple=main};
+ \draw[main stream] (12,1.3) |- (13,0.6);
+ \pic at (13,0.6) {centrifugal pump};
+ \draw[main stream] (13,1) -| (14,1.3);
+ \pic[rotate=90] at (14,1.5) {valve triple=main};
+ % pump recycle
+ \draw[secondary stream] (13.8,1.5) -- (13.2,1.5);
+ \pic at (13,1.5) {valve=secondary};
+ \node[above] at (13,1.5) {$V\ped{P}^-$};
+ \draw[secondary stream] (12.8,1.5) -- (12.2,1.5);
+ % battery stream
+ \draw[main stream] (14,1.7) -- (14,3);
+ \pic at (14,3.5) {instrument=FM};
+ \draw[main stream] (14,4) -- (14,5.3);
+ \draw[signal] (14.5,3.5) -| (14.75,2.5);
+ \pic at (14.75,2) {controller=PID};
+ \draw[signal] (14.75,1.5) |- (13.4,0.6);
+ \pic[rotate=90] at (14,5.5) {valve=main};
+ \node[left] at (14,5.5) {$V_1^-$};
+ \draw[main stream] (14, 5.7) |- (12.2,6.9);
+ \pic[rotate=270] at (12,6.9) {valve triple=main};
+ \draw[main stream] (12,7.1) |- (8.8,7.5);
+ \pic at (11,8.5) {instrument=TM};
+ \draw[short signal] (11,8) -- (11,7.5);
+ % battery bypass
+ \draw[secondary stream] (12,6.7) -- (12,6.4);
+ \pic[rotate=90] at (12,6.2) {valve=secondary};
+ \pic[rotate=90] at (12,6.2) {actuator};
+ \node[right] at (12,6.2) {$V\ped{B}^-$};
+ \draw[secondary stream] (12,6) -- (12,5.7);
+ % battery outlet
+ \draw[main stream] (7,7) |- (8.5,5) |- (9.8,5.5);
+ \pic at (9,4.5) {instrument=TM};
+ \draw[short signal] (9,5) -- (9,5.5);
+ \pic at (10,5.5) {valve=main};
+ \pic at (10,5.5) {actuator};
+ \node[below] at (10,5.5) {$V_2^-$};
+ \draw[main stream] (10.2,5.5) -- (11.8,5.5);
+ \pic at (10,6.5) {instrument=PM};
+ \draw[short signal] (10,7) -- (10,7.5);
+ \draw[signal] (9.5,6.5) -- (8,6.5);
+ % tank inlet
+ \pic[rotate=90] at (12,5.5) {valve triple=main};
+ \draw[main stream] (12,5.3) -- (12,5);
+% Battery
+ % block structure
+ \draw[thick] (6,7) rectangle (9, 9.6);
+ \node[above] at (7.5,9.6) {Battery};
+ % positive main stream
+ \pic at (6.2,7.5) {input};
+ \draw[main stream, hidden stream]
+ (6.2,7.55) |- (7.8,9.2) |- (7.95,8.5);
+ \pic at (8,8.5) {output};
+ \draw[main stream] (8,8.5) -- (8.3,8.5);
+ \pic[rotate=90] at (8.5,8.5) {valve triple=main};
+ \pic[rotate=270] at (8.5,8.5) {actuator};
+ \draw[main stream] (8.5,8.3) |- (8,8);
+ \pic at (8,8) {input};
+ \draw[main stream, hidden stream] (8,7.95) -- (8,7.7);
+ \pic[rotate=90, hidden component] at (8,7.5)
+ {valve triple=main};
+ \draw[main stream, hidden stream] (8,7.3) -- (8,7);
+ % negative main stream
+ \pic at (8.8,7.5) {input};
+ \draw[main stream, hidden stream]
+ (8.8,7.55) |- (7.2,9.4) |- (7.05,8.5);
+ \pic at (7,8.5) {output};
+ \draw[main stream] (7,8.5) -- (6.7,8.5);
+ \pic[rotate=270] at (6.5,8.5) {valve triple=main};
+ \pic[rotate=90] at (6.5,8.5) {actuator};
+ \draw[main stream] (6.5,8.3) |- (7,8);
+ \pic at (7,8) {input};
+ \draw[main stream, hidden stream] (7,7.95) -- (7,7.7);
+ \pic[rotate=270, hidden component] at (7,7.5)
+ {valve triple=main};
+ \draw[main stream, hidden stream] (7,7.3) -- (7,7);
+ % positive to negative remixing
+ \draw[secondary stream, color=red] (8.5,8.7) |- (8,9);
+ \pic at (8,9) {input};
+ \draw[secondary stream, hidden stream, color=red]
+ (7.95,9) -| (7.4,7.5) -- (7.2,7.5);
+ % negative to positive remixing
+ \draw[secondary stream, color=red] (6.5,8.7) |- (7,9);
+ \pic at (7,9) {input};
+ \draw[secondary stream, hidden stream, color=red]
+ (7,8.95) |- (7.6,8.75) |- (7.8,7.5);
+% Tanks Connection
+ \draw (4,2.585) -- (7.3,2.585);
+ \pic at (7.5,2.585) {valve=secondary};
+ \node[below] at (7.5,2.585) {$V\ped{C}$};
+ \draw (7.7,2.585) -- (11,2.585);
+\end{tikzpicture}
+\caption{Complete \ac{PFD} of a vanadium redox flow battery pilot plant produced
+ by the \lref{lst:vrfbis} code.}
+\label{fig:vrfbis}
+\end{figure}
+
+\subsubsection{Usage of Nodes}
+
+Starting from the next example, the second way outlined in the introduction to
+the examples will be used to draw schemes: units placement first and nodes usage
+to connect streams.
+
+\begin{chpcode}[caption=Scheme of an absorption process with solvent
+ regeneration through steam stripping.,
+ label=lst:absstr]
+ \begin{tikzpicture}[font=\footnotesize]
+ % Units Placement and Labelling
+ \pic (absorption tower) at (2,4) {column=packed};
+ \pic (stripping tower) at (10,4) {column=packed};
+ \pic (mid heat exchanger) at (6,4) {heat exchanger};
+ \pic (cooler) at (4,6.6) {heat exchanger};
+ \pic (heater) at (7,6.6) {heat exchanger};
+ \pic (pump) at (8.5,0.6) {centrifugal pump};
+ \pic (lamination valve) at (8.5,6.6) {lamination valve};
+ \node[above, rotate=-90, align=center] at
+ (absorption tower-right)
+ {absorption tower};
+ \node[above, rotate=-90, align=center] at
+ (stripping tower-right)
+ {stripping tower};
+ \node[left=5] at (mid heat exchanger-bottom)
+ {heat integration};
+ \node[below] at (lamination valve-anchor)
+ {expansion};
+ \node[below right] at (pump-right)
+ {compression};
+ % Main Streams Connections and Labelling
+ \draw[main stream] (0,1.4) --
+ (absorption tower-bottom left);
+ \node[below left] at (absorption tower-bottom left)
+ {dirty gas};
+ \draw[main stream] (0,6.6) --
+ (absorption tower-top left);
+ \node[below left] at (absorption tower-top left)
+ {solvent make-up};
+ \draw[main stream] (absorption tower-top) -- ++(0,1);
+ \node[above left] at (absorption tower-top)
+ {clean gas};
+ \draw[main stream] (absorption tower-bottom) --
+ ++(0,-0.5) -| (mid heat exchanger-bottom);
+ \node[below right] at (absorption tower-bottom)
+ {dirty solvent};
+ \draw[main stream] (mid heat exchanger-top) |-
+ (heater-internal tubes left);
+ \draw[main stream] (heater-internal tubes right) --
+ (lamination valve-inlet);
+ \draw[main stream] (lamination valve-outlet) --
+ (stripping tower-top left);
+ \draw[main stream] (stripping tower-bottom) |-
+ (pump-anchor);
+ \node[below right] at (stripping tower-bottom)
+ {clean solvent};
+ \draw[main stream] (pump-left) |-
+ (mid heat exchanger-internal tubes right);
+ \draw[main stream]
+ (mid heat exchanger-internal tubes left) --
+ ++(-0.5,0) |- (cooler-internal tubes right);
+ \draw[main stream] (cooler-internal tubes left) --
+ (absorption tower-top right);
+ \draw[main stream] (12,1.4) --
+ (stripping tower-bottom right);
+ \node[above right] at (stripping tower-bottom right)
+ {clean steam};
+ \draw[main stream] (stripping tower-top) |- ++(2,0.5);
+ \node[above right] at (stripping tower-top)
+ {dirty steam};
+ % Utility Streams Connections and Labelling
+ \draw[utility stream] (4,7.6) -- (cooler-top);
+ \node[above right] at (cooler-top)
+ {cooling water};
+ \draw[utility stream] (cooler-bottom) -- (4,5.6);
+ \draw[utility stream] (7,7.6) -- (heater-top);
+ \node[above right] at (heater-top)
+ {heating steam};
+ \draw[utility stream] (heater-bottom) -- (7,5.6);
+ \end{tikzpicture}
+\end{chpcode}
+
+\begin{figure}
+\centering
+\begin{tikzpicture}[font=\footnotesize]
+% Units Placement and Labelling
+ \pic (absorption tower) at (2,4) {column=packed};
+ \pic (stripping tower) at (10,4) {column=packed};
+ \pic (mid heat exchanger) at (6,4) {heat exchanger};
+ \pic (cooler) at (4,6.6) {heat exchanger};
+ \pic (heater) at (7,6.6) {heat exchanger};
+ \pic (pump) at (8.5,0.6) {centrifugal pump};
+ \pic (lamination valve) at (8.5,6.6) {lamination valve};
+ \node[above, rotate=-90, align=center] at
+ (absorption tower-right)
+ {absorption tower};
+ \node[above, rotate=-90, align=center] at
+ (stripping tower-right)
+ {stripping tower};
+ \node[left=5] at (mid heat exchanger-shell bottom)
+ {heat integration};
+ \node[below] at (lamination valve-anchor)
+ {expansion};
+ \node[below] at (pump-bottom)
+ {compression};
+% Main Streams Connections and Labelling
+ \draw[main stream] (0,1.4) --
+ (absorption tower-bottom left);
+ \node[below left] at (absorption tower-bottom left)
+ {dirty gas};
+ \draw[main stream] (0,6.6) --
+ (absorption tower-top left);
+ \node[below left] at (absorption tower-top left)
+ {solvent make-up};
+ \draw[main stream] (absorption tower-top) -- ++(0,1);
+ \node[above left] at (absorption tower-top)
+ {clean gas};
+ \draw[main stream] (absorption tower-bottom) --
+ ++(0,-0.5) -| (mid heat exchanger-shell bottom);
+ \node[below right] at (absorption tower-bottom)
+ {dirty solvent};
+ \draw[main stream] (mid heat exchanger-shell top) |-
+ (heater-pipes left);
+ \draw[main stream] (heater-pipes right) --
+ (lamination valve-inlet);
+ \draw[main stream] (lamination valve-outlet) --
+ (stripping tower-top left);
+ \draw[main stream] (stripping tower-bottom) |-
+ (pump-anchor);
+ \node[below right] at (stripping tower-bottom)
+ {clean solvent};
+ \draw[main stream] (pump-left) |-
+ (mid heat exchanger-pipes right);
+ \draw[main stream]
+ (mid heat exchanger-pipes left) --
+ ++(-0.5,0) |- (cooler-pipes right);
+ \draw[main stream] (cooler-pipes left) --
+ (absorption tower-top right);
+ \draw[main stream] (12,1.4) --
+ (stripping tower-bottom right);
+ \node[above right] at (stripping tower-bottom right)
+ {clean steam};
+ \draw[main stream] (stripping tower-top) |- ++(2,0.5);
+ \node[above right] at (stripping tower-top)
+ {dirty steam};
+% Utility Streams Connections and Labelling
+ \draw[utility stream] (4,7.6) -- (cooler-shell top);
+ \node[above right] at (cooler-shell top)
+ {cooling water};
+ \draw[utility stream] (cooler-shell bottom) -- (4,5.6);
+ \draw[utility stream] (7,7.6) -- (heater-shell top);
+ \node[above right] at (heater-shell top)
+ {heating steam};
+ \draw[utility stream] (heater-shell bottom) -- (7,5.6);
+\end{tikzpicture}
+\caption{Scheme of an absorption process with solvent regeneration through steam
+ stripping produced by the \lref{lst:absstr} code.}
+\label{fig:absstr}
+\end{figure}
+
+\section{What Happens Next}
+
+As conceived, \chemplants\ is just a toolbox to draw in an easier way chemical
+process schematics, but a lot of tools are still missing in the box.
+
+At the time of the first writing of this documentation, only symbols and styles
+I had the need to use were defined. In the future, a lot of new units will
+be defined, but this is a work that will require time and study, so it will be
+done step by step. I have a list of the ``most commonly used'' units to
+define, but users are free (and invited) to send suggestion about new units
+which they would like to see in the \chemplants\ palette.
+
+Besides the mentioned modifications, I am always opened to suggestions which can
+improve the functionality and usability of \chemplants. Users who have something
+to suggest, find errors and bugs or are simply happy to use this package can
+contact me writing to \mail{elia24913@me.com} and possibly placing
+``\chemplants'' into the object field. I will be very grateful to these users.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Bibliography
+
+\printbibliography[heading=bibintoc]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\end{document} % Document End \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/chemplants/chemplants.sty b/Master/texmf-dist/tex/latex/chemplants/chemplants.sty
new file mode 100644
index 00000000000..460078dd53d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/chemplants/chemplants.sty
@@ -0,0 +1,1758 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% chemplants.sty
+%% Copyright 2018-2019 Elia Arnese Feffin
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% 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.3c 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 Elia Arnese Feffin.
+% The Current Maintainer can be reached at the e-mail: elia24913@me.com.
+%
+% This work consists of the files chemplants.sty, chemplants-doc.tex
+% and chemplants-changes.tex, together with the derived files
+% chemplants-doc.pdf and chemplants-changes.pdf.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%:File chemplants.sty
+\NeedsTeXFormat{LaTeX2e}
+\def\chpversion{0.9.8}
+\def\chpdate{2019/11/19}
+\ProvidesPackage{chemplants}[%
+ 2019/11/19 v0.9.8 Symbology to draw chemical plants with TikZ%
+]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Packages Loading
+
+\RequirePackage{ifthen} % If-Then Logic
+\RequirePackage{tikz} % The Mother of Them All
+ \usetikzlibrary{decorations.markings} % Patch Patterns
+ \usetikzlibrary{hobby} % Hobby's Algorithm
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Definitions, Parameters and Commands
+
+%: Default Parameters
+\def\chp@StreamTip{stealth} % Stream Tip
+\def\chp@MainStreamThickness{semithick} % Main Stream Thickness
+\def\chp@SecondaryStreamThickness{thin} % Secondary Stream Thickness
+\def\chp@UtilityStreamThickness{very thin} % Utility Stream Thickness
+\def\chp@UnitThickness{thick} % Unit Thickness
+\def\chp@UnitScale{1} % Unit Scale
+\def\chp@SignalThickness{very thin} % Signal Thickness
+\def\chp@HiddenStreamStyle{dashed} % Hidden Stream
+\def\chp@HiddenComponentStyle{densely dotted} % Hidden Component
+\def\chp@MeasureColor{gray} % Measure Color
+\def\chp@MeasureTip{|} % Measure Tip
+\def\chp@MeasureThickness{thin} % Measure Thickness
+\def\chp@MeasureFontSize{\footnotesize} % Measure Font Size
+\def\chp@InstrumentThickness{thin} % Instrument Thickness
+\def\chp@InstrumentScale{1} % Instrument Scale
+\def\chp@InstrumentFontSize{\footnotesize} % Instrument Font Size
+\def\chp@BlockThickness{thick} % Block Thickness
+\def\chp@BlockScale{1} % Block Scale
+\def\chp@BlockFontSize{\footnotesize} % Block Font Size
+
+%: Commands to Set Parameters
+\newcommand*{\setchpstreamtip}[1]{% % Stream Tip
+ \gdef\chp@StreamTip{#1}%
+}
+\newcommand*{\setchpmainstreamthickness}[1]{% % Main Stream Thickness
+ \gdef\chp@MainStreamThickness{#1}%
+}
+\newcommand*{\setchpsecondarystreamthickness}[1]{% % Secondary Stream Thickness
+ \gdef\chp@MainStreamThickness{#1}%
+}
+\newcommand*{\setchputilitystreamthickness}[1]{% % Utility Stream Thickness
+ \gdef\chp@UtilityStreamThickness{#1}%
+}
+\newcommand*{\setchpunitthickness}[1]{% % Unit Thickness
+ \gdef\chp@UnitThickness{#1}%
+}
+\newcommand*{\setchpunitscale}[1]{% % Unit Scale
+ \gdef\chp@UnitScale{#1}%
+}
+\newcommand*{\setchpsignalthickness}[1]{% % Signal Thickness
+ \gdef\chp@SignalThickness{#1}%
+}
+\newcommand*{\setchphiddenstreamstyle}[1]{% % Hidden Stream Style
+ \gdef\chp@HiddenStreamStyle{#1}%
+}
+\newcommand*{\setchphiddencomponentstyle}[1]{% % Hidden Component Style
+ \gdef\chp@HiddenComponentStyle{#1}%
+}
+\newcommand*{\setchpmeasurecolor}[1]{% % Measure Color
+ \gdef\chp@MeasureColor{#1}%
+}
+\newcommand*{\setchpmeasuretip}[1]{% % Measure Tip
+ \gdef\chp@MeasureTip{#1}%
+}
+\newcommand*{\setchpmeasurethickness}[1]{% % Measure Thickness
+ \gdef\chp@MeasureThickness{#1}%
+}
+\newcommand*{\setchpmeasurefontsize}[1]{% % Measure
+ \gdef\chp@MeasureFontSize{#1}%
+}
+\newcommand*{\setchpinstrumentthickness}[1]{% % Instrument Thickness
+ \gdef\chp@InstrumentThickness{#1}%
+}
+\newcommand*{\setchpinstrumentscale}[1]{% % Instrument Scale
+ \gdef\chp@InstrumentScale{#1}%
+}
+\newcommand*{\setchpinstrumentfontsize}[1]{% % Instrument Font Size
+ \gdef\chp@InstrumentFontSize{#1}%
+}
+\newcommand*{\setchpblockthickness}[1]{% % Block Thickness
+ \gdef\chp@BlockThickness{#1}%
+}
+\newcommand*{\setchpblockscale}[1]{% % Block Scale
+ \gdef\chp@BlockScale{#1}%
+}
+\newcommand*{\setchpblockfontsize}[1]{% % Block Font Size
+ \gdef\chp@BlockFontSize{#1}%
+}
+
+%: Measure Command
+\newcommand*{\measure}[4][below]{%
+ \draw [chpmeasure] #2 -- #3
+ node [pos=0.5,sloped,#1,font=\chp@MeasureFontSize] {#4};%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Styles for Streams, Units and Signals
+
+%: Main Stream
+\tikzset{main stream/.style=%
+ {%
+ -\chp@StreamTip,%
+ \chp@MainStreamThickness,%
+ }%
+}
+
+%: Secondary Stream
+\tikzset{secondary stream/.style=%
+ {%
+ -\chp@StreamTip,%
+ \chp@SecondaryStreamThickness,%
+ }%
+}
+
+%: Utility Stream
+\tikzset{utility stream/.style=%
+ {%
+ -\chp@StreamTip,%
+ \chp@UtilityStreamThickness,
+ }%
+}
+
+%: Process Unit
+\tikzset{chpunitstyle/.style=%
+ {%
+ \chp@UnitThickness,%
+ scale=\chp@UnitScale%
+ }%
+}
+
+%: Signal
+\tikzset{signal/.style=%
+ {%
+ \chp@SignalThickness,%
+ decoration={%
+ markings, mark=between positions 5mm and (1-5mm) step 5mm with{%
+ \draw [\chp@SignalThickness] (-2pt,2pt) -- (2pt,-2pt);
+ \draw [\chp@SignalThickness] (-1pt,2pt) -- (3pt,-2pt);
+ }%
+ }, postaction={decorate}%
+ }%
+}
+
+%: Short Signal
+\tikzset{short signal/.style=%
+ {%
+ \chp@SignalThickness,%
+ decoration={%
+ markings, mark=at position 0.5 with{%
+ \draw [\chp@SignalThickness] (-2pt,2pt) -- (2pt,-2pt);
+ \draw [\chp@SignalThickness] (-1pt,2pt) -- (3pt,-2pt);%
+ }%
+ }, postaction={decorate}%
+ }%
+}
+
+%: Hidden Stream
+\tikzset{hidden stream/.style=%
+ {%
+ \chp@HiddenStreamStyle%
+ }%
+}
+
+%: Hidden Component
+\tikzset{hidden component/.style=%
+ {%
+ \chp@HiddenComponentStyle%
+ }%
+}
+
+%: Measure
+\tikzset{chpmeasure/.style=%
+ {%
+ draw=\chp@MeasureColor,%
+ \chp@MeasureTip-\chp@MeasureTip,%
+ \chp@MeasureThickness%
+ }%
+}
+
+%: Instrument
+\tikzset{chpinstrumentstyle/.style=%
+ {%
+ \chp@InstrumentThickness,%
+ scale=\chp@InstrumentScale%
+ }%
+}
+
+%: Block
+\tikzset{chpblockstyle/.style=%
+ {%
+ \chp@BlockThickness,%
+ scale=\chp@BlockScale%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Process Units
+
+%: Fluids and Solids Storage
+%: Tank
+\tikzset{tank/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1,-0.915) to [out=270,in=270]
+ (1,-0.915) --
+ (1,0.915) to [out=90,in=90]
+ (-1,0.915) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1,0);
+ \coordinate (-bottom left) at (-1,-0.915);
+ \coordinate (-bottom) at (0,-1.5);
+ \coordinate (-bottom right) at (1,-0.915);
+ \coordinate (-right) at (1,0);
+ \coordinate (-top right) at (1,0.915);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-top left) at (-1,0.915);
+ \end{scope}
+ }%
+}
+%: Cone Tank
+\tikzset{cone tank/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.5,-1.5) --
+ (1.5,-1.5) --
+ (1.5,1.1) --
+ (0,1.5) --
+ (-1.5,1.1) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom left) at (-1.5,-1.4);
+ \coordinate (-bottom) at (0,-1.5);
+ \coordinate (-bottom right) at (1.5,-1.4);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.5,1.1);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-top left) at (-1.5,1.1);
+ \end{scope}
+ }%
+}
+%: Dome Tank
+\tikzset{dome tank/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.5,-1.5) --
+ (1.5,-1.5) --
+ (1.5,0.7) to [out=90,in=0]
+ (0,1.5) to [out=180,in=90]
+ (-1.5,0.7) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom left) at (-1.5,-1.4);
+ \coordinate (-bottom) at (0,-1.5);
+ \coordinate (-bottom right) at (1.5,-1.4);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.5,0.7);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-top left) at (-1.5,0.7);
+ \end{scope}
+ }%
+}
+%: Floating Roof Tank
+\tikzset{floating roof tank/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.5,1.5) --
+ (-1.5,-1.5) --
+ (1.5,-1.5) --
+ (1.5,1.5);
+ \draw [chpunitstyle]
+ (-1.45,1.4) circle (0.05)
+ (1.45,1.4) circle (0.05)
+ (-1.4,1.3) rectangle (1.4,1.5);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom left) at (-1.5,-1.4);
+ \coordinate (-bottom) at (0,-1.5);
+ \coordinate (-bottom right) at (1.5,-1.4);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.5,1.2);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-top left) at (-1.5,1.2);
+ \end{scope}
+ }%
+}
+%: Bell Gasholder
+\tikzset{bell gasholder/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.5,0.5) --
+ (-1.5,-1.5) --
+ (1.5,-1.5) --
+ (1.5,0.5);
+ \draw [chpunitstyle]
+ (1.45,-0.5) --
+ (1.45,0.7) to [out=90,in=0]
+ (0,1.45) to [out=180,in=90]
+ (-1.45,0.7) -- (-1.45,-0.50);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom left) at (-1.5,-1.4);
+ \coordinate (-bottom) at (0,-1.5);
+ \coordinate (-bottom right) at (1.5,-1.4);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.45,0.7);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-top left) at (-1.45,0.7);
+ \end{scope}
+ }%
+}
+%: Dry Gasholder
+\tikzset{dry gasholder/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (1.5,-1.0) arc
+ (0:180:1.5) -- cycle;
+ \draw [chpunitstyle]
+ (1.5,-1.0) --
+ (1.5,1.0) --
+ (-1.5,1.0) --
+ (-1.5,-1.0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom left) at (-1.5,-0.9);
+ \coordinate (-bottom) at (0,-1.0);
+ \coordinate (-bottom right) at (1.5,-0.9);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.5,1);
+ \coordinate (-top) at (0,1);
+ \coordinate (-top left) at (-1.5,1);
+ \coordinate (-dome top) at (0,0.5);
+ \end{scope}
+ }%
+}
+
+%: Fluids Handling
+%: Centrifugal Pump
+\tikzset{centrifugal pump/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.4) circle (0.05);
+ \draw [chpunitstyle]
+ (230.19:0.4) --
+ ++(230.19:0.377) --
+ ++(1,0) -- ++(129.81:0.377);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0);
+ \coordinate (-top) at (0,0.4);
+ \end{scope}
+ }%
+}
+%: Rotary Pump
+\tikzset{rotary pump/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.4,0) arc
+ (180:360:0.4) --
+ (0.4,0.5) arc
+ (0:180:0.4) -- cycle
+ (0,0) circle (0.225)
+ (0,0.5) circle (0.225);
+ \draw [chpunitstyle]
+ (230.19:0.4) --
+ ++(230.19:0.377) --
+ ++(1,0) -- ++(129.81:0.377);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0.25);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0.25);
+ \coordinate (-top) at (0,0.9);
+ \end{scope}
+ }%
+}
+%: Liquid Ring Pump
+\tikzset{liquid ring pump/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.4) circle (0.325);
+ \draw [chpunitstyle]
+ (230.19:0.4) --
+ ++(230.19:0.377) --
+ ++(1,0) -- ++(129.81:0.377);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0);
+ \coordinate (-top) at (0,0.4);
+ \end{scope}
+ }%
+}
+%: Reciprocating Pump
+\tikzset{reciprocating pump/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.4,-0.4) rectangle (0.4,0.4);
+ \draw [chpunitstyle]
+ (-0.3,-0.4) -- (-0.3,-0.6)
+ (0.3,-0.4) -- (0.3,-0.6)
+ (-0.5,-0.6) -- (0.5,-0.6);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0);
+ \coordinate (-top) at (0,0.4);
+ \end{scope}
+ }%
+}
+%: Fan
+\tikzset{fan/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0.4,0.4) --
+ (0,0.4) arc
+ (90:360:0.4) -- cycle
+ (0,0) circle (0.15);
+ \draw [chpunitstyle]
+ (230.19:0.4) --
+ ++(230.19:0.377) --
+ ++(1,0) -- ++(129.81:0.377);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0);
+ \coordinate (-top) at (0,0.4);
+ \coordinate (-outlet) at (0.4,0.4);
+ \end{scope}
+ }%
+}
+%: Centrifugal Compressor
+\tikzset{centrifugal compressor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.9,-0.4) --
+ (0.9,-0.2) --
+ (0.9,0.2) --
+ (-0.9,0.4) -- cycle;
+ \draw [chpunitstyle]
+ (-0.8,-0.39) -- (-0.8,-0.6)
+ (0.8,-0.21) -- (0.8,-0.6)
+ (-1.0,-0.6) -- (1.0,-0.6);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.9,0);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.9,0);
+ \coordinate (-inlet bottom) at (-0.9,-0.4);
+ \coordinate (-outlet bottom) at (0.9,-0.2);
+ \coordinate (-outlet top) at (0.9,0.2);
+ \coordinate (-inlet top) at (-0.9,0.4);
+ \end{scope}
+ }%
+}
+%: Rotary Compressor
+\tikzset{rotary compressor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.4,0) arc
+ (180:360:0.4) --
+ (0.4,0.5) arc
+ (0:180:0.4) -- cycle
+ (0.325,0.5) arc
+ (0:180:0.325) to [out=270,in=90]
+ (0.325,0) arc (360:180:0.325);
+ \draw [chpunitstyle]
+ (230.19:0.4) --
+ ++(230.19:0.377) --
+ ++(1,0) -- ++(129.81:0.377);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0.25);
+ \coordinate (-bottom) at (0,-0.6);
+ \coordinate (-right) at (0.4,0.25);
+ \coordinate (-top) at (0,0.9);
+ \end{scope}
+ }%
+}
+%: Reciprocating Compressor
+\tikzset{reciprocating compressor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.4)
+ (0.2,-0.346) --
+ (1.4,-0.346) --
+ (1.4,0.346) --
+ (0.2,0.346);
+ \draw [chpunitstyle]
+ (0.2,-0.346) -- (0.2,-0.6)
+ (-0.2,-0.346) -- (-0.2,-0.6)
+ (1.3,-0.346) -- (1.3,-0.6)
+ (-0.5,-0.6) -- (1.5,-0.6);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0.5,-0.6);
+ \coordinate (-top) at (0,0.4);
+ \coordinate (-inlet bottom) at (0.8,-0.346);
+ \coordinate (-outlet) at (1.4,0);
+ \coordinate (-inlet top) at (0.8,0.346);
+ \end{scope}
+ }%
+}
+%: MultiStage Compressor
+\tikzset{multistage compressor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.4)
+ (0.2,-0.346) --
+ (0.7,-0.346) --
+ (0.7,0.346) -- (0.2,0.346)
+ (0.7,-0.231) --
+ (1.1,-0.231) --
+ (1.1,0.231) -- (0.7,0.231)
+ (1.1,-0.116) --
+ (1.4,-0.116) --
+ (1.4,0.116) -- (1.1,0.116);
+ \draw [chpunitstyle]
+ (0.2,-0.346) -- (0.2,-0.6)
+ (-0.2,-0.346) -- (-0.2,-0.6)
+ (1.3,-0.116) -- (1.3,-0.6)
+ (-0.5,-0.6) -- (1.5,-0.6);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.4,0);
+ \coordinate (-bottom) at (0.5,-0.6);
+ \coordinate (-top) at (0,0.4);
+ \coordinate (-first bottom) at (0.45,-0.346);
+ \coordinate (-second bottom) at (0.9,-0.231);
+ \coordinate (-third bottom) at (1.25,-0.116);
+ \coordinate (-outlet) at (1.4,0);
+ \coordinate (-third top) at (1.25,0.116);
+ \coordinate (-second top) at (0.9,0.231);
+ \coordinate (-first top) at (0.45,0.346);
+ \end{scope}
+ }%
+}
+%: Ejector
+\tikzset{ejector/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0.25,-0.1) --
+ (0.25,-0.25) --
+ (-0.25,-0.25) --
+ (-0.25,0.25) --
+ (0.25,0.25) --
+ (0.25,0.1) --
+ (1.25,0.25) --
+ (1.25,-0.25) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-main inlet) at (-0.25,0);
+ \coordinate (-suck inlet bottom) at (0,-0.25);
+ \coordinate (-outlet) at (1.25,0);
+ \coordinate (-suck inlet top) at (0,0.25);
+ \end{scope}
+ }%
+}
+
+%: Heat Exchangers
+%: Heat Exchanger
+\tikzset{heat exchanger/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.5)
+ (-0.5,0) --
+ (-0.25,0) --
+ (-0.25,0.3) --
+ (0.25,-0.3) --
+ (0.25,0) -- (0.5,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-shell bottom) at (0,-0.5);
+ \coordinate (-shell top) at (0,0.5);
+ \coordinate (-pipes left) at (-0.5,0);
+ \coordinate (-pipes right) at (0.5,0);
+ \end{scope}
+ }%
+}
+%: Two-Phases Heat Exchanger
+\tikzset{heat exchanger biphase/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.5)
+ (30:0.5) --
+ ++(-0.6,0) --
+ ++(0.3,-0.25) --
+ ++(-0.3,-0.25) -- ++(0.6,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-shell left) at (-0.5,0);
+ \coordinate (-shell bottom) at (0,-0.5);
+ \coordinate (-shell right) at (0.5,0);
+ \coordinate (-shell top) at (0,0.5);
+ \coordinate (-pipes bottom) at (-30:0.5);
+ \coordinate (-pipes top) at (30:0.5);
+ \end{scope}
+ }%
+}
+%: Boiler
+\tikzset{boiler/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.5);
+ \draw [chpunitstyle, -\chp@StreamTip]
+ (-0.7,0.5) --
+ (-0.5,0.5) --
+ (0.5,-0.5) -- (0.7,-0.5);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.5);
+ \coordinate (-pipes inlet) at (-0.7,0.5);
+ \coordinate (-pipes outlet) at (0.7,-0.5);
+ \end{scope}
+ }%
+}
+%: Condenser
+\tikzset{condenser/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.5);
+ \draw [chpunitstyle, -\chp@StreamTip]
+ (-0.7,-0.5) --
+ (-0.5,-0.5) --
+ (0.5,0.5) --
+ (0.7,0.5);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.5);
+ \coordinate (-pipes inlet) at (-0.7,-0.5);
+ \coordinate (-pipes outlet) at (0.7,0.5);
+ \end{scope}
+ }%
+}
+%: Air Heat Exchanger
+\tikzset{air heat exchanger/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.5,-0.5) rectangle (0.5,0.5)
+ (0,0) circle (0.4)
+ (-0.3,0) --
+ (-0.3,-0.15) --
+ (0.3,0.15) --
+ (0.3,0) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.5);
+ \end{scope}
+ }%
+}
+%: Tube Bundle Heat Exchanger
+\tikzset{tube bundle heat exchanger/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.0,-0.3) --
+ (0.7,-0.3) arc
+ (270:450:0.3) --
+ (-1.0,0.3) -- cycle;
+ \foreach \i in {1, 2, ...,10} {%
+ \draw [chpunitstyle]
+ (-0.6,-0.3 + 0.06*\i) -- ++(1.2,0);
+ }
+ \draw [chpunitstyle]
+ (-1.0,-0.35) -- (-1.0,-0.3)
+ (-1.0,0.35) -- (-1.0,0.3)
+ (-0.6,-0.35) -- (-0.6,0.35)
+ (0.6,-0.35) -- (0.6,0.35);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.0,0);
+ \coordinate (-right) at (1.0,0);
+ \coordinate (-head bottom) at (-0.8,-0.3);
+ \coordinate (-head top) at (-0.8,0.3);
+ \coordinate (-shell bottom left) at (-0.5,-0.3);
+ \coordinate (-shell bottom) at (0,-0.3);
+ \coordinate (-shell bottom right) at (0.5,-0.3);
+ \coordinate (-shell top right) at (0.5,0.3);
+ \coordinate (-shell top) at (0,0.3);
+ \coordinate (-shell top left) at (-0.5,0.3);
+ \end{scope}
+ }%
+}
+%: Plate Heat Exchanger
+\tikzset{plate heat exchanger/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.5,-0.7) rectangle
+ (0.5,0.7);
+ \foreach \i in {1, 2, ..., 4} {%
+ \draw [chpunitstyle]
+ (-0.5 + 0.2*\i,-0.7) -- ++(0,1.4);
+ }
+ \draw [chpunitstyle]
+ (-0.5,-0.6) -- (0.5,0.6);
+ \draw [chpunitstyle]
+ (-0.5,-0.75) -- (-0.5,-0.7)
+ (-0.5,0.7) -- (-0.5,0.75)
+ (0.5,-0.75) -- (0.5,-0.7)
+ (0.5,0.7) -- (0.5,0.75);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.7);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.7);
+ \coordinate (-inner left) at (-0.5,-0.6);
+ \coordinate (-inner right) at (0.5,0.6);
+ \coordinate (-outer left) at (-0.5,0.6);
+ \coordinate (-outer right) at (0.5,-0.6);
+ \end{scope}
+ }%
+}
+%: Spiral Heat Exchanger
+\tikzset{spiral heat exchanger/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.7);
+ \draw [chpunitstyle]
+ (-0.7,0) -- (0.001,0);
+ \draw [chpunitstyle]
+ plot [variable=\t, domain=0:720, hobby]
+ (\t:\t*0.7/720);
+ \draw [chpunitstyle, dashed]
+ (0,0) -- (0,0.7);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inner center) at (-0.7,0);
+ \coordinate (-inner edge) at (0.7,0);
+ \coordinate (-outer center) at (0,0.7);
+ \coordinate (-outer edge) at (0,-0.7);
+ \end{scope}
+ }%
+}
+%: Pipe Furnace
+\tikzset{pipe furnace/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.0,-0.5) --
+ (1.0,-0.5) --
+ (1.0,0.5) --
+ (0.2,0.75) --
+ (0.2,1.5) --
+ (-0.2,1.5) --
+ (-0.2,0.75) --
+ (-1.0,0.5) -- cycle;
+ \draw [chpunitstyle]
+ (-1.0,0) --
+ (-0.75,0) --
+ (-0.6,-0.4) --
+ (-0.3,0.4) --
+ (0,-0.4) --
+ (0.3,0.4) --
+ (0.6,-0.4) --
+ (0.75,0) -- (1.0,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-top) at (0,1.5);
+ \coordinate (-pipes left) at (-1.0,0);
+ \coordinate (-pipes right) at (1.0,0);
+ \end{scope}
+ }%
+}
+
+%: Separators
+%: Steam Trap
+\tikzset{steam trap/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (45:0.15) arc (45:225:0.15);
+ \draw [chpunitstyle, fill]
+ (225:0.15) arc (225:405:0.15) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.15,0);
+ \coordinate (-bottom) at (0,-0.15);
+ \coordinate (-right) at (0.15,0);
+ \coordinate (-top) at (0,0.15);
+ \end{scope}
+ }%
+}
+%: Gas-Liquid Separator
+\tikzset{gas-liquid separator/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-1.032) to [out=270,in=270]
+ (0.8,-1.032) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) -- cycle;
+ \draw [chpunitstyle, densely dotted]
+ (-0.755,1.2) -- (0.755,1.2);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-bottom left) at (-0.8,-1.032);
+ \coordinate (-bottom right) at (0.8,-1.032);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-stirrer) at (0.5,1.5);
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inlet left) at (-0.8,0);
+ \coordinate (-inlet right) at (0.8,0);
+ \coordinate (-gas outlet) at (0,1.5);
+ \coordinate (-liquid outlet) at (0,-1.5);
+ \end{scope}
+ }%
+}
+%: Cyclone
+\tikzset{cyclone/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.3,0.25) rectangle
+ (0.3,0) --
+ (0,-1.0) -- (-0.3,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inlet left) at (-0.3,0.125);
+ \coordinate (-inlet right) at (0.3,0.125);
+ \coordinate (-gas outlet) at (0,0.25);
+ \coordinate (-solid outlet) at (0,-1.0);
+ \end{scope}
+ }%
+}
+%: Stratifier
+\tikzset{stratifier/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (1.032,-0.8) to [out=0,in=0]
+ (1.032,0.8) --
+ (-1.032,0.8) to [out=180,in=180]
+ (-1.032,-0.8) -- cycle;
+ \draw [chpunitstyle]
+ (-0.9,-0.85) -- (-0.9,0.3)
+ (0.9,-0.85) -- (0.9,0)
+ (0.6,0.85) -- (0.6,0.7)
+ (0.6,0.6) -- (0.6,-0.6);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom) at (0,-0.8);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top right) at (1.032,0.8);
+ \coordinate (-top left) at (-1.032,0.8);
+ \coordinate (-inlet) at (0,0.8);
+ \coordinate (-light outlet) at (-1.032,-0.8);
+ \coordinate (-heavy outlet) at (1.032,-0.8);
+ \end{scope}
+ }%
+}
+%: Settler
+\tikzset{settler/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.5,-0.2) --
+ (0,-0.8) --
+ (1.5,-0.2) --
+ (1.5,0.8) --
+ (-1.5,0.8) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inlet left) at (-1.5,-0.2);
+ \coordinate (-inlet right) at (1.5,-0.2);
+ \coordinate (-inlet top) at (0,0.8);
+ \coordinate (-liquid outlet left) at (-1.5,0.8);
+ \coordinate (-liquid outlet right) at (1.5,0.8);
+ \coordinate (-solid outlet) at (0,-0.8);
+ \end{scope}
+ }%
+}
+%: Scrubber
+\tikzset{scrubber/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.3,-0.25) --
+ (0,-0.75) --
+ (0.3,-0.25) --
+ (0.3,0.55) to [out=90,in=0]
+ (0,0.75) to [out=180,in=90]
+ (-0.3,0.55) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-gas inlet left) at (-0.3,-0.25);
+ \coordinate (-gas inlet right) at (0.3,-0.25);
+ \coordinate (-liquid inlet left) at (-0.3,0.55);
+ \coordinate (-liquid inlet right) at (0.3,0.55);
+ \coordinate (-gas outlet) at (0,0.75);
+ \coordinate (-liquid outlet) at (0,-0.75);
+ \end{scope}
+ }%
+}
+%: Kettle Bolier
+\tikzset{kettle boiler/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.0,-0.3) --
+ (0.7,-0.3) to [out=0,in=270]
+ (1.0,0.2) to [out=90,in=0]
+ (0.7,0.7) --
+ (-0.3,0.7) --
+ (-0.6,0.3) --
+ (-1.0,0.3) -- cycle;
+ \draw [chpunitstyle]
+ (-1.0,-0.35) -- (-1.0,-0.3)
+ (-1.0,0.35) -- (-1.0,0.3)
+ (-0.6,-0.35) -- (-0.6,0.35)
+ (0.6,-0.35) -- (0.6,0.35);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.0,0);
+ \coordinate (-right) at (1.0,0.2);
+ \coordinate (-inlet) at (0,-0.3);
+ \coordinate (-gas outlet) at (0.2,0.7);
+ \coordinate (-liquid outlet) at (0.7,-0.3);
+ \coordinate (-head bottom) at (-0.8,-0.3);
+ \coordinate (-head top) at (-0.8,0.3);
+ \end{scope}
+ }%
+}
+%: Tube Bundle Evaporator
+\tikzset{tube bundle evaporator/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-1.032) to [out=270,in=270]
+ (0.8,-1.032) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) -- cycle;
+ \foreach \i in {0, 1, ..., 10} {%
+ \draw [chpunitstyle]
+ (-0.85,-0.9 + 0.08*\i) -- ++(1.7,0);
+ }
+ \draw [chpunitstyle]
+ (-0.85,-0.95) -- (-0.85,-0.05)
+ (0.85,-0.95) -- (0.85,-0.05);
+ \draw [chpunitstyle, densely dotted]
+ (-0.755,1.2) -- (0.755,1.2);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom left) at (-0.8,-1.032);
+ \coordinate (-bottom right) at (0.8,-1.032);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-inlet left) at (-0.8,0);
+ \coordinate (-inlet right) at (0.8,0);
+ \coordinate (-gas outlet) at (0,1.5);
+ \coordinate (-liquid outlet) at (0,-1.5);
+ \coordinate (-pipes left) at (-0.85,-0.5);
+ \coordinate (-pipes right) at (0.85,-0.5);
+ \end{scope}
+ }%
+}
+%: Basket Evaporator
+\tikzset{basket evaporator/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-1.032) to [out=270,in=270]
+ (0.8,-1.032) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) -- cycle;
+ \foreach \i in {1, 2, ...,19} {%
+ \draw [chpunitstyle]
+ (-0.8 + 0.08*\i,-0.9) -- ++(0,0.8);
+ }
+ \draw [chpunitstyle]
+ (-0.85,-0.9) -- (0.85,-0.9)
+ (-0.85,-0.1) -- (0.85,-0.1);
+ \draw [chpunitstyle, densely dotted]
+ (-0.755,1.2) -- (0.755,1.2);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom left) at (-0.8,-1.032);
+ \coordinate (-bottom right) at (0.8,-1.032);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-inlet left) at (-0.8,0);
+ \coordinate (-inlet right) at (0.8,0);
+ \coordinate (-gas outlet) at (0,1.5);
+ \coordinate (-liquid outlet) at (0,-1.5);
+ \coordinate (-shell top left) at (-0.8,-0.2);
+ \coordinate (-shell left) at (-0.8,-0.5);
+ \coordinate (-shell bottom left) at (-0.8,-0.8);
+ \coordinate (-shell bottom right) at (0.8,-0.8);
+ \coordinate (-shell right) at (0.8,-0.5);
+ \coordinate (-shell top right) at (0.8,-0.2);
+ \end{scope}
+ }%
+}
+%: Climbing Film Evaporator
+\tikzset{climbing film evaporator/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.4,0.4) --
+ (-0.4,-1.2) to [out=270,in=180]
+ (0,-1.5) to [out=0,in=270]
+ (0.4,-1.2) -- (0.4,0.4)
+ (0.4,0.3) --
+ (0.8,0.6) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) --
+ (-0.8,0.6) -- (-0.4,0.3);
+ \foreach \i in {1, 2, ...,10} {%
+ \draw [chpunitstyle]
+ (-0.4 + 0.08*\i,-1.2) -- ++(0,1.5);
+ }
+ \draw [chpunitstyle]
+ (-0.45,0.3) -- (0.45,0.3)
+ (-0.45,-1.2) -- (0.45,-1.2);
+ \draw [chpunitstyle, -\chp@StreamTip]
+ (-0.5,0.37) --
+ (-0.6,0.23) --
+ (-0.6,-1.35) -- (-0.35,-1.35);
+ \draw [chpunitstyle, densely dotted]
+ (-0.755,1.2) -- (0.755,1.2);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-inlet left) at (-0.8,0.6);
+ \coordinate (-inlet right) at (0.8,0.6);
+ \coordinate (-gas outlet) at (0,1.5);
+ \coordinate (-liquid outlet) at (0,-1.5);
+ \coordinate (-shell top left) at (-0.4,0.2);
+ \coordinate (-shell left) at (-0.4,-0.45);
+ \coordinate (-shell bottom left) at (-0.4,-1.1);
+ \coordinate (-shell bottom right) at (0.4,-1.1);
+ \coordinate (-shell right) at (0.4,-0.45);
+ \coordinate (-shell top right) at (0.4,0.2);
+ \end{scope}
+ }%
+}
+%: Tube Bundle Crystallizer
+\tikzset{tube bundle crystallizer/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-1.032) --
+ (0,-1.5) --
+ (0.8,-1.032) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) -- cycle;
+ \foreach \i in {0, 1, ..., 10} {%
+ \draw [chpunitstyle]
+ (-0.85,-0.9 + 0.08*\i) -- ++(1.7,0);
+ }
+ \draw [chpunitstyle]
+ (-0.85,-0.95) -- (-0.85,-0.05)
+ (0.85,-0.95) -- (0.85,-0.05);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom left) at (-0.8,-1.032);
+ \coordinate (-bottom right) at (0.8,-1.032);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-inlet left) at (-0.8,0);
+ \coordinate (-inlet right) at (0.8,0);
+ \coordinate (-liquid outlet) at (0,1.5);
+ \coordinate (-solid outlet) at (0,-1.5);
+ \coordinate (-pipes left) at (-0.85,-0.5);
+ \coordinate (-pipes right) at (0.85,-0.5);
+ \end{scope}
+ }%
+}
+%: Stirred Crystallizer
+\tikzset{stirred crystallizer/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-1.032) --
+ (0,-1.5) --
+ (0.8,-1.032) --
+ (0.8,1.032) to [out=90,in=90]
+ (-0.8,1.032) -- cycle;
+ \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285]
+ (0,1.75) --
+ (0,0) to [out=150,in=90]
+ (-0.5,0) to [out=270,in=210]
+ (0,0) to [out=30,in=90]
+ (0.5,0) to [out=270,in=330] (0,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom left) at (-0.8,-1.032);
+ \coordinate (-bottom right) at (0.8,-1.032);
+ \coordinate (-top right) at (0.8,1.032);
+ \coordinate (-top left) at (-0.8,1.032);
+ \coordinate (-inlet left) at (-0.8,0);
+ \coordinate (-inlet right) at (0.8,0);
+ \coordinate (-liquid outlet) at (0,1.5);
+ \coordinate (-solid outlet) at (0,-1.5);
+ \coordinate (-shaft) at (0.5,1.5);
+ \end{scope}
+ }%
+}
+
+%: Columns
+%: Column
+\tikzset{pics/column/.style=%
+ {%
+ code=%
+ {%
+ \draw [chpunitstyle]
+ (-0.5,-2.7) to [out=270,in=270]
+ (0.5,-2.7) --
+ (0.5,2.7) to [out=90,in=90]
+ (-0.5,2.7) -- cycle;
+ \ifthenelse{\equal{#1}{empty}}{%
+ \relax%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{trayed}}{%
+ \foreach \i in {0, 1, ..., 24} {%
+ \draw [chpunitstyle]
+ (-0.5,-2.4 + 0.2*\i) -- (0.5,-2.4 + 0.2*\i);
+ }%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{packed}}{%
+ \draw [chpunitstyle, join=bevel]
+ (-0.5,-2.4) --
+ (0.5,2.4) --
+ (-0.5,2.4) --
+ (0.5,-2.4) -- cycle;
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{packed double}}{%
+ \draw [chpunitstyle, join=bevel]
+ (-0.5,-2.4) --
+ (0.5,-0.2) --
+ (-0.5,-0.2) --
+ (0.5,-2.4) -- cycle;
+ \draw [chpunitstyle, join=bevel]
+ (-0.5,2.4) --
+ (0.5,0.2) --
+ (-0.5,0.2) --
+ (0.5,2.4) -- cycle;
+ }%
+ {%
+ \relax%
+ }
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom left) at (-0.5,-2.6);
+ \coordinate (-bottom) at (0,-3);
+ \coordinate (-bottom right) at (0.5,-2.6);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top right) at (0.5,2.6);
+ \coordinate (-top) at (0,3);
+ \coordinate (-top left) at (-0.5,2.6);
+ \end{scope}
+ }%
+ }%
+}
+
+%: Reactors
+%: Stirred Reactor
+\tikzset{stirred reactor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-0.732) to [out=270,in=270]
+ (0.8,-0.732) --
+ (0.8,0.732) to [out=90,in=90]
+ (-0.8,0.732) -- cycle;
+ \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285]
+ (0,1.75) --
+ (0,0) to [out=150,in=90]
+ (-0.5,0) to [out=270,in=210]
+ (0,0) to [out=30,in=90]
+ (0.5,0) to [out=270,in=330] (0,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.8,0);
+ \coordinate (-bottom left) at (-0.8,-0.732);
+ \coordinate (-bottom) at (0,-1.2);
+ \coordinate (-bottom right) at (0.8,-0.732);
+ \coordinate (-right) at (0.8,0);
+ \coordinate (-top right) at (0.8,0.732);
+ \coordinate (-top) at (0,1.2);
+ \coordinate (-top left) at (-0.8,0.732);
+ \coordinate (-shaft) at (0.5,1.5);
+ \end{scope}
+ }%
+}
+%: Packed Bed Reactor
+\tikzset{packed bed reactor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-1.0,-0.4) rectangle (1.0,0.4)
+ (-1.0,-0.45) -- (-1.0,0.45)
+ (1.0,-0.45) -- (1.0,0.45);
+ \draw [chpunitstyle, join=bevel]
+ (-0.8,0.4) --
+ (0.8,-0.4) --
+ (0.8,0.4) --
+ (-0.8,-0.4) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1,0);
+ \coordinate (-bottom) at (0,-0.4);
+ \coordinate (-right) at (1,0);
+ \coordinate (-top) at (0,0.4);
+ \coordinate (-utility bottom left) at (-0.9,-0.4);
+ \coordinate (-utility bottom right) at (0.9,-0.4);
+ \coordinate (-utility top right) at (0.9,0.4);
+ \coordinate (-utility top left) at (-0.9,0.4);
+ \end{scope}
+ }%
+}
+%: Fluidized Bed Reactor
+\tikzset{fluidized bed reactor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-0.4) --
+ (-0.2,-0.8) --
+ (-0.2,-1.2) --
+ (0.2,-1.2) --
+ (0.2,-0.8) --
+ (0.8,-0.4) --
+ (0.8,0.732) to [out=90,in=90]
+ (-0.8,0.732) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.8,0);
+ \coordinate (-bottom left) at (-0.8,-0.4);
+ \coordinate (-bottom) at (0,-1.2);
+ \coordinate (-bottom right) at (0.8,-0.4);
+ \coordinate (-right) at (0.8,0);
+ \coordinate (-top right) at (0.8,0.732);
+ \coordinate (-top) at (0,1.2);
+ \coordinate (-top left) at (-0.8,0.732);
+ \end{scope}
+ }%
+}
+%: Tube Bundle Reactor
+\tikzset{tube bundle reactor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-0.732) to [out=270,in=270]
+ (0.8,-0.732) --
+ (0.8,0.732) to [out=90,in=90]
+ (-0.8,0.732) -- cycle;
+ \foreach \i in {1, 2, ...,19} {%
+ \draw [chpunitstyle]
+ (-0.8 + 0.08*\i,-0.65) -- ++(0,1.3);
+ }
+ \draw [chpunitstyle]
+ (-0.85,-0.65) -- (0.85,-0.65)
+ (-0.85,0.65) -- (0.85,0.65);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.8,0);
+ \coordinate (-bottom left) at (-0.8,-0.732);
+ \coordinate (-bottom) at (0,-1.2);
+ \coordinate (-bottom right) at (0.8,-0.732);
+ \coordinate (-right) at (0.8,0);
+ \coordinate (-top right) at (0.8,0.732);
+ \coordinate (-top) at (0,1.2);
+ \coordinate (-top left) at (-0.8,0.732);
+ \end{scope}
+ }%
+}
+%: Associative Pics for Reactors
+%: Tank Reactor
+\tikzset{tank reactor/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,-0.732) to [out=270,in=270]
+ (0.8,-0.732) --
+ (0.8,0.732) to [out=90,in=90]
+ (-0.8,0.732) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.8,0);
+ \coordinate (-bottom left) at (-0.8,-0.732);
+ \coordinate (-bottom) at (0,-1.2);
+ \coordinate (-bottom right) at (0.8,-0.732);
+ \coordinate (-right) at (0.8,0);
+ \coordinate (-top right) at (0.8,0.732);
+ \coordinate (-top) at (0,1.2);
+ \coordinate (-top left) at (-0.8,0.732);
+ \end{scope}
+ }%
+}
+%: Jacket
+\tikzset{jacket/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.8,0.7) --
+ (-1.0,0.5) --
+ (-1.0,-0.732) to [out=270,in=180]
+ (-0.15,-1.3) -- (-0.1,-1.2)
+ (0.8,0.7) --
+ (1.0,0.5) --
+ (1.0,-0.732) to [out=270,in=0]
+ (0.15,-1.3) -- (0.1,-1.2);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.0,0);
+ \coordinate (-bottom left) at (-0.15,-1.3);
+ \coordinate (-bottom right) at (0.15,-1.3);
+ \coordinate (-right) at (1.0,0);
+ \coordinate (-top right) at (1.0,0.5);
+ \coordinate (-top left) at (-1.0,0.5);
+ \end{scope}
+ }%
+}
+%: Stirrer
+\tikzset{stirrer/.pic=%
+ {%
+ \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285]
+ (0,1.75) --
+ (0,0) to [out=150,in=90]
+ (-0.5,0) to [out=270,in=210]
+ (0,0) to [out=30,in=90]
+ (0.5,0) to [out=270,in=330] (0,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-shaft) at (0.5,1.5);
+ \end{scope}
+ }%
+}
+%: Coil
+\tikzset{coil/.pic=%
+ {%
+ \draw [chpunitstyle, join=bevel]
+ (1.0,0.7) --
+ (-0.7,0.7) --
+ (0.7,0.467) --
+ (-0.7,0.233) --
+ (0.7,0) --
+ (-0.7,-0.233) --
+ (0.7,-0.467) --
+ (-0.7,-0.7) -- (1.0,-0.7);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-bottom) at (1.0,-0.7);
+ \coordinate (-top) at (1.0,0.7);
+ \end{scope}
+ }%
+}
+%: Sprayer
+\tikzset{sprayer/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) --
+ (1.4,0) -- ++(0.1,-0.1)
+ (0.2,0) -- ++(-0.1,-0.1)
+ (0.2,0) -- ++(0.1,-0.1)
+ (0.6,0) -- ++(-0.1,-0.1)
+ (0.6,0) -- ++(0.1,-0.1)
+ (1.0,0) -- ++(-0.1,-0.1)
+ (1.0,0) -- ++(0.1,-0.1)
+ (1.4,0) -- ++(-0.1,-0.1);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \end{scope}
+ }%
+}
+%: Bubbler
+\tikzset{bubbler/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) --
+ (1.4,0) -- ++(0.1,0.1)
+ (0.2,0) -- ++(-0.1,0.1)
+ (0.2,0) -- ++(0.1,0.1)
+ (0.6,0) -- ++(-0.1,0.1)
+ (0.6,0) -- ++(0.1,0.1)
+ (1.0,0) -- ++(-0.1,0.1)
+ (1.0,0) -- ++(0.1,0.1)
+ (1.4,0) -- ++(-0.1,0.1);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \end{scope}
+ }%
+}
+%: Packing
+\tikzset{packing/.pic=%
+ {%
+ \draw [chpunitstyle, join=bevel]
+ (-0.8,-0.7) --
+ (0.8,0.7) --
+ (-0.8,0.7) --
+ (0.8,-0.7) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \end{scope}
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%: Process Utilities
+
+%: Valves
+%: Lamination Valve
+\tikzset{lamination valve/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (-0.2,-0.1) rectangle (0.2,0.1)
+ (-0.2,0.1) -- (0.2,0)
+ (-0.2,-0.1) -- (0.2,0);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inlet) at (-0.2,0);
+ \coordinate (-outlet) at (0.2,0);
+ \end{scope}
+ }%
+}
+%: Valve
+\tikzset{pics/valve/.style=%
+ {%
+ code=%
+ {%
+ \ifthenelse{\equal{#1}{main}}{%
+ \let\chp@ValveThickness\chp@MainStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{secondary}}{%
+ \let\chp@ValveThickness\chp@SecondaryStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{utility}}{%
+ \let\chp@ValveThickness\chp@UtilityStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (-0.2,-0.1) --
+ (-0.2,0.1) --
+ (0.2,-0.1) --
+ (0.2,0.1) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.2,0);
+ \coordinate (-right) at (0.2,0);
+ \end{scope}
+ }%
+ }%
+}
+%: Three-Way Valve
+\tikzset{pics/valve triple/.style=%
+ {%
+ code=%
+ {%
+ \ifthenelse{\equal{#1}{main}}{%
+ \let\chp@ValveThickness\chp@MainStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{secondary}}{%
+ \let\chp@ValveThickness\chp@SecondaryStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{utility}}{%
+ \let\chp@ValveThickness\chp@UtilityStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (0,0) --
+ (-0.2,-0.1) --
+ (-0.2,0.1) --
+ (0,0) --
+ (-0.1,0.2) --
+ (0.1,0.2) --
+ (0,0) --
+ (0.2,-0.1) --
+ (0.2,0.1) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.2,0);
+ \coordinate (-right) at (0.2,0);
+ \coordinate (-top) at (0,0.2);
+ \end{scope}
+ }%
+ }%
+}
+%: Four-Way Valve
+\tikzset{pics/valve quadruple/.style=%
+ {%
+ code=%
+ {%
+ \ifthenelse{\equal{#1}{main}}{%
+ \let\chp@ValveThickness\chp@MainStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{secondary}}{%
+ \let\chp@ValveThickness\chp@SecondaryStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{utility}}{%
+ \let\chp@ValveThickness\chp@UtilityStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (-0.2,-0.1) --
+ (-0.2,0.1) --
+ (0.2,-0.1) --
+ (0.2,0.1) -- cycle
+ (-0.1,0.2) --
+ (0.1,0.2) --
+ (-0.1,-0.2) --
+ (0.1,-0.2) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.2,0);
+ \coordinate (-bottom) at (0,-0.2);
+ \coordinate (-right) at (0.2,0);
+ \coordinate (-top) at (0,0.2);
+ \end{scope}
+ }%
+ }%
+}
+%: Safety Valve
+\tikzset{pics/safety valve/.style=%
+ {%
+ code=%
+ {%
+ \ifthenelse{\equal{#1}{main}}{%
+ \let\chp@ValveThickness\chp@MainStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \ifthenelse{\equal{#1}{utility}}{%
+ \let\chp@ValveThickness\chp@UtilityStreamThickness%
+ }%
+ {%
+ \relax%
+ }
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (0,0) --
+ (-0.1,-0.2) --
+ (0.1,-0.2) -- cycle
+ (0,0) --
+ (0.2,-0.1) --
+ (0.2,0.1) -- cycle;
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale, fill]
+ (0,0) circle (0.025);
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (0,0) -- (0,0.3)
+ (-0.05,0.26) -- (0.05,0.24)
+ (-0.05,0.21) -- (0.05,0.19)
+ (-0.05,0.16) -- (0.05,0.14);
+ \draw [\chp@ValveThickness, scale=\chp@UnitScale]
+ (0.2,0) -- (0.4,0)
+ (0.35,0.1) -- (0.45,-0.1);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-inlet) at (0,-0.2);
+ \coordinate (-outlet) at (0.4,0);
+ \end{scope}
+ }%
+ }%
+}
+
+%: Process Streams
+%: Inlet
+\tikzset{inlet/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.25);
+ \draw [chpunitstyle, fill]
+ (0.25,0) -- (150:0.25)
+ (0.25,0) -- (-150:0.25) arc (210:150:0.25);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.25,0);
+ \coordinate (-bottom) at (0,-0.25);
+ \coordinate (-stream) at (0.25,0);
+ \coordinate (-top) at (0,0.25);
+ \end{scope}
+ }%
+}
+%: Outlet
+\tikzset{outlet/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.25)
+ (0.25,0) -- (150:0.25)
+ (0.25,0) -- (-150:0.25);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-stream) at (-0.25,0);
+ \coordinate (-bottom) at (0,-0.25);
+ \coordinate (-right) at (0.25,0);
+ \coordinate (-top) at (0,0.25);
+ \end{scope}
+ }%
+}
+
+%: Instrumentation
+%: Instrument
+\tikzset{pics/instrument/.style=%
+ {%
+ code=%
+ {%
+ \draw [chpinstrumentstyle]
+ (0,0) circle (0.5);
+ \node [font=\chp@InstrumentFontSize] at (0,0) {#1};
+ \begin{scope} [scale=\chp@InstrumentScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.5);
+ \end{scope}
+ }%
+ }%
+}
+%: Controller
+\tikzset{pics/controller/.style=%
+ {%
+ code=%
+ {%
+ \draw [chpinstrumentstyle]
+ (-0.5,-0.5) rectangle (0.5,0.5);
+ \node [font=\chp@InstrumentFontSize] at (0,0) {#1};
+ \begin{scope} [scale=\chp@InstrumentScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-0.5,0);
+ \coordinate (-bottom) at (0,-0.5);
+ \coordinate (-right) at (0.5,0);
+ \coordinate (-top) at (0,0.5);
+ \end{scope}
+ }%
+ }%
+}
+%: Actuator
+\tikzset{actuator/.pic=%
+ {%
+ \draw [\chp@InstrumentThickness, scale=\chp@UnitScale]
+ (0,0) -- (0,0.2)
+ (0.1,0.2) arc (0:180:0.1) -- cycle;
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-top) at (0,0.3);
+ \end{scope}
+ }%
+}
+
+%: Nozzles
+%: Input
+\tikzset{input/.pic=%
+ {%
+ \draw [chpunitstyle]
+ (0,0) circle (0.05);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \end{scope}
+ }%
+}
+%: Output
+\tikzset{output/.pic=%
+ {%
+ \draw [chpunitstyle, fill]
+ (0,0) circle (0.05);
+ \begin{scope} [scale=\chp@UnitScale]
+ \coordinate (-anchor) at (0,0);
+ \end{scope}
+ }%
+}
+
+%: Blocks
+%: Block
+\tikzset{pics/block/.style=%
+ {%
+ code=%
+ {%
+ \draw [chpblockstyle]
+ (-1.5,-0.75) rectangle (1.5,0.75);
+ \node [align=center, font=\chp@BlockFontSize] at (0,0) {#1};
+ \begin{scope} [scale=\chp@BlockScale]
+ \coordinate (-anchor) at (0,0);
+ \coordinate (-left) at (-1.5,0);
+ \coordinate (-bottom) at (0,-0.75);
+ \coordinate (-right) at (1.5,0);
+ \coordinate (-top) at (0,0.75);
+ \end{scope}
+ }%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput % End of the Package \ No newline at end of file
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index b3e093d5c9b..b0ffe3747b7 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -153,7 +153,7 @@ my @TLP_working = qw(
chbibref cheatsheet checkcites checkend checklistings chem-journal
chemarrow chembst chemcompounds chemcono chemexec
chemfig chemformula chemgreek chemmacros
- chemnum chemschemex chemsec chemstyle cherokee
+ chemnum chemplants chemschemex chemsec chemstyle cherokee
chess chess-problem-diagrams chessboard chessfss chet chextras
chicago chicagoa chicago-annote chickenize childdoc chivo
chkfloat chklref chletter chngcntr chordbars chordbox chronology
diff --git a/Master/tlpkg/tlpsrc/chemplants.tlpsrc b/Master/tlpkg/tlpsrc/chemplants.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/chemplants.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc b/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
index 7c54236d5f9..acf115e9b3e 100644
--- a/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
@@ -44,6 +44,7 @@ depend chemformula
depend chemgreek
depend chemmacros
depend chemnum
+depend chemplants
depend chemschemex
depend chemsec
depend chemstyle