Skip to content

Commit 016459e

Browse files
authored
Multi-Scenario VFP Generation Framework (#1861)
* add functionality * update docs * update
1 parent 6cae7a8 commit 016459e

16 files changed

+6397
-2
lines changed

.github/copilot-instructions.md

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,11 @@ Before committing, run `./mvnw javadoc:javadoc` to catch JavaDoc errors early.
227227
- **Auto-Validation for New Equipment**: When creating a new class that extends `ProcessEquipmentBaseClass`, ALWAYS generate a `validateSetup()` method that checks: (1) required input streams are connected, (2) required parameters are set and within valid ranges, (3) return `ValidationResult` with remediation hints for each issue.
228228
- **Auto-Annotation for Public Methods**: When adding new public methods to core classes (SystemInterface, ProcessEquipmentInterface), consider adding `@AIExposable` annotation with description, category, example, and `@AIParameter` annotations documenting valid ranges/options.
229229
- **Jupyter Notebook Examples**: When creating Jupyter notebook examples, ensure they run end-to-end and reflect the latest API changes; place them in the `notebooks/` directory and link to them from the main documentation. Follow the neqsim-python direct Java API bindings as shown at https://github.com/equinor/neqsim-python?tab=readme-ov-file#4-direct-java-access-full-control
230-
- **Add markdown files with documentation**: When adding documentation as markdown files be sure to update REFERENCE_MANUAL_INDEX.md applyTo: **/*.md
230+
- **Add markdown files with documentation**: When adding documentation as markdown files:
231+
1. Update `REFERENCE_MANUAL_INDEX.md` with the new file entry
232+
2. Update the relevant section's `index.md` (e.g., `docs/examples/index.md`)
233+
3. Verify ALL links to other docs using `file_search` before adding them
234+
4. See "Documentation Links (MANDATORY)" section below for link guidelines
231235

232236
## Markdown Documentation Guidelines (MANDATORY)
233237

@@ -363,6 +367,87 @@ After adding equations, preview locally or check that:
363367
2. Inline math renders within the text flow
364368
3. No raw LaTeX syntax (backslashes, braces) appears in rendered output
365369
370+
### Documentation Links (MANDATORY)
371+
372+
When adding links to other documentation files, follow these rules to prevent broken links:
373+
374+
#### Link Verification Rules
375+
376+
1. **ALWAYS verify target files exist** before adding links:
377+
- Use `file_search` to confirm the file exists in the repository
378+
- Check the exact path and filename (case-sensitive on some systems)
379+
380+
2. **Use correct relative paths** based on the source file location:
381+
- From `docs/fielddevelopment/` to `docs/process/`: use `../process/filename.md`
382+
- From `docs/examples/` to `docs/tutorials/`: use `../tutorials/filename.md`
383+
- Within same folder: use just `filename.md`
384+
385+
3. **Prefer existing documentation** over creating placeholder links:
386+
- If a linked file doesn't exist, either create it OR link to an existing alternative
387+
- NEVER add links to files that don't exist
388+
389+
#### Common Documentation Paths
390+
391+
| Documentation Area | Path | Example Files |
392+
|--------------------|------|---------------|
393+
| Process equipment | `docs/process/` | `separators.md`, `compressors.md`, `heat-exchangers.md` |
394+
| Field development | `docs/fielddevelopment/` | `pressure_boundary_optimization.md`, `CAPACITY_CONSTRAINT_FRAMEWORK.md` |
395+
| Thermodynamics | `docs/thermo/` | `equations-of-state.md`, `flash-calculations.md` |
396+
| Examples | `docs/examples/` | `*.ipynb`, `*.java`, `index.md` |
397+
| Tutorials | `docs/tutorials/` | Getting started guides |
398+
| Troubleshooting | `docs/troubleshooting/` | Common issues and solutions |
399+
400+
#### When Adding New Documentation
401+
402+
1. **Update index files** when creating new documentation:
403+
- Add entry to `docs/REFERENCE_MANUAL_INDEX.md` (master index of 360+ files)
404+
- Add entry to the relevant section's `index.md` (e.g., `docs/examples/index.md`)
405+
406+
2. **Cross-reference related docs** with verified links:
407+
```markdown
408+
## Related Documentation
409+
410+
- [Pressure Boundary Optimization](pressure_boundary_optimization.md)
411+
- [Capacity Constraint Framework](CAPACITY_CONSTRAINT_FRAMEWORK.md)
412+
```
413+
414+
3. **For Jupyter notebooks**, also add to:
415+
- `docs/examples/index.md` - Examples index
416+
- `docs/REFERENCE_MANUAL_INDEX.md` - Master reference
417+
418+
#### Link Format Examples
419+
420+
```markdown
421+
<!-- Same directory -->
422+
[Related Topic](related-topic.md)
423+
424+
<!-- Parent directory -->
425+
[Process Overview](../process/index.md)
426+
427+
<!-- Sibling directory -->
428+
[Tutorial](../tutorials/getting-started.md)
429+
430+
<!-- Link to specific section -->
431+
[VFP Tables](pressure_boundary_optimization.md#vfp-generation)
432+
433+
<!-- Link to Java example -->
434+
[Java Example](MultiScenarioVFPExample.java)
435+
436+
<!-- Link to notebook -->
437+
[Notebook Tutorial](ProductionSystem_BottleneckAnalysis.ipynb)
438+
```
439+
440+
#### Broken Link Prevention Checklist
441+
442+
Before finalizing documentation with links:
443+
444+
- [ ] All linked `.md` files exist (use `file_search("**/filename.md")`)
445+
- [ ] All linked `.ipynb` notebooks exist
446+
- [ ] All linked `.java` examples exist
447+
- [ ] Relative paths are correct for source file location
448+
- [ ] Index files updated for new documentation
449+
- [ ] No links to planned-but-not-created files
450+
366451
## Mechanical Design Implementation Pattern (MANDATORY)
367452

368453
When implementing mechanical design for any process equipment, follow this established architecture pattern:

docs/REFERENCE_MANUAL_INDEX.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ Fluid characterization handles plus fraction splitting, property estimation, and
188188
| **Reading Fluid Properties** | [docs/thermo/reading_fluid_properties.md](thermo/reading_fluid_properties) | **Comprehensive guide to calculating and reading properties from fluids, phases, and components** |
189189
| Properties Overview | [docs/thermo/physical_properties.md](thermo/physical_properties) | Physical property calculations |
190190
| Physical Props Module | [docs/physical_properties/README.md](physical_properties/) | Physical properties module |
191+
| **H2S Distribution** | [docs/thermo/H2S_distribution_guide.md](thermo/H2S_distribution_guide) | **H2S phase distribution modeling with SRK, PR, CPA, Electrolyte-CPA** |
191192
| Viscosity Models | [docs/wiki/viscosity_models.md](wiki/viscosity_models) | Viscosity calculation models |
192193
| Viscosity Detailed | [docs/physical_properties/viscosity_models.md](physical_properties/viscosity_models) | Detailed viscosity models |
193194
| Density Models | [docs/physical_properties/density_models.md](physical_properties/density_models) | Density calculation models |
@@ -197,7 +198,7 @@ Fluid characterization handles plus fraction splitting, property estimation, and
197198
| Scale Potential | [docs/physical_properties/scale_potential.md](physical_properties/scale_potential) | Scale potential calculations |
198199
| Steam Tables | [docs/wiki/steam_tables_if97.md](wiki/steam_tables_if97) | IF97 steam table implementation |
199200
| Thermodynamic Workflows | [docs/thermo/thermodynamic_workflows.md](thermo/thermodynamic_workflows) | Common thermodynamic workflows |
200-
| Interaction Tables | [docs/thermo/inter_table_guide.md](thermo/inter_table_guide) | Binary interaction parameters |
201+
| Interaction Tables | [docs/thermo/inter_table_guide.md](thermo/inter_table_guide) | Binary interaction parameters | |
201202

202203
### Chapter 10: Hydrates & Flow Assurance
203204

@@ -255,6 +256,7 @@ Fluid characterization handles plus fraction splitting, property estimation, and
255256
| Distillation | [docs/process/equipment/distillation.md](process/equipment/distillation) | Distillation columns |
256257
| Distillation Wiki | [docs/wiki/distillation_column.md](wiki/distillation_column) | Distillation column details |
257258
| Absorbers | [docs/process/equipment/absorbers.md](process/equipment/absorbers) | Absorption equipment |
259+
| **H2S Scavenger** | [docs/process/H2S_scavenger_guide.md](process/H2S_scavenger_guide) | **Chemical scavenging of H2S from gas - triazine, glyoxal, iron sponge, caustic, liquid redox** |
258260
| Membrane | [docs/wiki/membrane_separation.md](wiki/membrane_separation) | Membrane separation |
259261
| Membrane Equipment | [docs/process/equipment/membranes.md](process/equipment/membranes) | Membrane equipment |
260262
| Filters | [docs/process/equipment/filters.md](process/equipment/filters) | Filter equipment |
@@ -753,6 +755,7 @@ Extended risk analysis capabilities implementing P1-P7 priority improvements for
753755
| **Integrated Framework** | [docs/fielddevelopment/INTEGRATED_FIELD_DEVELOPMENT_FRAMEWORK.md](fielddevelopment/INTEGRATED_FIELD_DEVELOPMENT_FRAMEWORK) | PVT→Reservoir→Well→Process integration guide |
754756
| **Strategy** | [docs/fielddevelopment/FIELD_DEVELOPMENT_STRATEGY.md](fielddevelopment/FIELD_DEVELOPMENT_STRATEGY) | Field development strategy and roadmap |
755757
| **Late-Life Operations** | [docs/fielddevelopment/LATE_LIFE_OPERATIONS.md](fielddevelopment/LATE_LIFE_OPERATIONS) | **Turndown, debottlenecking, and decommissioning timing analysis** |
758+
| **Multi-Scenario VFP Generation** | [docs/fielddevelopment/MULTI_SCENARIO_PRODUCTION_OPTIMIZATION.md](fielddevelopment/MULTI_SCENARIO_PRODUCTION_OPTIMIZATION) | VFP tables with varying GOR/water cut for reservoir simulation coupling |
756759
| Field Planning | [docs/wiki/field_development_planning.md](wiki/field_development_planning) | Field development planning |
757760
| Field Engine | [docs/simulation/field_development_engine.md](simulation/field_development_engine) | Field development engine |
758761
| **Economics** | [docs/process/economics/README.md](process/economics/) | Economics module: NPV, IRR, tax models, decline curves |
@@ -819,6 +822,8 @@ Extended risk analysis capabilities implementing P1-P7 priority improvements for
819822
| **ESP Pump Tutorial** | [docs/examples/ESP_Pump_Tutorial.md](examples/ESP_Pump_Tutorial) | **Electric Submersible Pump simulation and sizing** |
820823
| **Graph-Based Simulation** | [docs/examples/GraphBasedProcessSimulation.md](examples/GraphBasedProcessSimulation) | **Graph-based process simulation tutorial** |
821824
| **Field Development Workflow** | [docs/examples/FieldDevelopmentWorkflow.md](examples/FieldDevelopmentWorkflow) | **End-to-end field development workflow example** |
825+
| **Multi-Scenario VFP Tutorial** | [docs/examples/MultiScenarioVFP_Tutorial.ipynb](examples/MultiScenarioVFP_Tutorial) | **VFP generation with varying GOR/water cut scenarios** |
826+
| **Production System Bottleneck Analysis** | [docs/examples/ProductionSystem_BottleneckAnalysis.ipynb](examples/ProductionSystem_BottleneckAnalysis) | **Multi-well system optimization, bottleneck identification, and well prioritization** |
822827
| **MPC Integration Tutorial** | [docs/examples/MPC_Integration_Tutorial.md](examples/MPC_Integration_Tutorial) | **Model Predictive Control integration example** |
823828
| **AI Platform Integration** | [docs/examples/AIPlatformIntegration.md](examples/AIPlatformIntegration) | **AI platform integration tutorial** |
824829
| Examples Index | [docs/examples/index.md](examples/index) | Examples documentation index |

0 commit comments

Comments
 (0)