Quantifications of Margins and Uncertainties with Dakota

Physical basis

The methods for Quantification of Margins and Uncertainties (QMU) are based on the Design Analysis Kit for Optimization and Terascale Applications (DAKOTA) software [Eldred2008], which is embedded within ISSM [Larour2012b,Larour2012a]. Available DAKOTA analyses include sensitivity and sampling analyses, which we respectfully rely on to: 1) understand the sensitivity of model diagnostics to local variations in model fields and 2) identify how variations in model fields impact uncertainty in model diagnostics. Diagnostics of interest include ice volume, maximum velocity, and mass flux across user-specified profiles.

Mesh Partitioning

QMU analyses are carried out on partitions of the model domain. Each partition consists of a collection of vertices. The ISSM partitioner is versatile. For example, the partitioner can assign one vertex for each partition (linear partitioning); the same number of vertices per partition (unweighted partitioning); or it can weight partitions by a specified amount (equal-area by default - to remove area-specific dependencies). Advanced partitioning is accomplished using the CHACO Software for Partitioning Graphs [Hendrickson1995], prior to setting up the model parameters for QMU analysis.

Sensitivity

Sensitivity, or local reliability, analysis computes the local derivative of diagnostics with respect to model inputs. It is used to assess the spatial distribution of this derivative, for the purpose of spatially ranking the influence of various inputs.

Given a response LaTeX equation that is a function of multiple variables LaTeX equation in a local reliability analysis [Coleman1999], we have:

LaTeX equation

where the sensitivities are defined as:

LaTeX equation

If each of the variables is independent, the error propagation equation defines the variance of LaTeX equation as:

LaTeX equation

where LaTeX equation is the standard deviation of LaTeX equation and LaTeX equation is the standard deviation of LaTeX equation.

Importance factors for each LaTeX equation are determined by dividing the error propagation equation by LaTeX equationr2. Note that the mean of the response is taken to be the response for the nominal value of each variable LaTeX equation.

Sensitivities are computed from the function evaluations using finite differences. The finite difference step size is user-defined by a parameter in the ISSM model. This analysis imposes the finite-difference step size as a small perturbation to LaTeX equation. The resulting sensitivities quantify how the location of errors impact a specified model diagnostic (LaTeX equation).

First, DAKOTA calls one ISSM model solve for an un-perturbed control simulation. Then, for every LaTeX equation, ISSM perturbs each partition one at a time, and calls an ISSM solve for each. At every partition, LaTeX equation, a resulting sensitivity, LaTeX equation is assigned. Each LaTeX equation (defined above) is dependent on how much the outcome diverges from the control run. The result is a spatial mapping of sensitivities and importance factors of LaTeX equation for every LaTeX equation. For Transient solves, sensitivities are determined only at the completion of a forward run.

Method inputs: LaTeX equation for each LaTeX equation at every partition and the finite difference step

Method outputs: sensitivities (LaTeX equation) and importance factors for each LaTeX equation at every partition

Sampling

Sampling analysis quantifies how input errors propagate through a model to impact a specified diagnostic, LaTeX equation. It a Monte-Carlo-style method that relies upon repeated execution (samples) of the same model, where input variables are perturbed by different amounts at each partition for each individual run. Resulting statistics (mean, standard deviations, cumulative distribution functions) are calculated after the specified number of samples are run.

For a particular sample, every LaTeX equation is perturbed by a different amount at each partition. Input values are perturbed randomly, per partition, within a prescribed range (described by a statistical distribution, e.g. normal or uniform). Once the variables are perturbed, the ISSM model solve is called.

Distributions: A normal distribution for a particular partition is fully described by an average, LaTeX equation, and a standard deviation, LaTeX equation. By definition, normal distributions cluster around LaTeX equation and decrease towards the tails, in a Gaussian bell curve ranging from LaTeX equation. A uniform distribution places greater emphasis on values closer to the tails, where probability of occurrence is equal for any given value within a specified minimum and maximum value.

