Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 90

VIỆN DẦU KHÍ VIỆT NAM

TRUNG TÂM NGHIÊN CỨU TÌM KIẾM THĂM DÒ VÀ KHAI THÁC DẦU KHÍ

BÁO CÁO TỔNG KẾT

NHIỆM VỤ NGHIÊN CỨU KHOA HỌC CẤP VIỆN

“ĐÁNH GIÁ MỨC ĐỘ ẢNH HƯỞNG CỦA GIẾNG


BƠM ÉP TỚI GIẾNG KHAI THÁC BẰNG PHƯƠNG
PHÁP ĐIỆN TRỞ ĐIỆN DUNGXÂY DỰNG CƠ SỞ DỮ
LIỆU ĐỊA CHẤN VÀ

THÀNH LẬP BẢN ĐỒ CẤU TRÚC KHU VỰC

PHÍA TÂY, TÂY NAM HẢI NAM VÀ TÍCH HỢP

CÁC KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI PEXMOD”

(QUYẾT ĐỊNH SỐ 26143341/QĐ-VDKVN)


HÀ NỘI, 121-20182019
VIỆN DẦU KHÍ VIỆT NAM
TRUNG TÂM NGHIÊN CỨU TÌM KIẾM THĂM DÒ VÀ KHAI THÁC DẦU KHÍ

BÁO CÁO TỔNG KẾT

NHIỆM VỤ NGHIÊN CỨU KHOA HỌC CẤP VIỆN

“XÂY DỰNG CƠ SỞ DỮ LIỆU ĐỊA CHẤN VÀ

THÀNH LẬP BẢN ĐỒ CẤU TRÚC KHU VỰC

PHÍA TÂY, TÂY NAM HẢI NAM VÀ TÍCH HỢP

CÁC KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI PEXMOD”

“ĐÁNH GIÁ MỨC ĐỘ ẢNH HƯỞNG CỦA GIẾNG


BƠM ÉP TỚI GIẾNG KHAI THÁC BẰNG PHƯƠNG
PHÁP ĐIỆN TRỞ ĐIỆN DUNG”
(QUYẾT ĐỊNH SỐ 26143341/QĐ-VDKVN)

Ngày tháng năm 2018 2019 Ngày tháng năm


20182019

CHỦ NHIỆM CƠ QUAN CHỦ TRÌ

Nguyễn Trung Hiếu


Ngày tháng năm 2018 2019 Ngày
tháng năm 20182019

CHỦ TỊCH HỘI ĐỒNG XDNT CƠ QUAN QUẢN LÝ

HÀ NỘI, 121-20182019

“ĐÁNH GIÁ MỨC ĐỘ ẢNH HƯỞNG CỦA GIẾNG BƠM ÉP TỚI GIẾNG
KHAI THÁC BẰNG PHƯƠNG PHÁP ĐIỆN TRỞ ĐIỆN DUNGXÂY DỰNG
CƠ SỞ DỮ LIỆU ĐỊA CHÀN VÀ THÀNH LẬP

BẢN ĐỒ CẤU TRÚC KHU VỰC PHÍA TÂY, TÂY NAM HẢI NAM VÀ

TÍCH HỢP CÁC KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI PEXMOD”

CHỦ NHIỆM: KSThS. Nguyễn Văn ĐôTrung Hiếu


Phòng Khoan khai thácPhó giám đốc phụ trách, Trung tâm NC
TKTD&KTDK (EPC)

THƯ KÝ: ThS. Trần Nguyên LongNguyễn Thu Huyền


Phòng Khoan khai tháChuyên gia trung cấpc, Trung tâm NC
TKTD&KTDKEPC

TÁC GIẢ: 1. Trần Văn TiếnBùi Huy Hoàng


Chuyên viên Phòng Khoan khai thácBộ phận chuyên môn Địa
chất Dầu khí, Trung tâm NC TKTD&KTDKEPC
2. Lê Vũ QuânNguyễn Quang Tuấn
Trưởng Người đứng đầu Bộ phận chuyên môn Địa chất Dầu khí,
Trung tâm EPCphòng Khoan khai thác, Trung tâm NC
TKTD&KTDK
3. Vũ Mạnh HàoNguyễn Tuấn Anh
Chuyên viên Bộ phận chuyên môn Địa chất Dầu khí, Trung tâm
EPC
Phòng Khoan khai thác, Trung tâm NC TKTD&KTDK
4. Vũ Đức ỨngDiêm Đăng Thuật
Chuyên viên Bộ phận chuyên môn Địa vật lý, Trung tâm
EPCPhòng Khoan khai thác, Trung tâm NC TKTD&KTDK
5. Lê Quốc TrungVũ Kim Liên
Chuyên viên Bộ phận Quản lýNghiê ̣p vụ, Trung tâm EPC

Phó phòng Khoan khai thác, Trung tâm NC TKTD&KTDK


6. Lê Quang Hưng
Phòng Nâng cao hệ số thu hồi dầu, Trung tâm NC TKTD&KTDK
7. Trương Văn Dũng
Phòng Nâng cao hệ số thu hồi dầu, Trung tâm NC TKTD&KTDK
8. Phạm Chí Đức
Phòng Công nghệ mỏ, Trung tâm NC TKTD&KTDK
9. Lê Thanh Hà
Phòng Quản lý tổng hợp, Trung tâm NC TKTD&KTDK
CHUYÊN GIA: 1. Dr. Ioannis Abatzis
Chuyên gia Địa vật lý, Cục địa chất Đan mạch và Greenland
2. Dr. Lars Henrik Nielsen
Chuyên gia Địa chất, Cục địa chất Đan mạch và Greenland
3. Dr. Michael Bryld Wessel Fyhn
Chuyên gia Địa vật lý, Cục địa chất Đan mạch và Greenland

10. Ban KHTC


Viện dầu khí

MỤC LỤC
Chương I. Tổng quan về các phương pháp điện trở điện dung..........................1

I. Lý thuyết mô hình điện dung...........................................................................1

I.1 Nền tảng và sự phát triển của CRM..............................................................1

I.2. Mô hình đơn giản đại diện cho toàn bộ mỏ (CRMT)...................................2

I.2.1 Nguyên lý xếp chồng thời gian cho CRMT...............................................4

I.2.1.1. CRMT đối với một chuỗi SVIR.............................................................5

I.2.1.2 – Giải CRMT cho chuỗi LVIR................................................................7

I.2.2. Ứng dụng mô hình điện trở điện dung cho toàn mỏ..................................9

I.3. Mô hình điện dung cho 1 giếng khai thác (CRMP)....................................12

I.3.1. Phép giải xếp chồng thời gian của mô hình CRMP................................13

I.3.1.1. Giải mô hình điện dung CRMP với sự thay đổi lưu lượng bơm ép
từng bước (SVIR).............................................................................................14

I.3.1.2 Phép giải CRMP đối với chuỗi lưu lượng bơm ép thay đổi tuyến
tính (LVIR).......................................................................................................15

I.4. Mô hình điện dung cho các cặp giếng bơm ép - khai thác (CRMIP).........16

I.4.1. Phép giải CRMIP theo nguyên lý xếp chồng thời gian và khoảng
cách...................................................................................................................17

I.4.1.1. Phép giải CRMIP cho SVIR.................................................................17

I.4.1.2. Phép giải CRIMP với sự thay đổi lưu lượng tuyến tính nối tiếp
(LVIR)..............................................................................................................18

I.5. Nhận xét......................................................................................................19

Chương II. Giới thiệu chung về phần mềm CRM............................................22

II.1. Lựa chọn hàm đề xây dựng phần mềm.....................................................22

II.2. Các bước tiến hành....................................................................................23

Chương III. Áp dụng thực tế.............................................................................25

III.1. Miocen dưới mỏ Sư Tử Đen....................................................................25


III.2. Móng mỏ Rạng Đông..............................................................................36

Chương IV. Kết luận và kiến nghị....................................................................42

TÀI LIỆU THAM KHẢO................................................................................43

DANH MỤC HÌNH VẼ


Hình I.1. Mô hình điện trở điện dung...........................................................................1

Hình I.2. Sơ đồ mô hình đơn giản đại diện cho một mỏ với chỉ một giếng khai
thác và một giếng bơm ép, CRMT................................................................................3

Hình I.3. Sản lượng khai thác tương ứng khi lưu lượng bơm ép thay đổi và
thời gian không thứ nguyên trong CRM......................................................................5

Hình I.4. Sự thay đổi lưu lượng bơm ép từng bước từ thời gian t0 tới tn....................6

Hình I.5. Sự thay đổi tuyến tính từng đoạn áp suất đáy giếng khai thác từ t0 tới
tn....................................................................................................................................... 6

Hình I.6. Lưu lượng khai thác CRM đánh giá cho trường hợp tổng hợp của 1
giếng bơm ép và 1 giếng khai thác với 6 khoảng thay đổi lưu lượng bơm ép
trong suốt khoảng thời gian 10, 20 và 50 ngày.............................................................7

Hình I.7. Lưu lượng bơm ép tuyến tính giữa các điểm từ thời gian t0 đến tn.............8

Hình I.8. Lưu lượng khai thác CRM đánh giá trường hợp tổng hợp của một
giếng khai thác và một giếng bơm ép với sáu giai đoạn lưu lượng bơm ép tuyến
tính với các hằng số thời gian 10, 20 và 50 ngày..........................................................9

Hình I.9. Lưu lượng khai thác mô hình điện trở điện dung toàn mỏ đánh giá
cho trường hợp tổng hợp của ba khoảng lần lượt với 1, 2 và 4 giếng khai thác
hoạt động trong 1 vỉa...................................................................................................11

Hình I.10. Mô hình điện dung cho trường hợp tổng hợp của 1 giếng bơm ép và
1 giếng khai thác với sai số tuyệt đối của lưu lượng khai thác là 50RB/D...............11

Hình I.11. Sơ đồ thể hiện Ninj giếng bơm ép hỗ trợ giếng khai thác j và Npro
giếng khai thác được hỗ trợ bởi giếng bơm ép i.........................................................12

Hình I.12. Sơ đồ thể hiện mô hình vỉa của giếng bơm ép j, CRMP..........................13

Hình I.13. Sơ đồ thể hiện mô hình đơn giản giữa cặp giếng khai thác/ bơm ép......16
Hình II.1. Phần mềm CRMIP.....................................................................................23

Hình II.2. Các bước tiền hành tính toán của phần mềm CRMIP.............................24

Hình III.1. Vị trí các giếng mỏ STĐ............................................................................25

Hình III.2. Động thái áp suất đáy mỏ STĐ................................................................25

Hình III.3. Lưu lượng các giếng khai thác mỏ STĐ..................................................26

Hình III.4. Lưu lượng các giếng bơm ép mỏ STĐ.....................................................26

Hình III.5. Quan hệ rỗng thấm tầng B10 mỏ STĐ....................................................26

Hình III.6. Kết quả khớp lịch sử giếng 28P................................................................27

Hình III.7. Kết quả khớp lịch sử giếng 26P................................................................27

Hình III.8. Kết quả khớp lịch sử giếng 23P................................................................28

Hình III.9. Kết quả khớp lịch sử giếng 20P................................................................28

Hình III.10. Kết quả khớp lịch sử giếng 1PST...........................................................29

Hình III.11. Kết quả khớp lịch sử giếng 15P..............................................................29

Hình III.12. Kết quả khớp lịch sử giếng 14P..............................................................30

Hình III.13. Kết quả khớp lịch sử giếng 12PST.........................................................30

Hình III.14. Kết quả khớp lịch sử giếng 11P..............................................................31

Hình III.15. Kết quả khớp lịch sử giếng 10P..............................................................31

Hình III.16. Kết quả khớp lịch sử giếng 8PST...........................................................32

Hình III.17. Kết quả khớp lịch sử giếng NE6P..........................................................32

Hình III.18. Mức độ ảnh hưởng theo phần trăm của các giếng bơm ép tới các
giếng 10P, 8PST, NE-6P, 11P, 14P..............................................................................33

Hình III.19. Mức độ ảnh hưởng theo phần trăm của các giếng bơm ép tới các
giếng 26P, 1PST, 20p, 15P, 23P, 28P...........................................................................33

Hình III.20. Ảnh hưởng của giếng bơm ép tới giếng khai thác mỏ STĐ..................34

Hình III.21. Ảnh hưởng của giếng bơm ép 13I tới áp suất đáy giếng các giếng
khai thác mỏ STĐ.........................................................................................................34
Hình III.22. Ảnh hưởng của giếng bơm ép 27I tới áp suất đáy giếng các giếng
khai thác mỏ STĐ.........................................................................................................35

Hình III.23. Ảnh hưởng của giếng bơm ép 16I tới áp suất đáy giếng các giếng
khai thác mỏ STĐ.........................................................................................................35

Hình III.24. Bản đồ nghiên cứu ảnh hưởng tracer của JVPC..................................36

Hình III.25. Lưu lượng dầu khai thác các giếng giàn S mỏ RĐ................................38

Hình III.26. Lưu lượng bơm ép các giếng giàn S mỏ RĐ..........................................38

Hình III.27. Kết quả khớp lịch sử khai thác giếng S04P...........................................39

Hình III.28. Kết quả khớp lịch sử khai thác giếng S02P...........................................39

Hình III.29. Kết quả khớp lịch sử khai thác giếng S01P...........................................40

Hình III.30. Kết quả khớp lịch sử khai thác giếng C03P................................................40
DANH MỤC BẢNG BIỂU

Bảng III.1. Kết quả mức độ ảnh hưởng và thời gian ảnh hưởng..............................32

