# Presentation: 200107

## My Mandate:

- To articulate a unified _vision and roadmap_ for transformational and scalable simulation capabilities for physics-based applications.

**The Working Draft of this Vision follows**

**Motivations**:
- _Rapid_ development of new _production_ codes
- _Transformational_ design, analysis, and decision-support capabilities
- Benefit: Creates a framework for making funding, staffing, and program development decisions

**Working Hypothesis**: Our common modeling and simulation goals will best be met by delivering:
- A full range of independent yet interoperable software components
- Software quality tools and procedures
- Prototype applications that demonstrate use cases, vertical integration, and verification

*Andy Salinger, 11/08/2007, 9:30-10:30am*

- SAND 2007-7417C
- Unclassified, Unlimited Release

## Element Level Fill

- Material Models

- Derivatives

- Variable Manager

- Discretization Library

- Remeshing

- UQ Solver

- Nonlinear Solver

- Time Integration

- Optimization

- Objective Function

- Local Fill

- Mesh Database

- Mesh Tools

- I/O Management

- Input File Parser

- Utilities

- UQ (non-invasive)

- Parameter Studies

- Solution Control

- Mesh I/O

- Optimization

- Geometry Database

- Discretizations

- Derivative Tools

- Sensitivities

- UQ / PCE
- Propagation

- Constraints

- Error Estimates

- Continuation

- Constrained Solves

- Sensitivity Analysis

- Stability Analysis

*Components**** for the Rapid Development of Production Applications with Transformational Design, Analysis, and Decision-Support Capabilities

- V&V, Calibration

- Parameter List

- Feature Extraction

- Verification Tools

- Visualization

- PostProcessing

- Data Reduction

- Adaptivity

- Model Reduction

- Memory Management

- System Models

- MultiPhysics Coupling

- OUU, Reliability

- Computational Steering

- Communicators

- MultiCore
- Parallelization Tools

- Partitioning

- Load Balancing

- Analysis Tools
-    (*non-invasive)*

- Physics Fill

- Composite Physics

- Data Structures

- Direct Solvers

- Linear Algebra

- Architecture-
- Dependent Kernels

- Preconditioners

- Iterative Solvers

- Eigen Solver

- System UQ

- Analysis Tools
-    (*invasive)*

- Matrix Partitioning

- Inline Meshing

- MMS Source Terms

- Grid Transfers

- Mesh Quality

- Mesh Database

- Solution Database

***capabilities accessible     in-core (online) *via* libraries

- Runtime Compiler

## Regression Testing

- Bug Tracking

- Version Control

- Software Quality

- Porting

- Performance Testing

- Code Coverage

- Mailing Lists

- Release Process

- Reduced Order Modeling

- Visualization

- Offline Capabilities

- Meshing

- Order Verification

- BlackBox Optmization

- Sampling UQ

- FEApp

- Sundance

- Tramonto

- Template Applications
- Demonstrating
- Expected Use-Cases

- Demonstration Apps

- Charon

- Aria

- Mantevo Beam

- Scientific Applications
- Providing Pull

- Aleph

- _Offline Capabilities_ for the Rapid Development of Production Applications with Transformational Design, Analysis, and Decision-Support Capabilities

**Notes:**
Only the Purple-Colored boxes are the application-specific code: concerning physics and post-processing

## Some Feedback So Far

- Isn’t this just Trilinos?

- Need to design interfaces that are general, flexible extensible, C++, templated.

- Need a low barrier for entry – have a simple interface as an option.

- This is too ambitious – it is doomed to fail.

- “Part of your job is to define ‘Production’”.

- A code isn’t verified until certified by Dakotatm.

- There aren’t enough resources to go it alone – we need to partner with Sierra.

- Don’t put 1500 on the critical path, they have different pressures.

- Start a Wiki.

- Talk to non-traditional
- apps like nanoparticles.

- Need 1400 flagship science
- app for pull/demonstration.

- Adaptivity comes with a huge
- price – do we really want it?

- What’s the target date
- for finishing this?

## Now, on to a RoadMap.

- What’s a roadmap look like?

## Paths Forward -- All in parallel:

- Modularize existing capabilities into components
- Make components interoperable where it makes sense
- Create collected interfaces around clumps of components
- Develop demonstration/prototype applications for:
- Vertical integration of algorithmic capabilities
- Software environment
- Verification procedures
- Propagate capabilities into Sandia Apps
- Improve capabilities
- Decrease maintenance costs
- Research future capabilities, including:
- Intrusive UQ and Decision Support
- MultiCore Algorithms
- Compatible and Hybrid Discretizations
- Your current work

- The Goals:	Rapid         Production 	 Transformational

- e.g. NOX, Moocho

- e.g. MOAB, phdMesh

- Mesh Tools

- e.g. Teuchos

- Utilities

- e.g. Zoltan, Encore

- e.g. Dakota

- Some Familiar Components

- e.g. ParaView, Encore

- PostProcessing

- e.g. SolutionControl, BRISC

- Analysis Tools
-    (*non-invasive)*

- Composite Physics

- e.g. Epetra, ML

- Linear Algebra

- Analysis Tools
-    (*invasive)*

- Mesh Database

- e.g. Charon, Salinas

- e.g. Intrepid, SierraEL

- Local Fill

- Discretizations

- Derivative Tools

- e.g. Sacado, ADIC

- Physics Fill

- Some Collected Interfaces

- ITAPS Interfaces

- Thyra::LOWS,
- Stratimikos

