Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National...
-
Upload
chrystal-roberts -
Category
Documents
-
view
218 -
download
1
Transcript of Component-Based Implementation of STOMP Yilin Fang Bruce Palmer Pacific Northwest National...
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
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
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
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
5
Status of ComponentizationStatus of ComponentizationStatus of ComponentizationStatus of Componentization
Completed (Initial) Solver component Chemistry component
Under development Grid component
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; }}
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 }}
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.
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
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