Bảng III.2. Kết quả nghiên cứu tracer cho các giếng khai thác của JVPC..............37

Bảng III.3. Kết quả mức độ ảnh hưởng và thời gian ảnh hưởng..............................41

Bảng III.4. Kết quả so sánh thời gian ảnh hưởng của tracer thực tế với mô hình...........41
Chương I. Tổng quan về các phương pháp điện trở điện dung

I. Lý thuyết mô hình điện dung

Nhìn chung, mô hình điện trở điện dung (Capacitance Resistance Model
(CRM)) dựa trên các kỹ thuật xử lý tín hiệu trong đó coi lưu lượng bơm ép là tín hiệu
đầu vào và lưu lượng khai thác là tín hiệu đầu ra. Mô hình điện trở điện dung có sự
mô phỏng giống với một mạch điện trở (tụ điện). Đó là coi sự thay đổi lưu lượng bơm
ép dẫn đến thay đổi lưu lượng khai thác tương tự như đo điện áp của một tụ điện trong
một mạch RC song song nơi nguồn điện thế (I1) tương đương với giếng bơm ép, vỉa là
trở kháng (R), I2 là giếng khai thác, E là áp suất (hình I.1).

Trong một hệ thống gồm nhiều giếng, các thông số CRM thể hiện sự liên kết
giữa từng cặp giếng bơm ép và giếng khai thác dự trên số liệu lịch sử bơm ép và khai
thác.

Hình I.1. Mô hình điện trở điện dung

I.1 Nền tảng và sự phát triển của CRM


Các thông số CRM, tính liên kết và hằng số thời gian được đánh giá dựa trên
lịch sử khai thác và bơm ép. Khi đánh giá được các thông số mô hình thì có thể dự báo
được đặc tính khai thác bằng việc khớp các thông số mô hình. CRM cũng có thể được
xem như công cụ phân tích hồi quy đa chiều phi tuyến tính, nó tính toán độ nén và
dòng chảy chất lưu trong vỉa dựa trên hằng số thời gian (Yousef et al.2006). Không
giống như phương pháp mô hình số học dựa trên các ô lưới, các mô hình CRM mô
phỏng động thái dòng chảy phù hợp với sự tương tác giữa các cặp giếng.

1
CRM có thể được hiểu như tương tự một mô hình dòng chảy. Sự liên kết giữa
từng cặp giếng khai thác – bơm ép tương tự với lượng dòng chảy tương đối của một
giếng bơm ép tới một giếng khai thác. Việc mô phỏng dòng chảy (Gupta, 2007) có
tính thông dụng cao do tốc độ tính toán nhanh.

Từ dữ liệu khai thác/ bơm ép, Albertoni and Lake (2003) đã sử dụng kỹ thuật
hồi quy đa chiều tuyến tính để dự báo tổng chất lưu khai thác của một giếng dựa trên
lưu lượng bơm ép. Kế thừa Albertoni (2002), Gentil (2005) đã giải thích ý nghĩa vật lý
của hằng số phân tích hồi quy đa chiều bằng việc thể hiện hằng số liên kết như một
hàm số về độ thấm. Yousel et al. (2006) cũng đã cho thấy khả năng cải thiện tính chất
vỉa từ dữ liệu giếng khai thác và giếng bơm ép bằng việc đưa ra mô hình điện dung
với hằng số thời gian. Mô hình điện dung liên quan đến sự ảnh hưởng của độ nén, thể
tích rỗng và hệ số sản phẩm của giếng (PI) trong hệ hồi quy đa chiều phi tuyến tính
với việc đưa ra một hằng số thời gian để biểu thị khoảng thời gian trễ của ảnh hưởng
giếng bơm ép tới giếng khai thác. Vì vậy, chỉ số liên kết và hằng số thời gian có thể
thể hiện tính chất vỉa và chất lưu giữa giếng bơm ép và giếng khai thác.

Dựa trên hai phép toán là sự thay đổi lưu lượng bơm ép từng bước (SVIR) và
thay đổi lưu lượng bơm ép tuyến tính (LVIR), có 3 loại mô hình CRM được xây dựng:

1) Mô hình đơn giản đại diện cho toàn bộ mỏ (CRMT): Là mô hình xét tương
tác chỉ có 1 giếng khai thác và 1 giếng bơm ép.

2) Mô hình đơn giản đại diện cho 1 giếng khai thác (CRMP): Là mô hình xét
tương tác của các giếng bơm ép tới 1 giếng khai thác.

3) Mô hình đại diện cho từng cặp giếng bơm ép và khai thác (CRMIP): Là mô
hình xét tương tác giữa từng cặp giếng bơm ép – khai thác.

I.2. Mô hình đơn giản đại diện cho toàn bộ mỏ (CRMT)


Một vỉa chứa có thể được hình dung như một mô hình đơn giản nếu giả sử một
giếng khai thác và một bơm ép tương ứng thể hiện cho tất cả các giếng khai thác và tất
cả các giếng bơm ép trong mỏ, như hình I.2. Trong một mỏ chỉ có một giếng khai thác
và một giếng bơm ép, theo cân bằng vật chất sẽ có được phương trình sau cho lưu
lượng khai thác q(t) và lưu lượng bơm ép i(t)

dp
ctV p  i (t )  q (t ) (1-1)
dt
Trong đó, ct là tổng độ nén, Vp là thể tích lỗ rỗng của vỉa và dp là áp suất vỉa trung
bình. Dựa vào cách xác định hệ số sản phẩm PI (J).

2
q (t )  J ( p  pwf ) (1-2)

Bỏ qua áp suất vỉa trung bình từ phương trình (1-1) và (1-2), như được trình bày bởi
Yousef (2006) dẫn đến phương trình vi phân cơ bản bậc nhất cho CRM như sau:

dq (t ) 1 1 dpwf
 q (t )  i(t )  J (1-3)
dt   dt

Trong đó J được giả định là hằng số và hằng số thời gian τ được xác định như sau:

ctV p
 (1-4)
J

Hình I.2. Sơ đồ mô hình đơn giản đại diện cho một mỏ với chỉ một giếng khai
thác và một giếng bơm ép, CRMT
Để thể hiện cho một mỏ hoặc một cụm giếng với CRMT, tất cả tổng lưu lượng bơm
ép sẽ là iF(t) và tổng lưu lượng khai thác là qF(t). Do đó, hằng số thời gian τ sẽ là hằng
số thời gian của mỏ (τF) mang tính chất trung bình của mỏ.

Giải pháp chung cho phương trình 1-3 như sau:


t  t  t0 
1 dpwf 
q(t )  Ce  e
 

 t0
e 


i ( )  J
d   d

(1-5)

Bằng việc áp dụng điều kiện ban đầu tại thời gian t0, hằng số C có thể được tính như
sau:
t0
C  q (t0 )e  (1-6)

Vì vậy, giải pháp riêng cho phương trình 1-3 như Yousef đã trình bày (2006) có thể
được viết như sau:

3
t t0  t  t  t  t
( ) 1  
dpwf
q(t )  q(t0 )e 
 e  e i ( )d  e  Je
  
d ; t>t0 (1-7)
 t0   t0 d 

Kết quả đầu ra, q(t) là tổng hợp của ba số hạng bên phải của phương trình 1-7. Sự thay
đổi lưu lượng tại giếng khai thác gồm có lưu lượng khai thác sơ cấp, ảnh hưởng của
bơm ép và sự thay đổi của áp suất đáy giếng (BHP) tại giếng khai thác. Nếu lưu lượng
bơm ép bằng 0 và BHP của giếng khai thác được giữ không đổi thì phương trình được
giải đơn giản hóa thành giải phương trình suy giảm theo hàm mũ exponential (Walsh
and Lake, 2003).

Phương trình 1-7 có thể được viết như sau:

 t   t0  t
(
t  t0
) 1  t
  
q(t )  q (t0 )e 
 e  e i ( )d   e 

 Je pwf ( ) 
  t0
     t0
(1-8)
 t  t 
J
e 

  t0 
e pwf ( )d 

Giả sử J là hệ số sản phẩm của giếng và hằng số thời gian τ, ta có phương trình:
t t0   t
( ) 1 t
q(t )  q(t0 )e 
 e  e i( )d 

  t0
(1-9)
 t t
( 0 )  J t  t 
 J  pwf (t )  e 
pwf (t0 )   e  e pwf ( )d 
     t0

Giải tích phân phương trình 1-9 ta có thể tính cho bất kỳ điểm dữ liệu bơm ép và BHP
liên tục nào, tại điểm thời gian cuối của khoảng thời gian này có thể được sử dụng là
điều kiện ban đầu cho khoảng thời gian tiếp theo. Vì vậy, bằng phép xếp chồng thời
gian chúng ta có thể đánh giá lưu lượng khai thác ở bất kỳ thời gian nào.

I.2.1 Nguyên lý xếp chồng thời gian cho CRMT


Bắt đầu với phương trình 1-7, giải từng phần của phương trình 1-3, dựa trên
các lưu lượng bơm ép khác nhau giữa hai điểm dữ liệu liên tiếp nhau thì hai cách giải
được đưa ra đó là: một là SLVR, thay đổi lưu lượng bơm ép từng bước từ I(tk-1) tới
I(tk) và hai là LVIR thay đổi tuyến tính lưu lượng bơm ép giữa I(tk-1) tới I(tk). Trong cả
hai trường hợp này, lưu lượng bơm ép cố định I(t) và lưu lượng bơm ép thay đổi là
i(t). Cả hai trường hợp bơm ép, cho CRMT trong phần này và cho CRMP và CRMIP
trong các phần khác sẽ đưa ra phép giải tích bằng nguyên lý xếp chồng thời gian.

4
Dựa trên phương trình 1-7 và bằng cách hợp nhất các số hạng, phương trình
được viết lại như sau:
 t
 t  t   t  t
(
t  t0
)  
t
 di ( ) 
dpwf
q(t )  q (t0 )e 
 e e i ( )   e  e
  
d  e  Je
 
d (1-11)
  t0   t0 d    t0 d 

Hoặc

(
t  t0
)  t t
( 0 )  t  t  di ( )  t  t 
dpwf
q(t )  q(t0 )e 
 i (t )  e 
i (t 0 )   e  e d  e  Je
 
d  (1-12)
    t0
d   t 0
d 

Hợp nhất 2 số hạng cuối của phương trình 1-12 cho mỗi khoảng thời gian giữa hai
điểm dữ liệu lưu lượng bơm ép và BHP giếng khai thác liên tiếp. Đạo hàm lưu lượng
bơm ép và áp suất đáy giếng khai thác với thời gian được tính toán trực tiếp cho bất kỳ
hai điểm liên tiếp nào.

Nếu lưu lượng bơm ép và áp suất đáy giếng khai thác được giữ không đổi giữa
hai điểm dữ liệu liên tiếp ta có thể rút gọn lại công thức, hai số hạng cuối trong công
thức 1.12 sẽ về 0 và kết quả như trong công thức sau:

(
t  t0
)  ( 0 ) 
t t
q(t )  q(t0 )e 
 I 1  e   (1-13)
 
Trong đó: I thể hiện lưu lượng bơm ép không đổi từ thời t0 tới t. Như thể hiện trong
hình này lưu lượng khai thác đạt 50% của lưu lượng khai thác tối đa sau khi tD = t0D +
0.69.

 R  2.2 (1-14)

5
Hình I.3. Sản lượng khai thác tương ứng khi lưu lượng bơm ép thay đổi và thời
gian không thứ nguyên trong CRM.
Vì vậy, tín hiệu bơm ép có thể được nhận ra tại giếng khai thác nếu tín hiệu
bơm ép đủ lớn và đủ lâu, và sự ảnh hưởng của nó lên lưu lượng khai thác là lớn hơn
đáng kể so với sai số đo lưu lượng khai thác. Chú ý rằng tại thời điểm tD = t0D + 3, lưu
lượng khai thác đạt 95% giá trị tối đa của nó nếu lưu lượng bơm ép chỉ hỗ trợ cho
giếng khai thác.

Hằng số thời gian τ được dựa trên tính chất vỉa. Giá trị τ nhỏ nghĩa là hoặc thể
tích lỗ rỗng và hệ số nén nhỏ hoặc PI lớn. Giá trị τ lớn có thể là một vỉa lớn với hệ số
nén nhỏ hoặc một vỉa nhỏ với hệ số nén lớn hoặc vỉa có độ thấm rất thấp.

I.2.1.1. CRMT đối với một chuỗi SVIR


Đối với một chuỗi SVIR, i(∆tk )= I(k) , và áp suất đáy giếng thay đổi tuyến tính
(LVBHP), như hình I.4 và I.5, nếu giả định PI là hằng số trong suốt khoảng thời gian
∆tk , phương trình 1-12 có thể được tổng hợp từ thời gian tk-1 tới tk và được viết như
sau:

 ( k )   pw( kf ) 
tk t
( )
q(tk )  q (tk 1 )e  1  e   I  J
  (k )
 (1-15)
   ti 

Phương trình 1-15 được chia thành 1 khoảng thời gian của lưu lượng bơm ép là hằng
số I(k). Vì vậy, đối với các khoảng thời gian liên tiếp trong SVIR, như hình I.4 và áp
suất đáy giếng thay đổi tuyến tính (LVBHP) hình I.5, ta có thể đánh giá tổng lưu
lượng khai thác tại điểm cuối của mỗi khoảng thời gian ∆tk-1, và sử dụng lưu lượng này
như là lưu lượng ban đầu cho khoảng thời gian tiếp theo ∆tk.

6
Hình I.4. Sự thay đổi lưu lượng bơm ép từng bước từ thời gian t0 tới tn.

