diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py
index 24be3ecf95afdc248a5a5fd54bca0020a870b8bd..f9caa48248f8fa579c5e378d582651548bfcda72 100644
--- a/pymbolic/primitives.py
+++ b/pymbolic/primitives.py
@@ -1571,17 +1571,21 @@ def make_common_subexpression(field, prefix=None, scope=None):
             return CommonSubexpression(field, prefix, scope)
 
 
-def make_sym_vector(name, components):
+def make_sym_vector(name, components, var_class=None):
     """Return an object array of *components* subscripted
-    :class:`Variable` instances.
+    :class:`Variable` (or subclass) instances.
 
-    :param components: The number of components in the vector.
+    :arg components: The number of components in the vector.
+    :arg var_class: The :class:`Variable` subclass to use for instantiating
+        the scalar variables.
     """
     if isinstance(components, int):
         components = list(range(components))
 
+    if var_class is None:
+        var_class = Variable
     from pytools.obj_array import join_fields
-    vfld = Variable(name)
+    vfld = var_class(name)
     return join_fields(*[vfld.index(i) for i in components])