%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 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