Hình I.5. Sự thay đổi tuyến tính từng đoạn áp suất đáy giếng khai thác từ t0 tới tn
Vì vậy, từ phương trình 1-15, có thể viết tại điểm cuối của khoảng thời gian ∆tn như
sau:


t n
 t
 n   (n) pw( nf ) 
q (tn )  q (tn 1 )e 
 1  e    I  J  (1-16)
  t n  

Thay q(tn-1) từ cách giải khoảng thời gian trước đó và lặp lại quá trình này cho toàn bộ
khoảng thời gian từ t0 tới tn sẽ đưa ra cách giải xếp chồng thời gian như sau:

7
 t t 
 n 0  n  t
 k   (k ) pw( kf )   n  k  
t t

q(tn )  q (t0 )e   
  1  e    I  J e 
k 1 
   t k   
(1-17)

Phương trình 1-17 là cách giải chung cho mô hình 1 giếng bơm ép và 1 giếng khai
thác trong đó lưu lượng bơm ép thay đổi từng bước và sự thay đổi tuyến tính của áp
suất đáy giếng khai thác giữa từng điểm dữ liệu liên tiếp nhau, được thể hiện lần lượt
trong hình I.4 và I.5. Δtk trong phương trình 1-17 là độ chênh lệch giữa tk và tk-1 và q(t0-
) là tổng lưu lượng khai thác tại thời điểm cuối thu sơ cấp. Hình I.6 thể hiện lưu lượng
khai thác CRMT dựa trên phương trình 1-17 với 6 lần thay đổi lưu lượng SVIR với 3
khoảng thời gian khác nhau là 10, 20 và 50 ngày trong khi đó áp suất đáy giếng khai
thác được giữ không đổi.

Hình I.6. Lưu lượng khai thác CRM đánh giá cho trường hợp tổng hợp của 1
giếng bơm ép và 1 giếng khai thác với 6 khoảng thay đổi lưu lượng bơm ép
trong suốt khoảng thời gian 10, 20 và 50 ngày.

I.2.1.2 – Giải CRMT cho chuỗi LVIR


Giả sử lưu lượng bơm ép và áp suất đáy thay đổi tuyến tính (LVIR và
LVBHP), thì giữa 2 điểm dữ liệu liên tiếp được thể hiện như hình I.7 và I.5, và PI là
hằng số suốt khoảng thời gian ∆tk =tk-tk-1, phương trình 1-13 có thể được tổng hợp lại
từ thời gian tk-1 đến tk như sau:

8
(
tk
)  t
( k )   i (tk )  i (t k 1 )  tk  tk 
q (tk )  q (tk 1 )e 
  i (t k )  e


i (t k 1 )   
  tk  tk 1 
e  e d
 tk 1
 t
(1-
 pwf (tk )  pwf (tk 1 )  tk k 
J 
 tk  tk 1
e

 e d
 tk 1

18)
Bằng cách sắp xếp lại phương trình 1-18, lưu lượng khai thác tại thời gian tk có thể
được viết như sau:

(
tk
)  t
( k ) 
q (tk )  q (tk 1 )e 
 i (tk )  e  i (tk 1 ) 
 
(1-19)
  ( k )   i (t )  i (t  pwf (tk )  pwf (tk 1 )  
t
k 1 )

 1  e    k   J  
   tk  tk 1   tk  tk 1 

(
tk
)  t
( k )   ( k ) 
t
q(tk )  q(tk 1 )e 
 i (t k )  e 
i (tk 1 )    1  e    k  J  k'  (1-20)
   

Trong đó αk và α'k lần lượt là độ dốc giữa hai điểm lưu lượng bơm ép và hai điểm áp
suất đáy giếng liên tiếp với bất kỳ khoảng thời gian ∆tk.

Hình I.7. Lưu lượng bơm ép tuyến tính giữa các điểm từ thời gian t0 đến tn
Phương trình 1-19 được phát triển cho chỉ 1 khoảng thời gian ∆tk với lưu lượng
bơm ép tuyến tính và áp suất đáy giếng tuyến tính. Đối với 1 chuỗi LVIR và LVBHP
như hình I.7 và I.5 và một hằng số τ, phương trình 1-19 đánh giá tổng lưu lượng khai
thác tại thời điểm cuối của bất kỳ khoảng thời gian ∆tk nào. Lưu lượng khai thác này
là giá trị ban đầu của khoảng thời gian tiếp theo ∆tk+1. Vì vậy, từ phương trình 1-19, ta
có thể viết tại khoảng thời gian ∆tn:

9
(
tn  t0
)  t t
( n 0 ) 
q (tn )  q (t0 )e 
 i (t n )  e  i (t0 ) 
 
(1-21)
n   ( tn tk )  i ( k ) pw( kf )  
  e  1  etk     J 
k 1   tk tk  

Trong đó: ∆i(k) và ∆pwf(k) thể hiện sự thay đổi lưu lượng bơm ép và áp suất đáy giếng
với bất kỳ khoảng thời gian tk-1 tới tk.

Phương trình 1-21 là cách giải chung cho trường hợp một giếng bơm ép và một
giếng khai thác trong đó cả lưu lượng bơm ép và áp suất đáy giếng khai thác coi như
tuyến tính giữa các điểm liên tiếp, như hình I.7 và I.5.

Hình I.8 thể hiện CRMT với sáu khoảng lưu lượng bơm ép tuyến tính của ba
hằng số thời gian khác nhau là 10, 20 và 50 ngày.

Hình I.8. Lưu lượng khai thác CRM đánh giá trường hợp tổng hợp của một
giếng khai thác và một giếng bơm ép với sáu giai đoạn lưu lượng bơm ép tuyến
tính với các hằng số thời gian 10, 20 và 50 ngày.
Như hình I.6 và I.8 thể hiện các hằng số thời gian càng lớn thì dấu hiệu ảnh hưởng của
lưu lượng bơm ép tới lưu lượng khai thác nhỏ. Ngược lại, hằng số thời gian nhỏ thì
ảnh hưởng của lưu lượng bơm ép tới lưu lượng khai thác lớn hơn.

I.2.2. Ứng dụng mô hình điện trở điện dung cho toàn mỏ.
Trong mô hình cho một nhóm các giếng hoặc toàn bộ mỏ, CRMT, phương trình 1-17
và 1-21 có thể được sử dụng với một số điều chỉnh. Nếu có nhiều hơn 1 giếng khai
thác thì việc thay đổi áp suất đáy giếng của từng giếng khai thác đơn lẻ không thể tính
toán được trong việc đánh giá các thông số CRMT. Do đó trong phương trình 1-17 và
1-21, loại trừ các điều kiện thay đổi áp suất đáy giếng. Mặt khác, tỷ lệ mỏ bơm ép
được giữ ổn định trong vỉa thì người ta phải thay đổi lưu lượng bơm ép bằng hệ số fF.

10
Vì vậy, phương trình CMRT cho bất kỳ khoảng thời gian nào ∆tk với các lưu lượng
bơm ép được thay đổi từng bước và có thể thấy rằng chỉ phần mỏ bơm ép được duy trì
trong vỉa có thể được viết như sau:
tk
F
 tk

qF (tk )  qF (tk 1 )e f I (k )
1  e  F  (1-22)
F F
 
 

Trong đó F thể hiện thông số vỉa và fF là phần trăm sản lượng bơm ép được đi thẳng
trực tiếp tới giếng khai thác tại trạng thái ổn định (Δt → ∞); fF có thể thay đổi từ 0 đến
1 (từ không có ảnh hưởng của giếng bơm ép đến ảnh hưởng toàn bộ từ giếng bơm ép).

Nếu có bất kỳ nguồn hỗ trợ nào bên cạnh các giếng bơm ép, như tầng nước
đáy, ew, Phương trình 1-22 được biến đổi để bảo toàn cân bằng vật chất như sau:
tk
 tk

qF (tk )  qF (tk 1 )e F
e (k )
f (k ) (k )
I  1  e  F  (1-23)
w F F

 

Trong đó ew là dòng vào vỉa từ các nguồn hỗ trợ khác bên cạnh các giếng bơm ép.
Phương trình 1-17 có thể được biến đổi như sau:

(
t n  t0 n  ( n k ) 
t t tk

   ew  f F I F  e
)
F F
qF (tn )  qF (t0 )e (k ) (k ) (k )
1  e  F  (1-24)
k 1 
 
  

Tất cả các mô hình có thể thay đổi như một hàm thời gian, đặc biệt nếu có bất kỳ sự
thay đổi lớn nào xảy ra trong vỉa, tuy nhiên một giả thiết đơn giản hóa là ta có thể giả
sử fi và ew là như nhau trong các khoảng thời gian.

Hằng số thời gian mỏ, τF có thể được biến đổi thành một hàm thời gian dựa trên
số giếng khai thác hoạt động trong vỉa. Sự thay đổi số lượng giếng khai thác hoạt động
chuyển thành tăng hoặc giảm PI trong CRMT. Kết quả là nếu một giếng khai thác mới
được đưa vào, lưu lượng khai thác của mỏ sẽ tăng lên, nhưng hằng số thời gian mỏ
theo tỷ lệ giếng khai thác hiện tại với các giếng khai thác trước đó trong mỏ. Mặt
khác, nếu một số giếng khai thác trong mỏ ngừng khai thác, lưu lượng khai thác sẽ
giảm nhưng hằng số thời gian tăng.

Với hai khoảng thời gian khai thác với số lượng các giếng khai thác hoạt động khác
nhau, hằng số thời gian mỏ cũng như lưu lượng khai thác tại điểm bắt đầu của khoảng
thời gian thứ hai được biến đổi dựa trên số lượng giếng khai thác hoạt động như sau:

m
 F , nP   F , mP   mn F , mP
n (1-25)

11
n 1
qF ,nP (t0 )  qF , mP (t )  qF ,mP (t )
m mn (1-26)

Trong đó m và n lần lượt là số lượng các giếng khai thác hoạt động tại khoảng thời
gian đầu tiên và khoảng thời gian thứ hai, ηmn là hệ số thay đổi của hằng số thời gian
nếu số lượng giếng khai thác hoạt động thay đổi từ m đến n. Lưu lượng khai thác tại
điểm bắt đầu của khoảng thứ hai được nhân lên 1/ηmn là sự tăng lên hoặc giảm xuống
của lưu lượng khai thác.

Hình I.9 cho thấy một ví dụ đơn giản về ba khoảng thời gian của 1, 2 và 4
giếng khai thác hoạt động trong vỉa với độ rỗng là hằng số và ảnh hưởng của số lượng
giếng khai thác hoạt động lên tổng lưu lượng khai thác toàn mỏ. Lưu lượng khai thác
toàn mỏ được nhân đôi trong khi đó hằng số thời gian của mỏ giảm đi một nửa, suy
giảm nhanh hơn, sau 3 và 6 tháng khai thác như số lượng giếng khai thác hoạt động
được nhân đôi.

Hình I.9. Lưu lượng khai thác mô hình điện trở điện dung toàn mỏ đánh giá cho
trường hợp tổng hợp của ba khoảng lần lượt với 1, 2 và 4 giếng khai thác hoạt
động trong 1 vỉa.
Với số lượng các giếng khai thác hoạt động càng lớn, hằng số thời gian càng
tiến tới 0 và lưu lượng khai thác của mỏ gần như ngay lập tức đạt được giá trị tối đa
của nó. Giá trị lưu lượng khai thác cuối cùng được điều chỉnh hoặc bằng tổng thể tích
giãn nở của vỉa do vỉa suy kiệt hoặc bằng tổng lưu lượng bơm ép.

Giả sử 1 ví dụ như hình I.10 cho thấy 6 khoảng lưu lượng bơm ép khác nhau,
các điểm dữ liệu lưu lượng khai thác được quan sát, đánh giá từ mô hình điện dung
trong một hệ thống một giếng bơm ép và một giếng khai thác. Để đưa được ra dữ liệu

12
trong ví dụ này, giả sử 6 khoảng lưu lượng bơm ép cố định khác nhau, một hằng số
thời gian cố định trong 3 ngày và sai số ngẫu nhiêu Gaussian của lưu lượng khai thác
trong khoảng 100 RB/D. Sử dụng phương trình 1-17 đã đánh giá hằng số thời gian là
1,15 ngày bằng cách tối ưu sai số về độ tương quan giữa các điểm dữ liệu khai thác và
các điểm đánh giá bằng mô hình điện dung.

Hình I.10. Mô hình điện dung cho trường hợp tổng hợp của 1 giếng bơm ép và
1 giếng khai thác với sai số tuyệt đối của lưu lượng khai thác là 50RB/D
Đối với một hệ thống gồm nhiều giếng bơm ép (Ninj) và nhiều giếng khai thác
(Npro), sự liên kết giữa các giếng khai thác và giếng bơm ép là Ninj x Npro được dựa trên
trên các hệ số liên kết fij. Hình I.11 cho thấy một sơ đồ sự liên kết giữa các giếng bơm
ép i với tất cả các giếng khai thác, và giếng khai thác j với tất cả các giếng bơm ép
trong mỏ. Kích thước hình tròn và hình tam giác thể hiện giá trị trung bình của lưu
lượng các giếng khai thác và bơm ép, và độ dày của hướng mũi tên thể hiện mức độ
liên kết giữa giếng khai thác và giếng bơm ép.

