Las to witsml or resqml

Hello @philippeVerney

I didn’t find a c++ library that does las v2 to witsml v2.1, so I wrote it. But it raises some questions about wells in WITSML/RESQML.
I do not want to do real time monitoring of wells. I have las logs (maybe dlis some day) and I want to use them more in a RESQML perspective.

I would like to translate this las to something I can use with fespp. I know fespp doesn’t handle witsml yet. If I understand this part of the model I can put log data into a Log object of Witsml and then create an instance of WellboreFrameRepresentation that has a DOR to this log object. Is this a good way to do it ? Should I put these log data as properties of points ? How can I do that ?

And thanks for the ColumnBasedTable !

Hi Lionel,

If you want to use las logs in a RESQML perspective, why do you want to use WITSML? Maybe you first need WITSML and then you now want RESQML in addition for FESPP.
Indeed, RESQML WellboreFrameRepresentation by themsleves are sufficient to represent LAS logs afaik. You don’t strictly need WITSML. And FESPP reads WellboreFrameRepresentation but not WITSML logs for now.

Having said that, everything you guess is exactly how it works:

  • You can indeed link your WellboreFrameRepresentation to a WITSML log even if it is not tested a lot in FESAPI.

  • In RESQML, a log channel (A single scalar -or rarely vectorial- property at a each MD in a list -or at each interval between two consecutive MD-) is modeled as a WellboreFrameRepresentation (list of MDs) + a Property (generally a scalar one but it can be a vectorial too). The property applies generally on points (i.e. on MD of the WellboreFrameRepresentation ) but it can also apply to intervals (space between two consecutive MDs of the WellboreFrameRepresentation)

  • The link between a property and a representation is a FIRP link and then apply exactly the same between a WellboreFrameRepresentation and a property than between any rep and any prop.

  • If you have a (LAS) log with several channels on the same MD list (also called a “logset”), it is simply a single WellboreFrameRepresentation + several Properties (one for each channel)

Here is an example of building well logs with FESAPI : fesapi/example/example.cpp at 6b03299b4d01668af7eeeef18df6a60910f08a4b · F2I-Consulting/fesapi · GitHub to fesapi/example/example.cpp at 6b03299b4d01668af7eeeef18df6a60910f08a4b · F2I-Consulting/fesapi · GitHub
In this example l313 to 336, we first build a WellboreFrameRepresentation l314 where :

  • its MDs are not regularly spaced (they are given in an HDF5 dataset) l 316
  • we create a prop kind l323 to define the kind of the channel
  • we create a property representating a channel of the log using the prop kind and the mds defined above. l.333 and 336

As an example, we also show l.318 and 319 how to build a WellboreFrameRepresentation which is a list of regularly space MDs (no need of HDF5 dataset storage in this case)

I didn’t catch exactly the well design in RESQML. I just did the shortcut: las → witsml… Thank you Philippe for the explanations!

Hello again Philippe,

I am resuming this work and their is another thing I don’t understand. With las file I don’t have a trajectory. I would like to modify fespp to take into account this configuration.
I see three strategies and I am wondering what is the best option:

  • not add a TrajectoryRepresentation to the FrameRepresentation and handle this specific case in the ResqmlWellboreChannelToVtkPolyData
  • build a linear trajectory using the well head (X,Y) and the depth (Z) values. In this case I don’t see how to set the geometry. I can set the minimal geometry but lineKind should then be == -1 no ?
  • create a trajectory with lineKind == -1 but here I also don’t know how to do

Do you have any clue ?

Hi Lionel,

If you have not trajectory associated to your logs, looking at them in a 3d viewer is a bit to strange to me… The less risky would be your option 2 imho with a clear message i.e. build a “vertical” trajectory using the well head (X,Y) and the final depth value…

Otherwise these logs can be shown on a 2d (graph) viewer where the vertical axis is the (measured) depth one such as in well log viewer at DuckDuckGo. It is not done at all in FESPP but should ieally be one day

To create a vertical wellbore trajectory I think that only giving StartMD and FinshMd (without Geometry) should be enough if you target the minimal amount of information.

I don’t know if FESAPI and/or FESPP supports it. But it should…

resqml2::WellboreTrajectoryRepresentation::setMinimalGeometry(double startMd, double endMd)
should do most of the work on FESAPI side.

Because when I get the trajetory back I can not test if it is a minimalGeometry (without control points).

I think setMinimalGeometry should either set rep->Geometry to nullptr or create an empty ParametricLine with lineKind to -1. What do you think ?