Transcript
Page 1: Advanced Visualization with OpenGL in Oil & Gas

Code Less, Find more oilQt in Use at Midland Valley

Page 2: Advanced Visualization with OpenGL in Oil & Gas

Introduction

• What Midland Valley does

• Deploying Qt

• Qt as our users see it

• Qt as our developers see it

writing better software - writing software better

1

Page 3: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

2

Delft University of Technology

Page 4: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Oil & Gas E & P

– 2D Line Restoration &

validation

3

Page 5: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Oil & Gas E & P

– Full 3D structural modelling

• basin modelling

• fracture modelling

• sediment modelling

4

Page 6: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Minerals

5

Page 7: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Carbon Capture & Storage

6

Page 8: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Radioactive Waste Disposal

7

Page 9: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• Geological Surveys and Government Institutes

8

Page 10: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

• University Teaching

and Research

9

Page 11: Advanced Visualization with OpenGL in Oil & Gas

Qt used for finding Oil & Gold

10

Page 12: Advanced Visualization with OpenGL in Oil & Gas

Life BQ (Before Qt)

• Multi-platform environment

• 2DMove

– Win32/MFC

– Linux/SunOS/Irix through Mainwin

• 3DMove

– Unix Motif

Page 13: Advanced Visualization with OpenGL in Oil & Gas

Introducing Qt in MVE

• 4DMove, using Qt from day one

• Windows and Linux

• Easy to use UI & Workflows

• 3D View using Coin/SoQt

12

Page 14: Advanced Visualization with OpenGL in Oil & Gas

It’s all Qt now

• All products ported to Qt

– 3DMove in 2007,

– 2DMove in 2008

• All products released as

one, using launcher

• Windows and Linux, 32 and 64 bits

• One common toolkit, one common code base

13

Page 15: Advanced Visualization with OpenGL in Oil & Gas

Model / Views

14

Page 16: Advanced Visualization with OpenGL in Oil & Gas

Graphics - 1

• Painter, plots

• Screen shots here

15

Page 17: Advanced Visualization with OpenGL in Oil & Gas

Graphics - 2

• QGraphicsView

• Screen shot here

16

Page 18: Advanced Visualization with OpenGL in Oil & Gas

Graphics – 3(D)

• Coin, SoQt, Quarter

• Screen shot here

17

Page 19: Advanced Visualization with OpenGL in Oil & Gas

WebKit and Google Maps

18

Page 20: Advanced Visualization with OpenGL in Oil & Gas

Writing Better Software

• Rich set of widgets

• Designer

• Support libraries!

– WebKit, QtConcurrent,

QOpenGL, Network,

XML, Help...

• Qt makes hard things easy

19

Page 21: Advanced Visualization with OpenGL in Oil & Gas

• Send objects from C++ to JavaScript

C++ and JavaScript talk WebKit

20

webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller );

void renderInWebPage(QObject* object, double lat, double lng){

object->setProperty("name", QVariant("name"));object->setProperty("lat", QVariant(lat)); object->setProperty("long", QVariant(lng)); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object );webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);"));

}

webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller );

void renderInWebPage(QObject* object, double lat, double lng){

object->setProperty("name", QVariant("name"));object->setProperty("lat", QVariant(lat)); object->setProperty("long", QVariant(lng)); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object );webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);"));

}

void renderObject(object){

var ov = new GMarker(new GLatLng(geo.lat, geo.long));var infoHtml = geo.description ? geo.description : geo.name;map.addOverlay(ov);ov.bindInfoWindowHtml(infoHtml);var el = GEvent.addListener(ov, "click", function() {

if(mapController) mapController.geoClick(geo.id);});

}

void renderObject(object){

var ov = new GMarker(new GLatLng(geo.lat, geo.long));var infoHtml = geo.description ? geo.description : geo.name;map.addOverlay(ov);ov.bindInfoWindowHtml(infoHtml);var el = GEvent.addListener(ov, "click", function() {

if(mapController) mapController.geoClick(geo.id);});

}

• Use objects in JavaScript and call back C++

Page 22: Advanced Visualization with OpenGL in Oil & Gas

• Old Single Threaded

QtConcurrent

21

// now unfold the passive bedsfor(int i=0; i<_passiveBedSize; i++){

restorePassiveBed(_toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward);

}

// now unfold the passive bedsfor(int i=0; i<_passiveBedSize; i++){

restorePassiveBed(_toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward);

}

QFutureSynchronizer<void> synchronizer;

// now unfold the passive bedsfor(int i=0; i<_passiveBedSize; i++){

QFuture<bool> future = QtConcurrent::run(this, &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward);

synchronizer.addFuture(future);}

synchronizer.waitForFinished();

QFutureSynchronizer<void> synchronizer;

// now unfold the passive bedsfor(int i=0; i<_passiveBedSize; i++){

QFuture<bool> future = QtConcurrent::run(this, &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward);

synchronizer.addFuture(future);}

synchronizer.waitForFinished();

• New Fast Parallel

Page 23: Advanced Visualization with OpenGL in Oil & Gas

Writing Software Better

• Several platforms, One code

• Build system, devenv integration

• Reusable UI

– Custom widgets

– Designer Plugins

• Unit testing

• Trolltech/Nokia support

22

Page 24: Advanced Visualization with OpenGL in Oil & Gas

Custom Widgets & Designer Plugin

23

Page 25: Advanced Visualization with OpenGL in Oil & Gas

Unit Testing

• UI for unit testing

• Selective test

execution

24

Page 26: Advanced Visualization with OpenGL in Oil & Gas

Conclusion

• Better software

– Rich UI, integrate with modern technology

– Improve workflows and provide richer functionnality

• Better tool

– Streamline development cycle

– Improve stability and quality

25


Top Related