/
m ps-tk m ps-tk

m ps-tk - PowerPoint Presentation

tawny-fly
tawny-fly . @tawny-fly
Follow
365 views
Uploaded On 2017-08-29

m ps-tk - PPT Presentation

A C toolkit for multiplepoint simulation Alexandre Boucher Advanced Resources and Risk Technology LLC Stanford University ERE Toan Tran Stanford University EE Objectives of the toolkit ID: 583175

pattern database data mps database pattern mps data dataevent builder simulation path grid dev replicate task replicates event template

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "m ps-tk" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

m

ps-tk : A C++ toolkit for multiple-point simulation

Alexandre

Boucher

Advanced Resources and Risk Technology, LLC

Stanford University, ERE

Toan

Tran

Stanford University, EESlide2

Objectives of the toolkitA SGeMS-based C++ library to ease development of

mps algorithmsPresent abstraction of mps components

Provide a set of coherent

mps

building blocks to developersProvide implementation examplesStepping stone for the next generation of mps algorithmsTarget user is a developer not a geomodeler

NOTE:

goal is to develop tools to build

mps

algorithms not write new algorithms.Slide3

Generic mps simulation algorithm

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

Imposition of

a spatial texture (geology)

on a grid such

that it conforms to data.Slide4

Generic sequential simulation algorithm

Pattern

DatabaseSlide5

Generic sequential simulation algorithm

Pattern

DatabaseSlide6

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 elementSlide7

Generic abstraction of mps

Known values and ancillary data (trends, regions, angles, …)

Data event extracted from the grid and ancillary data

Patterns database

Replicates returned from the database that match the data event. May take different forms (e.g. distributions)

Sampler

Select a replicate from the list returned from the pattern database

Probability field adjustmentSlide8

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 replicatesSlide9

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 testingSlide10

mps_dataevent

Dataevent_distance

Compute the similarity between two data events

Distance

,

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 withSlide11

mps_pattern_database

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

Search_tree_pattern_database

Build a search tree

Multigrid_pattern_database

patDB-1

,

, … ,

patDB-1

patDB-1

One database per multi-gridSlide12

mps_replicate

Cdf_servo_sampler

Updating_cdf_servo_sampler

Random_replicate_sampler

Draw from a distribution given the constraint of a servo system

Draw from a distribution given the constraint of a servo system with a probability field

Draw a replicate from a collection of replicates

Pixel-based simulation

Patch-based simulation

,

,

,

,

,

Collection_replicate

Results from the pattern database

Cdf_replicate

Conditional distribution from the pattern database

Monte Carlo drawing from replicatesSlide13

Mps_parallelism

Computational_task_manager

Uses threads

to execute tasks

Computational_task

E

ncapsulates

data and a processing

method to be executed

by a computational

resource (thread or process).

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_taskSlide14

Type of parallelisms implemented

patDB

Task 1

Task 2

Task N

patDB-1

Task 1

patDB-1

Task N

Parallel task manager applied within a data base (e.g. patterns scanning )

Parallel task manager applied to a full simulation (e.g. CCSIM)Slide15

A note on hard data conditioningLack of standard approach for conditioning in mps

Copy data on gridBuilt-in conditioning (

snesim

)

Distance-weighted function (filtersim)Adaptive data event (ccsim)Rejection approachObjectives: mps-tk does not interfere

with conditioning approaches.

mps-tk

offers flexibility

to implement the appropriate conditioning technique.Slide16

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

_); Slide17

Pattern database with multiple gridMultigrid_pattern_database

A collection of database; one for each multiple gridEach 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

_);

}Slide18

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

()

);

}Slide19

CCSIM algorithmfor

(; _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);

}

The data event builder and the FFT-based database were previously initializedSlide20

Development and perspectivesImmediate goal is to provide tools to develop new algorithmsWrite more examples to expand and test the components and the design libraries

GPU-powered pattern databaseParallelism on server with MPIComplex gridding

Offer new perspectives

Meta-pattern database : a database of several databases

Pattern database not derived from a TI: e.g. process-based equationsCloud-based pattern database

Related Contents


Next Show more