<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_field_scan(ModelClass, model_kwargs, t_output_every, t_upto, field, vals, force_resume=True, parallel=False):
 """Run many models with a range of parameter sets. Parameters ModelClass: callable A class or factory function that returns a model object by calling `ModelClass(model_kwargs)` model_kwargs: dict See `ModelClass` explanation. t_output_every: float see :class:`Runner`. t_upto: float Run each model until the time is equal to this field: str The name of the field to be varied, whose values are in `vals`. vals: array_like Iterable of values to use to instantiate each Model object. parallel: bool Whether or not to run the models in parallel, using the Multiprocessing library. If `True`, the number of concurrent tasks will be equal to one less than the number of available cores detected. """

    model_kwarg_sets = [dict(model_kwargs, field=val) for val in vals]
    run_kwarg_scan(ModelClass, model_kwarg_sets,
                   t_output_every, t_upto, force_resume, parallel)