Skip to main content
Glama

pyResToolbox MCP Server

layer_models.py2.07 kB
"""Pydantic models for Layer/Heterogeneity calculations.""" from pydantic import BaseModel, Field, field_validator, ConfigDict from typing import List, Union class LorenzRequest(BaseModel): """Request model for Lorenz coefficient calculation.""" value: float = Field(..., ge=0, le=1, description="Lorenz or beta value") class FlowFractionRequest(BaseModel): """Request model for flow fraction calculations.""" model_config = ConfigDict( json_schema_extra={ "example": { "flow_frac": [0.8, 0.15, 0.05], "perm_frac": [0.6, 0.3, 0.1], } } ) flow_frac: List[float] = Field( ..., min_length=2, description="Flow fractions per layer" ) perm_frac: List[float] = Field( ..., min_length=2, description="Permeability-thickness fractions per layer" ) @field_validator("flow_frac", "perm_frac") @classmethod def validate_fractions(cls, v): """Validate fractions sum to ~1.0.""" total = sum(v) if not (0.99 <= total <= 1.01): raise ValueError(f"Fractions must sum to 1.0 (got {total})") return v class LayerDistributionRequest(BaseModel): """Request model for layer distribution generation.""" model_config = ConfigDict( json_schema_extra={ "example": { "lorenz": 0.7, "nlay": 10, "normalize": True, } } ) lorenz: float = Field( ..., ge=0, le=1, description="Lorenz coefficient (0=homogeneous, 1=heterogeneous)" ) nlay: int = Field(..., gt=0, le=100, description="Number of layers") h: float = Field(1.0, gt=0, description="Total thickness (ft, default=1 for normalized)") k_avg: float = Field( 1.0, gt=0, description="Average permeability (mD, default=1 for normalized)" ) normalize: bool = Field( True, description="Normalize output (h and k fractions vs absolute)" )

Implementation Reference

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