13
Hình I.11. Sơ đồ thể hiện N inj giếng bơm ép hỗ trợ giếng khai thác j và N pro
giếng khai thác được hỗ trợ bởi giếng bơm ép i.
Với bất kỳ vỉa thể tích nào, sự phản ánh của mô hình điện dung có thể được
đánh giá bằng cách thay thế các lưu lượng bơm ép và lưu lượng khai thác trong hình
I.11. CRM được phát triển với các hệ thống nhiều giếng bằng cách xem xét tới 2 dạng
thể tích khác nhau: CRM với thể tích vỉa cho chỉ 1 giếng khai thác (CRMP) và CRM
cho thể tích vỉa của cặp giếng bơm ép – khai thác (CRMIP). So sánh với CRMT, tổng
thể tích vỉa được thể hiện như là một mô hình vỉa chứa đơn giản với chỉ 1 hằng số thời
gian và vì vậy số lượng của các hằng số thời gian trong CRMP tăng lên tới bằng số
lượng giếng khai thác, và trong CRMIP tăng lên tới bằng số lượng cặp giếng bơm ép –
khai thác.

I.3. Mô hình điện dung cho 1 giếng khai thác (CRMP)


Đối với kích thước vỉa xung quanh một giếng khai thác, hình I.12. Liang
(2007) đã miêu tả phương trình vi phân cho mô hình điện dung bằng phương trình:
Ninj
dq j (t ) 1 1 dqwf , j
dt

j
q j (t ) 
j
 f i (t )  J
i 1
ij i j
dt
(1-27)

Trong đó τj là hằng số thời gian của giếng khai thác j được tính theo công thức sau

 cV 
j  t p 
 J j (1-28)

Thể tích lỗ rỗng Vp, hệ số nén ct, và hệ số sản phẩm J là các thông số của giếng khai
thác j trong vùng ảnh hưởng của giếng; thuật ngữ tính liên kết fij thể hiện phần lưu
lượng bơm ép ổn định của giếng bơm ép i tới giếng khai thác j.

qij (t )
f ij 
ii (t ) (1-29)

Chú ý rằng tổng các hệ số liên kết của bất kỳ giếng bơm ép nào đều nhỏ hơn hoặc
bằng 1 và fij là giá trị dương. Khi đánh giá các thông số CRMP nên có các điều kiện
ràng buộc này.
Ninj

f ij  0 f ij 1
và i 1 (1-30)

14
Hình I.12. Sơ đồ thể hiện mô hình vỉa của giếng bơm ép j, CRMP.
Ban đầu, Liang và các cộng sự (2007) đã miêu tả cách giải từng phần của
phương trình 1-27 bằng cách bỏ qua ảnh hưởng của sự thay đổi áp suất đáy giếng khai
thác. Tuy nhiên cách giải cho phương trình 1-27 với sự thay đổi BHP có thể được viết
như sau:
t  t0  t  t  N  t  t 
( ) inj
dpwf , j
 f i ( )d   e 
j j

j j j
q j (t )  q j (t0 )e e e ij i e Jj d
  t0 i 1  t 0
d
(1-31)

Liang (2007) đã sử dụng phép tích phân để đánh giá toàn bộ lưu lượng bơm ép trong
phương trình 1-31, bằng cách giải tích phân với nguyên lý xếp chồng thời gian đã
nâng cao tính ứng dụng của CRMP.

I.3.1. Phép giải xếp chồng thời gian của mô hình CRMP
Tương tự như mô hình CRMT, hai kiểu phân tích cho phương trình 1-31 có thể được
chia thành: một là thay đổi tuyến tính của áp suất đáy, nhưng lưu lượng bơm ép thay
đổi từng bước; và hai là sự thay đổi tuyến tính của cả lưu lượng bơm ép và áp suất đáy
trong suốt các khoảng thời gian liên tục. Từ phương trình 1-31 ta có:

(
t t0
)  
N inj t t
( 0 ) 
   f ij  ii (t )  e j ii (t 0 )  
j 
q j (t )  q j (t0 )e
i 1   
  
 t  t 
 Ninj dii ( ) dp 
e  e   f ij
j j
 J j wf , j  d 
  t0  i 1 d d 
(1-32)

15
Chú ý rằng phương trình 1-32 đối với trường hợp lưu lượng bơm ép cố định Ii, và hằng
số BHP của giếng khai thác j từ t0 tới t đơn giản hóa thành:

(
t  t0
) N inj  ( 0 ) 
t t

   f ij I i  1  e j 
j 
q j (t )  q j (t0 )e
 
i 1
  (1-33)

I.3.1.1. Giải mô hình điện dung CRMP với sự thay đổi lưu lượng bơm ép từng
bước (SVIR)
Bằng cách giả sử PI là hằng số, các lưu lượng bơm ép cố định với toàn bộ các giếng
bơm ép, ii(t) = Ii, và áp suất đáy của giếng khai thác j suy giảm tuyến tính từ thời gian
t0 tới t, ta có thể phân tích phương trình 1-32 như sau:

(
t  t0
)   ( 0 )   Ninj
t t
p 
 1  e j     fij I i   J j j wf , j 
j 
q j (t )  q j (t0 )e
   i 1 t 
  (1-34)

Đối với trường hợp các chuỗi dữ liệu trong SVIR, trong khoảng thời gian ∆tk, ii(∆tk) =
Ii(k), cho toàn bộ giếng bơm ép (hình I.4) và hằng số PI, chuỗi dữ liệu LVBHP cho
giếng khai thác j (hình I.5). Từ phương trình 1-34 có thể viết tại thời điểm cuối của
khoảng thời gian ∆tn:
tn
 tn
  Ninj p (wnf ,)j 
q j (tn )  q j (tn 1 )e
j 
 1  e j     f ij I i   J j j
(n)

   i 1 t n 
   (1-35)

Giả sử các giá trị fij và τj là hằng số trong các khoảng thời gian ∆tk, và thay thế q(tn-1)
trong phương trình 1-35 từ phép giải từng bước thời gian trước đó và lặp lại quá trình
này trong suốt các khoảng thời gian từ t0 đến t, ta có:

(
t  t0
)   ( tntk ) 
n
t k
  Ninj p (wkf ,)j  
  e     f ij I i   J j j
j
q j (tn )  q j (t0 )e j
1  e  j (k )

k 1     i 1 t  
   k
(1-36)

Phương trình 1-36 là công thức chung cho phép giải với sự thay đổi lưu lượng bơm ép
từng bước (SVIR) – hình I.4, và LVBHP – hình I.5 đối với mô hình CRMP. Phương
trình này đơn giản hóa thành phép giải CRMT (phương trình 1-17) nếu chỉ có 1 giếng
bơm ép.

I.3.1.2 Phép giải CRMP đối với chuỗi lưu lượng bơm ép thay đổi tuyến tính
(LVIR).

16
Đối với lưu lượng bơm ép thay đổi tuyến tính (LVIR), một hằng số PI, và áp suất đáy
thay đổi tuyến tính trong khoảng thời gian t0 đến t, ta có thể tích hợp và viết phương
trình 1-32 như sau:

(
t t0
)  
N inj t t
( 0 ) 
   f ij  ii (t )  e j ii (t 0 )  
j 
q j (t )  q j (t0 )e
i 1   
  
  ( 0 )   Ninj
t t
i p 
 j  1  e j    f ij i  J j wf , j 

   i 1 t t 
  (1-37)

Lưu lượng bơm ép thay đổi tuyến tính nối tiếp nhau và BHP được thể hiện trong hình
I.7 và I.5, ta có thể sử dụng phương trình 1-37 để đánh giá tổng lưu lượng khai thác tại
thời điểm cuối của mỗi khoảng ∆tk và sử dụng lưu lượng khai thác này như giá trị ban
đầu của khoảng thời gian tiếp theo, ∆tk+1. Vì vậy, tại điểm cuối của mỗi khoảng thời
gian ∆tn ta có:

tn
 
Ninj tn

   f ij  ii (tn )  e ii (tn 1 )  
j j
q j (t n )  q j (tn 1 )e
i 1   
  
(1-38)
 tn
  Ninj i n p n


 j  1  e j    fij i  J j w f ,j

   i 1 tn t 
  n

Giả sử rằng fij và τj vẫn là hằng số trong tất cả các khoảng thời gian ∆tk và thay q(tn-1)
trong phương trình 1-38 từ các khoảng thời gian trước và lặp lại quá trình này cho
toàn bộ khoảng thời gian từ t0 đến t ta có:

(
tn  t0
)  
Ninj t t
( n 0 ) 
   f ij  ii (tn )  e j ii (t0 )  
j 
q j (tn )  q j (t0 )e
i 1   
  
(1-39)
n   ( tntk )   ( k )   N inj
t
ii( k ) p (wkf ,)j  
  j e    fij
j
j
1  e Jj 
k 1     i 1  t t k 
   k  

(j = 1,2…N giếng khai thác)

Phương trình 1-39 là công thức chung của phép giải CRMP cho tính toán tổng lưu
lượng khai thác của giếng khai thác j với LVIR và LVBHP được thể hiện trên hình I.7
và I.5.

I.4. Mô hình điện dung cho các cặp giếng bơm ép - khai thác (CRMIP)

17
Trong CRMIP ta xem xét tới ảnh hưởng của bất kỳ cặp giếng bơm ép/khai thác nào
(ij) thể hiện trong hình I.13. Phương trình vi phân CRMIP được đưa ra bởi Yousef và
các cộng sự (2006) như sau:

dqij (t ) 1 1 dqwf , j
 qij (t )  f ijii (t )  J ij (1-40)
dt  ij  ij dt

Trong đó hằng số thời gian τij được xác định như sau:

 cV 
 ij   t P  (1-41)
 J ij

Vp là thể tích lỗ rỗng, ct là tổng hệ số nén, J là hệ số sản phẩm của giếng, được kết hợp
với thể tích giữa 1 cặp giếng khai thác j và giếng bơm ép i. Như với CRMP, fij là phần
lưu lượng bơm ép ổn định của giếng bơm ép i trực tiếp tới giếng khai thác j. So sánh
với CRMT và CRMP, ta có chỉ một hằng số thời gian, một lưu lượng khai thác ban
đầu và PI; trong CRMIP ta có Ninj x Npro hằng số thời gian, các τij', các qij(0) và các Jij

Hình I.13. Sơ đồ thể hiện mô hình đơn giản giữa cặp giếng khai thác/ bơm ép.
Phép giải từng phần của phương trình 1-40 giống như hệ thống một giếng khai
thác và một giếng bơm ép, như phương trình 1-12, trong đó q(t), τ, và i(t) được thay
tương ứng bằng qij(t), τij, và fiji(t). Vì vậy, mô hình thể tích đơn giản giữa giếng bơm
ép i và giếng khai thác j được viết thành:

(
t t0
 ij
)  t t
( 0 )


qij (t )  qij (t0 )e  f ij  ii (t )  e ij ii (t 0 ) 
 
 
 t  t 
(1-42)
 ij  di ( )
 ij dp 
e  e  ij  J ij wf , j  d 
  t0  d d 

18
Lưu lượng khai thác của giếng khai thác j được tính toán đơn giản hóa bằng cách tổng
các số hạng từ tất cả các giếng bơm ép; do đó:

Ninj

q j (t )   qij (t ) (j=1,2,3, …, N giếng khai thác) (1-43)


i 1

Yousef đã tổng hợp phương trình 1-40 ban đầu với tất cả các giếng bơm ép được thể
hiện trong phương trình sau với lưu lượng khai thác của giếng khai thác j trong một hệ
thống gồm nhiều giếng:
Ninj Ninj Ninj
dqij (t ) dpwf , j
q j (t )   ij   fij ii (t )   ij J ij
i 1 dt i 1 dt i 1 (1-44)

Phương trình 1-44 cho thấy phép giải có 3 phần riêng biệt: số hạng thứ nhất thể hiện
sự ảnh hưởng của việc khai thác sơ cấp, số hạng thứ 2 là ảnh hưởng của lưu lượng
bơm ép của các giếng bơm ép khác nhau, số hạng thứ 3 là ảnh hưởng của sự thay đổi
áp suất đáy giếng khai thác. Để đơn giản hóa phương trình 1-44, Yousef đã giả định τij
cho cả khai thác sơ cấp và số hạng áp suất đáy. Giả thiết này làm giảm bớt ảnh hưởng
của sự thay đổi thể tích vỉa và PI giữa các cặp giếng bơm ép – khai thác trong tổng lưu
lượng khai thác.

Yousef đưa ra một phép giải tương đương nếu ta thay số hạng thứ nhất trong
phương trình 1-44 bằng một hàm suy giảm hàm mũ và thay thế số hạng cuối cùng
bằng thể tích lỗ rỗng giếng khai thác bằng cách sử dụng τij:
Ninj  ( t t0 ) Ninj
dpwf , j
q j (t )   qij (t0 )e   f ijii* (t ) 
 ij
(ctVP ) j (1-45)
i 1 i 1 dt

Như vậy, ta có thể đưa ra cách đơn giản để tìm lời giải lưu lượng khai thác trong
CRMIP bằng cách xếp chồng thời gian và khoảng cách.

I.4.1. Phép giải CRMIP theo nguyên lý xếp chồng thời gian và khoảng cách.
Để tính lưu lượng giếng khai thác j, trước tiên ta giải cho lưu lượng dòng gắn
liền với từng cặp giếng khai thác/ bơm ép (qij) thông qua xếp chồng tất cả các khoảng
thời gian của các lưu lượng bơm ép khác nhau và những thay đổi của BHP; sau đó áp
dụng phương pháp xếp chồng khoảng cách để tính ra lưu lượng dòng liên quan tới
từng giếng khai thác qj bằng cách tổng hợp các thành phần từ từng giếng bơm ép. Như
với các phương pháp CRMT và CRMP, SVIR, LVIR đã được trình bày để đưa ra
phép giải cho CRMIP.

