stock_tank_incremental_gor
Calculate gas evolved from separator to stock tank for separator optimization, gas recovery, and tank venting requirements in petroleum engineering.
Instructions
Calculate incremental GOR from separator to stock tank.
SEPARATOR DESIGN TOOL - Estimates gas evolved between separator and stock tank conditions.
Physics: As oil flows from separator (higher P, T) to stock tank (14.7 psia, ~60°F), additional gas comes out of solution.
Applications:
Separator optimization
Gas recovery calculations
Tank venting requirements
VOC emissions estimation
Returns stock tank incremental GOR in scf/stb.
Args: request: Separator pressure, temperature, and oil API
Returns: Dictionary with incremental GOR and guidance
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Input Schema (JSON Schema)
Implementation Reference
- The primary handler function decorated with @mcp.tool(). It computes the stock tank incremental GOR using pyrestoolbox.oil.oil_rs_st() based on separator pressure, temperature, and oil API gravity.@mcp.tool() def stock_tank_incremental_gor(request: StockTankGORRequest) -> dict: """Calculate incremental GOR from separator to stock tank. **SEPARATOR DESIGN TOOL** - Estimates gas evolved between separator and stock tank conditions. **Physics:** As oil flows from separator (higher P, T) to stock tank (14.7 psia, ~60°F), additional gas comes out of solution. **Applications:** - Separator optimization - Gas recovery calculations - Tank venting requirements - VOC emissions estimation Returns stock tank incremental GOR in scf/stb. Args: request: Separator pressure, temperature, and oil API Returns: Dictionary with incremental GOR and guidance """ rst = oil.oil_rs_st( psp=request.psp, degf_sp=request.degf_sp, api=request.api ) return { "stock_tank_gor_scf_stb": float(rst), "method": "Empirical correlation", "units": "scf/stb", "inputs": request.model_dump(), "note": "Add to separator GOR for total solution GOR at reservoir conditions" }
- Pydantic BaseModel defining the input parameters and validation for the stock_tank_incremental_gor tool: separator pressure (psp), separator temperature (degf_sp), and oil API gravity (api).class StockTankGORRequest(BaseModel): """Request model for stock tank incremental GOR calculation.""" psp: float = Field(..., gt=0, description="Separator pressure (psia)") degf_sp: float = Field( ..., gt=-460, lt=1000, description="Separator temperature (degF)" ) api: float = Field(..., gt=0, le=100, description="Oil API gravity (degrees)")
- src/pyrestoolbox_mcp/server.py:16-24 (registration)Imports and calls register_oil_tools(mcp) which registers all oil tools including stock_tank_incremental_gor via @mcp.tool() decorators.from .tools.oil_tools import register_oil_tools from .tools.gas_tools import register_gas_tools from .tools.inflow_tools import register_inflow_tools from .tools.simtools_tools import register_simtools_tools from .tools.brine_tools import register_brine_tools from .tools.layer_tools import register_layer_tools from .tools.library_tools import register_library_tools register_oil_tools(mcp)
- src/pyrestoolbox_mcp/tools/oil_tools.py:27-30 (registration)The registration function that contains all @mcp.tool() decorators for oil tools, including the one for stock_tank_incremental_gor.def register_oil_tools(mcp: FastMCP) -> None: """Register all oil-related tools with the MCP server.""" @mcp.tool()