diff options
author | tradke <tradke@1c20744c-e24a-42ec-9533-f5004cb800e5> | 2001-02-14 14:40:43 +0000 |
---|---|---|
committer | tradke <tradke@1c20744c-e24a-42ec-9533-f5004cb800e5> | 2001-02-14 14:40:43 +0000 |
commit | 6d2aca99e8b9ff712ee47ebe23af38486e1b7d76 (patch) | |
tree | 3fe556c75713b13e33bb342a1f1e239f899ee2e2 /doc | |
parent | 0c0c5fa551849e0ba780a9971ecc2f0c1533f6c8 (diff) |
This commit was generated by cvs2svn to compensate for changes in r2, which
included commits to RCS files with non-trunk default branches.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGHInterp/trunk@3 1c20744c-e24a-42ec-9533-f5004cb800e5
Diffstat (limited to 'doc')
-rw-r--r-- | doc/documentation.tex | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex new file mode 100644 index 0000000..b59a7a3 --- /dev/null +++ b/doc/documentation.tex @@ -0,0 +1,66 @@ +%version $Header$ +\documentclass{article} +\begin{document} + +\title{PUGHInterp} +\author{Paul Walker, Thomas Radke, Erik Schnetter} +\date{1997-2001} +\maketitle + +\abstract{Thorn PUGHInterp provides interpolation of arrays + at arbitrary points.} + +\section{Purpose} +Thorn PUGHInterp implements interpolation operators working on regular, +uniform cartesian grids. They can be applied to interpolate both CCTK grid +variables (grid functions and arrays distributed over all processors), and +processor-local arrays at arbitrary points.\\ +The operators for distributed/local arrays are invoked via the flesh +interpolation API routines {\tt CCTK\_InterpGV()} and {\tt CCTK\_InterpLocal()} +resp. They are registered with the flesh under the name {\it ''uniform +cartesian''} prepended by the interpolation order (eg. {\it ''second-order +uniform cartesian''}). Currently there is first, second, and third-order +interpolation implemented.\\ + +\section{Implementation Notes} +The interpolation operators registered for different orders are mapped +via wrappers (in {\tt Startup.c}) onto a single routine (in {\tt Operator.c}) +just passing the order as an additional argument.\\ +The routine for distributed arrays will then map all points to interpolate +at to the processors which own those points, and communicate the points' +coordinates and corresponding input arrays ({\tt MPI\_Alltoall()} is used +for this).\\ +Then the interpolation takes place in parallel on every processor, calling +a core interpolation routine (located in {\tt Interpolate.c}). This one +takes a list of input arrays and points and interpolates these to a +list of output arrays (one output value per interpolation point).\\ +Again, for distributed arrays, the interpolation results for remote points +are sent back to the requesting processors.\\[2ex] +% +Current limitations of the core interpolation routine's implementation are: +% +\begin{itemize} + \item arrays up to three ({\bf MAXDIM}) dimensions only can be handled + \item interpolation orders up to three ({\bf MAXORDER}) only are supported + \item coordinates must be given as {\bf CCTK\_REAL} types + \item input and output array types must be the same + (no type casting of interpolation results supported) +\end{itemize} +% +Despite of these limitations, the code it was programmed almost generic +in that it can easily be extended to support higher-dimensional arrays +or more interpolation orders.\\ +Please see the NOTES in this source file for details. + +\section{Comments} +% +For more information on how to invoke interpolation operators please refer +to the flesh documentation. +% +% Automatically created from the ccl files +% Do not worry for now. +\include{interface} +\include{param} +\include{schedule} + +\end{document} |