I.4.1.1. Phép giải CRMIP cho SVIR.

19
Đối với lưu lượng bơm ép cố định i(∆tk) = Ii(k), và áp suất đáy giếng thay đổi
tuyến tính trong suốt khoảng thời gian ∆tk, hình I.4 và I.5, công thức đơn giản hơn có
thể được đưa ra từ phương trình 1-42 bằng cách thay thế ii(t) và ii(t0) bằng Ii(k) hoặc
trực tiếp từ phương trình 1-15 ta có:

(
tk
 ij
)  ( k )  
t
 ij pw( kf ), j 
qij (tk )  qij (tk 1 )e  1  e   f ij I i  J ij ij
(k )
 (1-46)
   tk 
 

Trong đó, Ii(k) và Δp(k)wf, j lần lượt là lưu lượng của giếng bơm ép i và sự thay đổi BHP
của giếng khai thác j trong suốt khoảng thời gian từ tk-1 đến tk. Ta có thể áp dụng
phương pháp xếp chồng thời gian cho từng khoảng thời gian từ t0 đến tn bằng cách giả
sử PI là hằng số trong bất kỳ khoảng thời gian ∆tk để tính qij tại thời điểm cuối tn như
sau:
tn  t0
( )
 ij
qij (tn )  qij (t0 )e
n  ( k )  
t
p (wkf ,)j   ( tntk )  (1-47)
  1  e
 ij
  fij I  J ij ij
(k )
 e ij 
k 1   tk  
 

Sau đó, qj(tn) có thể được tính bằng cách xem xét từng thành phần của giếng bơm ép:

Ninj N inj t n  t0
( )
q j (tn )   qij (t n )   qij (t0 )e
 ij

i 1 i 1

 n  (1-48)
Ninj
  ( k )  
t
p (wkf )   ( tnijtk )  
    1  e
 ij
  f ij I  J ij ij
(k )
e 
i 1  k 1   t  
   k 


Phương trình 1-48 là phép giải chung cho CRMIP có xem xét tới SVIR và LVBHP
của giếng khai thác j giữa từng điểm dữ liệu khai thác liên tiếp được thể hiện trên hình
I.4 và I.5.

I.4.1.2. Phép giải CRIMP với sự thay đổi lưu lượng tuyến tính nối tiếp (LVIR).
Nếu giả sử sự thay đổi tuyến tính giữa hai lưu lượng và áp suất đáy giếng khai
thác liên tiếp trong suốt khoảng thời gian ∆tk (tk-1 tới tk), như hình I.7 và I.5 bằng cách
sử dụng phương trình 1-42, ta có:

20
(
tk
 ij
)  t
( k )


qij (tk )  qij (tk 1 )e  f ij ii (tk )  e ij ii (tk 1 ) 
 
(1-49)
 ( k )  
t
 ij ii( k ) pw( kf ), j 
 ij 1  e   f ij  J ij 
   tk tk 
 

Với (i = 1,2,…,Ninj) , (j = 1,2,…,Npro) và (k = 1,2,…,n)

Trong đó ∆ii(k) và ∆p(k)wf, j lần lượt là sự thay đổi lưu lượng bơm ép của giếng bơm ép i
và áp suất đáy giếng khai thác j trong suốt khoảng thời gian từ tk-1 tới tk. Với một chuỗi
các điểm dữ liệu nối tiếp nhau, bằng phương pháp xếp chồng thời gian và giả sử PI là
hằng số trong suốt khoảng thời gian ∆tk, tại điểm cuối của khoảng thời gian ∆tn thì qij
có thể được tính như sau:

(
tn t0
 ij
)  t t
( n 0 )


qij (tn )  qij (t0 )e  f ij ii (tn )  e ij ii (t0 ) 
 
(1-50)
n  ( tntk )  ( k )  
t
ii( k ) pw( kf ), j  
 ij  e
 ij
ij
1  e   fij J 
k 1     tk tk  
   

Vì vậy, khi xem xét tới sự đóng góp của từng giếng bơm ép thì qj(tn) có thể được tính
như sau:

N inj N inj (
t n  t0
) Ninj  t t
( n 0 ) 
q j (tn )   qij (tn )   qij (t0 )e 
 ij 
f ij ii (tn )  e ij ii (t 0 ) 
i 1 i 1 i 1  
(1-51)
 n   ( tn  t k ) 
N inj  ( k )   f t ( k )
t
p (wkf ), j 

   ij
  ij  e
 ij
1  e  ij i
J 
i 1  k 1     tk t k 
     

Phương trình 1-51 là công thức chung để giải CRMIP khi xem xét tới LVIR và
LVBHP giữa các bất kỳ điểm dữ liệu khai thác liên tiếp nhau nào, như hình I.7 và I.5

I.5. Nhận xét


Các phép giải tích cho phương trình liên tục dựa trên phép xếp chồng thời gian và
khoảng cách đã được phát triển cho 3 dạng mô hình vỉa thể tích khác nhau: 1 là
CRMT: thể tích toàn mỏ (coi vỉa chỉ có 1 giếng khai thác và 1 giếng bơm ép), 2 là
CRMP, mô hình vỉa thể tích xung quanh 1 giếng khai thác và 3 là CRMIP, dạng mô
hình vỉa thể tích giữa các cặp giếng bơm ép – khai thác. Các phép giải được dựa trên

21
việc thay đổi lưu lượng bơm ép từng bước hoặc tuyến tính và áp suất đáy giếng khai
thác thay đổi tuyến tính.

Các phép giải đơn giản hóa được áp dụng trong các mô hình CRM để có thể đánh giá
nhanh chóng tại các mức độ khác nhau của mỏ, từ 1 giếng đơn lẻ tới 1 cụm giếng và
tới toàn bộ mỏ. Các phép giải CRM có liên hệ với ý nghĩa thực tế của các thông số
của chúng như là điện dung cho thấy khả năng liên kết vỉa. Tính đơn giản, và tốc độ
nhanh chính là ưu điểm chính so với các CRM được đưa ra trước đó.

22
Mô hình Phương trình vi phân Phép giải trong khoảng thời gian với 1 Phép giải 1 chuỗi lưu lượng bơm ép thay đổi
bước thay đổi lưu lượng bơm ép (LVIR) (SVIR)

CRMT dq(t ) 1 1 dp
 q (t )  i (t )  J wf
(
tk
)
 t t 
 n 0 

dt   dt
q (tk )  q (tk 1 )e 
q (tn )  q (t0 )e   

(1.3)  t
( k )   (k ) p  (k ) (1-15) n   k 
t
pw( kf )   tn tk  
  I  J    1  e   I  J
wf
 1  e 
  (k )
e 
   ti     tk 
ctV p
k 1  

J (1-17)
(1-4)

tk t t0
CRMP
Ninj
dq j (t ) 1 1 dqwf , j (
 f i (t )  J
)
 q j (t )  j
dt j j i 1
ij i j
dt q j (tk )  q j (tk 1 )e
j q j (tn )  q j (t0 )e
  ( tn tk )  tk
  Ninj p (wkf ,)j  
   Ninj
tk n
(1.27) pw( kf ), j    e
j
1  e  j     fij I i   J j j
(k )


 1  e j     fij I i   J j j
(k )
 k 1  

  i 1

tk  
   i 1 tk   
 
(1-36)
 cV 
j  t p 
 J  j (1-28)

tk tn t0
CRMIP dqij (t )

1
q (t ) 
1 dq
f i (t )  J ij wf , j ( ) (
 ij
)
 ij qij (tn )  qij (t0 )e
dt  ij ij  ij ij i dt qij (tk )  qij (tk 1 )e
n 
 ( k )  
t
p (wkf ,)j   ( tntk ) 

 t
   1  e ij   f ij I ( k )  J ij ij

 cV  ( k ) p (k )
  e ij 
k 1   tk
 ij   t P   ij
 1  e   fij Ii ( k )  J ij ij wf , j 
   

 J ij    tk
  
(1-47)

1
(1-46)

2
Ưu nhược điểm của từng phép giải cho các mô hình CRM

CRMT

Ưu điểm: Tính toán nhanh mức độ tương tác của tổng toàn bộ giếng bơm ép đối với
tổng toàn bộ các giếng khai thác. Đặc biệt được sử dụng khi 1 tập vỉa chỉ có 1 giếng
khai thác và 1 giếng bơm ép.

Nhược điểm: Mô hình đơn giản, không thể đánh giá mức độ tương tác của từng giếng
bơm ép đến 1 giếng khai thác nào đó trong hệ thống gồm giếng.

CRMP

Ưu điểm: Là mô hình được phát triển lên từ mô hình CRMT nên mô hình CRMP có
thể được sử dụng để đánh giá mức độ tương tác của từng giếng bơm ép tới 1 giếng
khai thác.

Nhược điểm: Không đánh giá được mức độ tương tác của nhiều giếng bơm ép tới
nhiều giếng khai thác.

CRMIP

Ưu điểm: Đánh giá đầy đủ mức độ tương tác cho từng cặp giếng bơm ép – khai thác.

Nhược điểm: Cũng như các mô hình CRMT và CRMP, mô hình CRMIP không thể
đánh giá được chính xác mức độ tương tác khi lưu lượng khai thác thay đổi do thay
đổi như kích thước choke đột ngột, đóng giếng, xử lý vùng cận đáy giếng, … Điều này
ảnh hưởng rất lớn đến quá trình khớp lưu lượng khai thác trong mô hình CRM.

1
Chương II. Giới thiệu chung về phần mềm CRM

II.1. Lựa chọn hàm đề xây dựng phần mềm


Dựa trên những lý thuyết về các phép giải mô hình CRM nhóm tác giả đã lựa chọn mô
hình CRMIP để xác định mức độ tương tác của 1 hay nhiều giếng bơm ép đến 1 hay
nhiều giếng khai thác. CRMIP là một mô hình đầy đủ có thể đánh giá mức độ tương
tác của từng cặp giếng bơm ép - khai thác trong bộ thể tích vỉa.

Mô hình CRMIP được xây dựng dựa trên công thức sau:

N inj N inj (
t n  t0
) Ninj  t t
( n 0 ) 
q j (tn )   qij (tn )   qij (t0 )e 
 ij 
fij ii (tn )  e ij ii (t 0 ) 
i 1 i 1 i 1  
 n   ( tn  t k ) 
N inj  ( k )   f t ( k )
t
p (wkf ), j 
 
   ij
  ij  e
 ij
1  e  ij i
J  
i 1  k 1     tk t k  
     

Trong đó:

i: Số lượng giếng bơm ép

j: Số lượng giếng khai thác

J: Hệ số sản phẩm

t0: Thời gian ban đầu

tn: Thời gian

qij(tn): Lưu lượng khai thác theo thời gian

qij(t0): Lưu lượng khai thác ban đầu

ii: Lưu lượng bơm ép

ΔPwf,j: Hiệu số áp suất đáy

fij: Sự tương tác của giếng bơm ép tới giếng khai thác (0<=f<=1)

τij: Thời gian tương tác

Δti: Bước nhảy thời gian bơm ép

n: Tổng số điểm đưa vào

k: Số điểm từ 1-n

2
Đây là phương trình đầy đủ đánh giá mức độ tương tác của từng cặp giếng bơm ép –
khai thác khi cả lưu lượng bơm ép và áp suất đáy giếng có thể thay đổi.

Với dữ liệu đầu vào gồm các thông số: lưu lượng ban đầu của các giếng khai thác (q 0j),
hệ số sản phẩm của giếng (Jij), áp suất đáy giếng khai thác và lưu lượng thực tế bơm
ép, lưu lượng thực tế khai thác. Dựa trên công thức (1-51) cùng với hàm tối ưu được sử
dụng trên nền tảng Matlab có thể xác định lưu lượng khai thác theo mô hình qj(tn) sao
cho sai số giữa lưu lượng khai thác từ mô hình và lưu lượng khai thác thực tế là nhỏ
nhất. Từ đó xác định được hệ số liên kết và hằng số thời gian của từng cặp giếng bơm
ép/ khai thác fij, τij.

Trong đó công thức tính sai số khi khớp lịch sử khai thác được xác định như sau:
N

 (q tt  qCRM ) 2
MSE  n 1

Trong đó qtt là lưu lượng khai thác thực tế, qCRM là lưu lượng khai thác được đánh giá
từ mô hình điện dung, N là số lượng điểm dữ liệu lưu lượng.

Việc xây dựng mô hình CRMIP được tiến hành dựa trên việc khớp lịch sử khai thác
sao cho sai số giữa lưu lượng khai thác thực tế và lưu lượng khai thác được tính toán
từ mô hình là nhỏ nhất.

Phần mềm được viết trên nền tảng Matlab với giao diện được thể hiện ở hình II.1.

3
Hình II.1. Phần mềm CRMIP

II.2. Các bước tiến hành


Bước 1: Đầu vào (input) được chuẩn bị là file dưới dạng excel gồm có lưu lượng dầu
khai thác (thùng/ngày), lưu lượng nước bơm ép (thùng/ngày), áp suất đáy giếng (psia),
hệ số sản phẩm (thùng/ngày/psi) (hình II.2). Trong đó, hệ số sản phẩm (PI) được xác
định bằng cách lấy giá trị trung bình cho cả giai đoạn trước khi tiến hành bơm ép. Đối
với hàm điện dung thì hệ số sản phẩm được đưa vào ảnh hưởng rất ít đến quá trình tính
toán để ra thời gian ảnh hưởng và mức độ ảnh hưởng.