If a user chooses so, any LaTeX equation can be treated as a scaled value. In this case, the distribution definitions are given in percentages, relative to a LaTeX equation value of 1.

For example, at the beginning of a particular sample for a scaled LaTeX equation, DAKOTA chooses a random percentage perturbation LaTeX equation at each partition LaTeX equation. The value of the random percentage will fall within the defined error distribution, and the new value of LaTeX equation for duration of this sample run is perturbed by LaTeX equation. The generation algorithm for LaTeX equation is user-specified (e.g. Monte-Carlo or LHS [Swiler2004]).

In the case where the user wants to sample LaTeX equation variables at the same time, a LaTeX equation is chosen separately for each LaTeX equation before a particular sample run. Resulting statistics reflect the combined effects of the errors due to LaTeX equation.

For Transient simulations, LaTeX equation remains constant for the duration of a particular sample run. Note that statistics are determined only at the completion of each forward run.

Method inputs: The number of samples to be run and for every LaTeX equation, a definition of error distribution (error ranges may vary spatially by partition)

Method outputs: For LaTeX equation, mean, standard deviations, and cumulative distribution functions resulting from errors due to LaTeX equation

Model parameters

The parameters relevant to uncertainty quantification can be displayed by typing:

>> md.qmu
  • md.qmu.isdakota: 1 to activate qmu analysis, or else 0
  • md.qmu.variables: arrays of each variable class
  • md.qmu.responses: arrays of each diagnostics class
  • md.qmu.numberofresponses: number of responses
  • md.qmu.params: array of method-independent parameters
  • md.qmu.results: holder class for information from dakota result files
  • md.qmu.partition: user provided, the partition each vertex belongs to
  • md.qmu.numberofpartitions: number of partitions
  • md.qmu.variabledescriptors: list of user-defined descriptors for variables
  • md.qmu.responsedescriptors: list of user-defined descriptors for diagnostics
  • md.qmu.method: array of dakota_method class
  • md.qmu.mass_flux_profile_directory: directory for mass flux profiles
  • md.qmu.mass_flux_profiles: list of mass_flux profiles
  • md.qmu.mass_flux_segments: used by process_qmu_response_data to store processed profiles
  • md.qmu.adjacency: adjacency matrix from connectivity table, partitioner computes it by default
  • md.qmu.vertex_weight: weight for each vertex, partitioner sets it from connectivity by default

Building the CHACO and DAKOTA packages

In order to run DAKOTA with ISSM, you must compile and install the external package DAKOTA ($ISSM_DIR/externalpackages/dakota). In addition, for complex partitioning (more than one vertex per partition), you must compile and install the external package CHACO ($ISSM_DIR/externalpackages/chaco).

In addition, your configure script should include the following:

--with-chaco-dir=$ISSM_DIR/externalpackages/chaco/install \ --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \

More recent versions of DAKOTA also require the external package Boost ($ISSM_DIR/externalpackages/boost). If installed, it should also be added to your configure script:

--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \

Partitioning a Mesh

To partition your mesh using CHACO, use the following commands:

>>md.qmu.numberofpartitions=1000; % Note: CHACO can crash if too large >>md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on'); %weighting on for weighted partitioning (equal-area by default), off for equal vertex partitioning >>md.qmu.partition=md.qmu.partition-1; %With chaco, partition numbers must be adjusted by 1

or, for a 1-to-1 mapping of vertices to partitions:

>>md.qmu.numberofpartitions=md.mesh.number_of_vertices; >>md=partitioner(md,'package','linear');

Setting up the QMU

For sensitivity

>>md.qmu.method=dakota_method('nond_l');

This sets the method to local reliability (sensitivity). Other sensitivity settings:

>>md.qmu.params.fd_gradient_step_size='0.1'; %finite difference step size, 0.001 by default

For sampling

>>md.qmu.method=dakota_method('nond_samp'); >>md.qmu.method(end)=... dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',500,'sample_type','lhs');

