.. _releasenotes-64:

""""""""""""""""""""""""
Version 6.4 (2016/05/16)
""""""""""""""""""""""""

**Highlights**

- Training materials were significantly refreshed to emphasize practical approaches to Dakota usage. Videos of training are also now available on the Dakota web portal.
- Building with more modern toolchains, including GCC 5.1.0 and Intel 16, now is supported. Dakota is also now compatible with CMake 3.0.
- Select UQ improvements:  The active subspace capability has been matured significantly, there is an initial random field generation and propagation approach, and the Bayesian calibration methods have a set of improved controls and options (including chain post-processing and printing of statistics and prediction intervals on filtered chains).
- Multi-level Monte Carlo sampling, which can treat hierarchical model fidelities and discretization controls to adaptively sample across levels, has been added as an experimental feature.
- Several sampling method enhancements were introduced, including batch sampling to augment initial samples, a new capability for D-optimal designs, and a new option for Wilks-based tolerance intervals for sample size determination.

**Uncertainty Quantification (UQ)**

- Initial random field approximation capability for propagating field-valued uncertainties through simulation codes:

  - Use data (e.g. ensemble samples over a random field) to generate a random field model which is in the form of a summation of basis functions weighted by random coefficients, e.g. a Karhunen-Loeve expansion
  - Generate sample realizations of the random field model
  - Propagate the random field sample realizations through a simulation code

- Greatly matured active subspace capability, including ability to perform UQ with various methods (PCE, sampling, local reliability)

  - User can now specify a model of type 'subspace'
  - Various metrics for subspace detection (explicit control, Constantine metric, Bing Li metric, and eigenvalue energy)
  - Transformation to standardized probability space
  - Automatic response gradient scaling
  - Late runtime updates and resizing, parallel communication
  - Basic technique for handling inactive variables
  - Finite differences in the reduced space

- New sampling options:

  - Improved ability for batch sampling to augment initial samples with a sequence of refinement samples.  Note: incremental random and LHS sampling require new input file syntax (refinment_samples instead of previous_samples)
  - Incremental random and LHS sampling no longer require restart processing and can evaluate any points missing from a previous run
  - New (experimental) option for D-optimal (determinant optimal) sample designs
  - New option for Wilks tolerance interval-based sample size selection

- Bayesian calibration algorithms:

  - Surrogate-based adaptive inference now uses Leja sequences for improved point selection in refining the surrogates
  - New output of credible and prediction intervals
  - User can filter the posterior chain to discard burn-in or sub-sample; final statistics and chain output are based on the filtered chain

- Bayesian calibration usability:

  - Optins for adaptive surrogates, MAP pre-solve, and Hessian updates all work independently
  - DREAM method supports all Dakota uncertain variable types
  - Inferred distribution bounds define the calibration domain

- There is an experimental capability to perform multi-level Monte Carlo sampling, which can treat hierarchical model fidelities and discretization controls to adaptively sample across levels.

**Optimization and Calibration**

**Methods (general)**

- Surrogate models may now be refined iteratively through addition of training data (auto_refinement). Refinement continues until a cross-validation quality metric has been achieved or max_iterations or max_function_evaluations has been surpassed.
- If credible and prediction intervals (specified by "probability_levels" with Bayesian calibration using QUESO or DREAM) are desired for examples with field calibration terms, the number of intervals specified must be divisible by the length of the field responses (specified with the keyword "lengths") rather than by the number of calibration terms. 
- Multifidelity stochastic expansions: now compute low fidelity first, followed by discrepancy to allow flexbility in nesting/ordering.
- Piecewise Voronoi Surrogates received a bugfix to address a scalling issue that affected POF and RKD. Better output for visualation was also added.

*Framework*

- Model abstraction changes:

  - SimulationModel replaces SingleModel, and compute_response becomes evaluate()
  - RecastModel generalized to support new use cases: SubspaceModel, RandomFieldModel

*Build System / TPLs*

- Moved dprepro to scripts directory to make easier to find and install it and other scripts with proper permissions.
- Refactor motif/sciplot third-party library into Dakota vs. third-party components
- Greater compiler support:

  - Newer compilers now supported, GCC 5.1.0 and Intel 16.
  - Standard C++-11 now supported via compiler flag:  -std=c++11.
  - Jenkins nightly builds using GCC 5.1.0.
  - KNOWN LIMITATION:  Methods using algorithms from the ACRO library will FAIL due to runtime exception when compiled with Intel 15 or Intel 16.

