Skip to the content.

title: Field Development Framework Documentation description: Field-development documentation for digital field twins spanning exploration through decommissioning. —

This folder contains comprehensive documentation for NeqSim’s field development capabilities, enabling the creation of digital field twins that provide consistency from exploration through decommissioning.


Overview Documents

Document Description
DIGITAL_FIELD_TWIN.md Start here! Architecture showing how NeqSim integrates all lifecycle phases
MATHEMATICAL_REFERENCE.md Mathematical foundations for all calculations (EoS, economics, flow)
API_GUIDE.md Detailed usage examples for every class and method
DECISION_ENGINE_WORKFLOWS.md Decision-engine workflows for tiebacks, greenfield concepts, portfolios, process coupling, reservoir exports, and report-ready tables
HOST_TIE_IN_CAPACITY.md Host capacity, holdback, process-equipment bottlenecks, and debottleneck decisions for brownfield tiebacks
INTEGRATED_PRODUCTION_MODELLING.md Reservoir-to-market IPM — reservoir drives, well deliverability curves, network solver, gas-lift allocation, well-test matching, artificial-lift pumps, and choke optimisation (GAP/PROSPER/MBAL + Pipesim style)
FIELD_LIFECYCLE_SIMULATION.md Time-marching field and area concepts with multi-host routing, facility sizing, product specifications, NPV and break-even

The Digital Field Twin Concept

NeqSim’s strength is providing calculation consistency across the entire field lifecycle:

┌──────────────────────────────────────────────────────────────────────────┐
│                      DIGITAL FIELD TWIN LIFECYCLE                        │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  DEVELOPMENT                    OPERATIONS                  LATE-LIFE   │
│  ───────────                    ──────────                  ─────────   │
│                                                                          │
│  ┌─────────┐  ┌─────────┐  ┌───────────┐  ┌────────────┐  ┌──────────┐ │
│  │ Concept │→ │ Select  │→ │  Design   │→ │  Optimize  │→ │ Decom-   │ │
│  │Screening│  │& MCDA   │  │& Execute  │  │& Operate   │  │ mission  │ │
│  └─────────┘  └─────────┘  └───────────┘  └────────────┘  └──────────┘ │
│       │            │             │              │              │        │
│       ▼            ▼             ▼              ▼              ▼        │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │                SAME THERMODYNAMIC FOUNDATION                      │  │
│  │  • Same fluid (SystemInterface) throughout lifecycle             │  │
│  │  • Same EoS parameters tuned once, used everywhere               │  │
│  │  • Consistent properties from reservoir to export                │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                                                                          │
└──────────────────────────────────────────────────────────────────────────┘

Key Integration Points

1. PVT ↔ Process Integration

The same SystemInterface fluid flows through wells, separators, compressors, and pipelines:

// Create fluid once with tuned parameters
SystemInterface reservoir = new SystemSrkCPAstatoil(95, 320);
reservoir.addComponent("methane", 0.70);
// ... configure and tune ...

// Same fluid used throughout
Stream wellStream = new Stream("well", reservoir.clone());
Separator sep = new ThreePhaseSeparator("sep", wellStream);
// Properties remain consistent

2. Reservoir ↔ Facilities Integration

VFP tables ensure the same thermodynamics apply in both domains:

ReservoirCouplingExporter exporter = new ReservoirCouplingExporter(processModel);
exporter.generateVfpProd(1, "PROD-A1");
exporter.exportToFile("vfp.inc", ExportFormat.ECLIPSE_100);
// Reservoir simulator now uses NeqSim-consistent thermodynamics

3. Economics ↔ Technical Integration

Decision support tools use process simulation results directly:

ConceptEvaluator evaluator = new ConceptEvaluator();
ConceptKPIs kpis = evaluator.evaluate(concept);
// Economics (NPV, IRR) derived from technical (production, utilities)

Package Structure