where 'seed' is used for reproducibility of results and 'samples' is the number of samples requested.

Other sampling settings:

>>md.qmu.params.tabular_graphics_data=true; %Output all the information needed to create histograms of results

Other simple default settings for both sampling and sensitivity

>>md.qmu.params.evaluation_concurrency=1; >>md.qmu.params.analysis_driver=''; >>md.qmu.params.analysis_components=''; >>md.qmu.params.direct=true;

Setting your QMU variables

Example: Here, the input of interest is md.friction.coefficient, scaled, with error defined as a normal distribution with a mean of 1 and a standard deviation of 10%:

>>md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.1);

This sets the standard deviation to a constant value at every partition. After it is initialized as above, the standard deviation can be set manually, so that it varies spatially by partition:

md.qmu.variables.drag_coefficient.stddev=uncertainty_on_partition;

See also:

>>help normal_uncertain >>help uniform_uncertain >>help AreaAverageOntoPartition

Setting your diagnostics

Example: Here, diagnostics of interest are (1) maximum velocity and (2) mass flux through two different gates. Mass flux gates are defined by the ARGUS files '../Exp/MassFlux1.exp' and '../Exp/MassFlux2.exp':

%responses md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.01 0.25 0.5 0.75 0.99]); md.qmu.responses.MassFlux1=response_function('indexed_MassFlux_1',[],[0.01 0.25 0.5 0.75 0.99]); md.qmu.responses.MassFlux2=response_function('indexed_MassFlux_2',[],[0.01 0.25 0.5 0.75 0.99]); %mass flux profiles md.qmu.mass_flux_profiles={'../Exp/MassFlux1.exp','../Exp/MassFlux2.exp'}; md.qmu.mass_flux_profile_directory=pwd;

For more options see:

>>help response_function

Running a simulation

Note: You must set your stress balance tolerance to LaTeX equation or smaller in order to avoid the accumulation of numerical residuals between consecutive samples:

>>md.stressbalance.restol=10^-5;

To initiate the analysis of choice, use the following commands:

>> md.qmu.isdakota=1; >> md=solve(md,'Masstransport');

The first argument is the model, the second is the nature of the simulation one wants to run.

References

  • H. W. Coleman and W. G. Steele Jr. Experimentation and Uncertainties Analysis for Engineers. John Wiler, 1999.
  • Michael S. Eldred, Brian M. Adams, David M. Gay, Laura P. Swiler, Karen Haskell, William J. Bohnhoff, John P. Eddy, William E. Hart, Jean-Paul Watson, Patricia D. Hough, and Tammy G. Kolda. DAKOTA, A Multilevel Parallel Object-Oriented Framework for Design Optimization, Parameter Estimation, Uncertainty Quantification, and Sensitivity Analysis, Version 4.2 User's Manual, Technical Report SAND 2006-6337. Technical report, Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185, 2008.
  • B. Hendrickson and R. Leland. The Chaco user's guide, version 2.0, Technical Report SAND-95-2344. Technical report, Sandia National Laboratories, Albuquerque, NM 87185-1110, 1995.
  • E. Larour, M. Morlighem, H. Seroussi, J. Schiermeier, and E. Rignot. Ice flow sensitivity to geothermal heat flux of Pine Island Glacier, Antarctica. J. Geophys. Res. - Earth Surface, 117(F04023):1-12, NOV 16 2012.
  • E. Larour, J. Schiermeier, E. Rignot, H. Seroussi, M. Morlighem, and J. Paden. Sensitivity Analysis of Pine Island Glacier ice flow using ISSM and DAKOTA. J. Geophys. Res., 117, F02009:1-16, 2012.
  • Laura P. Swiler and Gregory D. Wyss. A User's Guide to Sandia's Latin Hypercube Sampling Software: LHS UNIX Library/Standalone Version, Technical Report SAND2004-2439. Technical report, Sandia National Laboratories, PO Box 5800, Albuquerque, NM 87185-0847, 2004.