# Presentation: 856405

## Agile Components for the Rapid Development of Production Applications 

- To align the many efforts at Sandia involved in developing software for the modeling and simulation of physical systems (mostly PDEs):
- To enable the _Rapid_ development of new _Production_ codes
- To embed the codes with _Transformational_ design, analysis, and decision-support capabilities
- To benefit from Synergy & reduce Redundancy

- Agile Components for the Rapid Development of Production Applications

**Andy Salinger, CSRI,**
**Sandia National Laboratories**

**Consensus Vision**: Our goals will best be met by delivering:
- A full range of independent yet interoperable software components
*Capabilities*
*Interfaces*
- Software quality tools and procedures
- Prototype applications that demonstrate use cases, vertical integration, and verification, and provide pull

- SAND2008-7503P

## Agile Components

- Element Level Fill

- Material Models

- Sensitivities

- Field 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

- Adjoints

- UQ / PCE
- Propagation

- Constraints

- Error Estimates

- Continuation

- Constrained Solves

- Sensitivity Analysis

- Stability Analysis

- V&V, Calibration

- Parameter List

- Feature Extraction

- Embedded Verification

- 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
-    (*black-box)*

- Physics Fill

- Composite Physics

- Data Structures

- Direct Solvers

- Linear Algebra

- Architecture-
- Dependent Kernels

- Preconditioners

- Iterative Solvers

- Eigen Solver

- System UQ

- Analysis Tools
-    (*embedded)*

- Matrix Partitioning

- Inline Meshing

- MMS Source Terms

- Grid Transfers

- Mesh Quality

- Mesh Database

- Solution Database

- Runtime Compiler

- Derivatives

- Regression Testing

- Bug Tracking

- Version Control

- Software Quality

- Porting

- Performance Testing

- Code Coverage

- Mailing Lists

- Release Process

- Unit Testing

- Web Pages

- Build System

- Backups

- Neighbor Search / Sort

- Data Structures

- Particle Code Tools

* **Input File*

- Mesh Tools

- Utilities

- PostProcessing

- Analysis Tools
-    (*black-box)*

- Composite Physics

- Linear Algebra

- Analysis Tools
-    (*embedded)*

- Mesh Database

- Phalanx “Fill” Manager

- Discretizations

- Derivative Tools

- Physics Fill

**Some Collected Interfaces**

- ITAPS Interfaces

- Stratimikos

- ModelEvaluator

- FEI
- Epetra

- XML

- template
-  <Scalar>

*Mesh File*

- Mesh I/O
- Interface

- ResponseOnly M.E.

- Software Quality

- cmake
- SVN
- mailman

- TriKota

## Response Only Model Evaluator: an “Application” or “Problem” Abstraction

- A Model Evaluator registers what Input and Output it can handle.
- _I can make use of_:         _I can compute_:

- Response Only Model Evaluator:

## “TriKota” is an adapter between Dakota’s 	“DirectApplicInterface”

- = Dakota

- Analysis Tools
-    (*embedded)*

- ResponseOnly M.E.

- TriKota

- DirectApplicInterface

- “TriKota” is an adapter between Dakota’s 	“DirectApplicInterface”
- 	and Trilinos’	“ResponseOnlyModelEvaluator”

** ****for (int i=0; i<numVars; i++) (*modelEval_p)[i]=xC[i];**

**TriKota::Driver dakota;**
**RCP<EpetraExt::ModelEvaluator>**
**  ****App = rcp(new **_**MyResponseOnlyME(dakota.getAnalysisComm())**_** );**
**RCP<TriKota::DirectApplicInterface> **
**  ****trikota_interface = rcp(new TriKota::DirectApplicInterface**
**	****(dakota.getProblemDescDB(), App), false);**
**dakota.run(trikota_interface);**

- Main_Dakota.cpp

- Joint work with Bartlett, Adams, Eldred, Gay

- Analysis Tools
-    (*black-box)*

- TriKota contains sophisticated coding such as...

## VTK visualization software hooked up to

- Mesh Database

- ITAPS Interfaces

- generic ITAPS Mesh Database Interface

- Joint work with Nathan Fabian (1426)
- with help from Vitus Leung & Karen Devine

- vtkITAPS

- A frame is dumped every time step from a RythmosObserver object.

- Visualization

## Solvers/Analysis

- Linear Solvers

- Adaptivity

- Sacado AD

- ModelEvaluator

- Inline Meshing

- Mesh I/O

- MeshField Interface

- Input File Parser

- FEI/DOF

- Zoltan

- Intrepid

- Stokhos UQ

- Dakota OPT

- Dakota UQ

- Moocho

- Rythmos

- Adjoint in Time

- LOCA

- Phalanx Field Manager

- Error Estimates

- Transient Sensitivities

- 4D

- Mesquite

- Improved Environment

- Test Harness

- MMS Tests

- SVN

**Solvers/Analysis**

**Mesh/Element**

**Software/**
**Verification**

- OUU

- Uncertainty Inversion

- Encore

- ROM

- DG, FV

- In-core Geometry

- Code Coverage

- Order Verification

*in situ* Visualization

- MultiPoint Opt

- 2nd Mesh Database

- MultiCore

- MultiPhysics

- Performance Testing

- DemoApp Timeline

- System Solver

- Shape Optimization

- Solution Verification

- Build System

- 1D Mesh/Element

**Physics**

- 1D Heat Eq

- 1D Transient

- 2D Heat Eq

- 1D Acoustics

- 2D Acoustics

- Nightly IntegrationTesting

- Unit Tests

- 2D Elastics

- 3D PDEs

- Multi-Physics App

- Hybrid-Discretization

- Sensitivity Analysis

- GUI Input File Editor

- DONE

- PLANNED

- trivial 2D Mesh/Element

- Mesh DataB.

- STARTED WITH

- NOX

- _3/08: Started with Working 1D FEM Code (Sacado::FEApp) [Phipps] and a_
- _Trilinos-like Application Environment (Tramonto) [Willenbring, Phenow, Heroux]_

**Notes:**
The DemoApps effort strives to build an application out of interoperable packages/components. The code is designed to facilitate and model the use of our most sophisticated embedded analysis algorithms. The code also hopes to assemble a full-featured production software/verification environment that can be cut-and-pasted  for a new application.

The vision is for the code to be used as a testbed for new capabilities and for prototyping interfaces. Two recent highlights along these lines are “TriKota” interface for library-mode-Dakota, and the in situ Visualization capabilty, where “jpeg” files are rendered in parallel in core. As in the TriKota example, the philosophy is to migrate reusable code back to Trilinos. 

Not only do we expect components and interfaces that were matured in DemoApps to be used in Sierra and Ramses codes, but we hope that these ASC code bases will contribute components. The indications are good that this is happening with the mesh database component of SierraToolkit effort. 

The blue test boxes in the picture were completed this year. The purple boxes are all within striking distance in the next year, but only a subset will be accomplished. The boxes with the red outline have a conection to this CSRF pot of money. The XOM CRADA is helping drive work in optimization, explicit integrators, wave physics, and discretizations.

* I could REALLY use some manpower help in the Mesh/Element area. 
* I would love to have someone take on the vision software environment piece (build system, testing dashboard, ...).