From 952bbf04cac72f29e56c54c4c0d46f695ba4477d Mon Sep 17 00:00:00 2001 From: Robin Clark Date: Sun, 13 Feb 2011 19:20:16 +0000 Subject: [PATCH] starting to draw electric circuits in tex --- nr/electComp.sty | 220 +++++++++++++++++++++++++++++++++++++++++++++++ nr/nr.tex | 50 ++++++++++- nr/paper.tex | 4 +- 3 files changed, 271 insertions(+), 3 deletions(-) create mode 100644 nr/electComp.sty diff --git a/nr/electComp.sty b/nr/electComp.sty new file mode 100644 index 0000000..b6879d1 --- /dev/null +++ b/nr/electComp.sty @@ -0,0 +1,220 @@ +% Electrical Circuits with pgf +% Author: bumesh AAATTT cedt [.] iisc . ernet . in +\NeedsTeXFormat{LaTeX2e}[1999/01/01] +\ProvidesPackage{electComp}[2008/03/12] + +\RequirePackage{tikz} +\usepgflibrary{decorations.pathreplacing} + +%:'e,'f move . + + +\pgfdeclaredecoration{recresistor}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} % connector circle + \pgfpathlineto{\pgfpoint{0.1\pgfdecoratedinputsegmentremainingdistance}{0}} % lead + \pgfpathlineto{\pgfpoint{0.1\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength*0.5}} + \pgfpathlineto{\pgfpoint{0.9\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength*0.5}} + \pgfpathlineto{\pgfpoint{0.9\pgfdecoratedinputsegmentremainingdistance}{-\pgfdecorationsegmentlength*0.5}} + \pgfpathlineto{\pgfpoint{0.1\pgfdecoratedinputsegmentremainingdistance}{-\pgfdecorationsegmentlength*0.5}} + \pgfpathlineto{\pgfpoint{0.1\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength*0.5}} + \pgfpathmoveto{\pgfpoint{0.9\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{1.0\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + } + \state{final} + { + \pgfpathlineto{\pgfpointdecoratedpathlast} + } +} + +\pgfdeclaredecoration{sqWave}{initial} +{ + \state{initial}[width=0.5cm] + { + \pgfpathlineto{\pgfpoint{0.25cm}{0cm}} + \pgfpathlineto{\pgfpoint{0.25cm}{0.25cm}} + \pgfpathlineto{\pgfpoint{0.5cm}{0.25cm}} + \pgfpathlineto{\pgfpoint{0.5cm}{0}} + } + \state{final} + { + \pgfpathlineto{\pgfpointdecoratedpathlast} + } +} + + +\pgfdeclaredecoration{switch}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} % lead of device + \pgfpathlineto{\pgfpoint{0.25\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{0.25\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{0.75\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength}} + \pgfpathcircle{\pgfpoint{0.75\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + +\pgfdeclaredecoration{cell}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{-\pgfdecorationsegmentlength}} + \pgfpathcircle{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{-0.5\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{-0.5\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0.5\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{0.5\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} + +\pgfdeclaredecoration{capacitor}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.5\pgfdecoratedinputsegmentremainingdistance}{-\pgfdecorationsegmentlength}} + \pgfpathcircle{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{-1\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.6\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + } + \state{final} + { + \pgfpathmoveto{\pgfpointdecoratedpathlast} + } +} +\pgfdeclaredecoration{diode}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{0.35\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.35\pgfdecoratedinputsegmentremainingdistance}{1.0\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.35\pgfdecoratedinputsegmentremainingdistance}{-1.0\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.35\pgfdecoratedinputsegmentremainingdistance}{1.0\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0.75\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{-0.75\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} + } + \state{final} + { + \pgfpathlineto{\pgfpointdecoratedpathlast} + } +} + +\pgfdeclaredecoration{ground}{initial} +{ + \state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance] + { + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{1.0\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{-1.0\pgfdecorationsegmentlength}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}} + \pgfpathlineto{\pgfpoint{0.65\pgfdecoratedinputsegmentremainingdistance}{1.0\pgfdecorationsegmentlength}} + } + \state{final} + { + \pgfpathlineto{\pgfpointdecoratedpathlast} + } +} + +\pgfdeclaredecoration{inductor}{initial} +{ + \state{initial}[switch if less than=% + 1.5\pgfdecorationsegmentlength+% + \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude+% + \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude to last, + width=+\pgfdecorationsegmentlength] +{ + \pgfsetlinewidth{1pt} + \pgfpathcircle{\pgfpoint{0}{0}}{0.05\pgfdecoratedinputsegmentremainingdistance} + \pgfpathcurveto + {\pgfpoint@oncoil{0 }{ 0.555}{1}} + {\pgfpoint@oncoil{0.445}{ 1 }{2}} + {\pgfpoint@oncoil{1 }{ 1 }{3}} + \pgfpathcurveto + {\pgfpoint@oncoil{1.555}{ 1 }{4}} + {\pgfpoint@oncoil{2 }{ 0.555}{5}} + {\pgfpoint@oncoil{2 }{ 0 }{6}} + \pgfpathcurveto + {\pgfpoint@oncoil{2 }{-0.555}{7}} + {\pgfpoint@oncoil{1.555}{-1 }{8}} + {\pgfpoint@oncoil{1 }{-1 }{9}} + \pgfpathcurveto + {\pgfpoint@oncoil{0.445}{-1 }{10}} + {\pgfpoint@oncoil{0 }{-0.555}{11}} + {\pgfpoint@oncoil{0 }{ 0 }{12}} +} + \state{last}[width=.5\pgfdecorationsegmentlength+% + \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude+% + \pgfdecorationsegmentaspect\pgfdecorationsegmentamplitude,next state=final] +{ + \pgfpathcurveto + {\pgfpoint@oncoil{0 }{ 0.555}{1}} + {\pgfpoint@oncoil{0.445}{ 1 }{2}} + {\pgfpoint@oncoil{1 }{ 1 }{3}} + \pgfpathcurveto + {\pgfpoint@oncoil{1.555}{ 1 }{4}} + {\pgfpoint@oncoil{2 }{ 0.555}{5}} + {\pgfpoint@oncoil{2 }{ 0 }{6}} + \pgfpathcircle{\pgfpoint{\pgfdecoratedinputsegmentremainingdistance}{0}}% + {0.05\pgfdecoratedinputsegmentremainingdistance} +} + \state{final} + { + \pgfpathlineto{\pgfpointdecoratedpathlast} + } +} + +\def\pgfpoint@oncoil#1#2#3{% + \pgf@x=#1\pgfdecorationsegmentamplitude% + \pgf@x=\pgfdecorationsegmentaspect\pgf@x% + \pgf@y=#2\pgfdecorationsegmentamplitude% + \pgf@xa=0.083333333333\pgfdecorationsegmentlength% + \advance\pgf@x by#3\pgf@xa% +} + diff --git a/nr/nr.tex b/nr/nr.tex index 4f1d99b..9b30566 100644 --- a/nr/nr.tex +++ b/nr/nr.tex @@ -3,7 +3,13 @@ \ifthenelse {\boolean{paper}} { \begin{abstract} - +This paper looks in detail a the generic `resistor' +as a component in safety critical designs and +how its potential failure modes are taken into +account in various safety design standards. +A `networked resistor' equivalent to single +resistors is proposed for highly safety critical measurement sensitive +designs, as it has two not three failure modes to consider. \end{abstract} } { @@ -69,4 +75,46 @@ Assume resistors not from same batch. Show how parameter change is cancelled out, use sum of squares statistics to show by how much. +\begin{figure} +\begin{tikzpicture}[line width=1pt] + \draw (0,0) -- ++(0,1cm); + \draw[decorate, decoration=cell] (0,1cm) -- ++(0,1.5cm); + \draw (0,2.5cm) |- ++(1cm,1cm); + \draw[decorate, decoration=diode] (1cm,3.5cm) -- ++(1.5cm,0); + \draw (2.5cm,3.5cm) -- ++(2,0); + \draw (3.5cm,3.5cm) -- ++(0,-1); + \draw[decorate, decoration=switch] (3.5cm,2.5cm) -- ++(0,-1.5cm); + \draw[decorate, + decoration={inductor,amplitude=0.35cm, segment length=0.75cm}] + (4.5cm,3.5cm) -- ++(1.5cm,0); + \draw (6cm,3.5cm) -- ++(1,0); + \draw (7cm,3.5cm) -- ++(3,0); + \draw (8cm,3.5cm) -- ++(0,-1); + \draw[decorate, decoration=capacitor] (8cm,2.5cm) -- ++(0,-1.5cm); + \draw (0cm,0cm) -| ++(8cm,1cm); + \draw (3.5cm,0cm) -- ++(0cm,1cm); + \draw (10cm,3.5cm) -- ++(0,-1); + \draw[decorate, decoration=recresistor] (10cm,2.5cm) -- ++(0,-1.5cm); + %\draw[decorate, decoration=recresistor] (2.5cm,10cm) -- ++(0,-1.5cm); + \draw (8cm,0cm) -| ++(2cm,1cm); + \draw[decorate, decoration=ground] (5,0cm) -- ++(0,-1.5cm); +\end{tikzpicture} +\caption{a circuit} +\end{figure} + + + +\begin{figure} +\begin{tikzpicture}[line width=1pt] + \draw (0,0) -- ++(1cm,1cm); + \draw[decorate, decoration=recresistor] (1cm,2cm) -- ++(0,-1.5cm); + \draw[decorate, decoration=recresistor] (2cm,2cm) -- ++(0,-1.5cm); + \draw[decorate, decoration=recresistor] (1cm,4cm) -- ++(0,-1.5cm); + \draw[decorate, decoration=recresistor] (2cm,4cm) -- ++(0,-1.5cm); + %\draw[decorate, decoration=recresistor] (2.5cm,10cm) -- ++(0,-1.5cm); + \draw (8cm,0cm) -| ++(2cm,1cm); + \draw[decorate, decoration=ground] (5,0cm) -- ++(0,-1.5cm); +\end{tikzpicture} +\caption{A `network resistor'} +\end{figure} diff --git a/nr/paper.tex b/nr/paper.tex index a4b5aec..160dcf5 100644 --- a/nr/paper.tex +++ b/nr/paper.tex @@ -4,11 +4,11 @@ \usepackage{fancyhdr} \usepackage{tikz} \usepackage{amsfonts,amsmath,amsthm} - \usepackage{ifthen} \newboolean{paper} \setboolean{paper}{true} % boolvar=true or false - +\usepackage{electComp} +\usetikzlibrary{decorations,decorations.pathmorphing,decorations.pathreplacing} \input{../style}