diff options
author | Norbert Preining <norbert@preining.info> | 2019-11-20 03:00:33 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-11-20 03:00:33 +0000 |
commit | 18cfbeaea364a664e0f0b457430f65af66d8122c (patch) | |
tree | ff0db963069b4dfdef1daac968f154e9cd1881c4 /graphics/pgf | |
parent | 025f7bfee79d7817a876831bb19f34a2dfb1b2e2 (diff) |
CTAN sync 201911200300
Diffstat (limited to 'graphics/pgf')
-rw-r--r-- | graphics/pgf/contrib/chemplants/README.md | 31 | ||||
-rw-r--r-- | graphics/pgf/contrib/chemplants/chemplants-changes.pdf | bin | 0 -> 119507 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/chemplants/chemplants-changes.tex | 233 | ||||
-rw-r--r-- | graphics/pgf/contrib/chemplants/chemplants-doc.pdf | bin | 0 -> 722239 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/chemplants/chemplants-doc.tex | 5559 | ||||
-rw-r--r-- | graphics/pgf/contrib/chemplants/chemplants.sty | 1758 |
6 files changed, 7581 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/chemplants/README.md b/graphics/pgf/contrib/chemplants/README.md new file mode 100644 index 0000000000..811d5a7506 --- /dev/null +++ b/graphics/pgf/contrib/chemplants/README.md @@ -0,0 +1,31 @@ +# The chemplants package + +Copyright 2018-2019 Elia Arnese Feffin. + +Contact: <elia24913@me.com>. + +Current version: 0.9.8 - 2019/11/19. + +## Abstract + +The `chemplants` package offers tools to draw simple or barely complex schemes of +chemical processes. The package defines several standard symbols and styles to +draw process units and streams. The guiding light of the package is the UNICHIM +regulation. + +All of the symbols and styles are defined using tools of the `tikz` package, thus +a basic knowledge of the logic of this powerful tool is required to profitably use +`chemplants`. + +## Licensing + +The `chemplants` package is covered by the LaTeX Project Public License (LPPL), +version 1.3c or later. The latest version can be found at +<http://www.latex-project.org/lppl.txt>. + +## Documentation + +The documentation of the package can be found in `chemplants-doc.pdf`, provided +together with its source code. Changes to the package facilities are collected +in `chemplants-changes.pdf`, which is provided together with its source code too. +However, notice that versions prior to 0.9.8 were never officially published. diff --git a/graphics/pgf/contrib/chemplants/chemplants-changes.pdf b/graphics/pgf/contrib/chemplants/chemplants-changes.pdf Binary files differnew file mode 100644 index 0000000000..ec93be26da --- /dev/null +++ b/graphics/pgf/contrib/chemplants/chemplants-changes.pdf diff --git a/graphics/pgf/contrib/chemplants/chemplants-changes.tex b/graphics/pgf/contrib/chemplants/chemplants-changes.tex new file mode 100644 index 0000000000..0b515b6812 --- /dev/null +++ b/graphics/pgf/contrib/chemplants/chemplants-changes.tex @@ -0,0 +1,233 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% chemplants-changes.tex +%% Copyright 2018-2019 Elia Arnese Feffin +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Elia Arnese Feffin. +% The Current Maintainer can be reached at the e-mail: elia24913@me.com. +% +% This work consists of the files chemplants.sty, chemplants-doc.tex +% and chemplants-changes.tex, together with the derived files +% chemplants-doc.pdf and chemplants-changes.pdf. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[12pt]{article} % Document Class +\usepackage[T1]{fontenc} % Font Encoding +\usepackage[utf8]{inputenc} % Input Encoding +\usepackage[italian,english]{babel} % Document Language +\usepackage[a4paper]{geometry} % Page Geometry + \geometry{top=2.0cm,bottom=2.5cm} + \geometry{left=2.75cm,right=2.75cm} + \geometry{heightrounded} +\usepackage{microtype} % Micro Typography +\usepackage{relsize} % Text Rescale + \newcommand*{\ac}[1]{% % Acronyms + \textsmaller{#1}% + } +\usepackage{chemplants} % Process Schemes + \newcommand*{\chpn}[1]{\texttt{#1}} % chemplats Node + \newcommand*{\chpp}[1]{\texttt{#1}} % chemplats Unit + \newcommand*{\chps}[1]{\texttt{#1}} % chemplats Path Style + \newcommand*{\chpa}[1]{\texttt{#1}} % chemplats Pic Argument + \newcommand*{\chemplants}{chemplants} + \newcommand*{\TikZ}{Ti\textit{k}Z} +\usepackage[hyperfootnotes=false]{hyperref} % Hyperlinks +% \hypersetup{% +% linkbordercolor=LinkColor,% +% urlbordercolor=URLColor,% +% citebordercolor=CiteColor} + \newcommand{\mail}[1]{% % eMail as Hypertext + \href{mailto:#1}{\texttt{#1}}% + } +\usepackage{bookmark} % PDF Bookmarks + \bookmarksetup{% + numbered,% + open,% + depth=3% + } + +%: Document Informations + +\title{Changes to the chemplants package} +\author{Elia Arnese Feffin} +\date{\chpdate} + +%: PDF Properties + +\hypersetup{pdfinfo={% + Title={Changes to the chemplants package},% + Author={Elia Arnese Feffin},% + Subject={version \chpversion},% + Creator={pdfLaTeX},% + Producer={TeXShop with LaTeX Compiler}% +}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Document Start + +\begin{document} % Document Begins + +%: Frontpage + +\pdfbookmark[1]{Frontpage}{fronts} % Frontpage Bookmark + +\maketitle % Title + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection*{Version 0.7.0 -- 2019/02/13} + +\begin{itemize} + \item The \chemplants\ package sees the light for the first time. + \item First writing of the documentation. +\end{itemize} + +\subsection*{Version 0.8.0 -- 2019/02/19} + +\begin{itemize} + \item Implementation of the anchor coordinates nodes in the units code. + \item Rewriting of the documentation with coordinate nodes. + \item New example using coordinate nodes: absorption and stripping + integration. +\end{itemize} + +\subsection*{Versione 0.8.1 -- 2019/02/20} + +\begin{itemize} + \item Bug fixed: coordinates node are not sensible to the global scale + factor. +\end{itemize} + +\subsection*{Version 0.8.2 -- 2019/02/20} + +\begin{itemize} + \item New units: \chpp{lamination valve}, \chpp{inlet}, \chpp{outlet} and + \chpp{block}. + \item Bibliography updating: \TikZ\ version 3.1.1. +\end{itemize} + +\subsection*{Version 0.8.5 -- 2019/02/21} + +\begin{itemize} + \item New units: \chpp{cyclone}, \chpp{stirred reactor}, + \chpp{packed bed reactor} and\\ + \chpp{film reactor}. + \item Units order is changed and categories (documentation sections) have + been inserted into the .sty file. +\end{itemize} + +\subsection*{Version 0.9.0 -- 2019/02/22} + +\begin{itemize} + \item New definition of \chpp{centrifugal pump} and bottom node addition. + \item New units: \chpp{rotary pump}, \chpp{liquid ring pump}, + \chpp{reciprocating pump}, \chpp{fan},\\ + \chpp{centrifugal compressor}, \chpp{rotary compressor}, + \chpp{reciprocating compressor},\\ + \chpp{multistage compressor} and \chpp{ejector}. +\end{itemize} + +\subsection*{Version 0.9.1 -- 2019/02/24} + +\begin{itemize} + \item New units: \chpp{cone tank}, \chpp{dome tank}, + \chpp{floating roof tank}, \chpp{bell gasholder} and + \chpp{dry gasholder}. +\end{itemize} + +\subsection*{Version 0.9.2 -- 2019/02/25} + +\begin{itemize} + \item Review of the \chpp{film reactor} symbol. + \item Review of the \chpp{heat exchangers} node names, now defined as shell + and pipes for the sake of clearance. +\end{itemize} + +\subsection*{Version 0.9.3 -- 2019/02/26} + +\begin{itemize} + \item Review of the \chpp{cyclone} node names + \item New units: \chpp{fluidized bed reactor}, \chpp{steam trap}, + \chpp{scrubber}, \chpp{stratifier} and \chpp{settler}. +\end{itemize} + +\subsection*{Version 0.9.4 -- 2019/02/26} + +\begin{itemize} + \item New units: \chpp{gas-liquid separator}, \chpp{kettle boiler}, + \chpp{tube bundle evaporator}, \chpp{basket evaporator}, + \chpp{climbing film evaporator}, \chpp{stirred crystallizer} and + \chpp{pipe bundle crystallizer}. +\end{itemize} + +\subsection*{Version 0.9.5 -- 2019/03/03} + +\begin{itemize} + \item Review of the \chpn{kettle boiler} node names. + \item Review of the code to draw packings: no more sharp knees protruding + around units + \item Added a \TikZ\ library to access to the Hobby's algorithm. + \item New units: \chpp{air heat exchanger}, + \chpp{tube bundle heat exchanger}, \chpp{plates heat exchanger}, + \chpp{spiral heat exchanger} and \chpp{pipe furnace}. +\end{itemize} + +\subsection*{Version 0.9.6 -- 2019/03/04} + +\begin{itemize} + \item Review of the \chpp{stirred reactor} and \chpp{stirred crystallizer} + node names: now the end of the stirrer is called \chpn{shaft}. + \item New units: associative pics for reactors, which are + \chpp{tank reactor}, \chpp{jacket}, \chpp{stirrer}, \chpp{coil}, + \chpp{sprayer}, \chpp{bubbler} and \chpp{packing}. +\end{itemize} + +\subsection*{Version 0.9.7 -- 2019/11/18} + +\begin{itemize} + \item Documentation language revision: thanks to Desi Costa for the help. + \item Now also the source code of the documentation is provided with the + package. + \item Changes are written in a more gracious format. + \item Review of the \chpp{plates heat exchanger}: now it is called + \chpp{plate heat exchanger}. + \item Review of the \chpp{pipe furnace} node names: now the ends of the + pipes are called \chpn{pipes left} and \chpn{pipes right}. + \item Review of the \chpp{film reactor}: now it is called + \chpp{tube bundle reactor}. + \item Review of the \chps{utility stream} style: the default thickness is now + \verb|very thin|. + \item Review of the \chps{signal} style: the default thickness is now + \verb|very thin| and the algorithm to place markings has changed. + \item New stream style: \chps{secondary stream} (provided of thickness + custumisation command). + \item Review of \chpp{valve} and \chpp{valve triple}: these units now accept + a new argument for \chps{secondary streams} thickness. + \item Review of \chpp{actuator}: dimensione of this units are now doubled. + \item New units: \chpp{valve quadruple}, \chpp{safety valve}. +\end{itemize} + +\subsection*{Version 0.9.8 -- 2019/11/19} + +\begin{itemize} + \item The \chemplants\ package is ready to be officially published since, + though not complete as I wish, it is mature enough. + \item The package is now explicitly covered by the \LaTeX\ Project Public + License (\ac{LPPL}), versione 1.3c. + \item The bibliography database is no more supplied, since it has been + embedded into the source file of the documentation. +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} % Document End
\ No newline at end of file diff --git a/graphics/pgf/contrib/chemplants/chemplants-doc.pdf b/graphics/pgf/contrib/chemplants/chemplants-doc.pdf Binary files differnew file mode 100644 index 0000000000..1c601e6b82 --- /dev/null +++ b/graphics/pgf/contrib/chemplants/chemplants-doc.pdf diff --git a/graphics/pgf/contrib/chemplants/chemplants-doc.tex b/graphics/pgf/contrib/chemplants/chemplants-doc.tex new file mode 100644 index 0000000000..10d862c9a2 --- /dev/null +++ b/graphics/pgf/contrib/chemplants/chemplants-doc.tex @@ -0,0 +1,5559 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% chemplants-doc.tex +%% Copyright 2018-2019 Elia Arnese Feffin +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Elia Arnese Feffin. +% The Current Maintainer can be reached at the e-mail: elia24913@me.com. +% +% This work consists of the files chemplants.sty, chemplants-doc.tex +% and chemplants-changes.tex, together with the derived files +% chemplants-doc.pdf and chemplants-changes.pdf. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Primary Settings + +\documentclass[12pt]{article} % Document Class +\usepackage[T1]{fontenc} % Font Encoding +\usepackage[utf8]{inputenc} % Input Encoding +\usepackage[italian,english]{babel} % Document Language + +%: Page Geometry + +\usepackage[a4paper]{geometry} % Page Geometry + \geometry{top=2.0cm,bottom=2.5cm} + \geometry{left=2.75cm,right=2.75cm} + \geometry{heightrounded} + +%: Colors + +\usepackage{guit} % GuIT Logo + \definecolor{LinkColor}{rgb}{% % Link Color + 0.116, 0.565, 1.000% + } + \definecolor{URLColor}{rgb}{% % URL Color + 1.000, 0.250, 0.250% + } + \definecolor{CiteColor}{rgb}{% % Citation Color + 0.235, 0.700, 0.444% + } + +%: Text + +\usepackage{microtype} % Micro Typography +\usepackage{relsize} % Text Rescale + \newcommand{\foreignformat}{% % Foreign Text Format + \itshape% + } + \providecommand*{\ap}[1]{% % Upright Superscript + \textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}% + } + \providecommand*{\ped}[1]{% % Upright Subscript + \textormath{$_{\mbox{\fontsize\sf@size\z@\selectfont#1}}$}{_\mathrm{#1}}% + } + \newcommand{\italiano}[1]{% % Italian Text + \foreignlanguage{italian}{\foreignformat #1}% + } + \newcommand*{\ac}[1]{% % Acronyms + \textsmaller{#1}% + } +\raggedbottom % Raggedbottom Document + +%: Sectioning and Contents + +\setcounter{secnumdepth}{2} % Section Heads Level +\setcounter{tocdepth}{2} % TOC Level +%\renewcommand{\subsubsection}[1]{} % Gobbles Any \subsubsec + +%: Figures + +\usepackage{graphicx} % External Images + +%: Floats + +\usepackage{caption} % Captions + \captionsetup{% + font=small,% + labelfont={bf},% + format=hang,% + tableposition=top,% + figureposition=bottom% + } +\usepackage{float} % Floats + \floatplacement{table}{htp} % Tables Placement + \floatplacement{figure}{htp} % Figures Placement + +%: Bibliography + +\usepackage[autostyle,italian=guillemets]{csquotes} % Citations +\usepackage[% + useprefix,% + hyperref,% + url=true,% + language=auto,% + autolang=hyphen,% + bibstyle=numeric,% + citestyle=authoryear% +]{biblatex} % Bibliography +\begin{filecontents}{chemplants-bd.bib} +@book{cacciatore:disegno, + title = {Manuale di disegno di impianti chimici}, + author = {Cacciatore, Alfonso and Calatozzolo, Mariano}, + date = {2018}, + publisher = {Edisco}, + location = {Torino}, + isbn = {978\,88\,441\,2085\,6}, + langid = {italian}, +} +@book{cremer:tikz, + title = {A Very Minimal Introduction to \TikZ}, + author = {Cr\'emer, Jacques}, + date = {2011}, + url = {http://cremeronline.com/LaTeX/minimaltikz.pdf}, + langid = {english}, +} +@book{fiadrino:tikz, + title = {Introduzione all'uso di \TikZ\ in ingegneria}, + author = {Fiandrino, Claudio}, + date = {2014}, + url = {http://www.guitex.org/home/images/doc/GuideGuIT/introingtikz.pdf}, + langid = {italian}, +} +@book{pantieri:latexpedia, + title = {\LaTeX pedia}, + author = {Pantieri, Lorenzo}, + date = {2017}, + url = {http://www.lorenzopantieri.net/LaTeX_files/LaTeXpedia.pdf}, + langid = {italian}, +} +@book{pantieri:artedi, + title = {L'arte di disegnare con \LaTeX}, + author = {Pantieri, Lorenzo and Gordini, Tommaso}, + date = {2014}, + langid = {italian}, +} +@manual{tantau:tikz, + title = {\TikZ\ and \PGF\ Manual}, + subtitle = {Version 3.1.1}, + author = {Tantau, Till}, + date = {2019}, + url = {http://ctan.mirror.garr.it/mirrors/CTAN/graphics/pgf/base/doc/pgfmanual.pdf}, + langid = {english}, +} +@manual{unichim:impianti, + title = {Impianti chimici}, + subtitle = {Simboli e sigle per schemi e disegni}, + number = {Manuale N.~6}, + author = {\ac{UNICHIM}}, + date = {1994}, + location = {Milano}, + langid = {italian}, +} +\end{filecontents} +\bibliography{chemplants-bd} % Bibliography Database + +%: Chemical Process Schemes + +\usepackage{chemplants} % Process Schemes + \tikzset{every node/.style={font=\footnotesize}} + \tikzset{anchor mark/.pic=% % Anchor Point + {% + \draw [red] + (-2.828pt,0) -- (2.828pt,0) + (0,-2.828pt) -- (0,2.828pt); + }% + } + \tikzset{node mark/.pic=% % Remarkable Node + {% + \draw [blue] + (-2pt,-2pt) -- (2pt,2pt) + (2pt,-2pt) -- (-2pt,2pt); + }% + } + +%: Math + +\usepackage{amsmath} % Math Package + \renewcommand{\vec}[1]{\boldsymbol{#1}} % Vectors + \newcommand*{\flow}[1]{\dot{#1}} % Flow-Rate + +%: Physics + +\usepackage{siunitx} % Measurement Units + \sisetup{exponent-product={\cdot}} + +%: Chemistry + +\usepackage{chemmacros} % Chemistry Utilities + \chemsetup{formula=chemformula,greek=textgreek} + +%: Codes + +\usepackage{listings} % Listings + \lstset{escapeinside={£!}{!£}} + \newcommand*{\meta}[1]{% % Metacode + $\langle$\textrm{\textit{#1}}$\rangle$% + } + \lstnewenvironment{chpcode}[1][]{% % chemplats Code + \lstset{% + basicstyle=\small\ttfamily,% + frame=none,% + numbers=none,% + %numberstyle=\footnotesize,% + tabsize=4,% + showstringspaces=false,% + language=[LaTeX]TeX,% + keywordstyle=\color{black},% + commentstyle=\color{black},% + gobble=4,% + #1% + }% + }{} + \newcommand*{\chpn}[1]{\texttt{#1}} % chemplats Node + \newcommand*{\chpp}[1]{\texttt{#1}} % chemplats Unit + \newcommand*{\chps}[1]{\texttt{#1}} % chemplats Path Style + \newcommand*{\chpa}[1]{\texttt{#1}} % chemplats Pic Argument + \newcommand*{\chemplants}{chemplants} + \newcommand*{\TikZ}{Ti\textit{k}Z} + \newcommand*{\CircuiTikZ}{Circui\TikZ} + \newcommand*{\PGF}{PGF} + \newcommand*{\UNICHIM}{\ac{UNICHIM}} + \newcommand*{\siunitx}{siunitx} + \newcommand*{\chemformula}{chemformula} + \newcommand*{\babel}{babel} + \newcommand*{\TeXlive}{\TeX live} + \newcommand*{\MiKTeX}{MiK\TeX} + +%: Cross References + +\newcommand*{\figurerefname}{} +\addto\captionsenglish{\renewcommand*{\figurerefname}{figure}} +\newcommand*{\fref}[1]{\figurerefname~\ref{#1}} +\newcommand*{\listingrefname}{} +\addto\captionsenglish{\renewcommand*{\listingrefname}{listing}} +\newcommand*{\lref}[1]{\listingrefname~\ref{#1}} + +%: Hyper References + +\usepackage{url} % Web Sites +\usepackage[hyperfootnotes=false]{hyperref} % Hyperlinks + \hypersetup{% + linkbordercolor=LinkColor,% + urlbordercolor=URLColor,% + citebordercolor=CiteColor} + \newcommand{\mail}[1]{% % eMail as Hypertext + \href{mailto:#1}{\texttt{#1}}% + } +\usepackage[all]{hypcap} % Captions References + +%: Bookmarks + +\usepackage{bookmark} % PDF Bookmarks + \bookmarksetup{% + numbered,% + open,% + depth=3% + } + +%: Document Informations + +\title{The chemplants package} +\author{Elia Arnese Feffin\footnote{e-mail: \mail{elia24913@me.com}}} +\date{Version \chpversion\ -- \chpdate} + +%: PDF Properties + +\hypersetup{pdfinfo={% + Title={The chemplants package},% + Author={Elia Arnese Feffin},% + Subject={version \chpversion},% + Creator={pdfLaTeX},% + Producer={TeXShop with LaTeX Compiler}% +}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Document Start + +\begin{document} % Document Begins + +%: Frontpage + +\pdfbookmark[1]{Frontpage}{fronts} % Frontpage Bookmark + +\maketitle % Title + +\begin{abstract} +The \chemplants\ package offers tools to draw simple or barely complex schemes of +chemical processes. Process units and styles for streams and utilities are +defined to be a sort of extension of the \TikZ\ package, thus a basic knowledge +of the logic of this powerful tool is required to profitably use \chemplants. +\end{abstract} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\pdfbookmark[1]{\contentsname}{tabcon} % Contents Bookmark + +\tableofcontents % Table of Contents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Motivations} + +The \chemplants\ package had birth during my bachelor's degree in Chemical +Engineering at the University of Padova. I discovered \LaTeX\ during the first +year and I started using it to write my lecture notes, my reports and almost +every document I had to produce; the more I used it, the more I explored the +boundless universe of extensions available, both using them and studying relative +documentation (and guides). Soon, I encountered one the most beautiful and +complex packages of the \LaTeX\ distribution: the \TikZ\ package. + +Programmed drawing really changed the way I look at technical drawings and +schematic representation. \TikZ\ gives the author the possibility to use one +program only to produce written documents and the drawings they require, allowing +a perfect integration between them. I used this extremely powerful tool to draw +schematics of mechanics, sketches of diagrams and electrical circuits (with +another powerful package based on \TikZ: \CircuiTikZ). + +At a certain point, as a chemical engineering student, I had the need to start +drawing schematics of chemical processes in the forms of a block flow diagram +(\ac{BFD}) or of a process flow diagram (\ac{PFD}). \ac{BFD}s are not an issue +since they are very simple, but \ac{PFD}s require specific symbols for the +representation of process units. I looked for a long time for a \CircuiTikZ-like +package useful for chemical plants, but nothing seems to be available to this +aim. + +At that point \chemplants\ kicked in, starting as a simple idea: to use \TikZ, +in particular the possibility to define custom styles and pics, to fix a standard +set of symbols to be used with \TikZ\ drawing commands, symbols meant to be +easy-to-use and easy-to-modify. Initially, just the units I had the need to +represent were considered, but then the set of definitions started growing and a +more flexible code structure was required, thus the real birth of the package +took place. This happened during the first year of my master's degree. + +As already told, the motivations of the \chemplants\ package are to fill a lack +in the \LaTeX\ packages tree and to give everyone the possibility to draw +schematics of chemical processes, particularly \ac{PFD}s, in a simple way. A +basic knowledge of \TikZ\ is clearly required. + +All of the symbols and styles defined are based on the \UNICHIM\ regulation, +the Italian code to draw chemical processes diagrams. It takes its name from +the homolog association: \italiano{associazione per l'unificazione del settore +dell'industria chimica}. This package is not pretentious enough to strictly +follow \UNICHIM, also because this regulation defines parameters to draw +schematics way more complex than \ac{PFD}s. Anyway, \UNICHIM\ is still the +guiding light of the representation of units and streams defined by +\chemplants. + +\section{Starting Point} + +\subsection{Licensing} + +The \chemplants\ package is covered by the \LaTeX\ Project Public License +(\ac{LPPL}), version 1.3c or later. Basically, this means that users are free to +use, modify and distribute any part of the package. More accurate and detailed +informations can be found into the license itself, the latest version of which +is available at \url{http://www.latex-project.org/lppl.txt}. + +\subsection{Installation} + +The package is supplied as a simple zip archive containing the +\verb|chemplants.sty| file, the main code of the package, and the +\verb|chemplants_doc.pdf| file, the documentation (this file), together with its +source code. The simplest way to make the package work is to place +\verb|chemplants.sty| into the same directory of the \verb|.tex| file that uses +\chemplants, a solution useful to users who do not want to go along a full +installation. + +A better installation procedure for users who adopt the \TeXlive\ distribution +on a Linux-like system (including MacOS) consists in looking for the main +directory of the distribution and following the path: +\begin{chpcode} + ../texlive/texmf-local/tex/latex/ +\end{chpcode} +in which a new folder called \verb|chemplants| should be created. The file +\verb|chemplants.sty| should be placed into that folder. After that, it is +necessary to let \TeX\ know that the tree structure is changed and that a new +package is available, hence it is necessary to type in the terminal of the +system: +\begin{chpcode} + sudo texhash +\end{chpcode} +and to wait for the magic to be done (the insertion of the user password may be +required after this instruction). Another option is to let the \verb|tlmgr| +utility do all the work, moving the terminal action to the directory in which +\verb|chemplants.sty| is (\verb|cd| instruction) and typing: +\begin{chpcode} + sudo tlmgr install chemplants +\end{chpcode} + +For a Windows system running \TeXlive\ it should work the same way, but commands +have to be typed in the prompt removing the \verb|sudo| prefix, used by +Linux-like systems. Finally, \MiKTeX\ should provide a custom package manager to +handle the \TeX\ tree structure, so \chemplants\ have to be installed in the way +\MiKTeX\ manager usually handles new packages. + +\subsection{Basic Knowledge Required} + +In order to profitably use the \chemplants\ package, a basic knowledge of the +\TikZ\ package is required. There are a lot of excellent introductory guides to +this gigantic package and for every doubt there is also the enormous and +excellent documentation of the package: \cite{tantau:tikz}. For impatient +readers, \cite{cremer:tikz} (available on \ac{CTAN} into the \TikZ\ package +directory) offers a short but useful introduction to \TikZ. + +Italian language users can find on the internet some very useful guides +to learn the bases of \TikZ\ (and more of what is needed to use \chemplants). A +short but effective introduction is given in a dedicated chapter of +\cite{pantieri:latexpedia}, derived from a previous article of the same author: +\cite{pantieri:artedi}. Users who want to be really surprised by the capability +of \TikZ, besides the full documentation aforementioned, can check +\cite{fiadrino:tikz}, an excellent guide available on the \GuIT\ website (the +Italian \TeX\ and \LaTeX\ users group). + +Finally, readers interested on \UNICHIM\ regulations can easily find some +tables on the internet, or a more interesting source of information in +\cite{cacciatore:disegno}. This book reports a selection of tables coming form +\cite{unichim:impianti}, the official \UNICHIM\ manual, mainly the ones +concerning process units, styles for streams and control instrumentation; there +are also some examples of \ac{PFD}s. + +\subsection{Purposes of the Package} + +Having mentioned the \UNICHIM\ regulation, it is important to spend a couple +of words more about the aim of this package. The \chemplants\ package is meant +to help users which have a basic knowledge of \TikZ\ in representing schemes of +chemical processes and plants in a simple way. This requires to access to symbols +for process units, styles for streams and, possibly, symbols and styles for +control instrumentation. These three elements, plus a rudimental mechanism to +set the main parameters of the drawing, are what \chemplants\ provides. + +This package is not meant to produce representation of complex units or of very +specialised equipments such as the Linde column used in air distillation plants +or the Casale reactor used in ammonia synthesis. A fine representation of units +like the two just mentioned requires more than a simple symbol to be placed +somewhere in a \ac{PFD}, but a complex and detailed scheme, which goes beyond the +scope of \chemplants. Moreover, complex drawings like these are not that common, +so they do not need to be defined as pics in order to be extensively used and +easily modified. Users in the need to represent specialised schematics should +exploit the basic and advanced features of the \TikZ\ package in a more general +way, rather than asking \chemplants\ to do it for them. + +\section{Streams and Utilities} + +Streams to be used in \ac{BFD}s and \ac{PFD}s can be obtained by means of the +\verb|\draw| command of \TikZ\ to represent lines with the operator \verb|--|. +The graphicas aspect of a stream is defined as a \TikZ\ style and can be applied +to any \verb|\draw| command as an option to the command itself. Although not +explicitly showed, all of the following example instructions are intended to be +used within a \verb|tikzpicture| environment. + +\subsection{Main Stream} + +A main stream indicates the main path of a process, the one prime matters +follow to be transformed into the desired products. It is defined as a style +called \chps{main stream}, to be applied to the \verb|\draw| command: +\begin{chpcode} + \draw[main stream] (0,0) -- (2,0); +\end{chpcode} +and yields an arrow of \verb|semithick| thickness: +\begin{center} +\begin{tikzpicture} + \draw[main stream] (0,0) -- (2,0); +\end{tikzpicture} +\end{center} +As for all of the \TikZ\ arrows declared through the \verb|->| option, the tip +is present only on the last point of the path: +\begin{center} +\begin{tikzpicture} + \draw[main stream] (0,0) -- (1,0) -- (1,1) -| (2,0); +\end{tikzpicture} +\end{center} +so every main stream (arrow) to be represented requires its own \verb|\draw| +command. + +\subsection{Secondary Stream} + +A secondary stream indicates a process stream different from the main one, still +very important to the process, though not as the principal line (reactants +recycle is an example). It is defined as a style called \chps{secondary stream}, +to be applied to the \verb|\draw| command: +\begin{chpcode} + \draw[secondary stream] (0,0) -- (2,0); +\end{chpcode} +and yields an arrow of \verb|thin| thickness: +\begin{center} +\begin{tikzpicture} + \draw[secondary stream] (0,0) -- (2,0); +\end{tikzpicture} +\end{center} + +\subsection{Utility Stream} + +A utility stream indicates all of the streams different from the main and +secondary ones, but anyway useful to the process (at least in a \ac{PFD}), such +as heating steam or cooling water. It is defined as a style called +\chps{utility stream}, to be applied to the \verb|\draw| command: +\begin{chpcode} + \draw[utility stream] (0,0) -- (2,0); +\end{chpcode} +and yields an arrow of \verb|very thin| thickness (the standard one in \TikZ): +\begin{center} +\begin{tikzpicture} + \draw[utility stream] (0,0) -- (2,0); +\end{tikzpicture} +\end{center} + +The standard arrow tip defined for \chps{main stream}, \chps{secondary stream} +and \chps{utility stream} styles (and for everything else in \chemplants\ that +has an arrow tip) is the \verb|stealth| arrow of \TikZ. This can be changed, as +a lot of other graphical parameters can. The way such customisations can be +achieved will be discussed after the introduction of all units. + +\subsection{Signal} + +In a \ac{PFD}, it is possibile to sketch also the main paths of the control +system of a chemical plant. Controllers are connected to units and to actuators +through a signal line, which in a \ac{PFD} is intended as a generic signal (no +distinction between pneumatic, electric and so on). It is defined as a style +called \chps{signal}, to be applied to the \verb|\draw| command: +\begin{chpcode} + \draw[signal] (0,0) -- (2,0); +\end{chpcode} +and yields a line of \verb|very thin| thickness with parallel and oblique short +lines placed at regular intervals: +\begin{center} +\begin{tikzpicture} + \draw[signal] (0,0) -- (2,0); +\end{tikzpicture} +\end{center} + +It should be notice that \chps{signal} style is not very flexible. Markings +start \SI{5}{\mm} after the path initial point and are spaced by \SI{5}{\mm}, +ending at least \SI{5}{\mm} before the final point of the path. Thus, the optimal +result is obtained if a path has a length which is a multiple of \SI{5}{\mm}. +Otherwise, there will be an ``uncovered portion'' of the path. For example, the +code: +\begin{chpcode} + \draw[signal] (0,2) -- (2,2); + \draw[signal] (0,1) -- (1.8,1); + \draw[signal] (0,0) -- (2.2,0); +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \draw[signal] (0,2) -- (2,2); + \draw[signal] (0,1) -- (1.9,1); + \draw[signal] (0,0) -- (2.1,0); +\end{tikzpicture} +\end{center} +The top line only yields the correct graphical result. Notice also that the +minimum length a \chps{signal} path should have is \SI{1}{\mm}, which results +into a short signal with a single mark on its middle point. + +Sometimes the \chps{signal} style is not flexible enough, such as for very short +paths. For this specific aim, a \chps{short signal} style is defined, to be used +in the same way of the standard \chps{signal}, but it places a single mark in +the middle of the path: +\begin{center} +\begin{tikzpicture} + \draw[short signal] (0,0) -- (0.5,0); +\end{tikzpicture} +\end{center} +so it is recommended when a signal shorter than \SI{1}{\cm} has to be drawn. + +\subsection{Hidden Streams and Components} + +Although not really considered by the \UNICHIM\ regulation, it is sometimes +useful to show streams and components within a unit. Two special styles are +defined to this aim. + +The \chps{hidden stream} style is defined to be applied to the \verb|\draw| +command: +\begin{chpcode} + \draw[main stream, hidden stream] (0,0) -- (2,0); +\end{chpcode} +and yields a \verb|dashed| line with no specified thickness, so it has to be +used with either \chps{main stream} or \chps{utility stream} to draw the arrow +of the right thickness: +\begin{center} +\begin{tikzpicture} + \draw[main stream, hidden stream] (0,0) -- (2,0); +\end{tikzpicture} +\end{center} + +The \chps{hidden component} style is defined to be applied to the \verb|\pic| +command to draw components within a unit (in the way that will be introduced +later): +\begin{chpcode} + \pic[hidden component] at (0,0) {valve=main}; +\end{chpcode} +and yields the required unit represented not with a solid line, but with a +\verb|densely dotted| pattern: +\begin{center} +\begin{tikzpicture} + \pic[hidden component] at (0,0) {valve=main}; +\end{tikzpicture} +\end{center} + +\section{Process Units} + +Process units are defined as pics. A pic is a \TikZ\ object that represents a +simple draw to be placed at certain coordinates through the \verb|\pic| command. +The advantages of using a pic to define a standard symbol are the easiness of +use and of modification of the symbol itself, if needed. + +In order to define a pic, it is important to specify the starting point and, of +course, the code that draws the pic. The starting point is the most important +point of the pic since it is its anchor, the point that will be placed to the +coordinates declared by the \verb|\pic| command. The drawing code defines, +instead, the dimensions of the pic and its default orientation (and the line +thickness, \verb|thick| by default in \chemplants). + +The two features just introduced imply to specify what is the logic of the +pics defined by \chemplants. The main anchor is almost always defined as the +centre of the symbol (or as an important point close to it). This choice let all +of the transformation options defined by \TikZ\ to be applied to the pics +representing the units, so a high flexibility in placing and orienting units is +granted. However, there is also a drawback in this approach: the coordinates of +the main anchor of the pic cn be established, but the coordinates of the points +in which streams touch the unit have to be calculated by hand. + +The problem just highlighted was the main trouble of the \chemplants\ package. +This issue was fixed redefining units in a more cleaver way and using more +advanced tools of the \TikZ\ package. I would like to explain a little bit of +history of the package before going on. + +When I started to define units, since they where few and very simple (and since I +was not that able in programmed drawing), pics contained the simple geometrical +description of the symbols. This was easy to do, but it had the great +disadvantage of forcing the user (only me at that time) to manually calculate +coordinates for the placement of units and for streams connections. In a certain +way, the problem is also an opportunity because it forces the drawer to +accurately plan the layout of the schematics, but it is silly and very +time-consuming in large and complex drawings. + +My dream was to build a simple automatic interface like the \CircuiTikZ\ +one, which uses the \verb|to| operator of \TikZ\ in a very clever way (within a +custom environment of the package). Anyway, electric networks schematics are +simpler than chemical processes drawing under this aspect: a great part of +electrical components, such as resistors, capacitors and inductors, are bipoles, +which means with one input and one output only, just two connections points. In +chemical plants, most of the units are not simple bipoles, but can have a wide +variety of inlet and outlet streams connected in variable points. Due to this +necessity, I was not able to find a simple solution during the very first writing +of the package code. + +After some researches, I saw the light: coordinate nodes. The \TikZ\ package +offers the possibility to define a pic with some internal coordinate nodes, +special points to which a name can be assigned. In this way it is not necessary +to calculate by hand the position of the remarkable points of a unit, but it is +enough to know the names of the coordinate nodes which represent them to snap a +stream on those points. Moving a unit will then move also anchors, so the snap +will be held. Finally, \TikZ\ let a pic to be prefixed with a name that +univocally identifies the pic. This name is prefixed also to anchors declared +in the pic definition, hence also anchors are univocally determined, avoiding to +snap a stream to the wrong unit. + +\subsection{Understanding Symbols} + +Units defined by \chemplants\ can be two different kinds of pics: +\begin{itemize} + \item simple pic objects, which can be used by just calling them through a + \verb|\pic| command; + \item pic objects with a mandatory argument, in which the pic name called + through the \verb|\pic| command has to be followed by a specification. +\end{itemize} +The second category is particularly useful to draw similar units distinguished +by some details, such as different columns types, or to let units to be +sensible to the context, for example units that have to be drawn with different +thicknesses. A third possibility is to give a text argument to the pic that has +to be represented inside the pic itself; this is particularly useful for control +instruments. + +\subsubsection{The General Pic Syntax} + +A pic is a \TikZ\ object which can be called by the \verb|\pic| command. The +general syntax of the command is more or less: +\begin{chpcode} + \pic [£!\meta{options}!£] (£!\meta{identifier}!£) at (£!\meta{coordinate}!£) {£!\meta{name}!£}; +\end{chpcode} +where: +\begin{itemize} + \item \meta{options} is a list of options to be passed to the pic and it + is, as the name says, an optional argument; + \item \meta{identifier} is a user-defined name assigned to the pic that + should univocally determine it and that will be prefixed, together with + a dash, \verb|-|, to all of the nodes names (it is an optional argument + for the pic, but mandatory if one wants to access the node features); + \item \meta{coordinates} is whichever expression \TikZ\ recognises as a + specification of the coordinates on its canvas; + \item \meta{name} is the name of the pic to be drawn. +\end{itemize} +This syntax holds true for simple pics only. Units defined as pics with arguments +have a similar syntax, but with an extra argument: +\begin{chpcode} + \pic [£!\meta{options}!£] (£!\meta{identifier}!£) at (£!\meta{coordinate}!£) {£!\meta{name}!£=£!\meta{type}!£}; +\end{chpcode} +where \meta{type} is the argument to be passed to the \meta{name} unit and which +specifies some features of the unit itself. The usage of these syntaxes will +be clearer in the future, when examples will be shown. + +\subsubsection{Common Nodes} + +In the following, units defined by \chemplants\ are listed, described and shown. +In order to profitably draw units it is important to know where their anchors +and nodes are, what their dimensions are and which is their default orientation. +Units will be drawn and some information will be given in the meanwhile: +\begin{itemize} + \item drawings will be shown in their default orientation; + \item anchors will be represented on units by a little + \textcolor{red}{red cross}; + \item remarkable nodes, the ones defined by the pic code, will be + represented on units by a little \textcolor{blue}{blue cross} with an + abbreviation of the name of the node on its side; + \item dimensions will be marked on drawings, both total dimensions and + distances from the important points to the anchor. +\end{itemize} + +Only instructions to produce the ``raw units'' will be shown, so, in order to +avoid confusion, three units will be presented: a ``pure'' unit; a unit marked +with dimensions; a unit marked with the nodes. + +What concerns the names of the remarkable nodes which will be used in the +following require a clarification. As a general rule, nine standard names are +used to identify \chemplants\ nodes. These names are long for the sake of +clearance, but they will be abbreviated in this discussion just to limit the +space they require. A short list: +\begin{itemize} + \item the node \chpn{anchor} is always placed where the pic is anchored and + it will be never marked by a name, but only by the small red cross + mentioned above; + \item the node \chpn{left} is placed on the left limit of the unit, in its + centre, and will be indicated using the abbreviated name \chpn{l}; + \item the node \chpn{bottom left} is placed on the left limit of the unit, + in its lower useful point, and will be indicated using the abbreviated + name \chpn{bl}; + \item the node \chpn{bottom} is placed on the lower limit of the unit, in + its centre, and will be indicated using the abbreviated name \chpn{b}; + \item the node \chpn{bottom right} is placed on the right limit of the unit, + in its lower useful point, and will be indicated using the abbreviated + name \chpn{br}; + \item the node \chpn{right} is placed on the right limit of the unit, in its + centre, and will be indicated using the abbreviated name \chpn{r}; + \item the node \chpn{top right} is placed on the right limit of the unit, + in its upper useful point, and will be indicated using the abbreviated + name \chpn{tr}; + \item the node \chpn{top} is placed on the upper limit of the unit, in + its centre, and will be indicated using the abbreviated name \chpn{t}; + \item the node \chpn{top left} is placed on the left limit of the unit, + in its upper useful point, and will be indicated using the abbreviated + name \chpn{tl}. +\end{itemize} + +Taking as example a tank, full names of the nodes, shown on the unit on the left, +will be indicated using abbreviated names, as on the unit on the right: +\begin{center} +\begin{tikzpicture} +\pic (T1) at (0,0) {tank}; + \pic at (T1-anchor) {anchor mark}; + \pic at (T1-left) {node mark}; + \pic at (T1-bottom left) {node mark}; + \pic at (T1-bottom) {node mark}; + \pic at (T1-bottom right) {node mark}; + \pic at (T1-right) {node mark}; + \pic at (T1-top right) {node mark}; + \pic at (T1-top) {node mark}; + \pic at (T1-top left) {node mark}; + \node[left] at (T1-left) {\chpn{left}}; + \node[left] at (T1-bottom left) {\chpn{bottom left}}; + \node[below] at (T1-bottom) {\chpn{bottom}}; + \node[right] at (T1-bottom right) {\chpn{bottom right}}; + \node[right] at (T1-right) {\chpn{right}}; + \node[right] at (T1-top right) {\chpn{top right}}; + \node[above] at (T1-top) {\chpn{top}}; + \node[left] at (T1-top left) {\chpn{top left}}; + \pic (T2) at (8,0) {tank}; + \pic at (T2-anchor) {anchor mark}; + \pic at (T2-left) {node mark}; + \pic at (T2-bottom left) {node mark}; + \pic at (T2-bottom) {node mark}; + \pic at (T2-bottom right) {node mark}; + \pic at (T2-right) {node mark}; + \pic at (T2-top right) {node mark}; + \pic at (T2-top) {node mark}; + \pic at (T2-top left) {node mark}; + \node[left] at (T2-left) {\chpn{l}}; + \node[left] at (T2-bottom left) {\chpn{bl}}; + \node[below] at (T2-bottom) {\chpn{b}}; + \node[right] at (T2-bottom right) {\chpn{br}}; + \node[right] at (T2-right) {\chpn{r}}; + \node[right] at (T2-top right) {\chpn{tr}}; + \node[above] at (T2-top) {\chpn{t}}; + \node[left] at (T2-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} + +It should be noticed that not all of the ``boundary nodes'' are defined for +every unit. Usually they are all present in a rectangle-shaped unit, such as a +tank, but in circle-shaped units the ``corner nodes'' are not present. +Furthermore, units represented by strange symbols can have some special nodes to +indicate their remarkable points. Special nodes will be discussed, both with +extended and abbreviated names, describing units which require them. + +It is important to recall that to access the node features of pics it is +mandatory to assign an identifier to the \verb|\pic| command. Assuming that +such identifier is \chpn{T}, then one can access to all of the nodes inside the +pic thanks to it using them as coordinates nodes (as they are). Also interposing +a dash, \verb|-|, is fundamental. For example \chpn{T-bottom right} used as +coordinate identifies the point of the \chpn{bottom right} node of the pic +identified (prefixed) by \chpn{T}. + +\subsubsection{A Command to Show Measures} + +By the way, \chemplants\ defines a command to draw dimensions: \verb|\measure|. +This command has to be used directly within a \verb|tikzpicture| environment +(also without the final semicolon) and requires three mandatory arguments: +start point coordinates, end point coordinates and the text of the measure. +Coordinates can be declared in any way recognised by \TikZ, while the text can +be anything that can be placed into a \TikZ\ node. + +The default appearance of a measure is a grey \verb|thin| line with flat tips. +The measure is yield as text placed in the middle of the line, sloped in its +direction and always below it. Anyway, \verb|\measure| accepts an optional +argument in which any anchor specification that can be passed to a \TikZ\ node +can be used. The most useful is \verb|above|, which moves the text of a measure +above the line. + +Some examples using the \siunitx\ package (but also normal text will work). +The code: +\begin{chpcode} + \measure{(0,0)}{(2,0)}{\SI{2}{\cm}} + \measure{(0,1.2)}{(0,0.2)}{\SI{1}{\cm}} + \measure{(1,0.2)}{(1,1.2)}{\SI{1}{\cm}} + \measure[above]{(2,1.2)}{(2,0.2)}{\SI{1}{\cm}} + \measure[above]{(0,1.4)}{(2,1.4)}{\SI{2}{\cm}} +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \measure{(0,0)}{(2,0)}{\SI{2}{\cm}} + \measure{(0,1.2)}{(0,0.2)}{\SI{1}{\cm}} + \measure{(1,0.2)}{(1,1.2)}{\SI{1}{\cm}} + \measure[above]{(2,1.2)}{(2,0.2)}{\SI{1}{\cm}} + \measure[above]{(0,1.4)}{(2,1.4)}{\SI{2}{\cm}} +\end{tikzpicture} +\end{center} +It is important to notice that the value of the measure is not calculated +automatically, but it must be passed as an argument. This is useful to indicate, +for example, the length of a pipe or the real dimensions of a unit in a process +scheme. + +\subsection{Fluids and Solids Storage} + +\subsubsection{Tank} + +A tank is a generic recipient useful to store process fluids or solids. A generic +symbol is defined for a process tank and it can be used with no distinction on +its shape, which is represented by a rectangle with rounded bases. It is defined +as a simple pic called \chpp{tank}: +\begin{chpcode} + \pic at (0,0) {tank}; +\end{chpcode} +and yields a vertical tank anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-4,0) {tank}; + \pic at (0,0) {tank}; + \measure{(-1,-1.7)}{(1,-1.7)}{\SI{20}{\mm}} + \measure{(-1.2,1.5)}{(-1.2,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.2,0.915)}{(1.2,0)}{\SI{9.15}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (4,0) {tank}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the tank +to the point where the curvature begins. This point is identified by the +\chpn{top right} node and by its analogs. + +The \chpp{tank} pic is generic and it is useful to represent process tanks. +Storage tanks can be represented with the same pic, but there are also some +specific symbols. + +\subsubsection{Cone Roof Tank} + +A cone roof tank is a large tank placed on the ground and useful to store +process fluids or solids. As the name says, it has a cone-shaped roof. It is +defined as a simple pic called \chpp{cone tank}: +\begin{chpcode} + \pic at (0,0) {cone tank}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a cone-shaped +roof: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {cone tank}; + \pic at (0,0) {cone tank}; + \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}} + \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.7,1.1)}{(1.7,0)}{\SI{11}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (5,0) {cone tank}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the bottom right indicates the distance from the middle of +the tank to the point where the outlet stream should be connected. This point is +identified by the \chpn{bottom right} node and by its analogous node on the left. + +\subsubsection{Dome Roof Tank} + +A dome roof tank is the same of a cone roof tank, but, clearly, it has a +dome-shaped roof. It is defined as a simple pic called \chpp{dome tank}: +\begin{chpcode} + \pic at (0,0) {dome tank}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a dome-shaped +roof: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {dome tank}; + \pic at (0,0) {dome tank}; + \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}} + \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.7,0.7)}{(1.7,0)}{\SI{7}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (5,0) {dome tank}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the top right indicates the distance from the middle of the +tank to the point where the curvature begins, while the measure on the bottom +right indicates the distance from the middle of the tank to the point where the +outlet stream should be connected. This last point is identified by the +\chpn{bottom right} node and by its analogous node on the left. + +\subsubsection{Floating Roof Tank} + +A floating roof tank is a large tank placed on the ground and useful to store +process fluids or solids. It has the advantage to change in volume depending on +how much it is filled, which allows to compensate pressure unbalances during +the filling and the draining of the tank, also to avoid the formation of a gas +pocket above the stored substance. It is defined as a simple pic called +\chpp{floating roof tank}: +\begin{chpcode} + \pic at (0,0) {floating roof tank}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a sketch of the +floating roof: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {floating roof tank}; + \pic at (0,0) {floating roof tank}; + \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}} + \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.7,1.2)}{(1.7,0)}{\SI{12}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (5,0) {floating roof tank}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the bottom right indicates the distance from the middle of +the tank to the point where the outlet stream should be connected. This point is +identified by the \chpn{bottom right} node and by its analogous node on the left. + +\subsubsection{Bell GasHolder} + +Tanks introduced so far can be used to represent general systems to store either +solids, liquids and gases. For gases storage, a specific kind of tanks exists, +which is designed to control the gas pressure in a simple way: gasholders. + +The most common gasholder uses a bell-shaped floating roof to expand and contract +its volume depending on the amount of gas to be stored. It is defined as a simple +pic called \chpp{bell gasholder}: +\begin{chpcode} + \pic at (0,0) {bell gasholder}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a sketch of +the bell-shaped floating roof: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {bell gasholder}; + \pic at (0,0) {bell gasholder}; + \measure{(-1.5,-1.7)}{(1.5,-1.7)}{\SI{30}{\mm}} + \measure{(-1.7,1.5)}{(-1.7,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.7,0.7)}{(1.7,0)}{\SI{7}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-1.4)}{\SI{14}{\mm}} + \measure[above]{(-1.45,1.7)}{(1.45,1.7)}{\SI{29}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (5,0) {bell gasholder}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the top indicates the width of the moving roof, th measure +on the top right indicates the distance from the middle of the gasholder to the +point where the curvature begins and the measure on the bottom right indicates +the distance from the middle of the gasholder to the point where a stream should +be connected. This last point is identified by the \chpn{bottom right} node and +by its analogous node on the left. + +It should be quite obvious that \chpn{left} and \chpn{right} nodes, falling on +the roof rails, are not meant to be used for stream connections, but just to +labelling purposes or for control instrumentation connections. + +\subsubsection{Dry GasHolder} + +Another kind of gasholder is the so called dry gasholder, where there is a fixed +structure that contains an ``expandable ballon'' in which the gas is stored. It +is defined as a simple pic called \chpp{dry gasholder}: +\begin{chpcode} + \pic at (0,0) {dry gasholder}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a sketch of the +ballon inside it: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {dry gasholder}; + \pic at (0,0) {dry gasholder}; + \measure{(-1.5,-1.2)}{(1.5,-1.2)}{\SI{30}{\mm}} + \measure{(-1.7,1.0)}{(-1.7,-1.0)}{\SI{20}{\mm}} + \measure[above]{(1.7,0.5)}{(1.7,0)}{\SI{5}{\mm}} + \measure[above]{(2.2,0)}{(2.2,-0.9)}{\SI{9}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (T) at (5,0) {dry gasholder}; + \pic at (T-anchor) {anchor mark}; + \pic at (T-left) {node mark}; + \pic at (T-bottom left) {node mark}; + \pic at (T-bottom) {node mark}; + \pic at (T-bottom right) {node mark}; + \pic at (T-right) {node mark}; + \pic at (T-top right) {node mark}; + \pic at (T-top) {node mark}; + \pic at (T-top left) {node mark}; + \pic at (T-dome top) {node mark}; + \node[left] at (T-left) {\chpn{l}}; + \node[left] at (T-bottom left) {\chpn{bl}}; + \node[below] at (T-bottom) {\chpn{b}}; + \node[right] at (T-bottom right) {\chpn{br}}; + \node[right] at (T-right) {\chpn{r}}; + \node[right] at (T-top right) {\chpn{tr}}; + \node[above] at (T-top) {\chpn{t}}; + \node[left] at (T-top left) {\chpn{tl}}; + \node[above] at (T-dome top) {\chpn{dt}}; +\end{tikzpicture} +\end{center} +where the measure on the top right indicates the distance from the middle of the +gasholder to the top of the internal balloon, while the measure on the bottom +right indicates the distance from the middle of the gasholder to the point where +a stream should be connected. This last point is identified by the +\chpn{bottom right} node and by its analogous node on the left. + +A special node is defined for the \chpp{dry gasholder}: usually the inlet stream +is connected to one bottom side of the balloon, on the \chpn{bottom right} node +or on the \chpn{bottom left} node, while the outlet is connected to the top of +the dome (and not to the top of the containing structure). This special node is +called \chpn{dome top} and it is marked in the above drawing using the +abbreviated name \chpn{dt}. This node can be called in the usual way: for +example, in a \chpn{dry gasholder} identified as \chpn{G} the node is +\chpn{G-dome top}. + +\subsection{Fluid Handling} + +Fluid handling devices are essential to chemical plants because it is always +necessary to move a fluid, from one place to another against pressure drops +generated by pipes or units. + +Fluid handling units used in the chemical industry are basically classified +considering the kind of fluid they can move, either a liquid or a gas. On the +basis of this classification, there is a main distinction between pumps for +liquids and equipments to move gases. The latter are furthermore distinguished +with respect to the pressure rise a unit can achieve: fans, blowers and +compressors. + +\subsubsection{Centrifugal Pump} + +A pump is a mechanical machine useful to move a liquid and to increase its +pressure. The most simple and widely used pump is a simple kinetic machine known +as centrifugal pump. It is defined as a simple pic called +\chpp{centrifugal pump}: +\begin{chpcode} + \pic at (0,0) {centrifugal pump}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, supported by a +triangular base and containing a little circle representing the inlet nozzle: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {centrifugal pump}; + \pic at (0,0) {centrifugal pump}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}} + \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}} + \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (P) at (3,0) {centrifugal pump}; + \pic at (P-anchor) {anchor mark}; + \pic at (P-left) {node mark}; + \pic at (P-bottom) {node mark}; + \pic at (P-right) {node mark}; + \pic at (P-top) {node mark}; + \node[left] at (P-left) {\chpn{l}}; + \node[below] at (P-bottom) {\chpn{b}}; + \node[right] at (P-right) {\chpn{r}}; + \node[above] at (P-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the inlet of the pump +to its base, while the measure on the top indicates the diameter of the circle. + +Nodes are defined only for the remarkable outlet points of the pump, but not for +its inlet: this is placed on the anchor point, so it should not be difficult to +find it (use the \chpn{anchor} node to snap purposes). Anyway, it should be +noticed that the centrifugal pump, together with the fan that will be introduced +later on, is the only unit that requires the inlet to be placed in the centre of +the symbol, while other units do not. Finally, the \chpn{bottom} node is not +really meant to connect streams, but it could be exploited to labelling purposes. + +The centrifugal pump is for sure the most widely used one, but its applications +are quite limiting with respect to the pressure rise and the kind of treatable +liquid. Other pumps exist, such as the ones belonging to the volumetric machines: +these are mainly rotary pumps and reciprocating pumps. + +\subsubsection{Rotary Pump} + +Rotary pumps are themselves a large family of machines, but \UNICHIM\ defines +a generic symbol to represent them all. It is defined as a simple pic called +\chpp{rotary pump}: +\begin{chpcode} + \pic at (0,0) {rotary pump}; +\end{chpcode} +and yields an oblong circle supported by a triangular base and containing the +sketch of two little circle, where the anchor is in the centre of the lowest +one: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {rotary pump}; + \pic at (0,0) {rotary pump}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.9)}{(-0.7,-0.6)}{\SI{13}{\mm}} + \measure[above]{(-0.4,1.1)}{(0.4,1.1)}{\SI{8}{\mm}} + \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}} + \measure[above]{(1.2,0)}{(1.2,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (P) at (3,0) {rotary pump}; + \pic at (P-anchor) {anchor mark}; + \pic at (P-left) {node mark}; + \pic at (P-bottom) {node mark}; + \pic at (P-right) {node mark}; + \pic at (P-top) {node mark}; + \node[left] at (P-left) {\chpn{l}}; + \node[below] at (P-bottom) {\chpn{b}}; + \node[right] at (P-right) {\chpn{r}}; + \node[above] at (P-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where measures on the right indicate the distance from the inlet of the pump +(placed on its boundary, either \chpn{left} or \chpn{right} nodes) to its +anchor, \SI{2.5}{\mm}, and the distance form the anchor of the pump to its +base, \SI{6}{\mm}, while the measure on the top indicates the width of the body. + +\subsubsection{Liquid Ring Pump} + +As told before, the \chpp{rotary pump} is generic, so it can be used to +represent gear pumps, lobe pumps, screw pumps, hollow disc pumps and other +similar machines. A remarkable exception of a rotary pump not representable by +means of the generic symbol is the liquid ring pump, useful to aspire a fluid +rather than to compress it, hence to generate vacuum. It is defined as a simple +pic called \chpp{liquid ring pump}: +\begin{chpcode} + \pic at (0,0) {liquid ring pump}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, supported by a +triangular base and containing a smaller circle representing the liquid ring: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {liquid ring pump}; + \pic at (0,0) {liquid ring pump}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}} + \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}} + \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (P) at (3,0) {liquid ring pump}; + \pic at (P-anchor) {anchor mark}; + \pic at (P-left) {node mark}; + \pic at (P-bottom) {node mark}; + \pic at (P-right) {node mark}; + \pic at (P-top) {node mark}; + \node[left] at (P-left) {\chpn{l}}; + \node[below] at (P-bottom) {\chpn{b}}; + \node[right] at (P-right) {\chpn{r}}; + \node[above] at (P-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the inlet of the pump +(placed on its boundary) to its base, while the measure on the top indicates the +diameter of the circle. + +\subsubsection{Reciprocating Pump} + +The other category of volumetric pumps are the reciprocating ones, which work +through the classical principle of cylinder and piston. A generic reciprocating +pump is defined as a simple pic called \chpp{reciprocating pump}: +\begin{chpcode} + \pic at (0,0) {reciprocating pump}; +\end{chpcode} +and yields a square, in which centre there is the anchor, supported by a +squared base: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {reciprocating pump}; + \pic at (0,0) {reciprocating pump}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}} + \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}} + \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (P) at (3,0) {reciprocating pump}; + \pic at (P-anchor) {anchor mark}; + \pic at (P-left) {node mark}; + \pic at (P-bottom) {node mark}; + \pic at (P-right) {node mark}; + \pic at (P-top) {node mark}; + \node[left] at (P-left) {\chpn{l}}; + \node[below] at (P-bottom) {\chpn{b}}; + \node[right] at (P-right) {\chpn{r}}; + \node[above] at (P-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the inlet of the pump +(placed on its boundary) to its base, while the measure on the top indicates the +length of the side side of the square. + +\subsubsection{Fan} + +Liquid handling equipments are done, so the description can move to gas handling +units. As told before, these are mainly distinguished on the basis of the +pressure rise they can achieve, but also on their working principle. + +If it is simply required to move a gas, without a significant pressure rise, a +fan or, at most, a blower, is enough. These two units are simple kinetic machines +similar to a centrifugal pump and both of them are defined by \UNICHIM\ as a +single symbol, which in \chemplants\ can be found under the name of \chpp{fan}: +\begin{chpcode} + \pic at (0,0) {fan}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a squared +vertex, supported by a triangular base and containing a little circle +representing the inlet nozzle: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {fan}; + \pic at (0,0) {fan}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.4)}{(-0.7,-0.6)}{\SI{10}{\mm}} + \measure[above]{(-0.4,0.6)}{(0.4,0.6)}{\SI{8}{\mm}} + \measure[above]{(0.7,0)}{(0.7,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (F) at (3,0) {fan}; + \pic at (F-anchor) {anchor mark}; + \pic at (F-left) {node mark}; + \pic at (F-bottom) {node mark}; + \pic at (F-right) {node mark}; + \pic at (F-top) {node mark}; + \pic at (F-outlet) {node mark}; + \node[left] at (F-left) {\chpn{l}}; + \node[below] at (F-bottom) {\chpn{b}}; + \node[right] at (F-right) {\chpn{r}}; + \node[above] at (F-top) {\chpn{t}}; + \node[above right] at (F-outlet) {\chpn{o}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the inlet of the fan +(this time again placed in its centre) to its base, while the measure on the top +indicates the diameter of the circle. + +A special node is defined for the \chpp{fan}: the squared vertex indicates the +outlet of the unit, thus it is identified by the \chpn{outlet} node, indicated +as \chpn{o} in the above representation. As for the centrifugal pump, the +\chpn{anchor} node should be used to snap the inlet stream to the fan. + +\subsubsection{Centrifugal Compressor} + +When a gas needs a high pressure rise, there is no other way but using a +compressor. The only kinetic machine useful to compress a gas that has a +symbol defined by \chemplants\ is the centrifugal compressor. It is defined as a +simple pic called \chpp{centrifugal compressor}: +\begin{chpcode} + \pic at (0,0) {centrifugal compressor}; +\end{chpcode} +and yields a cone frustum, in which middle there is the anchor, supported by a +squared base: +\begin{center} +\begin{tikzpicture} + \pic at (-4,0) {centrifugal compressor}; + \pic at (0,0) {centrifugal compressor}; + \measure{(-1.0,-0.8)}{(1.0,-0.8)}{\SI{20}{\mm}} + \measure{(-1.7,0.4)}{(-1.7,-0.6)}{\SI{10}{\mm}} + \measure{(-1.2,0.4)}{(-1.2,-0.4)}{\SI{8}{\mm}} + \measure[above]{(-0.9,0.6)}{(0.9,0.6)}{\SI{18}{\mm}} + \measure[above]{(1.2,0.2)}{(1.2,-0.2)}{\SI{4}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (4,0) {centrifugal compressor}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-right) {node mark}; + \pic at (C-inlet bottom) {node mark}; + \pic at (C-outlet bottom) {node mark}; + \pic at (C-outlet top) {node mark}; + \pic at (C-inlet top) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[right] at (C-right) {\chpn{r}}; + \node[below left] at (C-inlet bottom) {\chpn{ib}}; + \node[below right] at (C-outlet bottom) {\chpn{ob}}; + \node[above] at (C-outlet top) {\chpn{ot}}; + \node[above] at (C-inlet top) {\chpn{it}}; +\end{tikzpicture} +\end{center} + +Measures require some clarifications. The unit has a total width of \SI{20}{\mm} +and a total height of \SI{10}{\mm}. The cone frustum has a length of +\SI{18}{\mm} (the base protrudes horizontally \SI{1}{\mm} on each side, as for +all of the other symbols defined as fluid handling units), its larger base has +a height of \SI{8}{\mm} and the smaller one of \SI{4}{\mm}. + +Also nodes are not that easy to understand. As always, the \chpn{bottom} node is +defined to labelling purposes. The \chpn{left} and \chpn{right} nodes should +not be used to connect streams, but can be exploited to connect control +instrumentation or to represent the shaft of the compressor. Streams should be +connected on the sides of the cone frustum: more precisely the inlet stream has +to enter the unit on the side of the larger base and the outlet one has to leave +the unit on the side of the smaller one, both of them vertically, in the +direction perpendicular to the axis of the cone frustum. To this aim, four +special nodes are defined: +\begin{itemize} + \item a node called \chpn{inlet bottom}, abbreviated in the picture above as + \chpn{ib}; + \item a node called \chpn{outlet bottom}, abbreviated in the picture above as + \chpn{ob}; + \item a node called \chpn{outlet top}, abbreviated in the picture above as + \chpn{ot}; + \item a node called \chpn{inlet top}, abbreviated in the picture above as + \chpn{it}. +\end{itemize} +(At most, it is possible to tolerate the inlet +placed on the left side of the unit, on the \chpn{left} node, but the outlet has +to be compulsorily on the side of the smaller base.) + +\subsubsection{Rotary Compressor} + +As for pumps, also compressors are not kinetic machines only, but also +volumetric, again rotary and reciprocating. Also in this case, a generic symbol +is defined by \UNICHIM\ to indicate all of the rotary compressors. It is defined +as a simple pic called \chpp{rotary compressor}: +\begin{chpcode} + \pic at (0,0) {rotary compressor}; +\end{chpcode} +and yields an oblong circle supported by a triangular base and containing the +sketch of a sort of S, where the anchor is in the centre of the lowest branch: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {rotary compressor}; + \pic at (0,0) {rotary compressor}; + \measure{(-0.5,-0.8)}{(0.5,-0.8)}{\SI{10}{\mm}} + \measure{(-0.7,0.9)}{(-0.7,-0.6)}{\SI{13}{\mm}} + \measure[above]{(-0.4,1.1)}{(0.4,1.1)}{\SI{8}{\mm}} + \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}} + \measure[above]{(1.2,0)}{(1.2,-0.6)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (P) at (3,0) {rotary compressor}; + \pic at (P-anchor) {anchor mark}; + \pic at (P-left) {node mark}; + \pic at (P-bottom) {node mark}; + \pic at (P-right) {node mark}; + \pic at (P-top) {node mark}; + \node[left] at (P-left) {\chpn{l}}; + \node[below] at (P-bottom) {\chpn{b}}; + \node[right] at (P-right) {\chpn{r}}; + \node[above] at (P-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where measures on the right indicate the distance from the inlet of the +compressor (placed on its boundary, either \chpn{left} or \chpn{right} nodes) +to its anchor, \SI{2.5}{\mm}, and the distance from the anchor of the +compressor to its base, \SI{6}{\mm}, while the measure on the top indicates the +width of the body. + +\subsubsection{Reciprocating Compressor} + +Differently from what happens for pumps, reciprocating compressors are +represented by means of two different symbols, one for single stage operations +and one for multistage units. The simple stage unit is defined as a simple pic +called \chpp{reciprocating compressor}: +\begin{chpcode} + \pic at (0,0) {reciprocating compressor}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, merged with the +rectangular body of the unit, all of which is supported by a squared base: +\begin{center} +\begin{tikzpicture} + \pic at (-4,0) {reciprocating compressor}; + \pic at (0,0) {reciprocating compressor}; + \measure{(-0.5,-1.3)}{(1.5,-1.3)}{\SI{20}{\mm}} + \measure{(-0.4,-0.8)}{(1.4,-0.8)}{\SI{18}{\mm}} + \measure{(-1.2,0.4)}{(-1.2,-0.6)}{\SI{10}{\mm}} + \measure{(-0.7,0.4)}{(-0.7,-0.4)}{\SI{8}{\mm}} + \measure[above]{(0,1.1)}{(1.4,1.1)}{\SI{14}{\mm}} + \measure[above]{(0,0.6)}{(0.8,0.6)}{\SI{8}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-0.6)}{\SI{6}{\mm}} + \measure[above]{(2.2,0.346)}{(2.2,-0.346)}{\SI{6.92}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (4,0) {reciprocating compressor}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-top) {node mark}; + \pic at (C-inlet bottom) {node mark}; + \pic at (C-outlet) {node mark}; + \pic at (C-inlet top) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[above] at (C-top) {\chpn{t}}; + \node[above] at (C-inlet bottom) {\chpn{ib}}; + \node[right] at (C-outlet) {\chpn{o}}; + \node[above] at (C-inlet top) {\chpn{it}}; +\end{tikzpicture} +\end{center} +The circle is a sketch of the engine of the compressor, while the rectangle is +the main body of the unit, where the gas gets effectively compressed. + +Measures require some clarification. The unit has a total width of \SI{20}{\mm} +and a total height of \SI{10}{\mm}. The figure obtained joining the circle and +the rectangle has a length of \SI{18}{\mm} (the base protrudes horizontally +\SI{1}{\mm} on each side). The circle has a diameter of \SI{8}{\mm}, while the +rectangle has a height of \SI{6.92}{\mm}. The base of the unit is \SI{6}{\mm} +below its anchor point. + +Since the ``real'' compressing part of the unit is the rectangle, nodes on the +circle should be used to labelling purposes, to connect the control +instrumentation or to sketch the shaft of the engine. The gas inlet stream +should be connected to the \chpn{inlet bottom} or \chpn{inlet top} nodes, showed +in the above drawing using the abbreviated names \chpn{ib} and \chpn{it} +respectively, while the outlet stream has to be connected to the \chpn{outlet} +node, \chpn{o} in the above representation. The two measures not cited yet are +referred to these remarkable points of the unit: inlet nodes are \SI{8}{\mm} to +the right of the anchor, while the outlet node is \SI{14}{\mm} to the right of +the anchor. + +\subsubsection{MultiStage Compressor} + +Besides all of the above mentioned symbols, the most common unit used to indicate +gas handling machine is the one that represents the multistage reciprocating +compressor. Indeed, this is also widely used to represent a generic compression +unit, despite its real meaning. It is defined as a simple pic called +\chpp{multistage compressor}: +\begin{chpcode} + \pic at (0,0) {multistage compressor}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, merged with three +rectangles, all of which is supported by a squared base: +\begin{center} +\begin{tikzpicture} + \pic at (-4,0) {multistage compressor}; +% \pic at (0,0) {multistage compressor}; +% \measure{(-0.5,-1.3)}{(1.5,-1.3)}{\SI{20}{\mm}} +% \measure{(-0.4,-0.8)}{(1.4,-0.8)}{\SI{18}{\mm}} +% \measure{(-1.7,0.4)}{(-1.7,-0.6)}{\SI{10}{\mm}} +% \measure{(-1.2,0.4)}{(-1.2,-0.4)}{\SI{8}{\mm}} +% \measure{(-0.7,0)}{(-0.7,-0.6)}{\SI{6}{\mm}} +% \measure[above]{(0,2.1)}{(1.4,2.1)}{\SI{14}{\mm}} +% \measure[above]{(0,1.6)}{(1.25,1.6)}{\SI{12.5}{\mm}} +% \measure[above]{(0,1.1)}{(0.9,1.1)}{\SI{9}{\mm}} +% \measure[above]{(0,0.6)}{(0.45,0.6)}{\SI{4.5}{\mm}} +% \measure[above]{(2.7,0.346)}{(2.7,-0.346)}{\SI{6.92}{\mm}} +% \measure[above]{(2.1,0.231)}{(2.1,-0.231)}{\SI{4.62}{\mm}} +% \measure[above]{(1.7,0.116)}{(1.7,-0.116)}{\SI{2.32}{\mm}} +% \pic at (0,0) {anchor mark}; +% \pic (C) at (4,0) {multistage compressor}; +% \pic at (C-anchor) {anchor mark}; +% \pic at (C-left) {node mark}; +% \pic at (C-bottom) {node mark}; +% \pic at (C-top) {node mark}; +% \pic at (C-first bottom) {node mark}; +% \pic at (C-second bottom) {node mark}; +% \pic at (C-third bottom) {node mark}; +% \pic at (C-outlet) {node mark}; +% \pic at (C-third top) {node mark}; +% \pic at (C-second top) {node mark}; +% \pic at (C-first top) {node mark}; +% \node[left] at (C-left) {\chpn{l}}; +% \node[below] at (C-bottom) {\chpn{b}}; +% \node[above] at (C-top) {\chpn{t}}; +% \node[above left] at (C-first bottom) {\chpn{fb}}; +% \node[above] at (C-second bottom) {\chpn{sb}}; +% \node[below right] at (C-third bottom) {\chpn{tb}}; +% \node[right] at (C-outlet) {\chpn{o}}; +% \node[above] at (C-third top) {\chpn{tt}}; +% \node[above] at (C-second top) {\chpn{st}}; +% \node[above] at (C-first top) {\chpn{ft}}; +\end{tikzpicture} +\end{center} +Again the circle is a sketch of the engine of the compressor, while the three +rectangles are the main body of the unit and represent the compression stages. +Rigorously, there should be as many rectangles as the compression stages are, but +usually a symbol with three rectangles is used independently of the number of +stages. + +No measures or nodes are shown in the above drawing, that is the pure symbol, +because of its complexity. In order to better understand measures and nodes, +here is a huge \chpp{multistage compressor}: +\begin{center} +\begin{tikzpicture} + \pic[scale=3] (C) at (0,0) {multistage compressor}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-top) {node mark}; + \pic at (C-first bottom) {node mark}; + \pic at (C-second bottom) {node mark}; + \pic at (C-third bottom) {node mark}; + \pic at (C-outlet) {node mark}; + \pic at (C-third top) {node mark}; + \pic at (C-second top) {node mark}; + \pic at (C-first top) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[above] at (C-top) {\chpn{t}}; + \node[above] at (C-first bottom) {\chpn{fb}}; + \node[above] at (C-second bottom) {\chpn{sb}}; + \node[above] at (C-third bottom) {\chpn{tb}}; + \node[right] at (C-outlet) {\chpn{o}}; + \node[above] at (C-third top) {\chpn{tt}}; + \node[above] at (C-second top) {\chpn{st}}; + \node[above] at (C-first top) {\chpn{ft}}; + \measure{(-1.5,-2.9)}{(4.5,-2.9)}{\SI{20}{\mm}} + \measure{(-1.2,-2.4)}{(4.2,-2.4)}{\SI{18}{\mm}} + \measure{(-3.1,1.2)}{(-3.1,-1.8)}{\SI{10}{\mm}} + \measure{(-2.6,1.2)}{(-2.6,-1.2)}{\SI{8}{\mm}} + \measure{(-2.1,0)}{(-2.1,-1.8)}{\SI{6}{\mm}} + \measure[above]{(0,3.3)}{(4.2,3.3)}{\SI{14}{\mm}} + \measure[above]{(0,2.8)}{(3.75,2.8)}{\SI{12.5}{\mm}} + \measure[above]{(0,2.3)}{(2.7,2.3)}{\SI{9}{\mm}} + \measure[above]{(0,1.8)}{(1.35,1.8)}{\SI{4.5}{\mm}} + \measure[above]{(6.1,1.038)}{(6.1,-1.038)}{\SI{6.92}{\mm}} + \measure[above]{(5.6,0.639)}{(5.6,-0.693)}{\SI{4.62}{\mm}} + \measure[above]{(5.1,0.348)}{(5.1,-0.348)}{\SI{2.32}{\mm}} +\end{tikzpicture} +\end{center} +where measure bars are just expanded, but numbers are correct and refer to the +real dimensions of the little unit above. + +The unit has a total width of \SI{20}{\mm} and a total height of \SI{10}{\mm}. +The figure obtained joining the circle and the three rectangles has a length of +\SI{18}{\mm}. The circle has a diameter of \SI{8}{\mm}, while the base of the +unit is \SI{6}{\mm} below its anchor point. Measures on the right refer to the +heights of the three rectangles: starting from the left of the symbol, the first +rectangle has a height of \SI{6.92}{\mm}, the second one has a height of +\SI{4.62}{\mm} and the third one is \SI{2.32}{\mm} high. + +Understanding measures on the top requires to discuss first about nodes. As for +the single stage reciprocating compressor, inlets are on the sides of the +rectangles, which means on the top and on the bottom of each one, while the +outlet is on the right side of the unit, point identified by the \chpn{outlet} +node marked in the drawing as \chpn{o} and placed \SI{14}{\mm} to the right of +the anchor. + +Since rectangles represent compression stages, two nodes are defined for each +one: +\begin{itemize} + \item the first stage is provided with a node called \chpn{first bottom} and + with a node called \chpn{first top}, marked in the drawing as \chpn{fb} + and \chpn{ft} respectively and both placed \SI{4.5}{\mm} to the right + of the anchor; + \item the second stage is provided with a node called \chpn{second bottom} + and with a node called \chpn{second top}, marked in the drawing as + \chpn{sb} and \chpn{st} respectively and both placed \SI{9}{\mm} to the + right of the anchor; + \item the third stage is provided with a node called \chpn{third bottom} and + with a node called \chpn{third top}, marked in the drawing as \chpn{tb} + and \chpn{tt} respectively and both placed \SI{12.5}{\mm} to the right + of the anchor. +\end{itemize} +These nodes should be used as connection points for the inlet and are present to +enable a flexible representation when complex necessities exist, such as the +case of a stream which has to enter the compressor in the second stage, being +mixed and compressed together with the one that enters in the first. Also +complex paths can be produced thanks to these nodes, using them improperly as +outlets to represent cooling operations applied to the fluid and interposed +between compression stages. + +\subsubsection{Ejector} + +The last fluid handling unit defined by \chemplants\ is neither a kinetic nor +a volumetric machine, but it belongs to (and is the most remarkable example of) +static machines category. The ejector works thanks to the relation of the +pressure energy with the kinetic energy of a fluid, usually a gas, and most of +the time is used to suck a secondary fluid into a driving stream or to generate +vacuum thanks to this effect. It is defined as a simple pic called +\chpp{ejector}: +\begin{chpcode} + \pic at (0,0) {ejector}; +\end{chpcode} +and yields a square, in which centre there is the anchor, jointed with a cone +frustum: +\begin{center} +\begin{tikzpicture} + \pic at (-3.5,0) {ejector}; + \pic at (0,0) {ejector}; + \measure{(-0.25,-0.45)}{(1.25,-0.45)}{\SI{15}{\mm}} + \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}} + \measure[above]{(0,0.45)}{(1.25,0.45)}{\SI{12.5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3.5,0) {ejector}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-main inlet) {node mark}; + \pic at (E-suck inlet bottom) {node mark}; + \pic at (E-outlet) {node mark}; + \pic at (E-suck inlet top) {node mark}; + \node[left] at (E-main inlet) {\chpn{mi}}; + \node[below] at (E-suck inlet bottom) {\chpn{sib}}; + \node[right] at (E-outlet) {\chpn{o}}; + \node[above] at (E-suck inlet top) {\chpn{sit}}; +\end{tikzpicture} +\end{center} +where the measure on the top indicates the distance from the outlet of the +ejector to its anchor. + +None of the common nodes are defined for the \chpp{ejector} since its symbols +recall its real shape, where every point has a specific function. The driving +stream enters from the \chpn{main inlet} node, abbreviated as \chpn{mi}, while +the secondary one is aspired through the \chpn{suck inlet bottom} node or the +\chpn{suck inlet top} node, abbreviated as \chpn{sib} and \chpn{sit} +respectively. The two streams, mixed together, leave the unit from the +\chpn{outlet} node, identified as \chpn{o} in the above drawing. + +\subsection{Heat Exchangers} + +Many variants of heat exchangers are defined by \chemplants. Among ``simple +symbols'', two heat exchangers are available to general purposes, while three +more are meant to be used to represent specific operations. There are also some +symbols reserved to represent specific machines. + +\subsubsection{Heat Exchanger} + +The simplest possibile heat exchanger is useful to indicate thermal energy +transfer between fluids which do not undergo phase change. It is defined as a +simple pic called \chpp{heat exchanger}: +\begin{chpcode} + \pic at (0,0) {heat exchanger}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a sketch of the +path of internal pipes crossing the symbol in horizontal: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {heat exchanger}; + \pic at (0,0) {heat exchanger}; + \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}} + \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3,0) {heat exchanger}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-shell bottom) {node mark}; + \pic at (E-shell top) {node mark}; + \pic at (E-pipes left) {node mark}; + \pic at (E-pipes right) {node mark}; + \node[below] at (E-shell bottom) {\chpn{sb}}; + \node[above] at (E-shell top) {\chpn{st}}; + \node[left] at (E-pipes left) {\chpn{pl}}; + \node[right] at (E-pipes right) {\chpn{pr}}; +\end{tikzpicture} +\end{center} + +The \chpp{heat exchanger} has none of the common nodes, but it has some special +ones. The stream crossing the exchanger through its internal pipes can be +connected to the \chpn{pipes left} node, abbreviated in the picture above as +\chpn{pl}, and to the \chpn{pipes right} node, abbreviated in the picture above +as \chpn{pr}. In the same way, the stream crossing the exchanger through its +shell can be connected to the \chpn{shell bottom} node, abbreviated in the +picture above as \chpn{sb}, and to the \chpn{shell top} node, abbreviated in +the picture above as \chpn{st}. + +\subsubsection{Heat Exchanger BiPhase} + +An alternative heat exchanger is useful to indicate thermal energy transfer +between fluids where one of them, usually the main process stream, partially +changes phase (but it can also be used in the place of a simple heat exchanger +without any phase change). It is defined as a simple pic called +\chpp{heat exchanger biphase}: +\begin{chpcode} + \pic at (0,0) {heat exchanger biphase}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a sketch of the +path of internal pipes which enter and leave the unit on the right side: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {heat exchanger biphase}; + \pic at (0,0) {heat exchanger biphase}; + \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}} + \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}} + \measure[above]{(0,0.7)}{(0.433,0.7)}{\SI{4.33}{\mm}} + \measure[above]{(0.7,0.25)}{(0.7,0)}{\SI{2.5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3,0) {heat exchanger biphase}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-shell left) {node mark}; + \pic at (E-shell bottom) {node mark}; + \pic at (E-shell right) {node mark}; + \pic at (E-shell top) {node mark}; + \pic at (E-pipes bottom) {node mark}; + \pic at (E-pipes top) {node mark}; + \node[left] at (E-shell left) {\chpn{sl}}; + \node[below] at (E-shell bottom) {\chpn{sb}}; + \node[right] at (E-shell right) {\chpn{sr}}; + \node[above] at (E-shell top) {\chpn{st}}; + \node[below right] at (E-pipes bottom) {\chpn{pb}}; + \node[above right] at (E-pipes top) {\chpn{pt}}; +\end{tikzpicture} +\end{center} +where measures on the right and on the top indicate the distances from the +middle of the heat exchanger to the point where the internal pipes patch +touches the boundary of the circle. It is also useful to remember that the same +point can be identified in polar coordinates and lies \ang{30} and \SI{5}{\mm} +from to centre of the circle. + +The \chpp{heat exchanger biphase} has none of the common nodes, but it has some +special ones. The stream crossing the exchanger through its internal pipes can +be connected to the \chpn{pipes bottom} node, abbreviated in the picture above +as \chpn{pb}, and to the \chpn{pipes top} node, abbreviated in the picture above +as \chpn{pt}. In the same way the stream crossing the exchanger through its +shell can be connected to four nodes: +\begin{itemize} + \item the \chpn{shell left} node, abbreviated in the picture above as + \chpn{sl}; + \item the \chpn{shell bottom} node, abbreviated in the picture above as + \chpn{sb}; + \item the \chpn{shell right} node, abbreviated in the picture above as + \chpn{sr}; + \item the \chpn{shell top} node, abbreviated in the picture above as + \chpn{st}. +\end{itemize} + +\subsubsection{Boiler and Condenser} + +The other two heat exchangers defined are the boiler and the condenser. Even +though the name should be self explicative, the boiler is useful to vaporise a +liquid, while the condenser is useful to condense a vapour (both totally or +partially). The boiler is defined as a simple pic called \chpp{boiler}: +\begin{chpcode} + \pic at (0,0) {boiler}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a sketch of the +path of internal pipes that crosses the circle falling down from the left to +the right: +\begin{center} +\begin{tikzpicture} + \pic at (-3.4,0) {boiler}; + \pic at (0,0) {boiler}; + \measure{(-0.7,-0.7)}{(0.7,-0.7)}{\SI{14}{\mm}} + \measure{(-0.9,0.5)}{(-0.9,-0.5)}{\SI{10}{\mm}} + \measure[above]{(-0.7,0.7)}{(-0.5,0.7)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (B) at (3.4,0) {boiler}; + \pic at (B-anchor) {anchor mark}; + \pic at (B-left) {node mark}; + \pic at (B-bottom) {node mark}; + \pic at (B-right) {node mark}; + \pic at (B-top) {node mark}; + \pic at (B-pipes inlet) {node mark}; + \pic at (B-pipes outlet) {node mark}; + \node[left] at (B-left) {\chpn{l}}; + \node[below] at (B-bottom) {\chpn{b}}; + \node[right] at (B-right) {\chpn{r}}; + \node[above] at (B-top) {\chpn{t}}; + \node[left] at (B-pipes inlet) {\chpn{pi}}; + \node[right] at (B-pipes outlet) {\chpn{po}}; +\end{tikzpicture} +\end{center} +while the condenser is defined as a simple pic called \chpp{condenser}: +\begin{chpcode} + \pic at (0,0) {condenser}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a sketch of the +path of internal pipes that crosses the circle rising up from the left to the +right: +\begin{center} +\begin{tikzpicture} + \pic at (-3.4,0) {condenser}; + \pic at (0,0) {condenser}; + \measure{(-0.7,-0.7)}{(0.7,-0.7)}{\SI{14}{\mm}} + \measure{(-0.9,0.5)}{(-0.9,-0.5)}{\SI{10}{\mm}} + \measure[above]{(0.5,0.7)}{(0.7,0.7)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3.4,0) {condenser}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-right) {node mark}; + \pic at (C-top) {node mark}; + \pic at (C-pipes inlet) {node mark}; + \pic at (C-pipes outlet) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[right] at (C-right) {\chpn{r}}; + \node[above] at (C-top) {\chpn{t}}; + \node[left] at (C-pipes inlet) {\chpn{pi}}; + \node[right] at (C-pipes outlet) {\chpn{po}}; +\end{tikzpicture} +\end{center} + +Both the \chpp{boiler} and the \chpp{condenser} have some special nodes. Among +the common ones, only \chpn{left}, \chpn{bottom}, \chpn{right} and \chpn{top} are +defined (and here it is not explicitly specified that these nodes belong to the +shell because of the more generality of the two pics). In addition there are two +nodes more: a node called \chpn{pipes inlet}, abbreviated in the picture above as +\chpn{pi}, and a node called \chpn{pipes outlet}, abbreviated in the picture +above as \chpn{po}. + +Boiler and condenser deserve a couple of words more. When looking at schemes +coming from different sources, especially from different countries, +understanding which one is the boiler and which one is the condenser is not +obvious at all. In the \UNICHIM\ regulation the arrows crossing the exchangers +represent somehow the energy level variations of the utility fluids: for +example, in a condenser the energy of the auxiliary fluid rises due to the +enthalpy of condensation released by the vapour. In some books (especially if +they come from the \ac{USA}) it is not that rare to see the boiler symbol used in +the place of the condenser one: in this case it should be interpreted as ``the +vapour is knocked down as a liquid''. This can lead to confusion and +misunderstandings, hence it is advisable to define preventively and clearly what +are the meanings of the symbols used. + +\subsubsection{Air Heat Exchanger} + +Another kind of special heat exchanger defined by \chemplants\ is a simple fan +that blows on pipes, technically known as air heat exchanger. It is defined as +a simple pic called \chpp{air heat exchanger}: +\begin{chpcode} + \pic at (0,0) {air heat exchanger}; +\end{chpcode} +and yields a square, in which centre there is the anchor, with a sketch of the +fan: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {air heat exchanger}; + \pic at (0,0) {air heat exchanger}; + \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}} + \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3,0) {air heat exchanger}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-left) {node mark}; + \pic at (E-bottom) {node mark}; + \pic at (E-right) {node mark}; + \pic at (E-top) {node mark}; + \node[left] at (E-left) {\chpn{l}}; + \node[below] at (E-bottom) {\chpn{b}}; + \node[right] at (E-right) {\chpn{r}}; + \node[above] at (E-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +The just introduced \chpp{air heat exchanger} is the last example of ``simple +symbol'' defined as heat transfer equipments. This concept means that the +units can be used to generic representation purposes, especially the +\chpp{heat exchanger} and the \chpp{heat exchanger biphase}. + +It is not seldom to find also more complex and realistic representation of +equipments, in fact also \UNICHIM\ indicates some variants of the simple symbols +to be used to give a better idea of the unit or to identify a specific equipment +in a more general family. This should not be a surprise after the many symbols to +represent fluids handling machines discussed above. + +\subsubsection{Tube Bundle Heat Exchanger} + +The most widely used heat transfer equipment in the chemical industry is for +sure the tube bundle heat exchanger, made up of a bundle of pipes enclosed into +a shell. It is defined as a simple pic called \chpp{tube bundle heat exchanger}: +\begin{chpcode} + \pic at (0,0) {tube bundle heat exchanger}; +\end{chpcode} +and yields a horizontal rectangle, in which centre there is the anchor, with a +rounded end and a sketch of the internal pipes: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {tube bundle heat exchanger}; +% \pic at (0,0) {tube bundle heat exchanger}; +% \measure{(-1.0,-0.5)}{(1.0,-0.5)}{\SI{20}{\mm}} +% \measure{(-1.2,0.35)}{(-1.2,-0.35)}{\SI{7}{\mm}} +% \measure[above]{(-0.8,0.5)}{(0,0.5)}{\SI{8}{\mm}} +% \measure[above]{(0,0.5)}{(0.5,0.5)}{\SI{5}{\mm}} +% \measure[above]{(1.2,0.3)}{(1.2,-0.3)}{\SI{6}{\mm}} +% \pic at (0,0) {anchor mark}; +% \pic (E) at (3.6,0) {tube bundle heat exchanger}; +% \pic at (E-anchor) {anchor mark}; +% \pic at (E-right) {node mark}; +% \pic at (E-head left) {node mark}; +% \pic at (E-head bottom) {node mark}; +% \pic at (E-head top) {node mark}; +% \pic at (E-shell bottom left) {node mark}; +% \pic at (E-shell bottom) {node mark}; +% \pic at (E-shell bottom right) {node mark}; +% \pic at (E-shell top right) {node mark}; +% \pic at (E-shell top) {node mark}; +% \pic at (E-shell top left) {node mark}; +% \node[right] at (E-right) {\chpn{r}}; +% \node[left] at (E-head left) {\chpn{hl}}; +% \node[below left] at (E-head bottom) {\chpn{hb}}; +% \node[above left] at (E-head top) {\chpn{ht}}; +% \node[below] at (E-shell bottom left) {\chpn{sbl}}; +% \node[below] at (E-shell bottom) {\chpn{sb}}; +% \node[below] at (E-shell bottom right) {\chpn{sbr}}; +% \node[above] at (E-shell top right) {\chpn{str}}; +% \node[above] at (E-shell top) {\chpn{st}}; +% \node[above] at (E-shell top left) {\chpn{stl}}; +\end{tikzpicture} +\end{center} + +Only the pure symbol has been shown because, just like for the already +discussed \chpp{multistage compressor}, there are a lot of measures and +custom nodes to show: +\begin{center} +\begin{tikzpicture} + \pic[scale=2] (E) at (0,0) {tube bundle heat exchanger}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-left) {node mark}; + \pic at (E-right) {node mark}; + \pic at (E-head bottom) {node mark}; + \pic at (E-head top) {node mark}; + \pic at (E-shell bottom left) {node mark}; + \pic at (E-shell bottom) {node mark}; + \pic at (E-shell bottom right) {node mark}; + \pic at (E-shell top right) {node mark}; + \pic at (E-shell top) {node mark}; + \pic at (E-shell top left) {node mark}; + \node[left] at (E-left) {\chpn{l}}; + \node[right] at (E-right) {\chpn{r}}; + \node[below] at (E-head bottom) {\chpn{hb}}; + \node[above] at (E-head top) {\chpn{ht}}; + \node[below] at (E-shell bottom left) {\chpn{sbl}}; + \node[below] at (E-shell bottom) {\chpn{sb}}; + \node[below] at (E-shell bottom right) {\chpn{sbr}}; + \node[above] at (E-shell top right) {\chpn{str}}; + \node[above] at (E-shell top) {\chpn{st}}; + \node[above] at (E-shell top left) {\chpn{stl}}; + \measure{(-2.0,-1.3)}{(2.0,-1.3)}{\SI{20}{\mm}} + \measure{(-2.7,0.7)}{(-2.7,-0.7)}{\SI{7}{\mm}} + \measure[above]{(-1.6,1.3)}{(0,1.3)}{\SI{8}{\mm}} + \measure[above]{(0,1.3)}{(1.0,1.3)}{\SI{5}{\mm}} + \measure[above]{(2.7,0.6)}{(2.7,-0.6)}{\SI{6}{\mm}} +\end{tikzpicture} +\end{center} +Again, the symbol is bigger, but measures are referred to the one with the +right dimensions. Measures should be clear. The only remark regards measures on +the sides of the unit: the left one indicates the total height, while the right +one ignores the little protrusions of the vertical lines. + +Only the \chpn{left} and \chpn{right} nodes are defined among the common ones. +The others are aimed to identify some remarkable points of the two main sections +of the \chpp{tube bundle heat exchanger}: the head of the tube bundle and the +shell that encloses it. Two nodes are defined for the head: the +\chpn{head bottom} node, shown above as \chpn{hb}, and the \chpn{head top} node, +shown above as \chpn{ht}. The fluid that passes through the internal pipes have +to be connected using these nodes. Six more nodes are defined for the shell: +\begin{itemize} + \item the \chpn{shell bottom left} node is abbreviated in the drawing as + \chpn{sbl}; + \item the \chpn{shell bottom} node is abbreviated in the drawing as + \chpn{sb}; + \item the \chpn{shell bottom right} node is abbreviated in the drawing as + \chpn{sbr}; + \item the \chpn{shell top right} node is abbreviated in the drawing as + \chpn{str}; + \item the \chpn{shell top} node is abbreviated in the drawing as + \chpn{st}; + \item the \chpn{shell top left} node is abbreviated in the drawing as + \chpn{stl}. +\end{itemize} +So many nodes are defined for the shell to allow the representation to be as +flexible as possibile, in fact flow configuration can have a great impact on +the heat exchanger performances and it is often useful to represent it also +graphically. + +\subsubsection{Plate Heat Exchanger} + +The tube bundle heat exchanger is the most widely used, but it is not the only +one. Another equipment useful to transfer thermal energy is the plate heat +exchanger. It is defined as a simple pic called \chpp{plate heat exchanger}: +\begin{chpcode} + \pic at (0,0) {plate heat exchanger}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a sketch of +the plates pushed together: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {plate heat exchanger}; + \pic at (0,0) {plate heat exchanger}; + \measure{(-0.5,-0.95)}{(0.5,-0.95)}{\SI{10}{\mm}} + \measure{(-1.2,0.75)}{(-1.2,-0.75)}{\SI{15}{\mm}} + \measure{(-0.7,0.7)}{(-0.7,-0.7)}{\SI{14}{\mm}} + \measure[above]{(0.7,0.6)}{(0.7,0)}{\SI{6}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3,0) {plate heat exchanger}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-left) {node mark}; + \pic at (E-bottom) {node mark}; + \pic at (E-right) {node mark}; + \pic at (E-inner left) {node mark}; + \pic at (E-inner right) {node mark}; + \pic at (E-outer left) {node mark}; + \pic at (E-outer right) {node mark}; + \pic at (E-top) {node mark}; + \node[left] at (E-left) {\chpn{l}}; + \node[below] at (E-bottom) {\chpn{b}}; + \node[right] at (E-right) {\chpn{r}}; + \node[above] at (E-top) {\chpn{t}}; + \node[left] at (E-inner left) {\chpn{il}}; + \node[right] at (E-inner right) {\chpn{ir}}; + \node[left] at (E-outer left) {\chpn{ol}}; + \node[right] at (E-outer right) {\chpn{or}}; +\end{tikzpicture} +\end{center} +where the measure on the inner left indicates the height of the rectangle without +the small protruding vertical lines, while the measure on the right indicates the +distance from the centre of the rectangle to the end of the oblique line. + +Some special nodes are defined for the \chpp{plates heat exchanger}. The +construction of the machine does not imply the existence of two well defined +chambers, but the two fluids travel into alternate plates. Anyway, an oblique +line is sketched on the unit to identify one of the paths, which ends fall on +\chpn{inner left} and \chpn{inner right} nodes, abbreviated above as \chpn{il} +and \chpn{ir} respectively. The other fluid can be connected to the +\chpn{outer left} node, abbreviated above as \chpn{ol}, and to the +\chpn{outer right} node, abbreviated above as \chpn{or}. The remaining nodes +should not be used for streams connections. + +\subsubsection{Spiral Heat Exchanger} + +Another common heat exchanger, somehow the ``wrapped version'' of the plate +heat exchanger, is the spiral heat exchanger. It is defined as a simple pic +called \chpp{spiral heat exchanger}: +\begin{chpcode} + \pic at (0,0) {spiral heat exchanger}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a sketch of +the spiral path: +\begin{center} +\begin{tikzpicture} + \pic at (-3.4,0) {spiral heat exchanger}; + \pic at (0,0) {spiral heat exchanger}; + \measure{(-0.7,-0.9)}{(0.7,-0.9)}{\SI{14}{\mm}} + \measure{(-0.9,0.7)}{(-0.9,-0.7)}{\SI{14}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3.4,0) {spiral heat exchanger}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-inner center) {node mark}; + \pic at (E-inner edge) {node mark}; + \pic at (E-outer center) {node mark}; + \pic at (E-outer edge) {node mark}; + \node[left] at (E-inner center) {\chpn{ic}}; + \node[right] at (E-inner edge) {\chpn{ie}}; + \node[above] at (E-outer center) {\chpn{oc}}; + \node[below] at (E-outer edge) {\chpn{oe}}; +\end{tikzpicture} +\end{center} + +The \chpp{spiral heat exchanger} has none of the common nodes, but it has some +special ones. Also in this case it is not possibile to individuate an internal +and an external chamber, but this time the paths of the fluids are continuous and +one is effectively internal to the other. Usually, one of the end of the +path is placed on the centre of the cross section of the unit, while the other +one is on its boundary: this justifies the names of the nodes. The +\chpn{inner center} node is abbreviated above as \chpn{ic}, while the +\chpn{inner edge} node is abbreviated above as \chpn{ie}; these two nodes should +be used to connect the inner fluid. In the same way, but for the outer fluid, +the \chpn{outer center} node is abbreviated above as \chpn{oc}, while the +\chpn{outer edge} node is abbreviated above as \chpn{oe}. + +\subsubsection{Pipe Furnace} + +The last heat transfer equipment defined by \chemplants\ (at least in this +section of the manual) is not properly a heat exchanger, but it is a furnace. +It is defined as a simple pic called \chpp{pipe furnace}: +\begin{chpcode} + \pic at (0,0) {pipe furnace}; +\end{chpcode} +and yields a rectangle, in which centre there is the anchor, with a sketch of +the path of the internal pipes crossing the symbol in horizontal and a +representation of the furnace chimneystack: +\begin{center} +\begin{tikzpicture} + \pic at (-4.0,0) {pipe furnace}; + \pic at (0,0) {pipe furnace}; + \measure{(-1.0,-0.7)}{(1.0,-0.7)}{\SI{20}{\mm}} + \measure{(-1.2,1.5)}{(-1.2,-0.5)}{\SI{20}{\mm}} + \measure[above]{(-0.2,1.7)}{(0.2,1.7)}{\SI{4}{\mm}} + \measure[above]{(1.2,1.5)}{(1.2,0)}{\SI{15}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (4.0,0) {pipe furnace}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-bottom) {node mark}; + \pic at (E-top) {node mark}; + \pic at (E-pipes left) {node mark}; + \pic at (E-pipes right) {node mark}; + \node[below] at (E-bottom) {\chpn{b}}; + \node[above] at (E-top) {\chpn{t}}; + \node[left] at (E-pipes left) {\chpn{pl}}; + \node[right] at (E-pipes right) {\chpn{pr}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the anchor point to +the top of the chimneystack. + +The \chpp{pipe furnace} has some special nodes. Among the common ones, only +\chpn{bottom} and \chpn{top} are defined and they may be useful to represent +fuel inlet and stack gases outlet. In addition, there are two nodes more: a node +called \chpn{pipes left}, abbreviated in the picture above as \chpn{pl}, and a +node called \chpn{pipes right}, abbreviated in the picture above as \chpn{pr}. + +\subsection{Separators} + +Separation unit operations are some of the most important operations in chemical +engineering. Besides the separation of homogenous mixtures, that is usually done +in ``simple'' equipments which will be introduced in the following, the +separation of heterogeneous mixtures is practically much more simple and some +specific equipments based on mechanical principles exist. Also more complex +separation units will be introduced after the mechanical ones, mainly the ones +based on thermal energy supply or removal and aimed to separate special kinds of +homogenous mixtures. (Notice that the terms gas and vapour will be used +indiscriminately, although not properly correct.) + +\subsubsection{Steam Trap} + +When the condensation of steam or of some other vapours is involved, it is always +necessary to withdraw a liquid from somewhere. To avoid the steam to escape from +the liquid outlet, a stream trap can be profitably used. It is defined as a +simple pic called \chpp{steam trap}: +\begin{chpcode} + \pic at (0,0) {steam trap}; +\end{chpcode} +and yields a little half field circle anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-2.3,0) {steam trap}; + \pic at (0,0) {steam trap}; + \measure{(-0.15,-0.35)}{(0.15,-0.35)}{\SI{3}{\mm}} + \measure{(-0.35,0.15)}{(-0.35,-0.15)}{\SI{3}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (2.3,0) {steam trap}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-left) {node mark}; + \pic at (S-bottom) {node mark}; + \pic at (S-right) {node mark}; + \pic at (S-top) {node mark}; + \node[left] at (S-left) {\chpn{l}}; + \node[below] at (S-bottom) {\chpn{b}}; + \node[right] at (S-right) {\chpn{r}}; + \node[above] at (S-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +In the default orientation, which is the one commonly used in process diagrams +and should not be changed, the inlet of the steam trap have to touch the empty +half of the circle, while the outlet have to come out from the filled half. + +\subsubsection{Gas-Liquid Separator} + +When more sophisticated separations of gases and liquids mixtures are needed +another unit is useful: the gas-liquid separator. It is defined as a simple pic +called \chpp{gas-liquid separator}: +\begin{chpcode} + \pic at (0,0) {gas-liquid separator}; +\end{chpcode} +and yields a tank, in which centre there is the anchor, with a sketch of the +anti-entrainment system on its top: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {gas-liquid separator}; + \pic at (0,0) {gas-liquid separator}; + \measure{(-0.8,-1.7)}{(0.8,-1.7)}{\SI{16}{\mm}} + \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}} + \measure[above]{(1.0,1.032)}{(1.0,0)}{\SI{10.32}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (3.6,0) {gas-liquid separator}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-bottom left) {node mark}; + \pic at (S-bottom right) {node mark}; + \pic at (S-top right) {node mark}; + \pic at (S-top left) {node mark}; + \pic at (S-inlet left) {node mark}; + \pic at (S-inlet right) {node mark}; + \pic at (S-gas outlet) {node mark}; + \pic at (S-liquid outlet) {node mark}; + \node[left] at (S-bottom left) {\chpn{bl}}; + \node[right] at (S-bottom right) {\chpn{br}}; + \node[right] at (S-top right) {\chpn{tr}}; + \node[left] at (S-top left) {\chpn{tl}}; + \node[left] at (S-inlet left) {\chpn{il}}; + \node[right] at (S-inlet right) {\chpn{ir}}; + \node[above] at (S-gas outlet) {\chpn{go}}; + \node[below] at (S-liquid outlet) {\chpn{lo}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the tank +to the point where the curvature begins. + +Besides the common nodes, special nodes are defined for stream connections. In +the above drawing, \chpn{il} and \chpn{ir} indicate respectively the +\chpn{inlet left} node and the \chpn{inlet right} node, which should be used +to connect the inlet stream. On the top of the unit there is the +\chpn{gas outlet} node, abbreviated as \chpn{go} in the figure, while on its +bottom there is the \chpn{liquid outlet} node, abbreviated as \chpn{lo} in the +figure. Names should be self-explicative. + +\subsubsection{Cyclone} + +A cyclone is a unit useful to separate solid powders entrained by a gas stream. +It is defined as a simple pic called \chpp{cyclone}: +\begin{chpcode} + \pic at (0,0) {cyclone}; +\end{chpcode} +and yields a little rectangle, on which base there is the anchor, attached to a +triangular funnel: +\begin{center} +\begin{tikzpicture} + \pic at (-2.6,0) {cyclone}; + \pic at (0,0) {cyclone}; + \measure{(-0.3,-1.2)}{(0.3,-1.2)}{\SI{6}{\mm}} + \measure{(-0.5,0.25)}{(-0.5,-1.0)}{\SI{12.5}{\mm}} + \measure[above]{(0.5,0.25)}{(0.5,0)}{\SI{2.5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (2.6,0) {cyclone}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-inlet left) {node mark}; + \pic at (S-inlet right) {node mark}; + \pic at (S-gas outlet) {node mark}; + \pic at (S-solid outlet) {node mark}; + \node[left] at (S-inlet left) {\chpn{il}}; + \node[right] at (S-inlet right) {\chpn{ir}}; + \node[above] at (S-gas outlet) {\chpn{go}}; + \node[below] at (S-solid outlet) {\chpn{so}}; +\end{tikzpicture} +\end{center} + +None of the common nodes are defined for the \chpn{cyclone}, but there are +special nodes to be used to connect specific streams. In the above drawing, +\chpn{il} and \chpn{ir} indicate respectively the \chpn{inlet left} node and the +\chpn{inlet right} node, which should be used to connect the inlet stream. On +the top of the unit there is the \chpn{gas outlet} node, abbreviated as +\chpn{go} in the figure, while on its bottom there is the \chpn{solid outlet} +node, abbreviated as \chpn{so} in the figure. Names should be self-explicative. + +\subsubsection{Stratifier} + +A common operation to be carried out in chemical processes is the separation of +two immiscible liquids. If they have different densities, time and gravity will +do the job, so a stratifier can be used. It is defined as a simple pic called +\chpp{stratifier}: +\begin{chpcode} + \pic at (0,0) {stratifier}; +\end{chpcode} +and yields a horizontal tank, in which centre there is the anchor, with a sketch +of the internal baffles: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {stratifier}; + \pic at (0,0) {stratifier}; + \measure{(-1.5,-1.0)}{(1.5,-1.0)}{\SI{30}{\mm}} + \measure{(-1.7,0.8)}{(-1.7,-0.8)}{\SI{16}{\mm}} + \measure[above]{(0,1.0)}{(1.032,1.0)}{\SI{10.32}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (5,0) {stratifier}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-left) {node mark}; + \pic at (S-bottom) {node mark}; + \pic at (S-right) {node mark}; + \pic at (S-top right) {node mark}; + \pic at (S-top left) {node mark}; + \pic at (S-inlet) {node mark}; + \pic at (S-light outlet) {node mark}; + \pic at (S-heavy outlet) {node mark}; + \node[left] at (S-left) {\chpn{l}}; + \node[below] at (S-bottom) {\chpn{b}}; + \node[right] at (S-right) {\chpn{r}}; + \node[above] at (S-top right) {\chpn{tr}}; + \node[above] at (S-top left) {\chpn{tl}}; + \node[above] at (S-inlet) {\chpn{i}}; + \node[below] at (S-light outlet) {\chpn{lo}}; + \node[below] at (S-heavy outlet) {\chpn{ho}}; +\end{tikzpicture} +\end{center} +where the measure on the top indicates the distance from the middle of the tank +to the point where the curvature begins. + +Besides the common nodes, special nodes are defined for stream connections. The +inlet stream should enter from the \chpn{inlet} node, marked as \chpn{i} in the +figure, and, after the stratification, the light liquid comes out from the +\chpn{light outlet} node, marked as \chpn{lo} in the figure, while the heavy +liquid comes out from the \chpn{heavy outlet} node, marked as \chpn{ho} in the +figure. + +\subsubsection{Settler} + +Previously, the cyclone have been introduced. A unit with the same purposes, but +useful when a solid suspended into a liquid has to be separated, is the settler. +It is defined as a simple pic called \chpp{settler}: +\begin{chpcode} + \pic at (0,0) {settler}; +\end{chpcode} +and yields a horizontal rectangle, in which centre there is the anchor, with a +triangular funnel end: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {settler}; + \pic at (0,0) {settler}; + \measure{(-1.5,-1.0)}{(1.5,-1.0)}{\SI{30}{\mm}} + \measure{(-1.7,0.8)}{(-1.7,-0.8)}{\SI{16}{\mm}} + \measure[above]{(1.7,0)}{(1.7,-0.2)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (5,0) {settler}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-inlet left) {node mark}; + \pic at (S-inlet right) {node mark}; + \pic at (S-inlet top) {node mark}; + \pic at (S-liquid outlet left) {node mark}; + \pic at (S-liquid outlet right) {node mark}; + \pic at (S-solid outlet) {node mark}; + \node[left] at (S-inlet left) {\chpn{il}}; + \node[right] at (S-inlet right) {\chpn{ir}}; + \node[above] at (S-inlet top) {\chpn{it}}; + \node[left] at (S-liquid outlet left) {\chpn{lol}}; + \node[right] at (S-liquid outlet right) {\chpn{lor}}; + \node[below] at (S-solid outlet) {\chpn{so}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the unit +to the point where the funnel begins. + +None of the common nodes are defined for the \chpp{settler}, but there are +special nodes to be used to connect specific streams. In the above drawing, +\chpn{il}, \chpn{ir} and \chpn{it} indicate respectively the +\chpn{inlet left} node, the \chpn{inlet right} node and the \chpn{inlet top} +node, which should be used to connect the inlet stream. On the top left of +the unit there is the \chpn{liquid outlet left} node, abbreviated as \chpn{lol} +in the figure, while on the top right of the unit there is the +\chpn{liquid outlet right} node, abbreviated as \chpn{lor} in the figure. +Finally, on the bottom of the unit there is the \chpn{solid outlet} node, +abbreviated as \chpn{so} in the figure. Three inlets are defined to give +flexibility to the representation, in fact the same symbol can be used to +indicate circular settling basins as well as rectangular settling basins. + +\subsubsection{Scrubber} + +Another case in which the separation of a ``gas-liquid'' mixture is needed is +the one where a condensable vapour must be knocked out from a gas stream by +condensation, or when liquid droplets are entrained by a gas stream. There are a +lot of possibilities to achieve this operation, but in some particular cases a +simple wash of the gas using water (or some appropriate solvent) will be +enough, thus a scrubber can be used. It is defined as a simple pic called +\chpp{scrubber}: +\begin{chpcode} + \pic at (0,0) {scrubber}; +\end{chpcode} +and yields a little tank, in which centre there is the anchor, with a triangular +funnel end: +\begin{center} +\begin{tikzpicture} + \pic at (-2.6,0) {scrubber}; + \pic at (0,0) {scrubber}; + \measure{(-0.3,-0.95)}{(0.3,-0.95)}{\SI{6}{\mm}} + \measure{(-0.5,0.75)}{(-0.5,-0.75)}{\SI{15}{\mm}} + \measure[above]{(0.5,0.55)}{(0.5,0)}{\SI{5.5}{\mm}} + \measure[above]{(1.0,0)}{(1.0,-0.25)}{\SI{2.5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (2.6,0) {scrubber}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-gas inlet left) {node mark}; + \pic at (S-gas inlet right) {node mark}; + \pic at (S-liquid inlet left) {node mark}; + \pic at (S-liquid inlet right) {node mark}; + \pic at (S-gas outlet) {node mark}; + \pic at (S-liquid outlet) {node mark}; + \node[left] at (S-gas inlet left) {\chpn{gil}}; + \node[right] at (S-gas inlet right) {\chpn{gir}}; + \node[left] at (S-liquid inlet left) {\chpn{lil}}; + \node[right] at (S-liquid inlet right) {\chpn{lir}}; + \node[above] at (S-gas outlet) {\chpn{go}}; + \node[below] at (S-liquid outlet) {\chpn{lo}}; +\end{tikzpicture} +\end{center} +where the measure on the top right indicates the distance from the middle of the +tank to the point where the curvature begins, while the measure on the bottom +right indicates the distance from the middle of the tank to the point where the +funnel begins. + +None of the common nodes are defined for the \chpp{scrubber}, but there are +special nodes to be used to connect specific streams. In the above drawing, +\chpn{gil} and \chpn{gir} indicate respectively the \chpn{gas inlet left} node +and the \chpn{gas inlet right} node, which should be used to connect the inlet +gas stream. In the same way \chpn{lil} and \chpn{lir} indicate respectively the +\chpn{liquid inlet left} node and the \chpn{liquid inlet right} node, which +should be used to connect the inlet liquid stream. On the top of the unit there +is the \chpn{gas outlet} node, abbreviated as \chpn{go} in the figure, while on +its bottom there is the \chpn{liquid outlet} node, abbreviated as \chpn{lo} in +the figure. Names should be self-explicative. + +As a final remark, it should be noticed that the \chpp{scrubber} can be used +also to represent a barometric condenser: it is sufficient to place it high +enough above the ground reference and to draw a long vertical stream coming +out from the \chpn{liquid outlet} to indicate the drain pipe. + +\subsubsection{Kettle Boiler} + +The scrubber is the first example of separation unit based on thermal energy +exchange. In that case, the transfer is achieved by direct contact of the inlet +gas stream using a liquid, but it is more common to use non-contact systems in +which a pure energy transfer is achieved. One of the simplest, this time +useful to concentrate a solution of a non-volatile solute (or to simply +partially boil a liquid), is the kettle boiler. It is defined as a simple pic +called \chpp{kettle boiler}: +\begin{chpcode} + \pic at (0,0) {kettle boiler}; +\end{chpcode} +and yields a strage symbol which recalls a tube bundle heath exchanger with an +enlarged room for the vapour: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {kettle boiler}; +% \pic at (0,0) {kettle boiler}; +% \measure{(-1.0,-0.5)}{(1.0,-0.5)}{\SI{20}{\mm}} +% \measure{(-1.2,0.7)}{(-1.2,-0.3)}{\SI{10}{\mm}} +% \pic at (0,0) {anchor mark}; +% \pic (E) at (3.6,0) {kettle boiler}; +% \pic at (E-anchor) {anchor mark}; +% \pic at (E-right) {node mark}; +% \pic at (E-inlet) {node mark}; +% \pic at (E-gas outlet) {node mark}; +% \pic at (E-liquid outlet) {node mark}; +% \pic at (E-head left) {node mark}; +% \pic at (E-head bottom) {node mark}; +% \pic at (E-head top) {node mark}; +% \node[right] at (E-right) {\chpn{r}}; +% \node[below] at (E-inlet) {\chpn{i}}; +% \node[above] at (E-gas outlet) {\chpn{go}}; +% \node[below] at (E-liquid outlet) {\chpn{lo}}; +% \node[left] at (E-head left) {\chpn{hl}}; +% \node[below] at (E-head bottom) {\chpn{hb}}; +% \node[above] at (E-head top) {\chpn{ht}}; +\end{tikzpicture} +\end{center} + +Only the pure symbol has been shown because, just like for the already +discussed \chpp{tube bundle heat exchanger}, there are a lot of measures and +custom nodes to show: +\begin{center} +\begin{tikzpicture} + \pic[scale=2] (E) at (0,0) {kettle boiler}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-left) {node mark}; + \pic at (E-right) {node mark}; + \pic at (E-inlet) {node mark}; + \pic at (E-gas outlet) {node mark}; + \pic at (E-liquid outlet) {node mark}; + \pic at (E-head bottom) {node mark}; + \pic at (E-head top) {node mark}; + \node[left] at (E-left) {\chpn{l}}; + \node[right] at (E-right) {\chpn{r}}; + \node[below] at (E-inlet) {\chpn{i}}; + \node[above] at (E-gas outlet) {\chpn{go}}; + \node[below] at (E-liquid outlet) {\chpn{lo}}; + \node[below] at (E-head bottom) {\chpn{hb}}; + \node[above] at (E-head top) {\chpn{ht}}; + \measure{(-2.0,-1.8)}{(2.0,-1.8)}{\SI{20}{\mm}} + \measure{(-1.6,-1.3)}{(0,-1.3)}{\SI{8}{\mm}} + \measure{(0,-1.3)}{(1.4,-1.3)}{\SI{7}{\mm}} + \measure{(-3.2,1.4)}{(-3.2,-0.6)}{\SI{10}{\mm}} + \measure{(-2.7,0.6)}{(-2.7,-0.6)}{\SI{6}{\mm}} + \measure[above]{(-0,2.1)}{(0.4,2.1)}{\SI{2}{\mm}} + \measure[above]{(2.7,0.4)}{(2.7,0)}{\SI{2}{\mm}} + \measure[above]{(3.2,0)}{(3.2,-0.6)}{\SI{3}{\mm}} + \measure[above]{(3.2,1.4)}{(3.2,0)}{\SI{7}{\mm}} +\end{tikzpicture} +\end{center} +Again, the symbol is bigger, but measures are referred to the one with the +right dimensions. + +Only the \chpn{left} and \chpn{right} nodes are defined among the common ones. +The others are aimed to identify some remarkable points of the two main sections +of the \chpp{kettle boiler}: the head of the tube bundle and the shell of the +boiling chamber. Two nodes are defined for the head: the \chpn{head bottom} +node, shown above as \chpn{hb}, and the \chpn{head top} node, shown above as +\chpn{ht}. Here the heating fluid has to be connected. Three more nodes are +defined for the boiling chamber: the \chpn{inlet}, shown above as \chpn{i}, the +\chpn{gas outlet}, shown above as \chpn{go}, and the \chpn{liquid outlet}, shown +above as \chpn{lo}. Their usage should be clear. + +The kettle boiler is the simplest machine belonging to the family of +evaporators. These units, like the name says, are meant to vaporise a liquid, so +they are a special kind of heat exchangers. Anyway, they are described together +with the separators because they are mainly used to concentrate solutions of +non-volatile or poorly-volatile solutes, hence ``separating'' a part of the +solvent from the solution. + +\subsubsection{Tube Bundle Evaporator} + +A slightly more complex evaporator, which indeed works in the same way of a +kettle boiler, is the tube bundle evaporator. It is defined as a simple pic +called \chpp{tube bundle evaporator}: +\begin{chpcode} + \pic at (0,0) {tube bundle evaporator}; +\end{chpcode} +and yields a tank, in which centre there is the anchor, with sketches of the tube +bundle and of the anti-entrainment system on its top: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {tube bundle evaporator}; + \pic at (0,0) {tube bundle evaporator}; + \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}} + \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}} + \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}} + \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}} + \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (E) at (3.6,0) {tube bundle evaporator}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-bottom left) {node mark}; + \pic at (E-bottom right) {node mark}; + \pic at (E-top right) {node mark}; + \pic at (E-top left) {node mark}; + \pic at (E-inlet left) {node mark}; + \pic at (E-inlet right) {node mark}; + \pic at (E-gas outlet) {node mark}; + \pic at (E-liquid outlet) {node mark}; + \pic at (E-pipes left) {node mark}; + \pic at (E-pipes right) {node mark}; + \node[left] at (E-bottom left) {\chpn{bl}}; + \node[right] at (E-bottom right) {\chpn{br}}; + \node[right] at (E-top right) {\chpn{tr}}; + \node[left] at (E-top left) {\chpn{tl}}; + \node[left] at (E-inlet left) {\chpn{il}}; + \node[right] at (E-inlet right) {\chpn{ir}}; + \node[above] at (E-gas outlet) {\chpn{go}}; + \node[below] at (E-liquid outlet) {\chpn{lo}}; + \node[left] at (E-pipes left) {\chpn{pl}}; + \node[right] at (E-pipes right) {\chpn{pr}}; +\end{tikzpicture} +\end{center} +where the measure on bottom indicates the total width of the unit, the measure on +top indicates the width of the tank, the measure on the right indicates the +distance from the middle of the tank to the point where the curvature begins and +the measure on bottom right refers to the distance from the anchor point to the +middle of the pipe bundle. + +Some of the special nodes defined should be clear at this point, at least +\chpn{inlet left}, \chpn{inlet right}, \chpn{gas outlet} and +\chpn{liquid outlet}. Two more special nodes are defined for this pic: +\chpn{pipes left}, abbreviated above as \chpn{pl}, and \chpn{pipes right}, +abbreviated above as \chpn{pr}. + +\subsubsection{Basket Evaporator and Climbing Film Evaporator} + +A different evaporator is the one that uses the basket system. In this case the +heating fluid passes through the shell of the tube bundle, while in the former +one it passes through the pipes. It is defined as a simple pic called +\chpp{basket evaporator}: +\begin{chpcode} + \pic at (0,0) {basket evaporator}; +\end{chpcode} +and yields a tank, in which centre there is the anchor, with sketches of the +tube bundle and of the anti-entrainment system on its top: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {basket evaporator}; +% \pic at (0,0) {basket evaporator}; +% \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}} +% \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}} +% \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}} +% \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}} +% \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}} +% \pic at (0,0) {anchor mark}; +% \pic (E) at (3.6,0) {basket evaporator}; +% \pic at (E-anchor) {anchor mark}; +% \pic at (E-bottom left) {node mark}; +% \pic at (E-bottom right) {node mark}; +% \pic at (E-top right) {node mark}; +% \pic at (E-top left) {node mark}; +% \pic at (E-inlet left) {node mark}; +% \pic at (E-inlet right) {node mark}; +% \pic at (E-gas outlet) {node mark}; +% \pic at (E-liquid outlet) {node mark}; +% \pic at (E-shell top left) {node mark}; +% \pic at (E-shell left) {node mark}; +% \pic at (E-shell bottom left) {node mark}; +% \pic at (E-shell right) {node mark}; +% \pic at (E-shell bottom right) {node mark}; +% \pic at (E-shell top right) {node mark}; +% \node[left] at (E-bottom left) {\chpn{bl}}; +% \node[right] at (E-bottom right) {\chpn{br}}; +% \node[right] at (E-top right) {\chpn{tr}}; +% \node[left] at (E-top left) {\chpn{tl}}; +% \node[above left] at (E-inlet left) {\chpn{il}}; +% \node[above right] at (E-inlet right) {\chpn{ir}}; +% \node[above] at (E-gas outlet) {\chpn{go}}; +% \node[below] at (E-liquid outlet) {\chpn{lo}}; +% \node[left] at (E-shell top left) {\chpn{stl}}; +% \node[left] at (E-shell left) {\chpn{sl}}; +% \node[left] at (E-shell bottom left) {\chpn{sbl}}; +% \node[right] at (E-shell bottom right) {\chpn{sbr}}; +% \node[right] at (E-shell right) {\chpn{sr}}; +% \node[right] at (E-shell top right) {\chpn{str}}; +\end{tikzpicture} +\end{center} + +The \chpp{basket evaporator} has a pretty complex nodes structure, so it will be +described later on, together with a unit that is defined more or less with the +same nodes: the climbing film evaporator. It is defined as a simple pic called +\chpp{climbing film evaporator}: +\begin{chpcode} + \pic at (0,0) {climbing film evaporator}; +\end{chpcode} +and yields a strange shape, , in which centre there is the anchor, with sketches +of the tube bundle, of the anti-entrainment system on its top and of the internal +liquid recirculation path: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {climbing film evaporator}; +% \pic at (0,0) {climbing film evaporator}; +% \measure{(-0.4,-1.7)}{(0.4,-1.7)}{\SI{8}{\mm}} +% \measure{(-1.8,1.5)}{(-1.8,-1.5)}{\SI{30}{\mm}} +% \measure{(-1.3,0.6)}{(-1.3,0)}{\SI{6}{\mm}} +% \measure{(-0.8,0.2)}{(-0.8,0)}{\SI{2}{\mm}} +% \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}} +% \measure[above]{(1.1,0)}{(1.1,-1.1)}{\SI{11}{\mm}} +% \measure[above]{(0.6,0)}{(0.6,-0.45)}{\SI{4.5}{\mm}} +% \pic at (0,0) {anchor mark}; +% \pic (E) at (3.6,0) {climbing film evaporator}; +% \pic at (E-anchor) {anchor mark}; +% \pic at (E-top right) {node mark}; +% \pic at (E-top left) {node mark}; +% \pic at (E-inlet left) {node mark}; +% \pic at (E-inlet right) {node mark}; +% \pic at (E-gas outlet) {node mark}; +% \pic at (E-liquid outlet) {node mark}; +% \pic at (E-shell top left) {node mark}; +% \pic at (E-shell left) {node mark}; +% \pic at (E-shell bottom left) {node mark}; +% \pic at (E-shell right) {node mark}; +% \pic at (E-shell bottom right) {node mark}; +% \pic at (E-shell top right) {node mark}; +% \node[right] at (E-top right) {\chpn{tr}}; +% \node[left] at (E-top left) {\chpn{tl}}; +% \node[left] at (E-inlet left) {\chpn{il}}; +% \node[right] at (E-inlet right) {\chpn{ir}}; +% \node[above] at (E-gas outlet) {\chpn{go}}; +% \node[below] at (E-liquid outlet) {\chpn{lo}}; +% \node[left=1mm] at (E-shell top left) {\chpn{stl}}; +% \node[left=1mm] at (E-shell left) {\chpn{sl}}; +% \node[left=1mm] at (E-shell bottom left) {\chpn{sbl}}; +% \node[right] at (E-shell bottom right) {\chpn{sbr}}; +% \node[right] at (E-shell right) {\chpn{sr}}; +% \node[right] at (E-shell top right) {\chpn{str}}; +\end{tikzpicture} +\end{center} + +In order to better understand, larger versions of both the +\chpp{basket evaporator} and the \chpp{climbing film evaporator} are shown +below with full markings of measures (which values, as usual, refer to the +dimension of real units) and nodes: +\begin{center} +\begin{tikzpicture} + \pic[scale=2] (EB) at (0,0) {basket evaporator}; + \pic at (EB-anchor) {anchor mark}; + \pic at (EB-bottom left) {node mark}; + \pic at (EB-bottom right) {node mark}; + \pic at (EB-top right) {node mark}; + \pic at (EB-top left) {node mark}; + \pic at (EB-inlet left) {node mark}; + \pic at (EB-inlet right) {node mark}; + \pic at (EB-gas outlet) {node mark}; + \pic at (EB-liquid outlet) {node mark}; + \pic at (EB-shell top left) {node mark}; + \pic at (EB-shell left) {node mark}; + \pic at (EB-shell bottom left) {node mark}; + \pic at (EB-shell right) {node mark}; + \pic at (EB-shell bottom right) {node mark}; + \pic at (EB-shell top right) {node mark}; + \node[left] at (EB-bottom left) {\chpn{bl}}; + \node[right] at (EB-bottom right) {\chpn{br}}; + \node[right] at (EB-top right) {\chpn{tr}}; + \node[left] at (EB-top left) {\chpn{tl}}; + \node[left] at (EB-inlet left) {\chpn{il}}; + \node[right] at (EB-inlet right) {\chpn{ir}}; + \node[above] at (EB-gas outlet) {\chpn{go}}; + \node[below] at (EB-liquid outlet) {\chpn{lo}}; + \node[left] at (EB-shell top left) {\chpn{stl}}; + \node[left] at (EB-shell left) {\chpn{sl}}; + \node[left] at (EB-shell bottom left) {\chpn{sbl}}; + \node[right] at (EB-shell bottom right) {\chpn{sbr}}; + \node[right] at (EB-shell right) {\chpn{sr}}; + \node[right] at (EB-shell top right) {\chpn{str}}; + \measure{(-1.7,-3.7)}{(1.7,-3.7)}{\SI{17}{\mm}} + \measure{(-2.9,3.0)}{(-2.9,-3.0)}{\SI{30}{\mm}} + \measure{(-2.4,2.064)}{(-2.4,0)}{\SI{10.32}{\mm}} + \measure[above]{(-1.6,3.7)}{(1.6,3.7)}{\SI{16}{\mm}} + \measure[above]{(3.4,0)}{(3.4,-1.8)}{\SI{9}{\mm}} + \measure[above]{(2.9,0)}{(2.9,-1.0)}{\SI{5}{\mm}} + \measure[above]{(2.4,0)}{(2.4,-0.4)}{\SI{2}{\mm}} + \draw[dashed] (4,5) -- (4,-5); + \begin{scope}[xshift=7.5cm] + \pic[scale=2] (E) at (0,0) {climbing film evaporator}; + \pic at (E-anchor) {anchor mark}; + \pic at (E-top right) {node mark}; + \pic at (E-top left) {node mark}; + \pic at (E-inlet left) {node mark}; + \pic at (E-inlet right) {node mark}; + \pic at (E-gas outlet) {node mark}; + \pic at (E-liquid outlet) {node mark}; + \pic at (E-shell top left) {node mark}; + \pic at (E-shell left) {node mark}; + \pic at (E-shell bottom left) {node mark}; + \pic at (E-shell right) {node mark}; + \pic at (E-shell bottom right) {node mark}; + \pic at (E-shell top right) {node mark}; + \node[right] at (E-top right) {\chpn{tr}}; + \node[left] at (E-top left) {\chpn{tl}}; + \node[left] at (E-inlet left) {\chpn{il}}; + \node[right] at (E-inlet right) {\chpn{ir}}; + \node[above] at (E-gas outlet) {\chpn{go}}; + \node[below] at (E-liquid outlet) {\chpn{lo}}; + \node[left=3mm] at (E-shell top left) {\chpn{stl}}; + \node[left=3mm] at (E-shell left) {\chpn{sl}}; + \node[left=3mm] at (E-shell bottom left) {\chpn{sbl}}; + \node[right] at (E-shell bottom right) {\chpn{sbr}}; + \node[right] at (E-shell right) {\chpn{sr}}; + \node[right] at (E-shell top right) {\chpn{str}}; + \measure{(-0.8,-3.7)}{(0.8,-3.7)}{\SI{8}{\mm}} + \measure{(-2.8,3.0)}{(-2.8,-3.0)}{\SI{30}{\mm}} + \measure{(-2.3,1.2)}{(-2.3,0)}{\SI{6}{\mm}} + \measure[above]{(-1.6,3.7)}{(1.6,3.7)}{\SI{16}{\mm}} + \measure[above]{(2.6,0)}{(2.6,-2.2)}{\SI{11}{\mm}} + \measure[above]{(2.1,0)}{(2.1,-0.9)}{\SI{4.5}{\mm}} + \measure[above]{(1.6,0.4)}{(1.6,0)}{\SI{2}{\mm}} + \end{scope} +\end{tikzpicture} +\end{center} + +Measures should be clear enough. The only remark is that the measure on the +bottom of the \chpp{climbing film evaporator} refers to the width of the tube +bundle part of the unit without taking into account the little protruding +lines. Always for this unit, labels of the three nodes on the lower left part +are far from their marks only to avoid overlaps with the internal recirculation +path. + +For both units there are two of the common nodes: \chpn{top left} and +\chpn{top right}, while for the \chpp{basket evaporator} there are also +\chpn{bottom left} and \chpn{bottom right}. Other nodes are common to both +units. Two main inlet nodes: \chpn{inlet left} and \chpn{inlet right}, +abbreviated above as \chpn{il} and \chpn{ir} respectively. Two outlet nodes: +\chpn{gas outlet} and \chpn{liquid outlet}, abbreviated above as \chpn{go} and +\chpn{lo} respectively. The remaining nodes are to be used to connect the +heating fluid to the shell of the pipe bundle: +\begin{itemize} + \item the \chpn{shell top left} node is abbreviated in the drawing as + \chpn{stl}; + \item the \chpn{shell left} node is abbreviated in the drawing as + \chpn{sl}; + \item the \chpn{shell bottom left} node is abbreviated in the drawing as + \chpn{sbl}; + \item the \chpn{shell bottom right} node is abbreviated in the drawing as + \chpn{sbr}; + \item the \chpn{shell right} node is abbreviated in the drawing as + \chpn{sr}; + \item the \chpn{shell top right} node is abbreviated in the drawing as + \chpn{str}. +\end{itemize} +Just like for the \chpp{tube bundle heat exchanger}, so many nodes are defined +for the shell to allow the representation to be as flexible as possibile, in +fact flow configuration can have a great impact on the evaporator performances +and it is often useful to represent it also graphically. + +As a last remark on these two units, often also the \chpp{basket evaporator} has +an internal recirculation path, but this is not marked on the default symbol. If +one wants to show it, this should be done drawing an arrow of \verb|thick| +thickness and with a \verb|stealth| tip from the \chpn{bottom right} node to the +\chpn{inlet right} node (or the same using nodes on the left). + +\subsubsection{Stirred Crystallizer} + +The last kind of separator defined by \chemplants\ is often used in conjunction +with an evaporator and can push the operation of concentration far enough to +achieve the saturation of the solution, causing consequently the precipitation +of solids. A simple non-thermal crystallizer is a stirred tank with a +cone-shaped bottom useful to collect solids in the direction of the outlet +pipe. It is defined as a simple pic called \chpp{stirred crystallizer}: +\begin{chpcode} + \pic at (0,0) {stirred crystallizer}; +\end{chpcode} +and yields a vertical tank, in which centre there is the anchor, with the sketch +of a mechanical stirrer: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {stirred crystallizer}; + \pic at (0,0) {stirred crystallizer}; + \measure{(-0.8,-1.7)}{(0.8,-1.7)}{\SI{16}{\mm}} + \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}} + \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}} + \measure[above]{(1.5,0)}{(1.5,-1.032)}{\SI{10.32}{\mm}} + \measure[above]{(1.0,1.5)}{(1.0,0)}{\SI{15}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3.6,0) {stirred crystallizer}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-bottom left) {node mark}; + \pic at (C-bottom right) {node mark}; + \pic at (C-top right) {node mark}; + \pic at (C-top left) {node mark}; + \pic at (C-inlet left) {node mark}; + \pic at (C-inlet right) {node mark}; + \pic at (C-liquid outlet) {node mark}; + \pic at (C-solid outlet) {node mark}; + \pic at (C-shaft) {node mark}; + \node[left] at (C-bottom left) {\chpn{bl}}; + \node[right] at (C-bottom right) {\chpn{br}}; + \node[right] at (C-top right) {\chpn{tr}}; + \node[left] at (C-top left) {\chpn{tl}}; + \node[left] at (C-inlet left) {\chpn{il}}; + \node[right] at (C-inlet right) {\chpn{ir}}; + \node[above] at (C-liquid outlet) {\chpn{lo}}; + \node[below] at (C-solid outlet) {\chpn{so}}; + \node[above] at (C-shaft) {\chpn{s}}; +\end{tikzpicture} +\end{center} +where the measure on the bottom-right indicates the distance from the middle of +the tank to the point where the cone begins, while measures on the top right +indicate the distances from the stirrer end point to the anchor point in the +middle of the tank. + +The end of the stirrer outside the tank is also identified by a special +coordinate node, indicated in the above drawing as \chpn{s} and called +\chpn{shaft}. It should be evident that this is not a point defined to connect +streams, but it may be useful for some kind of control systems. In addition +to this node, also the \chpn{inlet left} node and \chpn{inlet right} node are +defined, shown above as \chpn{il} and \chpn{ir} respectively, and finally the +\chpn{liquid outlet} node and \chpn{solid outlet} node, shown above as \chpn{lo} +and \chpn{so} respectively. + +\subsubsection{Tube Bundle Crystallizer} + +A stirred crystallizer can be used to sketch diagrams of crystallization +operation held in multiple units, such as a cooling in a heat exchanger and the +following crystallization in a proper equipment. However, there is also a simple +all-in-one machine that realizes heath exchange and crystallization at the same +time. It is defined as a simple pic called \chpp{tube bundle crystallizer}: +\begin{chpcode} + \pic at (0,0) {tube bundle crystallizer}; +\end{chpcode} +and yields a tank, in which centre there is the anchor, with sketches of the tube +bundle: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {tube bundle crystallizer}; + \pic at (0,0) {tube bundle crystallizer}; + \measure{(-0.85,-1.7)}{(0.85,-1.7)}{\SI{17}{\mm}} + \measure{(-1.0,1.5)}{(-1.0,-1.5)}{\SI{30}{\mm}} + \measure[above]{(-0.8,1.7)}{(0.8,1.7)}{\SI{16}{\mm}} + \measure[above]{(1.5,1.032)}{(1.5,0)}{\SI{10.32}{\mm}} + \measure[above]{(1.0,0)}{(1.0,-0.5)}{\SI{5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3.6,0) {tube bundle crystallizer}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-bottom left) {node mark}; + \pic at (C-bottom right) {node mark}; + \pic at (C-top right) {node mark}; + \pic at (C-top left) {node mark}; + \pic at (C-inlet left) {node mark}; + \pic at (C-inlet right) {node mark}; + \pic at (C-liquid outlet) {node mark}; + \pic at (C-solid outlet) {node mark}; + \pic at (C-pipes left) {node mark}; + \pic at (C-pipes right) {node mark}; + \node[left] at (C-bottom left) {\chpn{bl}}; + \node[right] at (C-bottom right) {\chpn{br}}; + \node[right] at (C-top right) {\chpn{tr}}; + \node[left] at (C-top left) {\chpn{tl}}; + \node[left] at (C-inlet left) {\chpn{il}}; + \node[right] at (C-inlet right) {\chpn{ir}}; + \node[above] at (C-liquid outlet) {\chpn{lo}}; + \node[below] at (C-solid outlet) {\chpn{so}}; + \node[left] at (C-pipes left) {\chpn{pl}}; + \node[right] at (C-pipes right) {\chpn{pr}}; +\end{tikzpicture} +\end{center} +where the measure on bottom indicates the total width of the unit, the measure on +top indicates the width of the tank, the measure on the right indicates the +distance from the middle of the tank to the point where the curvature begins and +the measure on bottom right refers to the distance from the anchor point to the +middle of the pipe bundle. + +Some of the special nodes defined should be clear at this point, at least +\chpn{inlet left}, \chpn{inlet right}, \chpn{liquid outlet} and +\chpn{solid outlet}. Two more special nodes are defined for this pic: +\chpn{pipes left}, abbreviated above as \chpn{pl}, and \chpn{pipes right}, +abbreviated above as \chpn{pr}. + +\subsection{Columns} + +A column is the most characteristic piece of equipment of the chemical industry +and is a vertical pipe with large diameter featured by various types of +internals; it can be used in a wide set of applications. It is defined as a pic +with arguments called \chpp{column}: +\begin{chpcode} + \pic at (0,0) {column=empty}; +\end{chpcode} +and yields a vertical column anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {column=empty}; + \pic at (0,0) {column=empty}; + \measure{(-0.5,-3.2)}{(0.5,-3.2)}{\SI{10}{\mm}} + \measure{(-0.7,3)}{(-0.7,-3)}{\SI{60}{\mm}} + \measure[above]{(0.7,2.6)}{(0.7,0)}{\SI{26}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3,0) {column=empty}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-bottom right) {node mark}; + \pic at (C-right) {node mark}; + \pic at (C-top right) {node mark}; + \pic at (C-top) {node mark}; + \pic at (C-top left) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[left] at (C-bottom left) {\chpn{bl}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[right] at (C-bottom right) {\chpn{br}}; + \node[right] at (C-right) {\chpn{r}}; + \node[right] at (C-top right) {\chpn{tr}}; + \node[above] at (C-top) {\chpn{t}}; + \node[left] at (C-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the +column to the points where the nodes are placed. It should be noticed that this +point is not where the curvature begins, like in tank-shaped units. The curvature +begins \SI{27}{\mm} above the middle of the unit (in my opinion, a better +graphical effect is obtained with a stream placed slightly below this point). +Similar considerations apply the similar nodes on the bottom. + +Four kinds of columns are defined: \chpa{empty}, \chpa{trayed}, \chpa{packed} +and \chpa{packed double}, which represent respectively an empty column, a column +with trays, a column with a single packed zone and a column with two packed +zones (useful to represent distillation in packed columns). These keys should be +used as arguments of the \chpp{column} pic. The code: +\begin{chpcode} + \pic at (0,0) {column=empty}; + \pic at (3,0) {column=trayed}; + \pic at (6,0) {column=packed}; + \pic at (9,0) {column=packed double}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {column=empty}; + \pic at (3,0) {column=trayed}; + \pic at (6,0) {column=packed}; + \pic at (9,0) {column=packed double}; +\end{tikzpicture} +\end{center} +All of the columns have the same dimensions and the anchor mark is always at the +centre of the pic (they are all defined as variants of the \chpa{empty} column). +Finally, it is useful to remember that trays (or packings) start \SI{24}{\mm} +above the middle of the column and are spaced \SI{2}{\mm} each. + +\subsection{Reactors} + +Besides columns, reactors are the other most characteristic equipments of the +industrial chemistry, for which is essential to realize a reaction, but on a +very large scale. The variety of reactors available in the industry is +wide-ranged in every aspect: shape, phases within the reactor, operating +principles, stream configurations and so on. For this reason, it is impossibile +to summarise all of the existing reactors using one symbol only, but it is anyway +possible to represent the most common ones in terms of operating principled, +which is what is done by \chemplants. + +\subsubsection{Stirred Reactor} + +One of the most common representation of a reactor used in chemical engineering +is a simple vessel provided with a stirrer sketch, which is the core of the +perfectly mixed reactor models. This kind of symbol is defined as a simple pic +called \chpp{stirred reactor}: +\begin{chpcode} + \pic at (0,0) {stirred reactor}; +\end{chpcode} +and yields a vertical, in which centre there is the anchor, with the sketch of a +mechanical stirrer: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {stirred reactor}; + \pic at (0,0) {stirred reactor}; + \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}} + \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}} + \measure{(-1.5,1.5)}{(-1.5,-1.2)}{\SI{27}{\mm}} + \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}} + \measure[above]{(1.0,1.5)}{(1.0,0)}{\SI{15}{\mm}} + \measure[above]{(1.5,0)}{(1.5,-0.732)}{\SI{7.32}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (R) at (3.6,0) {stirred reactor}; + \pic at (R-anchor) {anchor mark}; + \pic at (R-left) {node mark}; + \pic at (R-bottom left) {node mark}; + \pic at (R-bottom) {node mark}; + \pic at (R-bottom right) {node mark}; + \pic at (R-right) {node mark}; + \pic at (R-top right) {node mark}; + \pic at (R-top) {node mark}; + \pic at (R-top left) {node mark}; + \pic at (R-shaft) {node mark}; + \node[left] at (R-left) {\chpn{l}}; + \node[left] at (R-bottom left) {\chpn{bl}}; + \node[below] at (R-bottom) {\chpn{b}}; + \node[right] at (R-bottom right) {\chpn{br}}; + \node[right] at (R-right) {\chpn{r}}; + \node[right] at (R-top right) {\chpn{tr}}; + \node[above] at (R-top) {\chpn{t}}; + \node[left] at (R-top left) {\chpn{tl}}; + \node[above] at (R-shaft) {\chpn{s}}; +\end{tikzpicture} +\end{center} + +Reading measures is not that easy, so it is better to give some clarification: +the pic have an overall height of \SI{27}{\mm} and an overall width of +\SI{16}{\mm}, while the tank (without the stirrer protruding part) is +\SI{24}{\mm} high; the measure on the bottom right indicates the distance from +the middle of the tank to the point where the curvature begins, while measures on +the top right indicate the distances from the stirrer end point to the anchor +point in the middle of the tank. + +The end of the stirrer outside the tank is also identified by a special +coordinate node, indicated in the above drawing as \chpn{s} and called +\chpn{shaft}. It should be evident that this is not a point defined to connect +streams, but it may be useful for some kind of control systems. + +A stirred reactor can be used to represent two ideal reactor models among the +most commonly used in the chemical engineering: the perfectly mixed batch reactor +and the continuous stirred tank reactor (\ac{CSTR}). Anyway, a +\chpp{stirred reactor} is a very generic representation, so it will be +appropriate for all of the reactors in which there is a mixer, regardless from +the mixer type or of the phases within the reactor. + +\subsubsection{Packed Bed Crystallizer} + +The third most common ideal reactor model, the plug flow reactor (\ac{PFR}), can +be functionally represented by a packed bed reactor, that is clearly useful to +represent also a real packed bed reactor. It is defined as a simple pic called +\chpp{packed bed reactor}: +\begin{chpcode} + \pic at (0,0) {packed bed reactor}; +\end{chpcode} +and yields a rectangular reactor, in which centre there is the anchor, with the +representation of the inside packing: +\begin{center} +\begin{tikzpicture} + \pic at (-4,0) {packed bed reactor}; + \pic at (0,0) {packed bed reactor}; + \measure{(-1,-0.65)}{(1,-0.65)}{\SI{20}{\mm}} + \measure{(-1.2,0.45)}{(-1.2,-0.45)}{\SI{9}{\mm}} + \measure[above]{(1.2,0.4)}{(1.2,-0.4)}{\SI{8}{\mm}} + \measure[above]{(0.8,0.65)}{(1.0,0.65)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (R) at (4,0) {packed bed reactor}; + \pic at (R-anchor) {anchor mark}; + \pic at (R-left) {node mark}; + \pic at (R-bottom) {node mark}; + \pic at (R-right) {node mark}; + \pic at (R-top) {node mark}; + \pic at (R-utility bottom left) {node mark}; + \pic at (R-utility bottom right) {node mark}; + \pic at (R-utility top right) {node mark}; + \pic at (R-utility top left) {node mark}; + \node[left] at (R-left) {\chpn{l}}; + \node[below] at (R-bottom) {\chpn{b}}; + \node[right] at (R-right) {\chpn{r}}; + \node[above] at (R-top) {\chpn{t}}; + \node[below] at (R-utility bottom left) {\chpn{ubl}}; + \node[below] at (R-utility bottom right) {\chpn{ubr}}; + \node[above] at (R-utility top right) {\chpn{utr}}; + \node[above] at (R-utility top left) {\chpn{utl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the height of the rectangle without the +small protruding vertical edges, while the measure on the top indicates the width +of the section without the packing. + +The \chpp{packed bed reactor} has some special nodes. Among the common ones, +only \chpn{left}, \chpn{bottom}, \chpn{right} and \chpn{top} are defined. In +addition, there are four nodes more: +\begin{itemize} + \item a node called \chpn{utility bottom left}, abbreviated in the picture + above as \chpn{ubl}; + \item a node called \chpn{utility bottom right}, abbreviated in the picture + above as \chpn{ubr}; + \item a node called \chpn{utility top right}, abbreviated in the picture + above as \chpn{utr}; + \item a node called \chpn{utility top left}, abbreviated in the picture above + as \chpn{utl}. +\end{itemize} +These nodes are useful to simulate the presence of a jacket associated to the +reactor and can be used, for example, to connect utility streams carrying fluids +of a temperature control system. + +\subsubsection{Fluidized Bed Reactor} + +Even though the two above mentioned reactors are the most common ones, there are +many others and one example is the fluidized bed reactor. Its usage have the same +aims of the packed bed reactor, but this time solids are free to move within +the reactor entrained and mixed by the gas. It is defined as a simple pic called +\chpp{fluidized reactor}: +\begin{chpcode} + \pic at (0,0) {fluidized bed reactor}; +\end{chpcode} +and yields a half tank-shaped reactor anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {fluidized bed reactor}; + \pic at (0,0) {fluidized bed reactor}; + \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}} + \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}} + \measure[above]{(-0.2,1.4)}{(0.2,1.4)}{\SI{4}{\mm}} + \measure[above]{(1.0,0)}{(1.0,-0.4)}{\SI{4}{\mm}} + \measure[above]{(1.5,0.732)}{(1.5,0)}{\SI{7.32}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (R) at (3.6,0) {fluidized bed reactor}; + \pic at (R-anchor) {anchor mark}; + \pic at (R-left) {node mark}; + \pic at (R-bottom left) {node mark}; + \pic at (R-bottom) {node mark}; + \pic at (R-bottom right) {node mark}; + \pic at (R-right) {node mark}; + \pic at (R-top right) {node mark}; + \pic at (R-top) {node mark}; + \pic at (R-top left) {node mark}; + \node[left] at (R-left) {\chpn{l}}; + \node[left] at (R-bottom left) {\chpn{bl}}; + \node[below] at (R-bottom) {\chpn{b}}; + \node[right] at (R-bottom right) {\chpn{br}}; + \node[right] at (R-right) {\chpn{r}}; + \node[right] at (R-top right) {\chpn{tr}}; + \node[above] at (R-top) {\chpn{t}}; + \node[left] at (R-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the tank +to the point where the curvature begins. + +No special node is defined for the \chpp{fluidized reactor}. Anyway, it should +be noticed that the restriction of the bottom represents a real section +change in the tank, which allows the bed to be firstly entrained by a fast +flow and then to fall down due to the slowing of the stream caused by the +expansion of the cross section. For this reason, the main inlet should be placed +on the \chpn{bottom} node, while the main outlet should be connected to the +\chpn{top} node. Other nodes, in particular \chpn{bottom left}, +\chpn{bottom right}, \chpn{top right} and \chpn{top left}, can be used for +connections if one needs to represent a solid stream going through the reactor. + +\subsubsection{Tube Bundle Reactor} + +Another possibility to represent a reacting system is a tube bundle reactor, +which can be used as a film reactor, thus to contact a liquid stream falling +inside the reactor in the form of a film distributed on the walls of the internal +pipes and a gas stream flowing in the internal spaces of the pipes, or as a +multi-pipe packed bed reactor. It is defined as a simple pic called +\chpp{tube bundle reactor}: +\begin{chpcode} + \pic at (0,0) {tube bundle reactor}; +\end{chpcode} +and yields a tank-shaped reactor, in which centre there is the anchor, with the +sketch of the internal pipes: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {tube bundle reactor}; + \pic at (0,0) {tube bundle reactor}; + \measure{(-0.85,-1.4)}{(0.84,-1.4)}{\SI{17}{\mm}} + \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}} + \measure[above]{(1.0,0.732)}{(1.0,0)}{\SI{7.32}{\mm}} + \measure[above]{(-0.8,1.4)}{(0.8,1.4)}{\SI{16}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (R) at (3.6,0) {tube bundle reactor}; + \pic at (R-anchor) {anchor mark}; + \pic at (R-left) {node mark}; + \pic at (R-bottom left) {node mark}; + \pic at (R-bottom) {node mark}; + \pic at (R-bottom right) {node mark}; + \pic at (R-right) {node mark}; + \pic at (R-top right) {node mark}; + \pic at (R-top) {node mark}; + \pic at (R-top left) {node mark}; + \node[left] at (R-left) {\chpn{l}}; + \node[left] at (R-bottom left) {\chpn{bl}}; + \node[below] at (R-bottom) {\chpn{b}}; + \node[right] at (R-bottom right) {\chpn{br}}; + \node[right] at (R-right) {\chpn{r}}; + \node[right] at (R-top right) {\chpn{tr}}; + \node[above] at (R-top) {\chpn{t}}; + \node[left] at (R-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the tank +to the point where the curvature begins, while the measure on the top indicates +the width of the reactor without the small protruding horizontal lines which +represent the support plates of internal pipes. + +No special node is defined for the \chpp{tube bundle reactor}, but it is a good +idea to specify that \chpn{left} and \chpn{right} nodes identify two points which +fall between the support plates of internal pipes, so they are the ``access'' to +the outer side of the pipe bundle. For this reason these two points are perfect +to connect utility streams carrying fluids of a temperature control system. +Unlike evaporators, there are not so many nodes for the shell of the pipes: an +evaporator is a purely thermal unit and the flow configuration can be an +important information to show, while for a reactor it is not that important. + +Finally, another useful information is that both support plates of the pipes are +placed to a vertical distance of \SI{6.5}{\mm} from the anchor point, even though +not explicitly marked in the above drawing. + +\subsection{Associative Pics for Reactors} + +The just introduced reactors are only a little part of the huge variety of +symbols one can find looking at process schemes. It is almost impossible to +accomplish all of the requests about the representation of reactors: one wants +to draw a jacket, another one wants a stirrer and a jacket, another one wants a +stirrer but no jacket, another one wants a sprayer, a stirrer and a jacket and +so on. + +Even though the number of possibile combinations is huge, a smart and efficient +solution can always be found. A possibile way is what I like to call associative +pics, a palette of pics which can be overlapped and bonded together thanks to +anchors. In this way, only the building blocks need to be defined and then users +can play with them to produce symbols they like the most, or the ones they need. +It should be clear that some pics will exclude the usage of others (for example a +stirrer should not be represented in a packed bed reactor). + +\subsubsection{Tank Reactor} + +It is necessary to specify that this technique is adopted in \chemplants\ only +for reactors, more precisely for tank shaped reactors. The main building block +is, in fact, a little tank which represents a generic empty reactor. It is +defined as a simple pic called \chpp{tank reactor}: +\begin{chpcode} + \pic at (0,0) {tank reactor}; +\end{chpcode} +and yields a vertical tank anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {tank reactor}; + \pic at (0,0) {tank reactor}; + \measure{(-0.8,-1.4)}{(0.8,-1.4)}{\SI{16}{\mm}} + \measure{(-1.0,1.2)}{(-1.0,-1.2)}{\SI{24}{\mm}} + \measure[above]{(1.0,0.732)}{(1.0,0)}{\SI{7.32}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (R) at (3.6,0) {tank reactor}; + \pic at (R-anchor) {anchor mark}; + \pic at (R-left) {node mark}; + \pic at (R-bottom left) {node mark}; + \pic at (R-bottom) {node mark}; + \pic at (R-bottom right) {node mark}; + \pic at (R-right) {node mark}; + \pic at (R-top right) {node mark}; + \pic at (R-top) {node mark}; + \pic at (R-top left) {node mark}; + \node[left] at (R-left) {\chpn{l}}; + \node[left] at (R-bottom left) {\chpn{bl}}; + \node[below] at (R-bottom) {\chpn{b}}; + \node[right] at (R-bottom right) {\chpn{br}}; + \node[right] at (R-right) {\chpn{r}}; + \node[right] at (R-top right) {\chpn{tr}}; + \node[above] at (R-top) {\chpn{t}}; + \node[left] at (R-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the tank +to the point where the curvature begins. + +This pic is formally analogue to the \chpp{tank}, the very first pic +introduced, but smaller. It is useful to know that the scale factor to +``convert'' a \chpp{tank reactor} into a \chpp{tank} is \num{1.25}. The reason +why it is useful to know it will be explained in the future, when pics +transformations will be introduced. + +As told before, the \chpp{tank reactor} is the starting point of all of the +representation. In particular, almost all of the other pics defined later on +(apart two of them) can be bonded to the \chpp{tank reactor} using the +\chpn{anchor} node. Assuming that the reactor is declared as: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; +\end{chpcode} +thus identified as \chpn{R}, the point in which other pics have to be declared +is the node \chpn{R-anchor}. + +\subsubsection{Jacket} + +The first gadget for the \chpp{tank reactor} is a jacket for temperature +control. It is defined as a simple pic called \chpp{jacket}: +\begin{chpcode} + \pic at (0,0) {jacket}; +\end{chpcode} +and yields the sketch of and external jacket anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-4.0,0) {jacket}; + \pic at (0,0) {jacket}; + \measure[above]{(-1.0,0.9)}{(1.0,0.9)}{\SI{20}{\mm}} + \measure{(-1.2,0.7)}{(-1.2,-1.3)}{\SI{20}{\mm}} + \measure{(-0.1,-1.5)}{(0.1,-1.5)}{\SI{2}{\mm}} + \measure[above]{(1.7,0.5)}{(1.7,0)}{\SI{5}{\mm}} + \measure[above]{(1.2,0)}{(1.2,-1.3)}{\SI{13}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (J) at (4.0,0) {jacket}; + \pic at (J-anchor) {anchor mark}; + \pic at (J-left) {node mark}; + \pic at (J-bottom left) {node mark}; + \pic at (J-bottom right) {node mark}; + \pic at (J-right) {node mark}; + \pic at (J-top right) {node mark}; + \pic at (J-top left) {node mark}; + \node[left] at (J-left) {\chpn{l}}; + \node[below left] at (J-bottom left) {\chpn{bl}}; + \node[below right] at (J-bottom right) {\chpn{br}}; + \node[right] at (J-right) {\chpn{r}}; + \node[right] at (J-top right) {\chpn{tr}}; + \node[left] at (J-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +where the measure on the bottom right indicates the distance from the anchor of +the jacket to its bottom, while the measure on the bottom indicates the width of +the ``bottom hole''. + +The \chpp{jacket} has to be bonded to the \chpp{tank reactor} using its +\chpn{anchor} node: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {jacket}; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {jacket}; +\end{tikzpicture} +\end{center} +It should be noticed that the \chpp{jacket} extends the dimensions of the +\chpp{tank reactor} by \SI{2}{\mm} in horizontal on both sides and by +\SI{1}{\mm} in vertical on the bottom. + +This solution is functional, but it introduces also a drawback: being the +\chpp{jacket} and the \chpp{tank reactor} two different pics, they have to be +identified using two different prefixes. In the above example, the node +\chpn{R-left} identifies the \chpn{left} node of the reactor, but not the +\chpn{left} node of the jacket. The drawback is that it is necessary to remember +to use the correct prefix to identify nodes of the right pic, but this is also +a safer approach. + +\subsubsection{Stirrer} + +The \chpp{jacket} is the only external gadget defined, but there are a lot of +internal accessories, among which there is the already known stirrer. It is +defined a simple pic called \chpp{stirrer}: +\begin{chpcode} + \pic at (0,0) {stirrer}; +\end{chpcode} +and yields the sketch of a mechanical stirrer: +\begin{center} +\begin{tikzpicture} + \pic at (-3.0,0) {stirrer}; + \pic at (0,0) {stirrer}; + \measure{(-0.5,-0.575)}{(0.5,-0.575)}{\SI{10}{\mm}} + \measure{(-0.7,1.5)}{(-0.7,-0.375)}{\SI{18.75}{\mm}} + \measure[above]{(0,1.7)}{(0.5,1.7)}{\SI{5}{\mm}} + \measure[above]{(0.7,1.5)}{(0.7,0)}{\SI{15}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (S) at (3.0,0) {stirrer}; + \pic at (S-anchor) {anchor mark}; + \pic at (S-shaft) {node mark}; + \node[above] at (S-shaft) {\chpn{s}}; +\end{tikzpicture} +\end{center} +where measures on the right and on the top indicate the distances from the +anchor of the stirrer to the end of its shaft. + +The \chpp{stirrer} has a special node: the \chpn{shaft} node is placed at the +end of the shaft and it is abbreviated above as \chpn{s}. + +The \chpp{stirrer} has to be bonded to the \chpp{tank reactor} using its +\chpn{anchor} node: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {stirrer}; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {stirrer}; +\end{tikzpicture} +\end{center} +It should be noticed that the \chpp{stirrer} extends the dimensions of the +\chpp{tank reactor} by \SI{3}{\mm} in vertical on the top. The pic obtained in +this way is exactly the same of the \chpp{stirred reactor}, but this last one +has still its own definition as a single pic due to its importance. + +\subsubsection{Coil} + +Instead of using a jacket to control the temperature of a reactor, there is +another solution: a coil, either electrical or carrier of a temperature +controlling fluid, placed within the reactor. It is defined as a simple pic +called \chpp{coil}: +\begin{chpcode} + \pic at (0,0) {coil}; +\end{chpcode} +and yields the sketch of a coil anchored in its center: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {coil}; + \pic at (0,0) {coil}; + \measure{(-0.7,-0.9)}{(1.0,-0.9)}{\SI{17}{\mm}} + \measure{(-1.0,0.7)}{(-1.0,-0.7)}{\SI{14}{\mm}} + \measure[above]{(0,0.9)}{(1.0,0.9)}{\SI{10}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3.6,0) {coil}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-top) {node mark}; + \node[right] at (C-bottom) {\chpn{b}}; + \node[right] at (C-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where the measure on the top indicates the distance from the anchor of the coil +to the end of its path. + +The two nodes declared for the \chpp{coil} are the \chpn{bottom} node and the +\chpn{top} node, abbreviated above as \chpn{b} and \chpn{t} respectively. + +The \chpp{coil} has to be bonded to the \chpp{tank reactor} using its +\chpn{anchor} node: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {coil}; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {coil}; +\end{tikzpicture} +\end{center} +It should be noticed that the \chpp{coil} extends the dimensions of the +\chpp{tank reactor} by \SI{2}{\mm} in horizontal on the right. +Even though some overlapping is obtained, the \chpp{coil} and the \chpp{stirrer} +can be used together. + +\subsubsection{Sprayer} + +When it is important to represent the distribution of a liquid fed to a reactor, +a special pic comes in hand. It is defined as a simple pic called \chpp{sprayer}: +\begin{chpcode} + \pic at (0,0) {sprayer}; +\end{chpcode} +and yields the sketch of a sprayer anchored on its inlet end, the one on the +right: +\begin{center} +\begin{tikzpicture} + \pic at (-3.4,0) {sprayer}; + \pic at (0,0) {sprayer}; + \measure{(0,-0.3)}{(1.4,-0.3)}{\SI{14}{\mm}} + \measure{(-0.2,0)}{(-0.2,-0.1)}{\SI{1}{\mm}} + \pic at (0,0) {anchor mark}; +\end{tikzpicture} +\end{center} +and no special or common nodes are defined for this pic, apart from the usual +\chpn{anchor} node. + +The \chpp{sprayer} has to be bonded to the \chpp{tank reactor} using its +\chpn{top left} node (or its \chpn{top right} node using a trick that will be +introduced in the following): +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-top left) {sprayer}; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-top left) {sprayer}; +\end{tikzpicture} +\end{center} + +\subsubsection{Bubbler} + +In the same way, when it is important to represent the distribution of a gas fed +to a reactor, a special pic comes in hand. It is defined a simple pic called +\chpp{bubbler}: +\begin{chpcode} + \pic at (0,0) {bubbler}; +\end{chpcode} +and yields the sketch of a bubbler anchored on its inlet end, the one on the +right: +\begin{center} +\begin{tikzpicture} + \pic at (-3.4,0) {bubbler}; + \pic at (0,0) {bubbler}; + \measure{(0,-0.3)}{(1.4,-0.3)}{\SI{14}{\mm}} + \measure{(-0.2,0.1)}{(-0.2,0)}{\SI{1}{\mm}} + \pic at (0,0) {anchor mark}; +\end{tikzpicture} +\end{center} +and no special or common nodes are defined for this pic, apart the usual +\chpn{anchor} node. + +The \chpp{bubbler} has to be bonded to the \chpp{tank reactor} using its +\chpn{bottom left} node (or its \chpn{bottom right} node using a trick that will +be introduced in the following): +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-bottom left) bubbler; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-bottom left) {bubbler}; +\end{tikzpicture} +\end{center} + +\subsubsection{Packing} + +Finally, the last pic defined as a gadget for the \chpp{tank reactor} is useful +to obtain an alternative representation of the \chpp{packed bed reactor}. +It is defined as a simple pic called \chpp{packing}: +\begin{chpcode} + \pic at (0,0) {packing}; +\end{chpcode} +and yields the representation of a packing: +\begin{center} +\begin{tikzpicture} + \pic at (-3.6,0) {packing}; + \pic at (0,0) {packing}; + \measure{(-0.8,-0.9)}{(0.8,-0.9)}{\SI{16}{\mm}} + \measure{(-1.0,0.7)}{(-1.0,-0.7)}{\SI{14}{\mm}} + \pic at (0,0) {anchor mark}; +\end{tikzpicture} +\end{center} +and no special or common nodes are defined for this pic, apart from the usual +\chpn{anchor} node. + +The \chpp{packing} has to be bonded to the \chpp{tank reactor} using its +\chpn{anchor} node: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {packing}; +\end{chpcode} +and the result is: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {packing}; +\end{tikzpicture} +\end{center} +It should be clear enough that this pic has not to be used with any of the +preceding ones, but, at most, with the \chpp{jacket}. + +\section{Process Utility Units} + +Process utilities is the name given to a set of special units useful to +better specify what is going on in a process; such units are valves, pipe joints, +equipment nozzles and so on. Among process utilities, there are also control +instrumentation and ``gadgets'' for units to be used, for example, to let +the control system automatically act on the process. + +\subsection{Valves} + +A utility valve should not be misconceived with a lamination valve (as it often +happens). Despite the extremely common fact that the same symbol is used for +both the units, for the sake of clearance \UNICHIM\ indicates the lamination of +a fluid through a valve using a different symbol with respect to the one used +for regulation or interception valves. + +\subsubsection{Lamination Valve} + +A lamination valve is a unit useful to expand a fluid, hence to reduce its +pressure. It can be represented using a simple pic called +\chpp{lamination valve}: +\begin{chpcode} + \pic at (0,0) {lamination valve}; +\end{chpcode} +which yields a rectangle anchored in its centre in which there is an arrow +sketch: +\begin{center} +\begin{tikzpicture} + \pic at (-2.4,0) {lamination valve}; + \pic at (0,0) {lamination valve}; + \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}} + \measure{(-0.4,0.1)}{(-0.4,-0.1)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (V) at (2.4,0) {lamination valve}; + \pic at (V-anchor) {anchor mark}; + \pic at (V-inlet) {node mark}; + \pic at (V-outlet) {node mark}; + \node[left] at (V-inlet) {\chpn{i}}; + \node[right] at (V-outlet) {\chpn{o}}; +\end{tikzpicture} +\end{center} + +Nodes defined for the \chpp{lamination valve} are particular. A lamination +valve is a unit much more similar to a simple electric bipole, in fact it has +only two nodes (plus the \chpn{anchor}); moreover this unit is a ``one way +operation'', so the nodes have a simple logic: one \chpn{inlet} and one +\chpn{outlet}. These two are indicated in the drawing above as \chpn{i} and +\chpn{o} respectively. + +\subsubsection{Valve} + +A generic valve, intended as a a regulation valve or as an interception valve, +can be represented using a pic with arguments called \chpp{valve}: +\begin{chpcode} + \pic at (0,0) {valve=main}; +\end{chpcode} +which yields a horizontal valve anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-2.4,0) {valve=main}; + \pic at (0,0) {valve=main}; + \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}} + \measure{(-0.4,0.1)}{(-0.4,-0.1)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (V) at (2.4,0) {valve=main}; + \pic at (V-anchor) {anchor mark}; + \pic at (V-left) {node mark}; + \pic at (V-right) {node mark}; + \node[left] at (V-left) {\chpn{l}}; + \node[right] at (V-right) {\chpn{r}}; +\end{tikzpicture} +\end{center} + +Note that the \chpn{anchor} node comes in hand with a \chpp{valve}. If one +wants to specify that a valve has a sensor or an actuator (pics will be +introduced in the following), its pic can be simply ``bonded'' to the valve +placing it on the \chpn{anchor} node of the \chpp{valve}. For example, if a +\chpp{valve} is identified as \chpn{V}, placing the actuator in the +\chpn{V-anchor} node will do the job. + +The \chpp{valve} pic is defined with an argument to make it sensible to the +stream on which it is placed, in fact two kinds of valves are defined: +\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively +with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These +keys should be used as arguments of the \chpp{valve} pic. The code: +\begin{chpcode} + \draw[main stream] (0,2) -- (0.8,2); + \pic at (1,2) {valve=main}; + \draw[main stream] (1.2,2) -- (2,2); + \draw[secondary stream] (0,1) -- (0.8,1); + \pic at (1,1) {valve=secondary}; + \draw[secondary stream] (1.2,1) -- (2,1); + \draw[utility stream] (0,0) -- (0.8,0); + \pic at (1,0) {valve=utility}; + \draw[utility stream] (1.2,0) -- (2,0); +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \draw[main stream] (0,2) -- (0.8,2); + \pic at (1,2) {valve=main}; + \draw[main stream] (1.2,2) -- (2,2); + \draw[secondary stream] (0,1) -- (0.8,1); + \pic at (1,1) {valve=secondary}; + \draw[secondary stream] (1.2,1) -- (2,1); + \draw[utility stream] (0,0) -- (0.8,0); + \pic at (1,0) {valve=utility}; + \draw[utility stream] (1.2,0) -- (2,0); +\end{tikzpicture} +\end{center} +Conversely, \chpp{lamination valve} is defined as a simple pic because it is +more similar to a unit operation rather than to a regulation valve, hence it is +drawn with a \verb|thick| line just like process units. + +\subsubsection{Three-Way Valve} + +Even though it is not properly a valve, the similarities of the symbols qualify a +pipes joint also with the name of three-way valve. It is defined as a pic with +arguments called \chpp{valve triple}: +\begin{chpcode} + \pic at (0,0) {valve triple=main}; +\end{chpcode} +which yields a horizontal valve anchored in its centre with the third way going +out from the top: +\begin{center} +\begin{tikzpicture} + \pic at (-2.4,0) {valve triple=main}; + \pic at (0,0) {valve triple=main}; + \measure{(-0.2,-0.3)}{(0.2,-0.3)}{\SI{4}{\mm}} + \measure{(-0.4,0.2)}{(-0.4,-0.1)}{\SI{3}{\mm}} + \measure[above]{(0.4,0.2)}{(0.4,0)}{\SI{2}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (V) at (2.4,0) {valve triple=main}; + \pic at (V-anchor) {anchor mark}; + \pic at (V-left) {node mark}; + \pic at (V-right) {node mark}; + \pic at (V-top) {node mark}; + \node[left] at (V-left) {\chpn{l}}; + \node[right] at (V-right) {\chpn{r}}; + \node[above] at (V-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the middle of the +joint to its top. + +Just like for the valve, three kinds of three-way valves are defined: +\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively +with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These +keys should be used as arguments of the \chpp{valve triple} pic. + +\subsubsection{Four-Way Valve} + +Just like three-way valve, also a joint of four pipes is not properly a valve, +but the similarity of its symbols to the one used to denote valves gives it the +informal name of four-way valve. It is defined as a pic with arguments called +\chpp{valve quadruple}: +\begin{chpcode} + \pic at (0,0) {valve quadruple=main}; +\end{chpcode} +which yields a ``cross valve'' anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (-2.4,0) {valve quadruple=main}; + \pic at (0,0) {valve quadruple=main}; + \measure{(-0.2,-0.4)}{(0.2,-0.4)}{\SI{4}{\mm}} + \measure{(-0.4,0.2)}{(-0.4,-0.2)}{\SI{4}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (V) at (2.4,0) {valve quadruple=main}; + \pic at (V-anchor) {anchor mark}; + \pic at (V-left) {node mark}; + \pic at (V-bottom) {node mark}; + \pic at (V-right) {node mark}; + \pic at (V-top) {node mark}; + \node[left] at (V-left) {\chpn{l}}; + \node[below] at (V-bottom) {\chpn{b}}; + \node[right] at (V-right) {\chpn{r}}; + \node[above] at (V-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +Just like for the valve, three kinds of four-way valves are defined: +\chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn respectively +with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| lines. These +keys should be used as arguments of the \chpp{valve quadruple} pic. + +\subsubsection{Safety Valve} + +A special kind of valve is the one used to protect a vessel against pressure +anomalies: the safety valve. The \chemplants\ package defines a single symbols to +represent both safety valves and relief valves. It is defined as a pic with +arguments called \chpp{safety quadruple}: +\begin{chpcode} + \pic at (0,0) {safety valve=main}; +\end{chpcode} +which yields a bent valve, in which central node there is the anchor, with +sketches of the spring and of the vent: +\begin{center} +\begin{tikzpicture} + \pic at (-2.5,0) {safety valve=main}; + \pic at (0,0) {safety valve=main}; + \measure{(-0.1,-0.4)}{(0.4,-0.4)}{\SI{5}{\mm}} + \measure{(-0.3,0.3)}{(-0.3,-0.2)}{\SI{5}{\mm}} + \measure[above]{(0,0.5)}{(0.4,0.5)}{\SI{4}{\mm}} + \measure[above]{(0.6,0.3)}{(0.6,0)}{\SI{3}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (V) at (2.5,0) {safety valve=main}; + \pic at (V-anchor) {anchor mark}; + \pic at (V-inlet) {node mark}; + \pic at (V-outlet) {node mark}; + \node[below] at (V-inlet) {\chpn{i}}; + \node[right] at (V-outlet) {\chpn{o}}; +\end{tikzpicture} +\end{center} +where the measure on the right indicates the distance from the anchor to the top +of the spring, while the measure on the measure on the top indicates the distance +from the anchor to the vent. + +Nodes defined for the \chpp{safety valve} follow the same logic of the ones +defined for the \chpp{lamination valve}. Being a safety valve a ``directional'' +unit, the nodes have a simple logic: one \chpn{inlet} and one \chpn{outlet}. +These two are indicated in the drawing above as \chpn{i} and \chpn{o} +respectively. The \chpn{outlet} node may be used to represent the collection of +the discharged stream into a particular treatment circuit. + +Though a safety valve should never be included into the main process path, +possibly even not into the secondary paths, three kinds of safety valves are +defined: \chpa{main}, \chpa{secondary} and \chpa{utility}, which are drawn +respectively with \verb|semithick| lines, \verb|thin| lines and \verb|very thin| +lines. These keys should be used as arguments of the \chpp{safety valve} pic. + +\subsection{Control Instruments} + +\subsubsection{Instrument} + +Often not present in a \ac{PFD}, schematics of control instrumentation is a +valuable integration to the process scheme. It can be shown in order to better +describe a (simple) plant. A generic instrument symbol is defined as a pic with +arguments called \chpp{instrument}: +\begin{chpcode} + \pic at (0,0) {instrument=TIC}; +\end{chpcode} +and yields a circle anchored in its centre, with \verb|thin| line thickness and +containing the designation of the instrument: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {instrument=TIC}; + \pic at (0,0) {instrument=TIC}; + \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}} + \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (I) at (3,0) {instrument=TIC}; + \pic at (I-anchor) {anchor mark}; + \pic at (I-left) {node mark}; + \pic at (I-bottom) {node mark}; + \pic at (I-right) {node mark}; + \pic at (I-top) {node mark}; + \node[left] at (I-left) {\chpn{l}}; + \node[below] at (I-bottom) {\chpn{b}}; + \node[right] at (I-right) {\chpn{r}}; + \node[above] at (I-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +The behaviour of the \chpp{instrument} pic differs with respect to other pics +with arguments and it is more similar to the third argument of the +\verb|\measure| command: the argument can be anything accepted by a \TikZ\ node +and, in the case of chemical plants control instrumentation, it should be a text +specifying the type of instrument, as shown above (\ac{TIC} stands for +temperature indicator and controller). + +\subsubsection{Controller} + +Sometimes it is necessary to represent a different kind of instrumentation. A +common case is a computer connected to a measurement and control system, which +acts as a simple controller. For instance, it may be a programmable logic +controller (\ac{PLC}) or a distribute control system (\ac{DCS}). In such cases, a +special pic exists. It is defined as a pic with arguments called +\chpp{controller}: +\begin{chpcode} + \pic at (0,0) {controller=PLC}; +\end{chpcode} +and yields a square anchored in its centre, with \verb|thin| line thickness and +containing the specification of the controller: +\begin{center} +\begin{tikzpicture} + \pic at (-3,0) {controller=PLC}; + \pic at (0,0) {controller=PLC}; + \measure{(-0.5,-0.7)}{(0.5,-0.7)}{\SI{10}{\mm}} + \measure{(-0.7,0.5)}{(-0.7,-0.5)}{\SI{10}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (C) at (3,0) {controller=PLC}; + \pic at (C-anchor) {anchor mark}; + \pic at (C-left) {node mark}; + \pic at (C-bottom) {node mark}; + \pic at (C-right) {node mark}; + \pic at (C-top) {node mark}; + \node[left] at (C-left) {\chpn{l}}; + \node[below] at (C-bottom) {\chpn{b}}; + \node[right] at (C-right) {\chpn{r}}; + \node[above] at (C-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +Arguments to be used with a \chpp{controller} pic follow exactly the same +logic of the ones used within an \chpp{instrument}: simple text specifying the +controller functions. + +\subsubsection{Actuator} + +Signal paths have already been discussed and can be drawn with the \chps{signal} +style, but there is another utility for control instrumentation. Connections +between signals and units can be made through a sensor, to collect informations, +or through an actuator, to act on the units. Usually sensors are indicated +simply connecting a signal to the point of measurement, a unit or a stream, but +for actuators an additional symbol is used. It is defined as a simple pic called +\chpp{actuator}: +\begin{chpcode} + \pic at (0,0) {actuator}; +\end{chpcode} +and yields a half circle supported by a vertical stem, at the end of which +there is the anchor point: +\begin{center} +\begin{tikzpicture} + \pic at (-2.1,0) {actuator}; + \pic at (0,0) {actuator}; + \measure{(-0.1,-0.2)}{(0.1,-0.2)}{\SI{2}{\mm}} + \measure{(-0.25,0.3)}{(-0.25,-0)}{\SI{3}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (A) at (0,0) {actuator}; + \pic at (A-anchor) {anchor mark}; + \pic at (A-top) {node mark}; + \node[above] at (A-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +The \chpp{actuator} is a strange thing to represent in a scheme and obtaining a +good graphical result is not that easy. In order to get a better drawing, its +line thickness is the same of instruments, but its dimensions are defined to be +relative to the units. This aspect will be better clarified in the future. + +This is a good time to give a practical example of how coordinate nodes can be +used. Introducing the \chpp{valve}, it was said that its \chpn{anchor} node can +come in hand when representing actuators. This simple code: +\begin{chpcode} + \pic (V) at (1,0) {valve=main}; + \pic (A) at (V-anchor) {actuator}; + \pic (FC) at (3,0.8) {instrument=FC}; + \draw[main stream] (0,0) -- (V-left); + \draw[main stream] (V-right) -- (3.5,0); + \draw[short signal] (3,0) -- (FC-bottom); + \draw[signal] (FC-left) -| (A-top); +\end{chpcode} +produces the representation of a flow-rate control loop: +\begin{center} +\begin{tikzpicture} + \pic (V) at (1,0) {valve=main}; + \pic (A) at (V-anchor) {actuator}; + \pic (FC) at (3,0.8) {instrument=FC}; + \draw[main stream] (0,0) -- (V-left); + \draw[main stream] (V-right) -- (3.5,0); + \draw[short signal] (3,0) -- (FC-bottom); + \draw[signal] (FC-left) -| (A-top); +\end{tikzpicture} +\end{center} + +It should be noticed that coordinate nodes are really useful, but appealing to +them implies that the diagram my need to be planned in a non-linear way. In +particular, it is convenient to fix positions of all of the units first and then +connecting their nodes using streams and signals. This procedure requires a +little of practice, but, doubtlessly, its advantages worth the effort. A simple +example: if one decides to move the valve from the coordinates \verb|(1,0)| to +the coordinates \verb|(1.5,0)|, the only thing to do is to change the coordinates +of the point where the \chpp{valve} is placed in the first line of the example +code and all of the other points will automatically move themselves accordingly: +\begin{center} +\begin{tikzpicture} + \pic (V) at (1.5,0) {valve=main}; + \pic (A) at (V-anchor) {actuator}; + \pic (FC) at (3,0.8) {instrument=FC}; + \draw[main stream] (0,0) -- (V-left); + \draw[main stream] (V-right) -- (3.5,0); + \draw[short signal] (3,0) -- (FC-bottom); + \draw[signal] (FC-left) -| (A-top); +\end{tikzpicture} +\end{center} + +\subsection{Process Inlets and Outlets} + +When representing the scheme of a process, it is always necessary to indicate +where prime matters enter and where products leave. One can simply use a stream +with a free end, but \UNICHIM\ defines two particular symbols to these special +purposes. An inlet is defined as a simple pic called +\chpp{inlet}: +\begin{chpcode} + \pic at (0,0) {inlet}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with a filled arrow +sketch: +\begin{center} +\begin{tikzpicture} + \pic at (-2.5,0) {inlet}; + \pic at (0,0) {inlet}; + \measure{(-0.25,-0.45)}{(0.25,-0.45)}{\SI{5}{\mm}} + \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (I) at (2.5,0) {inlet}; + \pic at (I-anchor) {anchor mark}; + \pic at (I-left) {node mark}; + \pic at (I-bottom) {node mark}; + \pic at (I-stream) {node mark}; + \pic at (I-top) {node mark}; + \node[left] at (I-left) {\chpn{l}}; + \node[below] at (I-bottom) {\chpn{b}}; + \node[right] at (I-stream) {\chpn{s}}; + \node[above] at (I-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} +while an outlet is defined as a simple pic called \chpp{outlet}: +\begin{chpcode} + \pic at (0,0) {output}; +\end{chpcode} +and yields a circle, in which centre there is the anchor, with an empty arrow +sketch: +\begin{center} +\begin{tikzpicture} + \pic at (-2.5,0) {outlet}; + \pic at (0,0) {outlet}; + \measure{(-0.25,-0.45)}{(0.25,-0.45)}{\SI{5}{\mm}} + \measure{(-0.45,0.25)}{(-0.45,-0.25)}{\SI{5}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (O) at (2.5,0) {outlet}; + \pic at (O-anchor) {anchor mark}; + \pic at (O-stream) {node mark}; + \pic at (O-bottom) {node mark}; + \pic at (O-right) {node mark}; + \pic at (O-top) {node mark}; + \node[left] at (O-stream) {\chpn{s}}; + \node[below] at (O-bottom) {\chpn{b}}; + \node[right] at (O-right) {\chpn{r}}; + \node[above] at (O-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +For both \chpp{inlet} and \chpp{outlet} pics, streams should be connected to +specific points. More precisely, inlet streams enter the scheme coming from the +tip of the arrow sketch, while outlet streams leave the scheme going into the +base of the arrow sketch. These special anchor points are marked as +\chpn{stream} nodes, which positions are indicated in the above drawings by means +of the abbreviated name \chpn{s}. Other nodes are defined to make the labelling +of inlets and outlets easier. + +\subsection{Nozzles} + +It is sometimes useful to highlight nozzles on units to indicate where a fluid +can go in and where it will come out, if there is a one way path to be followed. +Two simple pics are defined to accomplish this kind of need. An input nozzle is +defined as a simple pic called \chpp{input}: +\begin{chpcode} + \pic at (0,0) {input}; +\end{chpcode} +and yields an empty circle anchored in its centre: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {input}; + \measure{(-0.05,-0.25)}{(0.05,-0.25)}{\SI{1}{\mm}} + \measure{(-0.25,0.05)}{(-0.25,-0.05)}{\SI{1}{\mm}} + \pic at (-2.1,0) {input}; + \pic at (0,0) {anchor mark}; +\end{tikzpicture} +\end{center} +while an output nozzle is defined as a simple pic called \chpp{output}: +\begin{chpcode} + \pic at (0,0) {output}; +\end{chpcode} +and yields a filled circle anchored in its centtr: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {output}; + \measure{(-0.05,-0.25)}{(0.05,-0.25)}{\SI{1}{\mm}} + \measure{(-0.25,0.05)}{(-0.25,-0.05)}{\SI{1}{\mm}} + \pic at (-2.1,0) {output}; + \pic at (0,0) {anchor mark}; +\end{tikzpicture} +\end{center} +Both \chpp{input} and \chpp{output} pics are drawn with a \verb|thick| line, the +same thickness used for units. + +Except for the \chpn{anchor} node, placed on the anchor points of the units, +both \chpp{input} and \chpp{output} have no extra coordinate nodes. + +\subsection{Blocks} + +Units introduced so far are useful to represent the \ac{PFD} of a chemical +process, but sometimes it is enough (or required) to represent a process using +a much more simpler \ac{BFD}, a diagram in which entire sections of the process +are gathered into a self-explicative block. In order to represent \ac{BFD}s, +only the \chps{main stream} style should be used for lines. Blocks can be +obtained by means of a special pic with arguments called \chpp{block}: +\begin{chpcode} + \pic at (0,0) {block=reactor}; +\end{chpcode} +which yields a rectangle anchored in its centre, with \verb|thick| line +thickness and containing the specification of the block: +\begin{center} +\begin{tikzpicture} + \pic at (-5,0) {block=reactor}; + \pic at (0,0) {block=reactor}; + \measure{(-1.5,-0.95)}{(1.5,-0.95)}{\SI{30}{\mm}} + \measure{(-1.7,0.75)}{(-1.7,-0.75)}{\SI{15}{\mm}} + \pic at (0,0) {anchor mark}; + \pic (B) at (5,0) {block=reactor}; + \pic at (B-anchor) {anchor mark}; + \pic at (B-left) {node mark}; + \pic at (B-bottom) {node mark}; + \pic at (B-right) {node mark}; + \pic at (B-top) {node mark}; + \node[left] at (B-left) {\chpn{l}}; + \node[below] at (B-bottom) {\chpn{b}}; + \node[right] at (B-right) {\chpn{r}}; + \node[above] at (B-top) {\chpn{t}}; +\end{tikzpicture} +\end{center} + +The argument passed to the \chpp{block} pic is its specification, so it should +be a text string containing the name of the block. Text is, by default, written +in \verb|\footnotesize| and placed in the centre of the block. + +It should be noticed that the definition of the \chpp{block} pic permits to +split the text passed as argument over multiple lines; use the \verb|\\| command +to brake lines. For example, the code: +\begin{chpcode} + \pic at (0,0) {block=product\\purification}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {block=product\\purification}; +\end{tikzpicture} +\end{center} +and the text is always aligned to the centre of the block. + +Nodes defined for the block deserve an explanation. A \ac{BDF} is a very free +and general representation of a process, thus there are no specific positions +defined to connect streams. The nodes defined by \chemplants\ are the ones on the +``remarkable boundaries'' of the block, but a stream may be connected to any +point of the block. If one wants to connect a stream in a different place with +respect to the given nodes, coordinates have to be calculated by hand (and it not +so difficult with a rectangle). + +\section{Transforming Units} + +As told before, all of the units described so far are shown in their default +orientation. Anyway, the method of defining them as pics permits to apply all of +the pic actions available in \TikZ. Among them, the most useful ones are for +sure tranformations. + +\subsubsection{Useful Transformations} + +A transformation refers to the manipulation of the coordinates that describe the +drawing to obtain some specific effects, of example a rotation or a scaling. +These two are the main transformations which can be applied to units, they will +be briefly summarised in the following using as a model a +\chpp{heat exchanger biphase}. + +\begin{itemize} + \item To make the confrontation easier, the standard + \chpp{heat exchanger biphase} is: + \begin{center} + \begin{tikzpicture} + \pic at (0,0) {heat exchanger biphase}; + \end{tikzpicture} + \end{center} + \item A pic can be rotated using the \verb|rotate| transformation: + \begin{chpcode}[gobble=12] + \pic[rotate=90] at (0,0) {heat exchanger biphase}; + \end{chpcode} + which yields: + \begin{center} + \begin{tikzpicture} + \pic[rotate=90] at (0,0) {heat exchanger biphase}; + \end{tikzpicture} + \end{center} + \item A pic can be horizontally scaled using the \verb|xscale| + transformation: + \begin{chpcode}[gobble=12] + \pic[xscale=1.5] at (0,0) {heat exchanger biphase}; + \end{chpcode} + which yields: + \begin{center} + \begin{tikzpicture} + \pic[xscale=1.5] at (0,0) {heat exchanger biphase}; + \end{tikzpicture} + \end{center} + \item A pic can be vertically scaled using the \verb|yscale| + transformation: + \begin{chpcode}[gobble=12] + \pic[yscale=1.5] at (0,0) {heat exchanger biphase}; + \end{chpcode} + which yields: + \begin{center} + \begin{tikzpicture} + \pic[yscale=1.5] at (0,0) {heat exchanger biphase}; + \end{tikzpicture} + \end{center} + \item A pic can be scaled using the \verb|scale| transformation: + \begin{chpcode}[gobble=12] + \pic[scale=1.5] at (0,0) {heat exchanger biphase}; + \end{chpcode} + which yields: + \begin{center} + \begin{tikzpicture} + \pic[scale=1.5] at (0,0) {heat exchanger biphase}; + \end{tikzpicture} + \end{center} +\end{itemize} + +\subsubsection{Some Tricks} + +Now some tricks based on transformations. Even though scaling a unit in a single +direction can appear useless, this transformation can be used in a clever way. +One example is ``transforming'' a tank in a wide horizontal basin with a code +like: +\begin{chpcode} + \pic at (0,0) {tank}; + \pic[xscale=2.5, yscale=1.25, rotate=90] at (6.75,0) {tank}; +\end{chpcode} +which yields: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {tank}; + \pic[xscale=2.5, yscale=1.25, rotate=90] at (6.75,0) {tank}; +\end{tikzpicture} +\end{center} +(Note that, for some obscure reasons, the pic is firstly rotated and then +scaled). + +Another useful trick based on the single direction scaling can be used to flip a +unit. If a condenser with the utility stream going from left to right is needed, +the \chpp{condenser} can be flipped horizontally scaling its coordinates by +a $- 1$ factor, thus inverting them. The code: +\begin{chpcode} + \pic at (0,0) {condenser}; + \pic[xscale=-1] at (3.4,0) {condenser}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {condenser}; + \pic[xscale=-1] at (3.4,0) {condenser}; +\end{tikzpicture} +\end{center} +This trick works with \verb|yscale| and \verb|scale| as well + +Last, but not least, it should be noticed that sequential scaling factors are +cumulative. The code: +\begin{chpcode} + \pic at (0,0) {centrifugal pump}; + \pic[scale=2] at (3.5,0) {centrifugal pump}; + \pic[scale=2, scale=2] at (8.5,0) {centrifugal pump}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {centrifugal pump}; + \pic[scale=2] at (3.5,0) {centrifugal pump}; + \pic[scale=2, scale=2] at (8.5,0) {centrifugal pump}; +\end{tikzpicture} +\end{center} +in fact the pump in the middle has twice the dimensions of the one on the left, +while the pump on the right has twice the dimensions of the one in the middle, +which means four times the dimensions of the one on the left. This +characteristic of the scaling factors is useful for a feature of \chemplants\ +which will be introduced soon. Note also that the thickness of the lines is not +scaled, which is the main advantage to scale the geometric description of a +figure rather than its vectorial representation. + +It is important to remark that all of the above mentioned transformations affect +not just the pics drawings, but also the positions of the nodes defined into +them. Anyway, names never change, so careful evaluations have to be done when it +is required to transform a unit and to use its nodes at the same time. + +Here are some examples of the most ``invasive'' transformations. Rotating a unit +rotates also its nodes: +\begin{center} +\begin{tikzpicture} + \pic (T1) at (0,0) {tank}; + \pic at (T1-anchor) {anchor mark}; + \pic at (T1-left) {node mark}; + \pic at (T1-bottom left) {node mark}; + \pic at (T1-bottom) {node mark}; + \pic at (T1-bottom right) {node mark}; + \pic at (T1-right) {node mark}; + \pic at (T1-top right) {node mark}; + \pic at (T1-top) {node mark}; + \pic at (T1-top left) {node mark}; + \node[left] at (T1-left) {\chpn{l}}; + \node[left] at (T1-bottom left) {\chpn{bl}}; + \node[below] at (T1-bottom) {\chpn{b}}; + \node[right] at (T1-bottom right) {\chpn{br}}; + \node[right] at (T1-right) {\chpn{r}}; + \node[right] at (T1-top right) {\chpn{tr}}; + \node[above] at (T1-top) {\chpn{t}}; + \node[left] at (T1-top left) {\chpn{tl}}; + \pic[rotate=90] (T2) at (5.5,0) {tank}; + \pic at (T2-anchor) {anchor mark}; + \pic at (T2-left) {node mark}; + \pic at (T2-bottom left) {node mark}; + \pic at (T2-bottom) {node mark}; + \pic at (T2-bottom right) {node mark}; + \pic at (T2-right) {node mark}; + \pic at (T2-top right) {node mark}; + \pic at (T2-top) {node mark}; + \pic at (T2-top left) {node mark}; + \node[below] at (T2-left) {\chpn{l}}; + \node[below] at (T2-bottom left) {\chpn{bl}}; + \node[right] at (T2-bottom) {\chpn{b}}; + \node[above] at (T2-bottom right) {\chpn{br}}; + \node[above] at (T2-right) {\chpn{r}}; + \node[above] at (T2-top right) {\chpn{tr}}; + \node[left] at (T2-top) {\chpn{t}}; + \node[below] at (T2-top left) {\chpn{tl}}; +\end{tikzpicture} +\end{center} +while flipping a unit, for example horizontally with \verb|xscale=-1|, flips +also its nodes: +\begin{center} +\begin{tikzpicture} + \pic (B1) at (0,0) {boiler}; + \pic at (B1-anchor) {anchor mark}; + \pic at (B1-left) {node mark}; + \pic at (B1-bottom) {node mark}; + \pic at (B1-right) {node mark}; + \pic at (B1-top) {node mark}; + \pic at (B1-pipes inlet) {node mark}; + \pic at (B1-pipes outlet) {node mark}; + \node[left] at (B1-left) {\chpn{l}}; + \node[below] at (B1-bottom) {\chpn{b}}; + \node[right] at (B1-right) {\chpn{r}}; + \node[above] at (B1-top) {\chpn{t}}; + \node[left] at (B1-pipes inlet) {\chpn{pi}}; + \node[right] at (B1-pipes outlet) {\chpn{po}}; + \pic[xscale=-1] (B2) at (3.4,0) {boiler}; + \pic at (B2-anchor) {anchor mark}; + \pic at (B2-left) {node mark}; + \pic at (B2-bottom) {node mark}; + \pic at (B2-right) {node mark}; + \pic at (B2-top) {node mark}; + \pic at (B2-pipes inlet) {node mark}; + \pic at (B2-pipes outlet) {node mark}; + \node[right] at (B2-left) {\chpn{l}}; + \node[below] at (B2-bottom) {\chpn{b}}; + \node[left] at (B2-right) {\chpn{r}}; + \node[above] at (B2-top) {\chpn{t}}; + \node[right] at (B2-pipes inlet) {\chpn{pi}}; + \node[left] at (B2-pipes outlet) {\chpn{po}}; +\end{tikzpicture} +\end{center} + +Finally, some special considerations concerning associative pics used to give +flexible representation of reactors. It has been specified that the +\chpp{tank reactor} is analogue to the \chpp{tank} and that the scale factor to +``convert'' the first into the second is \num{1.25}. This is useful, for +example, if one has to represent a stirrer within a tank. The code: +\begin{chpcode} + \pic (T) at (0,0) {tank}; + \pic[scale=1.25] at (T-anchor) {stirrer}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic (T) at (0,0) {tank}; + \pic[scale=1.25] at (T-anchor) {stirrer}; +\end{tikzpicture} +\end{center} +This is just an example, but this trick can be used to associate any two pics +one wants to bond. + +The \chpp{stirrer} can be subject to another transformation not mentioned yet. By +default, the pic is slanted to avoid that the interception point between the +shaft of the stirrer and the dome of the tank reactor falls on the \chpn{top} +node of the tank. If one does not like the slanted shape of the \chpp{stirrer} +and prefers to have a straight stirrer, the \verb|xslant| transformation can be +used. The code: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic[xslant=-0.285, xshift=-2.04] at (R-anchor) {stirrer}; +\end{chpcode} +yields: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic[xslant=-0.285, xshift=-2.04] at (R-anchor) {stirrer}; +\end{tikzpicture} +\end{center} +As it can be seen, the transformation is not that straightforward, in fact also a +little of shift in the $x$ direction is needed. + +Finally, the mirroring trick based on the \verb|xscale=-1| transformation can be +used to mirror both the \chpp{sprayer} and the \chpp{bubbler} to connect +them to the right side of the \chpp{tank reactor} rather than to its left. +Taking as an example a jacketed sparger reactor, if one wants the gas to enter +from the right side, the code: +\begin{chpcode} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {jacket}; + \pic at (R-anchor) {stirrer}; + \pic[xscale=-1] at (R-bottom right) {bubbler}; +\end{chpcode} +will do the job: +\begin{center} +\begin{tikzpicture} + \pic (R) at (0,0) {tank reactor}; + \pic at (R-anchor) {jacket}; + \pic at (R-anchor) {stirrer}; + \pic[xscale=-1] at (R-bottom right) {bubbler}; +\end{tikzpicture} +\end{center} + +\section{Customisation} + +Some of the graphical aspects used by the \chemplants\ package can be +customised at will of the user. Of course, symbols of the units should not be +changed, but there could be some precise necessities that makes the standard +\chemplants\ parameters unsuitable to accomplish requirements. A case could be +the need to draw the scheme of a big process: standard dimensione of units may +make the whole diagram too large to fit it into a single sheet. Another case is +when one is not satisfied by the default unit or streams line thicknesses and +would like to change them. + +To solve issues like these, \chemplants\ provides a rudimental mechanism to set +a number of graphical features of streams and units. In the following, the +customisable parameters are described. + +Styles for streams can be tuned setting arrow tips and line thickness; the +former is common to all of the streams and the latter is specific to each stream +style. +\begin{itemize} + \item Arrow tip used by \chps{main stream}, \chps{secondary stream} and + \chps{utility stream} styles can be set using the command: + \begin{chpcode}[gobble=12] + \setchpstreamtip{£!\meta{arrow tip}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ arrow tip; default + value is \verb|stealth|. + \item Line thickness used by the \chps{main stream} style can be set using + the command: + \begin{chpcode}[gobble=12] + \setchpmainstreamthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|semithick|. + \item Line thickness used by the \chps{secondary stream} style can be set + using the command: + \begin{chpcode}[gobble=12] + \setchpsecondarystreamthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|thin|. + \item Line thickness used by the \chps{utility stream} style can be set using + the command: + \begin{chpcode}[gobble=12] + \setchputilitystreamthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|very thin|. +\end{itemize} + +Styles for units can be tuned setting line thickness and unit base dimension. +The latter is extremely important because permits to scale all of the units by a +given scale factor, thus enabling the overall scaling by means of a single +command. Units can furthermore be scaled individually witusing the \verb|scale| +transformation thanks to the cumulative behaviour of scaling factors. +\begin{itemize} + \item Line thickness used by all of the units defined as pics can be set + using the command: + \begin{chpcode}[gobble=12] + \setchpunitthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|thick|. + \item Scale factor to be applied to all of the units defined as pics can be + set using the command: + \begin{chpcode}[gobble=12] + \setchpunitscale{£!\meta{scale factor}!£} + \end{chpcode} + which requires as argument a numerical value to be used as scale factor + and that will multiply every dimension of all of the units; default + value is \verb|1|. +\end{itemize} + +Styles for control instrumentation can be tuned setting signal style line +thickness, instruments pics line thickness, font dimension and base dimension. +This last feature works exactly like the one of units, but it is a different +parameter in order to allow independent scaling of units and instruments. +\begin{itemize} + \item Line thickness used by the \chps{signal} style can be set using + the command: + \begin{chpcode}[gobble=12] + \setchpsignalthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|very thin|. + \item Line thickness used by all of the instrumentation defined as pics can + be set using the command: + \begin{chpcode}[gobble=12] + \setchpinstrumentthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|thin|. + \item Scale factor to be applied to all of the instrumentation defined as + pics can be set using the command: + \begin{chpcode}[gobble=12] + \setchpinstrumentscale{£!\meta{scale factor}!£} + \end{chpcode} + which requires as argument a numerical value to be used as scale factor + and that will multiply every dimension of all of the instrumentation; + default value is \verb|1|. + \item Font size to be used within all of the instrumentation defined as + pics can be set using the command: + \begin{chpcode}[gobble=12] + \setchpinstrumentfontsize{£!\meta{font size}!£} + \end{chpcode} + which requires as argument a font size attribute understood by \LaTeX; + default value is \verb|\footnotesize|. +\end{itemize} + +Since parameters of both units and instrumentation have been introduced, it is +possible to better specify how these features influence the \chpp{actuator} +pic, a sort of hybrid between a unit and an instrument. As told before, +\chpp{actuator} is sensible to instruments line thickness, but not to their +dimensions, in fact it is defined in relative terms to the unit dimensions. +This means that \verb|\setchpunitscale| will change the scale of the +\chpp{actuator}, while \verb|\setchpinstrumentthickness| will change its line +thickness. + +Styles for hidden streams and components can be tuned setting line patterns for +both styles. +\begin{itemize} + \item Line pattern used by the \chps{hidden stream} style can be set using + the command: + \begin{chpcode}[gobble=12] + \setchphiddenstreamstyle{£!\meta{line pattern}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line pattern; default + value is \verb|dashed|. + \item Line pattern used by the \chps{hidden component} style can be set using + the command: + \begin{chpcode}[gobble=12] + \setchphiddencomponentstyle{£!\meta{line pattern}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line pattern; default + value is \verb|densely dotted|. +\end{itemize} + + +Styles for the \verb|\measure| command can be tuned setting line color, tips and +thickness, plus font size of the measure value. +\begin{itemize} + \item Line color used by the \verb|\measure| command can be set using + the command: + \begin{chpcode}[gobble=12] + \setchpmeasurecolor{£!\meta{line color}!£} + \end{chpcode} + which requires as argument whichever expression can be used to indicate + a color in \LaTeX; default value is \verb|gray|. + \item Line thickness used by the \verb|\measure| command can be set using + the command: + \begin{chpcode}[gobble=12] + \setchpmeasurethickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|thin|. + \item Line tip used by the \verb|\measure| command can be set using the + command: + \begin{chpcode}[gobble=12] + \setchpmeasuretip{£!\meta{line tip}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ arrow tip; default + value is \verb!|!. + \item Font size to be used within the \verb|\measure| command can be set + using the command: + \begin{chpcode}[gobble=12] + \setchpmeasurefontsize{£!\meta{font size}!£} + \end{chpcode} + which requires as argument a font size attribute understood by \LaTeX; + default value is \verb|\footnotesize|. +\end{itemize} + +For what concerns the \verb|\measure| line tip, it should be noticed that there +is no possibility to set different tips for the two extremes of the line. +Using the name of an arrow tip will yield the same tip pointing out on both +sides. For example, after: +\begin{chpcode} + \setchpmeasuretip{stealth} +\end{chpcode} +\setchpmeasuretip{stealth} +the \verb|\measure| will appear again as: +\begin{center} +\begin{tikzpicture} + \measure{(0,0)}{(2,0)}{\SI{2}{\cm}} +\end{tikzpicture} +\end{center} + +Although rudimental, the customisation mechanism of \chemplants\ offers a very +useful opportunity. After giving a new: +\begin{chpcode} + \setchpmeasuretip{|} +\end{chpcode} +\setchpmeasuretip{|} +the \verb|\measure| will appear again as: +\begin{center} +\begin{tikzpicture} + \measure{(0,0)}{(2,0)}{\SI{2}{\cm}} +\end{tikzpicture} +\end{center} +and this means that all of the setting commands listed above act like +declarations and have local validity, so they can be changed everywhere into the +document (even multiple times inside the same \verb|tikzpicture| environment). +This is particularly useful to solve the problem introduced above as example, +the possibly too large base dimension of units in the case of large diagrams. One +can simply scale down all of the units before the scheme and restore the default +unit scale after that. An example. After giving: +\begin{chpcode} + \setchpunitscale{0.5} +\end{chpcode} +\setchpunitscale{0.5} +all of the units will be half their default sizes: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {centrifugal pump}; + \pic at (3,0) {heat exchanger}; + \pic at (6,0) {column=packed}; +\end{tikzpicture} +\end{center} +and after a new: +\begin{chpcode} + \setchpunitscale{1} +\end{chpcode} +\setchpunitscale{1} +all of the units will be restored to their default dimensions: +\begin{center} +\begin{tikzpicture} + \pic at (0,0) {centrifugal pump}; + \pic at (3,0) {heat exchanger}; + \pic at (6,0) {column=packed}; +\end{tikzpicture} +\end{center} + +Styles for blocks can be tuned setting line thickness, font dimension and base +dimension. Also this last feature, like the scale factor for instruments, +regards blocks only and it is independent of the units scale factor. +\begin{itemize} + \item Line thickness used by the \chpp{block} pic can be set using the + command: + \begin{chpcode}[gobble=12] + \setchpblockthickness{£!\meta{line thickness}!£} + \end{chpcode} + which requires as argument the name of a \TikZ\ line thickness; default + value is \verb|thick|. + \item Scale factor to be applied to the \chpp{block} pic can be set using + the command: + \begin{chpcode}[gobble=12] + \setchpblockscale{£!\meta{scale factor}!£} + \end{chpcode} + which requires as argument a numerical value to be used as scale factor + and that will multiply every dimension of the block; default value is + \verb|1|. + \item Font size to be used within the \chpp{block} pic can be set using the + command: + \begin{chpcode}[gobble=12] + \setchpinstrumentfontsize{£!\meta{font size}!£} + \end{chpcode} + which requires as argument a font size attribute understood by \LaTeX; + default value is \verb|\footnotesize|. +\end{itemize} + +A last remark: the listed commands permit to easily tune a number of graphical +parameters in order to satisfy different necessities. Demanding users who have +a good knowledge of the \TikZ\ package can anyway customise even more the styles +used by \chemplants\ looking for the code of the package and modifying the +``internal styles'' (the ones not meant to be used directly by the ``common'' +user and prefixed by \verb|chp|) as they like, but at their own risk. + +\section{Examples} + +\tikzset{every node/.style={}} + +Some ``complete'' examples will be presented in order to give a better view +of how the \chemplants\ package works. Both codes and resulting diagrams will be +shown. + +\subsubsection{Some Remarks on the Drawing Procedure} + +If some users want to try and replicate (copy and paste) the examples, they are +free to do that. In this case they will find useful to add some additional macros +to their preambles, some commands I defined during time and that I use +extensively: +\begin{chpcode} + \renewcommand{\vec}[1]{\boldsymbol{#1}} % vector notation + \newcommand{\flow}[1]{\dot{#1}} % flow-rate notation +\end{chpcode} +and which I defined only for easiness of change. Moreover, one of the examples +will use the basic system to parse chemistry notation of the \chemformula\ +package (that, by the way, is an excellent suite for documents dealing with +chemistry). Finally, two macros defined by the Italian option passed to the +\babel\ package: +\begin{chpcode} + \providecommand*{\ap}[1]{% % upright superscripts + \textormath{% + \textsuperscript{#1}% + }% + {% + ^{\mathrm{#1}}% + }% + } + \providecommand*{\ped}[1]{% % upright subscripts + \textormath{% + $_{\mbox{\fontsize\sf@size\z@\selectfont#1}}$% + }% + {% + _\mathrm{#1}% + }% + } +\end{chpcode} + +Before moving on to the real examples it is useful to recall the two main +approaches one can follow to draw the scheme of a chemical process. As a general +rule, it is almost always better to plan the scheme before starting its real +drawing, where ``to plan'' means to decide where to put units, how to connect +them through streams, where signal lines should pass on the scheme, how much +space is required between units and so on. This permits to avoid to reach the end +of the scheme and to realize only too late that it is too large to fit on the +page, when spacing units a little less would have solved the problem. + +Once the plan has been done, it is possible to move to the real construction of +the drawing, but here it is necessary to choose the approach: +\begin{itemize} + \item building the scheme thinking linearly (following the streams) and + calculating by hand the coordinates of the points in which units will + be placed and in which streams will be connected; + \item building the scheme thinking in a more global way, placing units first + and then using their coordinates nodes to connect them through streams + and signals. +\end{itemize} +As told before, the second way requires a little more practice, but the +resulting scheme is much more easy to obtain and flexible to modify (even though +the code can be slightly more complex to read). Anyway, users are free to choose +the approach they like the most, being ready to accept all of its implications. + +In the following examples, both approaches will be shown, but not for the +same code: some of the examples will be structured calculating coordinates by +hand, while the remaining will use nodes. (Readers should use care in deciding to +follow strictly the drawing methods which will be shown in the following codes, +in fact examples are mainly the schemes I had to represent. It is likely that +better ways to draw a scheme can be found.) + +\subsubsection{Hand Calculation of Coordinates} + +\begin{chpcode}[caption=Scheme of a flash process., + label=lst:flash] + \begin{tikzpicture} + \draw[main stream] (-0.5,0) -- (1.5,0); + \node[above right] at (-0.5,0) {$\flow{n}\ap{F}, \vec{z}$}; + \pic at (1.5,0) {centrifugal pump}; + \draw[main stream] (1.5,0.4) -- (3,0.4); + \pic at (3.5,0.4) {heat exchanger}; + \draw[utility stream] (3.5,1.4) -- (3.5,0.9); + \node[above left] at (3.5,0.9) {$\flow{Q}$}; + \draw[utility stream] (3.5,-0.1) -- (3.5,-0.6); + \draw[main stream] (4,0.4) -- (4.8,0.4); + \pic at (5,0.4) {lamination valve}; + \draw[main stream] (5.2,0.4) -- (6,0.4); + \node[above left] at (6,0.4) {$P$}; + \pic at (6.8,0.4) {gas-liquid separator}; + \draw[main stream] (6.8,1.9) |- (9,2.5); + \node[above left] at (9,2.5) {$\flow{n}\ap{V}, \vec{y}$}; + \draw[main stream] (6.8,-1.1) |- (9,-1.7); + \node[below left] at (9,-1.7) {$\flow{n}\ap{L}, \vec{x}$}; + \end{tikzpicture} +\end{chpcode} + +\begin{figure} +\centering +\begin{tikzpicture} + \draw[main stream] (-0.5,0) -- (1.5,0); + \node[above right] at (-0.5,0) {$\flow{n}\ap{F}, \vec{z}$}; + \pic at (1.5,0) {centrifugal pump}; + \draw[main stream] (1.5,0.4) -- (3,0.4); + \pic at (3.5,0.4) {heat exchanger}; + \draw[utility stream] (3.5,1.4) -- (3.5,0.9); + \node[above left] at (3.5,0.9) {$\flow{Q}$}; + \draw[utility stream] (3.5,-0.1) -- (3.5,-0.6); + \draw[main stream] (4,0.4) -- (4.8,0.4); + \pic at (5,0.4) {lamination valve}; + \draw[main stream] (5.2,0.4) -- (6,0.4); + \node[above left] at (6,0.4) {$P$}; + \pic at (6.8,0.4) {gas-liquid separator}; + \draw[main stream] (6.8,1.9) |- (9,2.5); + \node[above left] at (9,2.5) {$\flow{n}\ap{V}, \vec{y}$}; + \draw[main stream] (6.8,-1.1) |- (9,-1.7); + \node[below left] at (9,-1.7) {$\flow{n}\ap{L}, \vec{x}$}; +\end{tikzpicture} +\caption{Scheme of a flash process produced by the \lref{lst:flash} code.} +\label{fig:flash} +\end{figure} + +\begin{chpcode}[caption=Scheme of a countercurrent multiple flash process., + label=lst:mflash] + \begin{tikzpicture} + \draw[main stream] (0.5,0) -- (2,0); + \node[above right] at (0.5,0) + {$\flow{n}\ap{F}, \vec{z}\ap{F}$}; + \pic at (3,0) {tank}; + \draw[main stream] (3,1.5) |- (5,2); + \node[above] at (3,2) + {$\flow{n}\ap{V_\mathit{j + 1}}, + \vec{y}\ap{V_\mathit{j + 1}}$}; + \pic at (6,3) {tank}; + \draw[main stream] (6,4.5) |- (8.333,5) |- (9,2); + \node[above] at (6,5) + {$\flow{n}\ap{V_\mathit{j}}, + \vec{y}\ap{V_\mathit{j}}$}; + \pic at (10,3) {tank}; + \draw[main stream] (10,4.5) |- (12.3,5); + \pic[rotate=180] at (12.5,5) {valve triple=main}; + \draw[main stream] (12.7,5) -- (14,5); + \node[above left] at (14,5) + {$\flow{n}\ap{D}, \vec{y}\ap{D}$}; + \draw[main stream] (12.5,4.8) -- (12.5,4); + \pic[rotate=-90] at (12.5,3.5) {heat exchanger}; + \draw[utility stream] (11.5,3.5) -- (12,3.5); + \draw[utility stream] (13,3.5) -- (13.5,3.5); + \node[above] at (13.5,3.5) {$\flow{Q}\ped{C}$}; + \draw[main stream] (12.5,3) |- (11,2); + \draw[main stream] (10,1.5) |- (7.688,1) |- (7,4); + \node[below] at (10,1) + {$\flow{n}\ap{L_1}, \vec{x}\ap{L_1}$}; + \draw[main stream] (6,1.5) |- (4,1); + \node[below] at (6,1) + {$\flow{n}\ap{L_\mathit{j}}, + \vec{x}\ap{L_\mathit{j}}$}; + \draw[main stream] (3,-1.5) |- (5,-2); + \node[below] at (3,-2) + {$\flow{n}\ap{L_\mathit{k - 1}}, + \vec{x}\ap{L_\mathit{k - 1}}$}; + \pic at (6,-3) {tank}; + \draw[main stream] (6,-4.5) |- (8.333,-5) |- (9,-2); + \node[below] at (6,-5) + {$\flow{n}\ap{L_\mathit{k}}, + \vec{x}\ap{L_\mathit{k}}$}; + \pic at (10,-3) {tank}; + \draw[main stream] (10,-4.5) |- (12.3,-5); + \pic at (12.5,-5) {valve triple=main}; + \draw[main stream] (12.7,-5) -- (14,-5); + \node[below left] at (14,-5) + {$\flow{n}\ap{R}, \vec{x}\ap{R}$}; + \draw[main stream] (12.5,-4.8) -- (12.5,-4); + \pic[rotate=-90] at (12.5,-3.5) {heat exchanger}; + \draw[utility stream] (13.5,-3.5) -- (13,-3.5); + \draw[utility stream] (12,-3.5) -- (11.5,-3.5); + \node[below] at (13.5,-3.5) {$\flow{Q}\ped{B}$}; + \draw[main stream] (12.5,-3) |- (11,-2); + \node[above] at (6,-1) + {$\flow{n}\ap{V_\mathit{k}}, + \vec{y}\ap{V_\mathit{k}}$}; + \draw[main stream] (10,-1.5) |- (7.688,-1) |- (7,-4); + \node[above] at (10,-1) + {$\flow{n}\ap{V_{\mathit{N\ped{T}}}}, + \vec{y}\ap{V_{\mathit{N\ped{T}}}}$}; + \draw[main stream] (6,-1.5) |- (4,-1); + \end{tikzpicture} +\end{chpcode} + +\begin{figure} +\centering +\begin{tikzpicture} + \draw[main stream] (0.5,0) -- (2,0); + \node[above right] at (0.5,0) + {$\flow{n}\ap{F}, \vec{z}\ap{F}$}; + \pic at (3,0) {tank}; + \draw[main stream] (3,1.5) |- (5,2); + \node[above] at (3,2) + {$\flow{n}\ap{V_\mathit{j + 1}}, + \vec{y}\ap{V_\mathit{j + 1}}$}; + \pic at (6,3) {tank}; + \draw[main stream] (6,4.5) |- (8.333,5) |- (9,2); + \node[above] at (6,5) + {$\flow{n}\ap{V_\mathit{j}}, + \vec{y}\ap{V_\mathit{j}}$}; + \pic at (10,3) {tank}; + \draw[main stream] (10,4.5) |- (12.3,5); + \pic[rotate=180] at (12.5,5) {valve triple=main}; + \draw[main stream] (12.7,5) -- (14,5); + \node[above left] at (14,5) + {$\flow{n}\ap{D}, \vec{y}\ap{D}$}; + \draw[main stream] (12.5,4.8) -- (12.5,4); + \pic[rotate=-90] at (12.5,3.5) {heat exchanger}; + \draw[utility stream] (11.5,3.5) -- (12,3.5); + \draw[utility stream] (13,3.5) -- (13.5,3.5); + \node[above] at (13.5,3.5) {$\flow{Q}\ped{C}$}; + \draw[main stream] (12.5,3) |- (11,2); + \draw[main stream] (10,1.5) |- (7.688,1) |- (7,4); + \node[below] at (10,1) + {$\flow{n}\ap{L_1}, \vec{x}\ap{L_1}$}; + \draw[main stream] (6,1.5) |- (4,1); + \node[below] at (6,1) + {$\flow{n}\ap{L_\mathit{j}}, + \vec{x}\ap{L_\mathit{j}}$}; + \draw[main stream] (3,-1.5) |- (5,-2); + \node[below] at (3,-2) + {$\flow{n}\ap{L_\mathit{k - 1}}, + \vec{x}\ap{L_\mathit{k - 1}}$}; + \pic at (6,-3) {tank}; + \draw[main stream] (6,-4.5) |- (8.333,-5) |- (9,-2); + \node[below] at (6,-5) + {$\flow{n}\ap{L_\mathit{k}}, + \vec{x}\ap{L_\mathit{k}}$}; + \pic at (10,-3) {tank}; + \draw[main stream] (10,-4.5) |- (12.3,-5); + \pic at (12.5,-5) {valve triple=main}; + \draw[main stream] (12.7,-5) -- (14,-5); + \node[below left] at (14,-5) + {$\flow{n}\ap{R}, \vec{x}\ap{R}$}; + \draw[main stream] (12.5,-4.8) -- (12.5,-4); + \pic[rotate=-90] at (12.5,-3.5) {heat exchanger}; + \draw[utility stream] (13.5,-3.5) -- (13,-3.5); + \draw[utility stream] (12,-3.5) -- (11.5,-3.5); + \node[below] at (13.5,-3.5) {$\flow{Q}\ped{B}$}; + \draw[main stream] (12.5,-3) |- (11,-2); + \node[above] at (6,-1) + {$\flow{n}\ap{V_\mathit{k}}, + \vec{y}\ap{V_\mathit{k}}$}; + \draw[main stream] (10,-1.5) |- (7.688,-1) |- (7,-4); + \node[above] at (10,-1) + {$\flow{n}\ap{V_{\mathit{N\ped{T}}}}, + \vec{y}\ap{V_{\mathit{N\ped{T}}}}$}; + \draw[main stream] (6,-1.5) |- (4,-1); +\end{tikzpicture} +\caption{Scheme of a countercurrent multiple flash process produced by the + \lref{lst:mflash} code.} +\label{fig:mflash} +\end{figure} + +\begin{chpcode}[caption=Scheme of a continuous distillation process., + label=lst:distil] + \begin{tikzpicture} + \draw [main stream] (-2,0) -- (-0.5,0); + \node[above right] at (-2,0) + {$\flow{n}\ap{F}, \vec{z}\ap{F}$}; + \pic at (0,0) {column=trayed}; + \pic at (1.5,3.5) {condenser}; + \draw [main stream] (0,3) |- (1,3.5); + \node [above right] at (0,3.5) {$\flow{n}\ap{V}$}; + \draw [main stream] (1.5,4) |- (3,4.5); + \node[above left] at (3,4.5) + {$\flow{n}\ap{D}, \vec{y}\ap{D}$}; + \draw [secondary stream] (1.5,3) |- (0.5,2.6); + \node [below left] at (1.5,2.6) {$\flow{n}\ap{L}$}; + \pic at (1.5,-3.5) {boiler}; + \draw [main stream] (0,-3) |- (1,-3.5); + \node [below right] at (0,-3.5) {$\flow{n}\ap{L'}$}; + \draw [main stream] (1.5,-4) |- (3,-4.5); + \node[below left] at (3,-4.5) + {$\flow{n}\ap{R}, \vec{x}\ap{R}$}; + \draw [secondary stream] (1.5,-3) |- (0.5,-2.6); + \node [above left] at (1.5,-2.6) {$\flow{n}\ap{V'}$}; + \end{tikzpicture} +\end{chpcode} + +\begin{figure} +\centering +\begin{tikzpicture} + \draw [main stream] (-2,0) -- (-0.5,0); + \node[above right] at (-2,0) + {$\flow{n}\ap{F}, \vec{z}\ap{F}$}; + \pic at (0,0) {column=trayed}; + \pic at (1.5,3.5) {condenser}; + \draw [main stream] (0,3) |- (1,3.5); + \node [above right] at (0,3.5) {$\flow{n}\ap{V}$}; + \draw [main stream] (1.5,4) |- (3,4.5); + \node[above left] at (3,4.5) + {$\flow{n}\ap{D}, \vec{y}\ap{D}$}; + \draw [secondary stream] (1.5,3) |- (0.5,2.6); + \node [below left] at (1.5,2.6) {$\flow{n}\ap{L}$}; + \pic at (1.5,-3.5) {boiler}; + \draw [main stream] (0,-3) |- (1,-3.5); + \node [below right] at (0,-3.5) {$\flow{n}\ap{L'}$}; + \draw [main stream] (1.5,-4) |- (3,-4.5); + \node[below left] at (3,-4.5) + {$\flow{n}\ap{R}, \vec{x}\ap{R}$}; + \draw [secondary stream] (1.5,-3) |- (0.5,-2.6); + \node [above left] at (1.5,-2.6) {$\flow{n}\ap{V'}$}; +\end{tikzpicture} +\caption{Scheme of a continuous distillation process produced by the + \lref{lst:distil} code.} +\label{fig:distil} +\end{figure} + +The following is the very first usage I did of \chemplants\ (when it was just a +foggy idea), and, probably, still the most complex one. In this scheme, I had +the need to represent sensors on valves, so I used the \chpp{actuator} pic to +this aim. + +\begin{chpcode}[caption=Complete \ac{PFD} of a vanadium redox flow battery pilot +plant., label=lst:vrfbis] + \begin{tikzpicture}[font=\footnotesize] + % Positive Electrolyte + % tank outlet + \pic at (3,3.5) {tank}; + \node[align=center] at (3,4) {Positive\\ Electrolyte}; + \node at (3,3) {\ch{VO2+}/\ch{VO^2+}}; + \draw[main stream] (3,2) -- (3,1.7); + \pic[rotate=90] at (3,1.5) {valve triple=main}; + \draw[main stream] (3,1.3) |- (2,0.6); + \pic at (2,0.6) {centrifugal pump}; + \draw[main stream] (2,1) -| (1,1.3); + \pic[rotate=270] at (1,1.5) {valve triple=main}; + % pump recycle + \draw[secondary stream] (1.2,1.5) -- (1.8,1.5); + \pic at (2,1.5) {valve=secondary}; + \node[above] at (2,1.5) {$V\ped{P}^+$}; + \draw[secondary stream] (2.2,1.5) -- (2.8,1.5); + % battery stream + \draw[main stream] (1,1.7) -- (1,3); + \pic at (1,3.5) {instrument=FM}; + \draw[main stream] (1,4) -- (1,5.3); + \draw[signal] (0.5,3.5) -| (0.25,2.5); + \pic at (0.25,2) {controller=PID}; + \draw[signal] (0.25,1.5) |- (1.6,0.6); + \pic[rotate=90] at (1,5.5) {valve=main}; + \node[right] at (1,5.5) {$V_1^+$}; + \draw[main stream] (1, 5.7) |- (2.8,6.9); + \pic[rotate=90] at (3,6.9) {valve triple=main}; + \draw[main stream] (3,7.1) |- (6.2,7.5); + \pic at (4,8.5) {instrument=TM}; + \draw[short signal] (4,8) -- (4,7.5); + % battery bypass + \draw[secondary stream] (3,6.7) -- (3,6.4); + \pic[rotate=270] at (3,6.2) {valve=secondary}; + \pic[rotate=270] at (3,6.2) {actuator}; + \node[left] at (3,6.2) {$V\ped{B}^+$}; + \draw[secondary stream] (3,6) -- (3,5.7); + % battery outlet + \draw[main stream] (8,7) |- (5.2,5.5); + \pic at (6,4.5) {instrument=TM}; + \draw [short signal] (6,5) -- (6,5.5); + \pic at (5,5.5) {valve=main}; + \pic at (5,5.5) {actuator}; + \node[below] at (5,5.5) {$V_2^+$}; + \draw[main stream] (4.8,5.5) -- (3.2,5.5); + \pic at (5,6.5) {instrument=PM}; + \draw[short signal] (5,7) -- (5,7.5); + \draw[signal] (5.5,6.5) -- (7,6.5); + % tank inlet + \pic[rotate=270] at (3,5.5) {valve triple=main}; + \draw[main stream] (3,5.3) -- (3,5); + % Negative Electrolyte + % tank outlet + \pic at (12,3.5) {tank}; + \node[align=center] at (12,4) {Negative\\ Electrolyte}; + \node at (12,3) {\ch{V^3+}/\ch{V^2+}}; + \draw[main stream] (12,2) -- (12,1.7); + \pic[rotate=270] at (12,1.5) {valve triple=main}; + \draw[main stream] (12,1.3) |- (13,0.6); + \pic at (13,0.6) {centrifugal pump}; + \draw[main stream] (13,1) -| (14,1.3); + \pic[rotate=90] at (14,1.5) {valve triple=main}; + % pump recycle + \draw[secondary stream] (13.8,1.5) -- (13.2,1.5); + \pic at (13,1.5) {valve=secondary}; + \node[above] at (13,1.5) {$V\ped{P}^-$}; + \draw[secondary stream] (12.8,1.5) -- (12.2,1.5); + % battery stream + \draw[main stream] (14,1.7) -- (14,3); + \pic at (14,3.5) {instrument=FM}; + \draw[main stream] (14,4) -- (14,5.3); + \draw[signal] (14.5,3.5) -| (14.75,2.5); + \pic at (14.75,2) {controller=PID}; + \draw[signal] (14.75,1.5) |- (13.4,0.6); + \pic[rotate=90] at (14,5.5) {valve=main}; + \node[left] at (14,5.5) {$V_1^-$}; + \draw[main stream] (14, 5.7) |- (12.2,6.9); + \pic[rotate=270] at (12,6.9) {valve triple=main}; + \draw[main stream] (12,7.1) |- (8.8,7.5); + \pic at (11,8.5) {instrument=TM}; + \draw[short signal] (11,8) -- (11,7.5); + % battery bypass + \draw[secondary stream] (12,6.7) -- (12,6.4); + \pic[rotate=90] at (12,6.2) {valve=secondary}; + \pic[rotate=90] at (12,6.2) {actuator}; + \node[right] at (12,6.2) {$V\ped{B}^-$}; + \draw[secondary stream] (12,6) -- (12,5.7); + % battery outlet + \draw[main stream] (7,7) |- (8.5,5) |- (9.8,5.5); + \pic at (9,4.5) {instrument=TM}; + \draw[short signal] (9,5) -- (9,5.5); + \pic at (10,5.5) {valve=main}; + \pic at (10,5.5) {actuator}; + \node[below] at (10,5.5) {$V_2^-$}; + \draw[main stream] (10.2,5.5) -- (11.8,5.5); + \pic at (10,6.5) {instrument=PM}; + \draw[short signal] (10,7) -- (10,7.5); + \draw[signal] (9.5,6.5) -- (8,6.5); + % tank inlet + \pic[rotate=90] at (12,5.5) {valve triple=main}; + \draw[main stream] (12,5.3) -- (12,5); + % Battery + % block structure + \draw[thick] (6,7) rectangle (9, 9.6); + \node[above] at (7.5,9.6) {Battery}; + % positive main stream + \pic at (6.2,7.5) {input}; + \draw[main stream, hidden stream] + (6.2,7.55) |- (7.8,9.2) |- (7.95,8.5); + \pic at (8,8.5) {output}; + \draw[main stream] (8,8.5) -- (8.3,8.5); + \pic[rotate=90] at (8.5,8.5) {valve triple=main}; + \pic[rotate=270] at (8.5,8.5) {actuator}; + \draw[main stream] (8.5,8.3) |- (8,8); + \pic at (8,8) {input}; + \draw[main stream, hidden stream] (8,7.95) -- (8,7.7); + \pic[rotate=90, hidden component] at (8,7.5) + {valve triple=main}; + \draw[main stream, hidden stream] (8,7.3) -- (8,7); + % negative main stream + \pic at (8.8,7.5) {input}; + \draw[main stream, hidden stream] + (8.8,7.55) |- (7.2,9.4) |- (7.05,8.5); + \pic at (7,8.5) {output}; + \draw[main stream] (7,8.5) -- (6.7,8.5); + \pic[rotate=270] at (6.5,8.5) {valve triple=main}; + \pic[rotate=90] at (6.5,8.5) {actuator}; + \draw[main stream] (6.5,8.3) |- (7,8); + \pic at (7,8) {input}; + \draw[main stream, hidden stream] (7,7.95) -- (7,7.7); + \pic[rotate=270, hidden component] at (7,7.5) + {valve triple=main}; + \draw[main stream, hidden stream] (7,7.3) -- (7,7); + % positive to negative remixing + \draw[secondary stream, color=red] (8.5,8.7) |- (8,9); + \pic at (8,9) {input}; + \draw[secondary stream, hidden stream, color=red] + (7.95,9) -| (7.4,7.5) -- (7.2,7.5); + % negative to positive remixing + \draw[secondary stream, color=red] (6.5,8.7) |- (7,9); + \pic at (7,9) {input}; + \draw[secondary stream, hidden stream, color=red] + (7,8.95) |- (7.6,8.75) |- (7.8,7.5); + % Tanks Connection + \draw (4,2.585) -- (7.3,2.585); + \pic at (7.5,2.585) {valve=secondary}; + \node[below] at (7.5,2.585) {$V\ped{C}$}; + \draw (7.7,2.585) -- (11,2.585); + \end{tikzpicture} +\end{chpcode} + +\begin{figure} +\centering +\begin{tikzpicture}[font=\footnotesize] +% Positive Electrolyte + % tank outlet + \pic at (3,3.5) {tank}; + \node[align=center] at (3,4) {Positive\\ Electrolyte}; + \node at (3,3) {\ch{VO2+}/\ch{VO^2+}}; + \draw[main stream] (3,2) -- (3,1.7); + \pic[rotate=90] at (3,1.5) {valve triple=main}; + \draw[main stream] (3,1.3) |- (2,0.6); + \pic at (2,0.6) {centrifugal pump}; + \draw[main stream] (2,1) -| (1,1.3); + \pic[rotate=270] at (1,1.5) {valve triple=main}; + % pump recycle + \draw[secondary stream] (1.2,1.5) -- (1.8,1.5); + \pic at (2,1.5) {valve=secondary}; + \node[above] at (2,1.5) {$V\ped{P}^+$}; + \draw[secondary stream] (2.2,1.5) -- (2.8,1.5); + % battery stream + \draw[main stream] (1,1.7) -- (1,3); + \pic at (1,3.5) {instrument=FM}; + \draw[main stream] (1,4) -- (1,5.3); + \draw[signal] (0.5,3.5) -| (0.25,2.5); + \pic at (0.25,2) {controller=PID}; + \draw[signal] (0.25,1.5) |- (1.6,0.6); + \pic[rotate=90] at (1,5.5) {valve=main}; + \node[right] at (1,5.5) {$V_1^+$}; + \draw[main stream] (1, 5.7) |- (2.8,6.9); + \pic[rotate=90] at (3,6.9) {valve triple=main}; + \draw[main stream] (3,7.1) |- (6.2,7.5); + \pic at (4,8.5) {instrument=TM}; + \draw[short signal] (4,8) -- (4,7.5); + % battery bypass + \draw[secondary stream] (3,6.7) -- (3,6.4); + \pic[rotate=270] at (3,6.2) {valve=secondary}; + \pic[rotate=270] at (3,6.2) {actuator}; + \node[left] at (3,6.2) {$V\ped{B}^+$}; + \draw[secondary stream] (3,6) -- (3,5.7); + % battery outlet + \draw[main stream] (8,7) |- (5.2,5.5); + \pic at (6,4.5) {instrument=TM}; + \draw [short signal] (6,5) -- (6,5.5); + \pic at (5,5.5) {valve=main}; + \pic at (5,5.5) {actuator}; + \node[below] at (5,5.5) {$V_2^+$}; + \draw[main stream] (4.8,5.5) -- (3.2,5.5); + \pic at (5,6.5) {instrument=PM}; + \draw[short signal] (5,7) -- (5,7.5); + \draw[signal] (5.5,6.5) -- (7,6.5); + % tank inlet + \pic[rotate=270] at (3,5.5) {valve triple=main}; + \draw[main stream] (3,5.3) -- (3,5); +% Negative Electrolyte + % tank outlet + \pic at (12,3.5) {tank}; + \node[align=center] at (12,4) {Negative\\ Electrolyte}; + \node at (12,3) {\ch{V^3+}/\ch{V^2+}}; + \draw[main stream] (12,2) -- (12,1.7); + \pic[rotate=270] at (12,1.5) {valve triple=main}; + \draw[main stream] (12,1.3) |- (13,0.6); + \pic at (13,0.6) {centrifugal pump}; + \draw[main stream] (13,1) -| (14,1.3); + \pic[rotate=90] at (14,1.5) {valve triple=main}; + % pump recycle + \draw[secondary stream] (13.8,1.5) -- (13.2,1.5); + \pic at (13,1.5) {valve=secondary}; + \node[above] at (13,1.5) {$V\ped{P}^-$}; + \draw[secondary stream] (12.8,1.5) -- (12.2,1.5); + % battery stream + \draw[main stream] (14,1.7) -- (14,3); + \pic at (14,3.5) {instrument=FM}; + \draw[main stream] (14,4) -- (14,5.3); + \draw[signal] (14.5,3.5) -| (14.75,2.5); + \pic at (14.75,2) {controller=PID}; + \draw[signal] (14.75,1.5) |- (13.4,0.6); + \pic[rotate=90] at (14,5.5) {valve=main}; + \node[left] at (14,5.5) {$V_1^-$}; + \draw[main stream] (14, 5.7) |- (12.2,6.9); + \pic[rotate=270] at (12,6.9) {valve triple=main}; + \draw[main stream] (12,7.1) |- (8.8,7.5); + \pic at (11,8.5) {instrument=TM}; + \draw[short signal] (11,8) -- (11,7.5); + % battery bypass + \draw[secondary stream] (12,6.7) -- (12,6.4); + \pic[rotate=90] at (12,6.2) {valve=secondary}; + \pic[rotate=90] at (12,6.2) {actuator}; + \node[right] at (12,6.2) {$V\ped{B}^-$}; + \draw[secondary stream] (12,6) -- (12,5.7); + % battery outlet + \draw[main stream] (7,7) |- (8.5,5) |- (9.8,5.5); + \pic at (9,4.5) {instrument=TM}; + \draw[short signal] (9,5) -- (9,5.5); + \pic at (10,5.5) {valve=main}; + \pic at (10,5.5) {actuator}; + \node[below] at (10,5.5) {$V_2^-$}; + \draw[main stream] (10.2,5.5) -- (11.8,5.5); + \pic at (10,6.5) {instrument=PM}; + \draw[short signal] (10,7) -- (10,7.5); + \draw[signal] (9.5,6.5) -- (8,6.5); + % tank inlet + \pic[rotate=90] at (12,5.5) {valve triple=main}; + \draw[main stream] (12,5.3) -- (12,5); +% Battery + % block structure + \draw[thick] (6,7) rectangle (9, 9.6); + \node[above] at (7.5,9.6) {Battery}; + % positive main stream + \pic at (6.2,7.5) {input}; + \draw[main stream, hidden stream] + (6.2,7.55) |- (7.8,9.2) |- (7.95,8.5); + \pic at (8,8.5) {output}; + \draw[main stream] (8,8.5) -- (8.3,8.5); + \pic[rotate=90] at (8.5,8.5) {valve triple=main}; + \pic[rotate=270] at (8.5,8.5) {actuator}; + \draw[main stream] (8.5,8.3) |- (8,8); + \pic at (8,8) {input}; + \draw[main stream, hidden stream] (8,7.95) -- (8,7.7); + \pic[rotate=90, hidden component] at (8,7.5) + {valve triple=main}; + \draw[main stream, hidden stream] (8,7.3) -- (8,7); + % negative main stream + \pic at (8.8,7.5) {input}; + \draw[main stream, hidden stream] + (8.8,7.55) |- (7.2,9.4) |- (7.05,8.5); + \pic at (7,8.5) {output}; + \draw[main stream] (7,8.5) -- (6.7,8.5); + \pic[rotate=270] at (6.5,8.5) {valve triple=main}; + \pic[rotate=90] at (6.5,8.5) {actuator}; + \draw[main stream] (6.5,8.3) |- (7,8); + \pic at (7,8) {input}; + \draw[main stream, hidden stream] (7,7.95) -- (7,7.7); + \pic[rotate=270, hidden component] at (7,7.5) + {valve triple=main}; + \draw[main stream, hidden stream] (7,7.3) -- (7,7); + % positive to negative remixing + \draw[secondary stream, color=red] (8.5,8.7) |- (8,9); + \pic at (8,9) {input}; + \draw[secondary stream, hidden stream, color=red] + (7.95,9) -| (7.4,7.5) -- (7.2,7.5); + % negative to positive remixing + \draw[secondary stream, color=red] (6.5,8.7) |- (7,9); + \pic at (7,9) {input}; + \draw[secondary stream, hidden stream, color=red] + (7,8.95) |- (7.6,8.75) |- (7.8,7.5); +% Tanks Connection + \draw (4,2.585) -- (7.3,2.585); + \pic at (7.5,2.585) {valve=secondary}; + \node[below] at (7.5,2.585) {$V\ped{C}$}; + \draw (7.7,2.585) -- (11,2.585); +\end{tikzpicture} +\caption{Complete \ac{PFD} of a vanadium redox flow battery pilot plant produced + by the \lref{lst:vrfbis} code.} +\label{fig:vrfbis} +\end{figure} + +\subsubsection{Usage of Nodes} + +Starting from the next example, the second way outlined in the introduction to +the examples will be used to draw schemes: units placement first and nodes usage +to connect streams. + +\begin{chpcode}[caption=Scheme of an absorption process with solvent + regeneration through steam stripping., + label=lst:absstr] + \begin{tikzpicture}[font=\footnotesize] + % Units Placement and Labelling + \pic (absorption tower) at (2,4) {column=packed}; + \pic (stripping tower) at (10,4) {column=packed}; + \pic (mid heat exchanger) at (6,4) {heat exchanger}; + \pic (cooler) at (4,6.6) {heat exchanger}; + \pic (heater) at (7,6.6) {heat exchanger}; + \pic (pump) at (8.5,0.6) {centrifugal pump}; + \pic (lamination valve) at (8.5,6.6) {lamination valve}; + \node[above, rotate=-90, align=center] at + (absorption tower-right) + {absorption tower}; + \node[above, rotate=-90, align=center] at + (stripping tower-right) + {stripping tower}; + \node[left=5] at (mid heat exchanger-bottom) + {heat integration}; + \node[below] at (lamination valve-anchor) + {expansion}; + \node[below right] at (pump-right) + {compression}; + % Main Streams Connections and Labelling + \draw[main stream] (0,1.4) -- + (absorption tower-bottom left); + \node[below left] at (absorption tower-bottom left) + {dirty gas}; + \draw[main stream] (0,6.6) -- + (absorption tower-top left); + \node[below left] at (absorption tower-top left) + {solvent make-up}; + \draw[main stream] (absorption tower-top) -- ++(0,1); + \node[above left] at (absorption tower-top) + {clean gas}; + \draw[main stream] (absorption tower-bottom) -- + ++(0,-0.5) -| (mid heat exchanger-bottom); + \node[below right] at (absorption tower-bottom) + {dirty solvent}; + \draw[main stream] (mid heat exchanger-top) |- + (heater-internal tubes left); + \draw[main stream] (heater-internal tubes right) -- + (lamination valve-inlet); + \draw[main stream] (lamination valve-outlet) -- + (stripping tower-top left); + \draw[main stream] (stripping tower-bottom) |- + (pump-anchor); + \node[below right] at (stripping tower-bottom) + {clean solvent}; + \draw[main stream] (pump-left) |- + (mid heat exchanger-internal tubes right); + \draw[main stream] + (mid heat exchanger-internal tubes left) -- + ++(-0.5,0) |- (cooler-internal tubes right); + \draw[main stream] (cooler-internal tubes left) -- + (absorption tower-top right); + \draw[main stream] (12,1.4) -- + (stripping tower-bottom right); + \node[above right] at (stripping tower-bottom right) + {clean steam}; + \draw[main stream] (stripping tower-top) |- ++(2,0.5); + \node[above right] at (stripping tower-top) + {dirty steam}; + % Utility Streams Connections and Labelling + \draw[utility stream] (4,7.6) -- (cooler-top); + \node[above right] at (cooler-top) + {cooling water}; + \draw[utility stream] (cooler-bottom) -- (4,5.6); + \draw[utility stream] (7,7.6) -- (heater-top); + \node[above right] at (heater-top) + {heating steam}; + \draw[utility stream] (heater-bottom) -- (7,5.6); + \end{tikzpicture} +\end{chpcode} + +\begin{figure} +\centering +\begin{tikzpicture}[font=\footnotesize] +% Units Placement and Labelling + \pic (absorption tower) at (2,4) {column=packed}; + \pic (stripping tower) at (10,4) {column=packed}; + \pic (mid heat exchanger) at (6,4) {heat exchanger}; + \pic (cooler) at (4,6.6) {heat exchanger}; + \pic (heater) at (7,6.6) {heat exchanger}; + \pic (pump) at (8.5,0.6) {centrifugal pump}; + \pic (lamination valve) at (8.5,6.6) {lamination valve}; + \node[above, rotate=-90, align=center] at + (absorption tower-right) + {absorption tower}; + \node[above, rotate=-90, align=center] at + (stripping tower-right) + {stripping tower}; + \node[left=5] at (mid heat exchanger-shell bottom) + {heat integration}; + \node[below] at (lamination valve-anchor) + {expansion}; + \node[below] at (pump-bottom) + {compression}; +% Main Streams Connections and Labelling + \draw[main stream] (0,1.4) -- + (absorption tower-bottom left); + \node[below left] at (absorption tower-bottom left) + {dirty gas}; + \draw[main stream] (0,6.6) -- + (absorption tower-top left); + \node[below left] at (absorption tower-top left) + {solvent make-up}; + \draw[main stream] (absorption tower-top) -- ++(0,1); + \node[above left] at (absorption tower-top) + {clean gas}; + \draw[main stream] (absorption tower-bottom) -- + ++(0,-0.5) -| (mid heat exchanger-shell bottom); + \node[below right] at (absorption tower-bottom) + {dirty solvent}; + \draw[main stream] (mid heat exchanger-shell top) |- + (heater-pipes left); + \draw[main stream] (heater-pipes right) -- + (lamination valve-inlet); + \draw[main stream] (lamination valve-outlet) -- + (stripping tower-top left); + \draw[main stream] (stripping tower-bottom) |- + (pump-anchor); + \node[below right] at (stripping tower-bottom) + {clean solvent}; + \draw[main stream] (pump-left) |- + (mid heat exchanger-pipes right); + \draw[main stream] + (mid heat exchanger-pipes left) -- + ++(-0.5,0) |- (cooler-pipes right); + \draw[main stream] (cooler-pipes left) -- + (absorption tower-top right); + \draw[main stream] (12,1.4) -- + (stripping tower-bottom right); + \node[above right] at (stripping tower-bottom right) + {clean steam}; + \draw[main stream] (stripping tower-top) |- ++(2,0.5); + \node[above right] at (stripping tower-top) + {dirty steam}; +% Utility Streams Connections and Labelling + \draw[utility stream] (4,7.6) -- (cooler-shell top); + \node[above right] at (cooler-shell top) + {cooling water}; + \draw[utility stream] (cooler-shell bottom) -- (4,5.6); + \draw[utility stream] (7,7.6) -- (heater-shell top); + \node[above right] at (heater-shell top) + {heating steam}; + \draw[utility stream] (heater-shell bottom) -- (7,5.6); +\end{tikzpicture} +\caption{Scheme of an absorption process with solvent regeneration through steam + stripping produced by the \lref{lst:absstr} code.} +\label{fig:absstr} +\end{figure} + +\section{What Happens Next} + +As conceived, \chemplants\ is just a toolbox to draw in an easier way chemical +process schematics, but a lot of tools are still missing in the box. + +At the time of the first writing of this documentation, only symbols and styles +I had the need to use were defined. In the future, a lot of new units will +be defined, but this is a work that will require time and study, so it will be +done step by step. I have a list of the ``most commonly used'' units to +define, but users are free (and invited) to send suggestion about new units +which they would like to see in the \chemplants\ palette. + +Besides the mentioned modifications, I am always opened to suggestions which can +improve the functionality and usability of \chemplants. Users who have something +to suggest, find errors and bugs or are simply happy to use this package can +contact me writing to \mail{elia24913@me.com} and possibly placing +``\chemplants'' into the object field. I will be very grateful to these users. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Bibliography + +\printbibliography[heading=bibintoc] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} % Document End
\ No newline at end of file diff --git a/graphics/pgf/contrib/chemplants/chemplants.sty b/graphics/pgf/contrib/chemplants/chemplants.sty new file mode 100644 index 0000000000..460078dd53 --- /dev/null +++ b/graphics/pgf/contrib/chemplants/chemplants.sty @@ -0,0 +1,1758 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% chemplants.sty +%% Copyright 2018-2019 Elia Arnese Feffin +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Elia Arnese Feffin. +% The Current Maintainer can be reached at the e-mail: elia24913@me.com. +% +% This work consists of the files chemplants.sty, chemplants-doc.tex +% and chemplants-changes.tex, together with the derived files +% chemplants-doc.pdf and chemplants-changes.pdf. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%:File chemplants.sty +\NeedsTeXFormat{LaTeX2e} +\def\chpversion{0.9.8} +\def\chpdate{2019/11/19} +\ProvidesPackage{chemplants}[% + 2019/11/19 v0.9.8 Symbology to draw chemical plants with TikZ% +] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Packages Loading + +\RequirePackage{ifthen} % If-Then Logic +\RequirePackage{tikz} % The Mother of Them All + \usetikzlibrary{decorations.markings} % Patch Patterns + \usetikzlibrary{hobby} % Hobby's Algorithm + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Definitions, Parameters and Commands + +%: Default Parameters +\def\chp@StreamTip{stealth} % Stream Tip +\def\chp@MainStreamThickness{semithick} % Main Stream Thickness +\def\chp@SecondaryStreamThickness{thin} % Secondary Stream Thickness +\def\chp@UtilityStreamThickness{very thin} % Utility Stream Thickness +\def\chp@UnitThickness{thick} % Unit Thickness +\def\chp@UnitScale{1} % Unit Scale +\def\chp@SignalThickness{very thin} % Signal Thickness +\def\chp@HiddenStreamStyle{dashed} % Hidden Stream +\def\chp@HiddenComponentStyle{densely dotted} % Hidden Component +\def\chp@MeasureColor{gray} % Measure Color +\def\chp@MeasureTip{|} % Measure Tip +\def\chp@MeasureThickness{thin} % Measure Thickness +\def\chp@MeasureFontSize{\footnotesize} % Measure Font Size +\def\chp@InstrumentThickness{thin} % Instrument Thickness +\def\chp@InstrumentScale{1} % Instrument Scale +\def\chp@InstrumentFontSize{\footnotesize} % Instrument Font Size +\def\chp@BlockThickness{thick} % Block Thickness +\def\chp@BlockScale{1} % Block Scale +\def\chp@BlockFontSize{\footnotesize} % Block Font Size + +%: Commands to Set Parameters +\newcommand*{\setchpstreamtip}[1]{% % Stream Tip + \gdef\chp@StreamTip{#1}% +} +\newcommand*{\setchpmainstreamthickness}[1]{% % Main Stream Thickness + \gdef\chp@MainStreamThickness{#1}% +} +\newcommand*{\setchpsecondarystreamthickness}[1]{% % Secondary Stream Thickness + \gdef\chp@MainStreamThickness{#1}% +} +\newcommand*{\setchputilitystreamthickness}[1]{% % Utility Stream Thickness + \gdef\chp@UtilityStreamThickness{#1}% +} +\newcommand*{\setchpunitthickness}[1]{% % Unit Thickness + \gdef\chp@UnitThickness{#1}% +} +\newcommand*{\setchpunitscale}[1]{% % Unit Scale + \gdef\chp@UnitScale{#1}% +} +\newcommand*{\setchpsignalthickness}[1]{% % Signal Thickness + \gdef\chp@SignalThickness{#1}% +} +\newcommand*{\setchphiddenstreamstyle}[1]{% % Hidden Stream Style + \gdef\chp@HiddenStreamStyle{#1}% +} +\newcommand*{\setchphiddencomponentstyle}[1]{% % Hidden Component Style + \gdef\chp@HiddenComponentStyle{#1}% +} +\newcommand*{\setchpmeasurecolor}[1]{% % Measure Color + \gdef\chp@MeasureColor{#1}% +} +\newcommand*{\setchpmeasuretip}[1]{% % Measure Tip + \gdef\chp@MeasureTip{#1}% +} +\newcommand*{\setchpmeasurethickness}[1]{% % Measure Thickness + \gdef\chp@MeasureThickness{#1}% +} +\newcommand*{\setchpmeasurefontsize}[1]{% % Measure + \gdef\chp@MeasureFontSize{#1}% +} +\newcommand*{\setchpinstrumentthickness}[1]{% % Instrument Thickness + \gdef\chp@InstrumentThickness{#1}% +} +\newcommand*{\setchpinstrumentscale}[1]{% % Instrument Scale + \gdef\chp@InstrumentScale{#1}% +} +\newcommand*{\setchpinstrumentfontsize}[1]{% % Instrument Font Size + \gdef\chp@InstrumentFontSize{#1}% +} +\newcommand*{\setchpblockthickness}[1]{% % Block Thickness + \gdef\chp@BlockThickness{#1}% +} +\newcommand*{\setchpblockscale}[1]{% % Block Scale + \gdef\chp@BlockScale{#1}% +} +\newcommand*{\setchpblockfontsize}[1]{% % Block Font Size + \gdef\chp@BlockFontSize{#1}% +} + +%: Measure Command +\newcommand*{\measure}[4][below]{% + \draw [chpmeasure] #2 -- #3 + node [pos=0.5,sloped,#1,font=\chp@MeasureFontSize] {#4};% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Styles for Streams, Units and Signals + +%: Main Stream +\tikzset{main stream/.style=% + {% + -\chp@StreamTip,% + \chp@MainStreamThickness,% + }% +} + +%: Secondary Stream +\tikzset{secondary stream/.style=% + {% + -\chp@StreamTip,% + \chp@SecondaryStreamThickness,% + }% +} + +%: Utility Stream +\tikzset{utility stream/.style=% + {% + -\chp@StreamTip,% + \chp@UtilityStreamThickness, + }% +} + +%: Process Unit +\tikzset{chpunitstyle/.style=% + {% + \chp@UnitThickness,% + scale=\chp@UnitScale% + }% +} + +%: Signal +\tikzset{signal/.style=% + {% + \chp@SignalThickness,% + decoration={% + markings, mark=between positions 5mm and (1-5mm) step 5mm with{% + \draw [\chp@SignalThickness] (-2pt,2pt) -- (2pt,-2pt); + \draw [\chp@SignalThickness] (-1pt,2pt) -- (3pt,-2pt); + }% + }, postaction={decorate}% + }% +} + +%: Short Signal +\tikzset{short signal/.style=% + {% + \chp@SignalThickness,% + decoration={% + markings, mark=at position 0.5 with{% + \draw [\chp@SignalThickness] (-2pt,2pt) -- (2pt,-2pt); + \draw [\chp@SignalThickness] (-1pt,2pt) -- (3pt,-2pt);% + }% + }, postaction={decorate}% + }% +} + +%: Hidden Stream +\tikzset{hidden stream/.style=% + {% + \chp@HiddenStreamStyle% + }% +} + +%: Hidden Component +\tikzset{hidden component/.style=% + {% + \chp@HiddenComponentStyle% + }% +} + +%: Measure +\tikzset{chpmeasure/.style=% + {% + draw=\chp@MeasureColor,% + \chp@MeasureTip-\chp@MeasureTip,% + \chp@MeasureThickness% + }% +} + +%: Instrument +\tikzset{chpinstrumentstyle/.style=% + {% + \chp@InstrumentThickness,% + scale=\chp@InstrumentScale% + }% +} + +%: Block +\tikzset{chpblockstyle/.style=% + {% + \chp@BlockThickness,% + scale=\chp@BlockScale% + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Process Units + +%: Fluids and Solids Storage +%: Tank +\tikzset{tank/.pic=% + {% + \draw [chpunitstyle] + (-1,-0.915) to [out=270,in=270] + (1,-0.915) -- + (1,0.915) to [out=90,in=90] + (-1,0.915) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1,0); + \coordinate (-bottom left) at (-1,-0.915); + \coordinate (-bottom) at (0,-1.5); + \coordinate (-bottom right) at (1,-0.915); + \coordinate (-right) at (1,0); + \coordinate (-top right) at (1,0.915); + \coordinate (-top) at (0,1.5); + \coordinate (-top left) at (-1,0.915); + \end{scope} + }% +} +%: Cone Tank +\tikzset{cone tank/.pic=% + {% + \draw [chpunitstyle] + (-1.5,-1.5) -- + (1.5,-1.5) -- + (1.5,1.1) -- + (0,1.5) -- + (-1.5,1.1) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom left) at (-1.5,-1.4); + \coordinate (-bottom) at (0,-1.5); + \coordinate (-bottom right) at (1.5,-1.4); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.5,1.1); + \coordinate (-top) at (0,1.5); + \coordinate (-top left) at (-1.5,1.1); + \end{scope} + }% +} +%: Dome Tank +\tikzset{dome tank/.pic=% + {% + \draw [chpunitstyle] + (-1.5,-1.5) -- + (1.5,-1.5) -- + (1.5,0.7) to [out=90,in=0] + (0,1.5) to [out=180,in=90] + (-1.5,0.7) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom left) at (-1.5,-1.4); + \coordinate (-bottom) at (0,-1.5); + \coordinate (-bottom right) at (1.5,-1.4); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.5,0.7); + \coordinate (-top) at (0,1.5); + \coordinate (-top left) at (-1.5,0.7); + \end{scope} + }% +} +%: Floating Roof Tank +\tikzset{floating roof tank/.pic=% + {% + \draw [chpunitstyle] + (-1.5,1.5) -- + (-1.5,-1.5) -- + (1.5,-1.5) -- + (1.5,1.5); + \draw [chpunitstyle] + (-1.45,1.4) circle (0.05) + (1.45,1.4) circle (0.05) + (-1.4,1.3) rectangle (1.4,1.5); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom left) at (-1.5,-1.4); + \coordinate (-bottom) at (0,-1.5); + \coordinate (-bottom right) at (1.5,-1.4); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.5,1.2); + \coordinate (-top) at (0,1.5); + \coordinate (-top left) at (-1.5,1.2); + \end{scope} + }% +} +%: Bell Gasholder +\tikzset{bell gasholder/.pic=% + {% + \draw [chpunitstyle] + (-1.5,0.5) -- + (-1.5,-1.5) -- + (1.5,-1.5) -- + (1.5,0.5); + \draw [chpunitstyle] + (1.45,-0.5) -- + (1.45,0.7) to [out=90,in=0] + (0,1.45) to [out=180,in=90] + (-1.45,0.7) -- (-1.45,-0.50); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom left) at (-1.5,-1.4); + \coordinate (-bottom) at (0,-1.5); + \coordinate (-bottom right) at (1.5,-1.4); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.45,0.7); + \coordinate (-top) at (0,1.5); + \coordinate (-top left) at (-1.45,0.7); + \end{scope} + }% +} +%: Dry Gasholder +\tikzset{dry gasholder/.pic=% + {% + \draw [chpunitstyle] + (1.5,-1.0) arc + (0:180:1.5) -- cycle; + \draw [chpunitstyle] + (1.5,-1.0) -- + (1.5,1.0) -- + (-1.5,1.0) -- + (-1.5,-1.0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom left) at (-1.5,-0.9); + \coordinate (-bottom) at (0,-1.0); + \coordinate (-bottom right) at (1.5,-0.9); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.5,1); + \coordinate (-top) at (0,1); + \coordinate (-top left) at (-1.5,1); + \coordinate (-dome top) at (0,0.5); + \end{scope} + }% +} + +%: Fluids Handling +%: Centrifugal Pump +\tikzset{centrifugal pump/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.4) circle (0.05); + \draw [chpunitstyle] + (230.19:0.4) -- + ++(230.19:0.377) -- + ++(1,0) -- ++(129.81:0.377); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0); + \coordinate (-top) at (0,0.4); + \end{scope} + }% +} +%: Rotary Pump +\tikzset{rotary pump/.pic=% + {% + \draw [chpunitstyle] + (-0.4,0) arc + (180:360:0.4) -- + (0.4,0.5) arc + (0:180:0.4) -- cycle + (0,0) circle (0.225) + (0,0.5) circle (0.225); + \draw [chpunitstyle] + (230.19:0.4) -- + ++(230.19:0.377) -- + ++(1,0) -- ++(129.81:0.377); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0.25); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0.25); + \coordinate (-top) at (0,0.9); + \end{scope} + }% +} +%: Liquid Ring Pump +\tikzset{liquid ring pump/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.4) circle (0.325); + \draw [chpunitstyle] + (230.19:0.4) -- + ++(230.19:0.377) -- + ++(1,0) -- ++(129.81:0.377); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0); + \coordinate (-top) at (0,0.4); + \end{scope} + }% +} +%: Reciprocating Pump +\tikzset{reciprocating pump/.pic=% + {% + \draw [chpunitstyle] + (-0.4,-0.4) rectangle (0.4,0.4); + \draw [chpunitstyle] + (-0.3,-0.4) -- (-0.3,-0.6) + (0.3,-0.4) -- (0.3,-0.6) + (-0.5,-0.6) -- (0.5,-0.6); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0); + \coordinate (-top) at (0,0.4); + \end{scope} + }% +} +%: Fan +\tikzset{fan/.pic=% + {% + \draw [chpunitstyle] + (0.4,0.4) -- + (0,0.4) arc + (90:360:0.4) -- cycle + (0,0) circle (0.15); + \draw [chpunitstyle] + (230.19:0.4) -- + ++(230.19:0.377) -- + ++(1,0) -- ++(129.81:0.377); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0); + \coordinate (-top) at (0,0.4); + \coordinate (-outlet) at (0.4,0.4); + \end{scope} + }% +} +%: Centrifugal Compressor +\tikzset{centrifugal compressor/.pic=% + {% + \draw [chpunitstyle] + (-0.9,-0.4) -- + (0.9,-0.2) -- + (0.9,0.2) -- + (-0.9,0.4) -- cycle; + \draw [chpunitstyle] + (-0.8,-0.39) -- (-0.8,-0.6) + (0.8,-0.21) -- (0.8,-0.6) + (-1.0,-0.6) -- (1.0,-0.6); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.9,0); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.9,0); + \coordinate (-inlet bottom) at (-0.9,-0.4); + \coordinate (-outlet bottom) at (0.9,-0.2); + \coordinate (-outlet top) at (0.9,0.2); + \coordinate (-inlet top) at (-0.9,0.4); + \end{scope} + }% +} +%: Rotary Compressor +\tikzset{rotary compressor/.pic=% + {% + \draw [chpunitstyle] + (-0.4,0) arc + (180:360:0.4) -- + (0.4,0.5) arc + (0:180:0.4) -- cycle + (0.325,0.5) arc + (0:180:0.325) to [out=270,in=90] + (0.325,0) arc (360:180:0.325); + \draw [chpunitstyle] + (230.19:0.4) -- + ++(230.19:0.377) -- + ++(1,0) -- ++(129.81:0.377); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0.25); + \coordinate (-bottom) at (0,-0.6); + \coordinate (-right) at (0.4,0.25); + \coordinate (-top) at (0,0.9); + \end{scope} + }% +} +%: Reciprocating Compressor +\tikzset{reciprocating compressor/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.4) + (0.2,-0.346) -- + (1.4,-0.346) -- + (1.4,0.346) -- + (0.2,0.346); + \draw [chpunitstyle] + (0.2,-0.346) -- (0.2,-0.6) + (-0.2,-0.346) -- (-0.2,-0.6) + (1.3,-0.346) -- (1.3,-0.6) + (-0.5,-0.6) -- (1.5,-0.6); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0.5,-0.6); + \coordinate (-top) at (0,0.4); + \coordinate (-inlet bottom) at (0.8,-0.346); + \coordinate (-outlet) at (1.4,0); + \coordinate (-inlet top) at (0.8,0.346); + \end{scope} + }% +} +%: MultiStage Compressor +\tikzset{multistage compressor/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.4) + (0.2,-0.346) -- + (0.7,-0.346) -- + (0.7,0.346) -- (0.2,0.346) + (0.7,-0.231) -- + (1.1,-0.231) -- + (1.1,0.231) -- (0.7,0.231) + (1.1,-0.116) -- + (1.4,-0.116) -- + (1.4,0.116) -- (1.1,0.116); + \draw [chpunitstyle] + (0.2,-0.346) -- (0.2,-0.6) + (-0.2,-0.346) -- (-0.2,-0.6) + (1.3,-0.116) -- (1.3,-0.6) + (-0.5,-0.6) -- (1.5,-0.6); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.4,0); + \coordinate (-bottom) at (0.5,-0.6); + \coordinate (-top) at (0,0.4); + \coordinate (-first bottom) at (0.45,-0.346); + \coordinate (-second bottom) at (0.9,-0.231); + \coordinate (-third bottom) at (1.25,-0.116); + \coordinate (-outlet) at (1.4,0); + \coordinate (-third top) at (1.25,0.116); + \coordinate (-second top) at (0.9,0.231); + \coordinate (-first top) at (0.45,0.346); + \end{scope} + }% +} +%: Ejector +\tikzset{ejector/.pic=% + {% + \draw [chpunitstyle] + (0.25,-0.1) -- + (0.25,-0.25) -- + (-0.25,-0.25) -- + (-0.25,0.25) -- + (0.25,0.25) -- + (0.25,0.1) -- + (1.25,0.25) -- + (1.25,-0.25) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-main inlet) at (-0.25,0); + \coordinate (-suck inlet bottom) at (0,-0.25); + \coordinate (-outlet) at (1.25,0); + \coordinate (-suck inlet top) at (0,0.25); + \end{scope} + }% +} + +%: Heat Exchangers +%: Heat Exchanger +\tikzset{heat exchanger/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.5) + (-0.5,0) -- + (-0.25,0) -- + (-0.25,0.3) -- + (0.25,-0.3) -- + (0.25,0) -- (0.5,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-shell bottom) at (0,-0.5); + \coordinate (-shell top) at (0,0.5); + \coordinate (-pipes left) at (-0.5,0); + \coordinate (-pipes right) at (0.5,0); + \end{scope} + }% +} +%: Two-Phases Heat Exchanger +\tikzset{heat exchanger biphase/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.5) + (30:0.5) -- + ++(-0.6,0) -- + ++(0.3,-0.25) -- + ++(-0.3,-0.25) -- ++(0.6,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-shell left) at (-0.5,0); + \coordinate (-shell bottom) at (0,-0.5); + \coordinate (-shell right) at (0.5,0); + \coordinate (-shell top) at (0,0.5); + \coordinate (-pipes bottom) at (-30:0.5); + \coordinate (-pipes top) at (30:0.5); + \end{scope} + }% +} +%: Boiler +\tikzset{boiler/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.5); + \draw [chpunitstyle, -\chp@StreamTip] + (-0.7,0.5) -- + (-0.5,0.5) -- + (0.5,-0.5) -- (0.7,-0.5); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.5); + \coordinate (-pipes inlet) at (-0.7,0.5); + \coordinate (-pipes outlet) at (0.7,-0.5); + \end{scope} + }% +} +%: Condenser +\tikzset{condenser/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.5); + \draw [chpunitstyle, -\chp@StreamTip] + (-0.7,-0.5) -- + (-0.5,-0.5) -- + (0.5,0.5) -- + (0.7,0.5); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.5); + \coordinate (-pipes inlet) at (-0.7,-0.5); + \coordinate (-pipes outlet) at (0.7,0.5); + \end{scope} + }% +} +%: Air Heat Exchanger +\tikzset{air heat exchanger/.pic=% + {% + \draw [chpunitstyle] + (-0.5,-0.5) rectangle (0.5,0.5) + (0,0) circle (0.4) + (-0.3,0) -- + (-0.3,-0.15) -- + (0.3,0.15) -- + (0.3,0) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.5); + \end{scope} + }% +} +%: Tube Bundle Heat Exchanger +\tikzset{tube bundle heat exchanger/.pic=% + {% + \draw [chpunitstyle] + (-1.0,-0.3) -- + (0.7,-0.3) arc + (270:450:0.3) -- + (-1.0,0.3) -- cycle; + \foreach \i in {1, 2, ...,10} {% + \draw [chpunitstyle] + (-0.6,-0.3 + 0.06*\i) -- ++(1.2,0); + } + \draw [chpunitstyle] + (-1.0,-0.35) -- (-1.0,-0.3) + (-1.0,0.35) -- (-1.0,0.3) + (-0.6,-0.35) -- (-0.6,0.35) + (0.6,-0.35) -- (0.6,0.35); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.0,0); + \coordinate (-right) at (1.0,0); + \coordinate (-head bottom) at (-0.8,-0.3); + \coordinate (-head top) at (-0.8,0.3); + \coordinate (-shell bottom left) at (-0.5,-0.3); + \coordinate (-shell bottom) at (0,-0.3); + \coordinate (-shell bottom right) at (0.5,-0.3); + \coordinate (-shell top right) at (0.5,0.3); + \coordinate (-shell top) at (0,0.3); + \coordinate (-shell top left) at (-0.5,0.3); + \end{scope} + }% +} +%: Plate Heat Exchanger +\tikzset{plate heat exchanger/.pic=% + {% + \draw [chpunitstyle] + (-0.5,-0.7) rectangle + (0.5,0.7); + \foreach \i in {1, 2, ..., 4} {% + \draw [chpunitstyle] + (-0.5 + 0.2*\i,-0.7) -- ++(0,1.4); + } + \draw [chpunitstyle] + (-0.5,-0.6) -- (0.5,0.6); + \draw [chpunitstyle] + (-0.5,-0.75) -- (-0.5,-0.7) + (-0.5,0.7) -- (-0.5,0.75) + (0.5,-0.75) -- (0.5,-0.7) + (0.5,0.7) -- (0.5,0.75); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.7); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.7); + \coordinate (-inner left) at (-0.5,-0.6); + \coordinate (-inner right) at (0.5,0.6); + \coordinate (-outer left) at (-0.5,0.6); + \coordinate (-outer right) at (0.5,-0.6); + \end{scope} + }% +} +%: Spiral Heat Exchanger +\tikzset{spiral heat exchanger/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.7); + \draw [chpunitstyle] + (-0.7,0) -- (0.001,0); + \draw [chpunitstyle] + plot [variable=\t, domain=0:720, hobby] + (\t:\t*0.7/720); + \draw [chpunitstyle, dashed] + (0,0) -- (0,0.7); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-inner center) at (-0.7,0); + \coordinate (-inner edge) at (0.7,0); + \coordinate (-outer center) at (0,0.7); + \coordinate (-outer edge) at (0,-0.7); + \end{scope} + }% +} +%: Pipe Furnace +\tikzset{pipe furnace/.pic=% + {% + \draw [chpunitstyle] + (-1.0,-0.5) -- + (1.0,-0.5) -- + (1.0,0.5) -- + (0.2,0.75) -- + (0.2,1.5) -- + (-0.2,1.5) -- + (-0.2,0.75) -- + (-1.0,0.5) -- cycle; + \draw [chpunitstyle] + (-1.0,0) -- + (-0.75,0) -- + (-0.6,-0.4) -- + (-0.3,0.4) -- + (0,-0.4) -- + (0.3,0.4) -- + (0.6,-0.4) -- + (0.75,0) -- (1.0,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-top) at (0,1.5); + \coordinate (-pipes left) at (-1.0,0); + \coordinate (-pipes right) at (1.0,0); + \end{scope} + }% +} + +%: Separators +%: Steam Trap +\tikzset{steam trap/.pic=% + {% + \draw [chpunitstyle] + (45:0.15) arc (45:225:0.15); + \draw [chpunitstyle, fill] + (225:0.15) arc (225:405:0.15) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.15,0); + \coordinate (-bottom) at (0,-0.15); + \coordinate (-right) at (0.15,0); + \coordinate (-top) at (0,0.15); + \end{scope} + }% +} +%: Gas-Liquid Separator +\tikzset{gas-liquid separator/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-1.032) to [out=270,in=270] + (0.8,-1.032) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- cycle; + \draw [chpunitstyle, densely dotted] + (-0.755,1.2) -- (0.755,1.2); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-bottom left) at (-0.8,-1.032); + \coordinate (-bottom right) at (0.8,-1.032); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-stirrer) at (0.5,1.5); + \coordinate (-anchor) at (0,0); + \coordinate (-inlet left) at (-0.8,0); + \coordinate (-inlet right) at (0.8,0); + \coordinate (-gas outlet) at (0,1.5); + \coordinate (-liquid outlet) at (0,-1.5); + \end{scope} + }% +} +%: Cyclone +\tikzset{cyclone/.pic=% + {% + \draw [chpunitstyle] + (-0.3,0.25) rectangle + (0.3,0) -- + (0,-1.0) -- (-0.3,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-inlet left) at (-0.3,0.125); + \coordinate (-inlet right) at (0.3,0.125); + \coordinate (-gas outlet) at (0,0.25); + \coordinate (-solid outlet) at (0,-1.0); + \end{scope} + }% +} +%: Stratifier +\tikzset{stratifier/.pic=% + {% + \draw [chpunitstyle] + (1.032,-0.8) to [out=0,in=0] + (1.032,0.8) -- + (-1.032,0.8) to [out=180,in=180] + (-1.032,-0.8) -- cycle; + \draw [chpunitstyle] + (-0.9,-0.85) -- (-0.9,0.3) + (0.9,-0.85) -- (0.9,0) + (0.6,0.85) -- (0.6,0.7) + (0.6,0.6) -- (0.6,-0.6); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom) at (0,-0.8); + \coordinate (-right) at (1.5,0); + \coordinate (-top right) at (1.032,0.8); + \coordinate (-top left) at (-1.032,0.8); + \coordinate (-inlet) at (0,0.8); + \coordinate (-light outlet) at (-1.032,-0.8); + \coordinate (-heavy outlet) at (1.032,-0.8); + \end{scope} + }% +} +%: Settler +\tikzset{settler/.pic=% + {% + \draw [chpunitstyle] + (-1.5,-0.2) -- + (0,-0.8) -- + (1.5,-0.2) -- + (1.5,0.8) -- + (-1.5,0.8) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-inlet left) at (-1.5,-0.2); + \coordinate (-inlet right) at (1.5,-0.2); + \coordinate (-inlet top) at (0,0.8); + \coordinate (-liquid outlet left) at (-1.5,0.8); + \coordinate (-liquid outlet right) at (1.5,0.8); + \coordinate (-solid outlet) at (0,-0.8); + \end{scope} + }% +} +%: Scrubber +\tikzset{scrubber/.pic=% + {% + \draw [chpunitstyle] + (-0.3,-0.25) -- + (0,-0.75) -- + (0.3,-0.25) -- + (0.3,0.55) to [out=90,in=0] + (0,0.75) to [out=180,in=90] + (-0.3,0.55) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-gas inlet left) at (-0.3,-0.25); + \coordinate (-gas inlet right) at (0.3,-0.25); + \coordinate (-liquid inlet left) at (-0.3,0.55); + \coordinate (-liquid inlet right) at (0.3,0.55); + \coordinate (-gas outlet) at (0,0.75); + \coordinate (-liquid outlet) at (0,-0.75); + \end{scope} + }% +} +%: Kettle Bolier +\tikzset{kettle boiler/.pic=% + {% + \draw [chpunitstyle] + (-1.0,-0.3) -- + (0.7,-0.3) to [out=0,in=270] + (1.0,0.2) to [out=90,in=0] + (0.7,0.7) -- + (-0.3,0.7) -- + (-0.6,0.3) -- + (-1.0,0.3) -- cycle; + \draw [chpunitstyle] + (-1.0,-0.35) -- (-1.0,-0.3) + (-1.0,0.35) -- (-1.0,0.3) + (-0.6,-0.35) -- (-0.6,0.35) + (0.6,-0.35) -- (0.6,0.35); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.0,0); + \coordinate (-right) at (1.0,0.2); + \coordinate (-inlet) at (0,-0.3); + \coordinate (-gas outlet) at (0.2,0.7); + \coordinate (-liquid outlet) at (0.7,-0.3); + \coordinate (-head bottom) at (-0.8,-0.3); + \coordinate (-head top) at (-0.8,0.3); + \end{scope} + }% +} +%: Tube Bundle Evaporator +\tikzset{tube bundle evaporator/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-1.032) to [out=270,in=270] + (0.8,-1.032) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- cycle; + \foreach \i in {0, 1, ..., 10} {% + \draw [chpunitstyle] + (-0.85,-0.9 + 0.08*\i) -- ++(1.7,0); + } + \draw [chpunitstyle] + (-0.85,-0.95) -- (-0.85,-0.05) + (0.85,-0.95) -- (0.85,-0.05); + \draw [chpunitstyle, densely dotted] + (-0.755,1.2) -- (0.755,1.2); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom left) at (-0.8,-1.032); + \coordinate (-bottom right) at (0.8,-1.032); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-inlet left) at (-0.8,0); + \coordinate (-inlet right) at (0.8,0); + \coordinate (-gas outlet) at (0,1.5); + \coordinate (-liquid outlet) at (0,-1.5); + \coordinate (-pipes left) at (-0.85,-0.5); + \coordinate (-pipes right) at (0.85,-0.5); + \end{scope} + }% +} +%: Basket Evaporator +\tikzset{basket evaporator/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-1.032) to [out=270,in=270] + (0.8,-1.032) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- cycle; + \foreach \i in {1, 2, ...,19} {% + \draw [chpunitstyle] + (-0.8 + 0.08*\i,-0.9) -- ++(0,0.8); + } + \draw [chpunitstyle] + (-0.85,-0.9) -- (0.85,-0.9) + (-0.85,-0.1) -- (0.85,-0.1); + \draw [chpunitstyle, densely dotted] + (-0.755,1.2) -- (0.755,1.2); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom left) at (-0.8,-1.032); + \coordinate (-bottom right) at (0.8,-1.032); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-inlet left) at (-0.8,0); + \coordinate (-inlet right) at (0.8,0); + \coordinate (-gas outlet) at (0,1.5); + \coordinate (-liquid outlet) at (0,-1.5); + \coordinate (-shell top left) at (-0.8,-0.2); + \coordinate (-shell left) at (-0.8,-0.5); + \coordinate (-shell bottom left) at (-0.8,-0.8); + \coordinate (-shell bottom right) at (0.8,-0.8); + \coordinate (-shell right) at (0.8,-0.5); + \coordinate (-shell top right) at (0.8,-0.2); + \end{scope} + }% +} +%: Climbing Film Evaporator +\tikzset{climbing film evaporator/.pic=% + {% + \draw [chpunitstyle] + (-0.4,0.4) -- + (-0.4,-1.2) to [out=270,in=180] + (0,-1.5) to [out=0,in=270] + (0.4,-1.2) -- (0.4,0.4) + (0.4,0.3) -- + (0.8,0.6) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- + (-0.8,0.6) -- (-0.4,0.3); + \foreach \i in {1, 2, ...,10} {% + \draw [chpunitstyle] + (-0.4 + 0.08*\i,-1.2) -- ++(0,1.5); + } + \draw [chpunitstyle] + (-0.45,0.3) -- (0.45,0.3) + (-0.45,-1.2) -- (0.45,-1.2); + \draw [chpunitstyle, -\chp@StreamTip] + (-0.5,0.37) -- + (-0.6,0.23) -- + (-0.6,-1.35) -- (-0.35,-1.35); + \draw [chpunitstyle, densely dotted] + (-0.755,1.2) -- (0.755,1.2); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-inlet left) at (-0.8,0.6); + \coordinate (-inlet right) at (0.8,0.6); + \coordinate (-gas outlet) at (0,1.5); + \coordinate (-liquid outlet) at (0,-1.5); + \coordinate (-shell top left) at (-0.4,0.2); + \coordinate (-shell left) at (-0.4,-0.45); + \coordinate (-shell bottom left) at (-0.4,-1.1); + \coordinate (-shell bottom right) at (0.4,-1.1); + \coordinate (-shell right) at (0.4,-0.45); + \coordinate (-shell top right) at (0.4,0.2); + \end{scope} + }% +} +%: Tube Bundle Crystallizer +\tikzset{tube bundle crystallizer/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-1.032) -- + (0,-1.5) -- + (0.8,-1.032) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- cycle; + \foreach \i in {0, 1, ..., 10} {% + \draw [chpunitstyle] + (-0.85,-0.9 + 0.08*\i) -- ++(1.7,0); + } + \draw [chpunitstyle] + (-0.85,-0.95) -- (-0.85,-0.05) + (0.85,-0.95) -- (0.85,-0.05); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom left) at (-0.8,-1.032); + \coordinate (-bottom right) at (0.8,-1.032); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-inlet left) at (-0.8,0); + \coordinate (-inlet right) at (0.8,0); + \coordinate (-liquid outlet) at (0,1.5); + \coordinate (-solid outlet) at (0,-1.5); + \coordinate (-pipes left) at (-0.85,-0.5); + \coordinate (-pipes right) at (0.85,-0.5); + \end{scope} + }% +} +%: Stirred Crystallizer +\tikzset{stirred crystallizer/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-1.032) -- + (0,-1.5) -- + (0.8,-1.032) -- + (0.8,1.032) to [out=90,in=90] + (-0.8,1.032) -- cycle; + \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285] + (0,1.75) -- + (0,0) to [out=150,in=90] + (-0.5,0) to [out=270,in=210] + (0,0) to [out=30,in=90] + (0.5,0) to [out=270,in=330] (0,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom left) at (-0.8,-1.032); + \coordinate (-bottom right) at (0.8,-1.032); + \coordinate (-top right) at (0.8,1.032); + \coordinate (-top left) at (-0.8,1.032); + \coordinate (-inlet left) at (-0.8,0); + \coordinate (-inlet right) at (0.8,0); + \coordinate (-liquid outlet) at (0,1.5); + \coordinate (-solid outlet) at (0,-1.5); + \coordinate (-shaft) at (0.5,1.5); + \end{scope} + }% +} + +%: Columns +%: Column +\tikzset{pics/column/.style=% + {% + code=% + {% + \draw [chpunitstyle] + (-0.5,-2.7) to [out=270,in=270] + (0.5,-2.7) -- + (0.5,2.7) to [out=90,in=90] + (-0.5,2.7) -- cycle; + \ifthenelse{\equal{#1}{empty}}{% + \relax% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{trayed}}{% + \foreach \i in {0, 1, ..., 24} {% + \draw [chpunitstyle] + (-0.5,-2.4 + 0.2*\i) -- (0.5,-2.4 + 0.2*\i); + }% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{packed}}{% + \draw [chpunitstyle, join=bevel] + (-0.5,-2.4) -- + (0.5,2.4) -- + (-0.5,2.4) -- + (0.5,-2.4) -- cycle; + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{packed double}}{% + \draw [chpunitstyle, join=bevel] + (-0.5,-2.4) -- + (0.5,-0.2) -- + (-0.5,-0.2) -- + (0.5,-2.4) -- cycle; + \draw [chpunitstyle, join=bevel] + (-0.5,2.4) -- + (0.5,0.2) -- + (-0.5,0.2) -- + (0.5,2.4) -- cycle; + }% + {% + \relax% + } + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom left) at (-0.5,-2.6); + \coordinate (-bottom) at (0,-3); + \coordinate (-bottom right) at (0.5,-2.6); + \coordinate (-right) at (0.5,0); + \coordinate (-top right) at (0.5,2.6); + \coordinate (-top) at (0,3); + \coordinate (-top left) at (-0.5,2.6); + \end{scope} + }% + }% +} + +%: Reactors +%: Stirred Reactor +\tikzset{stirred reactor/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-0.732) to [out=270,in=270] + (0.8,-0.732) -- + (0.8,0.732) to [out=90,in=90] + (-0.8,0.732) -- cycle; + \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285] + (0,1.75) -- + (0,0) to [out=150,in=90] + (-0.5,0) to [out=270,in=210] + (0,0) to [out=30,in=90] + (0.5,0) to [out=270,in=330] (0,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.8,0); + \coordinate (-bottom left) at (-0.8,-0.732); + \coordinate (-bottom) at (0,-1.2); + \coordinate (-bottom right) at (0.8,-0.732); + \coordinate (-right) at (0.8,0); + \coordinate (-top right) at (0.8,0.732); + \coordinate (-top) at (0,1.2); + \coordinate (-top left) at (-0.8,0.732); + \coordinate (-shaft) at (0.5,1.5); + \end{scope} + }% +} +%: Packed Bed Reactor +\tikzset{packed bed reactor/.pic=% + {% + \draw [chpunitstyle] + (-1.0,-0.4) rectangle (1.0,0.4) + (-1.0,-0.45) -- (-1.0,0.45) + (1.0,-0.45) -- (1.0,0.45); + \draw [chpunitstyle, join=bevel] + (-0.8,0.4) -- + (0.8,-0.4) -- + (0.8,0.4) -- + (-0.8,-0.4) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1,0); + \coordinate (-bottom) at (0,-0.4); + \coordinate (-right) at (1,0); + \coordinate (-top) at (0,0.4); + \coordinate (-utility bottom left) at (-0.9,-0.4); + \coordinate (-utility bottom right) at (0.9,-0.4); + \coordinate (-utility top right) at (0.9,0.4); + \coordinate (-utility top left) at (-0.9,0.4); + \end{scope} + }% +} +%: Fluidized Bed Reactor +\tikzset{fluidized bed reactor/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-0.4) -- + (-0.2,-0.8) -- + (-0.2,-1.2) -- + (0.2,-1.2) -- + (0.2,-0.8) -- + (0.8,-0.4) -- + (0.8,0.732) to [out=90,in=90] + (-0.8,0.732) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.8,0); + \coordinate (-bottom left) at (-0.8,-0.4); + \coordinate (-bottom) at (0,-1.2); + \coordinate (-bottom right) at (0.8,-0.4); + \coordinate (-right) at (0.8,0); + \coordinate (-top right) at (0.8,0.732); + \coordinate (-top) at (0,1.2); + \coordinate (-top left) at (-0.8,0.732); + \end{scope} + }% +} +%: Tube Bundle Reactor +\tikzset{tube bundle reactor/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-0.732) to [out=270,in=270] + (0.8,-0.732) -- + (0.8,0.732) to [out=90,in=90] + (-0.8,0.732) -- cycle; + \foreach \i in {1, 2, ...,19} {% + \draw [chpunitstyle] + (-0.8 + 0.08*\i,-0.65) -- ++(0,1.3); + } + \draw [chpunitstyle] + (-0.85,-0.65) -- (0.85,-0.65) + (-0.85,0.65) -- (0.85,0.65); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.8,0); + \coordinate (-bottom left) at (-0.8,-0.732); + \coordinate (-bottom) at (0,-1.2); + \coordinate (-bottom right) at (0.8,-0.732); + \coordinate (-right) at (0.8,0); + \coordinate (-top right) at (0.8,0.732); + \coordinate (-top) at (0,1.2); + \coordinate (-top left) at (-0.8,0.732); + \end{scope} + }% +} +%: Associative Pics for Reactors +%: Tank Reactor +\tikzset{tank reactor/.pic=% + {% + \draw [chpunitstyle] + (-0.8,-0.732) to [out=270,in=270] + (0.8,-0.732) -- + (0.8,0.732) to [out=90,in=90] + (-0.8,0.732) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.8,0); + \coordinate (-bottom left) at (-0.8,-0.732); + \coordinate (-bottom) at (0,-1.2); + \coordinate (-bottom right) at (0.8,-0.732); + \coordinate (-right) at (0.8,0); + \coordinate (-top right) at (0.8,0.732); + \coordinate (-top) at (0,1.2); + \coordinate (-top left) at (-0.8,0.732); + \end{scope} + }% +} +%: Jacket +\tikzset{jacket/.pic=% + {% + \draw [chpunitstyle] + (-0.8,0.7) -- + (-1.0,0.5) -- + (-1.0,-0.732) to [out=270,in=180] + (-0.15,-1.3) -- (-0.1,-1.2) + (0.8,0.7) -- + (1.0,0.5) -- + (1.0,-0.732) to [out=270,in=0] + (0.15,-1.3) -- (0.1,-1.2); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.0,0); + \coordinate (-bottom left) at (-0.15,-1.3); + \coordinate (-bottom right) at (0.15,-1.3); + \coordinate (-right) at (1.0,0); + \coordinate (-top right) at (1.0,0.5); + \coordinate (-top left) at (-1.0,0.5); + \end{scope} + }% +} +%: Stirrer +\tikzset{stirrer/.pic=% + {% + \draw [chpunitstyle, yshift=-0.25cm, xslant=0.285] + (0,1.75) -- + (0,0) to [out=150,in=90] + (-0.5,0) to [out=270,in=210] + (0,0) to [out=30,in=90] + (0.5,0) to [out=270,in=330] (0,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-shaft) at (0.5,1.5); + \end{scope} + }% +} +%: Coil +\tikzset{coil/.pic=% + {% + \draw [chpunitstyle, join=bevel] + (1.0,0.7) -- + (-0.7,0.7) -- + (0.7,0.467) -- + (-0.7,0.233) -- + (0.7,0) -- + (-0.7,-0.233) -- + (0.7,-0.467) -- + (-0.7,-0.7) -- (1.0,-0.7); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-bottom) at (1.0,-0.7); + \coordinate (-top) at (1.0,0.7); + \end{scope} + }% +} +%: Sprayer +\tikzset{sprayer/.pic=% + {% + \draw [chpunitstyle] + (0,0) -- + (1.4,0) -- ++(0.1,-0.1) + (0.2,0) -- ++(-0.1,-0.1) + (0.2,0) -- ++(0.1,-0.1) + (0.6,0) -- ++(-0.1,-0.1) + (0.6,0) -- ++(0.1,-0.1) + (1.0,0) -- ++(-0.1,-0.1) + (1.0,0) -- ++(0.1,-0.1) + (1.4,0) -- ++(-0.1,-0.1); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \end{scope} + }% +} +%: Bubbler +\tikzset{bubbler/.pic=% + {% + \draw [chpunitstyle] + (0,0) -- + (1.4,0) -- ++(0.1,0.1) + (0.2,0) -- ++(-0.1,0.1) + (0.2,0) -- ++(0.1,0.1) + (0.6,0) -- ++(-0.1,0.1) + (0.6,0) -- ++(0.1,0.1) + (1.0,0) -- ++(-0.1,0.1) + (1.0,0) -- ++(0.1,0.1) + (1.4,0) -- ++(-0.1,0.1); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \end{scope} + }% +} +%: Packing +\tikzset{packing/.pic=% + {% + \draw [chpunitstyle, join=bevel] + (-0.8,-0.7) -- + (0.8,0.7) -- + (-0.8,0.7) -- + (0.8,-0.7) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \end{scope} + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%: Process Utilities + +%: Valves +%: Lamination Valve +\tikzset{lamination valve/.pic=% + {% + \draw [chpunitstyle] + (-0.2,-0.1) rectangle (0.2,0.1) + (-0.2,0.1) -- (0.2,0) + (-0.2,-0.1) -- (0.2,0); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-inlet) at (-0.2,0); + \coordinate (-outlet) at (0.2,0); + \end{scope} + }% +} +%: Valve +\tikzset{pics/valve/.style=% + {% + code=% + {% + \ifthenelse{\equal{#1}{main}}{% + \let\chp@ValveThickness\chp@MainStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{secondary}}{% + \let\chp@ValveThickness\chp@SecondaryStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{utility}}{% + \let\chp@ValveThickness\chp@UtilityStreamThickness% + }% + {% + \relax% + } + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (-0.2,-0.1) -- + (-0.2,0.1) -- + (0.2,-0.1) -- + (0.2,0.1) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.2,0); + \coordinate (-right) at (0.2,0); + \end{scope} + }% + }% +} +%: Three-Way Valve +\tikzset{pics/valve triple/.style=% + {% + code=% + {% + \ifthenelse{\equal{#1}{main}}{% + \let\chp@ValveThickness\chp@MainStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{secondary}}{% + \let\chp@ValveThickness\chp@SecondaryStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{utility}}{% + \let\chp@ValveThickness\chp@UtilityStreamThickness% + }% + {% + \relax% + } + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (0,0) -- + (-0.2,-0.1) -- + (-0.2,0.1) -- + (0,0) -- + (-0.1,0.2) -- + (0.1,0.2) -- + (0,0) -- + (0.2,-0.1) -- + (0.2,0.1) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.2,0); + \coordinate (-right) at (0.2,0); + \coordinate (-top) at (0,0.2); + \end{scope} + }% + }% +} +%: Four-Way Valve +\tikzset{pics/valve quadruple/.style=% + {% + code=% + {% + \ifthenelse{\equal{#1}{main}}{% + \let\chp@ValveThickness\chp@MainStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{secondary}}{% + \let\chp@ValveThickness\chp@SecondaryStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{utility}}{% + \let\chp@ValveThickness\chp@UtilityStreamThickness% + }% + {% + \relax% + } + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (-0.2,-0.1) -- + (-0.2,0.1) -- + (0.2,-0.1) -- + (0.2,0.1) -- cycle + (-0.1,0.2) -- + (0.1,0.2) -- + (-0.1,-0.2) -- + (0.1,-0.2) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.2,0); + \coordinate (-bottom) at (0,-0.2); + \coordinate (-right) at (0.2,0); + \coordinate (-top) at (0,0.2); + \end{scope} + }% + }% +} +%: Safety Valve +\tikzset{pics/safety valve/.style=% + {% + code=% + {% + \ifthenelse{\equal{#1}{main}}{% + \let\chp@ValveThickness\chp@MainStreamThickness% + }% + {% + \relax% + } + \ifthenelse{\equal{#1}{utility}}{% + \let\chp@ValveThickness\chp@UtilityStreamThickness% + }% + {% + \relax% + } + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (0,0) -- + (-0.1,-0.2) -- + (0.1,-0.2) -- cycle + (0,0) -- + (0.2,-0.1) -- + (0.2,0.1) -- cycle; + \draw [\chp@ValveThickness, scale=\chp@UnitScale, fill] + (0,0) circle (0.025); + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (0,0) -- (0,0.3) + (-0.05,0.26) -- (0.05,0.24) + (-0.05,0.21) -- (0.05,0.19) + (-0.05,0.16) -- (0.05,0.14); + \draw [\chp@ValveThickness, scale=\chp@UnitScale] + (0.2,0) -- (0.4,0) + (0.35,0.1) -- (0.45,-0.1); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-inlet) at (0,-0.2); + \coordinate (-outlet) at (0.4,0); + \end{scope} + }% + }% +} + +%: Process Streams +%: Inlet +\tikzset{inlet/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.25); + \draw [chpunitstyle, fill] + (0.25,0) -- (150:0.25) + (0.25,0) -- (-150:0.25) arc (210:150:0.25); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.25,0); + \coordinate (-bottom) at (0,-0.25); + \coordinate (-stream) at (0.25,0); + \coordinate (-top) at (0,0.25); + \end{scope} + }% +} +%: Outlet +\tikzset{outlet/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.25) + (0.25,0) -- (150:0.25) + (0.25,0) -- (-150:0.25); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-stream) at (-0.25,0); + \coordinate (-bottom) at (0,-0.25); + \coordinate (-right) at (0.25,0); + \coordinate (-top) at (0,0.25); + \end{scope} + }% +} + +%: Instrumentation +%: Instrument +\tikzset{pics/instrument/.style=% + {% + code=% + {% + \draw [chpinstrumentstyle] + (0,0) circle (0.5); + \node [font=\chp@InstrumentFontSize] at (0,0) {#1}; + \begin{scope} [scale=\chp@InstrumentScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.5); + \end{scope} + }% + }% +} +%: Controller +\tikzset{pics/controller/.style=% + {% + code=% + {% + \draw [chpinstrumentstyle] + (-0.5,-0.5) rectangle (0.5,0.5); + \node [font=\chp@InstrumentFontSize] at (0,0) {#1}; + \begin{scope} [scale=\chp@InstrumentScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-0.5,0); + \coordinate (-bottom) at (0,-0.5); + \coordinate (-right) at (0.5,0); + \coordinate (-top) at (0,0.5); + \end{scope} + }% + }% +} +%: Actuator +\tikzset{actuator/.pic=% + {% + \draw [\chp@InstrumentThickness, scale=\chp@UnitScale] + (0,0) -- (0,0.2) + (0.1,0.2) arc (0:180:0.1) -- cycle; + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \coordinate (-top) at (0,0.3); + \end{scope} + }% +} + +%: Nozzles +%: Input +\tikzset{input/.pic=% + {% + \draw [chpunitstyle] + (0,0) circle (0.05); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \end{scope} + }% +} +%: Output +\tikzset{output/.pic=% + {% + \draw [chpunitstyle, fill] + (0,0) circle (0.05); + \begin{scope} [scale=\chp@UnitScale] + \coordinate (-anchor) at (0,0); + \end{scope} + }% +} + +%: Blocks +%: Block +\tikzset{pics/block/.style=% + {% + code=% + {% + \draw [chpblockstyle] + (-1.5,-0.75) rectangle (1.5,0.75); + \node [align=center, font=\chp@BlockFontSize] at (0,0) {#1}; + \begin{scope} [scale=\chp@BlockScale] + \coordinate (-anchor) at (0,0); + \coordinate (-left) at (-1.5,0); + \coordinate (-bottom) at (0,-0.75); + \coordinate (-right) at (1.5,0); + \coordinate (-top) at (0,0.75); + \end{scope} + }% + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\endinput % End of the Package
\ No newline at end of file |