Entire project was developed on C++ to get microscopic control of the project and its deliverables. One of the major challenges of application development was to handle the huge data sizes and maintain control on processes to ensure optimal runtime and efficiency
Application was intended to be used by companies to accurately predict the location of oil within subsurface layers and develop well trajectories for drilling crews. The accuracy of such an analysis was required to be between 5-10 meters. Data is handled extremely accurately to ensure no quality loss and highest regard for process runtime optimisation.
mDrift’s team spent the initial few months learning the field of Exploration Geophysics. This helped the team to not only understand the nuances of the development required but also to communicate with the client much more effectively and efficiently.
SEGY files that contain all the trace data sets that make up the subsurface data set can range in size from 10s to 100s of GBs. The application needed to be able to ingest and maintain the whole data set on memory to quickly visualise and analyse the data set
mDrift had to develop custom triangulation logic to visualize complex underground surface structures. The point cloud data pertaining to the surface is sorted through, analysed and triangulated using a custom logic developed on top of Delaunay triangulation to achieve under visualisation of data under 0.5 second time and posting cutting edge timeline and capabilities.
Application was required to have extensive OpenGL capabilities to visualise such a large data set and handles all this data via intelligent load into memory. This visualised data is used as a base to analyse and operate upon using various tools and functionalities such as volume cutter, surface detection, trajectory analysis, LAS property projection etc.
Application extensively used the GPU for computation and visualisation while utilising the CPU for organising the information being passed to the GPU
Application needed to be optimised for multithreaded workload to optimise for multiple parallel functionalities being required of the application.