Adds algorithm to Well class. Almost working
Position returned is too large by a factor of ~2
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
*.m~
|
||||
@@ -47,7 +47,9 @@ classdef AnalogInput < handle
|
||||
end
|
||||
|
||||
if (obj.badReads > 10)
|
||||
pause(10);
|
||||
"Bad Reads"
|
||||
obj.badReads
|
||||
pause(0.010);
|
||||
end
|
||||
end
|
||||
|
||||
@@ -62,13 +64,21 @@ classdef AnalogInput < handle
|
||||
|
||||
methods(Static)
|
||||
function test
|
||||
pi = raspi('10.0.0.104', 'pi', 'HenryPump@1903');
|
||||
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);
|
||||
|
||||
anInput1.read()
|
||||
anInput2.read()
|
||||
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
|
||||
|
||||
17
Card.m
17
Card.m
@@ -4,10 +4,10 @@ classdef Card < handle
|
||||
strokeNumber;
|
||||
strokeStartTime;
|
||||
|
||||
surfacePosition={};
|
||||
surfaceLoad={};
|
||||
downholePosition={};
|
||||
downholeLoad={};
|
||||
surfacePosition=zeros(1, 1500, 'double');
|
||||
surfaceLoad=zeros(1, 1500, 'double');
|
||||
downholePosition=zeros(1, 1500, 'double');
|
||||
downholeLoad=zeros(1, 1500, 'double');
|
||||
|
||||
surfacePositionMax=LPPair(0,0);
|
||||
surfacePositionMin=LPPair(0,0);
|
||||
@@ -54,10 +54,11 @@ classdef Card < handle
|
||||
end
|
||||
|
||||
function push(obj, s_pos, s_load, d_pos, d_load)
|
||||
obj.surfacePosition = [obj.surfacePosition s_pos];
|
||||
obj.surfaceLoad = [obj.surfaceLoad s_load];
|
||||
obj.downholePosition = [obj.downholePosition d_pos];
|
||||
obj.downholeLoad = [obj.downholeLoad d_load];
|
||||
obj.numPointsUsed = obj.numPointsUsed + 1;
|
||||
obj.surfacePosition(obj.numPointsUsed) = s_pos;
|
||||
obj.surfaceLoad(obj.numPointsUsed) = s_load;
|
||||
obj.downholePosition(obj.numPointsUsed) = d_pos;
|
||||
obj.downholeLoad(obj.numPointsUsed) = d_load;
|
||||
end
|
||||
|
||||
function calcStrokeData(obj, numSlices, fluidGradient, rodDepth, ...
|
||||
|
||||
37
Database.m
37
Database.m
@@ -1,37 +0,0 @@
|
||||
|
||||
classdef Database < handle
|
||||
properties
|
||||
hostname;
|
||||
username;
|
||||
password;
|
||||
database='poc';
|
||||
port=27017;
|
||||
mongo;
|
||||
end
|
||||
|
||||
methods
|
||||
function obj = Database(hostname, username, password)
|
||||
javaaddpath 'mongo-java-driver-3.4.2.jar';
|
||||
import com.mongodb.*;
|
||||
obj.hostname = hostname;
|
||||
obj.username = username;
|
||||
obj.password = password;
|
||||
credential = MongoCredential.createCredential(obj.username, obj.database, obj.password);
|
||||
obj.mongo = MongoClient(obj.hostname, obj.port);
|
||||
% obj.mongodbconn = mongodatabase(hostname, obj.port, obj.database, 'UserName', username, 'Password', password); %#ok<*NOPTS>
|
||||
end
|
||||
end
|
||||
|
||||
methods(Static)
|
||||
function test
|
||||
db = Database('localhost', 'poc_java', 'HenryPump@1903');
|
||||
database = db.mongo.getDatabase(db.database);
|
||||
database.auth(db.username, db.password);
|
||||
cards = database.getCollection('cards');
|
||||
|
||||
cards.count()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
@@ -1,676 +0,0 @@
|
||||
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
|
||||
|
377
Well.m
377
Well.m
@@ -1,6 +1,377 @@
|
||||
classdef Well
|
||||
|
||||
|
||||
classdef Well < handle
|
||||
properties(Constant)
|
||||
% Constants (SHOULD THESE BE ELSEWHERE?)
|
||||
YM_STEEL=30.5;
|
||||
YM_FIBERGLASS=7.2;
|
||||
end
|
||||
properties
|
||||
wellName;
|
||||
|
||||
% Current Values
|
||||
currentSurfacePosition,currentSurfaceLoad;
|
||||
currentDownholePosition,currentDownholeLoad;
|
||||
|
||||
currentCard=Card(0);
|
||||
|
||||
% 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;
|
||||
rodLength;
|
||||
rodDiameter;
|
||||
rodYM;
|
||||
rodWeightPerFoot;
|
||||
|
||||
|
||||
% Calculated Taper Parameters
|
||||
a;
|
||||
area;
|
||||
pressure;
|
||||
stretch;
|
||||
force;
|
||||
alpha;
|
||||
xOverA;
|
||||
factorArray;
|
||||
lagIndex;
|
||||
lengthRequired;
|
||||
centerPoint;
|
||||
count;
|
||||
|
||||
topPosArray;
|
||||
topLoadArray;
|
||||
|
||||
buoyantForceTotal = 0.0;
|
||||
rodDepthTotal = 0.0;
|
||||
rodWeightAirTotal = 0.0;
|
||||
rodWeightFluidTotal = 0.0;
|
||||
|
||||
|
||||
|
||||
% 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)
|
||||
me.wellName = name;
|
||||
|
||||
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))];
|
||||
|
||||
% 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.taperSetup();
|
||||
end
|
||||
|
||||
function taperSetup(me)
|
||||
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
|
||||
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));
|
||||
|
||||
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)
|
||||
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);
|
||||
pumpLoad = me.load(tap) + me.force(me.numTapers);
|
||||
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
|
||||
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
|
||||
319
algorithm.m
Normal file
319
algorithm.m
Normal file
@@ -0,0 +1,319 @@
|
||||
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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
673
mallet.csv
Normal file
673
mallet.csv
Normal file
@@ -0,0 +1,673 @@
|
||||
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
|
||||
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,8566.76
|
||||
0.066215,8484.74
|
||||
0.171112,8615.27
|
||||
0.316819,8951.1
|
||||
0.498586,9280.12
|
||||
0.715024,9613.75
|
||||
0.97621,10084.6
|
||||
1.2883,10624.4
|
||||
1.63867,10886
|
||||
2.02093,10787.3
|
||||
2.43243,10515.7
|
||||
2.87705,10317
|
||||
3.36461,10188.2
|
||||
3.8875,10107.5
|
||||
4.44299,10058.3
|
||||
5.03967,10128.3
|
||||
5.67946,10279.2
|
||||
6.35611,10368
|
||||
7.05754,10397.3
|
||||
7.7809,10422.5
|
||||
8.53069,10496.4
|
||||
9.32235,10721.6
|
||||
10.1506,11145.6
|
||||
11.013,11569.2
|
||||
11.9097,12015.8
|
||||
12.842,12514.9
|
||||
13.8065,12892
|
||||
14.7986,12964.3
|
||||
15.8226,12892.5
|
||||
16.8842,12869.7
|
||||
17.9785,12904.7
|
||||
19.1005,12974.2
|
||||
20.2442,13055.2
|
||||
21.4129,13145.5
|
||||
22.6127,13406.1
|
||||
23.8375,13789.8
|
||||
25.0839,13974.4
|
||||
26.3506,14102
|
||||
27.6347,14397.5
|
||||
28.936,14832.5
|
||||
30.2719,15269.6
|
||||
31.6607,15730.9
|
||||
33.0885,16128.3
|
||||
34.5314,16138.4
|
||||
35.9861,15870.9
|
||||
37.4602,15687
|
||||
38.9614,15666
|
||||
40.4966,15642.7
|
||||
42.0607,15570.9
|
||||
43.6394,15503.3
|
||||
45.2335,15452.3
|
||||
46.8483,15386.8
|
||||
48.4878,15105.5
|
||||
50.152,14678
|
||||
51.8308,14434.2
|
||||
53.5259,14364.4
|
||||
55.2375,14356.1
|
||||
56.9713,14236.2
|
||||
58.7226,14093.1
|
||||
60.4832,13891.4
|
||||
62.2413,13598.9
|
||||
64.007,13513.1
|
||||
65.7803,13694.1
|
||||
67.5656,13886.4
|
||||
69.3593,13987.5
|
||||
71.1599,14073.4
|
||||
72.9585,14208.2
|
||||
74.7583,14286.5
|
||||
76.556,14322
|
||||
78.3522,14312
|
||||
80.1504,14427.3
|
||||
81.9521,14687.4
|
||||
83.7547,14818.9
|
||||
85.5546,14816.3
|
||||
87.3472,14750.8
|
||||
89.1313,14682.4
|
||||
90.9046,14642.8
|
||||
92.6711,14661.6
|
||||
94.4368,14728.2
|
||||
96.2018,14709.3
|
||||
97.9579,14537.4
|
||||
99.6993,14323.4
|
||||
101.428,14149.4
|
||||
103.143,13975.5
|
||||
104.844,13769.3
|
||||
106.527,13652.9
|
||||
108.191,13573.9
|
||||
109.842,13526.9
|
||||
111.478,13466.2
|
||||
113.09,13316.7
|
||||
114.669,13212.9
|
||||
116.219,13210.8
|
||||
117.74,13258
|
||||
119.238,13319.1
|
||||
120.709,13443.1
|
||||
122.148,13533.1
|
||||
123.547,13525.3
|
||||
124.909,13536
|
||||
126.234,13699.2
|
||||
127.523,14000.9
|
||||
128.772,14235.3
|
||||
129.979,14383.4
|
||||
131.149,14674.1
|
||||
132.282,14953.1
|
||||
133.374,14981
|
||||
134.416,14929.8
|
||||
135.41,14898.1
|
||||
136.359,14954.7
|
||||
137.266,14988.7
|
||||
138.126,14932.4
|
||||
138.939,14798
|
||||
139.7,14617.8
|
||||
140.403,14300.7
|
||||
141.05,13873.7
|
||||
141.639,13581.8
|
||||
142.175,13342
|
||||
142.646,13062.5
|
||||
143.058,12627.3
|
||||
143.405,12231.8
|
||||
143.683,11767.8
|
||||
143.878,11330.1
|
||||
143.996,10991
|
||||
144,10990.7
|
||||
143.95,11457.4
|
||||
143.839,13420
|
||||
143.662,14602.7
|
||||
143.407,15329.3
|
||||
143.091,15622.4
|
||||
142.687,15098.6
|
||||
142.183,14170.6
|
||||
141.6,13026.4
|
||||
140.93,12231.2
|
||||
140.172,11669.8
|
||||
139.341,11416.2
|
||||
138.434,11030.2
|
||||
137.43,10372.5
|
||||
136.346,9651.43
|
||||
135.19,9073.28
|
||||
133.945,8552.75
|
||||
132.611,7961.3
|
||||
131.196,7503.35
|
||||
129.659,7265.97
|
||||
128.044,7476.43
|
||||
126.37,8425.79
|
||||
124.599,8998.29
|
||||
122.758,9058.83
|
||||
120.876,8750.14
|
||||
119.005,7922.02
|
||||
117.1,6829.66
|
||||
115.16,5739.27
|
||||
113.195,4938.02
|
||||
111.124,4556.92
|
||||
108.956,4009.97
|
||||
106.734,3076.65
|
||||
104.501,2809.43
|
||||
102.236,3435.44
|
||||
99.8892,4114.62
|
||||
97.4932,4774.08
|
||||
95.0781,5494.42
|
||||
92.6506,6051.92
|
||||
90.2226,6267.32
|
||||
87.773,6215.52
|
||||
85.3137,6104.6
|
||||
82.8008,6203.32
|
||||
80.2456,6609.69
|
||||
77.6691,7243.11
|
||||
75.059,7868.18
|
||||
72.4444,8409.37
|
||||
69.889,8770.91
|
||||
67.3891,9123
|
||||
64.9092,9726.37
|
||||
62.449,10533.1
|
||||
60.006,10876.2
|
||||
57.606,10686.3
|
||||
55.2767,10357
|
||||
53.0145,9938.64
|
||||
50.7868,9433.22
|
||||
48.581,8896.33
|
||||
46.4189,8634.28
|
||||
44.3031,8698.11
|
||||
42.2375,8840.73
|
||||
40.2273,8833.26
|
||||
38.2721,8726.52
|
||||
36.3855,8607.14
|
||||
34.5648,8449.8
|
||||
32.8088,8343.22
|
||||
31.0978,8334.71
|
||||
29.4095,8226.37
|
||||
27.7617,7798.63
|
||||
26.1538,7187.13
|
||||
24.6108,6973.54
|
||||
23.1211,7240.64
|
||||
21.6577,7661.24
|
||||
20.237,8004.98
|
||||
18.8709,8433.32
|
||||
17.57,9012.46
|
||||
16.3306,9429.65
|
||||
15.1428,9509.81
|
||||
13.9942,9421.25
|
||||
12.8928,9405.43
|
||||
11.837,9478.66
|
||||
10.8323,9530.74
|
||||
9.88763,9548.98
|
||||
8.99399,9552.49
|
||||
8.1242,9483.55
|
||||
7.2898,9405.81
|
||||
6.51456,9492.06
|
||||
5.80287,9765.15
|
||||
5.14662,9996.22
|
||||
4.5243,9887.11
|
||||
3.93801,9551.61
|
||||
3.40371,9254.68
|
||||
2.91193,8961.15
|
||||
2.4483,8378.6
|
||||
2.01826,7819.07
|
||||
1.63363,7649.43
|
||||
1.29812,7745.02
|
||||
1.00485,7860
|
||||
0.741844,7939.93
|
||||
0.515951,8024.7
|
||||
0.329747,8110.57
|
||||
0.179453,8151.66
|
||||
0.073617,8272.08
|
||||
0.018252,8535.67
|
||||
0,8665.32
|
||||
|
24
test.m
24
test.m
@@ -1,16 +1,10 @@
|
||||
|
||||
% db = MongoDB();
|
||||
% db.getLastStrokeNum()
|
||||
|
||||
% DigitalOutput.test()
|
||||
% MuxSetup.test()
|
||||
% AnalogInput.test()
|
||||
% DigitalInput.test()
|
||||
% Database.test()
|
||||
% c = Card(1);
|
||||
% m = csvread('Mallet No Tag.csv')
|
||||
% for i = 1:size(m,1)
|
||||
% c.push(m(i,1), m(i,2), 0, 0)
|
||||
% end
|
||||
%
|
||||
% scatter(c.surfacePosition(:,:), c.surfaceLoad(:,:))
|
||||
malletData = csvread('mallet.csv');
|
||||
mallet = Well("Mallet");
|
||||
for i = 2:size(malletData,1)
|
||||
[dhPos, dhLoad, status] = mallet.calc(malletData(i,1), malletData(i-1,1), malletData(i,2));
|
||||
if status == 1
|
||||
mallet.currentCard.push(malletData(i,1), malletData(i,2), dhPos, dhLoad);
|
||||
end
|
||||
end
|
||||
figure;plot(mallet.currentCard.downholePosition,mallet.currentCard.downholeLoad)
|
||||
|
||||
Reference in New Issue
Block a user