- ModelEvaluator

- DakotaApplicInterface

- FEI

- XML

- <Scalar>

## Is this a roadmap???

- Element Level Fill

- Material Models

- Derivatives

- Variable Manager

- Discretization Library

- Remeshing

- UQ Solver

- Nonlinear Solver

- Time Integration

- Optimization

- Objective Function

- Local Fill

- Mesh Database

- Mesh Tools

- I/O Management

- Input File Parser

- Utilities

- UQ (non-invasive)

- Parameter Studies

- Solution Control

- Mesh I/O

- Optimization

- Geometry Database

- Discretizations

- Derivative Tools

- Sensitivities

- UQ / PCE
- Propagation

- Constraints

- Error Estimates

- Continuation

- Constrained Solves

- Sensitivity Analysis

- Stability Analysis

- V&V, Calibration

- Parameter List

- Feature Extraction

- Verification Tools

- Visualization

- PostProcessing

- Data Reduction

- Adaptivity

- Model Reduction

- Memory Management

- System Models

- MultiPhysics Coupling

- OUU, Reliability

- Computational Steering

- Communicators

- MultiCore
- Parallelization Tools

- Partitioning

- Load Balancing

- Analysis Tools
-    (*non-invasive)*

- Physics Fill

- Composite Physics

- Data Structures

- Direct Solvers

- Linear Algebra

- Architecture-
- Dependent Kernels

- Preconditioners

- Iterative Solvers

- Eigen Solver

- System UQ

- Analysis Tools
-    (*invasive)*

- Matrix Partitioning

- Inline Meshing

- MMS Source Terms

- Grid Transfers

- Mesh Quality

- Mesh Database

- Solution Database

- On board, still defining path

- Open to participating, no path yet

- On board with well defined path

- Have not deeply engaged yet

- Said “No Thanks”

- Runtime Compiler

*Gap Analysis*

- _Is this a roadmap???_

## Is this a roadmap???

- Derivative Tools

- Sensitivities

- UQ / PCE
- Propagation

- Codes:	Sacado, (Adic, Adifor)
- Interfaces:	template <Scalar>

- Capability Lead:	Phipps
- Interoperability Lead:	Phipps
- Other POCs:	Gay

- Current Capabilities:
- 	Derivatives of templated code, second derivatives, Taylor Polynomials
- Ongoing Development:
- 	Intrusive PCE propagation for UQ, Adjoints for error estimation
- Gaps / Opportunities:
- 	Other intrusive UQ methods, interval arithmetic, production uses outside of Charon,

- Current Interoperability:	Requires templating of code at element level
- Desired Interoperability:	For PCE, need to form and solve block matrix

- Milestones (owner, date):
- Demonstrate propagation of PCE with Sacado on demoApp (Phipps, FY08Q2)
- Form and solve block matrix with parallelism (Salinger/Phipps, FY08Q3)
- Compare Intrusive UQ to Stochastic Collocation (Phipps, FY08Q4)
- Adjoints for error estimation in Charon (many, FY08Q4)
- Put PCE into Charon (Phipps, FY09Q1)
- Use in Aria (TBD)
- Investigate hybrid intrusive-sampling approaches (TBD)

- _Is this a roadmap???_

## PDE Verification 101 (with Knupp, Ober)

|  | Have a theory manual that specifies the equations being solved in the code, including BCs and ICs. |
| --- | --- |
|  | Link the implementation of the equations in the code to the theory manual via comments. (Consider using comments to auto-generate theory manual.) |
|  | Add hooks for user-defined source terms to all PDEs, BCs, and ICs to enable MMS.. |
|  | Have a post-processing capability to compare solutions against an analytical function (can be online or offline). |
|  | Demonstrate convergence of results towards analytic solutions, either of the natural solutions or of MMS solutions. |
|  | Put test problems in a regression test suite that is run automatically against the development version of the code. |
|  | Repeat comparison against analytic solutions for skewed meshes. |
|  | Repeat comparisons against analytic solutions for a larger set of problems that test a wide variety of PDE choices, BCs, ICs, source terms, or other code options. |
|  | Perform order verification for transient calculations on a problem where you can afford to get in the asymptotic regime, either against analytic solutions or by extrapolations. |
|  | Perform order verification spatial discretization on a problem where you can afford to get in the asymptotic regime, either against analytic solutions or by extrapolations. |
|  | Present error bars on solutions – we recommend the method of Roach. Use a sequence of 2 meshes, extrapolate using known order in space and time, and multiply this extrapolated error by 3 to size the error bar. For a sequence of 3 meshes, the error bar factor is decreased to 1.?? . |
|  | Verify solution algorithms against theoretical properties, such as quadratric convergence of Newton’s method. Check with finite difference or Automatic differentiation. |
|  | Code Coverage 1, functions: monitor what functions are called by test suite. Expand test suite to improve coverage. |
|  | Code Coverage 2, parameters: monitor what input parameter option combinations are covered by test suite. Expand test suite to improve coverage. |
|  | Code Coverage 3, lines: monitor what code lines are covered by the test suite. Expand test suite to improve coverage. |

## Things you can do to help

**Work towards the vision, with your current funding and in your proposals**

**Help form vision and roadmap so that you believe in them, or at least trust that they are a consensus.**

**Be aware of other work – there is too much redundancy and non-interoperability. (Attend some department reviews.)**

**In applications, work to create general, reusable components, to improve our capability base for the next customer**

**In applications, take the time to adopt components and ripen capabilities**