neqsim.process.fielddevelopment/
├── concept/           # Core data structures (FieldConcept, ReservoirInput, etc.)
│   ├── GreenfieldConceptFactory
│   └── DevelopmentCaseTemplate
├── economics/         # NPV, tax, portfolio optimization
│   ├── CashFlowEngine
│   ├── NorwegianTaxModel
│   └── PortfolioOptimizer
├── evaluation/        # Decision support
│   ├── ConceptEvaluator
│   ├── DevelopmentOptionRanker
│   └── MonteCarloRunner
├── facility/          # Process generation
│   ├── ConceptToProcessLinker
│   └── FacilityBuilder
├── lifecycle/         # Executable reservoir-to-market lifetime and area concepts
│   ├── AreaDevelopmentPortfolio
│   ├── FieldLifecycleSimulator
│   ├── FieldLifecycleModel (ProcessSystem/ProcessModel + existing SURF)
│   ├── FacilityLifecycleStrategy
│   ├── FacilityCapacityAllocator
│   ├── FacilityModificationPlanner
│   ├── FieldProductSpecifications
│   └── NorwegianOilFieldCase (greenfield + multi-host area portfolio)
├── network/           # Pipeline network
│   ├── MultiphaseFlowIntegrator
│   └── NetworkSolver
├── reservoir/         # Reservoir coupling
│   ├── ReservoirCouplingExporter
│   └── TransientWellModel
├── screening/         # Technical screening
│   ├── FlowAssuranceScreener
│   ├── ArtificialLiftScreener
│   └── EmissionsTracker
├── subsea/            # Subsea systems
│   └── SubseaProductionSystem
└── tieback/           # Tieback analysis
    ├── TiebackAnalyzer
    ├── HostFacility
    └── capacity/      # Host tie-in capacity and holdback planning
        ├── TieInCapacityPlanner
        ├── ProductionProfileSeries
        └── HostTieInPoint

Quick Start Examples

Evaluate a Field Concept

import neqsim.process.fielddevelopment.concept.*;
import neqsim.process.fielddevelopment.evaluation.*;

FieldConcept concept = FieldConcept.oilDevelopment("My Field", 8, 5000.0, 0.20);
ConceptEvaluator evaluator = new ConceptEvaluator();
ConceptKPIs kpis = evaluator.evaluate(concept);

System.out.println("CAPEX: " + kpis.getTotalCapexMUSD() + " MUSD");
System.out.println("Field life: " + kpis.getFieldLifeYears() + " years");
System.out.println("Recovery: " + kpis.getEstimatedRecoveryPercent() + "%");
System.out.println("CO2 Intensity: " + kpis.getCo2IntensityKgPerBoe() + " kg/boe");

Compare Standard Development Templates

import neqsim.process.fielddevelopment.concept.*;

DevelopmentCaseTemplate tieback = GreenfieldConceptFactory.subseaTieback("Book Tieback");
DevelopmentCaseTemplate fpso = GreenfieldConceptFactory.standaloneFpso("Book FPSO");

System.out.println(tieback.getSummary());
System.out.println(fpso.getSummary());
System.out.println("Tieback process blocks: " + tieback.getFacilityConfig().getBlocks().size());

Compare Development Options

import neqsim.process.fielddevelopment.evaluation.*;

DevelopmentOptionRanker ranker = new DevelopmentOptionRanker();

DevelopmentOption fpso = ranker.addOption("FPSO");
fpso.setScore(Criterion.NPV, 1200.0);
fpso.setScore(Criterion.CO2_INTENSITY, 12.0);

DevelopmentOption tieback = ranker.addOption("Tieback");
tieback.setScore(Criterion.NPV, 650.0);
tieback.setScore(Criterion.CO2_INTENSITY, 7.0);

ranker.setWeightProfile("balanced");
RankingResult result = ranker.rank();
System.out.println("Recommended: " + result.getRankedOptions().get(0).getName());

Check Host Tie-In Capacity and Holdback

import neqsim.process.fielddevelopment.tieback.HostFacility;
import neqsim.process.fielddevelopment.tieback.capacity.*;

HostFacility host = HostFacility.builder("Brownfield Host")
    .gasCapacity(10.0)
    .build();

ProductionProfileSeries base = new ProductionProfileSeries("base")
    .addPeriod(2028, 7.0, 0.0, 0.0, 0.0);
ProductionProfileSeries satellite = new ProductionProfileSeries("satellite")
    .addPeriod(2028, 4.0, 0.0, 0.0, 0.0);

TieInCapacityResult capacity = new TieInCapacityPlanner(host)
    .setHostProductionProfile(base)
    .setSatelliteProductionProfile(satellite)
    .setAllocationPolicy(CapacityAllocationPolicy.BASE_FIRST)
    .setHoldbackPolicy(HoldbackPolicy.DEFER_TO_LATER_YEARS)
    .run();

