Your SlideShare is downloading. ×
0
Code Less, Find more oil
Qt in Use at Midland Valley
Introduction

• What Midland Valley does

• Deploying Qt

• Qt as our users see it

• Qt as our developers see it



  wri...
Qt used for finding Oil & Gold




                                 Delft University of Technology




                   ...
Qt used for finding Oil & Gold



• Oil & Gas E & P
   – 2D Line Restoration &
     validation




                       ...
Qt used for finding Oil & Gold



• Oil & Gas E & P
   – Full 3D structural modelling
      • basin modelling

      • fra...
Qt used for finding Oil & Gold



• Minerals




                                 5
Qt used for finding Oil & Gold



• Carbon Capture & Storage




                                 6
Qt used for finding Oil &
Gold
• Radioactive Waste Disposal




                               7
Qt used for finding Oil &
Gold
• Geological Surveys and Government Institutes




                                        ...
Qt used for finding Oil & Gold



• University Teaching
  and Research




                                 9
Qt used for finding Oil & Gold




                                 10
Life BQ (Before Qt)

• Multi-platform environment

• 2DMove
  – Win32/MFC

  – Linux/SunOS/Irix through Mainwin

• 3DMove
...
Introducing Qt in MVE

• 4DMove, using Qt from day one

• Windows and Linux

• Easy to use UI & Workflows

• 3D View using...
It’s all Qt now

• All products ported to Qt
  – 3DMove in 2007,

  – 2DMove in 2008

• All products released as
  one, us...
Model / Views




                14
Graphics - 1

• Painter, plots

• Screen shots here




                      15
Graphics - 2

• QGraphicsView

• Screen shot here




                     16
Graphics – 3(D)

• Coin, SoQt, Quarter

• Screen shot here




                        17
WebKit and Google Maps




                         18
Writing Better Software

• Rich set of widgets

• Designer

• Support libraries!
   – WebKit, QtConcurrent,
    QOpenGL, N...
C++ and JavaScript talk WebKit

