Skip to main content
Glama
gabrielserrao

pyResToolbox MCP Server

oil_twu_critical_properties

Calculate critical temperature, pressure, and volume for petroleum fractions using the Twu correlation for EOS fluid characterization and phase behavior modeling.

Instructions

Calculate critical properties using Twu (1984) correlation.

CRITICAL PROPERTIES ESTIMATION - Most widely used method for estimating Tc, Pc, Vc for petroleum fractions and plus fractions.

Twu Method:

  • More accurate than older correlations (Riazi-Daubert, Kesler-Lee)

  • Uses molecular weight and specific gravity

  • Optional boiling point for improved accuracy

  • Damping factor for heavy ends

Returns:

  • Tc: Critical temperature (°R)

  • Pc: Critical pressure (psia)

  • Vc: Critical volume (cuft/lbmol)

  • Also returns: SG, Tb (if not provided)

Critical for:

  • EOS (PR, SRK) fluid characterization

  • Plus fraction splitting

  • Compositional simulation

  • Phase behavior modeling

Args: request: Molecular weight, specific gravity, optional boiling point, damping

Returns: Dictionary with all critical properties

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestYes

Implementation Reference

  • The handler function implementing the oil_twu_critical_properties tool logic. It uses the Twu correlation via pyrestoolbox.oil.oil_twu_props to compute critical properties from molecular weight, specific gravity, and damping factor.
    def oil_twu_critical_properties(request: TwuPropertiesRequest) -> dict: """Calculate critical properties using Twu (1984) correlation. **CRITICAL PROPERTIES ESTIMATION** - Most widely used method for estimating Tc, Pc, Vc for petroleum fractions and plus fractions. **Twu Method:** - More accurate than older correlations (Riazi-Daubert, Kesler-Lee) - Uses molecular weight and specific gravity - Optional boiling point for improved accuracy - Damping factor for heavy ends **Returns:** - Tc: Critical temperature (°R) - Pc: Critical pressure (psia) - Vc: Critical volume (cuft/lbmol) - Also returns: SG, Tb (if not provided) **Critical for:** - EOS (PR, SRK) fluid characterization - Plus fraction splitting - Compositional simulation - Phase behavior modeling Args: request: Molecular weight, specific gravity, optional boiling point, damping Returns: Dictionary with all critical properties """ # oil_twu_props doesn't take tb as input, it calculates it result = oil.oil_twu_props( mw=request.mw, sg=request.sg, damp=request.damp ) # result is tuple: (sg, tb, tc, pc, vc) return { "specific_gravity": float(result[0]) if not isinstance(result[0], np.ndarray) else result[0].tolist(), "boiling_point_degR": float(result[1]) if not isinstance(result[1], np.ndarray) else result[1].tolist(), "critical_temperature_degR": float(result[2]) if not isinstance(result[2], np.ndarray) else result[2].tolist(), "critical_pressure_psia": float(result[3]) if not isinstance(result[3], np.ndarray) else result[3].tolist(), "critical_volume_cuft_lbmol": float(result[4]) if not isinstance(result[4], np.ndarray) else result[4].tolist(), "method": "Twu (1984) correlation", "inputs": request.model_dump(), "note": "Use for plus fraction characterization and EOS modeling" }
  • Pydantic BaseModel defining the input schema (parameters with validation and descriptions) for the tool.
    class TwuPropertiesRequest(BaseModel): """Request model for Twu critical properties calculation.""" mw: Union[float, List[float]] = Field( ..., gt=0, description="Molecular weight (lb/lbmol) - scalar or array" ) sg: Union[float, List[float]] = Field( ..., gt=0, description="Specific gravity - scalar or array" ) tb: Optional[Union[float, List[float]]] = Field( None, description="Boiling point (degR) - optional" ) damp: float = Field( 0.0, ge=0, le=1, description="Damping factor (0-1)" )
  • Registration call in the main server.py file that invokes register_oil_tools(mcp), which defines and registers the oil_twu_critical_properties tool using @mcp.tool() decorator.
    register_oil_tools(mcp)
  • The @mcp.tool() decorator immediately before the handler definition, which registers the function as an MCP tool.
    @mcp.tool()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gabrielserrao/pyrestoolbox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server