ccs-sim
Version:
Modelling CCS systems
68 lines (67 loc) • 1.99 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const analogue_1 = __importDefault(require("./analogue"));
const reservoir_1 = require("./reservoir");
const perforationFunctions = {
[reservoir_1.RealReservoir.Hamilton]: {
split: 4,
intercept: -1.6137583306682473,
powers: [
[1, 0],
[0, 1],
[2, 0],
[1, 1],
[0, 2],
],
coefficients: [
-5.31124455e-2, 1.00818995, 1.48023509e-4, 4.18609179e-4, 3.00308213e-6,
],
},
[reservoir_1.RealReservoir.HamiltonNorth]: {
split: 2,
intercept: -1.9597510728900147,
powers: [
[1, 0],
[0, 1],
[2, 0],
[1, 1],
[0, 2],
],
coefficients: [
-1.4969207e-1, 1.06629533, -2.80472165e-5, 1.40749378e-3, -5.39246727e-4,
],
},
[reservoir_1.RealReservoir.Lennox]: {
split: 2,
intercept: -0.5620851518695815,
powers: [
[1, 0],
[0, 1],
[2, 0],
[1, 1],
[0, 2],
],
coefficients: [
-6.23044797e-3, 1.00131251, -2.09522684e-5, 7.52686842e-5, 1.19926497e-5,
],
},
};
class Perforation extends analogue_1.default {
constructor(name, physical, realReservoir) {
super(name, physical, 'Well', perforationFunctions[realReservoir]);
}
get x() {
if (!this.fluid) {
throw new Error(`${this.type} has no fluid`);
}
return this.fluid.flowrate.kgps / this.modelFunction.split;
}
setDestination(dest) {
this.destination = dest;
dest.source = this;
}
}
exports.default = Perforation;
;