Ocean for Petrel 2010.1 ReleaseNotes
Comments
Description
Ocean for Petrel 2010.1 Release Notes For Geoscientists and Software Developers Published by Schlumberger Information Solutions, 5599 San Felipe, Houston Texas 77056 Copyright Notice Copyright © 2008-2010 Schlumberger. All rights reserved. No part of this manual may be reproduced, stored in a retrieval system, or translated in any form or by any means, electronic or mechanical, including photocopying and recording, without the prior written permission of Schlumberger Information Solutions, 5599 San Felipe, Suite 1700, Houston, TX 77056-2722. Disclaimer Use of this product is governed by the License Agreement. Schlumberger makes no warranties, express, implied, or statutory, with respect to the product described herein and disclaims without limitation any warranties of merchantability or fitness for a particular purpose. Schlumberger reserves the right to revise the information in this manual at any time without notice. Trademarks Petrel, Ocean and Ocean for Petrel are trademarks of Schlumberger. Microsoft® and Windows® are registered trademarks of Microsoft Corporation. Table of Contents Table of Contents .............................................................................................................. 3 What is Ocean for Petrel? ................................................................................................. 1 Ocean for Petrel Distribution...................................................................................... 1 Product Licenses ....................................................................................................... 2 Ocean for Petrel Documentation................................................................................ 2 Operating Environment .............................................................................................. 2 Petrel 2010.1 ............................................................................................................. 3 Ocean API Stability.................................................................................................... 3 Summary of Ocean Elements ........................................................................................... 4 Ocean Architecture .................................................................................................... 4 Ocean Core ............................................................................................................... 5 Ocean Services ......................................................................................................... 5 Ocean for Petrel ........................................................................................................ 7 New features in Ocean for Petrel 2010.1 .......................................................................... 9 Domain API ............................................................................................................... 9 Visualization ............................................................................................................ 17 Other ....................................................................................................................... 19 Other Changes ........................................................................................................ 20 Known Issues in Ocean for Petrel 2010.1 ...................................................................... 22 New features in Ocean for Petrel 2009.2 ........................................................................ 24 Domain API ............................................................................................................. 24 Visualization ............................................................................................................ 26 Other ....................................................................................................................... 26 New features in Ocean for Petrel 2009.1 ........................................................................ 27 Domain API ............................................................................................................. 27 UI and Look & Feel .................................................................................................. 36 Installation and Un-installation ................................................................................. 39 Appendix A: Migration to Simulation Results on the Petrel Results Tree ................... 40 Introduction ............................................................................................................. 40 Petrel Simulation Results......................................................................................... 40 Issues you may face ................................................................................................ 41 Appendix B: Use of IObservableElementEnumerable instead of INotifyingEnumerable ................................................................................... 47 Appendix C: Third-party Components Deployed with Petrel: Avoiding Version Conflicts .............................................................................................................. 48 Contacting the Ocean Team ........................................................................................... 50 What is Ocean for Petrel? Ocean is an open, proprietary application development framework targeted for E&P software. Ocean provides a powerful software development environment through the extensive API footprint, through the .NET based architecture and the associated .NET tools. The Petrel application is implemented on the Ocean framework, and is bundled with Ocean and Ocean for Petrel. Ocean for Petrel enables access to the key Petrel domain data types, as well as user interface and interaction features. It also enables extensions of Petrel, allowing addition of new domain data types with renderers, new windows, and new algorithmic and interactive processes. Ocean for Petrel offers the opportunity to extend, interoperate with, and re-use many of the features of Petrel in custom workflows. This expedites delivery of technological innovation and significantly reduces the time-to-market. This document contains the release notes of Ocean for Petrel 2010.1. The features that are new with this release are listed in the section New features in Ocean for Petrel 2010.1, page 9. For completeness, we have also integrated the summary of the news in the previous version over the one before that in the section New features in Ocean for Petrel 2009.2 (page24) and New features in Ocean for Petrel 2009.1 (page 27). A summary of known issues in Ocean for Petrel 2010.1 can be found on page 22. Ocean for Petrel Distribution All the elements necessary to develop Ocean for Petrel plug-ins are available through the Ocean Portal. This consists mainly of: Petrel 2010.1 (32bit and 64bit) and Ocean for Petrel 2010.1 API binaries Demo Data Set (Gullfaks) Ocean for Petrel 2010.1 SDK documentation integrated with Visual Studio and in stand-alone Ocean Help files (.chm). Ocean for Petrel Wizards (Visual Studio 2008 Plug-in), Sample Code and Reference Applications showing patterns for how to use the API What is Ocean for Petrel? Product Licenses Ocean is a licensed feature of Petrel. A developer‟s license is required to create new Ocean modules. If you run Petrel 2010.1 with an Ocean for Petrel Developer‟s License, all licensable features of Petrel will be available. The license may be used for testing the interoperability of developed Ocean modules with Petrel. The enabled Petrel features may not be used for any other purpose, such as offer or perform commercial services and perform commercial or competitive analysis of Schlumberger‟s software. Furthermore, Petrel will configure itself to go into Developer‟s mode. This implies that the Petrel application shell and all hard-copies will be watermarked. Any projects saved whilst in Developer‟s mode will be tagged. Such projects will continue to be watermarked even if you load these into a fully featured version of Petrel at a later point. Ocean for Petrel Documentation The Ocean for Petrel help files (.chm and .HxS files) are generated from the source code at build time, and is the ultimate source of API documentation. Please refer to this for the definitive list of API features. Operating Environment Ocean for Petrel 2010.1 (3.2010.0.0) has been validated on Windows XP, Windows XP-64, and Windows Vista 64. Ocean for Petrel 2010.1 is built on top of Ocean Core, version 3.2010.0.0, and on Ocean Services, version 3.2010.0.0. The following 3rd party software is needed for developing Ocean for Petrel modules: Windows XP SP2 (32 or 64 bits) or Windows Vista 64 operating system Visual Studio 2008 Standard/Professional .NET Framework 3.5 In addition OpenInventor (version 7.2) comes bundled with Ocean for Petrel 2010.1. Note that the OpenInventor (3D graphics) toolkit is an integral part of the Ocean for Petrel API. It is not separately licensed, but can only be used in the context of Ocean for Petrel. OpenInventor is provided by VSG (Visualization Sciences Group). If a stand-alone version of OpenInventor is required, you need to purchase a license directly from VSG. More information may be found at www.vsg3d.com. In these cases we have tagged the API with the keyword [SubjectToChange] in the SDK documentation.1. Ocean API Stability We are committed to compile-time compatibility in the Ocean API for a minimum of two full yearly releases.NET Framework version 3.1 documentation for information regarding the features shipped with Petrel 2010. This enables Ocean Applications to easily migrate to subsequent commercial versions of Ocean for Petrel. API‟s that will be replaced and phased out in the future are first deprecated for at least one full yearly release (included in the overall two years minimum stability). Ocean for Petrel 2010.1 are: Petrel 2010. but. . They target the . however: In some cases we expect changes in the underlying API implementation that may require changes in the API.1 x32 = Ocean2010Home_win32 Petrel 2010.1 is built on top of Petrel 2010.1 Please refer to Petrel 2010. Deprecated APIs will be marked [Obsolete] in the SDK documentation and your compiler will give warnings if you continue to use them.What is Ocean for Petrel? (See Appendix C for full list of third-party libraries deployed with Petrel. so installers need to be updated for 2010. Petrel 2010.1 x64 = Ocean2010Home_x64 win32 = {D3723E01-35AB-4FD1-A496-07BB91C677D2} x64 = {05865F9E-7870-46F6-8E35-7168982452A1} The Petrel product codes for 2010.) The Ocean for Petrel binaries were built with Visual Studio 2008 with Service Pack 1 installed.1 installs in parallel with earlier versions.1 with the following environment variables: Ocean2010Home Petrel 2010. we will continue to support and test them until they are removed.1.5. There is an exception to this commitment. as illustrated in Figure 1. The next level in the architectural hierarchy is the Ocean Services. Application Applicationmodule module Deployed plug -in or extension module Deployedas as plug -in or extension module Public API Public API Public API Ocean OceanCore Core Infrastructure: Infrastructure: .-Data source manager Data source manager .-Module lifecycle Module lifecycle . comprising features such as coordinate transformations and unit conversions. this section gives an overview of the fundamental building blocks of Ocean.-Messaging interface Messaging interface . The foundation of the overall system is Ocean Core. It provides access to Petrel data types. Ocean Applications may use all of these API‟s.-Event transaction mgr. . The third level introduces the product family.Summary of Ocean Elements Summary of Ocean Elements Whilst the definitive documentation for API features is available in the help files. Ocean Core provides the essential features that are used by components at a higher level in the architecture. Ocean Architecture The Ocean architecture is illustrated in Figure 1. Ocean Services can only have dependencies to Ocean Core or to other Services. module lifecycle management and data source management. Event transaction mgr. which in this case is Ocean for Petrel. bundled in the Ocean for Petrel 2010.1 SDK installer. the Petrel UI and Petrel workflow management.g.-Service locator Service locator .-Workspace Workspace . e.-Licensing Licensing Ocean OceanServices Services Application -independent Application -independent services: services: -Domain object hosting Domain object hosting -Unit system / conversions Unit system / conversions -Coordinate system // Coordinate system conversions conversions -Abstract data types Abstract data types -Geometry data types Geometry data types Ocean Ocean for Petrel Petrel Ocean Petrel Product family: Product family: Application shell Application shell Domain objects Domain objects Data sources // bulk access Data sources bulk access Processes Processes Windows Windows Toolbars Toolbars Events Events Interaction Interaction Figure 1 Ocean API architecture . representing concepts such as Extents. Ocean Services In this version of Ocean. Planes and Boxes. Indices and Index ranges.g. also organized in a catalog. namely Logging and Exception Handling. all designed to guide the development of all Ocean applications such that they are all aligned to the same basic mold. Basics This service provides applications with basic types. namely Basics. Unit Service The Unit Service consists of a catalog of unit measurements that is organized hierarchically. interfaces and implementations. Catalogs Service.g. together with basic numerical algorithms. “length”) are associated with units (e. a Unit Service. and a Coordinate Service. The Ocean Core APIs exposed are: Module Lifecycle Service Locator Basic Logging Data Source Manager and Data Source Workspace Event Transactions The Ocean Core uses some of the Microsoft Enterprise Library‟s application blocks. The unit conversion service provides converters between units . Geometry This service provides applications with fundamental definitions of geometry. Points and Lines. e. Geometry. Domain Object Hosting. A third catalog keeps pairs of unit and unit measurements defining unit systems (e. Unit measurements (e. basic types such as Angles. six services are provided.g. “meters” or “feet”). “metric” or “imperial”).g.Summary of Ocean Elements Ocean Core The Ocean Core consists of a set of basic principles and strategies. Logging is configurable. Coordinates service. This allows Petrel end-users to manage coordinates catalogs via a GUI. is fully integrated with Petrel. 2 A new stand-alone component of Petrel – the Coordinate System Manager (CSM) – is available in custom Petrel installations.1. 1 Darcy = 0.Ocean. They map from the data store representation to a format required (and desired) by applications.9869233E-12m2). Again. Example: a product of two base SI units values yields a value in a base SI unit of a new measurement. Catalogs Service This service allows applications to look up log channels based on channel names or unit measurements. the Mentor engine is no longer loaded by default into Petrel. The old Slb.2 The new service supports both the ESRI engine (integrated with Petrel) and the legacy Mentor engine. This service is deprecated. . Domain Objects typically act as intermediaries between a persistent data store and application code. The framework allows a developer to encapsulate application-specific validation or usage rules and hide location and complexities related to the data store. called Domain Objects. the Mentor engine is no longer loaded into Petrel by default. the new Slb. The assembly is still available in the <petrel>\Public folder but it no longer appears in the “Additional reference” settings of the Ocean SDK Wizard. In the Ocean domain API all data are delivered and received in base1 SI units. which has a scaling factor of 1. Their object model is often quite different from the model used by the underlying data store – they hide database implementation details and differences between database vendors from the application. Domain Object Hosting Ocean provides high-level data access to entities representing data. As of 2010. The new service offers many new features.CoordinateSystems service works solely with the Mentor engine.Summary of Ocean Elements defined in the catalog to transform values. such as an API to create coordinate reference systems from “well known text” and APIs to navigate Petrel‟s coordinate system catalogs.0.0 and an offset of 0. irrespective of the data source. Coordinates Service This service provides the ability to create converters to transform data between coordinate reference systems. so a plug-in that needs to use the old service must load the Mentor engine itself. Domain Objects do not require persistence 1 Base SI unit are defined as the SI unit. Note in particular that the base SI unit for seismic traveltime is seconds (not milliseconds) and for permeability is m2 (not Darcy or milli-Darcy. based on the ESRI projection engine. A homogeneous unit system promotes cross-computation.Ocean. But. the Domain API The Ocean for Petrel Domain API exposes and offers a number of data types and services to manage Petrel data. and change and manage the different UI elements exposed from Petrel. Grid geometry. It also allows for examining the Petrel project state. segments and zones are accessed through this main class. For a full overview of the current capabilities. to enable additions of new extension objects to existing Petrel objects. horizons.Summary of Ocean Elements – it is possible to have in-memory objects that contain business logic but do not save their state to a persistent data store. properties. Ocean for Petrel provides convenience classes in order to display messages. or customize existing ones. as well as a data event model. The window manager interface handles the display window area by reporting its current state. while 3D rendering is done with OpenInventor. The content of display windows in Petrel are synchronized with objects and elements selected in the Petrel Explorer. The UI Infrastructure API provides interfaces to access the various elements of the Petrel Explorer. to programmatically discover relationships between data types. Objects rendered with 2D graphics use . A set of API‟s have been exposed so that it can be tailored to the needs of new applications.) Domain Object Hosting provides a notification event mechanism to which a module can subscribe. Ocean for Petrel Extending the Petrel User interface. Domain Object Hosting provides support for transaction management allowing the user to lock objects before they are modified and commit or abandon changes after modification. These services include the ability to navigate the data.NET Graphic Library (GDI+).e. Ocean for Petrel provides APIs for custom rendering of new domain objects in selected 2D windows and in the 3D Petrel window. Interoperating with Petrel data types. the UI Infrastructure The Petrel user interface (UI) uses MS WinForms. You can add new objects to the trees. notifying windows state changes with events. and progress information. . status information. All tree interfaces provide current selection and selection change events. This means that domain object writers create new data types that follow the same usage pattern as the Petrel data exposed through the API. please refer to the API documentation. faults. The object will then be notified when the object changes or is being changed. so the module can access the state of a particular tree or be notified whenever a change is produced (i. and managing collections of windows. A brief description of some of the data types follows: PillarGrid: This API gives access to the 3D Grid model of Petrel. (Note that Ocean for Petrel native Domain Objects do not currently support abandoning transactions. and for creating new windows. new object is select/deselected). The external simulator can access most static input data through the simulation Case. from which it is possible to identify the relationships to zones. Traces can be accessed either through an enumerator or randomly from a relative positional index.Summary of Ocean Elements Shapes: provides support classes to manipulate points. Grid results. ISimulationRoot acts as the container for all domain objects in the simulation domain. but applications are also free to create their own custom UI‟s . The PointSet and Surfaces classes also provide access to properties associated with the shape. horizons and faults. but it still needs to follow the Eclipse format for dynamic data and simulation output. it‟s possible to access sub-cubes of 3D data. the Workflow API New processes can be created. and gives access to Logs. Black oil Fluid and saturation functions. VFP tables. Well: Borehole is the main class in this API. simulation Cases. Summary vectors. and surfaces. or as part of a Petrel Workflow as defined in Petrel‟s Workflow Editor. In addition. Seismic: SeismicCollection and InterpretationCollection act as the containers for seismic surveys and faults and horizons interpreted on seismic data. Furthermore. Petrel Processes and Workflows. and can be executed from Petrel‟s Process Diagram. ISimulationManager and EclipseFormatSimulator allow to integrate a custom simulator into Petrel. respectively. polylines. Observed (production) data. Trajectory. The process may have a UI auto-constructed by Ocean for Petrel from a set of arguments. Samplers. Optimizers and Proxies can be implemented and integrated as algorithms in Petrel‟s uncertainty and optimization framework. The API essentially enables custom processes to take part seamlessly in Petrel‟s workflows. Simulation: provides interfaces to access reservoir simulation data in Petrel: Streamlines. The API supports 2D and 3D seismic data and 2D and 3D interpretation. Completions and Markers. perm & capillary pressure Development strategy Grid export format Various settings Ability to query the simulator with Case as parameter Namespace: Slb. Support for static reservoir data on simulation case Namespace: Slb.DomainObject.Simulation Create for WellKnownSimulator Create for an EclipseFormatSimulator Note that Simulation Case was refactored and now only one simulator can belong to a Case.Ocean.Petrel. The case arguments/properties can be then set programmatically to define a simulation case.Ocean.New features in Ocean for Petrel 2010.1 New features in Ocean for Petrel 2010.Petrel.Petrel.Simulation Get/Set on Grid Grid properties Functions by regions: o Black oil fluid o Rock compaction o Rel. .Simulation This enables an Ocean client to determine which simulator a Case object is associated with.Ocean.1 Domain API Reservoir Engineering – Plug-in Simulator Ability to create cases for Native and Plugged-in Simulators Namespace: Slb. ECLIPSE DECK Ocean Keyword Access to Eclipse Native Keyword Editor Namespace: Slb.Petrel. This API now resembles the simulation results API for summary vectors. The API follows the same ”paradigm” as Petrels visualization. a simulation case and a timestep.Ocean. Hence Ocean has put in place an API to read the ”new” simulation results.Petrel. .Simulation. It exposes more than 700 type safe read/write/update Keywords.Simulation.Petrel.Petrel. can now be visualized by selecting the property type.New features in Ocean for Petrel 2010.1 Full access (CRUD) to Rock Compaction Domain Object Namespace: Ocean.Simulation It is possible to allow the built in keyword editor to be used in the context of an EclipseFormatSimulator Grid property results moved to results pane The simulation Grid (or 3D) results were moved from the models tree to the results tree in Petrel 2010. One property.DomainObject. data records and typed data/value fields without the need to parse the deck file.Ocean. as we used to know it from the models tree. Data is be accessed through classes.EclipseKeywords The enhanced keyword API features a C# code generated library for programmatic interaction with an ECLIPSE deck. See appendix at the end of this document for more details about these changes.RockCompactionFunction Ocean.1.Simulation. This is a very useful API for convertor code for plugged-in simulators or for controlled manipulation of an ECLIPSE deck.RockPhysicsCollection Create new rock compaction curves Read the properties and records of existing curves Access / assign to simulation case Type Safe Eclipse Keyword API Namespace: Slb.DomainObject. Similar examples can be made for proxy volume calculation results.Simulation Volume case and result type yields a volume result.Ocean. A proxy is a small mathematical model that tries to approximate a complex or large simulation." .1 Volume Calculation Results Namespace: Slb. but without the time dimension.Petrel. The example below shows how to read the first result (first reporting time step in the simulation) of all approximated proxy realizations. Access proxy results for summary vectors and volume calculation This API reads summary vectors and volume calculation results that are generated by an Ocean plugged-in proxy. for all variables that are specified in the uncertainty workflow for a specific proxy summary result (for example: ”Water cut”) and result category (for example ”Field” or a certain well).New features in Ocean for Petrel 2010.DomainObject. Results can be filtered to give partial volume results: a list of different filters of each type can be passed to the GetResult method to generate a partial result for the area specified by the filters. 1 Limited access to Development Strategy Create Namespace: Slb.Petrel.Simulation The new API provides support for creating only a limited number of rules in a development strategy: .Reporting frequency .DomainObject.Rate production control .Petrel. Vertical Flow Performance (VFP) Tables Namespace: Slb.Simulation Ability to have read access to pressure drop model / Vertical flow performance (VFP) table.DomainObject.A rule can only be defined for one well.Ocean.Water injection control .Rules are applied at timesteps.Maximum ratio .A development strategy is created with a name.Ocean.Ocean. . Depth Varying Completions Namespace: Slb. type and a list of timesteps (which incorporates rules and wells) A handful of rules can be applied at timesteps .DomainObject. .Petrel.Simulation Plug-in can have access to case variable filters Aquifer DO Namespace: Slb.Pressure production control . Case Variable Filters Namespace: Slb.History rate control .Petrel.Water cut .Petrel. .New features in Ocean for Petrel 2010.Simulation Access to Identifiable Aquifer DO and get/set on Simulation Case.DomainObject.Well.Completion Ability to access depth-varying tubing (special/new type of WellPetrelCompletions).Well status Development strategies can also be deleted.Ocean.DomainObject.Minimum production rate .Ocean. Seismic Read/write access to seismic vintages.Petrel. SurfaceProperty and DictionarySurfaceProperty domain objects now have an indexer to get or set the surface property sample value for a given i.Ocean.Ocean.[Dictionary]SurfaceProperty.Ocean.j position in the grid.New features in Ocean for Petrel 2010.DomainObject.1 comes with a simple 3D renderer and a default SEGY backend. Polyline Attributes Namespace: Slb.PolylinePropertyCollection Provide access to polyline attributes. Seismic Domain Change in Attribute Generator Namespace: Slb.Shapes.Petrel. The attribute generator provides a mechanism to trigger the recalculation of the attribute when a parameter has changed and provides a way to validate inputs.TriangleMesh TriangleMesh mesh geometry as an enumeration of IndexedTriangleMesh rather than one single IndexedTriangleMesh.DomainObject.Shapes.1 Shapes Domain Index based access to Surface attributes Namespace: Slb.DomainObject.DomainObject.Ocean.[Dictionary]PolylineProperty Slb. and not an interface anymore.Petrel.Petrel.Petrel.Shapes.Ocean. These domain objects now also have a way to get and set many samples in one go with the Samples and AllSamples properties. Seismic Vintage Domain Object Namespace: Slb.Petrel. Provider developers can implement their own backend through the backend API.Ocean. Pre-Stack Seismic Namespace: Slb.Petrel.DomainObject. Petrel 2010.Shapes. Trimesh Patches Enhancement Namespace: Slb. These methods have been added for increased usability and performance.Ocean. .Petrel.DomainObject.Shapes.DomainObject.Seismic The Seismic attribute generator API was refactored and is now exposed as an abstract class.Polyline Slb.Ocean.Prestack A façade for generic prestack seismic datasets The Ocean API exposes a façade to access prestack data and to allow interoperability between different providers. PropertyModeling.Ocean.HorizonProperty2D and 3D Property access for HorizonInterpretation 2D and 3D has been enhanced for better performance and usability.1 Set Default Seismic Data Location Namespace: Slb.Ocean. (Dictionary)HorizonProperty Faster Indexer Namespace: Slb.PropertyModeling.SeismicCollection It is programmatically possible set the default location for Seismic data Create SeismicCube in Given Location Namespace: Slb.PropertyModeling.1 SeismicAttribute API and new Petrophysical/Facies Property Modeling APIs Kriging Algorithm Namespace: Slb. Sequential Indicator Simulation Algorithm Namespace: Slb.DomainObject.PropertyModeling.Petrel.Petrel.PropertyModeling Re-design of existing API to follow the same patterns used by the 2010.Petrel.Petrel.Ocean.DomainObject. WellKnownPetrophysicalModelingAlgorithms Expose the Petrel Kriging algorithm as a workstep accessible through an Ocean API Sequential Gaussian Simulation Algorithm Namespace: Slb.Ocean. Indexers have been added and many samples can be get or set in one go.Petrel.Petrel. . WellKnownPetrophysicalModelingAlgorithms Expose the Petrel Sequential Gaussian Simulation property population algorithm.Seismic.PropertyModeling.SeismicCollection Possibility to create a SeismicCube outside the Petrel project directory.Ocean. Property Modeling Redesign of the Geometrical Property Modeling API Namespace: Slb.Seismic.WellKnownPetrophysicalModelingAlgorit hms Expose the Petrel Gaussian Random Function property modeling algorithm.Ocean.Ocean.Ocean. Gaussian Random Function Algorithm Namespace: Slb.WellKnownFaciesModelingAlgorithms Expose the Petrel Indicator Kriging property modeling algorithm.DomainObject.Petrel.Petrel.Seismic. Indicator Kriging Algorithm Namespace: Slb.New features in Ocean for Petrel 2010.WellKnownFaciesAlgorithms Expose the Petrel Sequential Indicator Simulation algorithm as a workstep.Petrel.Ocean. Horizon model domain object.Well.) Slb.Petrel.Petrel.Petrel.PillarGrid.Ocean.Ocean. .Ocean. DictionaryPropertyStatisticsInfo Access statistics of dictionary property – i. DictionaryProperty..New features in Ocean for Petrel 2010. Ocean exposes an initial API for its objects.PropertyModeling Allow to add your own algorithm for facies property modeling Plug-in architecture for petrophysical property modeling Namespace: Slb.Petrel.PropertyModeling Allows to add your own algorithm for petrophysical property modeling Structural Modeling Initial API in 2010.PropertyModeling Programmatically set or get probability curve values for dictionary properties.PropertyModeling Programmatically set or get vertical probability values for dictionary properties. Discrete Statistics Namespace: Slb.Zone model domain object.Petrel. Plug-in architecture for facies property modeling Namespace: Slb.DomainObject.1 comes with a new Structural Modeling module.Ocean. Well domain Get Active Check Shot Namespace: Slb.PillarGrid.DomainObject. . .DomainObject.Borehole Ability to get the current active CheckShot. .1 Probability Curve Namespace: Slb.. Vertical Probability Namespace: Slb.e. stat..Fault model domain object.Ocean.GetPropertyStatistics(. the statistics that are displayed on the Disc.Petrel.1 Petrel 2010.Petrel.Ocean. of the Settings dialog for a DictionaryProperty.Ocean. there is no way for Ocean Custom Domain Objects to declare themselves as spatially-enabled.Ocean. pssa. 2D seismic and interpretation. For example. Satellite images.ContextOverridesSI).1 will allow Ocean Custom Domain Objects to participate in such conversions. Most native Petrel data are now “spatially-enabled” (support spatial conversions on transfer). plug-ins should rarely (if ever) change the Project. A new API in 2011. and. Ocean provides new APIs to create and update Petrel Objects with data in Native Coordinate Reference System (different than the project CRS).Shapes. the current plan is that native 3-D Seismic objects will be spatially-enabled in 2011.New features in Ocean for Petrel 2010.Ocean.1 Spatial Data Transfer in Native Coordinate Reference System (CRS) Namespace: Slb.Ocean. these objects will be added to the Ocean Spatial Data Transfer API. This includes. Likewise. deviation. a few native Petrel data types (notably 3-D Seismic) are not spatially-enabled in 2010.DomainObject. Petrel now performs conversions when transferring spatial data via File Import/Export and RPT to a destination with a different CRS.CoordinateReferenceSystem property – and if they do.DomainObject. For projects with a non-NULL CRS. For this reason.1exposes the fault model object. Faults.FaultModel 2010. FaultModel domain Namespace: Slb.SetPoints(ps.1. .DataTransfer. When opening a new project or an old project where the CRS has not been set.Petrel. points). Nonspatially-enabled objects will not appear in the Reference Project Tool GUI when the primary and reference projects have different CRSs. SpatialUnitsPolicy.DataTransfer Starting with Petrel 2010. markers.Petrel. // points are converted to project CRS ATTENTION: The Project CRS is much more important starting in Petrel 2010. etc.DomainObject. Point data.Petrel. must ensure that the enduser is aware of the change. Well Data (head. PointSet ps = collection.1. Point3[] points = new Point3[] { /* … */ }. check shots …). end-users must explicitly select either a CRS or NULL. Petrel objects will support transformation between different coordinate systems. SpatialContext context = new SpatialContext(externalCRS. Polygons. // fill with points in external CRS PointSetSpatialAccess pssa = new PointSetSpatialAccess(context). Likewise. However. the following code sample imports a PointSet from an external CRS: using Slb. which can be found in the models tree.CreatePointSet("Imported PS").1.1. DomainObject.1 Pillar Grid Slice intersection service Namespace: Slb.Petrel.Tools Ensure custom "New Window" menu items are positioned correctly in the Windows menu Support of workflow variables in Worksteps with Custom User Interface Namespace: Slb.UI The interfaces representing the well-known Petrel windows. Performance improvement of IToggleWindow Namespace: Slb. Through this API.Ocean.InterSectionWindow Significant performance improvement over the IToggleWindow interface. .Ocean. FunctionWindow).Ocean. WellSectionWindow. representing a collection of domain objects currently set to visible in the window.Petrel.Ocean.Ocean.Petrel. Window3D. IntersectionWindow.PillarGrid.Ocean.Petrel.New features in Ocean for Petrel 2010. Visualization “New Window” Menu Entry Positioning Namespace: Slb. A complete walkthrough with detailed examples is available in the online help.ToggleWindow Slb.Workflow Workstep with custom user interface (UI) supporting workflow value and reference variables.UI.MapWindow Slb. and should instead inherit from the new ToggleWindow base class.UI.Petrel. each of these windows now provides a VisibleObjects property.UI.DomainObject.UI.Ocean. In addition to the previous functionality. Plug-in window implementations should no longer implement the IToggleWindow Interface directly.Petrel.Petrel. windows can specify the types of domain objects they can visualize.PillarGrid.Petrel.Ocean.IPillarGridIntersectionService Slb. New classes for well-known Petrel windows Namespace: Slb.WellSectionWindow Slb.IHorizonIntersectionService Service to calculate intersections between Grid/Horizon and facet.UI.Petrel. thus leading to fewer API calls and significant performance improvements when opening custom windows in large Petrel projects. have been replaced with class representations (MapWindow.Ocean. WellSectionPickedPoints Slb.UI. ColorPicker and ColorPickerPanel.New features in Ocean for Petrel 2010.Petrel.UI. Standard Petrel Windows. .Petrel. Ocean should be extended to cover interaction events also in the completions tracks Windows are IIdentifiable Namespace: Slb.Controls This API exposes many of the Windows.UI Support drawing order for custom objects in multi-pass rendering of the Petrel Map Window. Examples include.Ocean.Forms controls used in the Petrel GUI for use by plug-ins.UI A redraw-method to force an immediate and synchronized redraw of the 3D window in Petrel.Ocean.UI.Ocean. Synchronized Redraw Of 3D Windows Namespace: Slb.Petrel.Petrel.Petrel.UI. etc. the mouse action-related methods overridden in custom window modes are invoked only when there are mouse actions on log tracks.Ocean.Ocean.UI Petrel windows are now IIdentifiable Custom Advanced Toolbar Controls Namespace: Slb. Intersection Window.1 Control of the Drawing Order in an IMapRenderer Namespace: Slb.Ocean. InteractiveCompletionTrackEditing Namespace: Slb. and WellSection Window. ToolTip controls. These methods are not invoked when there are mouse actions on completions tracks.Ocean.Forms Controls Namespace: Slb.Tools The API provides a mechanism to add custom advanced control in toolbars.WellSectionRendererContext In the Well Section Window.Petrel.Petrel. DomainObject.Ocean. including the reference project.Ocean.Petrel.Petrel.PetrelLicense Slb.Petrel.DomainObject.Petrel.Function.UseDate Correlation data (cross plot) and function domain objects are now time playable Import Multi File Namespace: Slb.Ocean.New features in Ocean for Petrel 2010.PetrelSystem.PetrelLicenseAttribute Slb.Petrel.IO It is now possible to import of multiple files Ocean Store Licensing A white paper with examples is provided in the on line help of the SDK to describe how to implement licensing to participate in the Ocean Store.Petrel.Ocean.DomainObject.Licensing.Basics.Petrel.Analysis.Petrel.Date Slb.Petrel.Ocean.UseDate Slb.Ocean.Function.Petrel.1 Other Time Playable Cross Plot And Function Domain Objects Namespace: Slb. This in turn means that the custom data source no longer has to be Serializable.Data Namespace documentation for more information and code samples.Basics. Data sources returned from the factory will be added to a data source manager by the framework and should not be Serializable.Ocean.Ocean.Data. The framework invokes the GetDataSource() method of the factory for each project. The mechanism to do that is to make a class that derives from Slb.Analysis. Please consult the (enhanced) Slb.Analysis.DataSourceFactory and to register it with Slb.CorrelationData2D. .Petrel.Analysis. PetrelLicenseCheck Namespace: Slb.Ocean.Date Slb.Ocean.Ocean.LicensingService Ocean-based modules can check if certain Petrel module licenses are available DataManagement The framework now offers a way with which a plug-in effectively can add a data source to the data source manager of both the primary and the reference project.CorrelationData2D.DomainObject. Ocean.1. To use the new ESRI engine features programmatically.Coordinates. called "Discrete fractures". The Ocean Wizard no longer supports Visual Studio 2005. You should notice usability improvements. please see the UsingTheWizard. but only support editing FractureNetworks under Grid (with restrictions. probing paths.pdf installed by the SDK. The Create fracture network process is creating fracture networks under Grid objects. "Implicit fractures". The generated Installer Project no longes uses Custom Actions to register and handle the modules in the setup package. discrete fractures cannot be deleted directly) . ESRI coordinate systems are now available in the Coordinate reference system selection dialog accessed through Project Settings -> Units and coordinates > Coordinates. Instead there is a new InstallModules. you must use the new Coordinates service delivered in the new version of Ocean Core and Services – namespace Slb. Under this container.1 Other Changes The well section window will be completely replaced in 2011. trusts. resides the Ocean FractureNetwork.1. Only Visual Studio 2008. For more details on this. but there is no alternate API at the moment.New features in Ocean for Petrel 2010. fractures sets are read-only. The Ocean API still supports editing and creating FractureNetworks under ModelCollection and Project. (3) Inline documentation describing the old Petrel color table behavior was removed. (2) Custom Domain Object private color tables now have an opacity curve. . etc. This means that the Ocean for Petrel API is now fully functional when the event is raised. The Ocean for Petrel inline documentation is now built using Sandcastle. not accessible from the Ocean API. which handles everything which is related to the module registration. called “Fracture network” in the Models tree is a new container not yet accessible through the Ocean API. the output object. Well Section Window related APIs are tagged obsolete in Ocean for Petrel 2010. Since Petrel 2009. the ESRI coordinate service engine is now a standard feature of Petrel.1. together with another set of fractures. Petrel‟s color table behavior has changed in 2010. Ocean supports these changes (1) Custom Domain Objects now only have a color table tab in the Settings dialog if they support private color tables. The WorkspaceOpened event happens now later when project loads. The new Window and the new API will be available in pre-commercial snapshots of Ocean for Petrel 2011. The fracture model has changed in Petrel 2010.2. This dialog now also allows entry of custom coordinate systems expressed as well-known-text. see Petrel documentation .xml file generated into the project.1.1 . 1 The OceanSDK installer now installs the Ocean for Petrel controls to the Visual Studio control Toolbox.Known Issues in Ocean for Petrel 2010. . However this made it impossible to resolve droids in a reference project and adding a non serializable data source in this way must be considered a bug.1 In all Petrel versions up to and including Petrel 2009. and there will be issues starting Petrel with expired borrowed plug-in licenses.Ocean. Typically these are Process. IPresentation. In this case.2.GetEnumerator. IOpenInventorFactory. In all Petrel versions up to and including Petrel 2009.Open. The Ocean for Petrel API is functional in the latter. this has been fixed. This did lead to a number of issues. But this also means that the framework now can call into a plug-in before this event has been raised. It is therefore strongly discouraged to do License Borrowing for plug-ins. In Petrel 2010. Petrel doesn‟t support License Borrowing. the service should refuse to create an operation unless the caller explicitly specifies the datum transform. For a plug-in which has its own custom data source.OnActivateCore.Open or IDataSource. Custom Domain Objects cannot be copied (via copy-paste) to a HorizonInterpretation.2 an Ocean module could add a non serializable custom data source (IDataSource instance) to the global data source manager in a handler of the WorkspaceOpened event and add Identifyable objects from that data source to Petrel. With Petrel 2010 it is no longer possible to both add a non serializable data source in a handler of the WorkspaceOpened event and have the droids be resolved at the same time. The service will be changed in the .Resolve. A plug-in which initializes its internal state in an handler of this event might fail to function if this state is needed during these early calls from the. but not in the first. The droids of these objects then were correctly resolved when the project was reloaded.Known Issues in Ocean for Petrel 2010.Text and IObservableElementEnumerable.DataManager class was raised before Petrel was actually finished loading and converting (old) project data. a workaround for this can be to move the initialization code to the implementation of IDataSource. With Petrel 2010 data sources should be added to the system indirectly by registering a DataSourceFactory. A data source which is added this way is opened early and this restricts what can be done in the IDataSource.Create. one of them being that some domain data obtained through the API in a handler of this event was incorrect and that unit conversions could fail. the toolbar will disappear until another process is activated. The Ocean Core and Services Coordinates service erroneously selects a datum transform (sometimes randomly from among several compatible transforms) when asked to create a conversion operation between two late bound CRSs based on different datums.1 Known Issues in Ocean for Petrel 2010. the event is now raised later in time. the WorkspaceOpened event of the Slb. If the PillarGridPlayer toolbar is visible and the Petrel end user activates an Ocean process that does not explicitly set the toolbar to visible. . and SLB. plug-ins should always specify the transform explicitly.MaxInclinationChange had incorrect unit conversion prior to 2010.1 2011 timeframe to behave that way. The workaround is for the developer to find the WKT for the desired SLB or SIS CRS using the Coordinate System Manager utility and request the CRS by WKT rather than by code. The behavior of this API has changed to correctly use radians (SI). the request will fail – even if it exists in the catalog. ESRI. To protect against this future behavior change. When Petrel is started. Please make sure this change is handled correctly in your application. The property SegmentationSpec. SIS.Known Issues in Ocean for Petrel 2010. If a plug-in requests a CRS using a SIS or SLB code before the end-user has opened the selection dialog.1. The SIS and SLB systems are only loaded when the Petrel end-user opens the CRS selection dialog (in Project Settings). only the EPSG and ERSI CRSs are loaded into the Coordinates service by default. It is not possible to use a custom FileFormat to import/export spatially-enabled native Petrel domain objects to/from a project with a non-NULL CRS. Petrel ships with a Coordinate System Catalog that includes CRSs from several authorities: EPSG. GetSimulatorVersion The new API provides access to the simulator version field of the simulation case.Petrel.EclipseFormatSimulator.GetRestartDates The new API provides a method that is called during the restart case insert process.Simulation.ISimulationManager.Petrel.Ocean. Access to the simulation case version Namespace: Slb. New features in Ocean for Petrel 2009. Support to rename a simulation case Namespace: Slb.Simulation.Ocean.CaseManipulationH andler.Error! Reference source not found.Simulation.CaseManipulationH andler.Petrel.Petrel.PostCopy The new API provides a method for a post copy operation that allows custom simulation cases to do the necessary work to allow their simulation case to participate in copy and paste workflows.EclipseFormatSimulator. The plug-in simulator can then manipulate the expected restart time steps based on the original one.Ocean.CaseManipulationH andler. Support to modify the restart time of a simulation case Namespace: Slb.Ocean.2 Domain API Reservoir Engineering – Plug-in Simulator Support to copy custom simulation cases Namespace: Slb.EclipseFormatSimulator.PostRename .Simulation. SetZValue(double)) 3. Ability to create Contact via Ocean for Petrel API and set a flag on the Contact to indicate if all zones or all segments have the same constant value.Ocean. Index2.FaultInterpretation The API has been updated to allow API users to access fault interpretation polylines with or without seismic context. Corner. double)] and to view/edit this contact in the 'make contact' process. double).Petrel.Error! Reference source not found. Segment. Ability to create a Contact via Ocean for Petrel and set a constant value on the Contact [SetZValue(Zone. Seismic Domain Updates to Fault Interpretation Polyline Access Namespace: Slb.2.Ocean. Pillar Grid Contacts Visible in Petrel Editor Namespace: Slb. this Contact will lost. The API has been updated to as follows: Obsoleted Methods: public void SetPolylines(IEnumerable<Polyline3> polylines) public IEnumerable<Polyline3> GetPolylines(SeismicLine2D seismicLine) public IEnumerable<Polyline3> GetPolylines(SeismicCube seismicCube) public void SetPolylines(SeismicLine2D seismicLine. meaning that Ocean plug-ins need to be modified for 2009. IEnumerable<Polyline3> polylines) Note: The above methods are deprecated and not fixed (see SMR:2358805) New Methods public void SetPolylines ( IEnumerable<FaultInterpretationPolyline> polylines) public IEnumerable <FaultInterpretationPolyline > GetPolylines() Users will need to use the new API to edit and access the seismic context of the fault interpretation.Seismic. and if I apply this process on its parent ContactSet. this 'fine level' contact cannot be viewed/edited by the 'make contact' process.DomainObject.DomainObject. IEnumerable<Polyline3> polylines) public void SetPolylines(SeismicCube seismicCube.Petrel. Please note that this method will only be called on a successful Petrel Case rename. (Also need SetZValue(Segment.Contact This API provides the following capabilities: 1. 2. double) or SetZValue(Zone. .PillarGrid. A behavior such that after a creation of Contact via Ocean API and setting the value on Contact via the fine level API [SetZValue(Zone. double)]. The new API provides a method for a post rename operation that allows custom simulation cases to do the necessary work to allow their simulation case to be renamed. Other New Command Line Options (-exec) Petrel's command line now has a "-exec" option to execute a custom method requiring no user interaction. . All Ocean API can be used in "-exec" mode.storing data in Petrel. . Otherwise.Ocean. These API exclusive to the "-exec" mode are: .Error! Reference source not found. BUT the "-licensePackage" option should be specified at the same time.assemblyQualifiedTypeName: Assembly qualified name of the class containing the method to be executed.SaveProject . some API can only be used when the "-exec" option is specified in the command line.Window3DPickedPoint. This parameter is optional.PetrelProject. Visualization OpenInventor Node interaction detail Namespace: Slb. This object can be queried for more detailed pick information such as the SoDetail of the picked node in the OpenInventor scenegraph.performing computations. . the custom method can only execute if there is user interaction to manually select the license package.NewProject . .PetrelProject. .PetrelProject.chm help manual for more information about other Petrel command line options. . Particularly. Syntax of the "-exec" option: petrel.LoadProject .using Petrel data.fetching data from other sources. and the white paper “Petrel Command Line Exec Option” in the Ocean for Petrel chm.SaveProjectAs Typical "-exec" option usages include: . Please refer to the Petrel.UI.PetrelProject.exe -exec assemblyQualifiedTypeName methodName [projectName] The command line parameters are: .Petrel.projectName: Name of the project to be opened.PickDetails Ocean provides an OpenInventor SoPickedPoint object describing the pick in the scenegraph.methodName: Name of the custom method to be executed. Run() Simulation.” on page Error! Bookmark not defined.SimulatorPageLogic MySimPage : SimulatorPageLogic<TArgPack> PageList.AddService(typeof(TArgPack). Simulation.1 New features in Ocean for Petrel 2009. Get an instance of CaseRunner through PetrelSystem.Export() Simulation.Services.CaseRunner. new MySimPageFact()) For more detailed information. and run the Simulation..RunAborted() Simulation.CaseRunnerMonitor.Petrel.SimulationManager.RunCompleted() New property to access exported sections of an Eclipse Deck The EclipseFormatSimulator provides a new property RequestedExportSections to specify which sections of the Deck need to be exported when Petrel does the export.Ocean.Add(new MySimPage()) MySimPageFact : SimulatorPageUIFactory<TArgPack> CoreSystem.ServiceType.Ocean. But necessary when user wants to capture the finish events from Simulation process) 3.1 Domain API Reservoir Engineering – Plug-in Simulator UI extensibility for simulator plug-ins Namespace: Slb.Ocean.Simulation.SimulatorPageUIFactory. This feature allows to programmatically execute the same operations a Petrel user can trigger by clicking the Run button on the Define simulation case process dialog. Programmatically run a simulation case Namespace: Slb.Simulation. please consult section “Error! Reference source not found.CaseRunner.Petrel. Derive custom CaseRunnerMonitor class.Petrel.Simulation.CaseRunnerMonitor. How to use the API: 1. Define the class that will run simulation 2. (Optional. MySimPageFact.New features in Ocean for Petrel 2009. . Slb. CreateKeyword(…) EclipseKeywordSection[i] EclipseKeyword.DomainObject.New features in Ocean for Petrel 2009.Spec . In previous versions liners had to be modeled as CasingString instances with the StartMD set greater than zero.SegmentLength .Ocean.GetCaseVariables(…) Liners (completions type) Namespace: Slb. It is possible to get an EclipseKeywordEditor from ISimulationManager by passing the relevent Simulation domain object. The SegmentationSpec object represents the segmentation of a borehole‟s flow paths. insert or remove keywords from each section. SimulationRoot.CreateLinerString.SimulationRoot The multi-segmented well model in Petrel and ECLIPSE divides the whole well bore into segments with different physical properties to allow ECLIPSE to accurately model the fluid physics throughout the well bore.UseFriction Simulation case $variables ISimulationManager. .Simulation The API allows accessing the individual sections of an Eclipse deck such as GRID.FreeText Access to segmentation borehole‟s flow paths Namespace: Slb.DomainObject. EclipseKeywordEditor EclipseKeywordSection.Ocean.Completions.SegmentationSpecCollection Simulation.SegmentationSpec.Well.Simulation.Name – EclipseKeyword.Petrel. The API provides access to a Keywords IEnumerable and CreateKeyword() methods to create and edit keywords.1 Interface to use keywords of an Eclipse Deck Namespace: Slb.Ocean. Then the KeywordDeckSections object allows access to a desired section. The API allows creating and accessing SegmentationSpec. and as such would show in the Petrel UI with the casing icon rather than the liner icon.Petrel. to add. SCHEDULE etc.Completion The type LinerString is added to the Completions API and can be created via Borehole.Petrel. UncertaintyManager.Evaluate(input.output) Optimizer Finds an optimal set of control parameters of a given objective. This can be either random values (e. OptimizerExecutor. and can leave to Petrel the logistics and machinery of updating models.g. ProxyExecutor.g.CreateExecutor(…) etc.Petrel.g.SampleValues(k.. Monte-Carlo sampling) or following some sort of methodology (e.CreateExecutor(…) SamplerExecutor.New features in Ocean for Petrel 2009.NextSample(…) Sampler Provides parameter values to the Uncertainty process. Usually. The benefit is that the algorithm may focus directly on the parameter tuning of the optimization loop.SampleValues(k.output) OptimizerExecutor. Custom simulator proxies MyProxy : Proxy<TArgPack>. Distribution functions A distribution exposes an operation over an argument package containing all the distribution settings. neural network). please consult section “Error! Reference source not found.ReportOptimums(…) .Uncertainty The Uncertainty API enables extensibility of the Petrel Uncertainty process.Ocean. experimental design).” on page Error! Bookmark not defined. re-gridding. This is done by registering user-defined algorithms via PetrelSystem.output) Proxy (Emulator) Computes an approximation to simulation output.Validate(…) . Custom distribution functions MyDistr : Distribution<TArgPack>. creating simulation decks and running the simulation.CreateExecutor(…) etc.1 Uncertainty Workflow API Namespace: Slb. For more detailed information. Custom samplers MySampler : Sampler<TArgPack>. This usually involves evaluation of the simulator for a large number of input configurations Custom optimizers MyOpt : Optimizer<TArgPack>. an emulator is calibrated with a small number of actual simulations before it can provide approximated results (e. New features in Ocean for Petrel 2009. In addition to a continuous property.SetVisible(PropertyDataFilter1D/2D) 2D property (selection) filters – extras/special wrt.CreatePropertyDataFilter() PropertyDataFilter1D.Petrel.PillarGrid A variogram describes the natural variation in a property (surface property. The PillarGrid. each region including or excluding a range of values (1D filters) or a set of points (2D filters). comb=new LogicalDataFilterOr(and.CreateLogicalDataFilter(comb) Variogram Domain Object Namespace: Slb. a DictionaryModelVariogram instance will have associations with one or all PillarGrid. model property. A PropertyVersionFilter is defined by an association of regions in the property space [FirstProperty. The Ocean for Petrel API exposes the Petrel model variogram defined in the Property modelling -> Data Analysis process. In addition to a dictionary property.SecondProperty Logical filters not=new LogicalDataFilterNot(f1).Petrel. a model variogram instance will have associations with a PillarGrid.A DataSelectionFilterRegion is defining a set of values or points to be included by a PropertyVersionFilter object.Property PropertyDataFilter1D.Ocean.DataAnalysis is used to create and get PillarGrid.DictionaryModelVariogram instances.CreatePropertyDataFilter() PropertyDataFilter2D. whereas a 1D region will be a value range with a lower and upper limit.Zone or with all zones. SelectionFilterRegion can define a 2D or 1D region: a 2D region will be represented by a polygon.Zone and facies.DomainObject.not).Create/Get…(…) Grid.1 Data Analysis Selection Filters Namespace: Slb.) and is used as input to both discrete and continuous property modeling. DataAnalysis. DataSelectionFilterRoot ..Nugget . 1D property (selection) filters DataSelectionFilterRoot. The DataSelectionFilterRoot allows getting PropertyVersionFilter and LogicalFilter objects in the context of a Project.MajorRange .IsIncluded(.Analysis A LogicalFilter is defined by an association of logical operation on the result of other filters. from the Variograms tab.Dip .Ocean. and=new LogicalDataFilterAnd(f2.Add/Get/Set/RemoveRegion() PropertyDataFilter1D.DataAnalysis.f3). etc. SecondProperty]. 1D DataSelectionFilterRoot.) myWindow.ModelVariogram and PillarGrid.ModelVariogram ..Create/Get…(…) PillarGrid.DomainObject. DictionaryModelVariogram … Correlation data (cross plot) Domain Object Namespace: Slb. PillarGrid.Ocean.Petrel. Analysis Ocean for Petrel 2009.ProcessDiagram Programmatically launch the data analysis tool / dialog of Petrel ProcessDiagram. Function[k].ShowDataAnalysisProcess(…) . A Function domain object describes a linear regression function.1 etc. This requirement relates to the function domain object. CorrelationData2D[k]. A crossplot domain object describes a bivariate distribution.New features in Ocean for Petrel 2009.Petrel. used in property modeling in Petrel.Petrel. used in property modeling in Petrel.DomainObject.Analysis Ocean for Petrel 2009.2 exposes the cross plot domain object.Ocean. not the function window/renderer. The data are contained in a collection of Point2 values.DomainObject.X/Y LaunchDataAnalysisDialog Namespace: Slb.PetrelSystem.2 exposes the function domain object.X/Y Function Domain Object Namespace: Slb.Ocean. The bivariate distribution values are contained in a collection of Point2 values. For example visualization of a horizontal slice triggers thin subcubes to be passed for calculation. (Note that these numbers are measured for a best-case scenario. the machine yields a sustained throughput of 70MB/s or so from disk.SeismicAttribute This requirement was already available in Ocean for Petrel 2008. Performance: The generator's Calculate method is now called with subcubes tailored to what is required to fulfill the user interaction that caused the computation.Ocean.Petrel. IAttributeVersion2 uses a more optimized code path to provide improvement in computation speed of around an order of magnitude for simple algorithms. The interface IAttributeVersion2 inherits Iattribute.Petrel. With complex algorithm the performance improvement might not be as noticeable. Multi-Threading . On a default developer machine. IAttributeVersion2 implementations with large computational footprints run faster because they are called fewer times than before (with larger subcubes). looping through all samples in each 64x64x64 brick in the zgy file).Attribute computation Namespace: Slb. Both ISubCube and ITrace access have been optimized and should now be limited by the disk access. initial measurements show the following performance improvements: ~28MB/s to 180MB/s for 32-bit data sample by sample access (fully cached) ~24MB/s to 120MB/s for 8-bit data sample by sample access (fully cached. it influences performance. threading. API access and persistence. It now supports multiple seismic cubes and additional testing has been provided for 2009. The original IAttribute always got called with sub cubes of one seismic trace. Regular Height Fields Surface Performance Improvement Namespace: DomainObject.2.SetRecordValues(…)has been implemented to set Surface properties in a bulk fashion. Performances using this method are much better than the random access. No API change.Shapes A new method: SurfaceProperty.New features in Ocean for Petrel 2009. slower due to byte to float conversion) ~60MB/s to 260MB/s for 32-bit data using the ToArray () (fully cached) ~60MB/s to 270MB/s for 8-bit data sample by sample access (fully cached) For large cubes.1 Seismic Performance Improved bulk access speed Namespace: Slb.Ocean.DomainObject.Seismic Performances of access to seismic data have been improved. . where the cube is accessed in the most efficient way: access has been designed to minimize cache misses.1 with the new IAttributeVersion2 interface. Threading and API access: IAttributeVersion2 computes in one of two thread modes: SingleWorkerThread or MultipleWorkerThreads. } subCubeIn.). Any state should be persisted with the argument package. but the returned handle can be used in any thread. Note that it is recommended to implement your own serialization logic rather than using . Persistence IAttributeVersion2 can optionally be persisted (if it is serializable).Seismic The IAsyncSubCube GetAsyncSubCube(…) method provides random asynchronous read and write access to the data. In the main thread: IAsyncSubCube subCubeIn = cubeIn. This will in effect make it a singleton and just its identity will be persisted.. . The generator of a IAttributeVersion2 is *not* persisted. and cannot use any Ocean resources (like domain objects). The GetAsyncSubCube can only be called in the main thread. Any code path which changes data up in the GUI (forms) technology will throw an exception as it is considered an illegal cross thread operation. In a worker thread: foreach (Index3 index in subCubeOut) { subCubeOut[index] = subCubeIn[index].New features in Ocean for Petrel 2009.NET Serialization. IAsyncSubCube subCubeOut = cubeOut. subCubeOut. The implementation is not thread safe.Net) components in its implementation...). Instances of ISubCube must not be used in the main thread when there are active IAsyncSubCube instances. Only a small cross-thread-safe subset of the Ocean for Petrel API is available. MultipleWorkerThreads means the calculate method is called in parallel on several threads (possibly one to four). The generator implementation must use only thread safe (.Dispose(). This was mandatory with the old version..GetAsyncSubCube(. but multiple sub cubes can be processed in parallel in separate threads.Dispose(). Multi-Threading .Ocean.Generic seismic bulk access Namespace: Slb.Petrel. only the „reading‟ part of the Domain API can be used.1 SingleWorkerThread means computation is carried out in one single thread which is not the main (UI) thread.GetAsyncSubCube(.DomainObject. g. and can be accessed through FractureNetwork.NumInputs can be greater than 1. Data Management Reference project tool awareness and Copy/Paste of Custom domain objects Namespace: Slb.Ocean.DomainObject.Petrel.ISyncable The API allows custom domain objects or extensions to native domain objects to do the roundtrip between an opened Petrel project and a reference project using the Reference Project Tool and to participate in copy-paste actions in Petrel. with properties attached to each fault. Fracture patches Namespace: Ocean.Petrel. Multiple input seismic attributes Namespace: Slb. A FracturePatch is an individual Fracture in a FractureNetwork object. through IndexedTriangleMesh. identity or version IObservableElementCollection.SeismicAttribute.ICopyable Slb.FaultPatchSet FaultPatchSet represents a set of fault surfaces.Petrel.IAttribute.AttributeContainer IO.DomainObject. The fracture can be expressed as a triangulated surface.Seismic. IObservableElementCollectionFactory.Ocean.Basics.Petrel.Basics.SeismicAttribute.Petrel.IAttribute Ocean for Petrel now supports multiple seismic input cubes. vertices are snapped to the nearest index position.Ocean.Ocean.FracturePatches and FractureNetwork. The API is unchanged. A fault patch is an individual Fault in a FaultPatchSet object.FractureNetwork FractureNetwork represents a Petrel fracture network with properties.ICustomAttributeService . ICopyable to handle duplication IPropertyComparable to provide object-to-object comparisons of e.Shapes. Individual fractures are represented by the FracturePatch object. IObservableElementEnumerable.PatchAtIndex. whose geometry is a set of indexed triangles. This fault is usually computed from seismic data and requires a seismic survey definition on creation. but now the Slb.New features in Ocean for Petrel 2009. including cascading copies.Petrel. IObservableElementEnumerableFactory to allow handling of children items in a custom domain object Custom Extensions can be managed using the IO.1 Seismic Domain Fault (Ant Tracking) patches Namespace: Ocean. Ocean.1 SurfaceAsIExtensionSource Namespace: Slb.SpudDate etc. .Velocity etc. Boolean and DateTime properties are now supported.IsGeometryProperty Boreholes BoreholePropertyCollection Borehole. SurfaceProperty.Interpreter etc. WellMarkersIIdentifiable Namespace: Slb.Get/SetPropertyValue() WellKnownMarkerPropertyTypes.Petrel.DomainObject.IsGeometryProperty HorizonProperty2D/3D.GetWellKnownProperty() Surface.Petrel.IsGeometryProperty Point sets PointSet.GetPropertyAccess() Point well logs PointWellLog. Data Fidelity: Attributes of Petrel Domain Objects The API now provides access to native (WellKnown) attributes – attributes with ”special meaning”. Point well data General: WellPointPropertyCollection Well markers Marker.Get/SetPropertyValue() WellKnownBoreholePropertyTypes.MD etc.Well.DipAzimuth etc.Shapes RegularHeightFieldSurface implements IExtensionSource.TWTPicked etc.Create/GetWellKnown[Dictionary]Property() WellKnownPointSetPropertyTypes. PointProperty.New features in Ocean for Petrel 2009. Surfaces/horizons Surface.Marker Well markers are now IIdentifiable enabling data management solutions. Checkshots WellKnownBoreholePropertyTypes.Properties WellKnownSurfacePropertyTypes.DomainObject.Ocean.PropertyAccess. Each attribute is identifiable and String. CheckShot. so it can be extended with custom extensions.PropertyAccess.GetPropertyAccess() WellKnownPointWellLogPropertyTypes. Like other native domain objects.New features in Ocean for Petrel 2009. IIntersectionWindow.Basics. IWellSectionWindow.Ocean.Petrel. IMapWindow. Slb.Petrel. WindowMode. UI.Ocean. AutoLegendProgrammaticShowHide Namespace: Slb.ShowAutoLegend .IExtensionsSource Native Petrel window interfaces (IWindow3D.Tools.UI.Ocean.OnKeyUp() Toolbars and Tools associated with a Process Namespace: Slb.Ocean.Petrel.Petrel.UI.IExtensionsSource. IFunctionWindow) now extend Slb.UI.1 UI and Look & Feel Interaction Events Extension Namespace: Slb.EnabledChanged/OnEnabledChanged() event Custom windows tree extensions for Petrel windows Namespace: Slb.IWindow3D Support for programmatically showing/hiding Petrel‟s AutoLegend bool IWindow3D.Petrel.Ocean.Petrel.Process Enables Ocean for Petrel processes to be set as disabled (grayed out) if e.Tool[bar]sCore Process Insensitive Namespace: Slb. this allows Ocean for Petrel applications to add and remove custom domain objects as children of the trees in the Petrel tree hierarchy. Process.Petrel. An implementation of this method typically returns different PetrelToolbar or PetrelTool configurations based on e. a license can not be obtained or if the required input data isn‟t present.g.Ocean.Enabled = true/false Process. giving them an Extensions property.WellKnownTools The new ToolbarsCore and ToolsCore properties are called by the framework whenever it needs to know respectively the list of PetrelToolbars and PetrelTools associated with a Process.WindowMode Provides extensions in the interaction events to cater for keyboard events.WellknownWindowModes Process.Workflow.Basics.Process.g. the active IToggleWindow.Workflow.Ocean.OnKeyDown() WindowMode. ) allows displaying progress of separate-threaded processes in the Petrel task manager. UI.1 Cursor tracking independent of IToggleWindow.NewAsyncProgress(.ProgressStatus = i...Ocean.Models ..IWorldCursor Petrel Task Manager Namespace: Slb.) IFileFormatCollection..ShowImportDialog(fmt.UI Programmatically launch settings dialogs UI.DialogBuilder.Cancelable)) { for (int i = 0.Ocean.. with proper domain handling Namespace: Slb.Ocean.Petrel.PetrelProject Gets or sets the active tree in Petrel explorer. i < 100.. ProgressType. i++) { pr..path..Petrel..Ocean. using (IProgress pr = PetrelLogger.) Namespace: Slb.Petrel..path.IO It is now possible to programmatically launch an import or export dialog.IWorldCursor The new World Cursor API allows applications to participate in cursor tracking without explicitly needing to implement a custom toggle window...ActivateSettingsTab(obj.New features in Ocean for Petrel 2009.ActiveTree = PetrelProject. IFileFormatCollection. } } Launching Dialogs and Controlling Visual Content Namespace: Slb.) UI.NewAsyncProgress( "test".Ocean.Show/HideSettings(obj.DialogBuilder..Petrel.) Select active explorer tree Namespace: Slb.ShowExportDialog(fmt. PetrelProject.UI.Petrel The PetrelLogger. Retrieving Measurement for its name NameSpace: Ocean. IWorkflowEditor.Petrel. TreeElementState.Ocean.Petrel.DictionaryColorTableEntry The Slb.Ocean.PetrelUnitSystem a new method has been added to get the measurement from a measurement name: public static IUnitMeasurement GetUnitMeasurement(string unitMeasurementName) .UI.Petrel.DictionaryColorTableEntry class now has a Parent property to support hierarchies.1 Expand/collapse branches in the explorer trees Namespace: Slb.Petrel.UI.Ocean.PetrelProject Enable programmatic expansion of data tree nodes PetrelProject. Slb.Ocean.FindOrCreateWorkstepGroup("My new folder") Infragistics dependencies have been removed Namespace: Slb. A new PetrelSystem.Petrel.Ocean.Petrel.ToolService can be used to Create new toolbars/access native Petrel toolbars Create new menus/access native Petrel menus Register context menu handlers Add tools to toolbars.Workflow.IWorkflowEditor Provides a mechanism to place a workstep under a given workstep folder (in the workflow editor).UI.Tools.PetrelSystem.TreeOperations.SetExpanded(obj.wkstpGroup) Provides a mechanism to add new folders for worksteps in the workflow editor Processes. menus Template Hierarchy Namespace: Slb.New features in Ocean for Petrel 2009.Add(wkstp.IToolService Infragistics dependencies have been removed from the Ocean for Petrel API.Expanded) Workflow editor folders Namespace: Slb.Petrel.Ocean. It allows keeping the documentation of previous Ocean for Petrel SDK releases.1 SDK supports Petrel 2009. Installation and Un-installation To improve the Petrel awareness of plug-ins installed we have developed new Ocean for Petrel plug-in install and uninstall procedures. It is now possible to create projects targeting Petrel 2008 or Petrel 2009 (if installed on the computer). and Petrel 2009.1 SDK now installs even if a previous version (Ocean for Petrel 2008. The installer wizard allows choosing the targeted version of Petrel: Petrel 2008.1 x32 on Windows XP32 and XP64. selectively un-install (or not) these plug-ins. Petrel un-installation needs to be restarted manually then . 64bits support: The Ocean for Petrel 2009. then as Petrel knows which plug-ins are installed on top of itself it can. The Ocean for Petrel 2009.1 SDK) is installed. Petrel 2009 x32 or Petrel 2009 64 bits (providing warnings in case of incompatibilities).New features in Ocean for Petrel 2009.1 Other Development A document describing Module Deployment Best Practices has been released recently and is available from the Ocean Portal: Developer Center > Best Practices > Module Deployment. When a plug-in is installed on top of Petrel it registers itself to inform Petrel it exists.1 x64 on Windows Vista 64 Ocean for Petrel Wizards The wizards now install on top of Visual Studio 2005 and Visual Studio 2008. It then launches successively the uninstaller of all selected plug-ins (using the option to not check for dependencies). In case the user wants to uninstall plug-ins the Petrel uninstaller gets the list of registered plug-ins for Petrel and asks the user which registered plug-ins should be uninstalled. This is mainly to help the Petrel and plug-ins un-installation. when it is uninstalled. When Petrel is uninstalled it checks if plug-ins are installed and asks the user if and which plug-ins need to be un-installed. This document details issues an Ocean client may face due to this change and suggests potential ways to solve those issues. Petrel Simulation Results When the user opens an older project in Petrel 2010 the simulation results on the Models tree will be automatically converted to results on the Results tree.Appendix A Appendix A: Migration to Simulation Results on the Petrel Results Tree Introduction In Petrel 2010 the simulation results have been moved from the Models tree to the Results tree. An example of the results on Petrel 2009 is shown below: An example of the same result on Petrel 2010 is shown below: . In Petrel 2010 the individual time steps are not selectable and the user must use the timeplayer. In version 2010 you will no longer be able to do this as that property will no longer be selectable in the Models tree and will not be displayed in the same manner in the Results tree. Issues you may face Drop target In previous versions of Ocean and Petrel. you could create a drop target on your dialog and simply drop in the property you wished. . Individual time steps can be selected by the user in the Petrel 2009 version. In Petrel 2010 the user must select the simulation from the Cases tree and then the identifier of the result they are interested in from the Results tree.Appendix A Important differences to note: In the Petrel 2009 version the user can simply select the data they are interested in directly from the models tree (here the water saturation for Case HOR-1STD_ECLIPSE_100). Your Ocean plug-in can then retrieve a list of all timesteps and populate the combo box as shown with those timesteps. to achieve the same behavior.Appendix A There is no direct equivalent and instead. . You can then use the Ocean API to retrieve the property data. The user can then select the timestep of interest. you would have to provide the Case. the GridResult type and a timestep. The image below shows a possible solution whereby the user may drop a case and the GridResult (in this case „Water saturation‟). Items. comboTimesteps.GetData(typeof(Case)) as Case. } } GridResult Droptarget private void dropResult_DragDrop(object sender.Appendix A The following are some code snippets of how you could achieve this: Case Droptarget private void dropCase_DragDrop(object sender.GetGridPropertyTimeSeries(gr).Tag = gr.".Data. textCase.Text = c. return.Name)).Add(dt). if (c != null) { textCase. // textGrid is the Grid text box if (gpts. comboTimesteps.IsGood) { if (gpts.Clear(). if (gr != null) { GridPropertyTimeSeries gpts = c. gr.Name. textResult.Items. DragEventArgs e) { GridResult gr = e.Text = gpts. if (c != null) { GridResult gr = textResult.Enabled = true. } .Name.Data.Enabled = false. RefreshTimesteps(). } } comboTimesteps.Tag = c.TimeSamples) comboTimesteps. c. RefreshTimesteps().Tag as Case. return.WarnStatus(string. DragEventArgs e) { Case c = e.Text = gr. // comboTimesteps is the timesteps Combo box Case c = textCase.SampleCount > 0) { foreach (DateTime dt in gpts.GetData(typeof(GridResult)) as GridResult. } } PetrelLogger.Grid.Name. } } Updating of the timesteps Combo box private void RefreshTimesteps() { comboTimesteps. textGrid.Results.SelectedIndex = 0. if (gr != null) { textResult.Format("Case '{0}' does not have results for '{1}'.Tag as GridResult.Name. GetGridPropertyTimeSeries(gr).IsGood) { GridProperty gp = gpts[timestep]. k. GridResult gr. Here is a sample routine for pushing back 3D grid properties to the „Models‟ tree: void pushBackGridResultForAllTimeSteps(Case c.9999999 0. Please note that there would be some issues with this approach in that these „Models‟ tree results would not be updated on a subsequent simulation run (you would need to push them back again). j j j j j j j j 0. j {1}.9999998 0. using (ITransaction trn = DataManager. } } } return. i. k k k k k k k k 1] 2] 3] 4] 5] 6] 7] 8] at at at at at at at at 01/01/2012 01/01/2012 01/01/2012 01/01/2012 01/01/2012 01/01/2012 01/01/2012 01/01/2012 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 => => => => => => => => 0. foreach (GridProperty gp in gpts. DateTime timestep) { GridPropertyTimeSeries gpts = c.Appendix A Retrieval of the property private void PrintGridProperty(Case c. gp[i.Name.Format("{0} [i {1}.Samples) { Index3 num = gp. ++i) { for (int j = 0. In addition this would also require more resources and memory to effectively duplicate the properties.I.Date)).NumCellsIJK.NumCellsIJK. 0. 0.9999999 0. GridResult gr) { if (c == null || gr == null) return. gp.9999999 0. 0.".Date.GetGridPropertyTimeSeries(gr).InfoOutputWindow(String. Index3 num = gp. GridPropertyTimeSeries gpts = c. j < num. 0. if (gpts.Format("Printing property '{0}' value at '{1}'. } } Sample Output Water Water Water Water Water Water Water Water saturation saturation saturation saturation saturation saturation saturation saturation (SWAT) (SWAT) (SWAT) (SWAT) (SWAT) (SWAT) (SWAT) (SWAT) [i [i [i [i [i [i [i [i 0.PropertyCollection. 0.NewTransaction()) { trn. gp. 0. 0. i < num. 0. 0. ++j) { for (int k = 0.Name.Results.K. ++k) { PetrelLogger. 0. if (gpts.Lock(pc).J. k])). PetrelLogger.9999999 0.InfoOutputWindow(String.Grid.IsGood) { PropertyCollection pc = gpts. gp. 0. 0. gp. Thus this approach is only recommended as an interim solution until you have migrated fully to the new Results tree based API. k < num.9999999 0. j. for (int i = 0. 0. 0.Results. j.9999999 0.9999999 Pushing back properties to the „Models‟ tree For your workflow it may make sense to push back properties from the Results tree to the Models tree. using (IProgress x = . k {3}] at {4} => {5}". ++i) { for (int j = 0. } } } .J + j. k].").Commit(). k < num. k] = gp[i.Date.Format( "Copying property '{0}' at '{1}' to grid '{2}'.Name ) ).K.Date = gp.Grid. ++j) { x. } } Here is another routine for pushing back grid property for a specific time step value: void pushBackGridResultForTimeStep(Case c. gp. p. using (IProgress x = PetrelLogger. gp. i < num.Results.ProgressStatus = i * num. k < num.I * num.Grid.Name.Lock(pcr).Name. GridProperty gp = gpts[ts]. p. p. DateTime ts) { if (c == null || gr == null) return.I.Appendix A PetrelLogger. num.NewProgress(0. j. j. gp.PropertyCollection. for (int k = 0.Status("Finished copying properties. ++k) p[i. j < num.I * num.Name.CreateProperty(gr.".NewProgress(0.Name = gp. ++k) p[i.NumCellsIJK.Name = gp.Date. using (ITransaction trn = DataManager.J)) { x. j < num. k] = gp[i.J + j. for (int k = 0. p.Grid.K.UseDate = true.PropertyVersion).Name.Date. GridPropertyTimeSeries gpts = c. for (int i = 0. k].Name ) ).J. Index3 num = gp. p.UseDate = true. i < num. gp.J)) { x. if (gpts. p. } PetrelLogger.IsGood) { PropertyCollection pc = gpts. ++i) { for (int j = 0. gp.GetGridPropertyTimeSeries(gr). GridResult gr. for (int i = 0.PropertyVersion).Date. } } } } trn. j.SetProgressText( String.". Property p = pc.Date = gp.J.NewTransaction()) { trn.SetProgressText( String. Property p = pc. j.I. gp.Format( "Copying property '{0}' at '{1}' to grid '{2}'.CreateProperty(gr.ProgressStatus = i * num. num. ++j) { x. For the scenario where you have used the default grid control for a workstep (i.Resolve(droid) as Property. If you have a workstep in which you displayed a drop target for that property. Please note that no exception would be thrown here. then unfortunately that DROID will not be resolvable. In the code snippet shown below DataManager. // A droid for a Property that has moved from the 'Models' tree to // the 'Results' tree will not be resolvable. where you have not made a custom UI) then again those drop targets would be empty as the DROID would not be resolvable. Property resolvedProperty = DataManager. then as you would be unable to resolve that DROID then you would thus be unable to show the property in that drop target. } } DROID issues If in your Ocean plug-in you have saved a DROID for a property that has moved from the Models tree to the Results tree. If you have a use case that involves resolving a DROID for a moved property then please contact the Ocean Product Champion and provide details. The Ocean team would be interested in receiving feedback from clients who feel that this would present a problem for them.e.Appendix A trn.Status("Finished copying properties. } PetrelLogger.Resolve() would return null."). // The following will return null. .Commit(). Please use IObservableElementEnumerable instead of INotifyingEnumerable. new object[0] { })).Ocean.1. EnumerableChanged(this. new ElementEnumerableChangeEventArgs( new object[1] { child }.Petrel..1 Slb. } //.GetEnumerator().Appendix B Appendix B: Use of IObservableElementEnumerable instead of INotifyingEnumerable From Ocean for Petrel 2010.Ocean.Ocean.Basics. } . using System.Collections. The factory for it (INotifyingEnumerableFactory) was made obsolete in Ocean for Petrel 2009. This new interface allows a plug-in to notify Petrel that multiple elements have been added or removed by raising the EnumerableChanged event only once. if (EnumerableChanged == null) return.GetEnumerator() { return m_Children.. IEnumerator IEnumerable.Petrel.INotifyingEnumerable is obsoleted. The code fragment below shows how the new interface can be implemented: using System.Generic.ElementEnumerableChangeEventArgs> EnumerableChanged.Collections. public void Add(object child) { m_Children.Add(child).Basics.Basics. public class Folder : IObservableElementEnumerable { List<object> m_Children = new List<object>(). using Slb. } public event EventHandler <Slb. FreeImage is only deployed in 32-bit version. this library will throw an exception if more than one instance is initialized in a single executable. that the Intel OpenMP library is an exception to this rule – see the Intel MKL in the table below.flexerasoftware.025 (5.ocean.microsoft.2009.) Using DLLs with versionspecific file names or using the same version as Petrel are other options for avoiding conflicts.esri.39 7.intel.5 SP1 1.com/products/geotoolkit/geotoolkitnet/geotoolkit_net.2.slb.0 2.11.0.aspx http://www.aspx) for more information. On the contrary.0 Flexera SourceForge GeoToolkit. For plug-ins that use native third-party DLLs. This library is an exception to the rule that plug-ins can avoid version conflicts by can linking statically.com/ http://freeimage.20073.3. Plug-ins that use third-party libraries should review this table for possible version conflicts.2009. http://www.Appendix C Appendix C: Third-party Components Deployed with Petrel: Avoiding Version Conflicts The table below lists third-party components that are used and deployed by Petrel as dynamic-link libraries (DLLs).0 Component Vendor Name Microsoft Boost Community Software FX Description http://msdn. http://www.0 7.net FreeImage is not used directly by Petrel.1632 Statios ESRI V11 . These libraries are not part of the Ocean API and plug-ins are responsible for obtaining the appropriate licenses required to use them.0.NET HueSpace Infragistics NetAdvantage Intel MKL (with Intel OpenMP) 2. http://software.int.NET Framework Boost ChartFX Version Number 3.3 3.3.623.com/Secure/developers-best-practices.html Charting package (used for tornado plots) http://www.2.sourceforge.com Industry standard geostatistics.statios.com/en-us/intel-mkl/ NOTE: MKL includes the Intel OpenMP library libiomp5md.com/features/software-fx/index.com/en-gb/netframework/default. See the document Ocean Module Deployment on the Ocean Portal (http://www.boost.dll.2987.componentsource.dll) FlexLM FreeImage July 31 2003 9. however.3.38 10. (Note.com UI controls or toolbars and tree.623) INT Hue Infragistics Intel .infragistics. Geostat/GSLib ESRI Projection Engine (pe. It is used by ImageConversion.1. the best way to avoid version conflicts is to statically link against the library.htm Volume Visualization http://www.com Used by the Ocean Core and Services Coordinates service to execute coordinate systems operations.org/ http://www. http://www. which is run as a separate process from Petrel. version 5. Component Name . 0.52 System Development.0 Mechdyne Xerces-C++ XML Parser 2.0 Apache Software Foundation .dll.10. it must use the DLL (not link statically) and it must use this same version as Petrel.101.0 Intel RevWare http://software.nokia.1.com http://qt. CGM and PDF output from Petrel http://www.0 trackdAPI 1.com/ Paper.oracle.microsoft.0.org/xerces-c/ Microsoft Enterprise Libraries NMath Core 4.2.7.com/vsg_prod_openinventor.2 SDI APS 1.syncfusion.com A middleware library that Petrel uses to communicate with the trackd server from VRCO. OpenInventor 7.com http://www.net A middleware library that Petrel uses to communicate with Microscribe input devices produced by Immersion.intel.net/products/nmath/core/ * The build of NMath 4. http://msdn.0.com/ Used by the Petroleum Quick Look Plug-in http://www.com/en-us/intel-compilers/ http://www.0. http://qt.revware.101 2.com/ Used by the Seismic Server Administration Tool. http://xerces.3dconnexion. if a plug-in uses libiomp5md.0 deployed with Petrel is a SLB specific build.3 4.x 4. http://www.2 VSG.mechdyne.nokia.com/en-us/library/dd203099.com A middleware library that Petrel uses to communicate with input devices produced by 3DConnexion. Inc. http://www.6. SyncFusion 3Dconnexion SyncFusion TDxInput 7.20 1.vsg3d.1.0 4.303.Appendix C Therefore.4.aspx http://www.1. Intel Fortran RTL MicroscribeSDK(32) 9.0. Visualization Science Group Oracle Nokia Nokia http://www.1.apache.php 3D visualization See Intel MKL.centerspace.0* Microsoft CenterSpace Software OpenMP Oracle Instant Client Qt4 Qt4 11.sdicgm.0. Plug-ins that wish to use NMath should contact Ocean for Petrel support for further instructions. slb.ocean.com.Appendix C Contacting the Ocean Team Please refer to the following resources for Ocean information: www. .
Copyright © 2024 DOKUMEN.SITE Inc.