Live Drilling
  • Introduction
  • FAQ
  • what's new
    • Latest releases
      • Wells 5
      • LiveRig 5
      • LiveRig 4
      • WITSML Store
    • Operations in Time by Depth Chart
    • Unit Sets
      • Per-Asset Units
      • Unit Conversion
      • Dashboard Configuration
      • Force Follow Asset Units
    • Well casing shoe schematic
    • Wells correlation
    • FFT spectrum
    • Pressure Tests
      • Configuration
      • Automated Standard Pressure Tests
      • Manual Pressure Test
      • LOT/FIT
    • Rig State detection
    • BOP Schematic
      • BOP status register
    • Signal Processing
      • Moving Average
  • Data Flow
    • Introduction
    • Data Ingestion
    • Data Normalization
      • Clock Synchronization
      • Normalized events schema
      • Data indexes and enrichment
      • Unit conversion
      • Auto-Switch
  • Physical Models
    • Introduction
      • Structure of the functions
      • Validation
    • General Equations
      • Static Data Dependencies
      • Pipes Functions
    • Trajectory
      • Introduction
      • Static Data Dependencies
      • Pipes Functions
    • Hydraulic
      • Introduction
      • Static Data Dependencies
      • Pipes Functions
    • Torque and Drag
      • Introduction
      • Static Data Dependencies
      • Pipes Functions
    • Hole Cleaning
      • Introduction
      • Static Data Dependencies
      • Pipes Functions
    • Surge and Swab
      • Introduction
      • Static Data Dependencies
      • Pipes Functions
    • Thermal
      • Introduction
    • Volume Tracker
      • Introduction
      • Pipes Functions
  • Basic Features
    • Charts
      • Channels Charts
        • Temporal Channels Chart
        • Channel Value Chart
        • Depth Channels Chart
        • Data navigation
          • Span Control
      • Rig Allocation Gantt Chart
    • Unit sets
      • Configuration changes on unit sets
      • Depth unit changes
      • Personal units sets
    • Permission schema
    • Import/Export Well
    • Add-ons
  • Static Data
    • Assets
      • Assets Structure
    • Well
      • Introduction
      • Well Schema
      • Well Units
      • Regions, fields and countries
      • Well Design Overview
      • Objectives
    • Intervention
      • Introduction
      • Intervention Schema
      • Intervention Types
      • Scenarios
      • Runs
      • Completion and Abandonment
      • Drilling Section Schema
    • Rig
      • Introduction
      • Rig Schema
      • Physical models configuration
    • Pipes functions
    • REST API Examples
  • Administration
    • High Frequency Data
      • WITSML Null Values
      • Unit Management Tools
      • WITS Custom Mapping
    • Data Normalization
      • Data Management
        • Event Settings
        • Channels Management
      • Data normalization templates
      • Data normalization templates prioritization
      • Auto-Switch
    • Standard Identifiers
    • Static Data
      • Regions, fields and countries
      • Intervention Types
  • LiveRig Collector
    • Introduction
    • Getting Started
    • Connecting to Intelie Live
    • Security
    • Local data storage
    • Data transmission and recovery
    • Monitoring
    • Remote Control
      • APIs
        • /testSourceEndpoint
        • /storeConfiguration
        • /getFromStore
        • /backlog-sync
      • Sources
        • MQTT Topics
        • OPC Requests
        • WITSML Backlog Sync
        • WITSML Object Explorer
        • WITSML Requests
      • Properties
    • HA Deployment
    • Protocols
      • WITSML
      • WITS
      • OPC-DA
      • OPC-UA
      • MODBUS
      • MQTT
      • CSV
      • RAW
    • Protocol conversion
    • Configuration
      • liverig.properties
      • sources.xml
      • store.json
      • modbus.json
      • mqtt.json
      • Configuring an OPC-UA source
      • Multiple event types for WITSML sources
      • Certificate-based authentication for WITSML HTTPS sources
    • LiveRig Collector Appliance
    • Command line Interface (CLI)
  • LIVE EDGE
    • Collector Reader
  • Integrations
    • Introduction
    • WITSML Store
    • REST Output
    • REST Input
    • WellView
    • OpenWells
    • Python
  • DEVELOPER
    • Identified Curves
    • Hidden Units
  • DEPRECATED
    • WITSML Output
    • LiveRig 3.x / 2.x
      • 3.5.0
      • 3.4.0
      • 3.3.0
      • 3.2.0
      • 3.1.0
      • 3.0.0
      • 2.29.0
Powered by GitBook
On this page
  • Pressure along of the drill string
  • Surge
  • Swab
  • Equivalent Pressure along the drill string
  • Swab
  • Surge
  • ECD and Pressure at a given depth
  • Surge
  • Swab
  • Maximum running speed
  • Surge
  • Swab
  • Maximum and Minimum trip - ECD
  • Surge
  • Swab
  • Maximum and Minimum trip - Pressure
  • Surge
  • Swab
  • Input Parameters Description

Was this helpful?

  1. Physical Models
  2. Surge and Swab

Pipes Functions

PreviousStatic Data DependenciesNextThermal

Last updated 3 years ago

Was this helpful?

Pressure along of the drill string

Pressure along of the drill string

Surge

Computes surge pressure along the specified well with the specified pipe speed)

og.model.surge.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'Pa', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Pressure Surge (Pa) vs Depth

Swab

Computes swab pressure along the specified well with the specified pipe speed

og.model.swab.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'Pa', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Pressure Swab (Pa) vs Depth

Example Pipes:

--Swab ECD
=> og.model.swab.pressure(newmap("wellId","11","pipeSpeed", 0.05)) every batch
=> @for => @yield => {swab.pressure} as Swab_pressure, depth

