h5geo 0.4.0
C++17 and python API to work with geo-data (seismic, wells, maps, other in process) based on HDF5. Aimed at geoscientists and developers.
Loading...
Searching...
No Matches
h5well.h
1#ifndef H5WELL_H
2#define H5WELL_H
3
4#include "h5baseobject.h"
5
6#include <Eigen/Dense>
7
9class H5DevCurve;
10class H5LogCurve;
11class H5WellTops;
12
21class H5Well : public H5BaseObject
22{
23protected:
24 virtual ~H5Well() = default;
25
26public:
32 const std::string &logType,
33 const std::string &logName) = 0;
36 h5gt::Group group) = 0;
39 const std::string &devName) = 0;
42 h5gt::Group group) = 0;
46 virtual H5WellTops* openWellTops() = 0;
47
53 std::string& logType,
54 std::string& logName,
56 h5geo::CreationType createFlag) = 0;
59 h5gt::Group group,
61 h5geo::CreationType createFlag) = 0;
64 std::string& devName,
66 h5geo::CreationType createFlag) = 0;
69 h5gt::Group group,
71 h5geo::CreationType createFlag) = 0;
77 h5geo::CreationType createFlag) = 0;
78
80 virtual bool setHeadCoord(
81 Eigen::Ref<Eigen::Vector2d> v,
82 const std::string& lengthUnits = "",
83 bool doCoordTransform = false) = 0;
85 virtual bool setKB(
86 double& val,
87 const std::string& lengthUnits = "") = 0;
89 virtual bool setUWI(const std::string& str) = 0;
90
95 virtual bool setActiveDevCurve(H5DevCurve* curve) = 0;
96
98 virtual Eigen::VectorXd getHeadCoord(
99 const std::string& lengthUnits = "",
100 bool doCoordTransform = false) = 0;
102 virtual double getKB(
103 const std::string& lengthUnits = "") = 0;
105 virtual std::string getUWI() = 0;
106
113
115 virtual std::vector<h5gt::Group> getDevCurveGroupList() = 0;
117 virtual std::vector<h5gt::Group> getLogCurveGroupList() = 0;
119 virtual std::vector<std::string> getDevCurveNameList() = 0;
121 virtual std::vector<std::string> getLogCurveNameList() = 0;
123 virtual std::vector<std::string> getLogTypeList() = 0;
125 virtual size_t getDevCurveCount() = 0;
127 virtual size_t getLogCurveCount() = 0;
128
130 virtual H5WellParam getParam() = 0;
131
134
136 virtual std::optional<h5gt::Group> getDevG() = 0;
138 virtual std::optional<h5gt::Group> getActiveDevG() = 0;
140 virtual std::optional<h5gt::Group> getWellTopsG() = 0;
142 virtual std::optional<h5gt::Group> getLogG() = 0;
144 virtual std::optional<h5gt::Group> getLogTypeG(const std::string& logType) = 0;
145};
146
147using H5Well_ptr = std::unique_ptr<H5Well, h5geo::ObjectDeleter>;
148
149#endif // H5WELL_H
Base class for geo-objects.
Definition h5baseobject.h:13
Provides API to work with well deviations (trajectories)
Definition h5devcurve.h:21
Provides API to work with well logs.
Definition h5logcurve.h:18
A container built around HDF5 file and used for storing and manipulating H5Well objects.
Definition h5wellcontainer.h:15
Provides API to work with wells.
Definition h5well.h:22
virtual H5LogCurve * createLogCurve(h5gt::Group group, H5LogCurveParam &p, h5geo::CreationType createFlag)=0
Create H5LogCurve.
virtual bool setActiveDevCurve(H5DevCurve *curve)=0
Set selected H5DevCurve as active.
virtual std::vector< h5gt::Group > getDevCurveGroupList()=0
Omit active dev curve.
virtual std::optional< h5gt::Group > getDevG()=0
Get current well's DEV Group (where H5DevCurves reside)
virtual size_t getLogCurveCount()=0
Get number of H5LogCurves within current well.
virtual std::optional< h5gt::Group > getWellTopsG()=0
Get current well's H5WellTops Group.
virtual H5DevCurve * openDevCurve(h5gt::Group group)=0
Open H5DevCurve.
virtual H5WellTops * createWellTops(H5WellTopsParam &p, h5geo::CreationType createFlag)=0
Create H5WellTops.
virtual H5DevCurve * openDevCurve(const std::string &devName)=0
Open H5DevCurve.
virtual H5LogCurve * openLogCurve(const std::string &logType, const std::string &logName)=0
Open H5LogCurve.
virtual std::vector< std::string > getLogCurveNameList()=0
Find and return vector of H5LogCurve names within current well.
virtual std::vector< std::string > getDevCurveNameList()=0
Find and return vector of H5DevCurve names within current well.
virtual H5WellContainer * openWellContainer()=0
Open H5WellContainer where current well resides.
virtual H5DevCurve * createDevCurve(h5gt::Group group, H5DevCurveParam &p, h5geo::CreationType createFlag)=0
Create H5DevCurve.
virtual H5WellTops * openWellTops()=0
Open H5WellTops.
virtual double getKB(const std::string &lengthUnits="")=0
Set kelly bushing.
virtual size_t getDevCurveCount()=0
Get number of H5DevCurves within current well.
virtual std::optional< h5gt::Group > getActiveDevG()=0
Get current well's active H5DevCurve Group.
virtual std::vector< h5gt::Group > getLogCurveGroupList()=0
Find and return vector of H5LogCurve Groups within current well.
virtual H5DevCurve * createDevCurve(std::string &devName, H5DevCurveParam &p, h5geo::CreationType createFlag)=0
Create H5DevCurve.
virtual Eigen::VectorXd getHeadCoord(const std::string &lengthUnits="", bool doCoordTransform=false)=0
Get XY well head coordinates.
virtual std::vector< std::string > getLogTypeList()=0
Find and return vector of H5LogCurve types within current well.
virtual bool setHeadCoord(Eigen::Ref< Eigen::Vector2d > v, const std::string &lengthUnits="", bool doCoordTransform=false)=0
Set XY well head coordinates.
virtual std::optional< h5gt::Group > getLogG()=0
Get current well's LOG Group (where H5LogCurves reside)
virtual H5DevCurve * openActiveDevCurve()=0
Get active H5DevCurve.
virtual H5WellParam getParam()=0
Get parameters that were used to create current well.
virtual H5LogCurve * createLogCurve(std::string &logType, std::string &logName, H5LogCurveParam &p, h5geo::CreationType createFlag)=0
Create H5LogCurve.
virtual bool setUWI(const std::string &str)=0
Set UWI Unique Well Identifier.
virtual std::string getUWI()=0
Get UWI Unique Well Identifier.
virtual bool setKB(double &val, const std::string &lengthUnits="")=0
Set XY kelly bushing.
virtual std::optional< h5gt::Group > getLogTypeG(const std::string &logType)=0
Get current well's logType Group.
virtual H5LogCurve * openLogCurve(h5gt::Group group)=0
Open H5LogCurve.
Provides API to work with welltops.
Definition h5welltops.h:12
CreationType
Definition h5enum.h:468
Class for creating H5DevCurve.
Definition h5base.h:149
Class for creating H5LogCurve.
Definition h5base.h:157
Class for creating H5Well.
Definition h5base.h:138
Class for creating H5WellTops.
Definition h5base.h:81