Blurb::
Multifidelity uncertainty quantification using stochastic collocation
Description::
As described in :dakkw:`method-stoch_collocation`, stochastic collocation
is a general framework for approximate representation of random response
functions in terms of finite-dimensional interpolation bases, using
interpolation polynomials that may be either local or global
and either value-based or gradient-enhanced.

In the multifidelity case, we decompose this interpolant expansion
into several constituent expansions, one per model form or solution
control level.  In a bi-fidelity case with low-fidelity (LF) and
high-fidelity (HF) models and an additive discrepancy approach, we have:


.. math:: R = \sum_{i=1}^{N_p^{LF}} r^{LF}_i L_i(\xi)
   + \sum_{i=1}^{N_p^{HF}} \delta_i L_i(\xi) 

where :math:`\delta_i`  is a coefficient for the discrepancy expansion.

The same specification options are available as described in
:dakkw:`method-stoch_collocation` with one key difference: the
coefficient estimation inputs change from a scalar input for a single
expansion to a <i>sequence</i> specification for a low-fidelity expansion
followed by multiple discrepancy expansions.

To obtain the coefficients :math:`r_i`  and :math:`\delta_i`  for each of
the expansions, the following options are provided:



1. multidimensional integration by a tensor-product of Gaussian quadrature rules (specified with ``quadrature_order_sequence``, and, optionally, ``dimension_preference``).

2. multidimensional integration by the Smolyak sparse grid method (specified with ``sparse_grid_level_sequence`` and, optionally, ``dimension_preference``)


It is important to note that, while ``quadrature_order_sequence`` and
``sparse_grid_level_sequence`` are
array inputs, only one scalar from these arrays is active at a time
for a particular expansion estimation.  In order to specify anisotropy
in resolution across the random variable set, a ``dimension_preference``
specification can be used to augment these scalar specifications.

Multifidelity UQ using SC requires that the model selected for
iteration by the method specification is an ensemble surrogate model
(see :dakkw:`model-surrogate-ensemble`), which defines an an ordered
sequence of model fidelities or resolutions.  Two types of hierarchies
are supported: (i) a hierarchy of model forms composed from more than
one model within the ``ordered_model_fidelities`` specification, or
(ii) a hierarchy of discretization levels comprised from a single
model (either from a ``truth_model_pointer`` specification or a single
entry within an ``ordered_model_fidelities`` specification) which in
turn specifies a ``solution_level_control`` (see
:dakkw:`model-single-solution_level_control`).

In both cases, an expansion will first be formed for the low fidelity
model or coarse discretization, using the first value within the
coefficient estimation sequence, along with any specified refinement
strategy.  Second, expansions are formed for one or more model
discrepancies (the difference between response results if ``additive``
``correction`` or the ratio of results if ``multiplicative``
``correction``), using all subsequent values in the coefficient estimation
sequence (if the sequence does not provide a new value, then the
previous value is reused) along with any specified refinement
strategy.  The number of discrepancy expansions is determined by the
number of model forms or discretization levels in the hierarchy.

After formation and refinement of the constituent expansions, each of
the expansions is combined (added or multiplied) into an expansion
that approximates the high fidelity model, from which the final set of
statistics are generated.

*Additional Resources*

Dakota provides access to multifidelity SC methods through the
NonDMultilevelStochCollocation class. Refer to the 
:ref:`theory:uq:expansion` section within the theory portion of the Users Guide
for additional information on the Multifidelity SC algorithm.

*Expected HDF5 Output*

If Dakota was built with HDF5 support and run with the
:dakkw:`environment-results_output-hdf5` keyword, this method
writes the following results to HDF5:


- :ref:`hdf5_results-se_moments` (expansion moments only)
- :ref:`hdf5_results-pdf`
- :ref:`hdf5_results-level_mappings`

In addition, the execution group has the attribute ``equiv_hf_evals``, which
records the equivalent number of high-fidelity evaluations.
Topics::

Examples::

.. code-block::

    method,
     multifidelity_stoch_collocation
       model_pointer = 'HIERARCH'
       sparse_grid_level_sequence = 4 3 2
    
    model,
     id_model = 'HIERARCH'
     surrogate ensemble
       ordered_model_fidelities = 'LF' 'MF' 'HF'
       correction additive zeroth_order


Theory::

Faq::

See_Also::
