M a n a g e m e n t o f H y d ra u lic F ra c tu rin g D a ta M a rc h 2 0 1 5, A n n a F ilip p o v a a n d J e re m y E a d e 1
W h a t is H y d ra u lic F ra c tu rin g? Im a g e : h ttp ://w w w.h u ff in g to n p o s t.c o m /c a rl-s a f in a /g a s -f ra c k in g -no-tim e -fo r-_b _3 7 0 5 0 0 5.h tm l 2
W h y is it Im p o rt a n t? U n lo c k s n a t u ra l g a s re s e r v e s A c c o u n ts fo r 6 0 % o f g a s p ro d u c tio n 9 5 % o f w e lls a re ro u tin e ly tre a te d E IA * e s tim a te s 7 5 0 trillio n c u b ic fe e t o f p o te n tia l In c re a s e s p ro d u c tio n b y 5-1 5 % U p to 3 0 tim e s in c re a s e in in itia l f lo w ra te D a t a A n a ly s is E ffe c tiv e n e s s o f th e f ra c jo b C o n tin u e to a d v a n c e te c h n o lo g ie s A b ilit y to a n a ly z e c o s ts a n d re tu rn s *Energy Information Administration h ttp ://w w w.h y d ra u lic f ra c tu rin g.c o m /# /? s e c tio n = jo b s -a n d -th e -e c o n o m y 3
F ra c D a t a C h a lle n g e s N o t in a c e n tra l D B M u ltip le d a t a fo rm a ts W o rd D o c u m e n ts S p re a d s h e e ts P D F s P u b lic ly a v a ila b le d a t a h a s v a ria b le q u a lit y Well Name Proppant Total, lbs Proppant per Stage, lbs Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6 Stage 7 Stage 8 Stage 9 Sum Proppant Total, lbs MEEK JP 16H 402130 601040 601000 402130 1604170 TEMPLE A 1H 217059 107114 183751 217059 507924 PYEATT 0251H 251560 248650 248650 248650 248650 248650 248650 248650 248650 251560 2240760 4
F ra c D a t a S o lu t io n B P O p e r a t e d & In t e r e s t M a n a g e F r a c D a t a P o w e re x p lo re r In fo rm a tic a L e g a c y f ra c D B (s p re a d s h e e ts ) 1 -tim e P P D M 3.8 V is u a liz a t io n & A n a ly s is E D M dm_stim_xxx STIM_xxx Tables WELL_TREATMENT C o m p le tio n R e p o rts (P D F ) Vendor/Public Data
P P D M 3.8 W E L L _T R E A T M E N T
F ra c D a t a M o d e l 7
F ra c D a t a M o d e l C o n t d
1 -T im e L o a d P ro c e s s F o r e a c h s o u rc e s p re a d s h e e t: Data Model Mapping Build Java Load Program Load Data Spreadsheet Column to Table.Attribute Test-Driven Development Reader Data Objects Writer Run Program Quality Control Fix Errors: Ref. data Data model Source data Java Program Delete data Repeat until no load errors
E x a m p le S p re a d s h e e t D a ta M a p p in g
L o a d P ro g ra m Gates Ranch.txt java.io Reader GatesRanch Data Objects StimJob 1 WellCompl 1..n StimJobStage 1 WellPerf.xlsx Escondido.txt java.io Reader Escondido 0..n 0..n 0..n Proppant Fluid Additive ~8000 rows Bluestone.txt java.io Reader Bluestone Writer java.io java.sql Oracle 11g PPDM 3.8 schema ~60 columns FileParse Error.log InsertSQL.log InsertSQL Error.log
T e s t -D riv e n D e v e lo p m e n t (T D D ) junit.framework.testcase ju n it.o rg T e s t, C o d e, R e f a c to r F a s te r, m o re ro b u s t extends R e a d e r _B lu e s t o n e Te s t p u b lic v o id te s t_p a rs e F ile () p u b lic v o id te s t_p a rs e L in e () p u b lic v o id te s t_v e rif y A P I() Reader_Bluestone public List<StimJob> parsefile(string file) public StimJobStage parseline(string line) public String verifyapi(string api) Unit Test Production Code
U n it T e s t - E x a m p le public void test_parsestage() { String line = "422833667788\tABC 130 #1H\t\t1\t\t\t\t\tFrac Tech\t\tSlickwater\t17255\t17452\t\t10416\t11767\t9636\t0\t0.434\t6662\t0.989\t78.4\t80.9\t80\t98 %\t12718\t\t25349\t\t\t\t\t\t\t189148\t239500\t79%\t\t\t\t\t\t\t60\t6\t60\t\t5\t2\t275\t55\t\t\tmyoil Co\t163799\t\t\t\t\t\"5\"\" P110\"\t\t\t\t\t\t\t"; Reader_Bluestone reader = new Reader_Bluestone(); StimJobStage stage = reader.parsestage(line); assertnotnull("parsestage() gave NULL", stage); assertnull("wrong Formation Name", stage.get_formation_name()); assertnull("wrong In Target", stage.get_in_target()); assertnull("wrong remark", stage.get_remark()) ; List<Fluid> fluids = stage.get_fluids(); assertnotnull("get_fluids() gave NULL", fluids); assertequals("should have 1 fluid", 1, fluids.size()); Fluid fluid = fluids.get(0); assertequals("wrong fluid type", "Slickwater", fluid.get_fluid_type()); } assertequals("wrong average pressure", new Double(10416), stage.get_avg_pressure()); assertequals("wrong max pressure", new Double(11767), stage.get_max_pressure()); assertequals("wrong breakdown pressure", new Double(9636),stage.get_breakdown_pressure());
P o w e re x p lo re r C o n f ig u re d fo r C re a t e /U p d a te /D e le t e o f S t im _x x x t a b le s
U s a g e /R e s u lts U s e rs c a n e n jo y th e b e n e f its o f h a v in g a d a t a b a s e! D a t a is a ll in o n e p la c e M o s t a c c u ra te a v a ila b le d a t a E a s y to e x p o rt a n d im p o rt in a w a y u s e rs w a n t to s e e th e d a t a R e fe re n c e t a b le s fo r f ilte rin g o n a ttrib u te s Sand Type 100 MESH 40/70 40/70 40/70 100 MESH 20/40 Super LC (RCS) 100 MESH, 30/50, 40/70 Lewis 20/70 & 30/50 White 20/70 SPEC 20/40 Ottawa 101 MESH 20/40 Jordan 30/50 Resin Coated 20/70 30/50 RC, 40/70 30/50 RC, 20/70, 40/70 100 mesh_20/70_30/50 100 MESH, 20/70 40/70 WHITE 100 mesh_40/70_40/70 RCS 40/70, 100 MESH, 20/70 20/70 & 30/50 RCS 20/70 & 30/50 Sand 20/70 Falcon 100 M & 40/70 LWC 100M & 40/70 PROPPANT_SIZE PROPPANT_NAME PROPPANT_TYPE 100 MESH SAND 20/40 JORDAN SAND 20/40 OTTAWA SAND 20/40 SUPER LC (RCS) SAND 20/40 SAND 20/70 BRAVO SAND 20/70 SPEC SAND 20/70 SAND 30/50 WHITE SAND 30/50 SAND 40/60 OTTAWA SAND 40/70 HYDROPROP SAND 40/70 PRC SAND 40/70 THS SAND 40/70 WHITE SAND 40/70 SAND 15
N e x t S t e p s M ig ra te d a t a m o d e l to C o rp o ra te D a t a R e p o s ito ry (C D R ) E n e rg y IQ T D M W o rk w ith f ra c s e rv ic e c o m p a n ie s o n m a c h in e re a d a b le fo rm a t(x M L ) U s e O C R s o ft w a re fo r le g a c y p d f s /d o c s M ig ra te s tim u la tio n d a t a f ro m E D M to C D R 16
Q u e s tio n s? 17