1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long

207 45 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 207
Dung lượng 11,08 MB

Nội dung

(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long(Luận án tiến sĩ) Nghiên cứu xây dựng đường bao tải trọng giới hạn của nền đập Xà lan vùng đồng bằng sông Cửu Long

LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng tơi Các số liệu, kết nêu luận án trung thực chưa cơng bố cơng trình khác Việc tham khảo nguồn tài liệu thực rõ ràng theo quy định Nguyễn Hải Hà LỜI CẢM ƠN Trước tiên, xin chân thành gửi lời cảm ơn tới giúp đỡ quý báu Cơ sở Đào tạo - Viện Khoa học Thủy lợi Việt Nam, Viện Thủy Công quan quản lý tạo điều kiện thuận lợi, giúp đỡ thực luận án Tôi xin bày tỏ lòng biết ơn sâu sắc tới GS.TS Trần Đình Hòa TS Trần Văn Thái trực tiếp hướng dẫn, ln cổ vũ, có nhiều đóng góp q báu tạo điều kiện cho tơi hồn thành luận án Cảm ơn GS.TS Trương Đình Dụ người thầy đặt móng phát triển cơng nghệ Đập xà lan Tôi xin cảm ơn tới GS.TS Nguyễn Quốc Dũng trực tiếp góp ý tạo điều kiện cho tơi q trình thực Tơi xin cảm ơn tới GS.TS Trịnh Minh Thụ góp ý cho tơi hướng nghiên cứu trình nghiên cứu sau đại học Tôi xin cảm ơn tới tập thể Trung tâm Cơng trình Đồng ven biển Đê điều, Viện Thủy công tạo điều kiện cho hồn thành luận án Tơi xin cảm ơn nhà khoa học, bạn bè đồng nghiệp có góp ý q báu cho luận án hồn thiện Tơi xin gửi lời cảm ơn tới người thân yêu đại gia đình tơi ln bên tơi tiếp cho tơi động lực để hồn thành luận án -i- MỤC LỤC MỤC LỤC i MỤC LỤC HÌNH VẼ iv MỤC LỤC BẢNG BIỂU ix KÝ HIỆU VIẾT TẮT MỘT SỐ THUẬT NGỮ THƯỜNG DÙNG xii MỞ ĐẦU 1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI MỤC ĐÍCH NGHIÊN CỨU 3 ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 3.1 Đối tượng nghiên cứu 3.2 Phạm vi nghiên cứu NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 4.1 Nội dung nghiên cứu 4.2 Phương pháp nghiên cứu NHỮNG ĐÓNG GÓP MỚI CỦA LUẬN ÁN Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CẤU TRÚC CỦA LUẬN ÁN CHƯƠNG TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU 1.1 GIỚI THIỆU CHUNG 1.1.1 Tình hình nghiên cứu ứng dụng đập Xà lan Việt Nam 1.1.2 Nguyên lý, cấu tạo kỹ thuật đập Xà lan 1.1.3 Tình hình ứng dụng ĐXL nước 10 1.2 NỀN ĐẤT YẾU VÙNG ĐBSCL 12 1.3 HÌNH THỨC MẤT ỔN ĐỊNH CƠNG TRÌNH TRÊN NỀN ĐẤT YẾU 13 1.4 BÀI TOÁN ỔN ĐỊNH ĐXL TRÊN NỀN ĐẤT YẾU 15 1.5 TỔNG QUAN NGHIÊN CỨU ĐƯỜNG BAO TẢI TRỌNG GIỚI HẠN 20 1.5.2 Móng chịu tải trọng đứng 21 1.5.3 Móng chịu đồng thời tải trọng đứng, ngang 22 1.5.4 Móng chịu đồng thời tải trọng đứng mơ men .24 1.5.5 Móng chịu đồng thời tải trọng đứng, ngang mô men 25 1.5.6 Đặc trưng đường bao tải trọng giới hạn 27 1.6 KẾT LUẬN CHƯƠNG 34 CHƯƠNG CƠ SỞ KHOA HỌC VÀ PHƯƠNG PHÁP XÂY DỰNG ĐƯỜNG BAO TẢI TRỌNG GIỚI HẠN 36 2.1 ĐẶT VẤN ĐỀ 36 - ii - 2.2 CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN ĐƯỜNG BAO TẢI TRỌNG GIỚI HẠN 36 2.2.1 Góc ma sát tiếp xúc 36 2.2.2 Phần tử tiếp xúc 36 2.3 NGHIÊN CỨU ẢNH HƯỞNG CỦA GÓC MSTX TỚI ĐƯỜNG BAO TTGH 40 2.3.1 Mơ hình tính tốn .40 2.3.2 Thông số chia lưới mơ hình tính tốn 41 2.3.3 Phương pháp xác định tải trọng giới hạn 42 2.3.4 Ảnh hưởng góc MSTX tới tải trọng đứng giới hạn 42 2.3.5 Ảnh hưởng góc MSTX tới đường bao TTGH đứng ngang 45 2.3.6 Ảnh hưởng góc MSTX tới quan hệ tải trọng đứng mô men .46 2.4 THỰC NGHIỆM MƠ HÌNH XÁC ĐỊNH GĨC MSTX 48 2.4.1 Mục đích nội dung thí nghiệm 48 2.4.2 Thiết kế mơ hình thí nghiệm 49 2.4.3 Công tác xây dựng lắp đặt thiết bị thí nghiệm 54 2.4.4 Các tiêu vật liệu mơ hình 55 2.4.5 Quy trình thí nghiệm kết thí nghiệm 57 2.5 THÍ NGHIỆM HIỆN TRƯỜNG 62 2.6 KẾT LUẬN CHƯƠNG 67 CHƯƠNG XÂY DỰNG ĐƯỜNG BAO TẢI TRỌNG GIỚI HẠN 68 3.1 TỔNG QUÁT 68 3.1.1 Mục đích xây dựng 68 3.1.2 Phương pháp xây dựng 68 3.2 XÂY DỰNG MƠ HÌNH TỐN 68 3.2.1 Biên mơ hình tốn 68 3.2.2 Mơ hình vật liệu tính tốn 68 3.2.3 Lựa chọn phần tử cho đất 70 3.2.4 Điểm đặt lực tính tốn 71 3.2.5 Phương pháp xây dựng đường bao từ mơ hình tốn 71 3.3 XÂY DỰNG MÔ ĐUN PHẦN MỀM 77 3.3.1 Lưu đồ phân tích 77 3.3.2 Giao diện lựa chọn phân tích .78 3.4 KIỂM ĐỊNH MƠ HÌNH BÀI TỐN PHẲNG 81 3.4.1 Móng chịu tải trọng đứng 81 3.4.2 Móng chịu tải trọng đứng ngang 82 3.4.3 Móng chịu tải trọng đứng mô men 83 3.4.4 Móng chịu tải trọng đứng, ngang mô men 84 - iii - 3.5 KIỂM ĐỊNH MƠ HÌNH BÀI TỐN KHƠNG GIAN BA CHIỀU 89 3.5.1 Mơ hình tốn không gian 89 3.5.2 Kết tính tốn 93 3.6 XÂY DỰNG ĐƯỜNG BAO TTGH CHO BÀI TỐN KHƠNG GIAN 97 3.6.1 Móng chịu tải trọng đứng 97 3.6.2 Móng chịu tải trọng đứng ngang 99 3.6.3 Móng chịu tải trọng đứng mơ men 100 3.6.4 Móng chịu tải trọng đứng, ngang mơ men 102 3.7 KẾT LUẬN CHƯƠNG 106 CHƯƠNG ỨNG DỤNG KẾT QUẢ NGHIÊN CỨU VÀO TÍNH TỐN, KIỂM TRA CHO CƠNG TRÌNH THỰC TẾ 108 4.1 CÔNG THỨC KIỂM TRA ỔN ĐỊNH ĐXL THEO ĐƯỜNG BAO TTGH 108 4.2 XÂY DỰNG BIỂU ĐỒ XÁC ĐỊNH SƠ BỘ KÍCH THƯỚC ĐXL 109 4.2.1 Mục đích phương pháp xây dựng 109 4.2.2 Sơ đồ tải trọng tác dụng 110 4.2.3 Điều kiện ổn định thấm 112 4.2.4 Tổng hợp tải trọng tác dụng 113 4.2.5 Xây dựng biểu đồ 116 4.3 KẾT LUẬN CHƯƠNG 123 KẾT LUẬN VÀ KIẾN NGHỊ 124 KẾT LUẬN 124 HƯỚNG NGHIÊN CỨU 125 KIẾN NGHỊ 126 DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC ĐÃ CƠNG BỐ CỦA TÁC GIẢ CĨ LIÊN QUAN ĐẾN LUẬN ÁN 127 DANH MỤC TÀI LIỆU THAM KHẢO 128 PHẦN PHỤ LỤC 134 PHỤ LỤC 1: TỔNG HỢP MỘT SỐ CƠNG TRÌNH ĐẬP XÀ LAN ĐÃ XÂY DỰNG 134 PHỤ LỤC 2: TỔNG HỢP PHÂN TÍCH THIẾT KẾ SƠ BỘ ĐXL 136 PHỤ LỤC 3: HÌNH ẢNH THÍ NGHIỆM MƠ HÌNH VÀ HIỆN TRƯỜNG 152 PHỤ LỤC 4: CODE CHƯƠNG TRÌNH FAILURE ENVELOPE FOR DAM 159 - iv - MỤC LỤC HÌNH VẼ Hình 1.1 - Bố trí kết cấu ĐXLLH Hình 1.2 - Bố trí kết cấu ĐXL tháo lắp hàng năm Hình 1.3 - Mơ hình ĐXL hộp Hình 1.4 - ĐXL hộp cơng trình cống Phước Long .9 Hình 1.5 - Mơ hình ĐXL dầm .10 Hình 1.6 - Cơng trình ĐXL dầm thực tế .10 Hình 1.7 - Cắt ngang cống LiDo, Malamocco, Chioggia Italia .10 Hình 1.8 - Xử lý cơng trình Vinece .10 Hình 1.9 - Phương án xử lý đập Brad dock 11 Hình 1.10 : Sơ đồ phá hoại cắt (trượt) tổng thể [34, 56] 14 Hình 1.11 : Sơ đồ Phá hoại cắt (trượt) cục [34, 56] 14 Hình 1.12 : Sơ đồ phá hoại cắt (trượt) kiểu xuyên [34, 56] 14 Hình 1.13 : Mơ hình tốn móng chịu đồng thời V:H;M 15 Hình 1.14 - Sơ đồ tổ hợp tải trọng tác dụng lên ĐXL 15 Hình 1.15 - Ký hiệu kích thước ĐXL 16 Hình 1.16 : Quy ước chiều tải trọng 16 Hình 1.17 - Quy đổi tải trọng xiên thành tải theo phương 17 Hình 1.18 - Sơ đồ tính trượt hỗn hợp 19 Hình 1.19 - Đồ thị quan hệ t gh ~ pgh 19 Hình 1.20 : Hình thức móng nơng .20 Hình 1.21 : Sơ đồ ổn định ĐXL chịu trải trọng phức tạp 21 Hình 1.22 : Đường bao TTGH ( V V0 , H V0 ) móng băng M=0 24 Hình 1.23 - Đường cong quan hệ V/Vo M/BVo trạng thái (H = 0) .25 Hình 1.24 : Chuyển đổi tải trọng tương đương 26 Hình 1.25 : Diện tích móng hiệu Meyerhof [49] 26 Hình 1.26 Móng tròn chân giàn khoan dầu 29 Hình 1.27 Đường bao phá hoại theo Buterfield and Ticof, 1979 29 Hình 1.28 : Đường bao phá hoại Martin, 1994 30 Hình 1.29 : Lưới PTHH, (a) móng vng L=B, (b) móng chữ nhật L=5B 31 Hình 1.30 Hình dạng biểu đồ bao TTGH [52] 32 Hình 1.31 : Biểu đồ đường bao TTGH V/Vo 0,5, Ngo Tran [50] 33 Hình 1.32 : Biểu đồ đường bao TTGH V/Vo 0,5, Ngo Tran [50] 33 Hình 1.33 : Biểu đồ đẳng M/BVo, (M>0), Ngo Tran [50] 34 Hình 2.1 - Sơ đồ phần tử tiếp xúc Goodman (14 nút) 37 -v- Hình 2.2 - Quan hệ ứng suất pháp tiếp với biến dạng pháp tuyến (a) biến dạng trượt (b) .38 Hình 2.3 - Mơ hình tử tiếp xúc độ dày không phần tử tiếp xúc liên tục 39 Hình 2.4 - Vùng trượt với giới hạn ứng suất cắt cực hạn .39 Hình 2.5 - Phương trình mặt tiếp xúc theo Ngo Tran (1996) 40 Hình 2.6 - Mơ hình toán phẳng .41 Hình 2.7 - Chia lưới tốn phẳng 41 Hình 2.8 – Quan hệ tải trọng chuyển vị với bốn loại đất .42 Hình 2.9 – Quan hệ w/B ~ Nc với góc MSTX 15 .43 Hình 2.10 – Quan hệ w/B ~ Nc với góc MSTX 20 .43 Hình 2.11 – Quan hệ w/B ~ Nc với góc MSTX 25 .44 Hình 2.12 – Quan hệ w/B ~ Nc với góc MSTX 30 .44 Hình 2.13 – Quan hệ góc MSTX hệ số Nc 45 Hình 2.14 – Quan hệ V/V0 H/V0 với w/u=0,4 46 Hình 2.15 – Quan hệ V/Vo H/Vo với w/u=1,0 46 Hình 2.16 – Quan hệ V/Vo M/BVo với w/B = 0,1 .47 Hình 2.17 – Quan hệ V/Vo M/BVo với w/B=0,33 .47 Hình 2.18 – Quan hệ V/Vo M/BVo với w/B=1,0 47 Hình 2.19 – Quan hệ V/Vo M/BVo với w/B= 3,0 48 Hình 2.20 : Bố trí máng thí nghiệm .49 Hình 2.21 Tấm nén bê tơng thí nghiệm 0,2m 0,3m 50 Hình 2.22 Tấm nén bê tơng thí nghiệm 0,4m .51 Hình 2.23 Tấm thép dùng để gia tải đứng 51 Hình 2.24 Bể nước dùng để gia tải ngang 52 Hình 2.25 Đồng hồ đo chuyển vị 52 Hình 2.26 Bố trí đồng hồ đo chuyển vị đứng ngang .53 Hình 2.27 - Chụp ảnh chuyển vị bên máng 53 Hình 2.28 - Sơ đồ thí nghiệm tải trọng đứng, ngang 54 Hình 2.29 - Tiến hành gia tải đứng nén thép .58 Hình 2.30 - Tiến hành gia tải ngang kéo móng đến trượt 59 Hình 2.31 – Tấm nén tách bị trượt 59 Hình 2.32 - Quan hệ H/Vo - Chuyển vị ngang u(mm) với B=0,2m .60 Hình 2.33 - Quan hệ H/Vo - Chuyển vị ngang u(mm) với B=0,3m .60 Hình 2.34 - Quan hệ H/Vo - Chuyển vị ngang u(mm) với B=0,4m .61 Hình 2.35 - Quan hệ V / V0 ~ H / V0 ứng với trường hợp thí nghiệm 62 Hình 2.36 - Sơ đồ thí nghiệm tải trọng V, H 63 - vi - Hình 2.37 - Bố trí tổ chức thí nghiệm trường 63 Hình 2.38 - Quan hệ tải trọng ngang - chuyển vị ngang với B=0,7m 65 Hình 2.39 - Quan hệ tải trọng ngang - chuyển vị ngang với B=1,0m 66 Hình 3.1 - Mơ hình tốn khơng gian ba chiều .69 Hình 3.2 - Mặt chảy mặt phẳng kinh tuyến (a) mặt phẳng vng góc trục thủy tĩnh (b) 69 Hình 3.3 - Phần tử phẳng Abaqus (a) Phần tử phẳng nút (b) phần tử phẳng nút (c) phần tử phẳng nút 70 (a) Phần tử khối nút (b) phần tử khối 20 nút (c) phần tử chóp 10 nút .70 Hình 3.4 - Phần tử khối Abaqus (a) Phần tử khối nút (b) phần tử khối 20 nút (c) phần tử chóp 10 nút (d) ký hiệu quy ước 71 Hình 3.5 - Sơ đồ điểm đặt tải tính tốn 71 Hình 3.6 - Tập hợp quan hệ a) (V,M) a) (V/ H) thử nghiệm .72 Hình 3.7 - Phân tích theo tỷ lệ chuyển vị .73 Hình 3.8 - Phân tích theo tải trọng bao .74 Hình 3.9 - Trình tự gia tải xác định đường bao V-H V-M [37] 75 Hình 3.10 - Chuyển vị tổng hợp mặt H - V .75 Hình 3.11 - Xác định quỹ đạo điểm TTGH V - H 76 Hình 3.12 - Chuyển vị ngang chuyển vị xoay với cấp tải trọng đứng .77 Hình 3.13 - Trình tự thí nghiệm xây dựng biểu đồ bao V-H, V-M [37] 77 Hình 3.14 - Lưu đồ phân tích .78 Hình 3.15 - Lưu đồ xây dựng đường bao TTGH 79 Hình 3.16 - Giao diện phần mềm 80 Hình 3.17 - Tổng hợp kết từ số liệu xuất Abaqus 81 Hình 3.18 - Thiết lập thông số biểu đồ cần vẽ .81 Hình 3.19 - Trình tự gia tải đứng (w) ngang (u) 82 Hình 3.20 - Đường bao tải trọng V-H với =300 83 Hình 3.21 - Trình tự gia tải đứng (w) xoay (B) 83 Hình 3.22 - Đường bao tải trọng V-M với =300 84 Hình 3.23 - So sánh đường bao tải trọng V-M với lời giải Ngo Tran 84 Hình 3.24 - Trình tự gia tải theo phương pháp tỷ lệ chuyển vị 85 Hình 3.25 - Phương pháp phân tích tải trọng bao ứng với u- B theo cấp wi(Vi) 85 Hình 3.26 - Biểu đồ bao TTGH với V/Vo=0.35, =300 .86 Hình 3.27 - Biểu đồ bao TTGH với V/Vo=0.45, =300 .87 Hình 3.28 - Đường bao TTGH với V/Vo=0,05-0,5 với =300 87 - vii - Hình 3.29 - So sánh đường bao TTGH với V/Vo=0,3 so với kết Ngo Tran 88 Hình 3.30 - So sánh đường bao TTGH với kết Ngo Tran [50] .89 Hình 3.31 - Mơ hình tính tốn .90 Hình 3.32 - Chia lưới mơ hình tính tốn .90 Hình 3.33 - Chuyển vị tổng sau gia tải đứng với móng B=1,0m 91 Hình 3.34 - Chuyển vị tổng ứng với bước gia tải ngang với móng B=1,0m .91 Hình 3.35 - Ứng suất Von-mises đất phá hoại với móng B=1,0m 92 Hình 3.36 - Mặt trượt đáy móng khơng gian ba chiều 92 Hình 3.37 - Mặt trượt đáy móng nhìn từ mặt bên với móng B=1,0m 92 Hình 3.38 - Kiểm định mơ hình tốn với B= 1,0m, cấp V1 94 Hình 3.39 - So sánh thí nghiệm mơ hình với B= 1,0m, cấp V2 .94 Hình 3.40 - So sánh thí nghiệm mơ hình với B= 1,0m, cấp V3 94 Hình 3.41 - So sánh thí nghiệm mơ hình với B= 0,7m, cấp V1 .95 Hình 3.42 - So sánh thí nghiệm mơ hình với B= 0,7m, cấp V2 .96 Hình 3.43 – Quan hệ tỷ lệ B/L hệ số Nc 98 Hình 3.44 - Biểu đồ bao TTGH V V0  H V0  với =300 99 Hình 3.45 - Biểu đồ bao TTGH V V0  H V0  với =24,30 100 Hình 3.46 - So sánh đường TTGH V V0  H V0  với =300 24,30 100 Hình 3.47 - Trình tự gia tải đứng (w) xoay (B) 101 Hình 3.48 - Biểu đồ bao TTGH V V0  M BV0  với =300 101 Hình 3.49 - Biểu đồ bao TTGH V V0  M BV0  với =24,30 102 Hình 3.50 - So sánh đường bao TTGH V V0  M BV0  102 Hình 3.51 - Biểu đồ bao TTGH với V V0 =0.3,   300 103 Hình 3.52 - Biểu đồ bao TTGH với V/Vo=0.45, =300 104 Hình 3.53 - Đường bao TTGH V V0 , H V0 , M BV0  với góc =300 104 Hình 3.54 - Đường bao TTGH V V0 , H V0 , M BV0  với góc =300 105 Hình 3.55 - Đường bao TTGH V V0 , H V0 , M BV0  với góc =24,30 105 Hình 3.56 - Biểu đồ bao TTGH V V0 , H V0 , M BV0  với góc =24,30 106 Hình 4.1 - Chính diện ĐXL dầm 110 Hình 4.2 - Cắt ngang ĐXL dầm 110 Hình 4.3 - Chính diện ĐXL phao hộp 110 Hình 4.4 - Cắt ngang ĐXL phao hộp 10m 111 Hình 4.5 - Tải trọng tác dụng lên ĐXL dầm theo phương dòng chảy 111 - viii - Hình 4.6 - Tải trọng tác dụng lên ĐXL theo phương vng góc dòng chảy 111 Hình 4.7 - Tải trọng tác dụng lên ĐXL phao hộp theo phương dòng chảy 112 Hình 4.8 – Biểu đồ quan hệ B/L - H (m) với ĐXL có Lt=5,0 (m) 117 Hình 4.9 – Biểu đồ quan hệ B/L - H (m) với ĐXL có Lt=6,0 (m) 117 Hình 4.10 – Biểu đồ quan hệ B/L - H (m) với ĐXL có Lt=7,0 (m) 118 Hình 4.11 – Biểu đồ quan hệ B/L - H (m) với ĐXL có Lt=8,0 (m) 118 Hình 4.12 – Biểu đồ quan hệ B/Ld - H (m) với ĐXL có Lt=9,0 (m) 118 Hình 4.13 – Biểu đồ quan hệ B/Ld - H (m) với ĐXL có Lt=10,0 (m) 118 Hình 4.14 – Tổng hợp quan hệ B/L - H (m) với ĐXL có Lt=5-:-10 (m) 119 Hình 4.15 – Biểu đồ quan hệ V/V0 - H (m) với ĐXL có Lt=5,0 (m) 120 Hình 4.16 – Biểu đồ quan hệ V/V0 -H (m) với ĐXL có Lt=6,0 (m) 120 Hình 4.17 – Biểu đồ quan hệ V/V0 - H (m) với ĐXL có Lt= 7,0 (m) 121 Hình 4.18 – Biểu đồ quan hệ V/V0 - H (m) với ĐXL có Lt=8,0 (m) 121 Hình 4.19 – Biểu đồ quan hệ V/V0 - H (m) với ĐXL có Lt=9,0 (m) 122 Hình 4.20 – Biểu đồ quan hệ V/V0 - H (m) với ĐXL có Lt=10,0 (m) 122 Hình 4.21 - Biểu đồ quan hệ V/V0 - H ứng với ĐXL có Lt=5,0-:-10 (m) 122 - 179 - sketchUpEdge=mdb.models['FootingModel'].parts['soil3'].edges[20], sketchOrientation=BOTTOM, origin=(4.0, -1.25, 1.25))) mdb.models['FootingModel'].parts['soil3'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' profile ']) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-0.25, 0.25), point2=(-1.25, 0.25)) mdb.models['FootingModel'].sketches[' profile '].HorizontalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[6]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[8], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[2]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-1.25, 0.25), point2=(-1.25, -1.25)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[7]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[6], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[7]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-1.25, -1.25), point2=(1.25, -1.25)) mdb.models['FootingModel'].sketches[' profile '].HorizontalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[7], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(1.25, -1.25), point2=(-0.25, 0.25)) mdb.models['FootingModel'].parts['soil3'].CutExtrude(flipExtrudeDirection=OFF, sketch=mdb.models['FootingModel'].sketches[' profile '], sketchOrientation=BOTTOM, sketchPlane= mdb.models['FootingModel'].parts['soil3'].faces[6], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil3'].edges[20]) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].ConstrainedSketch(gridSpacing=0.43, name= ' profile ', sheetSize=17.49, transform= mdb.models['FootingModel'].parts['soil3'].MakeSketchTransform( sketchPlane=mdb.models['FootingModel'].parts['soil3'].faces[8], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil3'].edges[16], sketchOrientation=BOTTOM, origin=(0.0, 0.0, 1.117647))) mdb.models['FootingModel'].parts['soil3'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' profile ']) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-4.0, 1.117647) , point2=(-1.5, -0.382353)) - 180 - mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-1.5, -0.382353), point2=(-1.5, -1.382353)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[11]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[11], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[2]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-1.5, -1.382353), point2=(-4.0, -1.382353)) mdb.models['FootingModel'].sketches[' profile '].HorizontalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[12]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[11], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[12]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-4.0, -1.382353), point2=(-4.0, 1.117647)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[13]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[12], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[13]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(1.5, -0.382353) , point2=(4.0, 1.117647)) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[13], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[3]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(4.0, 1.117647), point2=(4.0, -1.382353)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[15]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(4.0, -1.382353) , point2=(1.5, -1.382353)) mdb.models['FootingModel'].sketches[' profile '].HorizontalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[16]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[15], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[16]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(1.5, -1.382353) , point2=(1.5, -0.382353)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( - 181 - addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[17]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[16], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[17]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[14], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[3]) mdb.models['FootingModel'].parts['soil3'].CutExtrude(flipExtrudeDirection=OFF, sketch=mdb.models['FootingModel'].sketches[' profile '], sketchOrientation=BOTTOM, sketchPlane= mdb.models['FootingModel'].parts['soil3'].faces[8], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil3'].edges[16]) del mdb.models['FootingModel'].sketches[' profile '] # Save mdb.models['FootingModel'].rootAssembly.DatumCsysByDefault(CARTESIAN) mdb.models['FootingModel'].rootAssembly.Instance(dependent=ON, name='soil1-1', part=mdb.models['FootingModel'].parts['soil1']) mdb.models['FootingModel'].rootAssembly.Instance(dependent=ON, name='soil2-1', part=mdb.models['FootingModel'].parts['soil2']) mdb.models['FootingModel'].rootAssembly.Instance(dependent=ON, name='soil3-1', part=mdb.models['FootingModel'].parts['soil3']) mdb.models['FootingModel'].rootAssembly.Instance(dependent=ON, name='soil4-1', part=mdb.models['FootingModel'].parts['soil4']) mdb.models['FootingModel'].rootAssembly.translate(instanceList=('soil1-1', ), vector=(0.0, 0.0, 1.5)) mdb.models['FootingModel'].ConstrainedSketch(name=' profile ', sheetSize= 25.0) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].ConstrainedSketch(name=' profile ', sheetSize= 10.0) mdb.models['FootingModel'].sketches[' profile '].rectangle(point1=(-0.5, 0.0) , point2=(0.5, 0.1)) mdb.models['FootingModel'].Part(dimensionality=THREE_D, name='footing', type= DISCRETE_RIGID_SURFACE) mdb.models['FootingModel'].parts['footing'].BaseSolidExtrude(depth=0.5, sketch= mdb.models['FootingModel'].sketches[' profile ']) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].parts['footing'].ReferencePoint(point= mdb.models['FootingModel'].parts['footing'].InterestingPoint( mdb.models['FootingModel'].parts['footing'].edges[10], MIDDLE)) mdb.models['FootingModel'].parts['footing'].RemoveCells(cellList= mdb.models['FootingModel'].parts['footing'].cells.getSequenceFromMask( mask=('[#1 ]', ), )) mdb.models['FootingModel'].parts['footing'].Surface(name='master', side1Faces= mdb.models['FootingModel'].parts['footing'].faces.getSequenceFromMask(( '[#8 ]', ), )) mdb.models['FootingModel'].parts['footing'].setElementType(elemTypes=(ElemType( - 182 - elemCode=R3D4, elemLibrary=STANDARD), ElemType(elemCode=R3D3, elemLibrary=STANDARD)), regions=( mdb.models['FootingModel'].parts['footing'].faces.getSequenceFromMask(( '[#1a ]', ), ), )) mdb.models['FootingModel'].parts['footing'].seedEdgeByNumber(constraint=FINER, edges= mdb.models['FootingModel'].parts['footing'].edges.getSequenceFromMask(( '[#c4e ]', ), ), number=10) mdb.models['FootingModel'].parts['footing'].generateMesh() mdb.models['FootingModel'].parts['footing'].deleteMesh(regions= mdb.models['FootingModel'].parts['footing'].faces.getSequenceFromMask(( '[#35 ]', ), )) mdb.models['FootingModel'].parts['footing'].seedEdgeByNumber(constraint=FINER, edges= mdb.models['FootingModel'].parts['footing'].edges.getSequenceFromMask(( '[#285 ]', ), ), number=1) mdb.models['FootingModel'].parts['footing'].generateMesh() mdb.models['FootingModel'].parts['footing'].deleteMesh(regions= mdb.models['FootingModel'].parts['footing'].faces.getSequenceFromMask(( '[#3a ]', ), )) mdb.models['FootingModel'].parts['footing'].seedEdgeByNumber(constraint=FINER, edges= mdb.models['FootingModel'].parts['footing'].edges.getSequenceFromMask(( '[#c50 ]', ), ), number=10) mdb.models['FootingModel'].parts['footing'].deleteMesh(regions= mdb.models['FootingModel'].parts['footing'].faces.getSequenceFromMask(( '[#5 ]', ), )) mdb.models['FootingModel'].parts['footing'].seedEdgeByNumber(constraint=FINER, edges= mdb.models['FootingModel'].parts['footing'].edges.getSequenceFromMask(( '[#12a ]', ), ), number=5) mdb.models['FootingModel'].parts['footing'].generateMesh() mdb.models['FootingModel'].ConstrainedSketch(name=' edit ', objectToCopy= mdb.models['FootingModel'].parts['soil1'].features['Solid extrude-1'].sketch) mdb.models['FootingModel'].parts['soil1'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' edit '], upToFeature= mdb.models['FootingModel'].parts['soil1'].features['Solid extrude-1']) del mdb.models['FootingModel'].sketches[' edit '] mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(-1.5, 0.0, 2.5)) mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(-1.5, 0.0, 0.0)) mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(-1.5, 0.0, 1.0)) mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(-0.5, 0.0, 1.0)) mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(1.5, 0.0, 1.0)) mdb.models['FootingModel'].parts['soil1'].DatumPointByCoordinate(coords=(0.5, - 183 - 0.0, 1.0)) mdb.models['FootingModel'].ConstrainedSketch(gridSpacing=0.16, name= ' profile ', sheetSize=6.63, transform= mdb.models['FootingModel'].parts['soil1'].MakeSketchTransform( sketchPlane=mdb.models['FootingModel'].parts['soil1'].faces[4], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil1'].edges[10], sketchOrientation=BOTTOM, origin=(0.0, -0.5, 1.0))) mdb.models['FootingModel'].parts['soil1'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' profile ']) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-0.5, 0.5), point2=(-0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[6]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[11], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[5]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(0.5, 0.5), point2=(0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[7]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[13], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[5]) mdb.models['FootingModel'].parts['soil1'].PartitionFaceBySketch(faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#10 ]', ), ), sketch=mdb.models['FootingModel'].sketches[' profile '], sketchOrientation=BOTTOM, sketchUpEdge= mdb.models['FootingModel'].parts['soil1'].edges[10]) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].ConstrainedSketch(gridSpacing=0.16, name= ' profile ', sheetSize=6.63, transform= mdb.models['FootingModel'].parts['soil1'].MakeSketchTransform( sketchPlane=mdb.models['FootingModel'].parts['soil1'].faces[3], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil1'].edges[17], sketchOrientation=BOTTOM, origin=(0.0, 0.0, 0.5))) mdb.models['FootingModel'].parts['soil1'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' profile ']) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-0.5, 0.5), point2=(-0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= - 184 - mdb.models['FootingModel'].sketches[' profile '].geometry[3], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[12], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[3]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[13], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[7]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(0.5, 0.5), point2=(0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[9]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[2], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[9]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[14], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[2]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[15], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[7]) mdb.models['FootingModel'].parts['soil1'].PartitionFaceBySketch(faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#8 ]', ), ), sketch=mdb.models['FootingModel'].sketches[' profile '], sketchOrientation=BOTTOM, sketchUpEdge= mdb.models['FootingModel'].parts['soil1'].edges[17]) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].ConstrainedSketch(gridSpacing=0.16, name= ' profile ', sheetSize=6.63, transform= mdb.models['FootingModel'].parts['soil1'].MakeSketchTransform( sketchPlane=mdb.models['FootingModel'].parts['soil1'].faces[9], sketchPlaneSide=SIDE1, sketchUpEdge=mdb.models['FootingModel'].parts['soil1'].edges[21], sketchOrientation=BOTTOM, origin=(0.0, -0.5, 0.0))) mdb.models['FootingModel'].parts['soil1'].projectReferencesOntoSketch(filter= COPLANAR_EDGES, sketch=mdb.models['FootingModel'].sketches[' profile ']) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(-0.5, 0.5), point2=(-0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[5], entity2= - 185 - mdb.models['FootingModel'].sketches[' profile '].geometry[8]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[12], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[5]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[13], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[2]) mdb.models['FootingModel'].sketches[' profile '].Line(point1=(0.5, 0.5), point2=(0.5, -0.5)) mdb.models['FootingModel'].sketches[' profile '].VerticalConstraint( addUndoState=False, entity= mdb.models['FootingModel'].sketches[' profile '].geometry[9]) mdb.models['FootingModel'].sketches[' profile '].PerpendicularConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].geometry[4], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[9]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[14], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[4]) mdb.models['FootingModel'].sketches[' profile '].CoincidentConstraint( addUndoState=False, entity1= mdb.models['FootingModel'].sketches[' profile '].vertices[15], entity2= mdb.models['FootingModel'].sketches[' profile '].geometry[2]) mdb.models['FootingModel'].parts['soil1'].PartitionFaceBySketch(faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#200 ]', ), ), sketch=mdb.models['FootingModel'].sketches[' profile '], sketchOrientation=BOTTOM, sketchUpEdge= mdb.models['FootingModel'].parts['soil1'].edges[21]) del mdb.models['FootingModel'].sketches[' profile '] mdb.models['FootingModel'].parts['soil1'].Surface(name='slave', side1Faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#80 ]', ), )) mdb.models['FootingModel'].parts['soil1'].setElementType(elemTypes=(ElemType( elemCode=C3D8H, elemLibrary=STANDARD), ElemType(elemCode=C3D6, elemLibrary=STANDARD), ElemType(elemCode=C3D4, elemLibrary=STANDARD)), regions=( mdb.models['FootingModel'].parts['soil1'].cells.getSequenceFromMask(( '[#1 ]', ), ), )) mdb.models['FootingModel'].parts['soil1'].setElementType(elemTypes=(ElemType( elemCode=C3D8H, elemLibrary=STANDARD), ElemType(elemCode=C3D6, elemLibrary=STANDARD), ElemType(elemCode=C3D4, elemLibrary=STANDARD)), regions=( mdb.models['FootingModel'].parts['soil1'].cells.getSequenceFromMask(( '[#1 ]', ), ), )) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=DOUBLE, - 186 - constraint=FINER, endEdges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#3600000 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=DOUBLE, constraint=FINER, endEdges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#3600000 ]', ), ), number=20, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#80002 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#408 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#1020 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#8080 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#900 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#902200 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#34051 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil1'].edges.getSequenceFromMask(( '[#40004 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil1'].generateMesh() mdb.models['FootingModel'].parts['soil2'].setElementType(elemTypes=(ElemType( elemCode=C3D8H, elemLibrary=STANDARD), ElemType(elemCode=C3D6, elemLibrary=STANDARD), ElemType(elemCode=C3D4, elemLibrary=STANDARD)), regions=(mdb.models['FootingModel'].parts['soil2'].cells.getSequenceFromMask(( '[#3 ]', ), ), )) mdb.models['FootingModel'].parts['soil2'].seedEdgeByNumber(constraint=FINER, edges=mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#ffffff ]', ), ), number=10) mdb.models['FootingModel'].parts['soil2'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#80040 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#2a290 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil2'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( - 187 - '[#c40004 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#10121 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil2'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#305008 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil2'].edges.getSequenceFromMask(( '[#c02 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil2'].generateMesh() mdb.models['FootingModel'].parts['soil3'].setElementType(elemTypes=(ElemType( elemCode=C3D8H, elemLibrary=STANDARD), ElemType(elemCode=C3D6, elemLibrary=STANDARD), ElemType(elemCode=C3D4, elemLibrary=STANDARD)), regions=(mdb.models['FootingModel'].parts['soil3'].cells.getSequenceFromMask(( '[#1 ]', ), ), )) mdb.models['FootingModel'].parts['soil3'].seedEdgeByNumber(constraint=FINER, edges=mdb.models['FootingModel'].parts['soil3'].edges.getSequenceFromMask(( '[#f00 ]', ), ), number=20) mdb.models['FootingModel'].parts['soil3'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil3'].edges.getSequenceFromMask(( '[#2a ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil3'].edges.getSequenceFromMask(( '[#80 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil3'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil3'].edges.getSequenceFromMask(( '[#14 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil3'].edges.getSequenceFromMask(( '[#41 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil3'].generateMesh() mdb.models['FootingModel'].parts['soil4'].setElementType(elemTypes=(ElemType( elemCode=C3D8H, elemLibrary=STANDARD), ElemType(elemCode=C3D6, elemLibrary=STANDARD), ElemType(elemCode=C3D4, elemLibrary=STANDARD)), regions=(mdb.models['FootingModel'].parts['soil4'].cells.getSequenceFromMask(( '[#1 ]', ), ), )) mdb.models['FootingModel'].parts['soil4'].seedEdgeByNumber(constraint=FINER, edges=mdb.models['FootingModel'].parts['soil4'].edges.getSequenceFromMask(( '[#f00 ]', ), ), number=20) mdb.models['FootingModel'].parts['soil4'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil4'].edges.getSequenceFromMask(( '[#41 ]', ), ), end2Edges= mdb.models['FootingModel'].parts['soil4'].edges.getSequenceFromMask(( '[#14 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil4'].seedEdgeByBias(biasMethod=SINGLE, constraint=FINER, end1Edges= mdb.models['FootingModel'].parts['soil4'].edges.getSequenceFromMask(( - 188 - '[#2]',),),end2Edges= mdb.models['FootingModel'].parts['soil4'].edges.getSequenceFromMask(( '[#a8 ]', ), ), number=10, ratio=5.0) mdb.models['FootingModel'].parts['soil4'].generateMesh() mdb.models['FootingModel'].rootAssembly.regenerate() mdb.models['FootingModel'].rootAssembly.Instance(dependent=ON, name='footing-1' , part=mdb.models['FootingModel'].parts['footing']) mdb.models['FootingModel'].rootAssembly.translate(instanceList=('footing-1', ), vector=(0.0, 0.0, 2.0)) # Save mdb.models['FootingModel'].StaticStep(initialInc=0.1, maxInc=0.1, maxNumInc= 1000, name='Step-1', nlgeom=ON, previous='Initial') mdb.models['FootingModel'].StaticStep(initialInc=0.1, maxInc=0.1, maxNumInc= 1000, name='Step-2', previous='Step-1') mdb.models['FootingModel'].parts['soil1'].Surface(name='X', side1Faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#140 ]', ), )) mdb.models['FootingModel'].parts['soil1'].Surface(name='Y', side1Faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#200 ]', ), )) mdb.models['FootingModel'].parts['soil1'].Surface(name='Z', side1Faces= mdb.models['FootingModel'].parts['soil1'].faces.getSequenceFromMask(( '[#803 ]', ), )) mdb.models['FootingModel'].parts['soil2'].Surface(name='X', side1Faces= mdb.models['FootingModel'].parts['soil2'].faces.getSequenceFromMask(( '[#110 ]', ), )) mdb.models['FootingModel'].parts['soil2'].Surface(name='Y', side1Faces= mdb.models['FootingModel'].parts['soil2'].faces.getSequenceFromMask(( '[#404 ]', ), )) mdb.models['FootingModel'].parts['soil2'].Surface(name='Z', side1Faces= mdb.models['FootingModel'].parts['soil2'].faces.getSequenceFromMask(( '[#801 ]', ), )) mdb.models['FootingModel'].parts['soil3'].Surface(name='Z', side1Faces= mdb.models['FootingModel'].parts['soil3'].faces.getSequenceFromMask(( '[#8 ]', ), )) mdb.models['FootingModel'].parts['soil3'].Surface(name='X', side1Faces= mdb.models['FootingModel'].parts['soil3'].faces.getSequenceFromMask(( '[#3 ]', ), )) mdb.models['FootingModel'].parts['soil3'].Surface(name='Y', side1Faces= mdb.models['FootingModel'].parts['soil3'].faces.getSequenceFromMask(( '[#4 ]', ), )) mdb.models['FootingModel'].parts['soil4'].Surface(name='Y', side1Faces= mdb.models['FootingModel'].parts['soil4'].faces.getSequenceFromMask(( '[#10 ]', ), )) mdb.models['FootingModel'].parts['soil4'].Surface(name='X', side1Faces= mdb.models['FootingModel'].parts['soil4'].faces.getSequenceFromMask(( '[#3 ]', ), )) mdb.models['FootingModel'].parts['soil4'].Surface(name='Z', side1Faces= mdb.models['FootingModel'].parts['soil4'].faces.getSequenceFromMask(( '[#8 ]', ), )) - 189 - mdb.models['FootingModel'].rootAssembly.regenerate() mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil1-1'].surfaces['X'], name='X1', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil2-1'].surfaces['X'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil1-1'].surfaces['Y'], name='Y1', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil4-1'].surfaces['Y'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil1-1'].surfaces['Z'], name='Z1', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil3-1'].surfaces['Z'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil2-1'].surfaces['Y'], name='Y2', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil4-1'].surfaces['X'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil2-1'].surfaces['Z'], name='Z2', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil3-1'].surfaces['X'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].Tie(adjust=ON, constraintEnforcement= SURFACE_TO_SURFACE, master= mdb.models['FootingModel'].rootAssembly.instances['soil3-1'].surfaces['Y'], name='Z3', positionTolerance=0.0, positionToleranceMethod=SPECIFIED, slave= mdb.models['FootingModel'].rootAssembly.instances['soil4-1'].surfaces['Z'], thickness=ON, tieRotations=ON) mdb.models['FootingModel'].ContactProperty('IntProp-1') mdb.models['FootingModel'].interactionProperties['IntProp-1'].TangentialBehavior( dependencies=0, directionality=ISOTROPIC, elasticSlipStiffness=None, formulation=PENALTY, fraction=0.005, maximumElasticSlip=FRACTION, pressureDependency=OFF, shearStressLimit=1.0, slipRateDependency=OFF, table=((0.57735, ), ), temperatureDependency=OFF) mdb.models['FootingModel'].interactionProperties['IntProp1'].tangentialBehavior.setValues( dependencies=0, directionality=ISOTROPIC, elasticSlipStiffness=None, formulation=PENALTY, fraction=0.005, maximumElasticSlip=FRACTION, pressureDependency=OFF, shearStressLimit=1.0, slipRateDependency=OFF, table=((0.57735, ), ), temperatureDependency=OFF) mdb.models['FootingModel'].interactionProperties['IntProp-1'].NormalBehavior( - 190 - allowSeparation=ON, constraintEnforcementMethod=DEFAULT, pressureOverclosure=HARD) mdb.models['FootingModel'].SurfaceToSurfaceContactStd(adjustMethod=NONE, clearanceRegion=None, createStepName='Step-1', datumAxis=None, initialClearance=OMIT, interactionProperty='IntProp-1', master= mdb.models['FootingModel'].rootAssembly.instances['footing-1'].surfaces['master'] , name='Int-1', slave= mdb.models['FootingModel'].rootAssembly.instances['soil1-1'].surfaces['slave'] , sliding=FINITE, thickness=ON) mdb.models['FootingModel'].rootAssembly.Set(faces= mdb.models['FootingModel'].rootAssembly.instances['soil21'].faces.getSequenceFromMask(('[#60 ]', ), ), name='xbound') mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Initial', distributionType=UNIFORM, fieldName='', localCsys=None, name= 'xb', region=mdb.models['FootingModel'].rootAssembly.sets['xbound'], u1=SET , u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET) mdb.models['FootingModel'].rootAssembly.Set(faces= mdb.models['FootingModel'].rootAssembly.instances['soil41'].faces.getSequenceFromMask(('[#20 ]', ), ), name='ybound') mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Initial', distributionType=UNIFORM, fieldName='', localCsys=None, name= 'yb', region=mdb.models['FootingModel'].rootAssembly.sets['ybound'], u1= UNSET, u2=SET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET) mdb.models['FootingModel'].rootAssembly.Set(faces= mdb.models['FootingModel'].rootAssembly.instances['soil31'].faces.getSequenceFromMask(('[#20 ]', ), ), name='zbound') mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Initial', distributionType=UNIFORM, fieldName='', localCsys=None, name= 'zb', region=mdb.models['FootingModel'].rootAssembly.sets['zbound'], u1= UNSET, u2=UNSET, u3=SET, ur1=UNSET, ur2=UNSET, ur3=UNSET) mdb.models['FootingModel'].rootAssembly.Set(faces= mdb.models['FootingModel'].rootAssembly.instances['soil21'].faces.getSequenceFromMask(mask=('[#208 ]', ), )+\ mdb.models['FootingModel'].rootAssembly.instances['soil41'].faces.getSequenceFromMask(mask=('[#4 ]', ), )+\ mdb.models['FootingModel'].rootAssembly.instances['soil11'].faces.getSequenceFromMask(mask=('[#430 ]', ), )+\ mdb.models['FootingModel'].rootAssembly.instances['footing1'].faces.getSequenceFromMask( mask=('[#10 ]', ), ), name='Zsb') mdb.models['FootingModel'].ZsymmBC(createStepName='Initial', localCsys=None, name='Zsym', region=mdb.models['FootingModel'].rootAssembly.sets['Zsb']) mdb.models['FootingModel'].rootAssembly.Set(name='RP1', referencePoints=( mdb.models['FootingModel'].rootAssembly.instances['footing-1'].referencePoints[2], )) mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Initial', distributionType=UNIFORM, fieldName='', localCsys=None, name= 'RP_1', region=mdb.models['FootingModel'].rootAssembly.sets['RP1'], u1=SET, u2=UNSET, u3=SET, ur1=SET, ur2=SET, ur3=SET) - 191 - Phần tính tốn xử lý số liệu from abaqus import * from abaqusConstants import * from caeModules import * from odbAccess import * import sys import string import os import os.path NameCAEin='Footing4soil1m.cae' NameModelin='FootingModel' NameModel='VHM-' openMdb(NameCAEin) ni=10 nj=1 #DISPLACEMENT u2f=(0.001002,0.002048,0.003138,0.004271,0.005447,0.006667,0.007908,0.008953,0 009932,0.011080) ur3f=(0.3,0.3) #Loading path 2D u1f=(0.00500, 0.00500, 0.00500, 0.00500, 0.00500, 0.00624, 0.00671, 0.00812, 0.00812, 0.00882) # Loop over different values of sphere mass k=0 for i in range(0,ni): mdb.openAuxMdb(pathName=NameCAEin) mdb.copyAuxMdbModel(fromName=NameModelin, toName=NameModel) mdb.closeAuxMdb() u_2=u2f[i] u_1=u1f[i] #ASSIGN VELOCITY for j in range(0,nj): #u1ur3=u1ur3f[j] ur_3=ur3f[j] mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Step-1',distributionType=UNIFORM,fieldName='',fixed=OFF, ocalCsys=None , name='U_2', region=mdb.models['FootingModel'].rootAssembly.sets['RP1'], u1=UNSET, u2=-u_2, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET) mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Step-2',distributionType=UNIFORM,fieldName='',fixed=OFF, ocalCsys=None , name='U_1', region=mdb.models['FootingModel'].rootAssembly.sets['RP1'], u1=u_1, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET) mdb.models['FootingModel'].DisplacementBC(amplitude=UNSET, createStepName= 'Step-3', distributionType=UNIFORM, fieldName='', fixed=OFF, localCsys=None,name='UR_3',region=mdb.models ['FootingModel'].rootAssembly.sets['RP1'], u1=UNSET, u2=UNSET, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=-ur_3) #FIELD AND HISTORY mdb.models['FootingModel'].FieldOutputRequest(createStepName='Step-1', name= 'F-Output-1', variables=('S', 'PE', 'PEEQ', 'PEMAG', 'LE', 'U', 'UT', 'UR', 'RF', 'RT', 'RM', 'CF', 'CSTRESS', 'CDISP')) - 192 - mdb.models['FootingModel'].HistoryOutputRequest(createStepName='Step-1', name= 'H-step1', rebar=EXCLUDE, region= mdb.models['FootingModel'].rootAssembly.sets['RP1'], sectionPoints=DEFAULT, variables=('U2', 'RF2')) mdb.models['FootingModel'].HistoryOutputRequest(createStepName='Step-1', name= 'H-step2', rebar=EXCLUDE, region= mdb.models['FootingModel'].rootAssembly.sets['RP1'], sectionPoints=DEFAULT, variables=('U1','RF1','UR3','RM3')) #NameJobi=NameModel+'-'+str(j) RPTOut_RF1='RF1-'+str(i)+'-'+str(j) RPTOut_RF2='RF2-'+str(i)+'-'+str(j) RPTOut_U1='U1-'+str(i)+'-'+str(j) RPTOut_U2='U2-'+str(i)+'-'+str(j) RPTOut_RM3='RM3-'+str(i)+'-'+str(j) RPTOut_UR3='UR3-'+str(i)+'-'+str(j) NameJob='VHM-0' if os.path.exists(RPTOut_RF2+".rpt"): #&& os.path.exist(fnameRF2+".rpt") && os.path.exist(fnameRM3+".rpt"): pass else: mdb.Job(atTime=None, contactPrint=OFF, description='', echoPrint=OFF, explicitPrecision=SINGLE, getMemoryFromAnalysis=True, historyPrint=OFF, memory=90, memoryUnits=PERCENTAGE, model='FootingModel', modelPrint=OFF, multiprocessingMode=DEFAULT, name=NameJob, nodalOutputPrecision=SINGLE, numCpus=2,numDomains=2, numGPUs=0, parallelizationMethodExplicit=DOMAIN, queue=None, resultsFormat=ODB, scratch='', type=ANALYSIS, userSubroutine='', waitHours=0, waitMinutes=0) #numCpus=4, numDomains=4, mdb.jobs[NameJob].writeInput(consistencyChecking=OFF) mdb.jobs[NameJob].submit(consistencyChecking=OFF) mdb.jobs[NameJob].waitForCompletion() session.viewports['Viewport: 1'].setValues(displayedObject=session.openOdb(name=NameJob+'.odb')) odb = session.odbs[NameJob+'.odb'] ## Open odb-file xy0 = session.XYDataFromHistory(name='RF1 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Reaction force: RF1 PI: FOOTING-1 Node 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') #c0 = session.Curve(xyData=xy0) xy1 = session.XYDataFromHistory(name='RF2 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Reaction force: RF2 PI: FOOTING-1 Node 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') #c1 = session.Curve(xyData=xy1) xy2 = session.XYDataFromHistory(name='U1 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Spatial displacement: U1 PI: FOOTING-1 Node - 193 - 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') #c2 = session.Curve(xyData=xy2) xy3 = session.XYDataFromHistory(name='U2 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Spatial displacement: U2 PI: FOOTING-1 Node 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') xy4 = session.XYDataFromHistory(name='RM3 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Reaction moment: RM3 PI: FOOTING-1 Node 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') #c2 = session.Curve(xyData=xy2) xy5 = session.XYDataFromHistory(name='UR3 PI: FOOTING-1 N: 133 NSET RP1', odb=odb, outputVariableName='Rotational displacement: UR3 PI: FOOTING-1 Node 133 in NSET RP1', steps=('Step-1','Step-2','Step-3', ), linkedVpName ='Viewport: 1') ... kế nghiên cứu phát triển cơng nghệ Chính vậy, đề tài nghiên cứu “ Nghiên cứu xây dựng đường bao tải trọng giới hạn đập xà lan vùng đồng sông Cửu Long ” nhằm nghiên cứu phương pháp xây dựng đường. .. MỤC ĐÍCH NGHIÊN CỨU Xây dựng đường bao tải trọng giới hạn đập X lan đất yếu chịu tải trọng phức hợp (đứng, ngang mô men) ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU 3.1 Đối tượng nghiên cứu Móng đập Xà lan đặt... mềm) để xây dựng họ đường bao tải trọng giới hạn cho đập Xà Lan vùng đồng sông Cửu Long, phục vụ tính tốn thiết kế sơ kiểm tra ổn định Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN Ý nghĩa khoa học: Luận án sở

Ngày đăng: 23/03/2020, 15:28

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w