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])