--Surge ECD
=> og.model.surge.pressure(newmap("wellId","11","pipeSpeed", 0.05)) every batch
=> @for => @yield => {surge.pressure} as Surge_pressure, depth

Equivalent Pressure along the drill string

Swab

Computes swab density along with the specified well with the specified pipe speed

og.model.swab.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'kg/m3', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: ECD swab (kg/m3) vs Depth

Surge

Computes surge density along with the specified well with the specified pipe speed

og.model.surge.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'kg/m3', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: ECD surge (kg/m3) vs Depth

ECD and Pressure at a given depth

Surge

Computes surge equivalent circulating density at given depth

og.model.surge.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'kg/m3', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean,
                "atDepth", value_m)
)

Output: ECD surge (kg/m3)

Swab

Computes swab equivalent circulating density at given depth

og.model.swab.pressure(
         newmap("wellId", "{well_id}",  
                "bitDepth", value_m,
                "pipeSpeed", value_m/s, 
                "computationUom", 'kg/m3', 
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean,
                "atDepth", value_m)
)

Output: ECD swab (kg/m3)

Example Pipes:

--Swab ECD

=>og.model.swab.pressure(
           newmap('wellId','9', 
                  'computationUom', 'kg/m3', 
                  'pipeSpeed', 0.01, 
                  'bitDepth', 1000, 
                  'minSectionLength', 250))->result:seq at the end
=> @chain
=> {swab.pressure}#curve_unit_convert(kg/m3,'lbm/galUS') as {Swab}, depth#curve_unit_convert('m',@@depthOutputUnit) as depth

--Swab ECD
=>og.model.surge.pressure(
           newmap('wellId','9', 
                  'computationUom', 'kg/m3', 
                  'pipeSpeed', 0.01, 
                   'bitDepth', 1000, 
                   'minSectionLength', 250))->result:seq at the end
=> @chain
=> {swab.pressure}#curve_unit_convert(kg/m3,'lbm/galUS') as {Surge}, depth#curve_unit_convert('m',@@depthOutputUnit) as depth

Maximum running speed

Surge

Computes maximum pipe speed profile on surge along the specified well

og.model.surge.maxPipeSpeed(
         newmap("wellId", "{well_id}",  
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Max Surge Speed (m/s) vs Depth

PARAMETER | TYPE | DOMAIN | REQUIRED? | DEFAULT

wellId | String | Integer Strings | Yes | ---

drillingSectionIndex | Integer | >= 0 | No | ---

bitDepth | Double | >= 0 | No | ---

atDepth | Double | >= 0 | No | ---

minSectionLength | Double | 0 <= x <= maxSectionLength | No | 0

maxSectionLength | Double | >= minSectionLength | No | Infinity

closedEnded | Boolean | {true, false} | No | true

depthLowerBound | Double | Reals | No | 0

bitStepSize | Double | > 0 | No | 20

Swab

Computes maximum pipe speed profile on swab along the specified well

og.model.swab.maxPipeSpeed(
         newmap("wellId", "{well_id}",  
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Max Swab Speed (m/s) vs Depth

Example Pipes:

=> og.model.swab.maxPipeSpeed(
      newmap("wellId", "11", 
             "depthLowerBound", 50, 
             "initialBitDepth", 1000, 
             "stepSize" 50))->result:seq at the end
=> @for => @yield => -{swab.maxPipeSpeed}# as {Max Swab Speed}, depth# as depth

=> og.model.surge.maxPipeSpeed(
       newmap("wellId", "11", 
              "depthLowerBound", 50, 
              "initialBitDepth", 1000, 
              "stepSize", 50))->result:seq at the end
=> @for => @yield => -{swab.maxPipeSpeed}# as {Max surge Speed}, depth# as depth

Maximum and Minimum trip - ECD

Surge

Computes surge equivalent circulating density in drill string trip

og.model.surge.tripLimits(
         newmap("wellId", "{well_id}",  
                "pipeSpeed", value_m/s,
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "computationUom", "kg/m3",
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Max and Min Surge ECD (kg/m3) vs Depth

Swab

Computes swab equivalent circulating density in drill string trip

og.model.swab.tripLimits(
         newmap("wellId", "{well_id}",  
                "pipeSpeed", value_m/s,
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "computationUom", "kg/m3",
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Maximum and Minimum trip - Pressure

Surge

Computes surge pressure in drill string trip

og.model.surge.tripLimits(
         newmap("wellId", "{well_id}",  
                "pipeSpeed", value_m/s,
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "computationUom", "Pa",
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Max and Min Surge Pressure (Pa) vs Depth

Swab

Computes swab pressure in drill string trip

og.model.swab.tripLimits(
         newmap("wellId", "{well_id}",  
                "pipeSpeed", value_m/s,
                "depthLowerBound", value_m,
                "initialBitDepth", value_m, 
                "computationUom", "Pa",
                "bitStepSize", value_m,
                "maxSectionLength", value_m, 
                "minSectionLength", value_m,
                "closedEnded", boolean)
)

Output: Max and Min Swab Pressure (Pa) vs Depth

Input Parameters Description

Parameters

Description

unit

wellId

Well Id

String

computationUom

If ‘Pa’ output pressure or ‘kg/m3’ output is equivalent density

string

depthLowerBound

Bottom Depth (bit depth)

m

bitDepth

Casing Shoe depth

m

atDepth

Choose specific depth

m

bitStepSize

Step size length (discretization)

m

pipeSpeed

Drill string or casing speed

m/s

minSectionLength

Minimum section length for integration

m

maxSectionLength

Maximum section length for integration

m

closedEnded

Close or open ended geometry. Default is true (close ended)

boolean

sectionIndex

Set the index of the section. Default is empty, uses the last section

Number (int)

Surge and Swab ECD along of the drill string
Max trip velocity vs Depth