aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/defs.hh
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-01-16 14:43:47 -0500
committerErik Schnetter <schnetter@gmail.com>2013-01-16 14:43:47 -0500
commit1cddd960d62da42ccd111022f1326740f688b48d (patch)
tree5c0c591e8fca50868ae5f80b703c4422eef3df30 /Carpet/CarpetLib/src/defs.hh
parentf07af2a351c2096f84487b13c114a1925755eafb (diff)
CarpetLib: Rewrite array padding
Obtain cache information from thorn hwloc. Align allocated memory manually if operator new returns unaligned memory.
Diffstat (limited to 'Carpet/CarpetLib/src/defs.hh')
-rw-r--r--Carpet/CarpetLib/src/defs.hh34
1 files changed, 34 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/defs.hh b/Carpet/CarpetLib/src/defs.hh
index f41b19d86..02e36330e 100644
--- a/Carpet/CarpetLib/src/defs.hh
+++ b/Carpet/CarpetLib/src/defs.hh
@@ -113,6 +113,40 @@ enum centering { error_centered, vertex_centered, cell_centered };
+template<typename T>
+inline T div_down(T const x, T const align)
+{
+ assert(x >= 0);
+ assert(align > 0);
+ return x / align;
+}
+
+template<typename T>
+inline T div_up(T const x, T const align)
+{
+ assert(x >= 0);
+ assert(align > 0);
+ return (x + align - 1) / align;
+}
+
+template<typename T>
+inline T align_down(T const x, T const align)
+{
+ assert(x >= 0);
+ assert(align > 0);
+ return div_down(x, align) * align;
+}
+
+template<typename T>
+inline T align_up(T const x, T const align)
+{
+ assert(x >= 0);
+ assert(align > 0);
+ return div_up(x, align) * align;
+}
+
+
+
// Useful helper
template<class T>
inline T square (const T x) { return x*x; }