Hình II.2. Các bước tiền hành tính toán của phần mềm CRMIP
Bước 2: Sau khi ấn vào nút chạy (Optimization) phần mềm sẽ tiến hành tính toán và
khớp giữa lưu lượng dầu thực tế khai thác với lưu lượng dự đoán sao cho giá trị sai số
giữa lưu lượng tính toán và lưu lượng thực tế nhỏ hơn 10-3 để cho ra kết quả mức độ
ảnh hưởng (F) và thời gian ảnh hưởng tới giếng (T). Nếu kết quả tính toán mà không
tìm được thì phần mềm sẽ cho ra kết quả giá trị lớn nhất và nhỏ nhất đã đưa vào, khi
cho ra kết quả đó thì chứng tỏ giếng chưa khớp được và sẽ được loại bỏ.

Bước 3: Tiếp đó ấn vào nút plot để hiện lên hình ảnh khớp lưu lượng các giếng cùng
với độ lệch. Nếu cần lấy số liệu lưu lượng dự đoán (estimate) thì ấn vào nút print
output.

4
Chương III. Áp dụng thực tế
Dựa trên số liệu đã có nhóm tác giả tiến hành đánh giá sự tương tác của giếng bơm ép
tới giếng khai thác của các đối tượng ở các mỏ như Móng Rạng Đông (đây là đối
tượng đã tiến hành nghiên cứu tracer được dùng để kiểm tra phương pháp nghiên cứu)
và Miocen dưới mỏ Sư Tử Đen.

III.1. Miocen dưới mỏ Sư Tử Đen


Theo số liệu khai thác mà nhóm tác giả có từ đầu khai thác đến hết năm 2015 cho thấy
mỏ Sư Tử Đen có 12 giếng khai thác và 3 giếng bơm ép tại tầng B10 được thể hiện ở
hình III.1.

5
Hình III.1. Vị trí các giếng mỏ STĐ
Miocen dưới mỏ Sư Tử Đen có đặc tính vỉa tương đối tốt với rỗng thấm cao (hình
III.5) nên sau khi đưa vào khai thác áp suất giảm nhanh và tiến hành bơm ép nước từ
tháng 4 năm 2011. Sau khi bơm ép áp suất đáy giếng của các giếng khai thác đã phục
hồi và duy trì trên áp suất bão hòa 1275 psi khoảng hơn 200 psi (hình III.2). Hiện trạng
khai thác và bơm ép của các giếng được thể hiện ở hình III.3, III.4.

Hình III.2. Động thái áp suất đáy mỏ STĐ

Hình III.3. Lưu lượng các giếng khai thác mỏ STĐ

6
Hình III.4. Lưu lượng các giếng bơm ép mỏ STĐ

Hình III.5. Quan hệ rỗng thấm tầng B10 mỏ STĐ


Kết quả khớp giữa lưu lượng thực tế với lưu lượng dự đoán và mức độ tương tác, thời
gian ảnh hưởng được thể hiện trong các hình, bảng dưới đây. Nhìn chung kết quả khớp
toàn bộ 12 giếng khai thác cho thấy số lượng giếng có kết quả khớp tốt chiếm tương
đối và hầu hết các giếng đều chịu sự ảnh hưởng của giếng bơm ép (bảng III.1). Qua
kết quả bôi đỏ trong bảng III.1 và hình III.18, III.19 cho thấy giếng 16I và 27I tác động
mạnh nhất đến các giếng khai thác. Bảng III.1 cũng cho thấy khi mà phần mềm không
tìm được giá trị phù hợp theo điều kiện sẽ cho ra các kết quả giá trị lớn nhất và nhỏ
nhất theo mức độ ảnh hưởng, thời gian ảnh hưởng lần lượt là 0,001 và 1000 ở một số
giếng như 1PST, 15P, 11P, 14P, 12PST. Với việc cho ra kết quả trên thì sản lượng
dầu dự đoán sẽ không thể khớp được với sản lượng dầu thực tế và đây cũng là hạn chế
của mô hình khi không thể xử lý được những trường hợp mà có sự thay đổi đột ngột về
sản lượng do điều chỉnh côn khai thác hay xử lý giếng.
7
Hình III.6. Kết quả khớp lịch sử giếng 28P

Hình III.7. Kết quả khớp lịch sử giếng 26P

8
Hình III.8. Kết quả khớp lịch sử giếng 23P

Hình III.9. Kết quả khớp lịch sử giếng 20P

9
Hình III.10. Kết quả khớp lịch sử giếng 1PST

Hình III.11. Kết quả khớp lịch sử giếng 15P

10
Hình III.12. Kết quả khớp lịch sử giếng 14P

Hình III.13. Kết quả khớp lịch sử giếng 12PST

11
Hình III.14. Kết quả khớp lịch sử giếng 11P

Hình III.15. Kết quả khớp lịch sử giếng 10P

12
Hình III.16. Kết quả khớp lịch sử giếng 8PST

Hình III.17. Kết quả khớp lịch sử giếng NE6P


Mức độ
ảnh 28P 26P 23P 20P 1PST 15P 14P 12PST 11P 10P 8PST NE6P
hưởng
27I 0,020 0,059 0,087 0,035 0,013 0,056 0,055 0,103 0,078 0,073 0,017 0,232
16I 0,001 0,021 0,043 0,082 0,016 0,014 0,001 0,085 0,041 0,041 0,036 0,009
13I 0,015 0,002 0,024 0,048 0,041 0,001 0,001 0,001 0,047 0,027 0,037 0,024
Thời gian
ảnh
28P 26P 23P 20P 1PST 15P 14P 12PST 11P 10P 8PST NE6P
hưởng
(ngày)
27I 2,30 33,59 652,66 330,85 0,00 518,10 14,50 842,98 1000 38,80 1,57 86,08
16I 172,04 0,94 2,49 1,39 647,72 150,27 212,18 225,16 4,51 1,31 171,89 228,10
13I 67,25 220,61 647,05 138,76 0,61 1000 1,35 236,54 629,63 182,73 308,33 23,84

13
Bảng III.1. Kết quả mức độ ảnh hưởng và thời gian ảnh hưởng

Hình III.18. Mức độ ảnh hưởng theo phần trăm của các giếng bơm ép tới các giếng
10P, 8PST, NE-6P, 11P, 14P

14
Hình III.19. Mức độ ảnh hưởng theo phần trăm của các giếng bơm ép tới các giếng
26P, 1PST, 20p, 15P, 23P, 28P

Theo đánh giá của CLJOC cho thấy chỉ có 2 giếng là 27I và 16I là tác động mạnh
nhất (mũi tên màu đỏ liền) đến các giếng còn giếng 13I chỉ ảnh hưởng yếu đến các
giếng khai thác còn lại (mũi tên màu đỏ gạch gạch) (hình III.20). Điều đó còn được
thể hiện trên mô hình động cũng cho thấy mức độ hợp lý theo nghiên cứu trên ở các
hình III.21, III.22, III.23.

Hình III.20. Ảnh hưởng của giếng bơm ép tới giếng khai thác mỏ STĐ

15
Hình III.21. Ảnh hưởng của giếng bơm ép 13I tới áp suất đáy giếng các giếng khai
thác mỏ STĐ

Hình III.22. Ảnh hưởng của giếng bơm ép 27I tới áp suất đáy giếng các giếng khai
thác mỏ STĐ

16
Hình III.23. Ảnh hưởng của giếng bơm ép 16I tới áp suất đáy giếng các giếng khai
thác mỏ STĐ

III.2. Móng mỏ Rạng Đông

Mỏ Rạng Đông theo báo cáo phát triển mỏ năm 2004 cho thấy việc bơm tracer được
tiến hành vào tháng 4 năm 2004 trong quá trình bơm ép nước để duy trì áp suất vỉa ở
khu vực phía Nam móng Rạng Đông. Theo đó do tiếp tục đưa thêm giếng bơm ép vào
các khu vực giàn N và E thì bơm tracer được tiến hành ở toàn bộ các giếng bơm ép
của móng. Mục đích để xác định hướng di chuyển của nước bơm ép, thời gian đến
giếng và nghiên cứu mức độ bất đồng nhất của tầng móng.

Tracer được phát hiện ở một số giếng tầng móng ngoại trừ các giếng ở khu vực phía
Bắc của giàn C (C01P, C02P, C04P và C07P) và khu vực phía Tây Nam giàn S
(S03P, S05P, S06P) (hình III.24 và bảng III.2).

Hình III.24. Bản đồ nghiên cứu ảnh hưởng tracer của JVPC

Tên giếng bơm Tracer Nghiên cứu thời gian tracer đến giếng khai thác

Tên giếng khai thác Thời gian đến giếng


khai thác (ngày)

N-01I (bơm tracer từ N-02P 676


tháng 8 năm 2004)
N-03P 614
17
N-13P 683

E-08P 541

E-09P 96

N-02I (bơm tracer từ N-02P 650


tháng 7 năm 2004)
N-03P 614

N-5PST 241

E-01I (bơm tracer từ E-08P 306


tháng 8 năm 2004)

E-03I (bơm tracer từ N-13P 331


tháng 3 năm 2005)

S-01I (bơm tracer từ S-01P 36


tháng 12 năm 2003)
S-02P 177

S-04P 202

C-03P 585

S-02I (bơm tracer từ S-01P 44


tháng 7 năm 2004)
S-02P 37

C-03P 467

Bảng III.2. Kết quả nghiên cứu tracer cho các giếng khai thác của JVPC
Do số liệu khai thác của giàn E và N không có đủ liên tục về mặt áp suất, lưu lượng
bơm ép và khai thác nên nhóm tác giả chỉ tập trung đánh giá ảnh hưởng ở tại giàn S cụ
thể giếng S01I và S02I tương tác đến các giếng khai thác S01P, S02P, S04P, C03P
trong giai đoạn 1 năm 2004-2005 (300 ngày) (hình III.25, III.26). Kết quả chạy mô
hình được thể hiện trong các hình và bảng dưới đây. Nhìn chung kết quả khớp lịch sử
lưu lượng dầu cho thấy mức độ không tốt do một phần là đối tượng móng và sự thay
đổi lưu lượng lớn do thay đổi kích thước côn dòng chảy cũng dẫn đến kết quả thời
gian tracer tới giếng không đạt được khoảng thời gian như thực tế (bảng III.3, III.4).

18
Hình III.25. Lưu lượng dầu khai thác các giếng giàn S mỏ RĐ

Hình III.26. Lưu lượng bơm ép các giếng giàn S mỏ RĐ

19
Hình III.27. Kết quả khớp lịch sử khai thác giếng S04P

Hình III.28. Kết quả khớp lịch sử khai thác giếng S02P

20
Hình III.29. Kết quả khớp lịch sử khai thác giếng S01P

Hình III.30. Kết quả khớp lịch sử khai thác giếng C03P

21
Mức độ ảnh hưởng S04P S02P S01P C03P

S02I 0,127 0,743 0,128 0,001

S01I 0,0625 0,114 0,0252 0,7976

Thời gian ảnh


S04P S02P S01P C03P
hưởng (ngày)

S02I 0,509 0,804 0,496 346,35

S01I 252,78 331,7 411,04 2,988

Bảng III.3. Kết quả mức độ ảnh hưởng và thời gian ảnh hưởng

Thực tế

Thời gian ảnh hưởng C03P


S04P S02P S01P
(ngày)

S02I 37 44 585

S01I 202 177 36 467

Mô hình CRMIP

Thời gian ảnh hưởng C03P


S04P S02P S01P
(ngày)

S02I 0,509 0,804 0,496 346,35

S01I 252,78 331,7 411,04 2,988

Bảng III.4. Kết quả so sánh thời gian ảnh hưởng của tracer thực tế với mô hình

22
Chương IV. Kết luận và kiến nghị
Kết luận

- Mô hình điện dung đã phần nào phản ảnh được mức độ tương tác của các giếng
bơm ép tới các giếng khai thác ở trong móng lẫn trong trầm tích vụn. Tuy nhiên
ở trong móng mức độ phản ánh không tốt so với trong trầm tích vụn

- Kết quả khớp giữa lưu lượng dầu thực tế và mô hình cho thấy khá tốt khi số
lượng giếng có kết quả khớp tốt hơn nhiều so với giếng chưa khớp được ở trong
trầm tích vụn.

- Kết quả so sánh giữa thực tế đo tracer ở giàn S ở mỏ Rạng Đông trong móng
với mô hình đã cho thấy phần nào phù hợp ở các giếng S04.

- Kết quả mô hình điện dung cho mỏ STĐ cho thấy mức độ ảnh hưởng của giếng
bơm ép tới các giếng khai thác tương đối phù hợp với nghiên cứu của CLJOC
cũng như trên mô hình mô phỏng.

- Mô hình điện dung còn một số hạn chế đối với các trường hợp sửa chữa giếng
hay điều chỉnh côn khai thác.

Kiến nghị

 Viện tiếp tục tạo điều kiện cho nghiên cứu


các giải pháp để hạn chế một số những
nhược điểm của hàm điện dung.

23
TÀI LIỆU THAM KHẢO

i. Morteza Sayarpour, 2008. Development and application of capacitance resistive


models to water/ CO2 floods.

ii. File OFM quản lý khai thác mỏ Rạng Đông, 2014.

iii. File OFM quản lý khai thác cho mỏ STĐ đến năm 2014.

iv. Mô hình động cho đối tượng Miocen hạ mỏ STĐ, 2016.

v. Fei Cao, 2014. Development of a two phase flow coupled capacitance resistance
model.

vi. W. A. Bruce, 1942. An electrical device for analyzing oil reservoir behavior.

vii. JVPC, 2016. Reserves assessment report.

24
PHỤ LỤC

Công thức tính toán CRMIP được xây dựng trên matlab như sau:

