%% $Id: pst-chladni-doc.tex 1300 2026-06-13 05:50:03Z herbert $
\DocumentMetadata{}
\documentclass[11pt,english,BCOR10mm,DIV14,bibliography=totoc,parskip=false,smallheadings,
    headexclude,footexclude,oneside]{pst-doc}
\usepackage{diagbox}
\usepackage{pstricks-add,pst-chladni}
\let\pstFV\fileversion

\def\bgImage{\psscalebox{4}{\psNodalCircular(2,3)}}

\addbibresource{\jobname.bib}

\usepackage{enumitem,xltabular,hvindex,hvlogos,minted-code}
%\setkeys{hv}{moveToExampleDir,ExampleDir=./exa-pdf,
%  %showFilename=true,shiftFN=-30pt,
%  force=false}

\setlist{nosep}

\usepackage{makeidx}
\makeindex

\begin{document}

\title{\texttt{pst-chladni}\\
		  \small v.\pstFV}
\subtitle{Chladni acoustic patterns for a circular membrane}
\author{Juergen Gilg \\Manuel Luque\\Herbert Voß} 
%\docauthor{Herbert Voß}
\date{\today}
\settitle

\tableofcontents

\section{introduction}
Theoretical background can be found in \cite{wiki,nolen,toronto,nolen2}.
Ernst Florens Friedrich Chladni (30 November 1756 – 3 April 1827)
was a German physicist and musician. His most important work, for 
which he is sometimes labeled the father of \Index{acoustics}, 
included research on vibrating plates and the calculation of the 
speed of sound for different gases.~\cite{wiki}

\section{The macros}

There are two PStricks commands, involving very few options:

\begin{BDef}
\Lcs{psNodalLinesCircularPlane}\OptArgs\\ %[n=1,m=1,R=1]
\Lcs{psCircularMembrane}\OptArgs\\%[date=0,n=0,m=1,coeffZ=1]
\Lcs{psNodalCircular}\Largr{n,m}
\end{BDef}

The macros  allow for plotting the \Index{nodal lines} in the plane by simulating the 
distribution of sand grains, and for visualizing the 3D deformation 
of the plate at a given moment.
\LKeyword{R=1} is the radius of the membrane, \LKeyword{coeffZ=1} 
is a scaling factor along the $z$-axis, \LKeyword{n=1} (default is 0) 
and \Lkeyword{m=1} (default is 1)
represent the vibration modes, and \LKeyword{date=seconds} allows the 
plate to be viewed in 3D at a specific time.

In addition to the PStricks command, there is also \Index{Maple} code for 
drawing the 3D figure, which will allow you to compare the figures if you wish.

\vfill
\begin{center}
\begin{tabular}{|c|c|c|c|}
\multicolumn{4}{c}{\Lcs{psNodalCircular}\Largb{n,m} (m=row, n=column)}\\[5pt]\hline
  \diagbox{m}{n}  & 0              &       1        &        2          \\\hline
  1 &                 &                &  \psNodalCircular(2,1)  \\
  2 & \psNodalCircular(0,2)  & \psNodalCircular(1,2) &  \psNodalCircular(2,2)  \\
  3 & \psNodalCircular(0,3)  & \psNodalCircular(1,3) &  \psNodalCircular(2,3)  \\
  4 & \psNodalCircular(0,4)  & \psNodalCircular(1,4) &                  \\\hline
\end{tabular}
\end{center}

\newpage


\begin{exampleM}[righthand width=0.55\linewidth]{The default output for }
\psset{viewpoint=50 60 40 rtp2xyz,Decran=200,lightsrc=viewpoint,showAxes=false,unit=0.6}
\begin{pspicture}(-6,-6.5)(4,5.5)\psCircularMembrane[date=0.8709,ngrid=0.2 0.2]\end{pspicture}
\hspace{3cm}
\begin{pspicture}(-6,-6.5)(4,5.5)\psCircularMembrane[date=0.435457]\end{pspicture}
\end{exampleM}



\begin{exampleM}[]{{n=0,m=2}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=2,coeffZ=0.5]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=0,m=2]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=2,date=0.435457,coeffZ=0.5]\end{pspicture}
\end{exampleM}

