Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National...

10
Component-Based Component-Based Implementation of STOMP Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007

Transcript of Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National...

Page 1: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

Component-Based Implementation Component-Based Implementation of STOMP of STOMP

Component-Based Implementation Component-Based Implementation of STOMP of STOMP

Yilin FangBruce Palmer

Pacific Northwest National Laboratory

Silver Spring, 19-20 July 2007

Page 2: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

2

STOMP BRIEF REVIEWSTOMP BRIEF REVIEWSTOMP BRIEF REVIEWSTOMP BRIEF REVIEW

General-purpose tool addressing nonisothermal conditions, multiple-phase systems, nonaqueous phase liquids, subsurface reactive transportIntegrated-volume finite-difference discretizationCoupled flow equations solved with Newton-Raphson iterationVariable operational modes depending on governing equations solved (water mass, air mass, oil mass, salt mass, thermal energy): STOMP-W, STOMP-WAE,…Currently converted in FORTRAN 90, run on a variety of platforms

Page 3: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

3

Transport equations solved after flow equationsCoupled transport and chemistry systems solved using operator-splitting, chemistry system is solved using Newton Raphson iteration Petsc library is used to solve the linearized matrix equations for flow and transportMode selected: STOMP-W-sc

Page 4: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

4

STOMP-W-sc Flow ChartSTOMP-W-sc Flow ChartSTOMP-W-sc Flow ChartSTOMP-W-sc Flow ChartZeroInitializeField propBoundary propInterior fluxesBoundary fluxes

Setup

StepperTime steppingN-R iteration

Coupled flow

SourcesField propBoundary propInterior fluxBoundary fluxJacobian interiorJacobian boundary

Solve

Transport

Chemistry

I/O

I/O

Page 5: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

5

Status of ComponentizationStatus of ComponentizationStatus of ComponentizationStatus of Componentization

Completed (Initial) Solver component Chemistry component

Under development Grid component

Page 6: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

6

Solver ComponentSolver ComponentSolver ComponentSolver Componentpackage solver version 1.0 { interface SolverPort extends gov.cca.Port { void set_size( in array<int,1> luk, in array<int,1> lsize, in array<int,1> ifld, in array<int,1> jfld, in array<int,1> kfld); // define problem size; void set_inact_node(in array<int,3> ixi); // inactive node; void set_jac_pointer(in array<int,3> imxp); // jacobian pointer; void set_mat_diag(in array<double,5> adg); // diagonal block; void set_mat_bottom(in array<double,5> azl); // bottom block; void set_mat_top(in array<double,5> azu); // top block; void set_mat_west(in array<double,5> axl); // west block; void set_mat_east(in array<double,5> axu); // east block; void set_mat_south(in array<double,5> ayl); // south block; void set_mat_north(in array<double,5> ayu); // north block; void set_rhs(in array<double,4> apv); // right hand side element; void solver_solve( in int iter,out int icnv ); // assemble and solve equation; }}

Page 7: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

7

Chemistry ComponentChemistry ComponentChemistry ComponentChemistry Component

package speciation version 1.0 { interface SpeciationPort extends gov.cca.Port { void set_grid_volume(in array<double,3> vol); // grid volume; void set_porosity(in array<double,4> por); // porosity; void set_diff_porosity(in array<double,4> pord); // diffusion porosity; void set_tot_porosity(in array<double,4> port); // total porosity; void set_tot_conc(in array<double,4> c); // total transport concentration; void set_spec_conc(in array<double,4> sp_c); // individual species conc at present time; void set_spec_conco(in array<double,4> sp_co); // individual species conc at previous time; void set_lithology(in array<double,5> rs_s); // mineral property; void set_min_conc(in array<double,4> sp_cmn); // mineral concentration; void set_min_vf(in array<double,4> por_m); // mineral volume fraction; void set_wat_sat(in array<double,4> sl); // water saturation; void set_gas_sat(in array<double,4> sg); // gas saturation; void set_wat_dens(in array<double,4> rhol); // water density; void set_particle_dens( in array<double,3> rhos ); // particle density; void set_temperature( in array<double,4> t ); // temperature; void speciation(out int iecke); // solve }}

Page 8: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

8

Grid ComponentGrid ComponentGrid ComponentGrid Component

Current efforts are focused on encapsulating the grid functionality into a grid component and replacing the current structured orthogonal grids in STOMP with grids being developed under the Interoperable Technologies for Advanced Petascale Simulations (ITAPS) project.

Page 9: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

9

Possible Mesh and Operator ComponentsPossible Mesh and Operator ComponentsPossible Mesh and Operator ComponentsPossible Mesh and Operator Components

ITAPS Libraries

Mesh Operators

STOMP

ITAPS Mesh Operators

STOMP

Page 10: Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National Laboratory Silver Spring, 19-20 July 2007.

10

Issues and Further WorkIssues and Further WorkIssues and Further WorkIssues and Further Work

Borrow function has to be called to pass to functions defined in ports the scalars and arrays which are not defined as targets or pointersHard to figure out the stride in borrow function for multi- dimension arraysNeed to abstract chemistry componentMachine architecture related issuesNeed of more advanced solver technologies because of the introduction of new grids, Further componentizing the remaining STOMP code, and implementing the algorithms to couple the STOMP code to other models