Download presentation
Presentation is loading. Please wait.
Published byLewis Powers Modified over 6 years ago
1
mps-tk : A C++ toolkit for multiple-point simulation
Alexandre Boucher Advanced Resources and Risk Technology, LLC Stanford University, ERE Toan Tran Stanford University, EE
2
Objectives of the toolkit
A SGeMS-based C++ library to ease development of mps algorithms Present abstraction of mps components Provide a set of coherent mps building blocks to developers Provide implementation examples Stepping stone for the next generation of mps algorithms Target user is a developer not a geomodeler NOTE: goal is to develop tools to build mps algorithms not write new algorithms.
3
Generic mps simulation algorithm
Imposition of a spatial texture (geology) on a grid such that it conforms to data. Patterns Database The patterns database is typically built from training images A sequential simulation algorithm builds and queries that database The simulation is not based on the training image per se, but from the patterns extracted from that training image
4
Generic sequential simulation algorithm
Pattern Database
5
Generic sequential simulation algorithm
Pattern Database
6
Texture is function of the patterns database
The pattern database controls the look of the simulated geology The data control the locations of some texture element
7
Generic abstraction of mps
Patterns database Known values and ancillary data (trends, regions, angles, …) Data event extracted from the grid and ancillary data Sampler Select a replicate from the list returned from the pattern database Replicates returned from the database that match the data event. May take different forms (e.g. distributions) Probability field adjustment
8
Abstraction components
Data event Pattern and information retrieved from the simulation grid Pattern database Find patterns matching the data-event Replicates Outputs from the database Sampler Select a replicate from the collection of replicates
9
Libraries included in mps-tk
mps_dataevent Contains all the dev related functionalities mps_pattern_database Database and functionalities to build new database mps_replicate Sampler, servo-system and collection of replicates mps_app_utility Base classes and utilities that link mps-tk together mps_parallelism Task manager for multi-threading Unit testing Functionality and regression testing
10
mps_dataevent Created with either
? Geovalue_dataevent Data-event around a central location (+ ancillary data) Fixed_template_geodev_builder Global_template_geodev_builder Directional_overlap_dataevent Directional_overlap_dev_builder ? Created with Dataevent_distance Compute the similarity between two data events Distance ,
11
mps_pattern_database
Search_tree_pattern_database Build a search tree Scanning_pattern_database Search the TI for any data configuration. Searched with Fixed_template_pattern_database Decompose the TI into patterns with fixed shape Cross_correlation_pattern_database Fourier space TI values ready for convolution Multigrid_pattern_database patDB-1 , , … , One database per multi-grid
12
mps_replicate Results from the pattern database ,
Collection_replicate Results from the pattern database Cdf_replicate Conditional distribution from the pattern database Monte Carlo drawing from replicates Pixel-based simulation Draw from a distribution given the constraint of a servo system Cdf_servo_sampler Draw from a distribution given the constraint of a servo system with a probability field Updating_cdf_servo_sampler Patch-based simulation Random_replicate_sampler Draw a replicate from a collection of replicates
13
Mps_parallelism Computational_task Encapsulates data and a processing method to be executed by a computational resource (thread or process). Computational_task_manager Uses threads to execute tasks Currently uses the Boost thread library for shared memory machine. Designed to be extended to distributed memory applications. Platform-independent (Windows, Linux) To run in parallel, write cpu-intensive process as a Computational_task
14
Type of parallelisms implemented
Parallel task manager applied within a data base (e.g. patterns scanning ) patDB Task 1 Task 2 … Task N Parallel task manager applied to a full simulation (e.g. CCSIM) patDB-1 Task 1 … patDB-1 Task N
15
A note on hard data conditioning
Lack of standard approach for conditioning in mps Copy data on grid Built-in conditioning (snesim) Distance-weighted function (filtersim) Adaptive data event (ccsim) Rejection approach Objectives: mps-tk does not interfere with conditioning approaches. mps-tk offers flexibility to implement the appropriate conditioning technique.
16
Build a scanning pattern database
// set basic data event builder dataevent_builder->grid_is(training_image_); dataevent_builder->neighborhood_is(subgrid_ti_neighborhoods_); // set trend data event builder trend_dev_builder->dataevent_builder_is(dataevent_builder); trend_dev_builder->trend_property_is(training_image_trend_property_); fixed_template_pattern_db_->dataevent_builder_is(trend_dev_builder); // set dev_distance to pattern database fixed_template_pattern_db_->dataevent_distance_is(trend_dataevent_distance_); // Create and set dev_selector to pattern database dataevent_selector->k_number_is(k_number); // set dev_selector to pattern database fixed_template_pattern_db_->dataevent_selector_is(dataevent_selector_);
17
Pattern database with multiple grid
Multigrid_pattern_database A collection of database; one for each multiple grid Each multi-grid can use a different pattern database multigrid_scanning_pattern_db_ = Multigrid_pattern_database< Geovalue_dataevent, Collection_replicate<Geovalue_dataevent> >::Ptr_new(); for (int mgrid = 0; mgrid <= nb_mgrids_; mgrid++) { scanning_pattern_db_ = Scanning_pattern_database::Ptr_new(); // … initialize individual pattern database … // add database to the mgrid database multigrid_scanning_pattern_db_->pattern_database_add(scanning_pattern_db_); }
18
Multi-grid simulation with a scanning database
/* Loop for all multiple grids */ for (int mgrid = nb_mgrids_; mgrid >= 0; mgrid--){ /* initialize simulation path */ RGrid::random_path_iterator path_begin = simul_grid_->random_path_begin(); RGrid::random_path_iterator path_end = simul_grid_->random_path_end(); /* Set subgrid to multigrid_pattern_databases */ multigrid_fixed_template_pattern_db_->current_subgrid_is(subgrid); /* Run simulation */ pixel_based_simulate( path_begin, path_end, fixed_template_dev_builder_.get(), multigrid_fixed_template_pattern_db_.get(),sampler_.get() ); }
19
CCSIM algorithm The data event builder and the FFT-based database were previously initialized for (; _path_begin != _path_end; _path_begin++) { /* Create the data event */ Directional_overlap_dataevent::Ptr simul_dev = simul_dev_builder_->dataevent(*_path_begin); /* Get the collection of replicates from the pattern database*/ Lazy_collection_replicate<Directional_overlap_dataevent>::Ptr replicates = ccsim_pattern_db_->replicate(simul_dev); /* Randomly draw a replicate from the selected set of replicates*/ sampler_->sample(replicates); }
20
Development and perspectives
Immediate goal is to provide tools to develop new algorithms Write more examples to expand and test the components and the design libraries GPU-powered pattern database Parallelism on server with MPI Complex gridding Offer new perspectives Meta-pattern database : a database of several databases Pattern database not derived from a TI: e.g. process-based equations Cloud-based pattern database
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.