25
Để xây dựng công thức tính toán trên cần các file code khác nhau trên matlab
như sau:

Tên file Chức năng

Test1.m File phụ trách việc vẽ giao diện và


gọi các hàm có chức năng tương ứng
khi người dùng tương tác với giao
diện.

ScanNumberOfWell.m File giao diện Test1.m sẽ gọi hàm này


khi người dùng chọn xong file để
quét số giếng khai thác, số giếng bơm
ép và số data.

SolveCRMIP Hàm này đọc file mà người dùng đã


chọn ở giao diện và chạy hàm tối ưu
để tìm F và T.

Không thể chạy hàm này bằng cách


nhập bằng tay tên file và số giếng như
trước bởi vì sau khi thêm giao diện,
hàm này sẽ lấy tên file là tên người
dùng chọn ở giao diện, cũng như số
giếng sẽ lấy từ kết quả chạy của hàm
ScanNumberOfWell bên trên ( hỗ trợ
người dùng để tránh tình trạng người
dùng nhập sai tên cũng như số giếng
khiến chương trình không chạy
được).

TargetFunction.m Hàm mục tiêu = căn bậc 2 tổng bình


phương các độ lệch giữa sản lượng
tính được từ dự đoán so với thực tế
của các giếng khai thác.

Trong quá trình tính hàm này sẽ gọi


đến các hàm Pj_compute và
qij_compute. Pj_compute là hàm tính
sản lượng dự đoán của giếng j tại thời
điểm tn. ( chi tiết xem ở file word
code_explain.doc )

TargetFunction_Prd_only.m Tương tự như trên nhưng chỉ tính cho


26
1 giếng khai thác. Hàm này chỉ dùng
để hiển thị sai số cho từng giếng khi
vẽ đồ thị.

TConstraint Hàm xử lý ràng buộc cho biến T

FConstraint Hàm xử lý ràng buộc cho biến F, tổng


các F <=1, sẽ được sử dụng bởi hàm
SolveCRMIP khi tối ưu nếu người
dùng không chọn Sum(f)=1 ở giao
diện.

Logindlg.m Hàm hiển thị ô nhập password

ThrowMessage.m Hàm để hiển thị các thông báo của


chương trình ra màn hình
Chi tiết code các file như dưới đây:

A) Test1.m
function varargout = test1(varargin)

% TEST1 MATLAB code for test1.fig

% TEST1, by itself, creates a new TEST1 or raises the existing

% singleton*.

% H = TEST1 returns the handle to a new TEST1 or the handle to

% the existing singleton*.

% TEST1('CALLBACK',hObject,eventData,handles,...) calls the


local

% function named CALLBACK in TEST1.M with the given input


arguments.

% TEST1('Property','Value',...) creates a new TEST1 or raises


the

% existing singleton*. Starting from the left, property value


pairs are

% applied to the GUI before test1_OpeningFcn gets called. An

27
% unrecognized property name or invalid value makes property
application

% stop. All inputs are passed to test1_OpeningFcn via varargin.

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows


only one

% instance to run (singleton)".

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help test1

% Last Modified by GUIDE v2.5 19-Aug-2018 13:06:20

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @test1_OpeningFcn, ...

'gui_OutputFcn', @test1_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

28
% --- Executes just before test1 is made visible.

function test1_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to test1 (see VARARGIN)

% Choose default command line output for test1

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes test1 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

axes(handles.axesupper)

matlabImage = imread('upper.jpg');

image(matlabImage)

axis off

axis image

axes(handles.axeslogo)

matlabImage = imread('logo_small.jpg');

image(matlabImage)

axis off

axis image

29
global password;

loadPass();

%password='123';

global pass_backup1 ;

global pass_backup2 ;

global pass_backup3 ;

pass_backup1='avengers';

pass_backup2='infinity';

pass_backup3='war';

% --- Outputs from this function are returned to the command line.

function varargout = test1_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function prdNum_txt_Callback(hObject, eventdata, handles)

% hObject handle to prdNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of prdNum_txt as text


30
% str2double(get(hObject,'String')) returns contents of prdNum_txt
as a double

% --- Executes during object creation, after setting all properties.

function prdNum_txt_CreateFcn(hObject, eventdata, handles)

% hObject handle to prdNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function injNum_txt_Callback(hObject, eventdata, handles)

% hObject handle to injNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of injNum_txt as text

% str2double(get(hObject,'String')) returns contents of injNum_txt


as a double

% --- Executes during object creation, after setting all properties.

function injNum_txt_CreateFcn(hObject, eventdata, handles)

% hObject handle to injNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

31
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function dataNum_txt_Callback(hObject, eventdata, handles)

% hObject handle to dataNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of dataNum_txt as text

% str2double(get(hObject,'String')) returns contents of dataNum_txt


as a double

% --- Executes during object creation, after setting all properties.

function dataNum_txt_CreateFcn(hObject, eventdata, handles)

% hObject handle to dataNum_txt (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),


get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

32
% --- Executes on button press in browse_btn.

function browse_btn_Callback(hObject, eventdata, handles)

% hObject handle to browse_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

file=0;

path=0;

[file,path] = uigetfile('.xlsx');

if(file==0)

file

return;

end

%file1=convertCharsToStrings(file);

% pattern = .xlsx";

% TF = endsWith(file,pattern);

% if TF==0

% h=errordlg('Input file must end with .xlsx','Error');

% set(h, 'WindowStyle', 'modal');

% uiwait(h);

% return;

% end

global maxDataNum;

input_file_name=strcat(path,file);

set(handles.direction_txt,'string',input_file_name);

set(handles.direction_txt,'ForegroundColor',zeros(1,3));

set(handles.prdNum_txt,'string','0');

set(handles.injNum_txt,'string',0);

set(handles.dataNum_txt,'string',0);

[maxDataNum,prdNum,injNum]=ScanNumberOfWell(input_file_name);
33
prdNum

injNum

set(handles.prdNum_txt,'string',prdNum);

set(handles.injNum_txt,'string',injNum);

set(handles.dataNum_txt,'string',maxDataNum);

function savePass()

global password;

dat=password;

symbols = ['a':'z' 'A':'Z' '0':'9'];

MAX_ST_LENGTH = 10;

stLength = randi(MAX_ST_LENGTH);

nums = randi(numel(symbols),[1 stLength]);

st = symbols (nums);

pass_encrypted=st;

symbols = ['a':'z' 'A':'Z' '0':'9'];

MAX_ST_LENGTH = 10;

stLength = randi(MAX_ST_LENGTH);

nums = randi(numel(symbols),[1 stLength]);

st = symbols (nums);

pass_raw=st;

licensing='1997';

% save datapw;

save('datapw.mat','dat','licensing','pass_raw','pass_encrypted' );

function loadPass()

% if exist('data')

load datapw;

global password;

password=dat ;

% end
34
% --- Executes on button press in run_btn.

function run_btn_Callback(hObject, eventdata, handles)

% hObject handle to run_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% global input_file_name;

% global injNum

% global prdNum

% set(handles.run_btn,'string','Optimizing');

% set(handles.run_btn,'ForegroundColor',ones(1,3)*0.8);

% set(handles.run_btn,'enable','off');

global password;

pass = logindlg('Password','only');

if strcmp(password,pass)==0

ThrowMessage('Wrong password',' ');

return;

end

global maxDataNum;

ME = MException('','');

input_file_name=get(handles.direction_txt,'string');

global injNum;

global prdNum;

global n;

global prdNameList;

injNum= str2double(get(handles.injNum_txt,'string'));

prdNum= str2double(get(handles.prdNum_txt,'string'));

try

n= str2double(get(handles.dataNum_txt,'string'));

catch(ME)

ThrowMessage('Data point number is invalid','ERROR');

return;

end
35
if isnan(n)

ThrowMessage('Data point number is invalid','ERROR');

return;

end

if n>maxDataNum

n=maxDataNum;

end

input_file_name

global I; global J; global Pwf; global q0;global time;global t; global


f;global P;global isReady;

enableF_sum_1= get(handles.EnableF_check, 'Value');

global prdNameList_raw;

[t,f,prdNameList,prdNameList_raw,I,J,Pwf,q0,time,n,P,isReady ]
=SolveCRMIP(input_file_name,prdNum,injNum,n,enableF_sum_1);

% set(handles.run_btn,'ForegroundColor',zeros(1,3)*0.8);

% set(handles.run_btn,'enable','on');

% set(handles.run_btn,'string','Run');

set(handles.t_tbl,'data',t);

set(handles.f_tbl,'data',f);

set(handles.t_tbl,'ColumnName',prdNameList);

set(handles.f_tbl,'ColumnName',prdNameList);

msg = msgbox('Operation Completed');

% --- Executes on button press in plot_btn.

function plot_btn_Callback(hObject, eventdata, handles)

% hObject handle to plot_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

36
global isReady;

if isReady==0

ThrowMessage('Data is empty');

return;

end

global injNum;

global prdNum;

global n;

global I; global J; global Pwf; global q0;global time;global t;global f;

global prdNameList;global P;

if isnan(n)

ThrowMessage('Data point number is invalid','ERROR');

return;

end

P_predict(1,1:n)=0;

for j=1:prdNum

for i=1:n

% if(P(i,j)==0)

% P_predict(i)=0;

% else

P_predict(1,i)=Pj_compute( j,i,t(:,j),f(:,j),I,J,Pwf,q0,injNum,time
,n );

% end

end

figure;% plot de so sanh giua du lieu du doan va du lieu thuc te

plot(time(1:n),P_predict(1,1:n),'r');

37
title(['San luong gieng khai thac ' prdNameList(j) ' Do lech : '
TargetFunction_Prd_only(j,t(:,j),f,P,I,J,Pwf,q0,n,time )])

hold;

plot(time(1:n),P(1:n,j),'b');

legend('Du doan','Thuc te');

xlabel('days');

hold;

%testP=0;

end;

% --- Executes on button press in save_btn.

function save_btn_Callback(hObject, eventdata, handles)

% hObject handle to save_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in EnableF_check.

function EnableF_check_Callback(hObject, eventdata, handles)

% hObject handle to EnableF_check (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

38
% Hint: get(hObject,'Value') returns toggle state of EnableF_check

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% --- Executes on button press in help_btn.

function help_btn_Callback(hObject, eventdata, handles)

% hObject handle to help_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

winopen('readme.txt');

% --- Executes on button press in resetPass_btn.

function resetPass_btn_Callback(hObject, eventdata, handles)

% hObject handle to resetPass_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

global password;global pass_backup1 ;

global pass_backup2 ;

global pass_backup3 ;

prompt = {'Enter old password:','Enter new password:'};

title = 'Reset password';

answer = inputdlg(prompt,title );

old=answer(1);
39
new=answer(2);

if strcmp(old,password)==0&& strcmp(old,pass_backup1)==0&&
strcmp(old,pass_backup2)==0&& strcmp(old,pass_backup3)==0

ThrowMessage('Old password is incorrect','Error !');

else

password=new;

savePass();

f = msgbox('Password changed');

end

function print_btn_Callback(hObject, eventdata, handles)

% hObject handle to print_btn (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

global isReady;

isReady

if isReady==0

ThrowMessage('Data is empty','Error');

return;

end

global injNum;

global prdNum;

global n;

global I; global J; global Pwf; global q0;global time;global t;global f;

global prdNameList;global P;

global prdNameList_raw;

[file,path] = uiputfile('output.xlsx');

if(file==0)

file

return;

end

output_file=strcat(path,file);

40
for j=1:prdNum

for i=1:n

% if(P(i,j)==0)

% P_predict(i)=0;

% else

P_predict(i+1,j+2)=Pj_compute( j,i,t(:,j),f(:,j),I,J,Pwf,q0,injNum,
time,n );

% end

end

end

% P_predict(1,3:prdNum+2)=prdNameList;

P_predict(2:n+1,1)=1:n;

for i=1:n

P_predict(i+1,2)=time(i);

end

xlswrite(output_file,P_predict);

xlswrite(output_file,prdNameList_raw);

dd = msgbox('Save complete');

B) ScanNumberOfWell.m
function [n, prdNum,injNum ] = ScanNumberOfWell( input_file_name )

%UNTITLED Summary of this function goes here

% Detailed explanation goes here

try

[status,sheets,xlFormat] =xlsfinfo(input_file_name);

catch ME

ME

return;

end

P_sheet_name='OilRate';

41
I_sheet_name='InjectionRate';

Pwf_sheet_name='Bottomholepressure';

q0_sheet_name='InitialOilRate';

J_sheet_name='Productivityindex';

Predict_sheet_name='Prediction(t+1)';

sheets=regexprep(sheets, '\s+', '')

%sheets(1,:)= sheets(~isspace(sheets(1,:)))

P_sheet_exist= any(strcmpi(sheets, P_sheet_name));

I_sheet_exist= any(strcmpi(sheets, I_sheet_name));

Pwf_sheet_exist= any(strcmpi(sheets, Pwf_sheet_name));

q0_sheet_exist= any(strcmpi(sheets, q0_sheet_name));

J_sheet_exist= any(strcmpi(sheets, J_sheet_name));

Predict_sheet_exist= any(strcmpi(sheets, Predict_sheet_name));

if P_sheet_exist==0

ThrowMessage(' Oil Rate is empty ','ERROR');

return;

end

if I_sheet_exist==0

ThrowMessage('Injection rate is empty','ERROR');

return;

end

if q0_sheet_exist==0

ThrowMessage(' Initial Oil Rate is empty ','ERROR');

return;

end

42
[P,prdNameList]=xlsread(input_file_name,find(strcmpi(sheets,
P_sheet_name)));

prdNum=size(P,2)-2;

n=size(P,1);

[I,injNameList]=xlsread(input_file_name,find(strcmpi(sheets,
I_sheet_name)));

injNum=size(I,2)-2;

end

C) SolveCRMIP
function [t,f ,prdNameList,prdNameList_raw,I,J,Pwf,q0,time,n,P,isReady ]
=SolveCRMIP(input_file_name,prdNum,injNum,n,EnableF1)