\begin{codeblockM}[title={Maple code for (0,2)}]
> alpha2:=BesselJZeros(0,2);
> v:=(r,t)->BesselJ(0,alpha2*r)*cos(alpha2*t);
> plot3d([r,theta,v(r,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\begin{exampleM}[]{{n=0,m=3}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=3,coeffZ=0.5]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=0,m=3]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=3,date=0.435457,coeffZ=0.5]\end{pspicture}
\end{exampleM}

\begin{codeblockM}[title={Maple code for (0,3)}]
> alpha3:=BesselJZeros(0,3);
> v:=(r,t)->BesselJ(0,alpha3*r)*cos(alpha3*t);
> plot3d([r,theta,v(r,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\begin{exampleM}[]{{n=0,m=4}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=4,coeffZ=0.5]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=0,m=4]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=0,m=4,date=0.435457,coeffZ=0.5]\end{pspicture}
\end{exampleM}


\begin{codeblockM}[title={Maple code for (0,4)}]
> alpha4:=BesselJZeros(0,4);
> v:=(r,t)->BesselJ(0,alpha4*r)*cos(alpha4*t);
> plot3d([r,theta,v(r,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\begin{exampleM}[]{{n=1,m=1}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=1]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=1,m=1]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=1,date=0.82]\end{pspicture}
\end{exampleM}

\begin{codeblockM}[title={Maple code for (1,1)}]
> alpha[1,1]:=BesselJZeros(1,1);
> u:=(r,theta,t)->BesselJ(1,alpha[1,1]*r)*cos(theta)*cos(alpha[1,1]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\begin{exampleM}[]{{n=1,m=2}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=2]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=1,m=2]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=2,date=0.448]\end{pspicture}
\end{exampleM}

\begin{codeblockM}[title={Maple code for (1,2)}]
> alpha[1,2]:=BesselJZeros(1,2);
> u:=(r,theta,t)->BesselJ(1,alpha[1,2]*r)*cos(theta)*cos(alpha[1,2]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}  

\begin{exampleM}[]{{n=1,m=3}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=3]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=1,m=3]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=1,m=3,date=0.448]\end{pspicture}
\end{exampleM}


\begin{codeblockM}[title={Maple code for (1,3)}]
> alpha[1,3]:=BesselJZeros(1,3);
> u:=(r,theta,t)->BesselJ(1,alpha[1,3]*r)*cos(theta)*cos(alpha[1,3]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}


\begin{exampleM}[]{{n=2,m=1}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=1,,date=0.617]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=2,m=1]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=1]\end{pspicture}
\end{exampleM}


\begin{codeblockM}[title={Maple code for (2,1)}]
> alpha[2,1]:=BesselJZeros(2,1);
> u:=(r,theta,t)->BesselJ(2,alpha[2,1]*r)*cos(2*theta)*cos(alpha[2,2]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\begin{exampleM}[]{{n=2,m=2}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=2]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=2,m=2]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=2,date=0.372]\end{pspicture}
\end{exampleM}

\begin{codeblockM}[title={Maple code for (2,2)}]
> alpha[2,2]:=BesselJZeros(2,2);
> u:=(r,theta,t)->BesselJ(2,alpha[2,2]*r)*cos(2*theta)*cos(alpha[2,2]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}


\begin{exampleM}[]{{n=2,m=3}}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=3]\end{pspicture}
\begin{pspicture}(-0.5,-3.25)(0.5,2.75)\psNodalLinesCircularPlane[n=2,m=3]\end{pspicture}
\begin{pspicture}(-4,-3.25)(4,2.75)\psset{unit=0.6}\psCircularMembrane[n=2,m=3,date=0.270365]\end{pspicture}
\end{exampleM}


\begin{codeblockM}[title={Maple code for (2,3)}]
> alpha[2,3]:=BesselJZeros(2,3);
> u:=(r,theta,t)->BesselJ(2,alpha[2,3]*r)*cos(2*theta)*cos(alpha[2,3]*t);
> plot3d([r,theta,u(r,theta,0)],r=0..1,theta=-Pi..Pi,coords=cylindrical,axes=frame);
\end{codeblockM}



\nocite{*}
\printbibliography

\printindex


\end{document}


