solvx_reservoir_tools
Version:
Client library for SolvxAI Reservoir Engineering Tools - Property of Nexa Consulting Services
882 lines (842 loc) • 31.1 kB
text/typescript
import axios, { AxiosInstance } from 'axios';
export interface SolvxaiClientConfig {
baseUrl: string;
apiKey: string;
}
export class SolvxaiClient {
private client: AxiosInstance;
constructor(config: SolvxaiClientConfig) {
this.client = axios.create({
baseURL: config.baseUrl,
headers: {
'X-API-Key': config.apiKey,
'Content-Type': 'application/json'
}
});
}
/**
* 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
*/
async 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;
}) {
const response = await this.client.post('/api/pvt/calculateallproperties', params);
return response.data;
}
/**
* 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
*/
async calculatePbFromGor(params: {
correlation: string;
initial_gor: number;
gas_gravity: number;
api: number;
temperature: number;
nitrogen_percentage?: number;
}) {
const response = await this.client.post('/api/pvt/calculatepbfromgor', params);
return response.data;
}
/**
* 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
*/
async calculateGorFromPb(params: {
correlation: string;
pb: number;
gas_gravity: number;
api: number;
temperature: number;
}) {
const response = await this.client.post('/api/pvt/calculategorfrompb', params);
return response.data;
}
/**
* 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
*/
async 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;
}) {
const response = await this.client.post('/api/pvt/calculateoilproperties', params);
return response.data;
}
/**
* 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
*/
async calculateGasProperties(params: {
reservoir_temperature: number;
pressure: number;
gas_specific_gravity: number;
h2s_content?: number;
co2_content?: number;
n2_content?: number;
correlations?: any;
}) {
const response = await this.client.post('/api/pvt/calculategasproperties', params);
return response.data;
}
/**
* 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
*/
async calculateWaterProperties(params: {
reservoir_temperature: number;
pressure: number;
water_salinity?: number;
correlations?: any;
}) {
const response = await this.client.post('/api/pvt/calculatewaterproperties', params);
return response.data;
}
/**
* 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
*/
async 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;
};
}) {
const response = await this.client.post('/api/bhp/BHPcalculator', params);
return response.data;
}
/**
* 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
*/
async calculateInterfacialTensionRamey(params: {
rs: number;
api: number;
gas_gravity: number;
bo: number;
pressure: number;
temperature: number;
z: number;
}) {
const response = await this.client.post('/api/pvt/interfacialtension/ramey', params);
return response.data;
}
/**
* 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
*/
async calculateInterfacialTensionAsheim(params: {
rs: number;
api: number;
gas_gravity: number;
bo: number;
pressure: number;
temperature: number;
z: number;
}) {
const response = await this.client.post('/api/pvt/interfacialtension/asheim', params);
return response.data;
}
/**
* 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
*/
async calculateInterfacialTensionBakerSwerdloff(params: {
api: number;
pressure: number;
temperature: number;
}) {
const response = await this.client.post('/api/pvt/interfacialtension/bakerswerdloff', params);
return response.data;
}
/**
* 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
*/
async calculateInterfacialTensionOilWater(params: {
api: number;
temperature: number;
water_salinity: number;
gas_gravity: number;
rs: number;
bo: number;
bw: number;
}) {
const response = await this.client.post('/api/pvt/interfacialtension/oilwater', params);
return response.data;
}
/**
* 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
*/
async calculateInterfacialTensionGasWater(params: {
pressure: number;
temperature: number;
water_salinity: number;
z_factor: number;
gas_gravity: number;
bw: number;
}) {
const response = await this.client.post('/api/pvt/interfacialtension/gaswater', params);
return response.data;
}
/**
* 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
*/
async calculateCompressibilityDavidYale(params: {
depth: number;
reservoir_pressure: number;
pressure: number;
}) {
const response = await this.client.post('/api/pvt/compressibility/davidyale', params);
return response.data;
}
/**
* 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
*/
async calculateCompressibilityMcCain(params: {
t_deg_f: number;
psia: number;
gor: number;
gas_grav: number;
api: number;
pb: number;
initial_gor: number;
}) {
const response = await this.client.post('/api/pvt/compressibility/mccain', params);
return response.data;
}
/**
* 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
*/
async calculateGasSolubilityInWater(params: {
correlation: string;
temperature: number;
pressure: number;
}) {
const response = await this.client.post('/api/pvt/calculategassolubilityinwater', params);
return response.data;
}
/**
* 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
*/
async calculateGasDensity(params: {
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}) {
const response = await this.client.post('/api/pvt/calculategasdensity', params);
return response.data;
}
/**
* 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
*/
async calculateGasViscosity(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
h2s_content?: number;
n2_content?: number;
co2_content?: number;
}) {
const response = await this.client.post('/api/pvt/calculategasviscosity', params);
return response.data;
}
/**
* 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
*/
async calculateGasCompressibility(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}) {
const response = await this.client.post('/api/pvt/calculategascompressibility', params);
return response.data;
}
/**
* 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
*/
async calculateGasFVF(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}) {
const response = await this.client.post('/api/pvt/calculategasfvf', params);
return response.data;
}
/**
* 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
*/
async calculateZFactor(params: {
correlation: string;
temperature: number;
pressure: number;
gas_gravity: number;
n2_content?: number;
co2_content?: number;
h2s_content?: number;
}) {
const response = await this.client.post('/api/pvt/calculatezfactor', params);
return response.data;
}
/**
* 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
*/
async calculateWaterViscosity(params: {
correlation: string;
temperature: number;
pressure?: number;
water_salinity?: number;
}) {
const response = await this.client.post('/api/pvt/calculatewaterviscosity', params);
return response.data;
}
/**
* 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
*/
async calculateWaterCompressibility(params: {
correlation: string;
pressure: number;
temperature: number;
}) {
const response = await this.client.post('/api/pvt/calculatewatercompressibility', params);
return response.data;
}
/**
* 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
*/
async calculateWaterFVF(params: {
correlation: string;
temperature: number;
pressure: number;
}) {
const response = await this.client.post('/api/pvt/calculatewaterfvf', params);
return response.data;
}
/**
* 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
*/
async calculateOilCompressibility(params: {
correlation: string;
api: number;
pressure: number;
temperature: number;
gas_gravity: number;
pb?: number;
gor?: number;
}) {
const response = await this.client.post('/api/pvt/calculateoilcompressibility', params);
return response.data;
}
/**
* 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
*/
async 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;
}) {
const response = await this.client.post('/api/pvt/calculateoilviscosity', params);
return response.data;
}
/**
* 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
*/
async calculateOilFVF(params: {
correlation: string;
temperature: number;
pressure: number;
api: number;
gas_gravity: number;
pb?: number;
initial_gor?: number;
co_correlation?: string;
}) {
const response = await this.client.post('/api/pvt/calculateoilfvf', params);
return response.data;
}
/**
* 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
*/
async calculateRs(params: {
correlation: string;
temperature: number;
pressure: number;
api: number;
gas_gravity: number;
pb: number;
}) {
const response = await this.client.post('/api/pvt/calculaters', params);
return response.data;
}
/**
* 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
*/
async 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;
}) {
const response = await this.client.post('/api/pvt/calculatepseudopressure', params);
return response.data;
}
/**
* Retrieves available correlations for PVT calculations
* @returns Promise containing list of available correlations
*/
async getAvailableCorrelations() {
const response = await this.client.get('/api/correlations-collection');
return response.data;
}
/**
* Checks the API status
* @returns Promise containing API status information
*/
async getApiStatus() {
const response = await this.client.get('/api');
return response.data;
}
/**
* 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
*/
async calculateDeadOilViscosity(params: {
correlation: string;
api: number;
temperature: number;
}) {
const response = await this.client.post('/api/pvt/calculatedeadoilvisc', params);
return response.data;
}
/**
* 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
*/
async calculateSaturatedOilViscosity(params: {
correlation: string;
dead_oil_viscosity: number;
rs: number;
}) {
const response = await this.client.post('/api/pvt/calculatesaturatedoilvisc', params);
return response.data;
}
/**
* 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
*/
async calculateUndersaturatedOilViscosity(params: {
correlation: string;
saturated_oil_viscosity: number;
api: number;
pressure: number;
pb: number;
}) {
const response = await this.client.post('/api/pvt/calculateundersaturatedoilvisc', params);
return response.data;
}
/**
* 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
*/
async calculateSuperpositionTime(params: {
time: number[];
phase_rates: Record<string, number[]>;
flow_regime: string;
}) {
const response = await this.client.post('/api/rta/calculatesuperpositiontime', params);
return response.data;
}
/**
* 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
*/
async calculateDerivatives(params: {
time: number[];
phase_rates: Record<string, number[]>;
pressure: number[];
flow_regime: string;
p_initial: number;
fluid_p: number[];
s_ratio?: number;
}) {
const response = await this.client.post('/api/rta/calculatederivatives', params);
return response.data;
}
/**
* 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
*/
async calculateSinglePhaseSuperpositionTime(params: {
time: number[];
rate: number[];
flow_regime: string;
phase_name?: string;
}) {
const response = await this.client.post('/api/rta/calculatesinglephasesuper', params);
return response.data;
}
/**
* 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
*/
async 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;
}) {
const response = await this.client.post('/api/rta/calculatesinglephaseders', params);
return response.data;
}
}