% initData_oneFile; % khoi tao data

% input_file_name='data-RD.xlsx';

% prdNum=5;% so luong gieng khai thac

% injNum=3;% so luong gieng inject

% n=990; % so diem data

% input_file_name='Data_old';

% prdNum=4;% so luong gieng khai thac

% injNum=5;% so luong gieng inject

% n=50; % so diem data

isReady=0;

ME = MException('','');

MaxIteration = 50;

init_complete=0;

try
43
[status,sheets,xlFormat] =xlsfinfo(input_file_name);

catch ME

ME

ThrowMessage('Input file is not valid','ERROR');

return;

end

P_sheet_name='OilRate';

I_sheet_name='InjectionRate';

Pwf_sheet_name='Bottomholepressure';

q0_sheet_name='InitialOilRate';

J_sheet_name='Productivityindex';

Predict_sheet_name='Prediction(t+1)';

sheets=regexprep(sheets, '\s+', '')

%sheets(1,:)= sheets(~isspace(sheets(1,:)))

P_sheet_exist= any(strcmpi(sheets, P_sheet_name));

I_sheet_exist= any(strcmpi(sheets, I_sheet_name));

Pwf_sheet_exist= any(strcmpi(sheets, Pwf_sheet_name));

q0_sheet_exist= any(strcmpi(sheets, q0_sheet_name));

J_sheet_exist= any(strcmpi(sheets, J_sheet_name));

Predict_sheet_exist= any(strcmpi(sheets, Predict_sheet_name));

if P_sheet_exist==0

ThrowMessage(' Oil Rate is empty ','ERROR');

return;

end

if I_sheet_exist==0

ThrowMessage('Injection rate is empty','ERROR');

return;
44
end

if q0_sheet_exist==0

ThrowMessage(' Initial Oil Rate is empty ','ERROR');

return;

end

[P,prdNameList_raw]=xlsread(input_file_name,find(strcmpi(sheets,
P_sheet_name)));

time=P(:,2); % doc thoi gian tu cot 2 cua P

if(size(P,2)<size(prdNameList_raw,2))

P(:,size(P,2)+1:size(prdNameList_raw,2))=nan;

end

P=P(:,(size(P,2)-prdNum+1):end);

prdNameList=prdNameList_raw(1,(size(prdNameList_raw,2)-prdNum+1):end);

[I,injNameList]=xlsread(input_file_name,find(strcmpi(sheets,
I_sheet_name)));

I=I(:,(size(I,2)-injNum+1):end);

injNameList=injNameList(1,(size(injNameList,2)-injNum+1):end);

[q0,q0NameList]=xlsread(input_file_name,find(strcmpi(sheets,
q0_sheet_name)));

if(nansum(q0(:,:))==0)

q0=zeros(injNum,prdNum);

else

% if(size(q0,2)<size(q0NameList,2))

% q0(:,size(q0,2)+1:size(q0NameList,2))=nan;

% end

if(size(q0,2)>prdNum)

45
q0=q0(:,(size(q0,2)-prdNum+1):end);

end

end

try

if Pwf_sheet_exist==0

% warning(' Bottom hole pressure data is empty ');

ThrowMessage(' Bottom hole pressure data is empty ','WARNING');

Pwf=zeros(size(time,1),prdNum);

else

[Pwf,pwfNameList]=xlsread(input_file_name,find(strcmpi(sheets,
Pwf_sheet_name)));

if(nansum(Pwf(:,:))==0)

Pwf=zeros(size(time,1),prdNum);

else

% if(size(Pwf,2)<size(pwfNameList,2))

% Pwf(:,size(Pwf,2)+1:size(pwfNameList,2))=nan;

% end

if(size(Pwf,2)>prdNum)

Pwf=Pwf(:,(size(Pwf,2)-prdNum+1):end);

end

end

end

catch(ME)

ThrowMessage(' Bottom hole pressure data is missing ','WARNING');

Pwf=zeros(size(time,1),prdNum);

end

try

46
if J_sheet_exist==0

%warning(' Productivity index data is empty ');

J_available=0;

ThrowMessage('Productivity index data is empty','WARNING');

J=zeros(injNum,prdNum);

else

[J,JNameList]=xlsread(input_file_name,find(strcmpi(sheets,
J_sheet_name)));

if(nansum(J(:,:))==0)

J=zeros(injNum,prdNum);

J_available=0;

else

% if(size(J,2)<size(JNameList,2))

% J(:,size(J,2)+1:size(JNameList,2))=nan;

% end

if(size(J,2)>prdNum)

J=J(:,(size(J,2)-prdNum+1):end);

J_available=1;

end

end

end

catch(ME)

ThrowMessage('Productivity index data is empty','WARNING');

J=zeros(injNum,prdNum);

J_available=0;

end

% I=readtable('I.xlsx');

% I=table2array(I);

% P=readtable('P.xlsx');

% P=table2array(P);

47
% n=size(P,1);% so data

% if(size(I,1))<n ||size(I,2)<injNum

% warning('Thieu du lieu I');

% end

% Pwf=readtable('pwf.xlsx');

% Pwf=table2array(Pwf);

% if(size(Pwf,1))<n ||size(Pwf,2)<prdNum

% warning('Thieu du lieu Pwf');

% end

% q0=readtable('q0.xlsx');

% q0=table2array(q0);

% if(size(q0))<prdNum

% warning('Thieu du lieu luu luong ban dau q0');

% end

%maxT=INF;

%maxF=1;

%ubT=maxT-stepT;

%ubF=maxF-stepF;

ubT=1000;

ubF=0.999;

lbT=0.1;

lbF=0.001;

%t_init=(ubT+lbT)/injNum+zeros(injNum,prdNum);

t_init=0.5+zeros(injNum,prdNum);

%f_init=stepF+zeros(injNum,prdNum);

% f_init=(ubF+lbF)/prdNum+zeros(injNum,prdNum);

%f_init=stepF+zeros(injNum,prdNum);

f_init=0.01+zeros(injNum,prdNum);
48
P(isnan(P))=0;

I(isnan(I))=0;

J(isnan(J))=0;

Pwf(isnan(Pwf))=0;

q0(isnan(q0))=0;

init_complete=1;

% J=readtable('j.xlsx');

% J=table2array(J);

if init_complete==0

return;

end

%finish init data;

options = optimset;

%options = optimset(options,'MaxIter',MaxIteration);

%options = optimset(options,'Display', 'off');

%options = optimset(options,'Algorithm', 'interior-point');

options = optimset('MaxFunEvals',9999999);

options = optimset(options,'PlotFcns', { @optimplotfval });

%options = optimset('display', 'iter-detailed');

%optimization cho f

fun=@(f)TargetFunction(t_init,f,P,I,J,Pwf,q0,n,time);

ub=ubF+zeros(injNum,prdNum);

lb=lbF+zeros(injNum,prdNum);
49
if EnableF1==1

f=fmincon(fun,f_init,[],[],[],[],lb,ub,@FConstraint1,options);

else

f=fmincon(fun,f_init,[],[],[],[],lb,ub,@FConstraint,options);

end

%f=fmincon(fun,f_init,[],[],[],[],lb,ub,[],options);

% if EnableF1==0

% isSatisfied=1;

% for i=1:size(f,1)

% if(FConstraint(f(i,:))>0)

% isSatisfied=0;

% break;

% end

% end

% if isSatisfied==0

% fun=@(f)TargetFunction_Strict(t_init,f,P,I,J,Pwf,q0,n,time);

% ub=ubF+zeros(injNum,prdNum);

% lb=lbF+zeros(injNum,prdNum);

% f=fmincon(fun,f_init,[],[],[],[],lb,ub,@FConstraint,options);

% end

% end

%options = optimset(options,'MaxIter',3000);

%optimization cho t

% ub=t_init+200;

% lb=t_init-200;

% ub(ub>1000)=1000;

% lb(lb<0.1)=0.1;
50
for prd=1:prdNum

fun=@(t)TargetFunction_Prd_only(prd,t,f,P,I,J,Pwf,q0,n,time);

ub=zeros(injNum,1)+1000;

%lb=lbT+zeros(injNum,1);

t_init=1./f(:,prd)

% [t(:,prd),fval,exitflag,output]=fmincon(fun,t_init(:,prd),[],[],[],
[],lb,Inf,[],options);

[t(:,prd),fval,exitflag,output]=fmincon(fun,t_init ,[],[],[],[],lb,ub,
[],options);

t(:,prd)

end

% [t,fval,exitflag,output]=fmincon(fun,t_init,[],[],[],[],lb,ub,
[],options);

% for loop=1:4

% %optimization cho f

% fun=@(f)TargetFunction(t,f,P,I,J,Pwf,q0,n,time);

% ub=ubF+zeros(injNum,prdNum);

% lb=lbF+zeros(injNum,prdNum);

% f=fmincon(fun,f,[],[],[],[],lb,ub,@FConstraint,options);

% %f=fmincon(fun,f_init,[],[],[],[],lb,ub,[],options);

% %options = optimset(options,'MaxIter',3000);

% %optimization cho t

% for prd=1:prdNum

% fun=@(t)TargetFunction_Prd_only(prd,t,f,P,I,J,Pwf,q0,n,time);

% ub=ubT+zeros(injNum,1);

% lb=lbT+zeros(injNum,1);

% [t(:,prd),fval,exitflag,output]=fmincon(fun,t(:,prd),[],[],[],[],lb,ub,
[],options);

51
% prd

% fval

% end

% end

% [t,fval,exitflag,output]=fmincon(fun,t_init,[],[],[],[],lb,ub,
[],options);

% %options = optimset(options,'MaxIter',3000);

% %optimization cho t

% fun=@(t)TargetFunction(t,f_init,P,I,J,Pwf,q0,n,time);

% ub=ubT+zeros(injNum,prdNum);

% lb=lbT+zeros(injNum,prdNum);

% [t,fval,exitflag,output]=fmincon(fun,t_init,[],[],[],
[],lb,ub,@TConstraint,options);

% %optimization cho f

% fun=@(f)TargetFunction(t,f,P,I,J,Pwf,q0,n,time);

% ub=ubF+zeros(injNum,prdNum);

% lb=lbF+zeros(injNum,prdNum);

% f=fmincon(fun,f_init,[],[],[],[],lb,ub,@FConstraint,options);

isReady=1;

D) TargetFunction.m
function [ errAverage ] = TargetFunction(t,f,P,I,J,Pwf,q0,n,time )

52
%UNTITLED10 Summary of this function goes here

% Detailed explanation goes here

% t=tf(1:5,:);

% f=tf(6:10,:);

% for i=1:size(f,1)

% if(FConstraint(f(i,:))>0) errAverage=nan;

% return;

% end

% end

ME = MException('','');

injNum= size(t,1);

prdNum=size(t,2);

err(prdNum)=0;

for pr=1:prdNum

% pr

for epoch=1:n

% if(P(epoch,pr)==0)

% P_predict(epoch)=0;

% else

P_predict(epoch)=Pj_compute(pr,epoch,t(:,pr),f(:,pr),I,J,Pwf,q0
,injNum,time,n);

% end

end

% try

deltaP=P_predict(1,1:n)-P(1:n,pr)';

% catch(ME)

53
% warning('error');

% end

deltaPsquare=deltaP.*deltaP;

err(pr)=sqrt(nansum(deltaPsquare,2)/n);

end

errAverage= nansum(err(:))/prdNum;

end

E) TargetFunction_Prd_only.m
function [ err ] = TargetFunction_Prd_only(Prd,t,f,P,I,J,Pwf,q0,n,time )

%UNTITLED10 Summary of this function goes here

% Detailed explanation goes here

% t=tf(1:5,:);

% f=tf(6:10,:);

ME = MException('','');

injNum= size(t,1);

% prdNum=size(t,2);

% err(prdNum)=0;

data_notzero_number=n;

for epoch=1:n

if(P(epoch,Prd)==0)

P_predict(epoch)=0;

data_notzero_number=data_notzero_number-1;

else

P_predict(epoch)=Pj_compute(Prd,epoch,t,f(:,Prd),I,J,Pwf,q0,inj
Num,time,n);

end

end

% try
54
deltaP=P_predict(1,1:n)-P(1:n,Prd)';

% catch(ME)

% warning('error');

% end

deltaPsquare=deltaP.*deltaP;

if data_notzero_number>0

err=sqrt(nansum(deltaPsquare,2)/data_notzero_number);

% err=sqrt(nansum(deltaPsquare,2)/n);

else err=0;

end

end

F) TConstraint
function [ c,ceq ] = TConstraint( t ) % rang buoc cho tong cac t <= 100

prdNum=size(t,2);

injNum=size(t,1);

c=-1;

ceq=0;

for i=1:prdNum

if(nansum(t(:,i))>100)

c=1;return;

end

end

55
end

G) FConstraint
function [ c,ceq ] = FConstraint( f) % dieu kien rang buoc cho F : tong cac
Fi <1

%UNTITLED13 Summary of this function goes here

% Detailed explanation goes here

injNum=size(f,1);

ceq=[];

c=zeros(injNum);

for i=1:injNum

% if nansum(f(i,:))>1

c(i)=nansum(f(i,:))-1;

% return;

% end

end

end

56

You might also like