System.out.println(capacity.toMarkdownTable());

Generate Process Model from Concept

import neqsim.process.fielddevelopment.facility.*;

ConceptToProcessLinker linker = new ConceptToProcessLinker();
ProcessSystem process = linker.generateProcessSystem(concept, FidelityLevel.PRE_FEED);
process.run();

double powerMW = linker.getTotalPowerMW(process);
System.out.println("Total Power Required: " + powerMW + " MW");

Estimate SURF Costs

import neqsim.process.mechanicaldesign.subsea.SubseaCostEstimator;

// Create estimator with regional factors (Norway, UK, GOM, Brazil, West Africa)
SubseaCostEstimator estimator = new SubseaCostEstimator(SubseaCostEstimator.Region.NORWAY);

// Calculate SURF equipment costs
estimator.calculateTreeCost(10000.0, 7.0, 380.0, true, false);
System.out.println("Subsea Tree: $" + String.format("%,.0f", estimator.getTotalCost()));

estimator.calculateManifoldCost(6, 80.0, 380.0, true);
System.out.println("Manifold: $" + String.format("%,.0f", estimator.getTotalCost()));

estimator.calculateUmbilicalCost(48.0, 4, 3, 2, 380.0, false);
System.out.println("Umbilical: $" + String.format("%,.0f", estimator.getTotalCost()));

estimator.calculateFlexiblePipeCost(1200.0, 8.0, 380.0, true, true);
System.out.println("Dynamic Riser: $" + String.format("%,.0f", estimator.getTotalCost()));

SURF Equipment Classes

NeqSim provides comprehensive SURF (Subsea, Umbilical, Riser, Flowline) modeling in neqsim.process.equipment.subsea:

Class Description
SubseaTree Christmas tree for well control (horizontal/vertical)
SubseaManifold Production/test/injection routing with well slots
PLET Pipeline End Termination structures
PLEM Pipeline End Manifold with multiple connections
SubseaJumper Rigid or flexible inter-equipment connections
Umbilical Control, power, and chemical injection lines
FlexiblePipe Dynamic risers and static flowlines
SubseaBooster Multiphase pumps and wet gas compressors

Each equipment type has a dedicated mechanical design class with:

See SURF Subsea Equipment Guide for detailed documentation.


Topic Document
Integrated Field Lifecycle Simulation FIELD_LIFECYCLE_SIMULATION.md — detailed wells/SURF/process lifetime, multi-host area routing, product specifications, bottlenecks, NPV and break-even
SURF Subsea Equipment SURF_SUBSEA_EQUIPMENT.md
Late-Life Operations LATE_LIFE_OPERATIONS.md
Field Development Strategy FIELD_DEVELOPMENT_STRATEGY.md
Integrated Framework INTEGRATED_FIELD_DEVELOPMENT_FRAMEWORK.md
Decision Engine Workflows DECISION_ENGINE_WORKFLOWS.md
Multi-Scenario Production Optimization MULTI_SCENARIO_PRODUCTION_OPTIMIZATION.md

Executable Notebook Examples

The following developer notebooks import NeqSim Java classes from the workspace through devtools/neqsim_dev_setup.py, making them suitable for unreleased field-development APIs:

Notebook Description
field_development_decision_engine.ipynb Standardized concept templates, lifecycle emissions, MCDA ranking, portfolio optimization, and report-ready tables
field_development_process_reservoir_coupling.ipynb Tieback route networks, multi-well gathering allocation, concept-to-process linking, and VFP/schedule export

See Also


AI Agent & Skills

Use @field.development in VS Code Copilot Chat for AI-assisted field development workflows. This agent automatically loads the following skills:

Skill Scope
neqsim-field-development Lifecycle workflows, concept selection, reservoir/well/facility APIs
neqsim-field-economics NPV, IRR, cash flow, tax regimes (Norwegian NCS, UK), cost estimation
neqsim-subsea-and-wells Subsea systems, casing design (API 5C3), SURF costs, tieback analysis
neqsim-production-optimization Decline curves, bottleneck analysis, gas lift, IOR/EOR screening

See AI Agents Reference for the full catalog.