OSDC.DotnetLibraries.Drilling.Section 1.0.1

dotnet add package OSDC.DotnetLibraries.Drilling.Section --version 1.0.1
                    
NuGet\Install-Package OSDC.DotnetLibraries.Drilling.Section -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OSDC.DotnetLibraries.Drilling.Section" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OSDC.DotnetLibraries.Drilling.Section" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="OSDC.DotnetLibraries.Drilling.Section" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OSDC.DotnetLibraries.Drilling.Section --version 1.0.1
                    
#r "nuget: OSDC.DotnetLibraries.Drilling.Section, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OSDC.DotnetLibraries.Drilling.Section@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OSDC.DotnetLibraries.Drilling.Section&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=OSDC.DotnetLibraries.Drilling.Section&version=1.0.1
                    
Install as a Cake Tool

OSDC.DotnetLibraries.Drilling.Section

OSDC.DotnetLibraries.Drilling.Section is the directional drilling geometry kernel used by the NORCE WellPath toolset. The .NET 8 class library defines reusable curve primitives for joining two curvilinear survey points and solving for missing directional parameters through deterministic and iterative solvers. It depends on the internal OSDC.DotnetLibraries.General.Math, OSDC.DotnetLibraries.General.Common, and OSDC.DotnetLibraries.General.Statistics packages.

Highlights

  • ArcSection base type wraps a Start and End CurvilinearPoint3D, exposes the underlying NonLocalizedCurve, and provides interpolation helpers such as InterpolateAtMD and InterpolateAtTVD.
  • CircularArcSection implements the standard survey conversions (LIA, SIA, DIA, XYZ, DTZ, DTI, LDT, SDT) with awareness of physical dimensions so that only valid combinations of measured depth, inclination, azimuth, toolface, and dogleg severity are accepted.
  • BuildAndTurnArcSection solves build/turn problems by combining build rate, turn rate, length, and target constraints and routes to specialized solvers such as CalculateLBT, CalculateSIA, CalculateXYZ, etc.
  • Additional section types cover constant curvature with toolface, double arcs, cubic transitions, target axis steering, and axis utilities (ComplexAxis) for defining reference frames.
  • ComplexSection chains multiple circular sections, automatically enforces parameter counts, and uses the statistics helpers to find deterministic solutions that honor control points.
  • All section types are [Serializable] so they can be exchanged over JSON or binary channels, and the project ships with Apache 2.0 licensing.

Repository layout

  • OSDC.DotnetLibraries.Drilling.Section/ � library source, license, and this README.
  • NORCE.Drilling.UnitTest.Section/ � MSTest project that exercises the solvers with randomized scenarios.
  • NORCE.Drilling.WellPath.Service.sln � solution that groups this library together with the rest of the WellPath components.

Getting started

Prerequisites

  1. Install the .NET SDK 6.0 (or newer) which includes the netcoreapp3.1 targeting pack: dotnet --info.
  2. Make sure you can restore the OSDC.DotnetLibraries.General.* packages from the configured NuGet feeds.

Restore and build the library

dotnet restore OSDC.DotnetLibraries.Drilling.Section/OSDC.DotnetLibraries.Drilling.Section.csproj
dotnet build OSDC.DotnetLibraries.Drilling.Section/OSDC.DotnetLibraries.Drilling.Section.csproj -c Release

Run the section unit tests

dotnet test NORCE.Drilling.UnitTest.Section/NORCE.Drilling.UnitTest.Section.csproj

Usage

Solve a single circular arc

using OSDC.DotnetLibraries.Drilling.Section;
using OSDC.DotnetLibraries.General.Common;
using OSDC.DotnetLibraries.General.Math;

var section = new CircularArcSection
{
    Start = new CurvilinearPoint3D
    {
        X = 0,
        Y = 0,
        Z = -2500,
        Abscissa = 1200,
        Incl = 10.0 * Numeric.PI / 180.0,
        Az = 20.0 * Numeric.PI / 180.0
    },
    End = new CurvilinearPoint3D
    {
        Incl = 60.0 * Numeric.PI / 180.0,
        Az = 110.0 * Numeric.PI / 180.0
    }
};

section.Circle.Length = 300.0;
section.Circle.ReferenceToolface = 15.0 * Numeric.PI / 180.0;

if (!section.CalculateLIA())
{
    throw new InvalidOperationException("Unable to solve LIA for the requested inputs.");
}

var md1350 = section.InterpolateAtMD(1350.0);
var tvd = section.InterpolateAtTVD(-2640.0);

Chain multiple sections

var tangent = new CircularArcSection
{
    Start = section.End,
    End = new CurvilinearPoint3D { Z = -2650 }
};

tangent.Circle.Length = 80.0;
tangent.Circle.Curvature = 2.0 / 1000.0;

var lateral = new CircularArcSection
{
    Start = tangent.End,
    End = new CurvilinearPoint3D { X = 450, Y = 35, Z = -3000 }
};

lateral.Circle.Length = 600.0;
lateral.Circle.ReferenceToolface = 0.0;

var profile = new ComplexSection { section, tangent, lateral };

if (!profile.Calculate())
{
    throw new InvalidOperationException("The trajectory is over or under determined.");
}

The complex section checks each segment for the correct number of constraints, automatically calls the appropriate solvers, and propagates updates downstream.

Extending the library

Add new section types by inheriting from ArcSection, providing a concrete curve (NonLocalizedCurve) implementation, and overriding Calculate/InterpolateAtMD. The existing classes are good templates: they guard against under-defined inputs, keep the start and end points consistent, and make heavy use of Numeric helpers to stay numerically stable.

License

OSDC.DotnetLibraries.Drilling.Section is released under the Apache License 2.0.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 0 6/18/2026
1.0.0 0 6/18/2026