# [cig-commits] r13295 - short/3D/PyLith/trunk/doc

knepley at geodynamics.org knepley at geodynamics.org
Tue Nov 11 17:07:56 PST 2008

Author: knepley
Date: 2008-11-11 17:07:56 -0800 (Tue, 11 Nov 2008)
New Revision: 13295

short/3D/PyLith/trunk/doc/memoryUsage.tex
Log:

===================================================================
--- short/3D/PyLith/trunk/doc/memoryUsage.tex	                        (rev 0)
+++ short/3D/PyLith/trunk/doc/memoryUsage.tex	2008-11-12 01:07:56 UTC (rev 13295)
@@ -0,0 +1,44 @@
+\section{Mesh Memory}
+
+    The \code{ISieve} maintains arrays for both cones and supports, and also for cone orientations.
+$$+ 2 (K C + V+C) + K C +$$
+where $K$ is the number of vertices per cell, $C$ is the number of cells, and $V$ is the number of vertices. We also
+store coordinates, which takes
+$$+ D V +$$
+
+    Stratification uses a \code{Sieve} as a label to associate depths and heights with sieve points. There is an arrow
+for each mesh point for both height and depth. Thus we get
+$$+ 2 A (V + C) +$$
+where $A$ is the size of an arrow in bytes. Materials are also stored this way, but in PyLith are mapped only to cells.
+
+    For an IGeneralSection, the data take up only the minimum size. The atlas is an IUniformSection so that the data
+take up $2 max(V, C)$ integers, and its atlas is an IConstantSection. Thus, for a group we expect
+$$+ 2 max(V, C) + max(V, C) +$$
+
+\subsection{Savings}
+
+\begin{itemize}
+  \item We could eliminate the redundant classification of height since we can always use depth in its place.
+
+  \item Groups could be IUniformSections since they have only 1 value per point.
+\end{itemize}
+
+\subsection{Strike-slip Benchmark}
+    For the 1000m benchmark, we have
+\begin{itemize}
+  \item $D = 3$
+  \item $K = 4$
+  \item $C = 13824$
+  \item $V = 15625$
+  \item $A = 40$
+  \item $G = 6$
+\end{itemize}
+so we get 1,274,144 bytes for the mesh, 2,355,920 for stratification, 552,960 for materials, and 1,500,000 for groups.
\ No newline at end of file