• Send objects from C++ to JavaScript
  webpage->mainFrame()->addToJavaScriptWindowObject(...
QtConcurrent
• Old Single Threaded
  // now unfold the passive beds
  // now unfold the passive beds
  for(int i=0; i<_pas...
Writing Software Better

• Several platforms, One code

• Build system, devenv integration

• Reusable UI
   – Custom widg...
Custom Widgets & Designer
Plugin




                            23
Unit Testing

• UI for unit testing

• Selective test
  execution




                        24
Conclusion

• Better software
   – Rich UI, integrate with modern technology

   – Improve workflows and provide richer fu...
Upcoming SlideShare
Loading in...5
×

Advanced Visualization with OpenGL in Oil & Gas

1,581

Published on

For the past 7 years, Midland Valley as been capitalizing on Qt to create advanced geological modeling applications for the Oil & Gas industry. Featuring 2D and 3D modeling and visualization, these applications provide enhanced user interface and easy to use workflows. Combining many Qt technologies in the applications and in our development process (from sockets and widgets to graphics views, models/views, Webkit, designer plug ins, unit tests) has enabled us to deliver superior applications with a better mixed-platform integration, a shorter release cycle, and improved quality.

Presentation by Mike Krus and Colin Dunlop held during Qt Developer Days 2009.

http://qt.nokia.com/developer/learning/elearning

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,581
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
58
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Advanced Visualization with OpenGL in Oil & Gas"

  1. 1. Code Less, Find more oil Qt in Use at Midland Valley
  2. 2. 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
  3. 3. Qt used for finding Oil & Gold Delft University of Technology 2
  4. 4. Qt used for finding Oil & Gold • Oil & Gas E & P – 2D Line Restoration & validation 3
  5. 5. Qt used for finding Oil & Gold • Oil & Gas E & P – Full 3D structural modelling • basin modelling • fracture modelling • sediment modelling 4
  6. 6. Qt used for finding Oil & Gold • Minerals 5
  7. 7. Qt used for finding Oil & Gold • Carbon Capture & Storage 6
  8. 8. Qt used for finding Oil & Gold • Radioactive Waste Disposal 7
  9. 9. Qt used for finding Oil & Gold • Geological Surveys and Government Institutes 8
  10. 10. Qt used for finding Oil & Gold • University Teaching and Research 9
  11. 11. Qt used for finding Oil & Gold 10
  12. 12. Life BQ (Before Qt) • Multi-platform environment • 2DMove – Win32/MFC – Linux/SunOS/Irix through Mainwin • 3DMove – Unix Motif
  13. 13. Introducing Qt in MVE • 4DMove, using Qt from day one • Windows and Linux • Easy to use UI & Workflows • 3D View using Coin/SoQt 12
  14. 14. 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
  15. 15. Model / Views 14
  16. 16. Graphics - 1 • Painter, plots • Screen shots here 15
  17. 17. Graphics - 2 • QGraphicsView • Screen shot here 16
  18. 18. Graphics – 3(D) • Coin, SoQt, Quarter • Screen shot here 17
  19. 19. WebKit and Google Maps 18
  20. 20. Writing Better Software • Rich set of widgets • Designer • Support libraries! – WebKit, QtConcurrent, QOpenGL, Network, XML, Help... • Qt makes hard things easy 19
  21. 21. C++ and JavaScript talk WebKit • Send objects from C++ to JavaScript webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller ); webpage->mainFrame()->addToJavaScriptWindowObject("mapController", controller ); void renderInWebPage(QObject* object, double lat, double lng) void renderInWebPage(QObject* object, double lat, double lng) { { object->setProperty("name", QVariant("name")); object->setProperty("name", QVariant("name")); object->setProperty("lat", QVariant(lat)); object->setProperty("lat", QVariant(lat)); object->setProperty("long", QVariant(lng)); object->setProperty("long", QVariant(lng)); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object ); webpage->mainFrame()->addToJavaScriptWindowObject("myObject", object ); webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);")); webpage->mainFrame()->evaluateJavaScript("renderObject(myObject);")); } } • Use objects in JavaScript and call back C++ void renderObject(object) void renderObject(object) { { var ov = new GMarker(new GLatLng(geo.lat, geo.long)); var ov = new GMarker(new GLatLng(geo.lat, geo.long)); var infoHtml = geo.description ? geo.description : geo.name; var infoHtml = geo.description ? geo.description : geo.name; map.addOverlay(ov); map.addOverlay(ov); ov.bindInfoWindowHtml(infoHtml); ov.bindInfoWindowHtml(infoHtml); var el = GEvent.addListener(ov, "click", function() { var el = GEvent.addListener(ov, "click", function() { if(mapController) mapController.geoClick(geo.id); if(mapController) mapController.geoClick(geo.id); }); }); } } 20
  22. 22. QtConcurrent • Old Single Threaded // now unfold the passive beds // now unfold the passive beds for(int i=0; i<_passiveBedSize; i++) for(int i=0; i<_passiveBedSize; i++) { { restorePassiveBed(_toRestore[i], _passiveObjects[i], restorePassiveBed(_toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward); refPlaneNormal, refPlane, forward); } } • New Fast Parallel QFutureSynchronizer<void> synchronizer; QFutureSynchronizer<void> synchronizer; // now unfold the passive beds // now unfold the passive beds for(int i=0; i<_passiveBedSize; i++) for(int i=0; i<_passiveBedSize; i++) { { QFuture<bool> future = QtConcurrent::run(this, QFuture<bool> future = QtConcurrent::run(this, &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], &mveFlexuralUnfolder::restorePassiveBed, _toRestore[i], _passiveObjects[i], refPlaneNormal, refPlane, forward); refPlaneNormal, refPlane, forward); synchronizer.addFuture(future); synchronizer.addFuture(future); } } synchronizer.waitForFinished(); synchronizer.waitForFinished(); 21
  23. 23. Writing Software Better • Several platforms, One code • Build system, devenv integration • Reusable UI – Custom widgets – Designer Plugins • Unit testing • Trolltech/Nokia support 22
  24. 24. Custom Widgets & Designer Plugin 23
  25. 25. Unit Testing • UI for unit testing • Selective test execution 24
  26. 26. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×