*Documentation*

- Enabled search in developer Doxygen manual

**User Experience**

- Training videos and exercise materials are available on the Dakota web portal.
- New sensitivity analysis and uncertainty quantification training materials (presentations and exercises). Improved training materials on interfacing, optimization, calibration, and model characterization.

**Miscellaneous Enhancements**

*Architecture*

- Substantial cleanup of correlation calculations, including use of  QR factorization to calculate partial correlations.  This fix will enable more stable behavior, especially in cases with discrete variables or poorly conditioned sample data sets.  The rank and partial correlations now will return Nan or Inf when appropriate.
- Bug: Fix library mode segmentation fault due to uninitialized data members (thanks to Rich Drake) and memory leaks in POF and VPS methods.
- Bug: Fixed latent bug in discrete variables when experiment data present.
- Approximations now know their own names and have better APIs for diagnostics and cross-validation.
- New ProbabilityTransformModel (a lightweight RecastModel) to perform a Nataf transform
- Probability transformations received several enhancements. Bounds are now more closely managed, and include options for distribution, truncated, or unbounded. Fixed latent bug with variable counters.  Also new ProbabilityTransformModel (a lightweight RecastModel)
- New RandomVariable component from Pecos now allows drawing realizations, enabling arbitrary priors in DREAM/WASABI (and QUESO)  
- New Pecos support for discrete orthoginal polynomials
- API name changes: core_run instead of find_optimum, minimize_residuals, quantify_uncertainy, etc.; evaluate instead of compute_response
- Code cleanup on std:: namespace, streams, char*, POSIX functions, switch(bool), and various small fixes for compiler portability

*Build / Test System*

- New CTest labels Experimental, CarryDiff, StochDiff allow exclusion of experimental, DIFF-ing, and stochastic behaving tests, respectively.  New FastTest label facilitates quick testing.
- Improved build system dependencies so parser files are generated reliably and without duplication, and so QUESO doesn't needlessly rebuild.  No longer generated uneeded GUI-related files.
- CMake 3.x can now be used to configure Dakota (required fixing Java utilities)
- Reduced cross-platform/compiler testing variability by fixing seeds, updating baselines, and properly differencing NaN/Inf.
- The system/fork interface has been changed to direct for several tests to speed up testing.
- The training examples under examples/training/201508/solutions are now included under testing.  Use ctest label "TrainingTest" to run them.
- ENH: Improved spectral diffusion test problem to match published results and allow more configuration options.  New 1-D heat equation tester.

*Examples / Tests*

- Improved steady state 1D diffusion test problem to match published results and allow more configuration options. New transient 1D diffusion test problem.

*Methods*

- ENH: (UQ) More accurate probability to/from reliability level mappings so negative probabilities aren't reported

**Miscellaneous Bug Fixes**

- Bug: Surrogates models that lacked a dace_method_pointer and were built purely from imported training data can now be exported.
- Bug: Dakota's CMake probe for MPI now skips probing the environment when the user wants to force use of wrapper scripts
- Bug: Properly pass strings to Fortran using ISO C bindings to avoid memory corruption when calling LHS and some optimizers.
- Bug: When Bayesian calibrating hyper-parameters, gradient data was improperly indexed
- Bug: Dakota issues a correct error message instead of the unhelpful Error: continuous_design_upper_bounds needs 42 elements, not 42.
- Bug: When scaling constraints, but not primary functions they wouldn't get scaled.
- Bug: Surfpack C interface discarded last element of point at which to evaluate
- Bug: Corrected object access bug in branch-and-bound that was leading to seg faults.
- Bug: Use of import and challenge points for surrogates involving non-string mixed variable types are now work and are under regression testing.  String variables are still disallowed.
- Bug: fixed bug with PEBBL mixed integer optimizer
- Bug: Finite differences near domain bounds corrected; further improvements for memory efficiency made
- Bug: Correct library mode segfault due to uninitialized data members (thanks to Rich Drake); and memory leaks in POF and VPS.
- Bug: Fix latent bug in discrete variables when experiment data present

**Known Limitations**
