solvx_reservoir_tools
Version:
Client library for SolvxAI Reservoir Engineering Tools - Property of Nexa Consulting Services
723 lines (722 loc) • 27.8 kB
TypeScript
export interface SolvxaiClientConfig {
baseUrl: string;
apiKey: string;
}
export declare class SolvxaiClient {
private client;
constructor(config: SolvxaiClientConfig);
/**
* Calculates all PVT (Pressure-Volume-Temperature) properties for a given set of reservoir conditions
* @param params Object containing reservoir parameters:
* - reservoir_temperature: Reservoir temperature in °F
* - reservoir_pressure: Reservoir pressure in psia
* - api_gravity: API gravity of the oil
* - gas_specific_gravity: Specific gravity of the gas
* - gas_oil_ratio: Gas-oil ratio in scf/STB (optional)
* - bubble_point_pressure: Bubble point pressure in psia (optional)
* - h2s_content: H2S content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - n2_content: N2 content in mole fraction (optional)
* - water_salinity: Water salinity in ppm (optional)
* - correlations: Custom correlation settings (optional)
* @returns Promise containing calculated PVT properties
*/
calculatePvtProperties(params: {
reservoir_temperature: number;
reservoir_pressure: number;
api_gravity: number;
gas_specific_gravity: number;
gas_oil_ratio?: number;
bubble_point_pressure?: number;
h2s_content?: number;
co2_content?: number;
n2_content?: number;
water_salinity?: number;
correlations?: any;
}): Promise<any>;
/**
* Calculates bubble point pressure from gas-oil ratio using specified correlation
* @param params Object containing calculation parameters:
* - correlation: Name of the correlation to use
* - initial_gor: Initial gas-oil ratio in scf/STB
* - gas_gravity: Gas specific gravity
* - api: API gravity of the oil
* - temperature: Temperature in °F
* - nitrogen_percentage: Nitrogen content in mole fraction (optional)
* @returns Promise containing calculated bubble point pressure
*/
calculatePbFromGor(params: {
correlation: string;
initial_gor: number;
gas_gravity: number;
api: number;
temperature: number;
nitrogen_percentage?: number;
}): Promise<any>;
/**
* Calculates gas-oil ratio from bubble point pressure using specified correlation
* @param params Object containing calculation parameters:
* - correlation: Name of the correlation to use
* - pb: Bubble point pressure in psia
* - gas_gravity: Gas specific gravity
* - api: API gravity of the oil
* - temperature: Temperature in °F
* @returns Promise containing calculated gas-oil ratio
*/
calculateGorFromPb(params: {
correlation: string;
pb: number;
gas_gravity: number;
api: number;
temperature: number;
}): Promise<any>;
/**
* Calculates oil properties for given reservoir conditions
* @param params Object containing reservoir parameters:
* - reservoir_temperature: Reservoir temperature in °F
* - pressure: Pressure in psia
* - api_gravity: API gravity of the oil
* - gas_specific_gravity: Specific gravity of the gas
* - gas_oil_ratio: Gas-oil ratio in scf/STB (optional)
* - bubble_point_pressure: Bubble point pressure in psia (optional)
* - h2s_content: H2S content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - n2_content: N2 content in mole fraction (optional)
* - correlations: Custom correlation settings (optional)
* @returns Promise containing calculated oil properties
*/
calculateOilProperties(params: {
reservoir_temperature: number;
pressure: number;
api_gravity: number;
gas_specific_gravity: number;
gas_oil_ratio?: number;
bubble_point_pressure?: number;
h2s_content?: number;
co2_content?: number;
n2_content?: number;
correlations?: any;
}): Promise<any>;
/**
* Calculates gas properties for given reservoir conditions
* @param params Object containing reservoir parameters:
* - reservoir_temperature: Reservoir temperature in °F
* - pressure: Pressure in psia
* - gas_specific_gravity: Specific gravity of the gas
* - h2s_content: H2S content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - n2_content: N2 content in mole fraction (optional)
* - correlations: Custom correlation settings (optional)
* @returns Promise containing calculated gas properties
*/
calculateGasProperties(params: {
reservoir_temperature: number;
pressure: number;
gas_specific_gravity: number;
h2s_content?: number;
co2_content?: number;
n2_content?: number;
correlations?: any;
}): Promise<any>;
/**
* Calculates water properties for given reservoir conditions
* @param params Object containing reservoir parameters:
* - reservoir_temperature: Reservoir temperature in °F
* - pressure: Pressure in psia
* - water_salinity: Water salinity in ppm (optional)
* - correlations: Custom correlation settings (optional)
* @returns Promise containing calculated water properties
*/
calculateWaterProperties(params: {
reservoir_temperature: number;
pressure: number;
water_salinity?: number;
correlations?: any;
}): Promise<any>;
/**
* Calculates bottom hole pressure (BHP) for given well conditions
* @param params Object containing well parameters:
* - mt_data: Measured depth and true vertical depth data
* - annulus_data: Annulus flow and geometry data
* - tubular_data: Tubing and casing dimensions
* - temperature_data: Temperature profile data
* - pvt_data: PVT properties data
* - production_data: Production rates and pressures
* - pvt_correlation_model: PVT correlation settings
* @returns Promise containing calculated bottom hole pressure
*/
calculateBhp(params: {
mt_data: {
md: number[];
tvd: number[];
};
annulus_data: {
AnnulusFlow: number;
VaryAnnulus: number;
DepthVaryingAnnulus: number;
TopCasingDia: number;
AnTub: number;
};
tubular_data: {
MDTubingShoe: number;
CasingID: number;
TubingID: number;
TubingOD: number;
Datum: number;
piperough: number;
};
temperature_data: {
md_temp: number[];
temp: number[];
};
pvt_data: {
API: number;
GG: number;
Salinity: number;
MoleFraction_H2S?: number;
MoleFraction_CO2?: number;
MoleFraction_N2?: number;
MoleFraction_H2O?: number;
Cond?: number;
correlation_name: string;
};
production_data: {
qo: number;
qw: number;
qg: number;
thp: number;
chp: number;
};
pvt_correlation_model: {
pvt_model: string;
co_correlation: string;
dead_oil_viscosity_correlation: string;
saturated_oil_viscosity_correlation: string;
undersaturated_oil_viscosity_correlation: string;
};
}): Promise<any>;
/**
* Calculates interfacial tension using Ramey correlation
* @param params Object containing fluid properties:
* - rs: Solution gas-oil ratio in scf/STB
* - api: API gravity of the oil
* - gas_gravity: Gas specific gravity
* - bo: Oil formation volume factor
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* - z: Gas compressibility factor
* @returns Promise containing calculated interfacial tension
*/
calculateInterfacialTensionRamey(params: {
rs: number;
api: number;
gas_gravity: number;
bo: number;
pressure: number;
temperature: number;
z: number;
}): Promise<any>;
/**
* Calculates interfacial tension using Asheim correlation
* @param params Object containing fluid properties:
* - rs: Solution gas-oil ratio in scf/STB
* - api: API gravity of the oil
* - gas_gravity: Gas specific gravity
* - bo: Oil formation volume factor
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* - z: Gas compressibility factor
* @returns Promise containing calculated interfacial tension
*/
calculateInterfacialTensionAsheim(params: {
rs: number;
api: number;
gas_gravity: number;
bo: number;
pressure: number;
temperature: number;
z: number;
}): Promise<any>;
/**
* Calculates interfacial tension using Baker-Swerdloff correlation
* @param params Object containing fluid properties:
* - api: API gravity of the oil
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* @returns Promise containing calculated interfacial tension
*/
calculateInterfacialTensionBakerSwerdloff(params: {
api: number;
pressure: number;
temperature: number;
}): Promise<any>;
/**
* Calculates oil-water interfacial tension
* @param params Object containing fluid properties:
* - api: API gravity of the oil
* - temperature: Temperature in °F
* - water_salinity: Water salinity in ppm
* - gas_gravity: Gas specific gravity
* - rs: Solution gas-oil ratio in scf/STB
* - bo: Oil formation volume factor
* - bw: Water formation volume factor
* @returns Promise containing calculated oil-water interfacial tension
*/
calculateInterfacialTensionOilWater(params: {
api: number;
temperature: number;
water_salinity: number;
gas_gravity: number;
rs: number;
bo: number;
bw: number;
}): Promise<any>;
/**
* Calculates gas-water interfacial tension
* @param params Object containing fluid properties:
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* - water_salinity: Water salinity in ppm
* - z_factor: Gas compressibility factor
* - gas_gravity: Gas specific gravity
* - bw: Water formation volume factor
* @returns Promise containing calculated gas-water interfacial tension
*/
calculateInterfacialTensionGasWater(params: {
pressure: number;
temperature: number;
water_salinity: number;
z_factor: number;
gas_gravity: number;
bw: number;
}): Promise<any>;
/**
* Calculates compressibility using David-Yale correlation
* @param params Object containing reservoir parameters:
* - depth: Depth in feet
* - reservoir_pressure: Reservoir pressure in psia
* - pressure: Pressure in psia
* @returns Promise containing calculated compressibility
*/
calculateCompressibilityDavidYale(params: {
depth: number;
reservoir_pressure: number;
pressure: number;
}): Promise<any>;
/**
* Calculates compressibility using McCain correlation
* @param params Object containing fluid properties:
* - t_deg_f: Temperature in °F
* - psia: Pressure in psia
* - gor: Gas-oil ratio in scf/STB
* - gas_grav: Gas specific gravity
* - api: API gravity of the oil
* - pb: Bubble point pressure in psia
* - initial_gor: Initial gas-oil ratio in scf/STB
* @returns Promise containing calculated compressibility
*/
calculateCompressibilityMcCain(params: {
t_deg_f: number;
psia: number;
gor: number;
gas_grav: number;
api: number;
pb: number;
initial_gor: number;
}): Promise<any>;
/**
* Calculates gas solubility in water using specified correlation
* @param params Object containing parameters:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* @returns Promise containing calculated gas solubility in water
*/
calculateGasSolubilityInWater(params: {
correlation: string;
temperature: number;
pressure: number;
}): Promise<any>;
/**
* Calculates gas density
* @param params Object containing gas properties:
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - n2_content: N2 content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - h2s_content: H2S content in mole fraction (optional)
* @returns Promise containing calculated gas density
*/
calculateGasDensity(params: {
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}): Promise<any>;
/**
* Calculates gas viscosity using specified correlation
* @param params Object containing gas properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - h2s_content: H2S content in mole fraction (optional)
* - n2_content: N2 content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* @returns Promise containing calculated gas viscosity
*/
calculateGasViscosity(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
h2s_content?: number;
n2_content?: number;
co2_content?: number;
}): Promise<any>;
/**
* Calculates gas compressibility using specified correlation
* @param params Object containing gas properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - n2_content: N2 content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - h2s_content: H2S content in mole fraction (optional)
* @returns Promise containing calculated gas compressibility
*/
calculateGasCompressibility(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}): Promise<any>;
/**
* Calculates gas formation volume factor using specified correlation
* @param params Object containing gas properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - n2_content: N2 content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - h2s_content: H2S content in mole fraction (optional)
* @returns Promise containing calculated gas formation volume factor
*/
calculateGasFVF(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}): Promise<any>;
/**
* Calculates gas compressibility factor (Z-factor) using specified correlation
* @param params Object containing gas properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - n2_content: N2 content in mole fraction (optional)
* - co2_content: CO2 content in mole fraction (optional)
* - h2s_content: H2S content in mole fraction (optional)
* @returns Promise containing calculated Z-factor
*/
calculateZFactor(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}): Promise<any>;
/**
* Calculates water viscosity using specified correlation
* @param params Object containing water properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia (optional)
* - water_salinity: Water salinity in ppm (optional)
* @returns Promise containing calculated water viscosity
*/
calculateWaterViscosity(params: {
correlation: string;
temperature: number;
pressure?: number;
water_salinity?: number;
}): Promise<any>;
/**
* Calculates water compressibility using specified correlation
* @param params Object containing water properties:
* - correlation: Name of the correlation to use
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* @returns Promise containing calculated water compressibility
*/
calculateWaterCompressibility(params: {
correlation: string;
pressure: number;
temperature: number;
}): Promise<any>;
/**
* Calculates water formation volume factor using specified correlation
* @param params Object containing water properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* @returns Promise containing calculated water formation volume factor
*/
calculateWaterFVF(params: {
correlation: string;
temperature: number;
pressure: number;
}): Promise<any>;
/**
* Calculates oil compressibility using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - api: API gravity of the oil
* - pressure: Pressure in psia
* - temperature: Temperature in °F
* - gas_gravity: Gas specific gravity
* - pb: Bubble point pressure in psia (optional)
* - gor: Gas-oil ratio in scf/STB (optional)
* @returns Promise containing calculated oil compressibility
*/
calculateOilCompressibility(params: {
correlation: string;
api: number;
pressure: number;
temperature: number;
gas_gravity: number;
pb?: number;
gor?: number;
}): Promise<any>;
/**
* Calculates oil viscosity using specified correlations
* @param params Object containing oil properties and correlation settings:
* - dead_oil_correlation: Correlation for dead oil viscosity
* - saturated_correlation: Correlation for saturated oil viscosity
* - undersaturated_correlation: Correlation for undersaturated oil viscosity
* - api: API gravity of the oil
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - gas_gravity: Gas specific gravity
* - pb: Bubble point pressure in psia (optional)
* - rs: Solution gas-oil ratio in scf/STB (optional)
* @returns Promise containing calculated oil viscosity
*/
calculateOilViscosity(params: {
dead_oil_correlation: string;
saturated_correlation: string;
undersaturated_correlation: string;
api: number;
temperature: number;
pressure: number;
gas_gravity: number;
pb?: number;
rs?: number;
}): Promise<any>;
/**
* Calculates oil formation volume factor using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - api: API gravity of the oil
* - gas_gravity: Gas specific gravity
* - pb: Bubble point pressure in psia (optional)
* - initial_gor: Initial gas-oil ratio in scf/STB (optional)
* - co_correlation: Correlation for solution gas-oil ratio (optional)
* @returns Promise containing calculated oil formation volume factor
*/
calculateOilFVF(params: {
correlation: string;
temperature: number;
pressure: number;
api: number;
gas_gravity: number;
pb?: number;
initial_gor?: number;
co_correlation?: string;
}): Promise<any>;
/**
* Calculates solution gas-oil ratio (Rs) using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - temperature: Temperature in °F
* - pressure: Pressure in psia
* - api: API gravity of the oil
* - gas_gravity: Gas specific gravity
* - pb: Bubble point pressure in psia
* @returns Promise containing calculated solution gas-oil ratio
*/
calculateRs(params: {
correlation: string;
temperature: number;
pressure: number;
api: number;
gas_gravity: number;
pb: number;
}): Promise<any>;
/**
* Calculates pseudopressure for gas reservoirs
* @param params Object containing reservoir properties:
* - reservoir_pressure: Reservoir pressure in psia
* - reservoir_temperature: Reservoir temperature in °F
* - co2: CO2 content in mole fraction (optional)
* - h2s: H2S content in mole fraction (optional)
* - n2: N2 content in mole fraction (optional)
* - correlation_for_gas_viscosity: Correlation for gas viscosity
* - correlation_for_z_factor: Correlation for Z-factor
* - gas_gravity: Gas specific gravity
* @returns Promise containing calculated pseudopressure
*/
calculatePseudopressure(params: {
reservoir_pressure: number;
reservoir_temperature: number;
co2?: number;
h2s?: number;
n2?: number;
correlation_for_gas_viscosity: string;
correlation_for_z_factor: string;
gas_gravity: number;
}): Promise<any>;
/**
* Retrieves available correlations for PVT calculations
* @returns Promise containing list of available correlations
*/
getAvailableCorrelations(): Promise<any>;
/**
* Checks the API status
* @returns Promise containing API status information
*/
getApiStatus(): Promise<any>;
/**
* Calculates dead oil viscosity using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - api: API gravity of the oil
* - temperature: Temperature in °F
* @returns Promise containing calculated dead oil viscosity
*/
calculateDeadOilViscosity(params: {
correlation: string;
api: number;
temperature: number;
}): Promise<any>;
/**
* Calculates saturated oil viscosity using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - dead_oil_viscosity: Dead oil viscosity in cp
* - rs: Solution gas-oil ratio in scf/STB
* @returns Promise containing calculated saturated oil viscosity
*/
calculateSaturatedOilViscosity(params: {
correlation: string;
dead_oil_viscosity: number;
rs: number;
}): Promise<any>;
/**
* Calculates undersaturated oil viscosity using specified correlation
* @param params Object containing oil properties:
* - correlation: Name of the correlation to use
* - saturated_oil_viscosity: Saturated oil viscosity in cp
* - api: API gravity of the oil
* - pressure: Pressure in psia
* - pb: Bubble point pressure in psia
* @returns Promise containing calculated undersaturated oil viscosity
*/
calculateUndersaturatedOilViscosity(params: {
correlation: string;
saturated_oil_viscosity: number;
api: number;
pressure: number;
pb: number;
}): Promise<any>;
/**
* Calculates superposition time for multiple phase rates using specified flow regime
* @param params Object containing:
* - time: Array of time values
* - phase_rates: Dictionary containing rate arrays for different phases (e.g., {"oil": [...], "gas": [...], "water": [...]})
* - flow_regime: Flow regime type ('linear', 'bilinear', 'pss', or 'radial')
* @returns Promise containing superposition time arrays for each phase
*/
calculateSuperpositionTime(params: {
time: number[];
phase_rates: Record<string, number[]>;
flow_regime: string;
}): Promise<any>;
/**
* Calculates derivatives for multiple phase rates using specified flow regime
* @param params Object containing:
* - time: Array of time values
* - phase_rates: Dictionary containing rate arrays for different phases (e.g., {"oil": [...], "gas": [...], "water": [...]})
* - pressure: Array of pressure values (common for all phases)
* - flow_regime: Flow regime type ('linear', 'bilinear', 'pss', or 'radial')
* - p_initial: Initial reservoir pressure
* - fluid_p: List of fluid properties [Temp, Specific_Gravity, API, GOR, MoleFraction_H2S, MoleFraction_CO2, MoleFraction_N2, MoleFraction_H2O]
* - s_ratio: Superposition time ratio for derivative calculation (optional, default is 4.0)
* @returns Promise containing derivative arrays for each phase
*/
calculateDerivatives(params: {
time: number[];
phase_rates: Record<string, number[]>;
pressure: number[];
flow_regime: string;
p_initial: number;
fluid_p: number[];
s_ratio?: number;
}): Promise<any>;
/**
* Calculates superposition time for a single phase using specified flow regime
* @param params Object containing:
* - time: Array of time values
* - rate: Array of rates for a single phase
* - flow_regime: Flow regime type ('linear', 'bilinear', 'pss', or 'radial')
* - phase_name: Optional name for the phase
* @returns Promise containing array of superposition time values
*/
calculateSinglePhaseSuperpositionTime(params: {
time: number[];
rate: number[];
flow_regime: string;
phase_name?: string;
}): Promise<any>;
/**
* Calculates derivatives for a single phase using specified flow regime
* @param params Object containing:
* - time: Array of time values
* - rate: Array of rates for a single phase
* - pressure: Array of pressure values
* - flow_regime: Flow regime type ('linear', 'bilinear', 'pss', or 'radial')
* - is_gas: True if gas phase, False if oil phase
* - p_initial: Initial reservoir pressure
* - fluid_p: List of fluid properties [Temp, Specific_Gravity, API, GOR, MoleFraction_H2S, MoleFraction_CO2, MoleFraction_N2, MoleFraction_H2O]
* - s_ratio: Superposition time ratio for derivative calculation (optional, default is 4.0)
* - phase_name: Optional name for the phase
* @returns Promise containing array of derivative values
*/
calculateSinglePhaseDerivatives(params: {
time: number[];
rate: number[];
pressure: number[];
flow_regime: string;
is_gas: boolean;
p_initial: number;
fluid_p: number[];
s_ratio?: number;
phase_name?: string;
}): Promise<any>;
}