gets things to actually work, simulate wells

This commit is contained in:
Patrick McDonagh
2017-09-07 17:38:29 -05:00
parent df1d2ec893
commit 89c4452292
35 changed files with 6112 additions and 1124 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,2 @@
codegen/*
*.m~

View File

@@ -1,91 +0,0 @@
classdef AnalogInput < handle
properties
mux;
channel;
rawValue;
lastValue;
lastStored=0;
rawMax,rawMin,euMax,euMin;
history=zeros(1, 100, 'double');
badReads=0;
end
properties(Access=private)
m,b;
histi;
end
methods
function obj = AnalogInput(mux, channel, rawMin, rawMax, euMin, euMax)
obj.mux = mux;
obj.channel = channel;
obj.rawMin = double(rawMin);
obj.rawMax = double(rawMax);
obj.euMin = double(euMin);
obj.euMax = double(euMax);
obj.histi = 0;
obj.m = (obj.euMax - obj.euMin) / (obj.rawMax - obj.rawMin);
obj.b = obj.euMax - obj.m * (obj.rawMax);
end
function value = setValue(obj, inValue)
obj.histi = obj.histi + 1;
obj.rawValue = inValue;
value = obj.m * inValue + obj.b;
obj.lastValue = value;
obj.lastStored = now;
% Store value in history array
histTemp = obj.history(1:end-1);
obj.history(2:end) = histTemp;
obj.history(1) = value;
end
function value = read(obj)
value = obj.lastValue;
rawIn = obj.mux.readAnalogSPI();
if (rawIn ~= -1)
obj.badReads = 0;
value = obj.setValue(double(rawIn));
else
obj.badReads = obj.badReads + 1;
end
if (obj.badReads > 10)
pause(0.010);
end
end
function value = readSim(obj, simRaw)
value = obj.m * simRaw + obj.b;
obj.lastValue = value;
obj.lastStored = now;
obj.history = [value, obj.history(1:end-1)];
end
end
methods(Static)
function test
loops = 25;
pi = raspi('10.0.0.106', 'pi', 'HenryPump@1903');
mux = MuxSetup(pi);
anInput1 = AnalogInput(mux, 1, 0.0, 65535.0, 0.0, 100.0);
anInput2 = AnalogInput(mux, 2, 0.0, 65535.0, 0.0, 100.0);
ai1 = zeros(1, loops, 'double');
ai2 = zeros(1, loops, 'double');
for i = 1:loops
i
ai1(i) = anInput1.read();
ai2(i) = anInput2.read();
end
plot(ai1,'DisplayName','ai1');hold on;plot(ai2,'DisplayName','ai2');hold off;
end
end
end

View File

@@ -32,19 +32,19 @@ classdef AnalogInputSim < handle
obj.rawValue = inValue;
value = obj.m * inValue + obj.b;
obj.lastValue = value;
obj.lastStored = now;
% obj.lastStored = now;
obj.history = [value, obj.history(1:end-1)];
end
function value = read(obj, simRaw)
value = obj.m * simRaw + obj.b;
obj.lastValue = value;
obj.lastStored = now;
% Store value in history array
histTemp = obj.history(1:end-1);
obj.history(2:end) = histTemp;
obj.history(1) = value;
end
function value = read(obj, value)
% value = obj.m * simRaw + obj.b;
obj.lastValue = value;
% obj.lastStored = now;
% Store value in history array
histTemp = obj.history(1:end-1);
obj.history(2:end) = histTemp;
obj.history(1) = value;
end
end
end

67
Card.m
View File

@@ -9,6 +9,17 @@ classdef Card < handle
downholePosition=zeros(1, 1500, 'double');
downholeLoad=zeros(1, 1500, 'double');
numRepSlices=200;
repDownholePosition=zeros(1, 199, 'double');
repDownholeLoadTop=zeros(1, 199, 'double');
repDownholeLoadBottom=zeros(1, 199, 'double');
repSurfacePosition=zeros(1, 199, 'double');
repSurfaceLoadTop=zeros(1, 199, 'double');
repSurfaceLoadBottom=zeros(1, 199, 'double');
surfacePositionMax=LPPair(0,0);
surfacePositionMin=LPPair(0,0);
surfaceLoadMax=LPPair(0,0);
@@ -50,7 +61,11 @@ classdef Card < handle
function obj=Card(strokeNumber)
% Initialization Function
obj.strokeNumber = strokeNumber;
obj.strokeStartTime = now;
% obj.strokeStartTime = now;
obj.strokeStartTime = 0;
obj.topCorner = LPPair(0, 0);
obj.bottomCorner = LPPair(0, 0);
end
function push(obj, s_pos, s_load, d_pos, d_load)
@@ -61,11 +76,12 @@ classdef Card < handle
obj.downholeLoad(obj.numPointsUsed) = d_load;
end
function calcStrokeData(obj, numSlices, fluidGradient, rodDepth, ...
function calcStrokeData(obj, fluidGradient, rodDepth, ...
anchorDepth, tubingCSA, pumpArea, frictionEstimate, ...
structuralRating, kFactor, waterBBLRatio, oilBBLRatio, ...
gasMCFRatio)
obj.calculateSPM();
numSlices = obj.numRepSlices;
obj.surfacePositionMax = obj.positionMax(obj.surfacePosition, obj.surfaceLoad, obj.numPointsUsed);
obj.surfaceLoadMax = obj.loadMax(obj.surfacePosition, obj.surfaceLoad, obj.numPointsUsed);
obj.surfacePositionMin = obj.positionMin(obj.surfacePosition, obj.surfaceLoad, obj.numPointsUsed);
@@ -88,7 +104,7 @@ classdef Card < handle
dhDistanceTop = 0.0;
dhDistanceBottom = 0.0;
for i = 1:numSlices+1
for i = 1:numSlices-1
suPosTarget = obj.surfacePositionMin.position + (double(i) * dxSurf);
dhPosTarget = obj.downholePositionMin.position + (double(i) * dxDown);
suLoadAtTargetTop = 0.0;
@@ -101,7 +117,7 @@ classdef Card < handle
dhLoadAtTargetTop = obj.lineResolve(obj.downholePosition(j), obj.downholePosition(j+1), obj.downholeLoad(j), obj.downholeLoad(j+1), dhPosTarget);
end
if (obj.downholePosition(j) > dhPosTarget && obj.downholePosition(j+1) >= dhPosTarget)
if (obj.downholePosition(j) >= dhPosTarget && obj.downholePosition(j+1) < dhPosTarget)
dhLoadAtTargetBottom = obj.lineResolve(obj.downholePosition(j), obj.downholePosition(j+1), obj.downholeLoad(j), obj.downholeLoad(j+1), dhPosTarget);
end
@@ -109,10 +125,44 @@ classdef Card < handle
suLoadAtTargetTop = obj.lineResolve(obj.surfacePosition(j), obj.surfacePosition(j+1), obj.surfaceLoad(j), obj.surfaceLoad(j+1), suPosTarget);
end
if (obj.surfacePosition(j) > suPosTarget && obj.surfacePosition(j+1) >= suPosTarget)
if (obj.surfacePosition(j) >= suPosTarget && obj.surfacePosition(j+1) < suPosTarget)
suLoadAtTargetBottom = obj.lineResolve(obj.surfacePosition(j), obj.surfacePosition(j+1), obj.surfaceLoad(j), obj.surfaceLoad(j+1), suPosTarget);
end
end
obj.repDownholePosition(i) = dhPosTarget;
if (dhLoadAtTargetTop == 0.0) && (i > 1)
obj.repDownholeLoadTop(i) = obj.repDownholeLoadTop(i-1);
elseif (dhLoadAtTargetTop == 0.0) && (i == 1)
obj.repDownholeLoadTop(i) = obj.downholePositionMin.load;
else
obj.repDownholeLoadTop(i) = dhLoadAtTargetTop;
end
if dhLoadAtTargetBottom == 0.0 && (i > 1)
obj.repDownholeLoadBottom(i) = obj.repDownholeLoadBottom(i-1);
elseif dhLoadAtTargetBottom == 0.0 && (i == 1)
obj.repDownholeLoadBottom(i) = obj.downholePositionMin.load;
else
obj.repDownholeLoadBottom(i) = dhLoadAtTargetBottom;
end
obj.repSurfacePosition(i) = suPosTarget;
if suLoadAtTargetTop == 0.0 && (i > 1)
obj.repSurfaceLoadTop(i) = obj.repSurfaceLoadTop(i-1);
elseif suLoadAtTargetTop == 0.0 && (i == 1)
obj.repSurfaceLoadTop(i) = obj.surfacePositionMin.load;
else
obj.repSurfaceLoadTop(i) = suLoadAtTargetTop;
end
if suLoadAtTargetBottom == 0.0 && (i > 1)
obj.repSurfaceLoadBottom(i) = obj.repSurfaceLoadBottom(i-1);
elseif suLoadAtTargetBottom == 0.0 && (i == 1)
obj.repSurfaceLoadBottom(i) = obj.surfacePositionMin.load;
else
obj.repSurfaceLoadBottom(i) = suLoadAtTargetBottom;
end
obj.polishedRodHorsepower = obj.polishedRodHorsepower + (dxSurf / 12.0) * (suLoadAtTargetTop - suLoadAtTargetBottom) * (obj.strokeSpeed / 33000.0);
obj.pumpHorsepower = obj.pumpHorsepower + (dxDown / 12.0) * (dhLoadAtTargetTop - dhLoadAtTargetBottom) * (obj.strokeSpeed / 33000.0);
@@ -120,12 +170,12 @@ classdef Card < handle
tDistance = obj.distanceToLine(dhPosTarget, dhLoadAtTargetTop);
bDistance = obj.distanceToLine(dhPosTarget, dhLoadAtTargetBottom);
if (tDistance > dhDistanceTop)
if (tDistance > dhDistanceTop) && (dhLoadAtTargetTop ~= 0.0)
dhDistanceTop = tDistance;
obj.topCorner = LPPair(dhPosTarget, dhLoadAtTargetTop);
end
if (bDistance > dhDistanceBottom)
if (bDistance > dhDistanceBottom) && (dhLoadAtTargetBottom ~= 0.0)
dhDistanceBottom = bDistance;
obj.bottomCorner = LPPair(dhPosTarget, dhLoadAtTargetBottom);
end
@@ -166,7 +216,7 @@ classdef Card < handle
end
function calculateSPM(obj)
obj.strokeSpeed = 60000.0 / (now - obj.strokeStartTime);
obj.strokeSpeed = 60000.0 / (5000 - obj.strokeStartTime);
end
function dist = distanceToLine(obj, pos, load)
@@ -191,6 +241,7 @@ classdef Card < handle
linkaxes([ax1, ax2], 'x')
end
end
methods(Static)

View File

@@ -1,45 +0,0 @@
classdef DigitalInput < handle
properties
mux;
channel;
value;
end
methods
function obj = DigitalInput(mux, channel)
obj.channel = channel;
obj.mux = mux;
end
function val = read(obj)
obj.mux.set(obj.channel);
val = obj.mux.readDigital();
end
end
methods(Static)
function test
pi = raspi('10.0.0.104', 'pi', 'HenryPump@1903');
mux = MuxSetup(pi);
digIn1 = DigitalInput(mux, 1);
digIn2 = DigitalInput(mux, 2);
digIn3 = DigitalInput(mux, 3);
digIn4 = DigitalInput(mux, 4);
digIn5 = DigitalInput(mux, 5);
digIn6 = DigitalInput(mux, 6);
digIn7 = DigitalInput(mux, 7);
digIn8 = DigitalInput(mux, 8);
digIn1Val = digIn1.read()
digIn2Val = digIn2.read()
digIn3Val = digIn3.read()
digIn4Val = digIn4.read()
digIn5Val = digIn5.read()
digIn6Val = digIn6.read()
digIn7Val = digIn7.read()
digIn8Val = digIn8.read()
end
end
end

View File

@@ -1,76 +0,0 @@
classdef DigitalOutput < handle
properties
channel;
dev;
end
methods
function writeOut(obj, value)
writeDigitalPin(obj.dev, obj.channel, value);
end
function obj = DigitalOutput(dev, chan)
channel = 0;
switch chan
case 1
channel = 21;
case 2
channel = 20;
case 3
channel = 16;
case 4
channel = 12;
case 5
channel = 25;
case 6
channel = 24;
case 7
channel = 23;
case 8
channel = 18;
end
configurePin(dev, channel, 'DigitalOutput');
obj.dev = dev;
obj.channel = channel;
end
end
methods(Static)
function test
pi = raspi('10.0.0.104', 'pi', 'HenryPump@1903');
d1 = DigitalOutput(pi, 1);
d2 = DigitalOutput(pi, 2);
d3 = DigitalOutput(pi, 3);
d4 = DigitalOutput(pi, 4);
d5 = DigitalOutput(pi, 5);
d6 = DigitalOutput(pi, 6);
d1.writeOut(1);
pause(0.250);
d2.writeOut(1);
pause(0.250);
d3.writeOut(1);
pause(0.250);
d4.writeOut(1);
pause(0.250);
d5.writeOut(1);
pause(0.250);
d6.writeOut(1);
pause(0.250);
d1.writeOut(0);
pause(0.250);
d2.writeOut(0);
pause(0.250);
d3.writeOut(0);
pause(0.250);
d4.writeOut(0);
pause(0.250);
d5.writeOut(0);
pause(0.250);
d6.writeOut(0);
end
end
end

View File

@@ -1,5 +1,5 @@
classdef LPPair < handle
classdef LPPair
% Load & Position Pair Class
properties
load;

BIN
Melinda252WellTest.mlx Normal file

Binary file not shown.

BIN
Melinda254WellTest.mlx Normal file

Binary file not shown.

View File

@@ -1,87 +0,0 @@
classdef MongoDB < handle
properties
hostname;
username;
password;
database='poc';
port=27017;
cardCollection, wellDataCollection, gaugeOffCollection, ...
wellTestCollection, fluidShotsCollection, ...
runStatusCollection, wellConfigCollection, setpointCollection;
end
methods
function obj = Database(hostname, username, password)
javaaddpath 'mongo-java-driver-3.4.2.jar';
import com.mongodb.*;
import com.mongodb.client.model.*;
import java.util.Arrays;
obj.hostname = hostname;
obj.username = username;
obj.password = password;
credential = MongoCredential.createCredential(obj.username, obj.database, obj.password);
mongo = MongoClient(Arrays.asList(ServerAddress(obj.hostname, obj.port)), Arrays.asList(credential));
db = mongo.getDatabase("poc");
obj.cardCollection = db.getCollection('cards');
% obj.cardCollection.createIndex(Indexes.ascending("timestamp", "strokeNumber"));
obj.wellDataCollection = db.getCollection("measurements");
% obj.wellDataCollection.createIndex(Indexes.ascending("dateStored", "tagName"));
obj.gaugeOffCollection = db.getCollection("gaugeOff");
% obj.gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName"));
obj.wellTestCollection = db.getCollection("wellTests");
% obj.wellTestCollection.createIndex(Indexes.ascending("testStartTime"));
obj.fluidShotsCollection = db.getCollection("fluidShots");
% obj.fluidShotsCollection.createIndex(Indexes.ascending("timestamp"));
obj.runStatusCollection = db.getCollection("runStatus");
% obj.runStatusCollection.createIndex(Indexes.ascending("timestamp"));
obj.wellConfigCollection = db.getCollection("wellConfiguration");
% obj.wellConfigCollection.createIndex(Indexes.ascending("timestamp"));
obj.setpointCollection = db.getCollection("setpoints");
% obj.setpointCollection.createIndex(Indexes.ascending("name"));
end
function lastStroke = getLastStrokeNum(obj)
javaaddpath 'mongo-java-driver-3.4.2.jar';
import com.mongodb.client.model.*;
import java.util.Arrays;
import java.util.List;
lastStroke = -1;
last = Accumulators.last("lastStroke", "$strokeNumber");
lastList = java.util.ArrayList;
lastList.add(last);
group = Aggregates.group("strokeNumber", lastList);
groupList = java.util.ArrayList;
groupList.add(group);
groupListArray = Arrays.asList(groupList);
cursor = obj.cardCollection.aggregate(groupListArray).iterator();
while (cursor.hasNext())
docStroke = cursor.next().getLong("lastStroke");
if (docStroke > lastStroke)
lastStroke = docStroke;
end
end
cursor.close();
end
end
methods(Static)
function test
db = Database('localhost', 'poc_java', 'HenryPump@1903');
lastStroke = db.getLastStrokeNum()
end
end
end

View File

@@ -1,63 +0,0 @@
classdef MuxSetup < handle
properties(Access=private)
mux1Pin=5;
mux2Pin=6;
mux3Pin=13;
digInPin=19;
anOutTriggerPin=23;
dev;
end
properties
setup=[0 0 0; 1 0 0; 0 1 0; 1 1 0; 0 0 1; 1 0 1; 0 1 1; 1 1 1];
spiDevice;
end
methods
function obj = MuxSetup(dev)
obj.dev = dev;
configurePin(dev, obj.mux1Pin, 'DigitalOutput');
configurePin(dev, obj.mux2Pin, 'DigitalOutput');
configurePin(dev, obj.mux3Pin, 'DigitalOutput');
configurePin(dev, obj.digInPin, 'DigitalInput');
configurePin(dev, obj.anOutTriggerPin, 'DigitalOutput');
obj.spiDevice = spidev(dev, 'CE0');
end
function set(obj, channel)
% Set the mux up for reading from a channel
if (channel > 0) && (channel <= 8)
writeDigitalPin(obj.dev, obj.mux1Pin, obj.setup(channel, 1));
writeDigitalPin(obj.dev, obj.mux2Pin, obj.setup(channel, 2));
writeDigitalPin(obj.dev, obj.mux3Pin, obj.setup(channel, 3));
end
end
function digInVal = readDigital(obj)
% Read the value of a digital input after setting the Mux
digInVal = ~readDigitalPin(obj.dev, obj.digInPin);
end
function analogValue = readAnalogSPI(obj)
enableSPI(obj.dev);
analogValue = -1;
analogRaw = writeRead(obj.spiDevice,[hex2dec('00') hex2dec('00') hex2dec('00')]);
if (analogRaw(3) == 13)
x = uint16(analogRaw(1)) * 256;
analogValue = x + uint16(analogRaw(2));
end
% disableSPI(obj.dev);
end
end
methods(Static)
function test
pi = raspi('10.0.0.104', 'pi', 'HenryPump@1903');
mux = MuxSetup(pi);
mux.set(1);
mux.readAnalogSPI()
mux.set(2);
mux.readAnalogSPI()
end
end
end

505
Well.m
View File

@@ -1,372 +1,69 @@
classdef Well < handle
properties(Constant)
% Constants (SHOULD THESE BE ELSEWHERE?)
YM_STEEL=30.5;
YM_FIBERGLASS=7.2;
%% Constants (SHOULD THESE BE ELSEWHERE?)
DIRECTION_UNKNOWN=0;
DIRECTION_UP=1;
DIRECTION_DOWN=2;
end
properties
wellName;
parameters;
% Instrumentation
%% Instrumentation
device;
mux;
positionSensor;
loadSensor;
% Current Values
currentSurfacePosition,currentSurfaceLoad;
currentDownholePosition,currentDownholeLoad;
%% Current Values
currentCard=Card(0);
lastCard=Card(0);
direction=0;
lastDirection=0;
% User Inputs
dt = 1.0 / 30.0;
tubingHeadPressure = 40.0;
fluidGradient = 0.45;
stuffingBoxFriction = 100.0;
numTapers = 3;
tubingAnchorDepth = 0.0;
pumpDiameter = 2.5;
pumpArea;
tubingInnerDiameter = 1.995;
tubingOuterDiameter = 2.375;
tubingCrossSectionalArea;
structuralRating = 320000;
frictionEstimate;
% Production Parameters
%% Production Parameters
kFactor=1.0;
waterBblRatio=0.90;
oilBblRatio=0.10;
gasMcfRatio=5.0;
% Rod String Inputs
c;
rodLength;
rodDiameter;
rodYM;
rodWeightPerFoot;
% Calculated Taper Parameters
a;
area;
pressure;
stretch;
force;
alpha;
xOverA;
factorArray;
lagIndex;
lengthRequired;
centerPoint;
count;
buoyantForceTotal = 0.0;
rodDepthTotal = 0.0;
rodWeightAirTotal = 0.0;
rodWeightFluidTotal = 0.0;
end
properties(Access=private)
topPosArray;
topLoadArray;
count;
% cross-function variables for position and load
% POSITION MUST ALWAYS BE CALLED FIRST.
loadBefore = 0.0;
loadAfter = 0.0;
loadBefore3 = 0.0;
loadAfter3 = 0.0;
tempLoadValue = 0.0;
end
methods
function me = Well(name, sim)
me.wellName = name;
%% Constructor Function
function me = Well(dt, rodLengths, rodDiameters, ...
rodMaterials, rodDampingFactors, tubingHeadPressure, ...
stuffingBoxFriction, fluidGradient, pumpDiameter, ...
tubingOuterDiameter, tubingInnerDiameter, tubingAnchorDepth, ...
structuralRating)
me.parameters = wellSetup(dt, rodLengths, rodDiameters, ...
rodMaterials, rodDampingFactors, tubingHeadPressure, ...
stuffingBoxFriction, fluidGradient, pumpDiameter, tubingOuterDiameter, ...
tubingInnerDiameter, tubingAnchorDepth, structuralRating);
me.c = [0.8 0.8 0.8];
me.rodLength = [1475.0 1525.0 2000.0];
me.rodDiameter = [1.0 0.875 0.750];
me.rodYM = [me.YM_STEEL me.YM_STEEL me.YM_STEEL];
me.rodWeightPerFoot = [Well.lookupRodWeightPerFoot(me.rodYM(1), me.rodDiameter(1)) ...
Well.lookupRodWeightPerFoot(me.rodYM(2), me.rodDiameter(2)) ...
Well.lookupRodWeightPerFoot(me.rodYM(3), me.rodDiameter(3))];
me.topPosArray = zeros(me.parameters.numTapers+1, 100);
me.topLoadArray = zeros(me.parameters.numTapers+1, 100);
me.count = zeros(1, me.parameters.numTapers);
% Initialize
me.a = zeros(1, me.numTapers, 'double');
me.area = zeros(1, me.numTapers+1, 'double');
me.pressure = zeros(1, me.numTapers, 'double');
me.stretch = zeros(1, me.numTapers, 'double');
me.force = zeros(1, me.numTapers, 'double');
me.alpha = zeros(1, me.numTapers, 'double');
me.xOverA = zeros(1, me.numTapers, 'double');
me.factorArray = zeros(1, me.numTapers, 'double');
me.lagIndex = zeros(1, me.numTapers, 'uint8');
me.lengthRequired = zeros(1, me.numTapers, 'uint8');
me.centerPoint = zeros(1, me.numTapers, 'uint8');
me.count = zeros(1, me.numTapers, 'uint8');
me.topPosArray = zeros(10, 250,'double');
me.topLoadArray = zeros(10, 250, 'double');
me.device = 0;
me.mux = MuxSetupSim(me.device);
me.positionSensor = AnalogInputSim(me.mux, 1, 0.0, 65535.0, 0.0, 65535.0);
me.loadSensor = AnalogInputSim(me.mux, 2, 0.0, 65535.0, 0.0, 65535.0);
if logical(sim)
me.device = 0;
me.mux = MuxSetupSim(me.device);
me.positionSensor = AnalogInputSim(me.mux, 1, 0.0, 65535.0, 0.0, 65535.0);
me.loadSensor = AnalogInputSim(me.mux, 2, 0.0, 65535.0, 0.0, 65535.0);
else
me.device = raspi('10.0.0.106', 'pi', 'HenryPump@1903');
me.mux = MuxSetupSim(me.device);
me.positionSensor = AnalogInput(mux, 1, 0.0, 65535.0, 0.0, 140.0);
me.loadSensor = AnalogInput(mux, 2, 0.0, 65535.0, 0.0, 50000.0);
end
me.wellSetup();
end
function wellSetup(me)
me.tubingCrossSectionalArea = (pi / 4) * ...
(power(me.tubingOuterDiameter, 2) - ...
power(me.tubingInnerDiameter,2));
me.pumpArea = power(me.pumpDiameter, 2) * pi;
for i = 1:me.numTapers
me.area(i) = pi / 4 * power(me.rodDiameter(i), 2);
end
for i = 1:me.numTapers
me.a(i) = 1000.0 * sqrt(32.2 * me.rodYM(i) * me.area(i) / me.rodWeightPerFoot(i));
me.rodDepthTotal = me.rodDepthTotal + me.rodLength(i);
if i > 1
me.pressure(i) = me.pressure(i - 1) + me.fluidGradient * me.rodLength(i);
else
me.pressure(i) = me.tubingHeadPressure + me.fluidGradient * me.rodLength(i);
end
me.buoyantForceTotal = me.buoyantForceTotal + me.pressure(i) * (me.area(i+1) - me.area(i));
me.rodWeightAirTotal = me.rodWeightAirTotal + me.rodWeightPerFoot(i) * me.rodLength(i);
me.rodWeightFluidTotal = me.rodWeightAirTotal + me.buoyantForceTotal;
end
for j = 1:me.numTapers
weightData = 0.0;
annularForceData = 0.0;
for i = j+1:me.numTapers
weightData = weightData + me.rodWeightPerFoot(i) * me.rodLength(i);
end
for i = j:me.numTapers-1
annularForceData = annularForceData + me.pressure(i) * (me.area(i) - me.area(i+1));
end
me.force(j) = (-me.area(me.numTapers) * me.pressure(me.numTapers)) + weightData - annularForceData;
me.alpha(j) = (me.force(j) + me.rodWeightPerFoot(j) * me.rodLength(j)) / (me.rodYM(j) * power(10, 6) * me.area(j));
if j > 1
me.stretch(j) = me.stretch(j - 1) + me.alpha(j) * me.rodLength(j) - ...
(me.rodWeightPerFoot(j) * power(me.rodLength(j), 2.0)) / ...
(2.0 * me.rodYM(j) * power(10, 6) * me.area(j));
else
me.stretch(j) = 0.0 + me.alpha(j) * me.rodLength(j) - ...
(me.rodWeightPerFoot(j) * power(me.rodLength(j), 2.0)) / ...
(2.0 * me.rodYM(j) * power(10, 6) * me.area(j));
end
end
for i = 1:me.numTapers
me.xOverA(i) = me.rodLength(i) / me.a(i);
me.lagIndex(i) = floor(me.rodLength(i) / (me.a(i) * me.dt));
me.factorArray(i) = (me.xOverA(i) - double(me.lagIndex(i)) * me.dt) / me.dt;
me.centerPoint(i) = me.lagIndex(i) + 2;
me.lengthRequired(i) = 2 * (me.lagIndex(i) + 1) + 1;
end
me.frictionEstimate = me.rodDepthTotal * 0.10;
end
function pumpPosition = position(me, i)
% Position Function
ai = me.a(i);
ci = me.c(i);
factori = me.factorArray(i);
lengthi = me.rodLength(i);
lagi = double(me.lagIndex(i));
yi = me.rodYM(i) * power(10, 6);
areai = me.area(i);
centeri = me.centerPoint(i);
iBefore = centeri - me.lagIndex(i);
iAfter = centeri + me.lagIndex(i);
me.loadBefore = 0.0;
me.loadAfter = 0.0;
me.loadBefore3 = 0.0;
me.loadAfter3 = 0.0;
pumpPosition = exp(ci * lengthi / (2.0 * ai)) * (me.topPosArray(i, iAfter) + ...
factori * (me.topPosArray(i, iAfter+1) - me.topPosArray(i, iAfter)));
pumpPosition = pumpPosition + exp(-ci * lengthi / (2.0 * ai)) * ...
(me.topPosArray(i,iBefore) + factori * (me.topPosArray(i,iBefore-1) - ...
me.topPosArray(i, iBefore)));
pumpPosition = 0.5 * pumpPosition;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + me.dt / (yi * areai) * ...
(exp((-ci * (lagi - jj) *me.dt) / 2.0) * ...
me.topLoadArray(i, iBefore + jj));
end
insideIntegral = insideIntegral + 0.5 * me.dt /(yi * areai) * ...
(exp((-ci * lagi * me.dt) / 2.0) * me.topLoadArray(i, iBefore) + ...
exp((-ci * -lagi * me.dt) / 2.0) * me.topLoadArray(i, iAfter));
me.loadBefore = exp((-ci * lagi * me.dt) / 2.0) * me.topLoadArray(i, iBefore) + ...
factori * (exp((-ci * (lagi + 1) * me.dt) / 2.0) * me.topLoadArray(i, iBefore-1) - ...
exp((-ci * lagi * me.dt) / 2.0) * me.topLoadArray(i, iBefore));
me.loadAfter = exp((-ci * -lagi * me.dt) / 2.0) * me.topLoadArray(i, iAfter) + ...
factori * (exp((-ci * (-lagi - 1) * me.dt) / 2.0) * me.topLoadArray(i, iAfter+1) - ...
exp((-ci * -lagi * me.dt) / 2.0) * me.topLoadArray(i,iAfter));
insideIntegral = insideIntegral + 0.5 * factori * me.dt / (yi * areai) * ...
(me.loadBefore + exp((-ci * lagi * me.dt) / 2.0) * me.topLoadArray(i, iBefore));
insideIntegral = insideIntegral + 0.5 * factori * me.dt / (yi * areai) * ...
(me.loadAfter + exp((-ci * -lagi * me.dt) / 2.0) * me.topLoadArray(i, iAfter));
insideIntegral = 0.5 * ai * insideIntegral;
pumpPosition = pumpPosition + insideIntegral;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + me.dt * (exp((-ci * (lagi - jj) * me.dt) / 2.0) * ...
me.topPosArray(i, iBefore+jj));
end
insideIntegral = insideIntegral + 0.5 * me.dt * (exp((-ci * lagi * me.dt) / 2.0) * ...
me.topPosArray(i, iBefore) + exp((-ci * -lagi * me.dt) / 2.0) * ...
me.topPosArray(i, iAfter));
me.loadBefore3 = exp((-ci * lagi * me.dt) / 2.0) * me.topPosArray(i, iBefore) + ...
factori * (exp((-ci * (lagi+1) * me.dt) / 2.0) * me.topPosArray(i, iBefore-1) - ...
exp((-ci * lagi * me.dt) / 2.0) * me.topPosArray(i, iBefore));
me.loadAfter3 = exp((-ci * -lagi * me.dt) / 2.0) * me.topPosArray(i, iAfter) + ...
factori * (exp((-ci * (-lagi-1) * me.dt) / 2.0) * me.topPosArray(i, iAfter+1) - ...
exp((-ci * -lagi * me.dt) / 2.0) * me.topPosArray(i, iAfter));
insideIntegral = insideIntegral + 0.5 * factori * me.dt * (me.loadBefore3 + ...
exp((-ci * lagi * me.dt) / 2.0) * me.topPosArray(i, iBefore));
insideIntegral = insideIntegral + 0.5 * factori * me.dt * (me.loadAfter3 + ...
exp((-ci * -lagi * me.dt) / 2.0) * me.topPosArray(i, iAfter));
insideIntegral = -(ci * lengthi / 4) * 0.5 * (ci / (2.0 * ai)) * insideIntegral;
me.tempLoadValue = insideIntegral / lengthi;
pumpPosition = pumpPosition + insideIntegral;
end
function pumpLoad = load(me, i)
% Load Function
ai = me.a(i);
ci = me.c(i);
lengthi = me.rodLength(i);
lagi = me.lagIndex(i);
yi = me.rodYM(i) * power(10, 6);
areai = me.area(i);
centeri = me.centerPoint(i);
iBefore = centeri - lagi;
iAfter = centeri + lagi;
pumpLoad = 0.5 * (ai / (yi * areai)) * (1 / ai) * (me.loadBefore + me.loadAfter);
tempResult = yi * areai * pumpLoad;
pumpLoad = pumpLoad - (ci * lengthi / 4) * (0.5 * (ci / (2.0 * ai))) * (1 / ai) * ...
(me.loadBefore3 + me.loadAfter3);
ptAfter = (me.topPosArray(i, iAfter+1) - me.topPosArray(i, iAfter-1)) / (2.0 * me.dt);
ptBefore = (me.topPosArray(i, iBefore+1) - me.topPosArray(i, iBefore-1)) / (2.0 * me.dt);
firstPart = (exp((ci * lengthi) / (2.0 * ai)) * ptAfter - exp((-ci * lengthi) / ...
(2.0 * ai)) * ptBefore) / (2.0 * ai);
firstPart = firstPart + (ci * exp((ci * lengthi) / (2.0 * ai)) * ...
me.topPosArray(i, iAfter) - ci * exp((-ci * lengthi) / (2.0 * ai)) * ...
me.topPosArray(i, iBefore)) / (4 * ai);
pumpLoad = yi * areai * (firstPart + pumpLoad); % + tempLoadValue ?
end
function [pumpPosition, pumpLoad, status] = calc(me, polishedRodPosition, lastPolishedRodPosition,...
polishedRodLoad)
me.currentSurfacePosition = polishedRodPosition;
me.currentSurfaceLoad = polishedRodLoad;
pumpPosition = -1.0;
pumpLoad = -1.0;
status = -1;
loadMult = 1.0;
tapersAllowed = 1;
for ii = 2:me.lengthRequired(1)
me.topPosArray(1, ii-1) = me.topPosArray(1, ii);
me.topLoadArray(1, ii-1) = me.topLoadArray(1, ii);
end
me.topPosArray(1, me.lengthRequired(1)) = -1.0 * polishedRodPosition / 12.0;
if polishedRodPosition > lastPolishedRodPosition
me.topLoadArray(1, me.lengthRequired(1)) = loadMult * ...
(polishedRodLoad - me.rodWeightFluidTotal) - me.stuffingBoxFriction;
elseif polishedRodPosition < lastPolishedRodPosition
me.topLoadArray(1, me.lengthRequired(1)) = loadMult * ...
(polishedRodLoad - me.rodWeightFluidTotal) + me.stuffingBoxFriction;
else
me.topLoadArray(1, me.lengthRequired(1)) = loadMult * ...
(polishedRodLoad - me.rodWeightFluidTotal);
end
tap=1;
while tap <= tapersAllowed
me.count(tap) = me.count(tap) + 1;
if me.count(tap) >= me.lengthRequired(tap)
if tap+1 <= me.numTapers
% working our way down to the bottom of the well
for pti = 2:me.lengthRequired(tap+1)+1
me.topPosArray(tap+1, pti-1) = me.topPosArray(tap+1, pti);
me.topLoadArray(tap+1, pti-1) = me.topLoadArray(tap+1, pti);
end
pumpPosition = me.position(tap);
pumpLoad = me.load(tap);
status = 0;
me.topPosArray(tap+1, me.lengthRequired(tap+1)) = pumpPosition;
me.topLoadArray(tap+1, me.lengthRequired(tap+1)) = pumpLoad;
else
pumpPosition = -12.0 * me.position(tap); % + me.stretch(me.numTapers);
me.currentDownholePosition = pumpPosition;
pumpLoad = me.load(tap) + me.force(me.numTapers);
me.currentDownholeLoad = pumpLoad;
status = 1;
end
me.count(tap) = me.count(tap) - 1;
tapersAllowed = tapersAllowed + 1;
if tapersAllowed > me.numTapers
tapersAllowed = me.numTapers;
end
end
tap = tap + 1;
end
me.currentCard = Card(0);
me.lastCard = Card(0);
end
%% Check if the stroke has ended
function directionChanged = checkEndOfStroke(me, numConsecutivePoints)
directionChanged = 0;
tempDirection = me.DIRECTION_UNKNOWN;
@@ -415,15 +112,36 @@ classdef Well < handle
end
end
%% Evaluation function for simulated position and load points
function evalSim(me, s_pos, s_load)
me.positionSensor.read(s_pos);
me.loadSensor.read(s_load);
[d_pos, d_load, d_status] = me.calc(me.positionSensor.lastValue, ...
me.positionSensor.history(2), me.loadSensor.lastValue);
if d_status == 1
[pumpPosition, pumpLoad, status, me.topPosArray, ...
me.topLoadArray, me.count] = pocAlgorithm( ...
me.positionSensor.lastValue, ...
me.positionSensor.history(2), ...
me.loadSensor.lastValue, ...
me.count, ...
me.parameters.dt, ...
me.parameters.a, ...
me.parameters.rodDampingFactors, ...
me.parameters.factorArray, ...
me.parameters.rodLengths, ...
double(me.parameters.lagIndex), ...
me.parameters.rodYMs * 10.0^6, ...
me.parameters.area, ...
me.parameters.lengthRequired, ...
me.parameters.centerPoint, ...
me.parameters.rodWeightFluidTotal, ...
me.parameters.stuffingBoxFriction, ...
me.parameters.force, ...
me.topPosArray, ...
me.topLoadArray);
if status == 1
me.currentCard.push(me.positionSensor.lastValue, ...
me.loadSensor.lastValue, d_pos, d_load);
me.loadSensor.lastValue, pumpPosition, pumpLoad);
end
if me.checkEndOfStroke(5) == 1
@@ -431,91 +149,66 @@ classdef Well < handle
end
end
%% End of Stroke actions
function endOfStroke(me)
me.currentCard.calcStrokeData(100, me.fluidGradient, me.rodDepthTotal, ...
me.tubingAnchorDepth, me.tubingCrossSectionalArea, ...
me.pumpArea, me.frictionEstimate, ...
me.structuralRating, me.kFactor, me.waterBblRatio, me.oilBblRatio, ...
me.currentCard.calcStrokeData( ...
me.parameters.fluidGradient, ...
me.parameters.rodDepthTotal, ...
me.parameters.tubingAnchorDepth, ...
me.parameters.tubingCrossSectionalArea, ...
me.parameters.pumpArea, ...
me.parameters.frictionEstimate, ...
me.parameters.structuralRating, ...
me.kFactor, ...
me.waterBblRatio, ...
me.oilBblRatio, ...
me.gasMcfRatio);
me.plotCards()
me.lastCard = me.currentCard();
me.lastCard = me.currentCard;
me.currentCard = Card(me.lastCard.strokeNumber + 1);
end
%% Draws Cards
% Draws current card and shows last card
function plotCards(me)
ax1 = subplot(2,2,1);
figure;
% ax1 = subplot(2,2,1);
ax1 = subplot(2,1,1);
hold on;
plot(me.lastCard.surfacePosition(1:me.lastCard.numPointsUsed), ...
me.lastCard.surfaceLoad(1:me.lastCard.numPointsUsed))
me.lastCard.surfaceLoad(1:me.lastCard.numPointsUsed), 'r')
plot(me.lastCard.repSurfacePosition, me.lastCard.repSurfaceLoadTop, 'g');
plot(me.lastCard.repSurfacePosition, me.lastCard.repSurfaceLoadBottom, 'b');
title('Last Surface Card')
hold off;
ax3 = subplot(2,2,3);
% ax3 = subplot(2,2,3);
ax3 = subplot(2,1,2);
hold on;
plot(me.lastCard.downholePosition(1:me.lastCard.numPointsUsed), ...
me.lastCard.downholeLoad(1:me.lastCard.numPointsUsed), 'r')
plot(me.lastCard.topCorner.position, me.lastCard.topCorner.load, ...
'gd', 'MarkerSize', 15, 'LineWidth', 2);
plot(me.lastCard.bottomCorner.position, me.lastCard.bottomCorner.load, ...
'bd', 'MarkerSize', 15, 'LineWidth', 2);
plot(me.lastCard.repDownholePosition, me.lastCard.repDownholeLoadTop, 'g');
plot(me.lastCard.repDownholePosition, me.lastCard.repDownholeLoadBottom, 'b');
title('Last Downhole Card')
hold off;
ax2 = subplot(2,2,2);
plot(me.currentCard.surfacePosition(1:me.currentCard.numPointsUsed), ...
me.currentCard.surfaceLoad(1:me.currentCard.numPointsUsed))
title('Current Surface Card')
% ax2 = subplot(2,2,2);
% plot(me.currentCard.surfacePosition(1:me.currentCard.numPointsUsed), ...
% me.currentCard.surfaceLoad(1:me.currentCard.numPointsUsed))
% title('Current Surface Card')
%
% ax4 = subplot(2,2,4);
% plot(me.currentCard.downholePosition(1:me.currentCard.numPointsUsed), ...
% me.currentCard.downholeLoad(1:me.currentCard.numPointsUsed), 'r')
% title('Current Downhole Card')
ax4 = subplot(2,2,4);
plot(me.currentCard.downholePosition(1:me.currentCard.numPointsUsed), ...
me.currentCard.downholeLoad(1:me.currentCard.numPointsUsed), 'r')
title('Current Downhole Card')
linkaxes([ax1, ax2, ax3, ax4], 'x')
% linkaxes([ax1, ax2, ax3, ax4], 'x')
linkaxes([ax1, ax3], 'x')
end
end
methods(Static)
function wtPerFt = lookupRodWeightPerFoot(i_ym, i_diam)
YM_STEEL=30.5;
YM_FIBERGLASS=7.2;
wtPerFt = -1;
if (i_ym == YM_STEEL)
if (i_diam <= 2 && i_diam > 1.75)
wtPerFt = 10.7;
elseif (i_diam <= 1.75 && i_diam > 1.65)
wtPerFt = 8.2;
elseif (i_diam <= 1.65 && i_diam > 1.5)
wtPerFt = 7;
elseif (i_diam <= 1.5 && i_diam > 1.375)
wtPerFt = 6;
elseif (i_diam <= 1.375 && i_diam > 1.125)
wtPerFt = 5;
elseif (i_diam <= 1.125 && i_diam > 1)
wtPerFt = 3.676;
elseif (i_diam <= 1 && i_diam > 0.875)
wtPerFt = 2.904;
elseif (i_diam <= 0.875 && i_diam > 0.75)
wtPerFt = 2.224;
elseif (i_diam <= 0.75 && i_diam > 0.625)
wtPerFt = 1.634;
elseif (i_diam <= 0.625 && i_diam > 0.5)
wtPerFt = 1.13;
elseif (i_diam <= 0.5)
wtPerFt = 0.72;
else
wtPerFt = 0;
end
elseif (i_ym == YM_FIBERGLASS)
if (i_diam <= 1.25 && i_diam > 1.125)
wtPerFt = 1.2879;
elseif (i_diam <= 1.125 && i_diam > 1)
wtPerFt = 1.09;
elseif (i_diam <= 1 && i_diam > 0.875)
wtPerFt = 0.8188;
elseif (i_diam <= 0.875 && i_diam > 0.75)
wtPerFt = 0.6108;
elseif (i_diam <= 0.75)
wtPerFt = 0.484;
else
wtPerFt = 0;
end
end
end
end
end

BIN
WellTestGeneric.mlx Normal file

Binary file not shown.

View File

@@ -1,319 +0,0 @@
simWell()
function simWell
wellName = "Mallet";
% Current Values
currentSurfacePosition = 0.0;
currentSurfaceLoad = 0.0;
currentDownholePosition = 0.0;
currentDownholeLoad = 0.0;
currentCard=Card(0);
% Constants
YM_STEEL=30.5;
YM_FIBERGLASS=7.2;
% User Inputs
dt = 0.03333333;
tubingHeadPressure = 40.0;
fluidGradient = 0.45;
stuffingBoxFriction = 100.0;
numTapers = 3;
tubingAnchorDepth = 0.0;
pumpDiameter = 2.5;
tubingInnerDiameter = 1.995;
tubingOuterDiameter = 2.375;
structuralRating = 320000;
% Rod String Inputs
c = [0.08 0.08 0.08];
rodLength = [1475.0 1525.0 2000.0];
rodDiameter = [1.0 0.875 0.750];
rodYM = [YM_STEEL YM_STEEL YM_STEEL];
rodWeightPerFoot = [Well.lookupRodWeightPerFoot(YM_STEEL, rodDiameter(1)) ...
Well.lookupRodWeightPerFoot(YM_STEEL, rodDiameter(2)) ...
Well.lookupRodWeightPerFoot(YM_STEEL, rodDiameter(3))];
% Calculated Taper Parameters
% Initialize
a = zeros(1, numTapers, 'double');
area = zeros(1, numTapers+1, 'double');
pressure = zeros(1, numTapers, 'double');
stretch = zeros(1, numTapers, 'double');
force = zeros(1, numTapers, 'double');
alpha = zeros(1, numTapers, 'double');
xOverA = zeros(1, numTapers, 'double');
factorArray = zeros(1, numTapers, 'double');
lagIndex = zeros(1, numTapers, 'uint8');
lengthRequired = zeros(1, numTapers, 'uint8');
centerPoint = zeros(1, numTapers, 'uint8');
count = zeros(1, numTapers, 'uint8');
buoyantForceTotal = 0.0;
rodDepthTotal = 0.0;
rodWeightAirTotal = 0.0;
rodWeightFluidTotal = 0.0;
topPosArray = zeros(10, 250,'double');
topLoadArray = zeros(10, 250, 'double');
% cross-function variables for position and load
% POSITION MUST ALWAYS BE CALLED FIRST.
loadBefore = 0.0;
loadAfter = 0.0;
loadBefore3 = 0.0;
loadAfter3 = 0.0;
tempLoadValue = 0.0;
for i = 1:numTapers
area(i) = pi / 4 * rodDiameter(i) ^ 2;
end
for i = 1:numTapers
a(i) = 1000.0 * sqrt(32.3 * rodYM(i) / rodWeightPerFoot(i));
% if i > 1
% rodDepth(i) = rodDepth(i-1) + rodLength(i);
% else
% rodDepth(i) = 0.0;
% end
rodDepthTotal = rodDepthTotal + rodLength(i);
if i > 1
pressure(i) = pressure(i - 1) + fluidGradient * rodLength(i);
else
pressure(i) = tubingHeadPressure + fluidGradient * rodLength(i);
end
% buoyantForce(i) = pressure(i) * (area(i+1) - area(i));
buoyantForceTotal = buoyantForceTotal + pressure(i) * (area(i+1) - area(i));
% rodWeightAir(i) = rodWeightPerFoot(i) * rodLength(i);
rodWeightAirTotal = rodWeightAirTotal + rodWeightPerFoot(i) * rodLength(i);
% rodWeightFluid(i) = rodWeightAir(i) + buoyantForce(i);
rodWeightFluidTotal = rodWeightFluidTotal + buoyantForceTotal;
end
for j = 1:numTapers
weightData = 0.0;
annularForceData = 0.0;
for i = j+1:numTapers
weightData = weightData + rodWeightPerFoot(i) * rodLength(i);
end
for i = j:numTapers-1
annularForceData = annularForceData + pressure(i) * (area(i) - area(i+1));
end
force(j) = (-area(numTapers) * pressure(numTapers)) + weightData - annularForceData;
alpha(j) = (force(j) + rodWeightPerFoot(j) * rodLength(j)) / (rodYM(j) * power(10, 6) * area(j));
if j > 1
stretch(j) = stretch(j - 1) + alpha(j) * rodLength(j) - ...
(rodWeightPerFoot(j) * power(rodLength(j), 2)) / ...
(2 * rodYM(j) * power(10, 6) * area(j));
else
stretch(j) = 0.0 + alpha(j) * rodLength(j) - ...
(rodWeightPerFoot(j) * power(rodLength(j), 2)) / ...
(2 * rodYM(j) * power(10, 6) * area(j));
end
end
for i = 1:numTapers
xOverA(i) = rodLength(i) / a(i);
lagIndex(i) = floor(rodLength(i) / (a(i) * dt));
factorArray(i) = (xOverA(i) - double(lagIndex(i)) * dt) / dt;
centerPoint(i) = lagIndex(i) + 2;
lengthRequired(i) = 2 * (lagIndex(i) + 1) + 1;
end
m = csvread('Mallet No Tag.csv');
for i = 2:size(m,1)
[dhPos, dhLoad, status] = calc(m(i,1), m(i-1,1), m(i,2));
if status == 1
currentCard.push(m(i,1), m(i,2), dhPos, dhLoad);
end
end
% currentCard.surfacePosition
% scatter(currentCard.surfacePosition, currentCard.surfaceLoad)
scatter(currentCard.downholePosition, currentCard.downholeLoad)
% FUNCTION DECLARATIONS
function pumpPosition = position(i)
% Position Function
ai = a(i);
ci = c(i);
factori = factorArray(i);
lengthi = rodLength(i);
lagi = double(lagIndex(i));
yi = rodYM(i) * power(10, 6);
areai = area(i);
centeri = centerPoint(i);
iBefore = centeri - lagIndex(i);
iAfter = centeri + lagIndex(i);
pumpPosition = exp(ci * lengthi / (2 * ai)) * (topPosArray(i, iAfter) + ...
factori * topPosArray(i, iAfter+1));
pumpPosition = pumpPosition + exp(ci * lengthi / (2 * ai)) * ...
(topPosArray(i,iBefore-1) -topPosArray(i, iBefore));
pumpPosition = 0.5 * pumpPosition;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + dt / (yi * areai) * ...
(exp((-ci * (lagi - jj) *dt) / 2) * ...
topLoadArray(i, iBefore + jj));
end
insideIntegral = insideIntegral + 0.5 * dt /(yi * areai) * ...
(exp((-ci * lagi * dt) / 2) * topLoadArray(i, iBefore) + ...
exp((-ci * -lagi * dt) / 2) * topLoadArray(i, iAfter));
loadBefore = exp((-ci * lagi * dt) / 2) * topLoadArray(i, iBefore) + ...
factori * (exp((-ci * (lagi + 1) * dt) / 2) * topLoadArray(i, iBefore-1) - ...
exp((-ci * lagi * dt) / 2) * topLoadArray(i, iBefore));
loadAfter = exp((-ci * -lagi * dt) / 2) * topLoadArray(i, iAfter) + ...
factori * (exp((-ci * (-lagi - 1) * dt) / 2) * topLoadArray(i, iAfter+1) - ...
exp((-ci * -lagi * dt) / 2) * topLoadArray(i,iAfter));
insideIntegral = insideIntegral + 0.5 * factori * dt / (yi * areai) * ...
(loadBefore + exp((-ci * lagi * dt) / 2) * topLoadArray(i, iBefore));
insideIntegral = insideIntegral + 0.5 * factori * dt / (yi * areai) * ...
(loadAfter + exp((-ci * -lagi * dt) / 2) * topLoadArray(i, iAfter));
insideIntegral = 0.5 * ai * insideIntegral;
pumpPosition = pumpPosition + insideIntegral;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + dt * (exp((-ci * (lagi - jj) * dt) / 2) * ...
topPosArray(i, iBefore+jj));
end
insideIntegral = insideIntegral + 0.5 * dt * (exp((-ci * lagi * dt) / 2) * ...
topPosArray(i, iBefore) + exp((-ci * -lagi * dt) / 2) * ...
topPosArray(i, iAfter));
loadBefore3 = exp((-ci * lagi * dt) / 2) * topPosArray(i, iBefore) + ...
factori * (exp((-ci * (lagi+1) * dt) / 2) * topPosArray(i, iBefore-1) - ...
exp((-ci * lagi * dt) / 2) * topPosArray(i, iBefore));
loadAfter3 = exp((-ci * -lagi * dt) / 2) * topPosArray(i, iAfter) + ...
factori * (exp((-ci * (-lagi-1) * dt) / 2) * topPosArray(i, iAfter+1) - ...
exp((-ci * -lagi * dt) / 2) * topPosArray(i, iAfter));
insideIntegral = insideIntegral + 0.5 * factori * dt * (loadBefore3 + ...
exp((-ci * lagi * dt) / 2) * topPosArray(i, iBefore));
insideIntegral = insideIntegral + 0.5 * factori * dt * (loadAfter3 + ...
exp((-ci * -lagi * dt) / 2) * topPosArray(i, iAfter));
insideIntegral = -(ci * lengthi / 4) * 0.5 * (ci / (2 * ai)) * insideIntegral;
tempLoadValue = insideIntegral / lengthi;
pumpPosition = pumpPosition + insideIntegral;
end
function pumpLoad = load(i)
% Load Function
ai = a(i);
ci = c(i);
factori = factorArray(i);
lengthi = rodLength(i);
lagi = lagIndex(i);
yi = rodYM(i) * power(10, 6);
areai = area(i);
centeri = centerPoint(i);
iBefore = centeri - lagi;
iAfter = centeri + lagi;
pumpLoad = 0.5 * (ai / (yi * areai)) * (1 / ai) * (loadBefore + loadAfter);
tempResult = yi * areai * pumpLoad;
pumpLoad = pumpLoad - (ci * lengthi / 4) * (0.5 * (ci / (2 * ai))) * (1 / ai) * ...
(loadBefore3 + loadAfter3);
ptAfter = (topPosArray(i, iAfter+1) - topPosArray(i, iAfter-1)) / (2 * dt);
ptBefore = (topPosArray(i, iBefore+1) - topPosArray(i, iBefore-1)) / (2 * dt);
firstPart = (exp((ci * lengthi) / (2 * ai)) * ptAfter - exp((-ci * lengthi) / ...
(2 * ai)) * ptBefore) / (2 * ai);
firstPart = firstPart + (ci * exp((ci * lengthi) / (2 * ai)) * ...
topPosArray(i, iAfter) - ci * exp((-ci * lengthi) / (2 * ai)) * ...
topPosArray(i, iBefore)) / (4 * ai);
pumpLoad = yi * areai * (firstPart + pumpLoad); % + tempLoadValue ?
end
function [pumpPosition, pumpLoad, status] = calc(polishedRodPosition, lastPolishedRodPosition,...
polishedRodLoad)
pumpPosition = -1.0;
pumpLoad = -1.0;
status = -1;
loadMult = 1.0;
tapersAllowed = 1;
for ii = 2:lengthRequired(1)
topPosArray(1, ii-1) = topPosArray(1, ii);
topLoadArray(1, ii-1) = topLoadArray(1, ii);
topPosArray(1, lengthRequired(1)) = - polishedRodPosition / 12;
if polishedRodPosition > lastPolishedRodPosition
topLoadArray(1, lengthRequired(1)) = loadMult * ...
(polishedRodLoad - rodWeightFluidTotal) - stuffingBoxFriction;
elseif polishedRodPosition > lastPolishedRodPosition
topLoadArray(1, lengthRequired(1)) = loadMult * ...
(polishedRodLoad - rodWeightFLuidTotal) + stuffingBoxFriction;
else
topLoadArray(1, lengthRequired(1)) = loadMult * (polishedRodLoad - rodWeightFluidTotal);
end
end
tap=1;
while tap <= tapersAllowed
count(tap) = count(tap) + 1;
if count(tap) >= lengthRequired(tap)
if tap+1 <= numTapers
% working our way down to the bottom of the well
for pti = 2:lengthRequired(tap+1)
topPosArray(tap+1, pti-1) = topPosArray(tap+1, pti);
topLoadArray(tap+1, pti-1) = topLoadArray(tap+1, pti);
end
pumpPosition = position(tap);
pumpLoad = load(tap);
status = 0;
topPosArray(tap+1, lengthRequired(tap+1)) = pumpPosition;
topLoadArray(tap+1, lengthRequired(tap+1)) = pumpLoad;
else
pumpPosition = -12 * (position(tap) + stretch(numTapers));
pumpLoad = load(tap) + force(numTapers);
status = 1;
end
count(tap) = count(tap) - 1;
tapersAllowed = tapersAllowed + 1;
if tapersAllowed > numTapers
tapersAllowed = numTapers;
end
end
tap = tap + 1;
end
end
end

947
algorithm.prj Normal file
View File

@@ -0,0 +1,947 @@
<deployment-project plugin="plugin.coder" plugin-version="R2016a">
<configuration file="/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/algorithm.prj" location="/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab" name="algorithm" target="target.unifiedcoder" target-name="MATLAB Coder">
<profile key="profile.mex">
<param.BuiltInstrumentedMex />
<param.RanInstrumentedMex />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.ResponsivenessChecks />
<param.ExtrinsicCalls />
<param.IntegrityChecks />
<param.SaturateOnIntegerOverflow />
<param.GlobalDataSyncMethod />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.ReservedNameArray />
<param.EnableDebugging />
<param.GenerateReport />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.VerificationMode />
<param.VerificationStatus>option.VerificationStatus.Inactive</param.VerificationStatus>
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.mex.GenCodeOnly />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.PreserveVariableNames />
<param.TargetLang />
<param.EchoExpressions />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.ConstantInputs />
<param.EnableCRICodeCoverage>true</param.EnableCRICodeCoverage>
<param.EnableJIT />
<param.EnableJITSilentBailOut />
<param.CheckForIssuesJIT />
<unset>
<param.BuiltInstrumentedMex />
<param.RanInstrumentedMex />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.ResponsivenessChecks />
<param.ExtrinsicCalls />
<param.IntegrityChecks />
<param.SaturateOnIntegerOverflow />
<param.GlobalDataSyncMethod />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.ReservedNameArray />
<param.EnableDebugging />
<param.GenerateReport />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.VerificationMode />
<param.VerificationStatus />
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.mex.GenCodeOnly />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.PreserveVariableNames />
<param.TargetLang />
<param.EchoExpressions />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.ConstantInputs />
<param.EnableCRICodeCoverage />
<param.EnableJIT />
<param.EnableJITSilentBailOut />
<param.CheckForIssuesJIT />
</unset>
</profile>
<profile key="profile.c">
<param.grt.GenCodeOnly>true</param.grt.GenCodeOnly>
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.SaturateOnIntegerOverflow />
<param.PurelyIntegerCode />
<param.SupportNonFinite />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.MultiInstanceCode />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.CommentStyle />
<param.MATLABSourceComments />
<param.MATLABFcnDesc />
<param.DataTypeReplacement />
<param.ConvertIfToSwitch />
<param.PreserveExternInFcnDecls />
<param.EnableSignedLeftShifts />
<param.EnableSignedRightShifts />
<param.ParenthesesLevel />
<param.MaxIdLength />
<param.CustomSymbolStrGlobalVar />
<param.CustomSymbolStrType />
<param.CustomSymbolStrField />
<param.CustomSymbolStrFcn />
<param.CustomSymbolStrTmpVar />
<param.CustomSymbolStrMacro />
<param.CustomSymbolStrEMXArray />
<param.CustomSymbolStrEMXArrayFcn />
<param.ReservedNameArray />
<param.RuntimeChecks />
<param.Verbose />
<param.GenerateReport />
<param.GenerateCodeMetricsReport />
<param.GenerateCodeReplacementReport />
<param.HighlightPotentialDataTypeIssues />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.SILDebugging />
<param.CodeExecutionProfiling />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.RanPilSilVerification />
<param.VerificationMode />
<param.VerificationStatus>option.VerificationStatus.Inactive</param.VerificationStatus>
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.TargetLangStandard />
<param.CodeReplacementLibrary />
<param.DeprecatedCRLFlag />
<param.SameHardware>true</param.SameHardware>
<param.Toolchain />
<param.BuildConfiguration />
<param.CustomToolchainOptions />
<var.ToolchainSettingsVisible />
<param.target.Data />
<param.target.ActiveType>option.target.TargetType.MatlabHost</param.target.ActiveType>
<param.target.ActiveTarget />
<param.HardwareVendor.Production>Generic</param.HardwareVendor.Production>
<param.HardwareType.Production>MATLAB Host Computer</param.HardwareType.Production>
<param.HWDeviceType.Production />
<var.instance.enabled.Production />
<param.HardwareSizeChar.Production>8</param.HardwareSizeChar.Production>
<param.HardwareSizeShort.Production>16</param.HardwareSizeShort.Production>
<param.HardwareSizeInt.Production>32</param.HardwareSizeInt.Production>
<param.HardwareSizeLong.Production>64</param.HardwareSizeLong.Production>
<param.HardwareSizeLongLong.Production>64</param.HardwareSizeLongLong.Production>
<param.HardwareSizeFloat.Production>32</param.HardwareSizeFloat.Production>
<param.HardwareSizeDouble.Production>64</param.HardwareSizeDouble.Production>
<param.HardwareSizeWord.Production>64</param.HardwareSizeWord.Production>
<param.HardwareSizePointer.Production>64</param.HardwareSizePointer.Production>
<param.HardwareSizeSizeT.Production>64</param.HardwareSizeSizeT.Production>
<param.HardwareSizePtrDiffT.Production>64</param.HardwareSizePtrDiffT.Production>
<param.HardwareEndianness.Production>option.HardwareEndianness.Little</param.HardwareEndianness.Production>
<param.HardwareArithmeticRightShift.Production>true</param.HardwareArithmeticRightShift.Production>
<param.HardwareLongLongMode.Production>true</param.HardwareLongLongMode.Production>
<param.HardwareAtomicIntegerSize.Production>option.HardwareAtomicIntegerSize.Char</param.HardwareAtomicIntegerSize.Production>
<param.HardwareAtomicFloatSize.Production>option.HardwareAtomicFloatSize.None</param.HardwareAtomicFloatSize.Production>
<param.HardwareDivisionRounding.Production>option.HardwareDivisionRounding.Zero</param.HardwareDivisionRounding.Production>
<param.HardwareVendor.Target>Generic</param.HardwareVendor.Target>
<param.HardwareType.Target>MATLAB Host Computer</param.HardwareType.Target>
<param.HWDeviceType.Target />
<var.instance.enabled.Target>false</var.instance.enabled.Target>
<param.HardwareSizeChar.Target>8</param.HardwareSizeChar.Target>
<param.HardwareSizeShort.Target>16</param.HardwareSizeShort.Target>
<param.HardwareSizeInt.Target>32</param.HardwareSizeInt.Target>
<param.HardwareSizeLong.Target>64</param.HardwareSizeLong.Target>
<param.HardwareSizeLongLong.Target>64</param.HardwareSizeLongLong.Target>
<param.HardwareSizeFloat.Target>32</param.HardwareSizeFloat.Target>
<param.HardwareSizeDouble.Target>64</param.HardwareSizeDouble.Target>
<param.HardwareSizeWord.Target>64</param.HardwareSizeWord.Target>
<param.HardwareSizePointer.Target>64</param.HardwareSizePointer.Target>
<param.HardwareSizeSizeT.Target>64</param.HardwareSizeSizeT.Target>
<param.HardwareSizePtrDiffT.Target>64</param.HardwareSizePtrDiffT.Target>
<param.HardwareEndianness.Target>option.HardwareEndianness.Little</param.HardwareEndianness.Target>
<param.HardwareArithmeticRightShift.Target>true</param.HardwareArithmeticRightShift.Target>
<param.HardwareLongLongMode.Target>true</param.HardwareLongLongMode.Target>
<param.HardwareAtomicIntegerSize.Target>option.HardwareAtomicIntegerSize.Char</param.HardwareAtomicIntegerSize.Target>
<param.HardwareAtomicFloatSize.Target>option.HardwareAtomicFloatSize.None</param.HardwareAtomicFloatSize.Target>
<param.HardwareDivisionRounding.Target>option.HardwareDivisionRounding.Zero</param.HardwareDivisionRounding.Target>
<param.CastingMode />
<param.IndentStyle />
<param.IndentSize />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.IncludeTerminateFcn />
<param.GenerateExampleMain />
<param.PreserveVariableNames />
<param.TargetLang />
<param.CCompilerOptimization />
<param.CCompilerCustomOptimizations />
<param.GenerateMakefile />
<param.BuildToolEnable />
<param.MakeCommand />
<param.TemplateMakefile />
<param.BuildToolConfiguration />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableStrengthReduction />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.PassStructByReference />
<param.CustomLAPACKCallback />
<param.UseECoderFeatures />
<unset>
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.SaturateOnIntegerOverflow />
<param.PurelyIntegerCode />
<param.SupportNonFinite />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.MultiInstanceCode />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.CommentStyle />
<param.MATLABSourceComments />
<param.MATLABFcnDesc />
<param.DataTypeReplacement />
<param.ConvertIfToSwitch />
<param.PreserveExternInFcnDecls />
<param.EnableSignedLeftShifts />
<param.EnableSignedRightShifts />
<param.ParenthesesLevel />
<param.MaxIdLength />
<param.CustomSymbolStrGlobalVar />
<param.CustomSymbolStrType />
<param.CustomSymbolStrField />
<param.CustomSymbolStrFcn />
<param.CustomSymbolStrTmpVar />
<param.CustomSymbolStrMacro />
<param.CustomSymbolStrEMXArray />
<param.CustomSymbolStrEMXArrayFcn />
<param.ReservedNameArray />
<param.RuntimeChecks />
<param.Verbose />
<param.GenerateReport />
<param.GenerateCodeMetricsReport />
<param.GenerateCodeReplacementReport />
<param.HighlightPotentialDataTypeIssues />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.SILDebugging />
<param.CodeExecutionProfiling />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.RanPilSilVerification />
<param.VerificationMode />
<param.VerificationStatus />
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.TargetLangStandard />
<param.CodeReplacementLibrary />
<param.DeprecatedCRLFlag />
<param.SameHardware />
<param.Toolchain />
<param.BuildConfiguration />
<param.CustomToolchainOptions />
<var.ToolchainSettingsVisible />
<param.target.Data />
<param.target.ActiveType />
<param.target.ActiveTarget />
<param.HardwareVendor.Production />
<param.HardwareType.Production />
<param.HWDeviceType.Production />
<var.instance.enabled.Production />
<param.HardwareSizeChar.Production />
<param.HardwareSizeShort.Production />
<param.HardwareSizeInt.Production />
<param.HardwareSizeLongLong.Production />
<param.HardwareSizeFloat.Production />
<param.HardwareSizeDouble.Production />
<param.HardwareEndianness.Production />
<param.HardwareAtomicIntegerSize.Production />
<param.HardwareAtomicFloatSize.Production />
<param.HardwareVendor.Target />
<param.HardwareType.Target />
<param.HWDeviceType.Target />
<var.instance.enabled.Target />
<param.HardwareSizeChar.Target />
<param.HardwareSizeShort.Target />
<param.HardwareSizeInt.Target />
<param.HardwareSizeLongLong.Target />
<param.HardwareSizeFloat.Target />
<param.HardwareSizeDouble.Target />
<param.HardwareEndianness.Target />
<param.HardwareAtomicIntegerSize.Target />
<param.HardwareAtomicFloatSize.Target />
<param.CastingMode />
<param.IndentStyle />
<param.IndentSize />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.IncludeTerminateFcn />
<param.GenerateExampleMain />
<param.PreserveVariableNames />
<param.TargetLang />
<param.CCompilerOptimization />
<param.CCompilerCustomOptimizations />
<param.GenerateMakefile />
<param.BuildToolEnable />
<param.MakeCommand />
<param.TemplateMakefile />
<param.BuildToolConfiguration />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableStrengthReduction />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.PassStructByReference />
<param.CustomLAPACKCallback />
<param.UseECoderFeatures />
</unset>
</profile>
<profile key="profile.hdl">
<param.hdl.Workflow />
<param.hdl.TargetLanguage />
<param.hdl.TargetPlatform />
<param.hdl.SynthesisTool />
<param.hdl.InputFrequency />
<param.hdl.TargetFrequency />
<param.hdl.IPCoreName />
<param.hdl.IPCoreVersion />
<param.hdl.AdditionalIPFiles />
<param.hdl.ExecutionMode />
<param.hdl.SynthesisToolChipFamily />
<param.hdl.SynthesisToolDeviceName />
<param.hdl.SynthesisToolPackageName />
<param.hdl.SynthesisToolSpeedValue />
<param.hdl.TargetInterface />
<param.hdl.CheckConformance />
<param.hdl.LaunchConformanceReport />
<param.hdl.GenerateEDAScripts />
<param.hdl.GenerateHDLCode />
<param.hdl.AdditionalSynthesisProjectFiles />
<param.hdl.CriticalPathSource />
<param.hdl.EmbeddedSystemTool />
<param.hdl.EmbeddedSystemProjectFolder />
<param.hdl.BitstreamBuildMode />
<param.hdl.ReferenceDesign />
<param.hdl.ReferenceDesignPath />
<param.hdl.LegacyDefaultTestFile />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.hdl.MapPersistentVarsToRAM />
<param.hdl.RAMThreshold />
<param.hdl.MapPipelineDelaysToRAM />
<param.hdl.RAMVariableNames />
<param.hdl.RegisterInputs />
<param.hdl.RegisterOutputs />
<param.hdl.DistributedPipelining />
<param.hdl.DistributedPipeliningPriority />
<param.hdl.PreserveDesignDelays />
<param.hdl.InputPipeline />
<param.hdl.OutputPipeline />
<param.hdl.PipelineVariables />
<param.hdl.ResourceSharing />
<param.hdl.ConstantMultiplierOptimization />
<param.hdl.LoopOptimization />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.hdl.VHDLFileExt />
<param.hdl.VerilogFileExt />
<param.hdl.DateComment />
<param.hdl.UserComment />
<param.hdl.ModulePrefix />
<param.hdl.PackagePostfix />
<param.hdl.EntityConflictPostfix />
<param.hdl.ReservedWordPostfix />
<param.hdl.ClockProcessPostfix />
<param.hdl.ComplexRealPostfix />
<param.hdl.ComplexImagPostfix />
<param.hdl.PipelinePostfix />
<param.hdl.EnablePrefix />
<param.hdl.InlineConfigurations />
<param.hdl.UseRisingEdge />
<param.hdl.UseMatrixTypesInHDL />
<param.hdl.HDLCompileFilePostfix />
<param.hdl.HDLCompileInit />
<param.hdl.HDLCompileVHDLCmd />
<param.hdl.HDLCompileVerilogCmd />
<param.hdl.HDLCompileTerm />
<param.hdl.HDLSimFilePostfix />
<param.hdl.HDLSimInit />
<param.hdl.HDLSimCmd />
<param.hdl.HDLSimViewWaveCmd />
<param.hdl.HDLSimTerm />
<param.hdl.HDLSynthTool />
<var.hasSynthesisToolScript />
<var.toolSpecificEDAScript />
<param.hdl.HDLSynthFilePostfix />
<param.hdl.HDLSynthInit />
<param.hdl.HDLSynthCmd />
<param.hdl.HDLSynthTerm />
<param.hdl.HDLLintTool />
<var.LintToolScript />
<var.hasHDLLintTool />
<param.hdl.HDLLintInit />
<param.hdl.HDLLintCmd />
<param.hdl.HDLLintTerm />
<param.hdl.ResetType />
<param.hdl.ResetAssertedLevel />
<param.hdl.ResetInputPort />
<param.hdl.ClockInputPort />
<param.hdl.ClockEdge />
<param.hdl.ClockEnableInputPort />
<param.hdl.Oversampling />
<param.hdl.EnableRate />
<param.hdl.InputType />
<param.hdl.OutputType />
<param.hdl.ClockEnableOutputPort />
<param.hdl.ScalarizePorts />
<param.hdl.HDLCodingStandard />
<var.HDLCodingStandard_FilterPassingRules_enable />
<var.HDLCodingStandard_DetectDuplicateNamesCheck_enable />
<var.HDLCodingStandard_HDLKeywords_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_min />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_max />
<var.HDLCodingStandard_SignalPortParamNameLength_enable />
<var.HDLCodingStandard_SignalPortParamNameLength_min />
<var.HDLCodingStandard_SignalPortParamNameLength_max />
<var.HDLCodingStandard_MinimizeVariableUsage_enable />
<var.HDLCodingStandard_InitialStatements_enable />
<var.HDLCodingStandard_IfElseChain_enable />
<var.HDLCodingStandard_IfElseChain_length />
<var.HDLCodingStandard_IfElseNesting_enable />
<var.HDLCodingStandard_IfElseNesting_depth />
<var.HDLCodingStandard_MultiplierBitWidth_enable />
<var.HDLCodingStandard_MultiplierBitWidth_width />
<var.HDLCodingStandard_NonIntegerTypes_enable />
<var.HDLCodingStandard_LineLength_enable />
<var.HDLCodingStandard_LineLength_length />
<param.hdl.GenerateCosimTestBench />
<param.hdl.CosimLogOutputs />
<param.hdl.CosimTool />
<param.hdl.CosimRunMode />
<param.hdl.SimulateCosimTestBench />
<param.hdl.CosimClockHighTime />
<param.hdl.CosimClockLowTime />
<param.hdl.CosimHoldTime />
<param.hdl.CosimClockEnableDelay />
<param.hdl.CosimResetLength />
<param.hdl.GenerateFILTestBench />
<param.hdl.FILLogOutputs />
<param.hdl.FILBoardName />
<param.hdl.FILConnection />
<param.hdl.FILBoardIPAddress />
<param.hdl.FILBoardMACAddress />
<param.hdl.FILAdditionalFiles />
<param.hdl.SimulateFILTestBench />
<var.hasTestBench />
<param.hdl.GenerateHDLTestBench />
<param.hdl.SimulateGeneratedCode />
<param.hdl.SimulationTool />
<param.hdl.TestBenchPostfix />
<param.hdl.ForceClock />
<param.hdl.ClockHighTime />
<param.hdl.ClockLowTime />
<param.hdl.HoldTime />
<param.hdl.ForceClockEnable />
<param.hdl.TestBenchClockEnableDelay />
<param.hdl.ForceReset />
<param.hdl.ResetLength />
<param.hdl.HoldInputDataBetweenSamples />
<param.hdl.InputDataInterval />
<param.hdl.InitializeTestBenchInputs />
<param.hdl.MultifileTestBench />
<param.hdl.TestBenchDataPostfix />
<param.hdl.TestReferencePostfix />
<param.hdl.UseFileIOInTestBench />
<param.hdl.IgnoreDataChecking />
<param.hdl.SimulationIterationLimit />
<param.hdl.UseFiAccelForTestBench />
<param.hdl.hdlVariables />
<param.hdl.hdlComputedVariables />
<param.hdl.InitializeBlockRAM />
<param.hdl.RAMArchitecture />
<param.hdl.PartitionFunctions />
<param.hdl.InstantiateFunctions />
<param.hdl.GenerateMLFcnBlock />
<param.hdl.GenerateXSGBlock />
<unset>
<param.hdl.Workflow />
<param.hdl.TargetLanguage />
<param.hdl.TargetPlatform />
<param.hdl.SynthesisTool />
<param.hdl.InputFrequency />
<param.hdl.TargetFrequency />
<param.hdl.IPCoreName />
<param.hdl.IPCoreVersion />
<param.hdl.AdditionalIPFiles />
<param.hdl.ExecutionMode />
<param.hdl.SynthesisToolChipFamily />
<param.hdl.SynthesisToolDeviceName />
<param.hdl.SynthesisToolPackageName />
<param.hdl.SynthesisToolSpeedValue />
<param.hdl.TargetInterface />
<param.hdl.CheckConformance />
<param.hdl.LaunchConformanceReport />
<param.hdl.GenerateEDAScripts />
<param.hdl.GenerateHDLCode />
<param.hdl.AdditionalSynthesisProjectFiles />
<param.hdl.CriticalPathSource />
<param.hdl.EmbeddedSystemTool />
<param.hdl.EmbeddedSystemProjectFolder />
<param.hdl.BitstreamBuildMode />
<param.hdl.ReferenceDesign />
<param.hdl.ReferenceDesignPath />
<param.hdl.LegacyDefaultTestFile />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.hdl.MapPersistentVarsToRAM />
<param.hdl.RAMThreshold />
<param.hdl.MapPipelineDelaysToRAM />
<param.hdl.RAMVariableNames />
<param.hdl.RegisterInputs />
<param.hdl.RegisterOutputs />
<param.hdl.DistributedPipelining />
<param.hdl.DistributedPipeliningPriority />
<param.hdl.PreserveDesignDelays />
<param.hdl.InputPipeline />
<param.hdl.OutputPipeline />
<param.hdl.PipelineVariables />
<param.hdl.ResourceSharing />
<param.hdl.ConstantMultiplierOptimization />
<param.hdl.LoopOptimization />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.hdl.VHDLFileExt />
<param.hdl.VerilogFileExt />
<param.hdl.DateComment />
<param.hdl.UserComment />
<param.hdl.ModulePrefix />
<param.hdl.PackagePostfix />
<param.hdl.EntityConflictPostfix />
<param.hdl.ReservedWordPostfix />
<param.hdl.ClockProcessPostfix />
<param.hdl.ComplexRealPostfix />
<param.hdl.ComplexImagPostfix />
<param.hdl.PipelinePostfix />
<param.hdl.EnablePrefix />
<param.hdl.InlineConfigurations />
<param.hdl.UseRisingEdge />
<param.hdl.UseMatrixTypesInHDL />
<param.hdl.HDLCompileFilePostfix />
<param.hdl.HDLCompileInit />
<param.hdl.HDLCompileVHDLCmd />
<param.hdl.HDLCompileVerilogCmd />
<param.hdl.HDLCompileTerm />
<param.hdl.HDLSimFilePostfix />
<param.hdl.HDLSimInit />
<param.hdl.HDLSimCmd />
<param.hdl.HDLSimViewWaveCmd />
<param.hdl.HDLSimTerm />
<param.hdl.HDLSynthTool />
<var.hasSynthesisToolScript />
<var.toolSpecificEDAScript />
<param.hdl.HDLSynthFilePostfix />
<param.hdl.HDLSynthInit />
<param.hdl.HDLSynthCmd />
<param.hdl.HDLSynthTerm />
<param.hdl.HDLLintTool />
<var.LintToolScript />
<var.hasHDLLintTool />
<param.hdl.HDLLintInit />
<param.hdl.HDLLintCmd />
<param.hdl.HDLLintTerm />
<param.hdl.ResetType />
<param.hdl.ResetAssertedLevel />
<param.hdl.ResetInputPort />
<param.hdl.ClockInputPort />
<param.hdl.ClockEdge />
<param.hdl.ClockEnableInputPort />
<param.hdl.Oversampling />
<param.hdl.EnableRate />
<param.hdl.InputType />
<param.hdl.OutputType />
<param.hdl.ClockEnableOutputPort />
<param.hdl.ScalarizePorts />
<param.hdl.HDLCodingStandard />
<var.HDLCodingStandard_FilterPassingRules_enable />
<var.HDLCodingStandard_DetectDuplicateNamesCheck_enable />
<var.HDLCodingStandard_HDLKeywords_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_min />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_max />
<var.HDLCodingStandard_SignalPortParamNameLength_enable />
<var.HDLCodingStandard_SignalPortParamNameLength_min />
<var.HDLCodingStandard_SignalPortParamNameLength_max />
<var.HDLCodingStandard_MinimizeVariableUsage_enable />
<var.HDLCodingStandard_InitialStatements_enable />
<var.HDLCodingStandard_IfElseChain_enable />
<var.HDLCodingStandard_IfElseChain_length />
<var.HDLCodingStandard_IfElseNesting_enable />
<var.HDLCodingStandard_IfElseNesting_depth />
<var.HDLCodingStandard_MultiplierBitWidth_enable />
<var.HDLCodingStandard_MultiplierBitWidth_width />
<var.HDLCodingStandard_NonIntegerTypes_enable />
<var.HDLCodingStandard_LineLength_enable />
<var.HDLCodingStandard_LineLength_length />
<param.hdl.GenerateCosimTestBench />
<param.hdl.CosimLogOutputs />
<param.hdl.CosimTool />
<param.hdl.CosimRunMode />
<param.hdl.SimulateCosimTestBench />
<param.hdl.CosimClockHighTime />
<param.hdl.CosimClockLowTime />
<param.hdl.CosimHoldTime />
<param.hdl.CosimClockEnableDelay />
<param.hdl.CosimResetLength />
<param.hdl.GenerateFILTestBench />
<param.hdl.FILLogOutputs />
<param.hdl.FILBoardName />
<param.hdl.FILConnection />
<param.hdl.FILBoardIPAddress />
<param.hdl.FILBoardMACAddress />
<param.hdl.FILAdditionalFiles />
<param.hdl.SimulateFILTestBench />
<var.hasTestBench />
<param.hdl.GenerateHDLTestBench />
<param.hdl.SimulateGeneratedCode />
<param.hdl.SimulationTool />
<param.hdl.TestBenchPostfix />
<param.hdl.ForceClock />
<param.hdl.ClockHighTime />
<param.hdl.ClockLowTime />
<param.hdl.HoldTime />
<param.hdl.ForceClockEnable />
<param.hdl.TestBenchClockEnableDelay />
<param.hdl.ForceReset />
<param.hdl.ResetLength />
<param.hdl.HoldInputDataBetweenSamples />
<param.hdl.InputDataInterval />
<param.hdl.InitializeTestBenchInputs />
<param.hdl.MultifileTestBench />
<param.hdl.TestBenchDataPostfix />
<param.hdl.TestReferencePostfix />
<param.hdl.UseFileIOInTestBench />
<param.hdl.IgnoreDataChecking />
<param.hdl.SimulationIterationLimit />
<param.hdl.UseFiAccelForTestBench />
<param.hdl.hdlVariables />
<param.hdl.hdlComputedVariables />
<param.hdl.InitializeBlockRAM />
<param.hdl.RAMArchitecture />
<param.hdl.PartitionFunctions />
<param.hdl.InstantiateFunctions />
<param.hdl.GenerateMLFcnBlock />
<param.hdl.GenerateXSGBlock />
</unset>
</profile>
<param.objective>option.objective.c</param.objective>
<param.WorkflowStep>inputTypes</param.WorkflowStep>
<param.TestSnippets />
<param.DefaultImportExportVariable />
<param.RowMajor />
<param.HighlightPotentialRowMajorIssues />
<param.ExternalFcnMajority />
<param.UseGlobals>option.UseGlobals.No</param.UseGlobals>
<param.outputfile>${PROJECT_ROOT}/codegen/lib/algorithm/algorithm.a</param.outputfile>
<param.version />
<param.HasECoderFeatures>true</param.HasECoderFeatures>
<param.HasGpuCoder />
<param.mex.mainhtml />
<param.grt.mainhtml />
<param.CallGeneratedCodeFromTest />
<param.AutoInferDefaultFile />
<param.AutoInferUseVariableSize />
<param.AutoInferUseUnboundedSize />
<param.AutoInferVariableSizeThreshold />
<param.AutoInferUnboundedSizeThreshold />
<param.EnableFixedPointStep />
<param.EnableScreener>true</param.EnableScreener>
<param.AnnotationChecksum />
<var.LegacyTarget />
<var.MirrorOnOpen>false</var.MirrorOnOpen>
<param.FixedPointEnabled>false</param.FixedPointEnabled>
<var.redirectedInputTypeData />
<var.DismissScreener>true</var.DismissScreener>
<param.unifiedParamStorage />
<var.gc.lastOutputRoot />
<var.gc.lastOutputType />
<var.gc.preBuildChecksum />
<var.cfi.lastOutputRoot />
<var.cfi.preBuildChecksum />
<var.outdatedOnRestore />
<var.lastUserSourceChecksum />
<var.sourceSetState>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;sourceModel&gt;&lt;primarySourceFiles&gt;&lt;file&gt;/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/algorithm.m&lt;/file&gt;&lt;/primarySourceFiles&gt;&lt;fixedPointSourceFiles/&gt;&lt;fixedPointSourceRegistered&gt;false&lt;/fixedPointSourceRegistered&gt;&lt;fixedPointSourceSelected&gt;false&lt;/fixedPointSourceSelected&gt;&lt;/sourceModel&gt;</var.sourceSetState>
<param.forceMexBuild>false</param.forceMexBuild>
<param.configImportActive>false</param.configImportActive>
<var.boundToGui>true</var.boundToGui>
<param.mex.outputfile>algorithm_mex</param.mex.outputfile>
<param.grt.outputfile>algorithm</param.grt.outputfile>
<param.artifact>option.target.artifact.lib</param.artifact>
<param.outputfile>${PROJECT_ROOT}/codegen/lib/algorithm/algorithm.a</param.outputfile>
<param.EnableAutoExtrinsicCalls />
<param.UsePreconditions>false</param.UsePreconditions>
<param.FeatureFlags />
<param.FixedPointMode>option.FixedPointMode.None</param.FixedPointMode>
<param.AutoScaleLoopIndexVariables />
<param.ComputedFixedPointData />
<param.UserFixedPointData />
<param.DefaultWordLength />
<param.DefaultFractionLength />
<param.FixedPointSafetyMargin />
<param.FixedPointFimath />
<param.FixedPointTypeSource />
<param.StaticAnalysisTimeout />
<param.StaticAnalysisGlobalRangesOnly />
<param.LogAllIOValues />
<param.DetectOverflows />
<param.LogHistogram />
<param.ShowCoverage />
<param.ExcludedFixedPointVerificationFiles />
<param.ExcludedFixedPointSimulationFiles />
<param.InstrumentedBuildChecksum />
<param.FixedPointStaticAnalysisChecksum />
<param.InstrumentedMexFile />
<param.FixedPointValidationChecksum />
<param.FixedPointSourceCodeChecksum />
<param.FixedPointFunctionReplacements />
<param.OptimizeWholeNumbers />
<param.ContainerTypes />
<param.GeneratedFixedPointFileSuffix>_fixpt</param.GeneratedFixedPointFileSuffix>
<param.PlotFunction />
<param.SDIPlot />
<param.EnableCodeEfficiencyChecks />
<param.DefaultFixedPointSignedness />
<param.FixedPointTypeProposalMode />
<param.EnableFixedPointStep />
<var.lastFixedPointAction />
<var.lastSimContext />
<var.lastVerifyContext />
<param.fpDataRoot />
<param.fpUserFileChecksum />
<var.snapshotChecksum />
<param.fpLastConvertChecksum />
<var.functionBlockSid />
<param.fptSignedness />
<var.FixedPointAnalysisMode />
<param.FixedPointUseDesignRanges />
<unset>
<param.objective />
<param.TestSnippets />
<param.DefaultImportExportVariable />
<param.RowMajor />
<param.HighlightPotentialRowMajorIssues />
<param.ExternalFcnMajority />
<param.UseGlobals />
<param.outputfile />
<param.version />
<param.HasECoderFeatures />
<param.HasGpuCoder />
<param.mex.mainhtml />
<param.grt.mainhtml />
<param.CallGeneratedCodeFromTest />
<param.AutoInferDefaultFile />
<param.AutoInferUseVariableSize />
<param.AutoInferUseUnboundedSize />
<param.AutoInferVariableSizeThreshold />
<param.AutoInferUnboundedSizeThreshold />
<param.EnableFixedPointStep />
<param.EnableScreener />
<param.AnnotationChecksum />
<var.LegacyTarget />
<var.MirrorOnOpen />
<param.FixedPointEnabled />
<var.redirectedInputTypeData />
<param.unifiedParamStorage />
<var.gc.lastOutputRoot />
<var.gc.lastOutputType />
<var.gc.preBuildChecksum />
<var.cfi.lastOutputRoot />
<var.cfi.preBuildChecksum />
<var.outdatedOnRestore />
<var.lastUserSourceChecksum />
<param.forceMexBuild />
<param.configImportActive />
<param.mex.outputfile />
<param.grt.outputfile />
<param.EnableAutoExtrinsicCalls />
<param.UsePreconditions />
<param.FeatureFlags />
<param.FixedPointMode />
<param.AutoScaleLoopIndexVariables />
<param.ComputedFixedPointData />
<param.UserFixedPointData />
<param.DefaultWordLength />
<param.DefaultFractionLength />
<param.FixedPointSafetyMargin />
<param.FixedPointFimath />
<param.FixedPointTypeSource />
<param.StaticAnalysisTimeout />
<param.StaticAnalysisGlobalRangesOnly />
<param.LogAllIOValues />
<param.DetectOverflows />
<param.LogHistogram />
<param.ShowCoverage />
<param.ExcludedFixedPointVerificationFiles />
<param.ExcludedFixedPointSimulationFiles />
<param.InstrumentedBuildChecksum />
<param.FixedPointStaticAnalysisChecksum />
<param.InstrumentedMexFile />
<param.FixedPointValidationChecksum />
<param.FixedPointSourceCodeChecksum />
<param.FixedPointFunctionReplacements />
<param.OptimizeWholeNumbers />
<param.ContainerTypes />
<param.GeneratedFixedPointFileSuffix />
<param.PlotFunction />
<param.SDIPlot />
<param.EnableCodeEfficiencyChecks />
<param.DefaultFixedPointSignedness />
<param.FixedPointTypeProposalMode />
<var.lastFixedPointAction />
<var.lastSimContext />
<var.lastVerifyContext />
<param.fpDataRoot />
<param.fpUserFileChecksum />
<var.snapshotChecksum />
<param.fpLastConvertChecksum />
<var.functionBlockSid />
<param.fptSignedness />
<var.FixedPointAnalysisMode />
<param.FixedPointUseDesignRanges />
</unset>
<fileset.entrypoints>
<file custom-data-expanded="false" value="${PROJECT_ROOT}/algorithm.m" />
</fileset.entrypoints>
<fileset.testbench>
<file>${PROJECT_ROOT}/barneyWellTest.mlx</file>
</fileset.testbench>
<fileset.inputtypes>
<file>${PROJECT_ROOT}/algorithm.m</file>
</fileset.inputtypes>
<build-deliverables>
<file location="${PROJECT_ROOT}/codegen/lib/algorithm" name="algorithm.a" optional="false">/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/codegen/lib/algorithm/algorithm.a</file>
</build-deliverables>
<workflow />
<matlab>
<root>/Applications/MATLAB_R2017a.app</root>
<toolboxes>
<toolbox name="matlabcoder" />
<toolbox name="embeddedcoder" />
</toolboxes>
<toolbox>
<matlabcoder>
<enabled>true</enabled>
</matlabcoder>
</toolbox>
<toolbox>
<embeddedcoder>
<enabled>true</enabled>
</embeddedcoder>
</toolbox>
</matlab>
<platform>
<unix>true</unix>
<mac>true</mac>
<windows>false</windows>
<win2k>false</win2k>
<winxp>false</winxp>
<vista>false</vista>
<linux>false</linux>
<solaris>false</solaris>
<osver>10.12.6</osver>
<os32>false</os32>
<os64>true</os64>
<arch>maci64</arch>
<matlab>true</matlab>
</platform>
</configuration>
</deployment-project>

BIN
barneyWellTest.mlx Normal file

Binary file not shown.

BIN
buildInfo.mat Normal file

Binary file not shown.

1110
html/Well.html Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

182
pocAlgorithm.m Normal file
View File

@@ -0,0 +1,182 @@
%% computeLoadPositionStatus Function
function [pumpPosition, pumpLoad, status, topPosArray, topLoadArray, ...
count] = pocAlgorithm(polishedRodPosition, lastPolishedRodPosition, ...
polishedRodLoad, count, dt, a, c, factorArray, rodLengths, lagIndex, ...
rodYMs, area, lengthRequired, centerPoint, rodWeightFluidTotal, ...
stuffingBoxFriction, force, topPosArray, topLoadArray)
pumpPosition = -1.0;
pumpLoad = -1.0;
status = -1;
loadMult = 1.0;
tapersAllowed = 1;
numTapers = length(rodLengths);
for ii = 2:lengthRequired(1)
topPosArray(1, ii-1) = topPosArray(1, ii);
topLoadArray(1, ii-1) = topLoadArray(1, ii);
end
topPosArray(1, lengthRequired(1)) = -1.0 * polishedRodPosition / 12.0;
if polishedRodPosition > lastPolishedRodPosition
topLoadArray(1, lengthRequired(1)) = loadMult * ...
(polishedRodLoad - rodWeightFluidTotal) - stuffingBoxFriction;
elseif polishedRodPosition < lastPolishedRodPosition
topLoadArray(1, lengthRequired(1)) = loadMult * ...
(polishedRodLoad - rodWeightFluidTotal) + stuffingBoxFriction;
else
topLoadArray(1, lengthRequired(1)) = loadMult * ...
(polishedRodLoad - rodWeightFluidTotal);
end
tap=1;
while tap <= tapersAllowed
count(tap) = count(tap) + 1;
if count(tap) >= lengthRequired(tap)
if tap+1 <= numTapers
% working our way down to the bottom of the well
for pti = 2:lengthRequired(tap+1)+1
topPosArray(tap+1, pti-1) = topPosArray(tap+1, pti);
topLoadArray(tap+1, pti-1) = topLoadArray(tap+1, pti);
end
[pumpPosition, pumpLoad] = positionLoadI(dt, a(tap), ...
c(tap), factorArray(tap), rodLengths(tap), ...
lagIndex(tap), rodYMs(tap), area(tap), ...
centerPoint(tap), topPosArray(tap,:), topLoadArray(tap,:));
status = 0;
topPosArray(tap+1, lengthRequired(tap+1)) = pumpPosition;
topLoadArray(tap+1, lengthRequired(tap+1)) = pumpLoad;
else
[position, load] = positionLoadI(dt, a(tap), ...
c(tap), factorArray(tap), rodLengths(tap), ...
lagIndex(tap), rodYMs(tap), area(tap), ...
centerPoint(tap), topPosArray(tap,:), topLoadArray(tap,:));
pumpPosition = -12.0 * position;
pumpLoad = load + force(numTapers);
status = 1;
end
count(tap) = count(tap) - 1;
tapersAllowed = tapersAllowed + 1;
if tapersAllowed > numTapers
tapersAllowed = numTapers;
end
end
tap = tap + 1;
end
end
%% Position and Load Function
% This function calculates the position and load for a given taper
function [pumpPosition, pumpLoad] = positionLoadI(dt, ai, ci, factori, ...
lengthi, lagi, yi, areai, centeri, topPosArrayI, topLoadArrayI)
% FUNCTION PARAMETERS
% dt [seconds] = amount of time between measurements
% ai [?] = a value for the specific taper
% ci [?] = damping factor for the taper
% factori [?] = factor value for the taper
% lengthi [feet] = length of the taper
% lagi [?] = lag index of the taper
% yi [?] = youngs modulus for the taper
% (SHOULD BE 7.2 * 10^6 or 30.6 * 10^6)
% areai [in^2] = annulus area of the taper
% centeri [?] = centerpoint of the taper
% topPosArrayI [] = array of position values
% topLoadArrayI [] = array of load values
iBefore = centeri - lagi;
iAfter = centeri + lagi;
%% Position Calculation
pumpPosition = exp(ci * lengthi / (2.0 * ai)) * (topPosArrayI(iAfter) + ...
factori * (topPosArrayI(iAfter+1) - topPosArrayI(iAfter)));
pumpPosition = pumpPosition + exp(-ci * lengthi / (2.0 * ai)) * ...
(topPosArrayI(iBefore) + factori * (topPosArrayI(iBefore-1) - ...
topPosArrayI(iBefore)));
pumpPosition = 0.5 * pumpPosition;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + dt / (yi * areai) * ...
(exp((-ci * (lagi - jj) * dt) / 2.0) * ...
topLoadArrayI(iBefore + jj));
end
insideIntegral = insideIntegral + 0.5 * dt /(yi * areai) * ...
(exp((-ci * lagi * dt) / 2.0) * topLoadArrayI(iBefore) + ...
exp((-ci * -lagi * dt) / 2.0) * topLoadArrayI(iAfter));
loadBefore = exp((-ci * lagi * dt) / 2.0) * topLoadArrayI(iBefore) + ...
factori * (exp((-ci * (lagi + 1) * dt) / 2.0) * topLoadArrayI(iBefore-1) - ...
exp((-ci * lagi * dt) / 2.0) * topLoadArrayI(iBefore));
loadAfter = exp((-ci * -lagi * dt) / 2.0) * topLoadArrayI(iAfter) + ...
factori * (exp((-ci * (-lagi - 1) * dt) / 2.0) * topLoadArrayI(iAfter+1) - ...
exp((-ci * -lagi * dt) / 2.0) * topLoadArrayI(iAfter));
insideIntegral = insideIntegral + 0.5 * factori * dt / (yi * areai) * ...
(loadBefore + exp((-ci * lagi * dt) / 2.0) * topLoadArrayI(iBefore));
insideIntegral = insideIntegral + 0.5 * factori * dt / (yi * areai) * ...
(loadAfter + exp((-ci * -lagi * dt) / 2.0) * topLoadArrayI(iAfter));
insideIntegral = 0.5 * ai * insideIntegral;
pumpPosition = pumpPosition + insideIntegral;
insideIntegral = 0.0;
for jj = 1:2*lagi-1
insideIntegral = insideIntegral + dt * (exp((-ci * (lagi - jj) * dt) / 2.0) * ...
topPosArrayI(iBefore+jj));
end
insideIntegral = insideIntegral + 0.5 * dt * (exp((-ci * lagi * dt) / 2.0) * ...
topPosArrayI(iBefore) + exp((-ci * -lagi * dt) / 2.0) * ...
topPosArrayI(iAfter));
loadBefore3 = exp((-ci * lagi * dt) / 2.0) * topPosArrayI(iBefore) + ...
factori * (exp((-ci * (lagi+1) * dt) / 2.0) * topPosArrayI(iBefore-1) - ...
exp((-ci * lagi * dt) / 2.0) * topPosArrayI(iBefore));
loadAfter3 = exp((-ci * -lagi * dt) / 2.0) * topPosArrayI(iAfter) + ...
factori * (exp((-ci * (-lagi-1) * dt) / 2.0) * topPosArrayI(iAfter+1) - ...
exp((-ci * -lagi * dt) / 2.0) * topPosArrayI(iAfter));
insideIntegral = insideIntegral + 0.5 * factori * dt * (loadBefore3 + ...
exp((-ci * lagi * dt) / 2.0) * topPosArrayI(iBefore));
insideIntegral = insideIntegral + 0.5 * factori * dt * (loadAfter3 + ...
exp((-ci * -lagi * dt) / 2.0) * topPosArrayI(iAfter));
insideIntegral = -(ci * lengthi / 4) * 0.5 * (ci / (2.0 * ai)) * insideIntegral;
pumpPosition = pumpPosition + insideIntegral;
%% Load Calculation
pumpLoad = 0.5 * (ai / (yi * areai)) * (1 / ai) * (loadBefore + loadAfter);
pumpLoad = pumpLoad - (ci * lengthi / 4) * (0.5 * (ci / (2.0 * ai))) * (1 / ai) * ...
(loadBefore3 + loadAfter3);
ptAfter = (topPosArrayI(iAfter+1) - topPosArrayI(iAfter-1)) / (2.0 * dt);
ptBefore = (topPosArrayI(iBefore+1) - topPosArrayI(iBefore-1)) / (2.0 * dt);
firstPart = (exp((ci * lengthi) / (2.0 * ai)) * ptAfter - exp((-ci * lengthi) / ...
(2.0 * ai)) * ptBefore) / (2.0 * ai);
firstPart = firstPart + (ci * exp((ci * lengthi) / (2.0 * ai)) * ...
topPosArrayI(iAfter) - ci * exp((-ci * lengthi) / (2.0 * ai)) * ...
topPosArrayI(iBefore)) / (4 * ai);
pumpLoad = yi * areai * (firstPart + pumpLoad);
end

1002
pocAlgorithm.prj Normal file

File diff suppressed because it is too large Load Diff

BIN
pocAlgorithm_mex.mexmaci64 Normal file

Binary file not shown.

BIN
pocAlgorithm_pkg.zip Normal file

Binary file not shown.

16
test.m
View File

@@ -1,16 +0,0 @@
malletData = csvread('mallet.csv');
mallet = Well("Mallet", true(1));
figure;
for loops = 1:6
for i = 2:size(malletData,1)
mallet.evalSim(malletData(i,1), malletData(i,2));
end
end
% mallet.currentCard.calcStrokeData(100, mallet.fluidGradient, mallet.rodDepthTotal, ...
% mallet.tubingAnchorDepth, mallet.tubingCrossSectionalArea, ...
% mallet.pumpArea, mallet.frictionEstimate, ...
% mallet.structuralRating, mallet.kFactor, mallet.waterBblRatio, mallet.oilBblRatio, ...
% mallet.gasMcfRatio)

207
wellSetup.m Normal file
View File

@@ -0,0 +1,207 @@
%% Well Setup Function
function wellParams = wellSetup(...
dt, ...
rodLengths, ...
rodDiameters, ...
rodMaterials, ...
rodDampingFactors, ...
tubingHeadPressure, ...
stuffingBoxFriction, ...
fluidGradient, ...
pumpDiameter,...
tubingOuterDiameter, ...
tubingInnerDiameter, ...
tubingAnchorDepth, ...
structuralRating)
% FUNCTION PARAMETERS
% dt
% rodLengths
% rodDiameters
% rodMaterials
% tubingHeadPressure
% pumpDiameter
% tubingOuterDiameter
% tubingInnerDiameter
wellParams = struct();
wellParams.dt = dt;
wellParams.rodLengths = rodLengths;
wellParams.rodDiameters = rodDiameters;
wellParams.rodMaterials = rodMaterials;
wellParams.rodDampingFactors = rodDampingFactors;
wellParams.tubingHeadPressure = tubingHeadPressure;
wellParams.stuffingBoxFriction = stuffingBoxFriction;
wellParams.fluidGradient = fluidGradient;
wellParams.pumpDiameter = pumpDiameter;
wellParams.tubingOuterDiameter = tubingOuterDiameter;
wellParams.tubingInnerDiameter = tubingInnerDiameter;
wellParams.tubingAnchorDepth = tubingAnchorDepth;
wellParams.structuralRating = structuralRating;
numTapers = length(rodLengths);
wellParams.numTapers = numTapers;
wellParams.tubingCrossSectionalArea = (pi / 4) * ...
(power(tubingOuterDiameter, 2) - ...
power(tubingInnerDiameter,2));
wellParams.pumpArea = power(pumpDiameter, 2) * pi;
% Calculated Taper Parameters
area = zeros(1, numTapers+1);
a = zeros(1, numTapers);
pressure = zeros(1, numTapers);
rodYMs = zeros(1, numTapers);
rodWeightPerFoots = zeros(1, numTapers);
force = zeros(1, numTapers);
alpha = zeros(1, numTapers);
stretch = zeros(1, numTapers);
xOverA = zeros(1, numTapers);
lagIndex = zeros(1, numTapers, 'uint16');
factorArray = zeros(1, numTapers);
centerPoint = zeros(1, numTapers, 'uint16');
lengthRequired = zeros(1, numTapers, 'uint16');
% Calculated Rod String Totals
rodDepthTotal = 0.0;
buoyantForceTotal = 0.0;
rodWeightAirTotal = 0.0;
for i = 1:numTapers
area(i) = pi / 4 * power(rodDiameters(i), 2);
if lower(rodMaterials(i)) == "fiberglass"
rodYMs(i) = 7.2;
else
rodYMs(i) = 30.5;
end
rodWeightPerFoots(i) = lookupRodWeightPerFoot(rodYMs(i), ...
rodDiameters(i));
end
wellParams.area = area;
wellParams.rodYMs = rodYMs;
wellParams.rodWeightPerFoots = rodWeightPerFoots;
for i = 1:numTapers
a(i) = 1000.0 * sqrt(32.2 * rodYMs(i) * area(i) / rodWeightPerFoots(i));
rodDepthTotal = rodDepthTotal + rodLengths(i);
if i > 1
pressure(i) = pressure(i - 1) + fluidGradient * rodLengths(i);
else
pressure(i) = tubingHeadPressure + fluidGradient * rodLengths(i);
end
buoyantForceTotal = buoyantForceTotal + pressure(i) * (area(i+1) - area(i));
rodWeightAirTotal = rodWeightAirTotal + rodWeightPerFoots(i) * rodLengths(i);
rodWeightFluidTotal = rodWeightAirTotal + buoyantForceTotal;
end
wellParams.a = a;
wellParams.rodDepthTotal = rodDepthTotal;
wellParams.pressure = pressure;
wellParams.buoyantForceTotal = buoyantForceTotal;
wellParams.rodWeightAirTotal = rodWeightAirTotal;
wellParams.rodWeightFluidTotal = rodWeightFluidTotal;
for j = 1:numTapers
weightData = 0.0;
annularForceData = 0.0;
for i = j+1:numTapers
weightData = weightData + rodWeightPerFoots(i) * rodLengths(i);
end
for i = j:numTapers-1
annularForceData = annularForceData + pressure(i) * (area(i) - area(i+1));
end
force(j) = (-area(numTapers) * pressure(numTapers)) + weightData - annularForceData;
alpha(j) = (force(j) + rodWeightPerFoots(j) * rodLengths(j)) / (rodYMs(j) * power(10, 6) * area(j));
if j > 1
stretch(j) = stretch(j - 1) + alpha(j) * rodLengths(j) - ...
(rodWeightPerFoots(j) * power(rodLengths(j), 2.0)) / ...
(2.0 * rodYMs(j) * power(10, 6) * area(j));
else
stretch(j) = 0.0 + alpha(j) * rodLengths(j) - ...
(rodWeightPerFoots(j) * power(rodLengths(j), 2.0)) / ...
(2.0 * rodYMs(j) * power(10, 6) * area(j));
end
end
wellParams.force = force;
wellParams.alpha = alpha;
wellParams.stretch = stretch;
for i = 1:numTapers
xOverA(i) = rodLengths(i) / a(i);
lagIndex(i) = floor(rodLengths(i) / (a(i) * dt));
factorArray(i) = (xOverA(i) - double(lagIndex(i)) * dt) / dt;
centerPoint(i) = lagIndex(i) + 2;
lengthRequired(i) = 2 * (lagIndex(i) + 1) + 1;
end
wellParams.xOverA = xOverA;
wellParams.lagIndex = lagIndex;
wellParams.factorArray = factorArray;
wellParams.centerPoint = centerPoint;
wellParams.lengthRequired = lengthRequired;
frictionEstimate = rodDepthTotal * 0.10;
wellParams.frictionEstimate = frictionEstimate;
end
%% Determines Rod Weight Per Foot given Young's Modulus and Diameter
function wtPerFt = lookupRodWeightPerFoot(i_ym, i_diam)
YM_STEEL=30.5;
YM_FIBERGLASS=7.2;
wtPerFt = -1;
if (i_ym == YM_STEEL)
if (i_diam <= 2 && i_diam > 1.75)
wtPerFt = 10.7;
elseif (i_diam <= 1.75 && i_diam > 1.65)
wtPerFt = 8.2;
elseif (i_diam <= 1.65 && i_diam > 1.5)
wtPerFt = 7;
elseif (i_diam <= 1.5 && i_diam > 1.375)
wtPerFt = 6;
elseif (i_diam <= 1.375 && i_diam > 1.125)
wtPerFt = 5;
elseif (i_diam <= 1.125 && i_diam > 1)
wtPerFt = 3.676;
elseif (i_diam <= 1 && i_diam > 0.875)
wtPerFt = 2.904;
elseif (i_diam <= 0.875 && i_diam > 0.75)
wtPerFt = 2.224;
elseif (i_diam <= 0.75 && i_diam > 0.625)
wtPerFt = 1.634;
elseif (i_diam <= 0.625 && i_diam > 0.5)
wtPerFt = 1.13;
elseif (i_diam <= 0.5)
wtPerFt = 0.72;
else
wtPerFt = 0;
end
elseif (i_ym == YM_FIBERGLASS)
if (i_diam <= 1.25 && i_diam > 1.125)
wtPerFt = 1.2879;
elseif (i_diam <= 1.125 && i_diam > 1)
wtPerFt = 1.09;
elseif (i_diam <= 1 && i_diam > 0.875)
wtPerFt = 0.8188;
elseif (i_diam <= 0.875 && i_diam > 0.75)
wtPerFt = 0.6108;
elseif (i_diam <= 0.75)
wtPerFt = 0.484;
else
wtPerFt = 0;
end
end
end

947
wellSetup.prj Normal file
View File

@@ -0,0 +1,947 @@
<deployment-project plugin="plugin.coder" plugin-version="R2016a">
<configuration file="/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/wellSetup.prj" location="/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab" name="wellSetup" target="target.unifiedcoder" target-name="MATLAB Coder">
<profile key="profile.mex">
<param.BuiltInstrumentedMex />
<param.RanInstrumentedMex />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.ResponsivenessChecks />
<param.ExtrinsicCalls />
<param.IntegrityChecks />
<param.SaturateOnIntegerOverflow />
<param.GlobalDataSyncMethod />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.ReservedNameArray />
<param.EnableDebugging />
<param.GenerateReport />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.VerificationMode />
<param.VerificationStatus>option.VerificationStatus.Inactive</param.VerificationStatus>
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.mex.GenCodeOnly />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.PreserveVariableNames />
<param.TargetLang />
<param.EchoExpressions />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.ConstantInputs />
<param.EnableCRICodeCoverage>true</param.EnableCRICodeCoverage>
<param.EnableJIT />
<param.EnableJITSilentBailOut />
<param.CheckForIssuesJIT />
<unset>
<param.BuiltInstrumentedMex />
<param.RanInstrumentedMex />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.ResponsivenessChecks />
<param.ExtrinsicCalls />
<param.IntegrityChecks />
<param.SaturateOnIntegerOverflow />
<param.GlobalDataSyncMethod />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.ReservedNameArray />
<param.EnableDebugging />
<param.GenerateReport />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.VerificationMode />
<param.VerificationStatus />
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.mex.GenCodeOnly />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.PreserveVariableNames />
<param.TargetLang />
<param.EchoExpressions />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.ConstantInputs />
<param.EnableCRICodeCoverage />
<param.EnableJIT />
<param.EnableJITSilentBailOut />
<param.CheckForIssuesJIT />
</unset>
</profile>
<profile key="profile.c">
<param.grt.GenCodeOnly>true</param.grt.GenCodeOnly>
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.SaturateOnIntegerOverflow />
<param.PurelyIntegerCode />
<param.SupportNonFinite />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.MultiInstanceCode />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.CommentStyle />
<param.MATLABSourceComments />
<param.MATLABFcnDesc />
<param.DataTypeReplacement />
<param.ConvertIfToSwitch />
<param.PreserveExternInFcnDecls />
<param.EnableSignedLeftShifts />
<param.EnableSignedRightShifts />
<param.ParenthesesLevel />
<param.MaxIdLength />
<param.CustomSymbolStrGlobalVar />
<param.CustomSymbolStrType />
<param.CustomSymbolStrField />
<param.CustomSymbolStrFcn />
<param.CustomSymbolStrTmpVar />
<param.CustomSymbolStrMacro />
<param.CustomSymbolStrEMXArray />
<param.CustomSymbolStrEMXArrayFcn />
<param.ReservedNameArray />
<param.RuntimeChecks />
<param.Verbose />
<param.GenerateReport />
<param.GenerateCodeMetricsReport />
<param.GenerateCodeReplacementReport />
<param.HighlightPotentialDataTypeIssues />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.SILDebugging />
<param.CodeExecutionProfiling />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.RanPilSilVerification />
<param.VerificationMode />
<param.VerificationStatus>option.VerificationStatus.Inactive</param.VerificationStatus>
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.TargetLangStandard />
<param.CodeReplacementLibrary />
<param.DeprecatedCRLFlag />
<param.SameHardware>true</param.SameHardware>
<param.Toolchain />
<param.BuildConfiguration />
<param.CustomToolchainOptions />
<var.ToolchainSettingsVisible />
<param.target.Data />
<param.target.ActiveType>option.target.TargetType.MatlabHost</param.target.ActiveType>
<param.target.ActiveTarget />
<param.HardwareVendor.Production>Generic</param.HardwareVendor.Production>
<param.HardwareType.Production>MATLAB Host Computer</param.HardwareType.Production>
<param.HWDeviceType.Production />
<var.instance.enabled.Production />
<param.HardwareSizeChar.Production>8</param.HardwareSizeChar.Production>
<param.HardwareSizeShort.Production>16</param.HardwareSizeShort.Production>
<param.HardwareSizeInt.Production>32</param.HardwareSizeInt.Production>
<param.HardwareSizeLong.Production>64</param.HardwareSizeLong.Production>
<param.HardwareSizeLongLong.Production>64</param.HardwareSizeLongLong.Production>
<param.HardwareSizeFloat.Production>32</param.HardwareSizeFloat.Production>
<param.HardwareSizeDouble.Production>64</param.HardwareSizeDouble.Production>
<param.HardwareSizeWord.Production>64</param.HardwareSizeWord.Production>
<param.HardwareSizePointer.Production>64</param.HardwareSizePointer.Production>
<param.HardwareSizeSizeT.Production>64</param.HardwareSizeSizeT.Production>
<param.HardwareSizePtrDiffT.Production>64</param.HardwareSizePtrDiffT.Production>
<param.HardwareEndianness.Production>option.HardwareEndianness.Little</param.HardwareEndianness.Production>
<param.HardwareArithmeticRightShift.Production>true</param.HardwareArithmeticRightShift.Production>
<param.HardwareLongLongMode.Production>true</param.HardwareLongLongMode.Production>
<param.HardwareAtomicIntegerSize.Production>option.HardwareAtomicIntegerSize.Char</param.HardwareAtomicIntegerSize.Production>
<param.HardwareAtomicFloatSize.Production>option.HardwareAtomicFloatSize.None</param.HardwareAtomicFloatSize.Production>
<param.HardwareDivisionRounding.Production>option.HardwareDivisionRounding.Zero</param.HardwareDivisionRounding.Production>
<param.HardwareVendor.Target>Generic</param.HardwareVendor.Target>
<param.HardwareType.Target>MATLAB Host Computer</param.HardwareType.Target>
<param.HWDeviceType.Target />
<var.instance.enabled.Target>false</var.instance.enabled.Target>
<param.HardwareSizeChar.Target>8</param.HardwareSizeChar.Target>
<param.HardwareSizeShort.Target>16</param.HardwareSizeShort.Target>
<param.HardwareSizeInt.Target>32</param.HardwareSizeInt.Target>
<param.HardwareSizeLong.Target>64</param.HardwareSizeLong.Target>
<param.HardwareSizeLongLong.Target>64</param.HardwareSizeLongLong.Target>
<param.HardwareSizeFloat.Target>32</param.HardwareSizeFloat.Target>
<param.HardwareSizeDouble.Target>64</param.HardwareSizeDouble.Target>
<param.HardwareSizeWord.Target>64</param.HardwareSizeWord.Target>
<param.HardwareSizePointer.Target>64</param.HardwareSizePointer.Target>
<param.HardwareSizeSizeT.Target>64</param.HardwareSizeSizeT.Target>
<param.HardwareSizePtrDiffT.Target>64</param.HardwareSizePtrDiffT.Target>
<param.HardwareEndianness.Target>option.HardwareEndianness.Little</param.HardwareEndianness.Target>
<param.HardwareArithmeticRightShift.Target>true</param.HardwareArithmeticRightShift.Target>
<param.HardwareLongLongMode.Target>true</param.HardwareLongLongMode.Target>
<param.HardwareAtomicIntegerSize.Target>option.HardwareAtomicIntegerSize.Char</param.HardwareAtomicIntegerSize.Target>
<param.HardwareAtomicFloatSize.Target>option.HardwareAtomicFloatSize.None</param.HardwareAtomicFloatSize.Target>
<param.HardwareDivisionRounding.Target>option.HardwareDivisionRounding.Zero</param.HardwareDivisionRounding.Target>
<param.CastingMode />
<param.IndentStyle />
<param.IndentSize />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.IncludeTerminateFcn />
<param.GenerateExampleMain />
<param.PreserveVariableNames />
<param.TargetLang />
<param.CCompilerOptimization />
<param.CCompilerCustomOptimizations />
<param.GenerateMakefile />
<param.BuildToolEnable />
<param.MakeCommand />
<param.TemplateMakefile />
<param.BuildToolConfiguration />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableStrengthReduction />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.PassStructByReference />
<param.CustomLAPACKCallback />
<param.UseECoderFeatures />
<unset>
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.SaturateOnIntegerOverflow />
<param.PurelyIntegerCode />
<param.SupportNonFinite />
<param.EnableVariableSizing />
<param.DynamicMemoryAllocation />
<param.DynamicMemoryAllocationThreshold />
<param.StackUsageMax />
<param.MultiInstanceCode />
<param.FilePartitionMethod />
<param.GenerateComments />
<param.CommentStyle />
<param.MATLABSourceComments />
<param.MATLABFcnDesc />
<param.DataTypeReplacement />
<param.ConvertIfToSwitch />
<param.PreserveExternInFcnDecls />
<param.EnableSignedLeftShifts />
<param.EnableSignedRightShifts />
<param.ParenthesesLevel />
<param.MaxIdLength />
<param.CustomSymbolStrGlobalVar />
<param.CustomSymbolStrType />
<param.CustomSymbolStrField />
<param.CustomSymbolStrFcn />
<param.CustomSymbolStrTmpVar />
<param.CustomSymbolStrMacro />
<param.CustomSymbolStrEMXArray />
<param.CustomSymbolStrEMXArrayFcn />
<param.ReservedNameArray />
<param.RuntimeChecks />
<param.Verbose />
<param.GenerateReport />
<param.GenerateCodeMetricsReport />
<param.GenerateCodeReplacementReport />
<param.HighlightPotentialDataTypeIssues />
<param.LaunchReport />
<param.ReportPotentialDifferences />
<param.SILDebugging />
<param.CodeExecutionProfiling />
<param.DefaultTestFile />
<param.MergeInstrumentationResults />
<param.RanPilSilVerification />
<param.VerificationMode />
<param.VerificationStatus />
<param.CustomSourceCode />
<param.CustomHeaderCode />
<param.CustomInitializer />
<param.CustomTerminator />
<param.CustomInclude />
<param.CustomSource />
<param.CustomLibrary />
<param.PostCodeGenCommand />
<param.TargetLangStandard />
<param.CodeReplacementLibrary />
<param.DeprecatedCRLFlag />
<param.SameHardware />
<param.Toolchain />
<param.BuildConfiguration />
<param.CustomToolchainOptions />
<var.ToolchainSettingsVisible />
<param.target.Data />
<param.target.ActiveType />
<param.target.ActiveTarget />
<param.HardwareVendor.Production />
<param.HardwareType.Production />
<param.HWDeviceType.Production />
<var.instance.enabled.Production />
<param.HardwareSizeChar.Production />
<param.HardwareSizeShort.Production />
<param.HardwareSizeInt.Production />
<param.HardwareSizeLongLong.Production />
<param.HardwareSizeFloat.Production />
<param.HardwareSizeDouble.Production />
<param.HardwareEndianness.Production />
<param.HardwareAtomicIntegerSize.Production />
<param.HardwareAtomicFloatSize.Production />
<param.HardwareVendor.Target />
<param.HardwareType.Target />
<param.HWDeviceType.Target />
<var.instance.enabled.Target />
<param.HardwareSizeChar.Target />
<param.HardwareSizeShort.Target />
<param.HardwareSizeInt.Target />
<param.HardwareSizeLongLong.Target />
<param.HardwareSizeFloat.Target />
<param.HardwareSizeDouble.Target />
<param.HardwareEndianness.Target />
<param.HardwareAtomicIntegerSize.Target />
<param.HardwareAtomicFloatSize.Target />
<param.CastingMode />
<param.IndentStyle />
<param.IndentSize />
<param.ConstantFoldingTimeout />
<param.CompileTimeRecursionLimit />
<param.EnableRuntimeRecursion />
<param.IncludeTerminateFcn />
<param.GenerateExampleMain />
<param.PreserveVariableNames />
<param.TargetLang />
<param.CCompilerOptimization />
<param.CCompilerCustomOptimizations />
<param.GenerateMakefile />
<param.BuildToolEnable />
<param.MakeCommand />
<param.TemplateMakefile />
<param.BuildToolConfiguration />
<param.InlineThreshold />
<param.InlineThresholdMax />
<param.InlineStackLimit />
<param.EnableStrengthReduction />
<param.EnableMemcpy />
<param.MemcpyThreshold />
<param.EnableOpenMP />
<param.InitFltsAndDblsToZero />
<param.PassStructByReference />
<param.CustomLAPACKCallback />
<param.UseECoderFeatures />
</unset>
</profile>
<profile key="profile.hdl">
<param.hdl.Workflow />
<param.hdl.TargetLanguage />
<param.hdl.TargetPlatform />
<param.hdl.SynthesisTool />
<param.hdl.InputFrequency />
<param.hdl.TargetFrequency />
<param.hdl.IPCoreName />
<param.hdl.IPCoreVersion />
<param.hdl.AdditionalIPFiles />
<param.hdl.ExecutionMode />
<param.hdl.SynthesisToolChipFamily />
<param.hdl.SynthesisToolDeviceName />
<param.hdl.SynthesisToolPackageName />
<param.hdl.SynthesisToolSpeedValue />
<param.hdl.TargetInterface />
<param.hdl.CheckConformance />
<param.hdl.LaunchConformanceReport />
<param.hdl.GenerateEDAScripts />
<param.hdl.GenerateHDLCode />
<param.hdl.AdditionalSynthesisProjectFiles />
<param.hdl.CriticalPathSource />
<param.hdl.EmbeddedSystemTool />
<param.hdl.EmbeddedSystemProjectFolder />
<param.hdl.BitstreamBuildMode />
<param.hdl.ReferenceDesign />
<param.hdl.ReferenceDesignPath />
<param.hdl.LegacyDefaultTestFile />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder>option.BuildFolder.Project</param.BuildFolder>
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.hdl.MapPersistentVarsToRAM />
<param.hdl.RAMThreshold />
<param.hdl.MapPipelineDelaysToRAM />
<param.hdl.RAMVariableNames />
<param.hdl.RegisterInputs />
<param.hdl.RegisterOutputs />
<param.hdl.DistributedPipelining />
<param.hdl.DistributedPipeliningPriority />
<param.hdl.PreserveDesignDelays />
<param.hdl.InputPipeline />
<param.hdl.OutputPipeline />
<param.hdl.PipelineVariables />
<param.hdl.ResourceSharing />
<param.hdl.ConstantMultiplierOptimization />
<param.hdl.LoopOptimization />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.hdl.VHDLFileExt />
<param.hdl.VerilogFileExt />
<param.hdl.DateComment />
<param.hdl.UserComment />
<param.hdl.ModulePrefix />
<param.hdl.PackagePostfix />
<param.hdl.EntityConflictPostfix />
<param.hdl.ReservedWordPostfix />
<param.hdl.ClockProcessPostfix />
<param.hdl.ComplexRealPostfix />
<param.hdl.ComplexImagPostfix />
<param.hdl.PipelinePostfix />
<param.hdl.EnablePrefix />
<param.hdl.InlineConfigurations />
<param.hdl.UseRisingEdge />
<param.hdl.UseMatrixTypesInHDL />
<param.hdl.HDLCompileFilePostfix />
<param.hdl.HDLCompileInit />
<param.hdl.HDLCompileVHDLCmd />
<param.hdl.HDLCompileVerilogCmd />
<param.hdl.HDLCompileTerm />
<param.hdl.HDLSimFilePostfix />
<param.hdl.HDLSimInit />
<param.hdl.HDLSimCmd />
<param.hdl.HDLSimViewWaveCmd />
<param.hdl.HDLSimTerm />
<param.hdl.HDLSynthTool />
<var.hasSynthesisToolScript />
<var.toolSpecificEDAScript />
<param.hdl.HDLSynthFilePostfix />
<param.hdl.HDLSynthInit />
<param.hdl.HDLSynthCmd />
<param.hdl.HDLSynthTerm />
<param.hdl.HDLLintTool />
<var.LintToolScript />
<var.hasHDLLintTool />
<param.hdl.HDLLintInit />
<param.hdl.HDLLintCmd />
<param.hdl.HDLLintTerm />
<param.hdl.ResetType />
<param.hdl.ResetAssertedLevel />
<param.hdl.ResetInputPort />
<param.hdl.ClockInputPort />
<param.hdl.ClockEdge />
<param.hdl.ClockEnableInputPort />
<param.hdl.Oversampling />
<param.hdl.EnableRate />
<param.hdl.InputType />
<param.hdl.OutputType />
<param.hdl.ClockEnableOutputPort />
<param.hdl.ScalarizePorts />
<param.hdl.HDLCodingStandard />
<var.HDLCodingStandard_FilterPassingRules_enable />
<var.HDLCodingStandard_DetectDuplicateNamesCheck_enable />
<var.HDLCodingStandard_HDLKeywords_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_min />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_max />
<var.HDLCodingStandard_SignalPortParamNameLength_enable />
<var.HDLCodingStandard_SignalPortParamNameLength_min />
<var.HDLCodingStandard_SignalPortParamNameLength_max />
<var.HDLCodingStandard_MinimizeVariableUsage_enable />
<var.HDLCodingStandard_InitialStatements_enable />
<var.HDLCodingStandard_IfElseChain_enable />
<var.HDLCodingStandard_IfElseChain_length />
<var.HDLCodingStandard_IfElseNesting_enable />
<var.HDLCodingStandard_IfElseNesting_depth />
<var.HDLCodingStandard_MultiplierBitWidth_enable />
<var.HDLCodingStandard_MultiplierBitWidth_width />
<var.HDLCodingStandard_NonIntegerTypes_enable />
<var.HDLCodingStandard_LineLength_enable />
<var.HDLCodingStandard_LineLength_length />
<param.hdl.GenerateCosimTestBench />
<param.hdl.CosimLogOutputs />
<param.hdl.CosimTool />
<param.hdl.CosimRunMode />
<param.hdl.SimulateCosimTestBench />
<param.hdl.CosimClockHighTime />
<param.hdl.CosimClockLowTime />
<param.hdl.CosimHoldTime />
<param.hdl.CosimClockEnableDelay />
<param.hdl.CosimResetLength />
<param.hdl.GenerateFILTestBench />
<param.hdl.FILLogOutputs />
<param.hdl.FILBoardName />
<param.hdl.FILConnection />
<param.hdl.FILBoardIPAddress />
<param.hdl.FILBoardMACAddress />
<param.hdl.FILAdditionalFiles />
<param.hdl.SimulateFILTestBench />
<var.hasTestBench />
<param.hdl.GenerateHDLTestBench />
<param.hdl.SimulateGeneratedCode />
<param.hdl.SimulationTool />
<param.hdl.TestBenchPostfix />
<param.hdl.ForceClock />
<param.hdl.ClockHighTime />
<param.hdl.ClockLowTime />
<param.hdl.HoldTime />
<param.hdl.ForceClockEnable />
<param.hdl.TestBenchClockEnableDelay />
<param.hdl.ForceReset />
<param.hdl.ResetLength />
<param.hdl.HoldInputDataBetweenSamples />
<param.hdl.InputDataInterval />
<param.hdl.InitializeTestBenchInputs />
<param.hdl.MultifileTestBench />
<param.hdl.TestBenchDataPostfix />
<param.hdl.TestReferencePostfix />
<param.hdl.UseFileIOInTestBench />
<param.hdl.IgnoreDataChecking />
<param.hdl.SimulationIterationLimit />
<param.hdl.UseFiAccelForTestBench />
<param.hdl.hdlVariables />
<param.hdl.hdlComputedVariables />
<param.hdl.InitializeBlockRAM />
<param.hdl.RAMArchitecture />
<param.hdl.PartitionFunctions />
<param.hdl.InstantiateFunctions />
<param.hdl.GenerateMLFcnBlock />
<param.hdl.GenerateXSGBlock />
<unset>
<param.hdl.Workflow />
<param.hdl.TargetLanguage />
<param.hdl.TargetPlatform />
<param.hdl.SynthesisTool />
<param.hdl.InputFrequency />
<param.hdl.TargetFrequency />
<param.hdl.IPCoreName />
<param.hdl.IPCoreVersion />
<param.hdl.AdditionalIPFiles />
<param.hdl.ExecutionMode />
<param.hdl.SynthesisToolChipFamily />
<param.hdl.SynthesisToolDeviceName />
<param.hdl.SynthesisToolPackageName />
<param.hdl.SynthesisToolSpeedValue />
<param.hdl.TargetInterface />
<param.hdl.CheckConformance />
<param.hdl.LaunchConformanceReport />
<param.hdl.GenerateEDAScripts />
<param.hdl.GenerateHDLCode />
<param.hdl.AdditionalSynthesisProjectFiles />
<param.hdl.CriticalPathSource />
<param.hdl.EmbeddedSystemTool />
<param.hdl.EmbeddedSystemProjectFolder />
<param.hdl.BitstreamBuildMode />
<param.hdl.ReferenceDesign />
<param.hdl.ReferenceDesignPath />
<param.hdl.LegacyDefaultTestFile />
<param.WorkingFolder />
<param.SpecifiedWorkingFolder />
<param.BuildFolder />
<param.SpecifiedBuildFolder />
<param.SearchPaths />
<param.hdl.MapPersistentVarsToRAM />
<param.hdl.RAMThreshold />
<param.hdl.MapPipelineDelaysToRAM />
<param.hdl.RAMVariableNames />
<param.hdl.RegisterInputs />
<param.hdl.RegisterOutputs />
<param.hdl.DistributedPipelining />
<param.hdl.DistributedPipeliningPriority />
<param.hdl.PreserveDesignDelays />
<param.hdl.InputPipeline />
<param.hdl.OutputPipeline />
<param.hdl.PipelineVariables />
<param.hdl.ResourceSharing />
<param.hdl.ConstantMultiplierOptimization />
<param.hdl.LoopOptimization />
<param.GenerateComments />
<param.MATLABSourceComments />
<param.hdl.VHDLFileExt />
<param.hdl.VerilogFileExt />
<param.hdl.DateComment />
<param.hdl.UserComment />
<param.hdl.ModulePrefix />
<param.hdl.PackagePostfix />
<param.hdl.EntityConflictPostfix />
<param.hdl.ReservedWordPostfix />
<param.hdl.ClockProcessPostfix />
<param.hdl.ComplexRealPostfix />
<param.hdl.ComplexImagPostfix />
<param.hdl.PipelinePostfix />
<param.hdl.EnablePrefix />
<param.hdl.InlineConfigurations />
<param.hdl.UseRisingEdge />
<param.hdl.UseMatrixTypesInHDL />
<param.hdl.HDLCompileFilePostfix />
<param.hdl.HDLCompileInit />
<param.hdl.HDLCompileVHDLCmd />
<param.hdl.HDLCompileVerilogCmd />
<param.hdl.HDLCompileTerm />
<param.hdl.HDLSimFilePostfix />
<param.hdl.HDLSimInit />
<param.hdl.HDLSimCmd />
<param.hdl.HDLSimViewWaveCmd />
<param.hdl.HDLSimTerm />
<param.hdl.HDLSynthTool />
<var.hasSynthesisToolScript />
<var.toolSpecificEDAScript />
<param.hdl.HDLSynthFilePostfix />
<param.hdl.HDLSynthInit />
<param.hdl.HDLSynthCmd />
<param.hdl.HDLSynthTerm />
<param.hdl.HDLLintTool />
<var.LintToolScript />
<var.hasHDLLintTool />
<param.hdl.HDLLintInit />
<param.hdl.HDLLintCmd />
<param.hdl.HDLLintTerm />
<param.hdl.ResetType />
<param.hdl.ResetAssertedLevel />
<param.hdl.ResetInputPort />
<param.hdl.ClockInputPort />
<param.hdl.ClockEdge />
<param.hdl.ClockEnableInputPort />
<param.hdl.Oversampling />
<param.hdl.EnableRate />
<param.hdl.InputType />
<param.hdl.OutputType />
<param.hdl.ClockEnableOutputPort />
<param.hdl.ScalarizePorts />
<param.hdl.HDLCodingStandard />
<var.HDLCodingStandard_FilterPassingRules_enable />
<var.HDLCodingStandard_DetectDuplicateNamesCheck_enable />
<var.HDLCodingStandard_HDLKeywords_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_enable />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_min />
<var.HDLCodingStandard_ModuleInstanceEntityNameLength_max />
<var.HDLCodingStandard_SignalPortParamNameLength_enable />
<var.HDLCodingStandard_SignalPortParamNameLength_min />
<var.HDLCodingStandard_SignalPortParamNameLength_max />
<var.HDLCodingStandard_MinimizeVariableUsage_enable />
<var.HDLCodingStandard_InitialStatements_enable />
<var.HDLCodingStandard_IfElseChain_enable />
<var.HDLCodingStandard_IfElseChain_length />
<var.HDLCodingStandard_IfElseNesting_enable />
<var.HDLCodingStandard_IfElseNesting_depth />
<var.HDLCodingStandard_MultiplierBitWidth_enable />
<var.HDLCodingStandard_MultiplierBitWidth_width />
<var.HDLCodingStandard_NonIntegerTypes_enable />
<var.HDLCodingStandard_LineLength_enable />
<var.HDLCodingStandard_LineLength_length />
<param.hdl.GenerateCosimTestBench />
<param.hdl.CosimLogOutputs />
<param.hdl.CosimTool />
<param.hdl.CosimRunMode />
<param.hdl.SimulateCosimTestBench />
<param.hdl.CosimClockHighTime />
<param.hdl.CosimClockLowTime />
<param.hdl.CosimHoldTime />
<param.hdl.CosimClockEnableDelay />
<param.hdl.CosimResetLength />
<param.hdl.GenerateFILTestBench />
<param.hdl.FILLogOutputs />
<param.hdl.FILBoardName />
<param.hdl.FILConnection />
<param.hdl.FILBoardIPAddress />
<param.hdl.FILBoardMACAddress />
<param.hdl.FILAdditionalFiles />
<param.hdl.SimulateFILTestBench />
<var.hasTestBench />
<param.hdl.GenerateHDLTestBench />
<param.hdl.SimulateGeneratedCode />
<param.hdl.SimulationTool />
<param.hdl.TestBenchPostfix />
<param.hdl.ForceClock />
<param.hdl.ClockHighTime />
<param.hdl.ClockLowTime />
<param.hdl.HoldTime />
<param.hdl.ForceClockEnable />
<param.hdl.TestBenchClockEnableDelay />
<param.hdl.ForceReset />
<param.hdl.ResetLength />
<param.hdl.HoldInputDataBetweenSamples />
<param.hdl.InputDataInterval />
<param.hdl.InitializeTestBenchInputs />
<param.hdl.MultifileTestBench />
<param.hdl.TestBenchDataPostfix />
<param.hdl.TestReferencePostfix />
<param.hdl.UseFileIOInTestBench />
<param.hdl.IgnoreDataChecking />
<param.hdl.SimulationIterationLimit />
<param.hdl.UseFiAccelForTestBench />
<param.hdl.hdlVariables />
<param.hdl.hdlComputedVariables />
<param.hdl.InitializeBlockRAM />
<param.hdl.RAMArchitecture />
<param.hdl.PartitionFunctions />
<param.hdl.InstantiateFunctions />
<param.hdl.GenerateMLFcnBlock />
<param.hdl.GenerateXSGBlock />
</unset>
</profile>
<param.objective>option.objective.c</param.objective>
<param.WorkflowStep>inputTypes</param.WorkflowStep>
<param.TestSnippets />
<param.DefaultImportExportVariable />
<param.RowMajor />
<param.HighlightPotentialRowMajorIssues />
<param.ExternalFcnMajority />
<param.UseGlobals>option.UseGlobals.No</param.UseGlobals>
<param.outputfile>${PROJECT_ROOT}/codegen/lib/wellSetup/wellSetup.a</param.outputfile>
<param.version />
<param.HasECoderFeatures>true</param.HasECoderFeatures>
<param.HasGpuCoder />
<param.mex.mainhtml />
<param.grt.mainhtml />
<param.CallGeneratedCodeFromTest />
<param.AutoInferDefaultFile />
<param.AutoInferUseVariableSize />
<param.AutoInferUseUnboundedSize />
<param.AutoInferVariableSizeThreshold />
<param.AutoInferUnboundedSizeThreshold />
<param.EnableFixedPointStep />
<param.EnableScreener>true</param.EnableScreener>
<param.AnnotationChecksum />
<var.LegacyTarget />
<var.MirrorOnOpen>false</var.MirrorOnOpen>
<param.FixedPointEnabled>false</param.FixedPointEnabled>
<var.redirectedInputTypeData />
<var.DismissScreener>true</var.DismissScreener>
<param.unifiedParamStorage />
<var.gc.lastOutputRoot />
<var.gc.lastOutputType />
<var.gc.preBuildChecksum />
<var.cfi.lastOutputRoot />
<var.cfi.preBuildChecksum />
<var.outdatedOnRestore />
<var.lastUserSourceChecksum />
<var.sourceSetState>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;sourceModel&gt;&lt;primarySourceFiles&gt;&lt;file&gt;/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/wellSetup.m&lt;/file&gt;&lt;/primarySourceFiles&gt;&lt;fixedPointSourceFiles/&gt;&lt;fixedPointSourceRegistered&gt;false&lt;/fixedPointSourceRegistered&gt;&lt;fixedPointSourceSelected&gt;false&lt;/fixedPointSourceSelected&gt;&lt;/sourceModel&gt;</var.sourceSetState>
<param.forceMexBuild>false</param.forceMexBuild>
<param.configImportActive>false</param.configImportActive>
<var.boundToGui>true</var.boundToGui>
<param.mex.outputfile>wellSetup_mex</param.mex.outputfile>
<param.grt.outputfile>wellSetup</param.grt.outputfile>
<param.artifact>option.target.artifact.lib</param.artifact>
<param.outputfile>${PROJECT_ROOT}/codegen/lib/wellSetup/wellSetup.a</param.outputfile>
<param.EnableAutoExtrinsicCalls />
<param.UsePreconditions>false</param.UsePreconditions>
<param.FeatureFlags />
<param.FixedPointMode>option.FixedPointMode.None</param.FixedPointMode>
<param.AutoScaleLoopIndexVariables />
<param.ComputedFixedPointData />
<param.UserFixedPointData />
<param.DefaultWordLength />
<param.DefaultFractionLength />
<param.FixedPointSafetyMargin />
<param.FixedPointFimath />
<param.FixedPointTypeSource />
<param.StaticAnalysisTimeout />
<param.StaticAnalysisGlobalRangesOnly />
<param.LogAllIOValues />
<param.DetectOverflows />
<param.LogHistogram />
<param.ShowCoverage />
<param.ExcludedFixedPointVerificationFiles />
<param.ExcludedFixedPointSimulationFiles />
<param.InstrumentedBuildChecksum />
<param.FixedPointStaticAnalysisChecksum />
<param.InstrumentedMexFile />
<param.FixedPointValidationChecksum />
<param.FixedPointSourceCodeChecksum />
<param.FixedPointFunctionReplacements />
<param.OptimizeWholeNumbers />
<param.ContainerTypes />
<param.GeneratedFixedPointFileSuffix>_fixpt</param.GeneratedFixedPointFileSuffix>
<param.PlotFunction />
<param.SDIPlot />
<param.EnableCodeEfficiencyChecks />
<param.DefaultFixedPointSignedness />
<param.FixedPointTypeProposalMode />
<param.EnableFixedPointStep />
<var.lastFixedPointAction />
<var.lastSimContext />
<var.lastVerifyContext />
<param.fpDataRoot />
<param.fpUserFileChecksum />
<var.snapshotChecksum />
<param.fpLastConvertChecksum />
<var.functionBlockSid />
<param.fptSignedness />
<var.FixedPointAnalysisMode />
<param.FixedPointUseDesignRanges />
<unset>
<param.objective />
<param.TestSnippets />
<param.DefaultImportExportVariable />
<param.RowMajor />
<param.HighlightPotentialRowMajorIssues />
<param.ExternalFcnMajority />
<param.UseGlobals />
<param.outputfile />
<param.version />
<param.HasECoderFeatures />
<param.HasGpuCoder />
<param.mex.mainhtml />
<param.grt.mainhtml />
<param.CallGeneratedCodeFromTest />
<param.AutoInferDefaultFile />
<param.AutoInferUseVariableSize />
<param.AutoInferUseUnboundedSize />
<param.AutoInferVariableSizeThreshold />
<param.AutoInferUnboundedSizeThreshold />
<param.EnableFixedPointStep />
<param.EnableScreener />
<param.AnnotationChecksum />
<var.LegacyTarget />
<var.MirrorOnOpen />
<param.FixedPointEnabled />
<var.redirectedInputTypeData />
<param.unifiedParamStorage />
<var.gc.lastOutputRoot />
<var.gc.lastOutputType />
<var.gc.preBuildChecksum />
<var.cfi.lastOutputRoot />
<var.cfi.preBuildChecksum />
<var.outdatedOnRestore />
<var.lastUserSourceChecksum />
<param.forceMexBuild />
<param.configImportActive />
<param.mex.outputfile />
<param.grt.outputfile />
<param.EnableAutoExtrinsicCalls />
<param.UsePreconditions />
<param.FeatureFlags />
<param.FixedPointMode />
<param.AutoScaleLoopIndexVariables />
<param.ComputedFixedPointData />
<param.UserFixedPointData />
<param.DefaultWordLength />
<param.DefaultFractionLength />
<param.FixedPointSafetyMargin />
<param.FixedPointFimath />
<param.FixedPointTypeSource />
<param.StaticAnalysisTimeout />
<param.StaticAnalysisGlobalRangesOnly />
<param.LogAllIOValues />
<param.DetectOverflows />
<param.LogHistogram />
<param.ShowCoverage />
<param.ExcludedFixedPointVerificationFiles />
<param.ExcludedFixedPointSimulationFiles />
<param.InstrumentedBuildChecksum />
<param.FixedPointStaticAnalysisChecksum />
<param.InstrumentedMexFile />
<param.FixedPointValidationChecksum />
<param.FixedPointSourceCodeChecksum />
<param.FixedPointFunctionReplacements />
<param.OptimizeWholeNumbers />
<param.ContainerTypes />
<param.GeneratedFixedPointFileSuffix />
<param.PlotFunction />
<param.SDIPlot />
<param.EnableCodeEfficiencyChecks />
<param.DefaultFixedPointSignedness />
<param.FixedPointTypeProposalMode />
<var.lastFixedPointAction />
<var.lastSimContext />
<var.lastVerifyContext />
<param.fpDataRoot />
<param.fpUserFileChecksum />
<var.snapshotChecksum />
<param.fpLastConvertChecksum />
<var.functionBlockSid />
<param.fptSignedness />
<var.FixedPointAnalysisMode />
<param.FixedPointUseDesignRanges />
</unset>
<fileset.entrypoints>
<file custom-data-expanded="false" value="${PROJECT_ROOT}/wellSetup.m" />
</fileset.entrypoints>
<fileset.testbench>
<file>${PROJECT_ROOT}/barneyWellTest.mlx</file>
</fileset.testbench>
<fileset.inputtypes>
<file>${PROJECT_ROOT}/wellSetup.m</file>
</fileset.inputtypes>
<build-deliverables>
<file location="${PROJECT_ROOT}/codegen/lib/wellSetup" name="wellSetup.a" optional="false">/Users/patrickjmcd/GitHub/Henry-Pump/POC-MatLab/codegen/lib/wellSetup/wellSetup.a</file>
</build-deliverables>
<workflow />
<matlab>
<root>/Applications/MATLAB_R2017a.app</root>
<toolboxes>
<toolbox name="matlabcoder" />
<toolbox name="embeddedcoder" />
</toolboxes>
<toolbox>
<matlabcoder>
<enabled>true</enabled>
</matlabcoder>
</toolbox>
<toolbox>
<embeddedcoder>
<enabled>true</enabled>
</embeddedcoder>
</toolbox>
</matlab>
<platform>
<unix>true</unix>
<mac>true</mac>
<windows>false</windows>
<win2k>false</win2k>
<winxp>false</winxp>
<vista>false</vista>
<linux>false</linux>
<solaris>false</solaris>
<osver>10.12.6</osver>
<os32>false</os32>
<os64>true</os64>
<arch>maci64</arch>
<matlab>true</matlab>
</platform>
</configuration>
</deployment-project>

189
welldata/456.csv Normal file
View File

@@ -0,0 +1,189 @@
0,11578.90039
0,11784
0.300000012,11826.90039
0.699999988,12008.09961
1.100000024,12065.2998
1.600000024,12122.5
2.200000048,12289.5
2.900000095,12375.2998
3.799999952,12384.7998
4.599999905,12446.7998
5.599999905,12613.7002
6.599999905,12680.5
7.599999905,12766.2998
8.800000191,12837.90039
10.10000038,12809.2998
11.30000019,12785.40039
12.60000038,12752
14.10000038,12723.40039
15.5,12737.7002
17,12809.2998
18.60000038,12981
20.20000076,13171.7002
21.89999962,13443.5
23.5,13653.40039
25.20000076,13910.90039
26.89999962,14154.09961
28.70000076,14292.40039
30.39999962,14306.7002
32.20000076,14259
34.20000076,14168.40039
36.09999847,14154.09961
38,14177.90039
39.90000153,14192.2998
41.90000153,14230.40039
43.90000153,14273.2998
45.90000153,14249.5
47.90000153,14268.59961
49.90000153,14344.90039
52.09999847,14464.09961
54.20000076,14554.7002
56.20000076,14559.5
58.29999924,14535.59961
60.40000153,14483.2002
62.5,14430.7002
64.59999847,14344.90039
66.69999695,14325.7998
68.90000153,14249.5
71.09999847,14163.59961
73.09999847,14087.2998
73.90000153,14020.59961
76,13915.7002
78,13820.2998
80,13810.7002
82,13863.2002
84,13834.59961
85.90000153,13724.90039
88,13629.5
90,13496
91.90000153,13252.7998
93.80000305,13076.2998
95.69999695,12775.90039
97.59999847,12456.40039
99.40000153,11936.59961
101.1999969,11679
102.9000015,11669.5
104.5999985,11693.2998
106.3000031,11669.5
107.9000015,11598
109.5,11140.2002
111,10868.2998
112.3000031,10782.5
113.5999985,10725.2998
115,10505.90039
116.1999969,10281.7998
117.4000015,10057.59961
118.4000015,9814.400391
119.4000015,9728.599609
120.3000031,9609.299805
121.0999985,9533
121.9000015,9356.599609
122.6999969,9161.099609
123.4000015,9056.099609
124,9075.200195
124.4000015,9070.400391
124.9000015,9103.799805
125.1999969,9180.099609
125.5999985,9237.400391
125.8000031,9204
126,9156.299805
126.0999985,9146.799805
126.1999969,9108.599609
126.1999969,9118.099609
126.1999969,9027.5
126.1999969,8898.799805
126.1999969,8960.799805
126.0999985,8951.200195
125.9000015,9037.099609
125.6999969,9227.799805
125.3000031,9165.799805
125,9056.099609
124.5,8922.599609
124.1999969,8612.599609
123.6999969,8417.099609
123.1999969,8393.299805
122.5,8345.599609
121.9000015,8188.200195
121.3000031,8102.399902
120.5999985,8107.100098
119.9000015,8140.5
119.0999985,8193
118.3000031,8150.100098
117.4000015,8040.399902
116.5999985,7830.5
115.5999985,7673.200195
114.6999969,7563.5
113.6999969,7449
112.5999985,7348.899902
111.5999985,7158.100098
110.4000015,7143.799805
109.1999969,7091.399902
108.0999985,6829.100098
106.9000015,6743.200195
105.5999985,6690.799805
104.3000031,6628.799805
103,6719.399902
101.6999969,6776.600098
100.4000015,6800.5
99,6795.700195
97.5,6781.399902
96.09999847,6810
94.59999847,6852.899902
93,6767.100098
91.40000153,6585.899902
89.80000305,6461.899902
88.19999695,6409.399902
86.5,6471.399902
84.80000305,6652.600098
83.09999847,6728.899902
81.30000305,6795.700195
79.5,6829.100098
77.80000305,6891.100098
75.90000153,6938.799805
74,6948.299805
72.09999847,6953.100098
70.19999695,6929.200195
68.09999847,6929.200195
66.09999847,6943.5
64,6986.399902
62,7034.100098
59.79999924,7077
57.70000076,7139
55.59999847,7210.600098
53.5,7239.200195
51.20000076,7234.399902
49,7263
46.70000076,7320.299805
44.5,7377.5
42.29999924,7582.600098
40.09999847,7735.200195
37.90000153,7744.700195
35.79999924,7792.399902
33.70000076,7821
31.60000038,7859.100098
29.5,7868.700195
27.5,7816.200195
25.39999962,7816.200195
23.39999962,7883
21.39999962,7959.299805
19.39999962,8264.5
17.70000076,8460
16,8617.400391
14.19999981,8708
12.60000038,8817.700195
11.10000038,8908.299805
9.699999809,9018
8.399999619,9070.400391
7.099999905,9122.900391
5.900000095,9218.299805
4.900000095,9423.299805
3.900000095,9604.599609
3,9766.700195
2.299999952,9924.099609
1.600000024,10095.7998
1.100000024,10238.7998
0.699999988,10448.7002
0.300000012,10682.2998
0.100000001,10806.2998
0,10954.2002
0,11168.7998
1 0 11578.90039
2 0 11784
3 0.300000012 11826.90039
4 0.699999988 12008.09961
5 1.100000024 12065.2998
6 1.600000024 12122.5
7 2.200000048 12289.5
8 2.900000095 12375.2998
9 3.799999952 12384.7998
10 4.599999905 12446.7998
11 5.599999905 12613.7002
12 6.599999905 12680.5
13 7.599999905 12766.2998
14 8.800000191 12837.90039
15 10.10000038 12809.2998
16 11.30000019 12785.40039
17 12.60000038 12752
18 14.10000038 12723.40039
19 15.5 12737.7002
20 17 12809.2998
21 18.60000038 12981
22 20.20000076 13171.7002
23 21.89999962 13443.5
24 23.5 13653.40039
25 25.20000076 13910.90039
26 26.89999962 14154.09961
27 28.70000076 14292.40039
28 30.39999962 14306.7002
29 32.20000076 14259
30 34.20000076 14168.40039
31 36.09999847 14154.09961
32 38 14177.90039
33 39.90000153 14192.2998
34 41.90000153 14230.40039
35 43.90000153 14273.2998
36 45.90000153 14249.5
37 47.90000153 14268.59961
38 49.90000153 14344.90039
39 52.09999847 14464.09961
40 54.20000076 14554.7002
41 56.20000076 14559.5
42 58.29999924 14535.59961
43 60.40000153 14483.2002
44 62.5 14430.7002
45 64.59999847 14344.90039
46 66.69999695 14325.7998
47 68.90000153 14249.5
48 71.09999847 14163.59961
49 73.09999847 14087.2998
50 73.90000153 14020.59961
51 76 13915.7002
52 78 13820.2998
53 80 13810.7002
54 82 13863.2002
55 84 13834.59961
56 85.90000153 13724.90039
57 88 13629.5
58 90 13496
59 91.90000153 13252.7998
60 93.80000305 13076.2998
61 95.69999695 12775.90039
62 97.59999847 12456.40039
63 99.40000153 11936.59961
64 101.1999969 11679
65 102.9000015 11669.5
66 104.5999985 11693.2998
67 106.3000031 11669.5
68 107.9000015 11598
69 109.5 11140.2002
70 111 10868.2998
71 112.3000031 10782.5
72 113.5999985 10725.2998
73 115 10505.90039
74 116.1999969 10281.7998
75 117.4000015 10057.59961
76 118.4000015 9814.400391
77 119.4000015 9728.599609
78 120.3000031 9609.299805
79 121.0999985 9533
80 121.9000015 9356.599609
81 122.6999969 9161.099609
82 123.4000015 9056.099609
83 124 9075.200195
84 124.4000015 9070.400391
85 124.9000015 9103.799805
86 125.1999969 9180.099609
87 125.5999985 9237.400391
88 125.8000031 9204
89 126 9156.299805
90 126.0999985 9146.799805
91 126.1999969 9108.599609
92 126.1999969 9118.099609
93 126.1999969 9027.5
94 126.1999969 8898.799805
95 126.1999969 8960.799805
96 126.0999985 8951.200195
97 125.9000015 9037.099609
98 125.6999969 9227.799805
99 125.3000031 9165.799805
100 125 9056.099609
101 124.5 8922.599609
102 124.1999969 8612.599609
103 123.6999969 8417.099609
104 123.1999969 8393.299805
105 122.5 8345.599609
106 121.9000015 8188.200195
107 121.3000031 8102.399902
108 120.5999985 8107.100098
109 119.9000015 8140.5
110 119.0999985 8193
111 118.3000031 8150.100098
112 117.4000015 8040.399902
113 116.5999985 7830.5
114 115.5999985 7673.200195
115 114.6999969 7563.5
116 113.6999969 7449
117 112.5999985 7348.899902
118 111.5999985 7158.100098
119 110.4000015 7143.799805
120 109.1999969 7091.399902
121 108.0999985 6829.100098
122 106.9000015 6743.200195
123 105.5999985 6690.799805
124 104.3000031 6628.799805
125 103 6719.399902
126 101.6999969 6776.600098
127 100.4000015 6800.5
128 99 6795.700195
129 97.5 6781.399902
130 96.09999847 6810
131 94.59999847 6852.899902
132 93 6767.100098
133 91.40000153 6585.899902
134 89.80000305 6461.899902
135 88.19999695 6409.399902
136 86.5 6471.399902
137 84.80000305 6652.600098
138 83.09999847 6728.899902
139 81.30000305 6795.700195
140 79.5 6829.100098
141 77.80000305 6891.100098
142 75.90000153 6938.799805
143 74 6948.299805
144 72.09999847 6953.100098
145 70.19999695 6929.200195
146 68.09999847 6929.200195
147 66.09999847 6943.5
148 64 6986.399902
149 62 7034.100098
150 59.79999924 7077
151 57.70000076 7139
152 55.59999847 7210.600098
153 53.5 7239.200195
154 51.20000076 7234.399902
155 49 7263
156 46.70000076 7320.299805
157 44.5 7377.5
158 42.29999924 7582.600098
159 40.09999847 7735.200195
160 37.90000153 7744.700195
161 35.79999924 7792.399902
162 33.70000076 7821
163 31.60000038 7859.100098
164 29.5 7868.700195
165 27.5 7816.200195
166 25.39999962 7816.200195
167 23.39999962 7883
168 21.39999962 7959.299805
169 19.39999962 8264.5
170 17.70000076 8460
171 16 8617.400391
172 14.19999981 8708
173 12.60000038 8817.700195
174 11.10000038 8908.299805
175 9.699999809 9018
176 8.399999619 9070.400391
177 7.099999905 9122.900391
178 5.900000095 9218.299805
179 4.900000095 9423.299805
180 3.900000095 9604.599609
181 3 9766.700195
182 2.299999952 9924.099609
183 1.600000024 10095.7998
184 1.100000024 10238.7998
185 0.699999988 10448.7002
186 0.300000012 10682.2998
187 0.100000001 10806.2998
188 0 10954.2002
189 0 11168.7998

676
welldata/Mallet_No_Tag.csv Normal file
View File

@@ -0,0 +1,676 @@
0,9776.026
0.005469917,9889.581
0.013863833,10032.636
0.025325333,10243.539
0.040032,10488.118
0.058248417,10661.443
0.07980025,10718.797
0.104515583,10687.978
0.132326083,10620.406
0.16308075,10498.72
0.195990667,10401.043
0.232066417,10441.696
0.271218583,10526.409
0.313498083,10628.152
0.359020417,10737.421
0.407674083,10845.921
0.4593205,10926.294
0.51380025,11047.595
0.571258167,11276.132
0.63128025,11503.57
0.693512167,11739.085
0.758432417,11992.673
0.826354917,12256.92
0.89726725,12511.497
0.9712875,12731.464
1.048186583,12876.278
1.127629,12925.886
1.20959525,12924.183
1.293956833,12923.688
1.380850583,13030.321
1.470691583,13306.049
1.562806,13623.199
1.656998333,13950.403
1.753329083,14278.376
1.852025333,14574.101
1.952786833,14803.847
2.055333167,15081.718
2.159586667,15410.35
2.265318833,15706.46
2.3733975,16035.092
2.484817583,16412.453
2.59948025,16801.681
2.71644175,17036.536
2.834529167,16972.534
2.95454075,16866.287
3.0765375,16790.748
3.201042417,16735.592
3.328021917,16637.255
3.457062,16447.942
3.587754333,16175.73
3.7197685,15843.802
3.853573333,15517.477
3.989576583,15256.582
4.127587917,15145.994
4.26697625,15090.343
4.407120917,14970.086
4.548720667,14891.362
4.692186667,14842.962
4.837357167,14740.34
4.98334575,14499.057
5.129595167,14326.721
5.27664525,14369.901
5.424664833,14485.104
5.573320667,14591.681
5.722529083,14679.086
5.8719985,14766.051
6.021790083,14919.434
6.171415167,15126.162
6.321026,15310.2
6.470778417,15376.069
6.62113375,15440.62
6.771690917,15476
6.92142425,15446.828
7.070682583,15428.04
7.219948833,15377.058
7.369218333,15312.727
7.517862583,15275.865
7.665456333,15279.6
7.81258175,15273.283
7.95967025,15173.133
8.106388583,15022.496
8.251937833,14858.125
8.39614225,14745.339
8.53943,14636.839
8.681693667,14430.496
8.822886833,14220.802
8.96252875,14055.937
9.100747583,13982.486
9.237511083,13908.102
9.372204667,13851.627
9.504688833,13881.018
9.634593417,13925.517
9.762460917,14039.895
9.88810475,14149.439
10.01133025,14239.756
10.13194283,14293.484
10.24966075,14316.173
10.36420408,14430.991
10.47555567,14679.855
10.58395958,14924.489
10.68960167,15012.168
10.79186508,15026.451
10.89072792,15122.316
10.98580667,15239.826
11.07743458,15393.979
11.16544292,15480.175
11.24972158,15551.648
11.33033592,15622.736
11.4071015,15593.4
11.48018525,15485.943
11.54942825,15270.646
11.61424633,14921.577
11.674432,14544.71
11.72986992,14224.263
11.78069242,13971.114
11.82665033,13684.399
11.86771467,13375.159
11.90365167,13002.742
11.93385692,12640.544
11.95854375,12384.043
11.97725417,12122.214
11.99019917,11907.961
11.99821617,11556.585
12,10818.453
11.99437833,10218.872
11.98168992,9974.513
11.96236683,9966.822
11.93623683,10046.975
11.90283792,10210.082
11.86283425,10566.073
11.81606508,10971.727
11.76242917,11263.277
11.70194025,11417.265
11.635014,11506.812
11.56213983,11355.131
11.48255125,10783.129
11.39636908,9951.934
11.30301192,9180.95
11.2028855,8568.624
11.09612617,8027.276
10.98281183,7570.531
10.86439075,7120.324
10.74053733,6429.602
10.61033417,5731.465
10.47414308,5262.799
10.331585,4993.608
10.18328317,4887.8
10.02944475,4866.045
9.870938667,4903.347
9.708080667,4908.126
9.541035917,4860.331
9.370086833,4740.019
9.194264167,4623.608
9.011303833,4806.163
8.823120833,5495.896
8.630679917,6335.056
8.434706083,7096.646
8.235212917,7736.001
8.031737583,8240.211
7.823389583,8565.273
7.609442167,8874.732
7.394066333,9242.04
7.18177575,9725.045
6.971143917,10100.648
6.76005725,10223.652
6.547905917,10202.061
6.335514583,10102.626
6.1247145,10005.552
5.915829583,9948.583
5.70865225,9976.106
5.502857083,10010.661
5.29959525,9951.22
5.0998445,9703.729
4.90439275,9250.665
4.712906583,8789.8
4.525125833,8425.513
4.34108925,8209.502
4.161316917,8221.533
3.985825667,8288.006
3.81218425,8331.242
3.639778833,8203.953
3.47038125,8070.566
3.30502375,8083.531
3.144516,8198.954
2.9875085,8453.806
2.833456917,8828.805
2.683372083,9145.351
2.538298167,9273.079
2.397747333,9299.449
2.261532,9382.898
2.128944,9634.838
1.9997345,9987.423
1.874468417,10264.305
1.754004833,10515.696
1.638998417,10693.087
1.529095667,10687.429
1.423291583,10592.882
1.320598583,10505.588
1.221731833,10531.792
1.12771575,10595.739
1.038479333,10568.875
0.95374375,10443.948
0.873229167,10212.17
0.796579167,9881.834
0.723449833,9552.763
0.653880417,9342.464
0.587873833,9236.052
0.525776833,9193.421
0.467945417,9160.623
0.413685,9046.41
0.362936583,8910.99
0.315684333,8743.488
0.271219,8566.646
0.230005083,8550.44
0.1921475,8679.871
0.158036583,8881.379
0.127829583,9023.831
0.1008755,9046.739
0.076851667,9062.177
0.055667083,9212.429
0.037832833,9532.985
0.0232665,9776.026
0.012359417,9889.581
0.005017167,10032.636
0.000966833,10243.539
0,10488.118
0.005469917,10661.443
0.013863833,10718.797
0.025325333,10687.978
0.040032,10620.406
0.058248417,10498.72
0.07980025,10401.043
0.104515583,10441.696
0.132326083,10526.409
0.16308075,10628.152
0.195990667,10737.421
0.232066417,10845.921
0.271218583,10926.294
0.313498083,11047.595
0.359020417,11276.132
0.407674083,11503.57
0.4593205,11739.085
0.51380025,11992.673
0.571258167,12256.92
0.63128025,12511.497
0.693512167,12731.464
0.758432417,12876.278
0.826354917,12925.886
0.89726725,12924.183
0.9712875,12923.688
1.048186583,13030.321
1.127629,13306.049
1.20959525,13623.199
1.293956833,13950.403
1.380850583,14278.376
1.470691583,14574.101
1.562806,14803.847
1.656998333,15081.718
1.753329083,15410.35
1.852025333,15706.46
1.952786833,16035.092
2.055333167,16412.453
2.159586667,16801.681
2.265318833,17036.536
2.3733975,16972.534
2.484817583,16866.287
2.59948025,16790.748
2.71644175,16735.592
2.834529167,16637.255
2.95454075,16447.942
3.0765375,16175.73
3.201042417,15843.802
3.328021917,15517.477
3.457062,15256.582
3.587754333,15145.994
3.7197685,15090.343
3.853573333,14970.086
3.989576583,14891.362
4.127587917,14842.962
4.26697625,14740.34
4.407120917,14499.057
4.548720667,14326.721
4.692186667,14369.901
4.837357167,14485.104
4.98334575,14591.681
5.129595167,14679.086
5.27664525,14766.051
5.424664833,14919.434
5.573320667,15126.162
5.722529083,15310.2
5.8719985,15376.069
6.021790083,15440.62
6.171415167,15476
6.321026,15446.828
6.470778417,15428.04
6.62113375,15377.058
6.771690917,15312.727
6.92142425,15275.865
7.070682583,15279.6
7.219948833,15273.283
7.369218333,15173.133
7.517862583,15022.496
7.665456333,14858.125
7.81258175,14745.339
7.95967025,14636.839
8.106388583,14430.496
8.251937833,14220.802
8.39614225,14055.937
8.53943,13982.486
8.681693667,13908.102
8.822886833,13851.627
8.96252875,13881.018
9.100747583,13925.517
9.237511083,14039.895
9.372204667,14149.439
9.504688833,14239.756
9.634593417,14293.484
9.762460917,14316.173
9.88810475,14430.991
10.01133025,14679.855
10.13194283,14924.489
10.24966075,15012.168
10.36420408,15026.451
10.47555567,15122.316
10.58395958,15239.826
10.68960167,15393.979
10.79186508,15480.175
10.89072792,15551.648
10.98580667,15622.736
11.07743458,15593.4
11.16544292,15485.943
11.24972158,15270.646
11.33033592,14921.577
11.4071015,14544.71
11.48018525,14224.263
11.54942825,13971.114
11.61424633,13684.399
11.674432,13375.159
11.72986992,13002.742
11.78069242,12640.544
11.82665033,12384.043
11.86771467,12122.214
11.90365167,11907.961
11.93385692,11556.585
11.95854375,10818.453
11.97725417,10218.872
11.99019917,9974.513
11.99821617,9966.822
12,10046.975
11.99437833,10210.082
11.98168992,10566.073
11.96236683,10971.727
11.93623683,11263.277
11.90283792,11417.265
11.86283425,11506.812
11.81606508,11355.131
11.76242917,10783.129
11.70194025,9951.934
11.635014,9180.95
11.56213983,8568.624
11.48255125,8027.276
11.39636908,7570.531
11.30301192,7120.324
11.2028855,6429.602
11.09612617,5731.465
10.98281183,5262.799
10.86439075,4993.608
10.74053733,4887.8
10.61033417,4866.045
10.47414308,4903.347
10.331585,4908.126
10.18328317,4860.331
10.02944475,4740.019
9.870938667,4623.608
9.708080667,4806.163
9.541035917,5495.896
9.370086833,6335.056
9.194264167,7096.646
9.011303833,7736.001
8.823120833,8240.211
8.630679917,8565.273
8.434706083,8874.732
8.235212917,9242.04
8.031737583,9725.045
7.823389583,10100.648
7.609442167,10223.652
7.394066333,10202.061
7.18177575,10102.626
6.971143917,10005.552
6.76005725,9948.583
6.547905917,9976.106
6.335514583,10010.661
6.1247145,9951.22
5.915829583,9703.729
5.70865225,9250.665
5.502857083,8789.8
5.29959525,8425.513
5.0998445,8209.502
4.90439275,8221.533
4.712906583,8288.006
4.525125833,8331.242
4.34108925,8203.953
4.161316917,8070.566
3.985825667,8083.531
3.81218425,8198.954
3.639778833,8453.806
3.47038125,8828.805
3.30502375,9145.351
3.144516,9273.079
2.9875085,9299.449
2.833456917,9382.898
2.683372083,9634.838
2.538298167,9987.423
2.397747333,10264.305
2.261532,10515.696
2.128944,10693.087
1.9997345,10687.429
1.874468417,10592.882
1.754004833,10505.588
1.638998417,10531.792
1.529095667,10595.739
1.423291583,10568.875
1.320598583,10443.948
1.221731833,10212.17
1.12771575,9881.834
1.038479333,9552.763
0.95374375,9342.464
0.873229167,9236.052
0.796579167,9193.421
0.723449833,9160.623
0.653880417,9046.41
0.587873833,8910.99
0.525776833,8743.488
0.467945417,8566.646
0.413685,8550.44
0.362936583,8679.871
0.315684333,8881.379
0.271219,9023.831
0.230005083,9046.739
0.1921475,9062.177
0.158036583,9212.429
0.127829583,9532.985
0.1008755,9862.826
0.076851667,10190.689
0.055667083,10424.885
0.037832833,10515.421
0.0232665,9776.026
0.012359417,9889.581
0.005017167,10032.636
0.000966833,10243.539
0,10488.118
0.005469917,10661.443
0.013863833,10718.797
0.025325333,10687.978
0.040032,10620.406
0.058248417,10498.72
0.07980025,10401.043
0.104515583,10441.696
0.132326083,10526.409
0.16308075,10628.152
0.195990667,10737.421
0.232066417,10845.921
0.271218583,10926.294
0.313498083,11047.595
0.359020417,11276.132
0.407674083,11503.57
0.4593205,11739.085
0.51380025,11992.673
0.571258167,12256.92
0.63128025,12511.497
0.693512167,12731.464
0.758432417,12876.278
0.826354917,12925.886
0.89726725,12924.183
0.9712875,12923.688
1.048186583,13030.321
1.127629,13306.049
1.20959525,13623.199
1.293956833,13950.403
1.380850583,14278.376
1.470691583,14574.101
1.562806,14803.847
1.656998333,15081.718
1.753329083,15410.35
1.852025333,15706.46
1.952786833,16035.092
2.055333167,16412.453
2.159586667,16801.681
2.265318833,17036.536
2.3733975,16972.534
2.484817583,16866.287
2.59948025,16790.748
2.71644175,16735.592
2.834529167,16637.255
2.95454075,16447.942
3.0765375,16175.73
3.201042417,15843.802
3.328021917,15517.477
3.457062,15256.582
3.587754333,15145.994
3.7197685,15090.343
3.853573333,14970.086
3.989576583,14891.362
4.127587917,14842.962
4.26697625,14740.34
4.407120917,14499.057
4.548720667,14326.721
4.692186667,14369.901
4.837357167,14485.104
4.98334575,14591.681
5.129595167,14679.086
5.27664525,14766.051
5.424664833,14919.434
5.573320667,15126.162
5.722529083,15310.2
5.8719985,15376.069
6.021790083,15440.62
6.171415167,15476
6.321026,15446.828
6.470778417,15428.04
6.62113375,15377.058
6.771690917,15312.727
6.92142425,15275.865
7.070682583,15279.6
7.219948833,15273.283
7.369218333,15173.133
7.517862583,15022.496
7.665456333,14858.125
7.81258175,14745.339
7.95967025,14636.839
8.106388583,14430.496
8.251937833,14220.802
8.39614225,14055.937
8.53943,13982.486
8.681693667,13908.102
8.822886833,13851.627
8.96252875,13881.018
9.100747583,13925.517
9.237511083,14039.895
9.372204667,14149.439
9.504688833,14239.756
9.634593417,14293.484
9.762460917,14316.173
9.88810475,14430.991
10.01133025,14679.855
10.13194283,14924.489
10.24966075,15012.168
10.36420408,15026.451
10.47555567,15122.316
10.58395958,15239.826
10.68960167,15393.979
10.79186508,15480.175
10.89072792,15551.648
10.98580667,15622.736
11.07743458,15593.4
11.16544292,15485.943
11.24972158,15270.646
11.33033592,14921.577
11.4071015,14544.71
11.48018525,14224.263
11.54942825,13971.114
11.61424633,13684.399
11.674432,13375.159
11.72986992,13002.742
11.78069242,12640.544
11.82665033,12384.043
11.86771467,12122.214
11.90365167,11907.961
11.93385692,11556.585
11.95854375,10818.453
11.97725417,10218.872
11.99019917,9974.513
11.99821617,9966.822
12,10046.975
11.99437833,10210.082
11.98168992,10566.073
11.96236683,10971.727
11.93623683,11263.277
11.90283792,11417.265
11.86283425,11506.812
11.81606508,11355.131
11.76242917,10783.129
11.70194025,9951.934
11.635014,9180.95
11.56213983,8568.624
11.48255125,8027.276
11.39636908,7570.531
11.30301192,7120.324
11.2028855,6429.602
11.09612617,5731.465
10.98281183,5262.799
10.86439075,4993.608
10.74053733,4887.8
10.61033417,4866.045
10.47414308,4903.347
10.331585,4908.126
10.18328317,4860.331
10.02944475,4740.019
9.870938667,4623.608
9.708080667,4806.163
9.541035917,5495.896
9.370086833,6335.056
9.194264167,7096.646
9.011303833,7736.001
8.823120833,8240.211
8.630679917,8565.273
8.434706083,8874.732
8.235212917,9242.04
8.031737583,9725.045
7.823389583,10100.648
7.609442167,10223.652
7.394066333,10202.061
7.18177575,10102.626
6.971143917,10005.552
6.76005725,9948.583
6.547905917,9976.106
6.335514583,10010.661
6.1247145,9951.22
5.915829583,9703.729
5.70865225,9250.665
5.502857083,8789.8
5.29959525,8425.513
5.0998445,8209.502
4.90439275,8221.533
4.712906583,8288.006
4.525125833,8331.242
4.34108925,8203.953
4.161316917,8070.566
3.985825667,8083.531
3.81218425,8198.954
3.639778833,8453.806
3.47038125,8828.805
3.30502375,9145.351
3.144516,9273.079
2.9875085,9299.449
2.833456917,9382.898
2.683372083,9634.838
2.538298167,9987.423
2.397747333,10264.305
2.261532,10515.696
2.128944,10693.087
1.9997345,10687.429
1.874468417,10592.882
1.754004833,10505.588
1.638998417,10531.792
1.529095667,10595.739
1.423291583,10568.875
1.320598583,10443.948
1.221731833,10212.17
1.12771575,9881.834
1.038479333,9552.763
0.95374375,9342.464
0.873229167,9236.052
0.796579167,9193.421
0.723449833,9160.623
0.653880417,9046.41
0.587873833,8910.99
0.525776833,8743.488
0.467945417,8566.646
0.413685,8550.44
0.362936583,8679.871
0.315684333,8881.379
0.271219,9023.831
0.230005083,9046.739
0.1921475,9062.177
0.158036583,9212.429
0.127829583,9532.985
0.1008755,9862.826
0.076851667,10190.689
0.055667083,10424.885
0.037832833,10515.421
0.0232665,10534.1
0.012359417,10661.443
0.005017167,10718.797
0.000966833,10687.978
0,10620.406
1 0 9776.026
2 0.005469917 9889.581
3 0.013863833 10032.636
4 0.025325333 10243.539
5 0.040032 10488.118
6 0.058248417 10661.443
7 0.07980025 10718.797
8 0.104515583 10687.978
9 0.132326083 10620.406
10 0.16308075 10498.72
11 0.195990667 10401.043
12 0.232066417 10441.696
13 0.271218583 10526.409
14 0.313498083 10628.152
15 0.359020417 10737.421
16 0.407674083 10845.921
17 0.4593205 10926.294
18 0.51380025 11047.595
19 0.571258167 11276.132
20 0.63128025 11503.57
21 0.693512167 11739.085
22 0.758432417 11992.673
23 0.826354917 12256.92
24 0.89726725 12511.497
25 0.9712875 12731.464
26 1.048186583 12876.278
27 1.127629 12925.886
28 1.20959525 12924.183
29 1.293956833 12923.688
30 1.380850583 13030.321
31 1.470691583 13306.049
32 1.562806 13623.199
33 1.656998333 13950.403
34 1.753329083 14278.376
35 1.852025333 14574.101
36 1.952786833 14803.847
37 2.055333167 15081.718
38 2.159586667 15410.35
39 2.265318833 15706.46
40 2.3733975 16035.092
41 2.484817583 16412.453
42 2.59948025 16801.681
43 2.71644175 17036.536
44 2.834529167 16972.534
45 2.95454075 16866.287
46 3.0765375 16790.748
47 3.201042417 16735.592
48 3.328021917 16637.255
49 3.457062 16447.942
50 3.587754333 16175.73
51 3.7197685 15843.802
52 3.853573333 15517.477
53 3.989576583 15256.582
54 4.127587917 15145.994
55 4.26697625 15090.343
56 4.407120917 14970.086
57 4.548720667 14891.362
58 4.692186667 14842.962
59 4.837357167 14740.34
60 4.98334575 14499.057
61 5.129595167 14326.721
62 5.27664525 14369.901
63 5.424664833 14485.104
64 5.573320667 14591.681
65 5.722529083 14679.086
66 5.8719985 14766.051
67 6.021790083 14919.434
68 6.171415167 15126.162
69 6.321026 15310.2
70 6.470778417 15376.069
71 6.62113375 15440.62
72 6.771690917 15476
73 6.92142425 15446.828
74 7.070682583 15428.04
75 7.219948833 15377.058
76 7.369218333 15312.727
77 7.517862583 15275.865
78 7.665456333 15279.6
79 7.81258175 15273.283
80 7.95967025 15173.133
81 8.106388583 15022.496
82 8.251937833 14858.125
83 8.39614225 14745.339
84 8.53943 14636.839
85 8.681693667 14430.496
86 8.822886833 14220.802
87 8.96252875 14055.937
88 9.100747583 13982.486
89 9.237511083 13908.102
90 9.372204667 13851.627
91 9.504688833 13881.018
92 9.634593417 13925.517
93 9.762460917 14039.895
94 9.88810475 14149.439
95 10.01133025 14239.756
96 10.13194283 14293.484
97 10.24966075 14316.173
98 10.36420408 14430.991
99 10.47555567 14679.855
100 10.58395958 14924.489
101 10.68960167 15012.168
102 10.79186508 15026.451
103 10.89072792 15122.316
104 10.98580667 15239.826
105 11.07743458 15393.979
106 11.16544292 15480.175
107 11.24972158 15551.648
108 11.33033592 15622.736
109 11.4071015 15593.4
110 11.48018525 15485.943
111 11.54942825 15270.646
112 11.61424633 14921.577
113 11.674432 14544.71
114 11.72986992 14224.263
115 11.78069242 13971.114
116 11.82665033 13684.399
117 11.86771467 13375.159
118 11.90365167 13002.742
119 11.93385692 12640.544
120 11.95854375 12384.043
121 11.97725417 12122.214
122 11.99019917 11907.961
123 11.99821617 11556.585
124 12 10818.453
125 11.99437833 10218.872
126 11.98168992 9974.513
127 11.96236683 9966.822
128 11.93623683 10046.975
129 11.90283792 10210.082
130 11.86283425 10566.073
131 11.81606508 10971.727
132 11.76242917 11263.277
133 11.70194025 11417.265
134 11.635014 11506.812
135 11.56213983 11355.131
136 11.48255125 10783.129
137 11.39636908 9951.934
138 11.30301192 9180.95
139 11.2028855 8568.624
140 11.09612617 8027.276
141 10.98281183 7570.531
142 10.86439075 7120.324
143 10.74053733 6429.602
144 10.61033417 5731.465
145 10.47414308 5262.799
146 10.331585 4993.608
147 10.18328317 4887.8
148 10.02944475 4866.045
149 9.870938667 4903.347
150 9.708080667 4908.126
151 9.541035917 4860.331
152 9.370086833 4740.019
153 9.194264167 4623.608
154 9.011303833 4806.163
155 8.823120833 5495.896
156 8.630679917 6335.056
157 8.434706083 7096.646
158 8.235212917 7736.001
159 8.031737583 8240.211
160 7.823389583 8565.273
161 7.609442167 8874.732
162 7.394066333 9242.04
163 7.18177575 9725.045
164 6.971143917 10100.648
165 6.76005725 10223.652
166 6.547905917 10202.061
167 6.335514583 10102.626
168 6.1247145 10005.552
169 5.915829583 9948.583
170 5.70865225 9976.106
171 5.502857083 10010.661
172 5.29959525 9951.22
173 5.0998445 9703.729
174 4.90439275 9250.665
175 4.712906583 8789.8
176 4.525125833 8425.513
177 4.34108925 8209.502
178 4.161316917 8221.533
179 3.985825667 8288.006
180 3.81218425 8331.242
181 3.639778833 8203.953
182 3.47038125 8070.566
183 3.30502375 8083.531
184 3.144516 8198.954
185 2.9875085 8453.806
186 2.833456917 8828.805
187 2.683372083 9145.351
188 2.538298167 9273.079
189 2.397747333 9299.449
190 2.261532 9382.898
191 2.128944 9634.838
192 1.9997345 9987.423
193 1.874468417 10264.305
194 1.754004833 10515.696
195 1.638998417 10693.087
196 1.529095667 10687.429
197 1.423291583 10592.882
198 1.320598583 10505.588
199 1.221731833 10531.792
200 1.12771575 10595.739
201 1.038479333 10568.875
202 0.95374375 10443.948
203 0.873229167 10212.17
204 0.796579167 9881.834
205 0.723449833 9552.763
206 0.653880417 9342.464
207 0.587873833 9236.052
208 0.525776833 9193.421
209 0.467945417 9160.623
210 0.413685 9046.41
211 0.362936583 8910.99
212 0.315684333 8743.488
213 0.271219 8566.646
214 0.230005083 8550.44
215 0.1921475 8679.871
216 0.158036583 8881.379
217 0.127829583 9023.831
218 0.1008755 9046.739
219 0.076851667 9062.177
220 0.055667083 9212.429
221 0.037832833 9532.985
222 0.0232665 9776.026
223 0.012359417 9889.581
224 0.005017167 10032.636
225 0.000966833 10243.539
226 0 10488.118
227 0.005469917 10661.443
228 0.013863833 10718.797
229 0.025325333 10687.978
230 0.040032 10620.406
231 0.058248417 10498.72
232 0.07980025 10401.043
233 0.104515583 10441.696
234 0.132326083 10526.409
235 0.16308075 10628.152
236 0.195990667 10737.421
237 0.232066417 10845.921
238 0.271218583 10926.294
239 0.313498083 11047.595
240 0.359020417 11276.132
241 0.407674083 11503.57
242 0.4593205 11739.085
243 0.51380025 11992.673
244 0.571258167 12256.92
245 0.63128025 12511.497
246 0.693512167 12731.464
247 0.758432417 12876.278
248 0.826354917 12925.886
249 0.89726725 12924.183
250 0.9712875 12923.688
251 1.048186583 13030.321
252 1.127629 13306.049
253 1.20959525 13623.199
254 1.293956833 13950.403
255 1.380850583 14278.376
256 1.470691583 14574.101
257 1.562806 14803.847
258 1.656998333 15081.718
259 1.753329083 15410.35
260 1.852025333 15706.46
261 1.952786833 16035.092
262 2.055333167 16412.453
263 2.159586667 16801.681
264 2.265318833 17036.536
265 2.3733975 16972.534
266 2.484817583 16866.287
267 2.59948025 16790.748
268 2.71644175 16735.592
269 2.834529167 16637.255
270 2.95454075 16447.942
271 3.0765375 16175.73
272 3.201042417 15843.802
273 3.328021917 15517.477
274 3.457062 15256.582
275 3.587754333 15145.994
276 3.7197685 15090.343
277 3.853573333 14970.086
278 3.989576583 14891.362
279 4.127587917 14842.962
280 4.26697625 14740.34
281 4.407120917 14499.057
282 4.548720667 14326.721
283 4.692186667 14369.901
284 4.837357167 14485.104
285 4.98334575 14591.681
286 5.129595167 14679.086
287 5.27664525 14766.051
288 5.424664833 14919.434
289 5.573320667 15126.162
290 5.722529083 15310.2
291 5.8719985 15376.069
292 6.021790083 15440.62
293 6.171415167 15476
294 6.321026 15446.828
295 6.470778417 15428.04
296 6.62113375 15377.058
297 6.771690917 15312.727
298 6.92142425 15275.865
299 7.070682583 15279.6
300 7.219948833 15273.283
301 7.369218333 15173.133
302 7.517862583 15022.496
303 7.665456333 14858.125
304 7.81258175 14745.339
305 7.95967025 14636.839
306 8.106388583 14430.496
307 8.251937833 14220.802
308 8.39614225 14055.937
309 8.53943 13982.486
310 8.681693667 13908.102
311 8.822886833 13851.627
312 8.96252875 13881.018
313 9.100747583 13925.517
314 9.237511083 14039.895
315 9.372204667 14149.439
316 9.504688833 14239.756
317 9.634593417 14293.484
318 9.762460917 14316.173
319 9.88810475 14430.991
320 10.01133025 14679.855
321 10.13194283 14924.489
322 10.24966075 15012.168
323 10.36420408 15026.451
324 10.47555567 15122.316
325 10.58395958 15239.826
326 10.68960167 15393.979
327 10.79186508 15480.175
328 10.89072792 15551.648
329 10.98580667 15622.736
330 11.07743458 15593.4
331 11.16544292 15485.943
332 11.24972158 15270.646
333 11.33033592 14921.577
334 11.4071015 14544.71
335 11.48018525 14224.263
336 11.54942825 13971.114
337 11.61424633 13684.399
338 11.674432 13375.159
339 11.72986992 13002.742
340 11.78069242 12640.544
341 11.82665033 12384.043
342 11.86771467 12122.214
343 11.90365167 11907.961
344 11.93385692 11556.585
345 11.95854375 10818.453
346 11.97725417 10218.872
347 11.99019917 9974.513
348 11.99821617 9966.822
349 12 10046.975
350 11.99437833 10210.082
351 11.98168992 10566.073
352 11.96236683 10971.727
353 11.93623683 11263.277
354 11.90283792 11417.265
355 11.86283425 11506.812
356 11.81606508 11355.131
357 11.76242917 10783.129
358 11.70194025 9951.934
359 11.635014 9180.95
360 11.56213983 8568.624
361 11.48255125 8027.276
362 11.39636908 7570.531
363 11.30301192 7120.324
364 11.2028855 6429.602
365 11.09612617 5731.465
366 10.98281183 5262.799
367 10.86439075 4993.608
368 10.74053733 4887.8
369 10.61033417 4866.045
370 10.47414308 4903.347
371 10.331585 4908.126
372 10.18328317 4860.331
373 10.02944475 4740.019
374 9.870938667 4623.608
375 9.708080667 4806.163
376 9.541035917 5495.896
377 9.370086833 6335.056
378 9.194264167 7096.646
379 9.011303833 7736.001
380 8.823120833 8240.211
381 8.630679917 8565.273
382 8.434706083 8874.732
383 8.235212917 9242.04
384 8.031737583 9725.045
385 7.823389583 10100.648
386 7.609442167 10223.652
387 7.394066333 10202.061
388 7.18177575 10102.626
389 6.971143917 10005.552
390 6.76005725 9948.583
391 6.547905917 9976.106
392 6.335514583 10010.661
393 6.1247145 9951.22
394 5.915829583 9703.729
395 5.70865225 9250.665
396 5.502857083 8789.8
397 5.29959525 8425.513
398 5.0998445 8209.502
399 4.90439275 8221.533
400 4.712906583 8288.006
401 4.525125833 8331.242
402 4.34108925 8203.953
403 4.161316917 8070.566
404 3.985825667 8083.531
405 3.81218425 8198.954
406 3.639778833 8453.806
407 3.47038125 8828.805
408 3.30502375 9145.351
409 3.144516 9273.079
410 2.9875085 9299.449
411 2.833456917 9382.898
412 2.683372083 9634.838
413 2.538298167 9987.423
414 2.397747333 10264.305
415 2.261532 10515.696
416 2.128944 10693.087
417 1.9997345 10687.429
418 1.874468417 10592.882
419 1.754004833 10505.588
420 1.638998417 10531.792
421 1.529095667 10595.739
422 1.423291583 10568.875
423 1.320598583 10443.948
424 1.221731833 10212.17
425 1.12771575 9881.834
426 1.038479333 9552.763
427 0.95374375 9342.464
428 0.873229167 9236.052
429 0.796579167 9193.421
430 0.723449833 9160.623
431 0.653880417 9046.41
432 0.587873833 8910.99
433 0.525776833 8743.488
434 0.467945417 8566.646
435 0.413685 8550.44
436 0.362936583 8679.871
437 0.315684333 8881.379
438 0.271219 9023.831
439 0.230005083 9046.739
440 0.1921475 9062.177
441 0.158036583 9212.429
442 0.127829583 9532.985
443 0.1008755 9862.826
444 0.076851667 10190.689
445 0.055667083 10424.885
446 0.037832833 10515.421
447 0.0232665 9776.026
448 0.012359417 9889.581
449 0.005017167 10032.636
450 0.000966833 10243.539
451 0 10488.118
452 0.005469917 10661.443
453 0.013863833 10718.797
454 0.025325333 10687.978
455 0.040032 10620.406
456 0.058248417 10498.72
457 0.07980025 10401.043
458 0.104515583 10441.696
459 0.132326083 10526.409
460 0.16308075 10628.152
461 0.195990667 10737.421
462 0.232066417 10845.921
463 0.271218583 10926.294
464 0.313498083 11047.595
465 0.359020417 11276.132
466 0.407674083 11503.57
467 0.4593205 11739.085
468 0.51380025 11992.673
469 0.571258167 12256.92
470 0.63128025 12511.497
471 0.693512167 12731.464
472 0.758432417 12876.278
473 0.826354917 12925.886
474 0.89726725 12924.183
475 0.9712875 12923.688
476 1.048186583 13030.321
477 1.127629 13306.049
478 1.20959525 13623.199
479 1.293956833 13950.403
480 1.380850583 14278.376
481 1.470691583 14574.101
482 1.562806 14803.847
483 1.656998333 15081.718
484 1.753329083 15410.35
485 1.852025333 15706.46
486 1.952786833 16035.092
487 2.055333167 16412.453
488 2.159586667 16801.681
489 2.265318833 17036.536
490 2.3733975 16972.534
491 2.484817583 16866.287
492 2.59948025 16790.748
493 2.71644175 16735.592
494 2.834529167 16637.255
495 2.95454075 16447.942
496 3.0765375 16175.73
497 3.201042417 15843.802
498 3.328021917 15517.477
499 3.457062 15256.582
500 3.587754333 15145.994
501 3.7197685 15090.343
502 3.853573333 14970.086
503 3.989576583 14891.362
504 4.127587917 14842.962
505 4.26697625 14740.34
506 4.407120917 14499.057
507 4.548720667 14326.721
508 4.692186667 14369.901
509 4.837357167 14485.104
510 4.98334575 14591.681
511 5.129595167 14679.086
512 5.27664525 14766.051
513 5.424664833 14919.434
514 5.573320667 15126.162
515 5.722529083 15310.2
516 5.8719985 15376.069
517 6.021790083 15440.62
518 6.171415167 15476
519 6.321026 15446.828
520 6.470778417 15428.04
521 6.62113375 15377.058
522 6.771690917 15312.727
523 6.92142425 15275.865
524 7.070682583 15279.6
525 7.219948833 15273.283
526 7.369218333 15173.133
527 7.517862583 15022.496
528 7.665456333 14858.125
529 7.81258175 14745.339
530 7.95967025 14636.839
531 8.106388583 14430.496
532 8.251937833 14220.802
533 8.39614225 14055.937
534 8.53943 13982.486
535 8.681693667 13908.102
536 8.822886833 13851.627
537 8.96252875 13881.018
538 9.100747583 13925.517
539 9.237511083 14039.895
540 9.372204667 14149.439
541 9.504688833 14239.756
542 9.634593417 14293.484
543 9.762460917 14316.173
544 9.88810475 14430.991
545 10.01133025 14679.855
546 10.13194283 14924.489
547 10.24966075 15012.168
548 10.36420408 15026.451
549 10.47555567 15122.316
550 10.58395958 15239.826
551 10.68960167 15393.979
552 10.79186508 15480.175
553 10.89072792 15551.648
554 10.98580667 15622.736
555 11.07743458 15593.4
556 11.16544292 15485.943
557 11.24972158 15270.646
558 11.33033592 14921.577
559 11.4071015 14544.71
560 11.48018525 14224.263
561 11.54942825 13971.114
562 11.61424633 13684.399
563 11.674432 13375.159
564 11.72986992 13002.742
565 11.78069242 12640.544
566 11.82665033 12384.043
567 11.86771467 12122.214
568 11.90365167 11907.961
569 11.93385692 11556.585
570 11.95854375 10818.453
571 11.97725417 10218.872
572 11.99019917 9974.513
573 11.99821617 9966.822
574 12 10046.975
575 11.99437833 10210.082
576 11.98168992 10566.073
577 11.96236683 10971.727
578 11.93623683 11263.277
579 11.90283792 11417.265
580 11.86283425 11506.812
581 11.81606508 11355.131
582 11.76242917 10783.129
583 11.70194025 9951.934
584 11.635014 9180.95
585 11.56213983 8568.624
586 11.48255125 8027.276
587 11.39636908 7570.531
588 11.30301192 7120.324
589 11.2028855 6429.602
590 11.09612617 5731.465
591 10.98281183 5262.799
592 10.86439075 4993.608
593 10.74053733 4887.8
594 10.61033417 4866.045
595 10.47414308 4903.347
596 10.331585 4908.126
597 10.18328317 4860.331
598 10.02944475 4740.019
599 9.870938667 4623.608
600 9.708080667 4806.163
601 9.541035917 5495.896
602 9.370086833 6335.056
603 9.194264167 7096.646
604 9.011303833 7736.001
605 8.823120833 8240.211
606 8.630679917 8565.273
607 8.434706083 8874.732
608 8.235212917 9242.04
609 8.031737583 9725.045
610 7.823389583 10100.648
611 7.609442167 10223.652
612 7.394066333 10202.061
613 7.18177575 10102.626
614 6.971143917 10005.552
615 6.76005725 9948.583
616 6.547905917 9976.106
617 6.335514583 10010.661
618 6.1247145 9951.22
619 5.915829583 9703.729
620 5.70865225 9250.665
621 5.502857083 8789.8
622 5.29959525 8425.513
623 5.0998445 8209.502
624 4.90439275 8221.533
625 4.712906583 8288.006
626 4.525125833 8331.242
627 4.34108925 8203.953
628 4.161316917 8070.566
629 3.985825667 8083.531
630 3.81218425 8198.954
631 3.639778833 8453.806
632 3.47038125 8828.805
633 3.30502375 9145.351
634 3.144516 9273.079
635 2.9875085 9299.449
636 2.833456917 9382.898
637 2.683372083 9634.838
638 2.538298167 9987.423
639 2.397747333 10264.305
640 2.261532 10515.696
641 2.128944 10693.087
642 1.9997345 10687.429
643 1.874468417 10592.882
644 1.754004833 10505.588
645 1.638998417 10531.792
646 1.529095667 10595.739
647 1.423291583 10568.875
648 1.320598583 10443.948
649 1.221731833 10212.17
650 1.12771575 9881.834
651 1.038479333 9552.763
652 0.95374375 9342.464
653 0.873229167 9236.052
654 0.796579167 9193.421
655 0.723449833 9160.623
656 0.653880417 9046.41
657 0.587873833 8910.99
658 0.525776833 8743.488
659 0.467945417 8566.646
660 0.413685 8550.44
661 0.362936583 8679.871
662 0.315684333 8881.379
663 0.271219 9023.831
664 0.230005083 9046.739
665 0.1921475 9062.177
666 0.158036583 9212.429
667 0.127829583 9532.985
668 0.1008755 9862.826
669 0.076851667 10190.689
670 0.055667083 10424.885
671 0.037832833 10515.421
672 0.0232665 10534.1
673 0.012359417 10661.443
674 0.005017167 10718.797
675 0.000966833 10687.978
676 0 10620.406

180
welldata/barney.csv Normal file
View File

@@ -0,0 +1,180 @@
98.878479,19687.71875
98.833061,19608.97656
98.687271,19612.3457
98.496696,19617.55859
98.207436,19576.69141
97.906197,19510.25391
97.608604,19436.69141
97.173904,19366.32422
96.616814,19293.74609
96.06707,19212.42578
95.433464,19121.12695
94.750229,18985.37695
93.93502,18818.625
93.058502,18631.74219
92.094398,18416.21875
91.115143,18170.38086
90.038254,18007.29492
88.876823,17900.4375
87.800278,17741.07617
86.602104,17562.10938
85.338539,17415.25781
84.031471,17233.49805
82.621895,17034.44922
81.234825,16871.27148
79.743828,16691.58398
78.161911,16506.85547
76.624016,16325.87402
74.942314,16161.14941
73.294777,15983.00977
71.784866,15803.35645
69.821587,15646.15918
68.057617,15501.06152
66.191177,15320.59375
64.338715,15120.2168
62.373264,14918.42969
60.399395,14698.55273
58.512794,14469.47559
56.390789,14288.49414
54.341087,14071.99609
52.511631,13792.64746
50.630878,13525.46582
48.341488,13301.0293
46.053364,13113.85938
43.820122,12951.33594
41.556591,12804.93066
39.372406,12658.11328
37.154778,12548.74707
34.933659,12547.72754
32.695152,12614.78418
30.451603,12721.59473
28.177065,12871.17481
26.004868,13069.79883
23.809713,13288.17578
21.60713,13527.0127
19.421371,13794.61719
17.294621,14039.40234
15.197564,14301.56641
13.184119,14633.20313
11.266252,14979.44824
9.394399,15288.05664
7.674011,15624.27734
6.022047,15980.21387
4.538721,16348.66211
3.267299,16731.54492
2.119907,17103.81836
1.141826,17435.94922
0.418223,17803.7207
-0.12613,18275.1875
-0.467637,18628.31641
-0.51326,18861.23242
-0.364345,19057.53125
0.018931,19199.125
0.580402,19272.33203
1.374856,19284.80859
2.370766,19296.14063
3.548366,19280.52344
4.901436,19209.49219
6.289977,19161.12305
7.810155,19124.56445
9.249138,19056.27148
11.200404,18958.39648
13.0338,18852.51367
14.848969,18668.73633
16.729538,18527.5332
18.612474,18544.78516
20.602987,18633.49609
22.702454,18795.25195
24.77833,19109.18945
25.177294,19172.98047
28.490406,19890.91406
30.613531,20248.89063
32.711479,20567.33008
34.75729,20858.19336
36.782173,21162.08203
38.776138,21393.24414
40.72184,21584.99414
42.52161,21713.19531
44.369289,21738.40039
46.143349,21729.17773
47.779621,21707.57031
49.412922,21653.39063
50.949528,21590.86133
52.417835,21525.71875
53.857075,21437.76563
55.185429,21373.25195
56.485561,21344.87305
57.768398,21328.21484
58.943233,21319.17578
60.056538,21330.51758
61.14143,21291.62305
62.110706,21135.88086
63.0681,20903.34375
63.947544,20606.11133
64.808846,20297.81055
65.595825,20000.29102
66.412445,19717.73438
67.192184,19500.10352
67.992744,19290.37695
68.720482,19124.36914
69.426147,19051.0918
70.138245,19031.12305
70.885918,19030.51563
71.595657,19061.15039
72.285698,19116.24609
72.975212,19188.95117
73.707901,19285.1875
74.392151,19376.19922
75.067535,19453.31445
75.794853,19522.01953
76.391739,19578.1582
77.127335,19592.81055
77.781105,19605.13867
78.431618,19693.26367
79.051086,19876.69727
79.68145,20072.04492
80.275848,20140.12109
80.891983,20179.69141
81.519623,20299.28906
82.112488,20475.50391
82.612625,20623.14648
83.177994,20686.78906
83.742981,20706.4375
84.29689,20728.62891
84.801743,20770.10156
85.366142,20794.39063
85.919426,20807.11914
86.426506,20824.57813
86.913559,20864.11523
87.46875,20914.57031
87.971497,20934.42578
88.451851,20932.81055
88.878235,20948.83789
89.36071,20969.20898
89.832573,20990.38086
90.312851,21037.22656
90.791679,21036.99805
91.224022,20952.89453
91.686485,20898.39453
92.04731,20878.73438
92.485863,20836.66602
92.906303,20748.04883
93.350357,20647.80273
93.768356,20570.61719
94.2202,20527.04883
94.641785,20494.83203
95.037338,20464.71289
95.384933,20440.7793
95.739662,20423.43359
96.111412,20414.75
96.439934,20385.69531
96.781326,20322.00781
97.07505,20278.27734
97.321877,20266.07617
97.556763,20244.46875
97.762444,20222.60938
98.018829,20203.42969
98.207611,20120.64453
98.385574,20003.58008
98.512047,19839.70313
98.611382,19752.30078
1 98.878479 19687.71875
2 98.833061 19608.97656
3 98.687271 19612.3457
4 98.496696 19617.55859
5 98.207436 19576.69141
6 97.906197 19510.25391
7 97.608604 19436.69141
8 97.173904 19366.32422
9 96.616814 19293.74609
10 96.06707 19212.42578
11 95.433464 19121.12695
12 94.750229 18985.37695
13 93.93502 18818.625
14 93.058502 18631.74219
15 92.094398 18416.21875
16 91.115143 18170.38086
17 90.038254 18007.29492
18 88.876823 17900.4375
19 87.800278 17741.07617
20 86.602104 17562.10938
21 85.338539 17415.25781
22 84.031471 17233.49805
23 82.621895 17034.44922
24 81.234825 16871.27148
25 79.743828 16691.58398
26 78.161911 16506.85547
27 76.624016 16325.87402
28 74.942314 16161.14941
29 73.294777 15983.00977
30 71.784866 15803.35645
31 69.821587 15646.15918
32 68.057617 15501.06152
33 66.191177 15320.59375
34 64.338715 15120.2168
35 62.373264 14918.42969
36 60.399395 14698.55273
37 58.512794 14469.47559
38 56.390789 14288.49414
39 54.341087 14071.99609
40 52.511631 13792.64746
41 50.630878 13525.46582
42 48.341488 13301.0293
43 46.053364 13113.85938
44 43.820122 12951.33594
45 41.556591 12804.93066
46 39.372406 12658.11328
47 37.154778 12548.74707
48 34.933659 12547.72754
49 32.695152 12614.78418
50 30.451603 12721.59473
51 28.177065 12871.17481
52 26.004868 13069.79883
53 23.809713 13288.17578
54 21.60713 13527.0127
55 19.421371 13794.61719
56 17.294621 14039.40234
57 15.197564 14301.56641
58 13.184119 14633.20313
59 11.266252 14979.44824
60 9.394399 15288.05664
61 7.674011 15624.27734
62 6.022047 15980.21387
63 4.538721 16348.66211
64 3.267299 16731.54492
65 2.119907 17103.81836
66 1.141826 17435.94922
67 0.418223 17803.7207
68 -0.12613 18275.1875
69 -0.467637 18628.31641
70 -0.51326 18861.23242
71 -0.364345 19057.53125
72 0.018931 19199.125
73 0.580402 19272.33203
74 1.374856 19284.80859
75 2.370766 19296.14063
76 3.548366 19280.52344
77 4.901436 19209.49219
78 6.289977 19161.12305
79 7.810155 19124.56445
80 9.249138 19056.27148
81 11.200404 18958.39648
82 13.0338 18852.51367
83 14.848969 18668.73633
84 16.729538 18527.5332
85 18.612474 18544.78516
86 20.602987 18633.49609
87 22.702454 18795.25195
88 24.77833 19109.18945
89 25.177294 19172.98047
90 28.490406 19890.91406
91 30.613531 20248.89063
92 32.711479 20567.33008
93 34.75729 20858.19336
94 36.782173 21162.08203
95 38.776138 21393.24414
96 40.72184 21584.99414
97 42.52161 21713.19531
98 44.369289 21738.40039
99 46.143349 21729.17773
100 47.779621 21707.57031
101 49.412922 21653.39063
102 50.949528 21590.86133
103 52.417835 21525.71875
104 53.857075 21437.76563
105 55.185429 21373.25195
106 56.485561 21344.87305
107 57.768398 21328.21484
108 58.943233 21319.17578
109 60.056538 21330.51758
110 61.14143 21291.62305
111 62.110706 21135.88086
112 63.0681 20903.34375
113 63.947544 20606.11133
114 64.808846 20297.81055
115 65.595825 20000.29102
116 66.412445 19717.73438
117 67.192184 19500.10352
118 67.992744 19290.37695
119 68.720482 19124.36914
120 69.426147 19051.0918
121 70.138245 19031.12305
122 70.885918 19030.51563
123 71.595657 19061.15039
124 72.285698 19116.24609
125 72.975212 19188.95117
126 73.707901 19285.1875
127 74.392151 19376.19922
128 75.067535 19453.31445
129 75.794853 19522.01953
130 76.391739 19578.1582
131 77.127335 19592.81055
132 77.781105 19605.13867
133 78.431618 19693.26367
134 79.051086 19876.69727
135 79.68145 20072.04492
136 80.275848 20140.12109
137 80.891983 20179.69141
138 81.519623 20299.28906
139 82.112488 20475.50391
140 82.612625 20623.14648
141 83.177994 20686.78906
142 83.742981 20706.4375
143 84.29689 20728.62891
144 84.801743 20770.10156
145 85.366142 20794.39063
146 85.919426 20807.11914
147 86.426506 20824.57813
148 86.913559 20864.11523
149 87.46875 20914.57031
150 87.971497 20934.42578
151 88.451851 20932.81055
152 88.878235 20948.83789
153 89.36071 20969.20898
154 89.832573 20990.38086
155 90.312851 21037.22656
156 90.791679 21036.99805
157 91.224022 20952.89453
158 91.686485 20898.39453
159 92.04731 20878.73438
160 92.485863 20836.66602
161 92.906303 20748.04883
162 93.350357 20647.80273
163 93.768356 20570.61719
164 94.2202 20527.04883
165 94.641785 20494.83203
166 95.037338 20464.71289
167 95.384933 20440.7793
168 95.739662 20423.43359
169 96.111412 20414.75
170 96.439934 20385.69531
171 96.781326 20322.00781
172 97.07505 20278.27734
173 97.321877 20266.07617
174 97.556763 20244.46875
175 97.762444 20222.60938
176 98.018829 20203.42969
177 98.207611 20120.64453
178 98.385574 20003.58008
179 98.512047 19839.70313
180 98.611382 19752.30078

72
welldata/barney.data Normal file
View File

@@ -0,0 +1,72 @@
[ [98.878479 98.833061 98.687271 98.496696 98.207436 ...
97.906197 97.608604 97.173904 96.616814 96.06707 ...
95.433464 94.750229 93.93502 93.058502 92.094398 ...
91.115143 90.038254 88.876823 87.800278 86.602104 ...
85.338539 84.031471 82.621895 81.234825 79.743828 ...
78.161911 76.624016 74.942314 73.294777 71.784866 ...
69.821587 68.057617 66.191177 64.338715 62.373264 ...
60.399395 58.512794 56.390789 54.341087 52.511631 ...
50.630878 48.341488 46.053364 43.820122 41.556591 ...
39.372406 37.154778 34.933659 32.695152 30.451603 ...
28.177065 26.004868 23.809713 21.60713 19.421371 ...
17.294621 15.197564 13.184119 11.266252 9.394399 ...
7.674011 6.022047 4.538721 3.267299 2.119907 ...
1.141826 0.418223 -0.12613 -0.467637 -0.51326 ...
-0.364345 0.018931 0.580402 1.374856 2.370766 ...
3.548366 4.901436 6.289977 7.810155 9.249138 ...
11.200404 13.0338 14.848969 16.729538 18.612474 ...
20.602987 22.702454 24.77833 25.177294 28.490406 ...
30.613531 32.711479 34.75729 36.782173 38.776138 ...
40.72184 42.52161 44.369289 46.143349 47.779621 ...
49.412922 50.949528 52.417835 53.857075 55.185429 ...
56.485561 57.768398 58.943233 60.056538 61.14143 ...
62.110706 63.0681 63.947544 64.808846 65.595825 ...
66.412445 67.192184 67.992744 68.720482 69.426147 ...
70.138245 70.885918 71.595657 72.285698 72.975212 ...
73.707901 74.392151 75.067535 75.794853 76.391739 ...
77.127335 77.781105 78.431618 79.051086 79.68145 ...
80.275848 80.891983 81.519623 82.112488 82.612625 ...
83.177994 83.742981 84.29689 84.801743 85.366142 ...
85.919426 86.426506 86.913559 87.46875 87.971497 ...
88.451851 88.878235 89.36071 89.832573 90.312851 ...
90.791679 91.224022 91.686485 92.04731 92.485863 ...
92.906303 93.350357 93.768356 94.2202 94.641785 ...
95.037338 95.384933 95.739662 96.111412 96.439934 ...
96.781326 97.07505 97.321877 97.556763 97.762444 ...
98.018829 98.207611 98.385574 98.512047 98.611382 ]
[19687.71875 19608.97656 19612.3457 19617.55859 19576.69141 ...
19510.25391 19436.69141 19366.32422 19293.74609 19212.42578 ...
19121.12695 18985.37695 18818.625 18631.74219 18416.21875 ...
18170.38086 18007.29492 17900.4375 17741.07617 17562.10938 ...
17415.25781 17233.49805 17034.44922 16871.27148 16691.58398 ...
16506.85547 16325.87402 16161.14941 15983.00977 15803.35645 ...
15646.15918 15501.06152 15320.59375 15120.2168 14918.42969 ...
14698.55273 14469.47559 14288.49414 14071.99609 13792.64746 ...
13525.46582 13301.0293 13113.85938 12951.33594 12804.93066 ...
12658.11328 12548.74707 12547.72754 12614.78418 12721.59473 ...
12871.17481 13069.79883 13288.17578 13527.0127 13794.61719 ...
14039.40234 14301.56641 14633.20313 14979.44824 15288.05664 ...
15624.27734 15980.21387 16348.66211 16731.54492 17103.81836 ...
17435.94922 17803.7207 18275.1875 18628.31641 18861.23242 ...
19057.53125 19199.125 19272.33203 19284.80859 19296.14063 ...
19280.52344 19209.49219 19161.12305 19124.56445 19056.27148 ...
18958.39648 18852.51367 18668.73633 18527.5332 18544.78516 ...
18633.49609 18795.25195 19109.18945 19172.98047 19890.91406 ...
20248.89063 20567.33008 20858.19336 21162.08203 21393.24414 ...
21584.99414 21713.19531 21738.40039 21729.17773 21707.57031 ...
21653.39063 21590.86133 21525.71875 21437.76563 21373.25195 ...
21344.87305 21328.21484 21319.17578 21330.51758 21291.62305 ...
21135.88086 20903.34375 20606.11133 20297.81055 20000.29102 ...
19717.73438 19500.10352 19290.37695 19124.36914 19051.0918 ...
19031.12305 19030.51563 19061.15039 19116.24609 19188.95117 ...
19285.1875 19376.19922 19453.31445 19522.01953 19578.1582 ...
19592.81055 19605.13867 19693.26367 19876.69727 20072.04492 ...
20140.12109 20179.69141 20299.28906 20475.50391 20623.14648 ...
20686.78906 20706.4375 20728.62891 20770.10156 20794.39063 ...
20807.11914 20824.57813 20864.11523 20914.57031 20934.42578 ...
20932.81055 20948.83789 20969.20898 20990.38086 21037.22656 ...
21036.99805 20952.89453 20898.39453 20878.73438 20836.66602 ...
20748.04883 20647.80273 20570.61719 20527.04883 20494.83203 ...
20464.71289 20440.7793 20423.43359 20414.75 20385.69531 ...
20322.00781 20278.27734 20266.07617 20244.46875 20222.60938 ...
20203.42969 20120.64453 20003.58008 19839.70313 19752.30078 ] ]

30
welldata/csv_to_matlab.py Normal file
View File

@@ -0,0 +1,30 @@
"""Convert a CSV file of position,load pairs to a string representative of a matlab array."""
import csv
position = []
load = []
with open("barney.csv", 'r') as csv_file:
csvreader = csv.reader(csv_file)
for row in csvreader:
position.append(row[0])
load.append(row[1])
def array_to_matlab_split(a, split_after=5):
"""Turn a python array into a matlab array."""
a_string = "["
for i in range(0, len(a)):
if i > 0 and i % split_after == 0:
a_string += " ...\n"
a_string += a[i] + " "
a_string += "]"
return a_string
position_string = array_to_matlab_split(position, split_after=5)
load_string = array_to_matlab_split(load, split_after=5)
print("[ " + position_string + "\n" + load_string + " ];")

225
welldata/mallet_single.csv Normal file
View File

@@ -0,0 +1,225 @@
0,8484.74
0.066215,8615.27
0.171112,8951.1
0.316819,9280.12
0.498586,9613.75
0.715024,10084.6
0.97621,10624.4
1.2883,10886
1.63867,10787.3
2.02093,10515.7
2.43243,10317
2.87705,10188.2
3.36461,10107.5
3.8875,10058.3
4.44299,10128.3
5.03967,10279.2
5.67946,10368
6.35611,10397.3
7.05754,10422.5
7.7809,10496.4
8.53069,10721.6
9.32235,11145.6
10.1506,11569.2
11.013,12015.8
11.9097,12514.9
12.842,12892
13.8065,12964.3
14.7986,12892.5
15.8226,12869.7
16.8842,12904.7
17.9785,12974.2
19.1005,13055.2
20.2442,13145.5
21.4129,13406.1
22.6127,13789.8
23.8375,13974.4
25.0839,14102
26.3506,14397.5
27.6347,14832.5
28.936,15269.6
30.2719,15730.9
31.6607,16128.3
33.0885,16138.4
34.5314,15870.9
35.9861,15687
37.4602,15666
38.9614,15642.7
40.4966,15570.9
42.0607,15503.3
43.6394,15452.3
45.2335,15386.8
46.8483,15105.5
48.4878,14678
50.152,14434.2
51.8308,14364.4
53.5259,14356.1
55.2375,14236.2
56.9713,14093.1
58.7226,13891.4
60.4832,13598.9
62.2413,13513.1
64.007,13694.1
65.7803,13886.4
67.5656,13987.5
69.3593,14073.4
71.1599,14208.2
72.9585,14286.5
74.7583,14322
76.556,14312
78.3522,14427.3
80.1504,14687.4
81.9521,14818.9
83.7547,14816.3
85.5546,14750.8
87.3472,14682.4
89.1313,14642.8
90.9046,14661.6
92.6711,14728.2
94.4368,14709.3
96.2018,14537.4
97.9579,14323.4
99.6993,14149.4
101.428,13975.5
103.143,13769.3
104.844,13652.9
106.527,13573.9
108.191,13526.9
109.842,13466.2
111.478,13316.7
113.09,13212.9
114.669,13210.8
116.219,13258
117.74,13319.1
119.238,13443.1
120.709,13533.1
122.148,13525.3
123.547,13536
124.909,13699.2
126.234,14000.9
127.523,14235.3
128.772,14383.4
129.979,14674.1
131.149,14953.1
132.282,14981
133.374,14929.8
134.416,14898.1
135.41,14954.7
136.359,14988.7
137.266,14932.4
138.126,14798
138.939,14617.8
139.7,14300.7
140.403,13873.7
141.05,13581.8
141.639,13342
142.175,13062.5
142.646,12627.3
143.058,12231.8
143.405,11767.8
143.683,11330.1
143.878,10991
143.996,10990.7
144,11457.4
143.95,13420
143.839,14602.7
143.662,15329.3
143.407,15622.4
143.091,15098.6
142.687,14170.6
142.183,13026.4
141.6,12231.2
140.93,11669.8
140.172,11416.2
139.341,11030.2
138.434,10372.5
137.43,9651.43
136.346,9073.28
135.19,8552.75
133.945,7961.3
132.611,7503.35
131.196,7265.97
129.659,7476.43
128.044,8425.79
126.37,8998.29
124.599,9058.83
122.758,8750.14
120.876,7922.02
119.005,6829.66
117.1,5739.27
115.16,4938.02
113.195,4556.92
111.124,4009.97
108.956,3076.65
106.734,2809.43
104.501,3435.44
102.236,4114.62
99.8892,4774.08
97.4932,5494.42
95.0781,6051.92
92.6506,6267.32
90.2226,6215.52
87.773,6104.6
85.3137,6203.32
82.8008,6609.69
80.2456,7243.11
77.6691,7868.18
75.059,8409.37
72.4444,8770.91
69.889,9123
67.3891,9726.37
64.9092,10533.1
62.449,10876.2
60.006,10686.3
57.606,10357
55.2767,9938.64
53.0145,9433.22
50.7868,8896.33
48.581,8634.28
46.4189,8698.11
44.3031,8840.73
42.2375,8833.26
40.2273,8726.52
38.2721,8607.14
36.3855,8449.8
34.5648,8343.22
32.8088,8334.71
31.0978,8226.37
29.4095,7798.63
27.7617,7187.13
26.1538,6973.54
24.6108,7240.64
23.1211,7661.24
21.6577,8004.98
20.237,8433.32
18.8709,9012.46
17.57,9429.65
16.3306,9509.81
15.1428,9421.25
13.9942,9405.43
12.8928,9478.66
11.837,9530.74
10.8323,9548.98
9.88763,9552.49
8.99399,9483.55
8.1242,9405.81
7.2898,9492.06
6.51456,9765.15
5.80287,9996.22
5.14662,9887.11
4.5243,9551.61
3.93801,9254.68
3.40371,8961.15
2.91193,8378.6
2.4483,7819.07
2.01826,7649.43
1.63363,7745.02
1.29812,7860
1.00485,7939.93
0.741844,8024.7
0.515951,8110.57
0.329747,8151.66
0.179453,8272.08
0.073617,8535.67
0.018252,8665.32
0,8484.74
1 0 8484.74
2 0.066215 8615.27
3 0.171112 8951.1
4 0.316819 9280.12
5 0.498586 9613.75
6 0.715024 10084.6
7 0.97621 10624.4
8 1.2883 10886
9 1.63867 10787.3
10 2.02093 10515.7
11 2.43243 10317
12 2.87705 10188.2
13 3.36461 10107.5
14 3.8875 10058.3
15 4.44299 10128.3
16 5.03967 10279.2
17 5.67946 10368
18 6.35611 10397.3
19 7.05754 10422.5
20 7.7809 10496.4
21 8.53069 10721.6
22 9.32235 11145.6
23 10.1506 11569.2
24 11.013 12015.8
25 11.9097 12514.9
26 12.842 12892
27 13.8065 12964.3
28 14.7986 12892.5
29 15.8226 12869.7
30 16.8842 12904.7
31 17.9785 12974.2
32 19.1005 13055.2
33 20.2442 13145.5
34 21.4129 13406.1
35 22.6127 13789.8
36 23.8375 13974.4
37 25.0839 14102
38 26.3506 14397.5
39 27.6347 14832.5
40 28.936 15269.6
41 30.2719 15730.9
42 31.6607 16128.3
43 33.0885 16138.4
44 34.5314 15870.9
45 35.9861 15687
46 37.4602 15666
47 38.9614 15642.7
48 40.4966 15570.9
49 42.0607 15503.3
50 43.6394 15452.3
51 45.2335 15386.8
52 46.8483 15105.5
53 48.4878 14678
54 50.152 14434.2
55 51.8308 14364.4
56 53.5259 14356.1
57 55.2375 14236.2
58 56.9713 14093.1
59 58.7226 13891.4
60 60.4832 13598.9
61 62.2413 13513.1
62 64.007 13694.1
63 65.7803 13886.4
64 67.5656 13987.5
65 69.3593 14073.4
66 71.1599 14208.2
67 72.9585 14286.5
68 74.7583 14322
69 76.556 14312
70 78.3522 14427.3
71 80.1504 14687.4
72 81.9521 14818.9
73 83.7547 14816.3
74 85.5546 14750.8
75 87.3472 14682.4
76 89.1313 14642.8
77 90.9046 14661.6
78 92.6711 14728.2
79 94.4368 14709.3
80 96.2018 14537.4
81 97.9579 14323.4
82 99.6993 14149.4
83 101.428 13975.5
84 103.143 13769.3
85 104.844 13652.9
86 106.527 13573.9
87 108.191 13526.9
88 109.842 13466.2
89 111.478 13316.7
90 113.09 13212.9
91 114.669 13210.8
92 116.219 13258
93 117.74 13319.1
94 119.238 13443.1
95 120.709 13533.1
96 122.148 13525.3
97 123.547 13536
98 124.909 13699.2
99 126.234 14000.9
100 127.523 14235.3
101 128.772 14383.4
102 129.979 14674.1
103 131.149 14953.1
104 132.282 14981
105 133.374 14929.8
106 134.416 14898.1
107 135.41 14954.7
108 136.359 14988.7
109 137.266 14932.4
110 138.126 14798
111 138.939 14617.8
112 139.7 14300.7
113 140.403 13873.7
114 141.05 13581.8
115 141.639 13342
116 142.175 13062.5
117 142.646 12627.3
118 143.058 12231.8
119 143.405 11767.8
120 143.683 11330.1
121 143.878 10991
122 143.996 10990.7
123 144 11457.4
124 143.95 13420
125 143.839 14602.7
126 143.662 15329.3
127 143.407 15622.4
128 143.091 15098.6
129 142.687 14170.6
130 142.183 13026.4
131 141.6 12231.2
132 140.93 11669.8
133 140.172 11416.2
134 139.341 11030.2
135 138.434 10372.5
136 137.43 9651.43
137 136.346 9073.28
138 135.19 8552.75
139 133.945 7961.3
140 132.611 7503.35
141 131.196 7265.97
142 129.659 7476.43
143 128.044 8425.79
144 126.37 8998.29
145 124.599 9058.83
146 122.758 8750.14
147 120.876 7922.02
148 119.005 6829.66
149 117.1 5739.27
150 115.16 4938.02
151 113.195 4556.92
152 111.124 4009.97
153 108.956 3076.65
154 106.734 2809.43
155 104.501 3435.44
156 102.236 4114.62
157 99.8892 4774.08
158 97.4932 5494.42
159 95.0781 6051.92
160 92.6506 6267.32
161 90.2226 6215.52
162 87.773 6104.6
163 85.3137 6203.32
164 82.8008 6609.69
165 80.2456 7243.11
166 77.6691 7868.18
167 75.059 8409.37
168 72.4444 8770.91
169 69.889 9123
170 67.3891 9726.37
171 64.9092 10533.1
172 62.449 10876.2
173 60.006 10686.3
174 57.606 10357
175 55.2767 9938.64
176 53.0145 9433.22
177 50.7868 8896.33
178 48.581 8634.28
179 46.4189 8698.11
180 44.3031 8840.73
181 42.2375 8833.26
182 40.2273 8726.52
183 38.2721 8607.14
184 36.3855 8449.8
185 34.5648 8343.22
186 32.8088 8334.71
187 31.0978 8226.37
188 29.4095 7798.63
189 27.7617 7187.13
190 26.1538 6973.54
191 24.6108 7240.64
192 23.1211 7661.24
193 21.6577 8004.98
194 20.237 8433.32
195 18.8709 9012.46
196 17.57 9429.65
197 16.3306 9509.81
198 15.1428 9421.25
199 13.9942 9405.43
200 12.8928 9478.66
201 11.837 9530.74
202 10.8323 9548.98
203 9.88763 9552.49
204 8.99399 9483.55
205 8.1242 9405.81
206 7.2898 9492.06
207 6.51456 9765.15
208 5.80287 9996.22
209 5.14662 9887.11
210 4.5243 9551.61
211 3.93801 9254.68
212 3.40371 8961.15
213 2.91193 8378.6
214 2.4483 7819.07
215 2.01826 7649.43
216 1.63363 7745.02
217 1.29812 7860
218 1.00485 7939.93
219 0.741844 8024.7
220 0.515951 8110.57
221 0.329747 8151.66
222 0.179453 8272.08
223 0.073617 8535.67
224 0.018252 8665.32
225 0 8484.74

87
welldata/melinda252.csv Normal file
View File

@@ -0,0 +1,87 @@
126.5051,10223.6484
123.9029,10230.2314
121.0463,10189.2041
117.5635,10083.4697
113.8426,9917.5088
109.5759,9707.9521
106.2378,9516.8672
101.8044,9289.751
97.3519,9089.0195
92.8,8866.0742
88.4091,8614.7021
84.0076,8358.5879
79.4541,8115.3457
73.9173,7900.021
68.8499,7737.3984
64.0064,7629.6919
59.7473,7575.2832
54.2922,7550.3623
49.2909,7553.3936
45.0403,7569.3081
40.2633,7617.9331
35.5266,7699.2344
31.471,7834.8071
27.2086,8026.6318
22.9661,8260.4336
19.2719,8528.791
16.2453,8817.7529
13.1741,9082.624
10.9223,9415.6523
8.0221,9724.8018
5.5349,10025.0273
3.4914,10320.8779
2.4433,10608.1514
1.7148,10871.1895
0.6192,11109.6748
1.7067,11306.8379
2.9805,11469.5664
4.4613,11593.3682
6.7297,11745.6162
9.3626,11901.7324
11.8843,12057.29
15.1879,12195.709
18.4037,12295.3252
21.3285,12352.6484
24.8961,12380.8867
29.3451,12399.6924
33.9272,12436.4443
38.6627,12508.127
43.3936,12693.4512
48.5832,12947.9678
53.3561,13279.9844
58.4396,13640.2158
63.1561,13988.7295
67.9264,14302.9248
72.3098,14561.3086
77.6417,14780.2432
81.9482,14970.4375
87.1089,15137.6719
91.5611,15345.9346
96.0731,15522.124
100.0094,15656.2988
103.7351,15724.6758
108.128,15701.9902
111.5638,15592.5537
114.0383,15405.3252
118.2311,15168.708
121.0557,14897.0527
124.7529,14637.6436
127.9931,14284.2031
130.6817,13907.2744
132.779,13482.124
135.5623,13016.0996
137.6565,12550.0195
139.2685,12102.9883
140.2527,11735.0107
141.1513,11428.2813
141.4701,11193.6563
141.7055,11011.8604
142.144,10804.417
141.2585,10480.751
140.0993,10376.5615
138.4791,10307.9443
136.8406,10259.3877
135.2337,10218.1396
133.2669,10192.2598
130.8739,10191.4248
126.5051,10223.6484
1 126.5051 10223.6484
2 123.9029 10230.2314
3 121.0463 10189.2041
4 117.5635 10083.4697
5 113.8426 9917.5088
6 109.5759 9707.9521
7 106.2378 9516.8672
8 101.8044 9289.751
9 97.3519 9089.0195
10 92.8 8866.0742
11 88.4091 8614.7021
12 84.0076 8358.5879
13 79.4541 8115.3457
14 73.9173 7900.021
15 68.8499 7737.3984
16 64.0064 7629.6919
17 59.7473 7575.2832
18 54.2922 7550.3623
19 49.2909 7553.3936
20 45.0403 7569.3081
21 40.2633 7617.9331
22 35.5266 7699.2344
23 31.471 7834.8071
24 27.2086 8026.6318
25 22.9661 8260.4336
26 19.2719 8528.791
27 16.2453 8817.7529
28 13.1741 9082.624
29 10.9223 9415.6523
30 8.0221 9724.8018
31 5.5349 10025.0273
32 3.4914 10320.8779
33 2.4433 10608.1514
34 1.7148 10871.1895
35 0.6192 11109.6748
36 1.7067 11306.8379
37 2.9805 11469.5664
38 4.4613 11593.3682
39 6.7297 11745.6162
40 9.3626 11901.7324
41 11.8843 12057.29
42 15.1879 12195.709
43 18.4037 12295.3252
44 21.3285 12352.6484
45 24.8961 12380.8867
46 29.3451 12399.6924
47 33.9272 12436.4443
48 38.6627 12508.127
49 43.3936 12693.4512
50 48.5832 12947.9678
51 53.3561 13279.9844
52 58.4396 13640.2158
53 63.1561 13988.7295
54 67.9264 14302.9248
55 72.3098 14561.3086
56 77.6417 14780.2432
57 81.9482 14970.4375
58 87.1089 15137.6719
59 91.5611 15345.9346
60 96.0731 15522.124
61 100.0094 15656.2988
62 103.7351 15724.6758
63 108.128 15701.9902
64 111.5638 15592.5537
65 114.0383 15405.3252
66 118.2311 15168.708
67 121.0557 14897.0527
68 124.7529 14637.6436
69 127.9931 14284.2031
70 130.6817 13907.2744
71 132.779 13482.124
72 135.5623 13016.0996
73 137.6565 12550.0195
74 139.2685 12102.9883
75 140.2527 11735.0107
76 141.1513 11428.2813
77 141.4701 11193.6563
78 141.7055 11011.8604
79 142.144 10804.417
80 141.2585 10480.751
81 140.0993 10376.5615
82 138.4791 10307.9443
83 136.8406 10259.3877
84 135.2337 10218.1396
85 133.2669 10192.2598
86 130.8739 10191.4248
87 126.5051 10223.6484

87
welldata/melinda254.csv Normal file
View File

@@ -0,0 +1,87 @@
103.8524,13004.6484
99.3235,13028.7656
94.6525,13041.959
90.3378,13048.8369
85.9424,13055.4863
81.5922,13066.1152
77.7294,13085.7695
72.2623,13106.7188
67.7774,13124.3232
62.7635,13131.6006
58.5869,13126.2197
55.9227,13108.9531
51.9493,13084.5322
47.5958,13058.8652
43.4364,13038.957
39.6636,13028.2158
35.9572,13021.4463
31.702,13015.9033
28.2235,13006.2363
24.4126,12991.1279
21.145,12974.1172
17.8644,12959.8584
14.7241,12954.2061
11.6427,12959.3555
9.5707,12974.1572
7.5519,12993.5811
5.684,13020.9707
4.5142,13044.9941
3.407,13066.5684
2.6415,13087.3486
1.9993,13110.4453
2.4759,13141.1279
3.1328,13221.6377
3.9276,13270.7041
6.3712,13316.8613
10.8141,13416.2461
11.7525,13445.5029
15.5456,13451.9746
18.2811,13430.4287
21.5436,13386.2188
25.3076,13341.4785
29.0923,13319.165
32.6206,13328.5195
36.0253,13362.4609
41.5656,13420.6543
46.1242,13465.6563
48.9711,13490.5332
52.8448,13495.6016
57.4217,13492.8281
61.6421,13494.4248
65.6471,13508.1133
70.5472,13537.1016
75.5646,13576.4512
79.8047,13611.0479
84.1742,13634.6172
89.215,13628.5977
93.2983,13600.9209
98.0339,13561.9141
101.932,13527.0811
106.4618,13505.1328
110.2827,13494.4043
114.0381,13482.3555
117.735,13456.8242
120.9061,13420.4795
125.1445,13358.7002
128.2455,13298.249
131.6063,13238.7744
134.2098,13190.1445
136.7013,13156.8242
138.0084,13133.3457
139.6546,13112.498
140.6283,13085.415
141.2953,13048.1016
141.0792,13008.6719
140.3856,12960.6914
139.3338,12933.0498
138.0939,12921.9873
136.2462,12921.4219
134.3031,12922.918
131.4601,12921.0811
128.6249,12914.5273
125.4015,12904.8623
122.3661,12898.126
119.0274,12898.8545
115.1404,12912.5039
112.1398,12936.4561
103.8524,13004.6484
1 103.8524 13004.6484
2 99.3235 13028.7656
3 94.6525 13041.959
4 90.3378 13048.8369
5 85.9424 13055.4863
6 81.5922 13066.1152
7 77.7294 13085.7695
8 72.2623 13106.7188
9 67.7774 13124.3232
10 62.7635 13131.6006
11 58.5869 13126.2197
12 55.9227 13108.9531
13 51.9493 13084.5322
14 47.5958 13058.8652
15 43.4364 13038.957
16 39.6636 13028.2158
17 35.9572 13021.4463
18 31.702 13015.9033
19 28.2235 13006.2363
20 24.4126 12991.1279
21 21.145 12974.1172
22 17.8644 12959.8584
23 14.7241 12954.2061
24 11.6427 12959.3555
25 9.5707 12974.1572
26 7.5519 12993.5811
27 5.684 13020.9707
28 4.5142 13044.9941
29 3.407 13066.5684
30 2.6415 13087.3486
31 1.9993 13110.4453
32 2.4759 13141.1279
33 3.1328 13221.6377
34 3.9276 13270.7041
35 6.3712 13316.8613
36 10.8141 13416.2461
37 11.7525 13445.5029
38 15.5456 13451.9746
39 18.2811 13430.4287
40 21.5436 13386.2188
41 25.3076 13341.4785
42 29.0923 13319.165
43 32.6206 13328.5195
44 36.0253 13362.4609
45 41.5656 13420.6543
46 46.1242 13465.6563
47 48.9711 13490.5332
48 52.8448 13495.6016
49 57.4217 13492.8281
50 61.6421 13494.4248
51 65.6471 13508.1133
52 70.5472 13537.1016
53 75.5646 13576.4512
54 79.8047 13611.0479
55 84.1742 13634.6172
56 89.215 13628.5977
57 93.2983 13600.9209
58 98.0339 13561.9141
59 101.932 13527.0811
60 106.4618 13505.1328
61 110.2827 13494.4043
62 114.0381 13482.3555
63 117.735 13456.8242
64 120.9061 13420.4795
65 125.1445 13358.7002
66 128.2455 13298.249
67 131.6063 13238.7744
68 134.2098 13190.1445
69 136.7013 13156.8242
70 138.0084 13133.3457
71 139.6546 13112.498
72 140.6283 13085.415
73 141.2953 13048.1016
74 141.0792 13008.6719
75 140.3856 12960.6914
76 139.3338 12933.0498
77 138.0939 12921.9873
78 136.2462 12921.4219
79 134.3031 12922.918
80 131.4601 12921.0811
81 128.6249 12914.5273
82 125.4015 12904.8623
83 122.3661 12898.126
84 119.0274 12898.8545
85 115.1404 12912.5039
86 112.1398 12936.4561
87 103.8524 13004.6484