diff --git a/python/dune/perftool/generation/loopy.py b/python/dune/perftool/generation/loopy.py
index 10620a1ef073c181774a21aff8073eb1fc8fad9a..f13f89cd24288fd412ec7528aedb4edddef4cf31 100644
--- a/python/dune/perftool/generation/loopy.py
+++ b/python/dune/perftool/generation/loopy.py
@@ -80,6 +80,11 @@ def default_declaration(name, shape=(), shape_impl=()):
         return '{} {}(0.0);'.format(t, name)
 
 
+@preamble
+def declaration_with_base_storage(name, base_storage):
+    return 'double* {} = {};'.format(name, base_storage)
+
+
 class _TemporaryCounter:
     counter = 0
 
@@ -99,6 +104,13 @@ def temporary_variable(name, **kwargs):
     shape_impl = kwargs.pop('shape_impl', ('arr',) * len(shape))
     decl_method = kwargs.pop('decl_method', default_declaration)
 
+
+    # Check if a specified base_storage has already been initialized
+    if kwargs.get('base_storage', None):
+        assert(kwargs['base_storage'] in [tv.name for tv in temporary_variable._memoize_cache.values()])
+        assert(decl_method is None)
+        declaration_with_base_storage(name, kwargs['base_storage'])
+
     if decl_method is not None:
         decl_method(name, shape, shape_impl)