Class FieldDevelopmentWorkflow
java.lang.Object
neqsim.process.fielddevelopment.workflow.FieldDevelopmentWorkflow
- All Implemented Interfaces:
Serializable
Unified field development workflow orchestrator.
This class provides a single entry point for running field development studies at different fidelity levels, from early screening through detailed design. The workflow is designed to support education and industry applications aligned with academic programs such as NTNU's TPG4230 - Underground reservoirs fluid production and injection course.
TPG4230 Course Topic Coverage
This framework addresses key topics from the course:
- Field Lifecycle Management - Discovery through operations with progressive refinement
- PVT Characterization - EOS selection and tuning to laboratory data
- Reservoir Material Balance - Tank models with production/injection tracking
- Well Performance (IPR/VLP) - Inflow performance and vertical lift modeling
- Production Network Optimization - Multi-well gathering system equilibrium
- Economic Evaluation - NPV, IRR with country-specific fiscal terms
- Flow Assurance Screening - Hydrates, wax, corrosion risk assessment
Integration Architecture
The workflow integrates multiple NeqSim subsystems:
- PVT characterization and EOS tuning (
thermo.system,pvtsimulation) - Reservoir modeling with material balance (
process.equipment.reservoir) - Well modeling with IPR/VLP nodal analysis (
WellSystem,WellFlow) - Process simulation (
ProcessSystem) - Economics with tax models (
CashFlowEngine,TaxModel) - Flow assurance screening (
FlowAssuranceScreener)
Fidelity Levels
- SCREENING - Analog-based correlations, ±50% accuracy, suitable for portfolio screening
- CONCEPTUAL - EOS fluid, IPR/VLP models, ±30% accuracy, suitable for concept selection
- DETAILED - Tuned EOS, full process simulation, Monte Carlo economics, ±20% accuracy
Example Usage
// Quick screening study for gas tieback
FieldDevelopmentWorkflow workflow =
FieldDevelopmentWorkflow.quickGasTieback("Satellite Discovery", 50.0, 25.0, 4, 2.0, "NO");
WorkflowResult result = workflow.run();
System.out.println(result.getSummary());
// Progress to conceptual with EOS-tuned fluid
workflow.setFidelityLevel(FidelityLevel.CONCEPTUAL);
workflow.setFluid(tunedFluid); // From PVT regression
result = workflow.run();
// Full detailed study with Monte Carlo
workflow.setFidelityLevel(FidelityLevel.DETAILED);
workflow.setMonteCarloIterations(1000);
result = workflow.run();
System.out.println("NPV P50: " + result.getNpvP50() + " MUSD");
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumFidelity level for the workflow.static enumStudy phase in field development lifecycle. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate FieldConceptprivate Stringprivate doubleprivate Stringprivate doubleprivate FacilityConfigprivate intprivate intprivate SystemInterfaceprivate doubleprivate doubleprivate doubleprivate WorkflowResultprivate intprivate doubleprivate doubleprivate List<HostFacility> private Stringprivate ProcessSystemprivate Stringprivate SimpleReservoirprivate booleanprivate booleanprivate static final longprivate SubseaProductionSystemprivate TiebackAnalyzerprivate doubleprivate doubleprivate List<WellSystem> -
Constructor Summary
ConstructorsConstructorDescriptionFieldDevelopmentWorkflow(String projectName) Creates a new field development workflow.FieldDevelopmentWorkflow(String projectName, FieldConcept concept) Creates a workflow with concept. -
Method Summary
Modifier and TypeMethodDescriptionaddHostFacility(HostFacility host) Adds a potential host facility for tieback analysis.addWell(WellSystem well) Adds a well model.private voidCalculates CO2 emissions from concept-level estimation.calculatePowerBreakdown(ProcessSystem process) Calculates power breakdown by equipment type.private voidcalculateProcessEmissions(WorkflowResult result, ProcessSystem process) Calculates CO2 emissions from process system.private doublecalculateTotalPowerMW(ProcessSystem process) Calculates total power consumption from process system.Configures subsea parameters from concept.private doubleEstimates subsea CAPEX from system configuration.static StringgenerateComparisonReport(List<FieldDevelopmentWorkflow> workflows) Generates a comparison report for multiple concepts.private doublegetEmissionFactorKgPerMWh(String supplyType) Gets emission factor based on power supply type.Gets the fidelity level.Gets the last result.Gets the project name.Gets the study phase.static FieldDevelopmentWorkflowquickGasTieback(String name, double giipGSm3, double tiebackKm, int wellCount, double ratePerWellMSm3d, String countryCode) Creates a quick screening workflow for a gas tieback.static FieldDevelopmentWorkflowquickOilDevelopment(String name, double stoiipMMbbl, int wellCount, double ratePerWellBopd, String countryCode) Creates a quick screening workflow for oil development.run()Runs the workflow at the configured fidelity level.private WorkflowResultRuns conceptual-level analysis (±30% accuracy).private WorkflowResultRuns detailed-level analysis (±20% accuracy).runReservoirDepletion(SimpleReservoir res, List<WellSystem> wellList) Runs reservoir depletion with wells to generate production profile.private WorkflowResultRuns screening-level analysis (±50% accuracy).private voidrunSubseaAnalysis(WorkflowResult result) Runs subsea analysis and tieback evaluation.setCalculateEmissions(boolean enabled) Enables or disables CO2 emissions calculations.setConcept(FieldConcept concept) Sets the field concept.setCountryCode(String countryCode) Sets the country code for tax calculations.setDesignStandard(String standard) Sets the design standard for mechanical design.setDiscountRate(double rate) Sets the discount rate for NPV calculations.setFacilityConfig(FacilityConfig config) Sets the facility configuration.Sets the fidelity level.setFluid(SystemInterface fluid) Sets the reservoir fluid.setGridEmissionFactor(double factor) Sets the grid emission factor for power-from-shore.setMonteCarloIterations(int iterations) Sets the number of Monte Carlo iterations for uncertainty analysis.setPowerSupplyType(String type) Sets the power supply type for emissions calculations.setPrices(double oil, double gas, double tariff) Sets commodity prices.setProcessSystem(ProcessSystem process) Sets the process system.setProductionTiming(int firstYear, int fieldLife, double plateau, double decline) Sets production timing parameters.setReservoir(SimpleReservoir reservoir) Sets the reservoir model.setRunMechanicalDesign(boolean enabled) Enables or disables mechanical design calculations.setRunSubseaAnalysis(boolean enabled) Enables or disables subsea analysis.Sets the study phase.Sets subsea architecture type.Sets the subsea production system.setTiebackAnalyzer(TiebackAnalyzer analyzer) Sets the tieback analyzer for subsea economics.setTiebackDistanceKm(double distanceKm) Sets tieback distance for subsea development.setWaterDepthM(double depthM) Sets water depth for subsea development.private voidValidates that required inputs are present.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
projectName
-
fidelityLevel
-
studyPhase
-
countryCode
-
discountRate
private double discountRate -
concept
-
fluid
-
reservoir
-
wells
-
processSystem
-
facilityConfig
-
subseaSystem
-
potentialHosts
-
tiebackAnalyzer
-
runSubseaAnalysis
private boolean runSubseaAnalysis -
waterDepthM
private double waterDepthM -
tiebackDistanceKm
private double tiebackDistanceKm -
subseaArchitecture
-
firstProductionYear
private int firstProductionYear -
fieldLifeYears
private int fieldLifeYears -
plateauYears
private double plateauYears -
declineRate
private double declineRate -
oilPrice
private double oilPrice -
gasPrice
private double gasPrice -
gasTariff
private double gasTariff -
runMechanicalDesign
private boolean runMechanicalDesign -
calculateEmissions
private boolean calculateEmissions -
powerSupplyType
-
gridEmissionFactor
private double gridEmissionFactor -
designStandard
-
monteCarloIterations
private int monteCarloIterations -
lastResult
-
-
Constructor Details
-
FieldDevelopmentWorkflow
Creates a new field development workflow.- Parameters:
projectName- name of the project/field
-
FieldDevelopmentWorkflow
Creates a workflow with concept.- Parameters:
projectName- name of the project/fieldconcept- field concept definition
-
-
Method Details
-
setFidelityLevel
Sets the fidelity level.- Parameters:
level- fidelity level- Returns:
- this for chaining
-
setStudyPhase
Sets the study phase.- Parameters:
phase- study phase- Returns:
- this for chaining
-
setCountryCode
Sets the country code for tax calculations.- Parameters:
countryCode- ISO country code (e.g., "NO", "UK", "BR")- Returns:
- this for chaining
-
setDiscountRate
Sets the discount rate for NPV calculations.- Parameters:
rate- discount rate (0-1)- Returns:
- this for chaining
-
setConcept
Sets the field concept.- Parameters:
concept- field concept definition- Returns:
- this for chaining
-
setFluid
Sets the reservoir fluid.- Parameters:
fluid- thermodynamic system representing the fluid- Returns:
- this for chaining
-
setReservoir
Sets the reservoir model.- Parameters:
reservoir- simple reservoir for material balance- Returns:
- this for chaining
-
addWell
Adds a well model.- Parameters:
well- integrated well system (IPR+VLP)- Returns:
- this for chaining
-
setProcessSystem
Sets the process system.- Parameters:
process- process simulation model- Returns:
- this for chaining
-
setFacilityConfig
Sets the facility configuration.- Parameters:
config- facility configuration- Returns:
- this for chaining
-
setRunMechanicalDesign
Enables or disables mechanical design calculations.- Parameters:
enabled- true to run mechanical design- Returns:
- this for chaining
-
setCalculateEmissions
Enables or disables CO2 emissions calculations.- Parameters:
enabled- true to calculate emissions- Returns:
- this for chaining
-
setPowerSupplyType
Sets the power supply type for emissions calculations.- Parameters:
type- power supply type: GAS_TURBINE, POWER_FROM_SHORE, COMBINED_CYCLE, DIESEL- Returns:
- this for chaining
-
setGridEmissionFactor
Sets the grid emission factor for power-from-shore.- Parameters:
factor- emission factor in kg CO2/kWh (e.g., 0.05 for Nordic, 0.4 for UK)- Returns:
- this for chaining
-
setDesignStandard
Sets the design standard for mechanical design.- Parameters:
standard- company design standard (e.g., "Equinor", "Shell", "BP")- Returns:
- this for chaining
-
setMonteCarloIterations
Sets the number of Monte Carlo iterations for uncertainty analysis.- Parameters:
iterations- number of iterations (typically 1000-10000)- Returns:
- this for chaining
-
setSubseaSystem
Sets the subsea production system.- Parameters:
subsea- configured subsea system- Returns:
- this for chaining
-
addHostFacility
Adds a potential host facility for tieback analysis.- Parameters:
host- host facility- Returns:
- this for chaining
-
setTiebackAnalyzer
Sets the tieback analyzer for subsea economics.- Parameters:
analyzer- tieback analyzer- Returns:
- this for chaining
-
setRunSubseaAnalysis
Enables or disables subsea analysis.- Parameters:
enabled- true to run subsea analysis- Returns:
- this for chaining
-
setWaterDepthM
Sets water depth for subsea development.- Parameters:
depthM- water depth in meters- Returns:
- this for chaining
-
setTiebackDistanceKm
Sets tieback distance for subsea development.- Parameters:
distanceKm- tieback distance in kilometers- Returns:
- this for chaining
-
setSubseaArchitecture
public FieldDevelopmentWorkflow setSubseaArchitecture(SubseaProductionSystem.SubseaArchitecture arch) Sets subsea architecture type.- Parameters:
arch- subsea architecture (DIRECT_TIEBACK, MANIFOLD_CLUSTER, etc.)- Returns:
- this for chaining
-
configureSubseaFromConcept
Configures subsea parameters from concept.Extracts subsea-relevant parameters from the field concept and sets up subsea system automatically.
- Returns:
- this for chaining
-
setProductionTiming
public FieldDevelopmentWorkflow setProductionTiming(int firstYear, int fieldLife, double plateau, double decline) Sets production timing parameters.- Parameters:
firstYear- first production yearfieldLife- total field life in yearsplateau- plateau duration in yearsdecline- annual decline rate after plateau- Returns:
- this for chaining
-
setPrices
Sets commodity prices.- Parameters:
oil- oil price in USD/bblgas- gas price in USD/Sm3tariff- gas transport tariff in USD/Sm3- Returns:
- this for chaining
-
run
Runs the workflow at the configured fidelity level.- Returns:
- workflow result with all outputs
-
validateInputs
private void validateInputs()Validates that required inputs are present. -
runScreening
Runs screening-level analysis (±50% accuracy). -
runConceptual
Runs conceptual-level analysis (±30% accuracy). -
runDetailed
Runs detailed-level analysis (±20% accuracy). -
runSubseaAnalysis
Runs subsea analysis and tieback evaluation.- Parameters:
result- workflow result to populate
-
estimateSubseaCapex
Estimates subsea CAPEX from system configuration.- Parameters:
subsea- subsea production system- Returns:
- estimated CAPEX in MUSD
-
runReservoirDepletion
Runs reservoir depletion with wells to generate production profile. -
quickGasTieback
public static FieldDevelopmentWorkflow quickGasTieback(String name, double giipGSm3, double tiebackKm, int wellCount, double ratePerWellMSm3d, String countryCode) Creates a quick screening workflow for a gas tieback.- Parameters:
name- project namegiipGSm3- gas initially in place (GSm3)tiebackKm- tieback distance (km)wellCount- number of wellsratePerWellMSm3d- rate per well (MSm3/d)countryCode- tax jurisdiction- Returns:
- configured workflow
-
quickOilDevelopment
public static FieldDevelopmentWorkflow quickOilDevelopment(String name, double stoiipMMbbl, int wellCount, double ratePerWellBopd, String countryCode) Creates a quick screening workflow for oil development.- Parameters:
name- project namestoiipMMbbl- stock tank oil initially in place (MMbbl)wellCount- number of wellsratePerWellBopd- rate per well (bopd)countryCode- tax jurisdiction- Returns:
- configured workflow
-
generateComparisonReport
Generates a comparison report for multiple concepts.- Parameters:
workflows- list of workflows to compare- Returns:
- markdown comparison table
-
getProjectName
-
getLastResult
Gets the last result.- Returns:
- last workflow result, or null if not run
-
getFidelityLevel
Gets the fidelity level.- Returns:
- fidelity level
-
getStudyPhase
Gets the study phase.- Returns:
- study phase
-
calculateTotalPowerMW
Calculates total power consumption from process system.- Parameters:
process- the process system- Returns:
- total power in MW
-
calculatePowerBreakdown
Calculates power breakdown by equipment type.- Parameters:
process- the process system- Returns:
- map of equipment type to power (MW)
-
calculateProcessEmissions
Calculates CO2 emissions from process system.- Parameters:
result- the workflow result to populateprocess- the process system
-
calculateConceptEmissions
Calculates CO2 emissions from concept-level estimation.- Parameters:
result- the workflow result to populate
-
getEmissionFactorKgPerMWh
Gets emission factor based on power supply type.- Parameters:
supplyType- power supply type- Returns:
- kg CO2 per MWh
-