aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authortradke <tradke@1c20744c-e24a-42ec-9533-f5004cb800e5>2002-05-29 13:37:03 +0000
committertradke <tradke@1c20744c-e24a-42ec-9533-f5004cb800e5>2002-05-29 13:37:03 +0000
commit7efd66162332aaa0c68bdd8c8e07b1d969bc9040 (patch)
tree5324f6a62466ef70ed4f0f6b405f17ecdbeb2154 /doc
parentd22189e957dcbbca1524894aeb10919055ab0f1a (diff)
Updated saying that the local interpolation stuff has been cloned in thorn
LocalInterp. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGHInterp/trunk@26 1c20744c-e24a-42ec-9533-f5004cb800e5
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation.tex43
1 files changed, 23 insertions, 20 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
index b59a7a3..75033d2 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -11,34 +11,38 @@
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.\\
+Thorn PUGHInterp implements interpolation operators for CCTK grid
+variables (grid functions and arrays distributed over all processors).%%%
+\footnote{%%%
+ See the LocalInterp thorn for interpolation
+ of processor-local arrays.
+ }%%%
+
+The interpolation operators are invoked via the flesh interpolation API
+{\tt CCTK\_InterpGV()}. They are registered with the flesh under the
+name {\tt "uniform cartesian"} prepended by the interpolation order,
+i.e.\ {\tt "second-order uniform cartesian"}). Currently there are
+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.\\
+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).\\
+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).\\
+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]
-%
+are sent back to the requesting processors.
+
+\section{Implementation Restrictions}
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
@@ -46,14 +50,13 @@ Current limitations of the core interpolation routine's implementation are:
\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.
+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.
%