Mọi kết quả nghiên cứu của đề tài “Lập trình tính toán tính năng tàu trên phần mềm Rhinoceros” chưa từng được công bố trong bất cứ công trình khoa học nào khác cho đến thời điểm này.. Ch
Trang 1BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG
Trang 2BỘ GIÁO DỤC ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG
Người hướng dẫn khoa học:
TS HUỲNH LÊ HỒNG THÁI
Chủ tịch Hội đồng:
TS HUỲNH VĂN VŨ
Phòng ĐT Sau Đại học:
KHÁNH HÒA - 2019
Trang 3LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi với sự hướng dẫn của thầy TS Huỳnh Lê Hồng Thái Mọi kết quả nghiên cứu của đề tài “Lập trình tính toán tính năng tàu trên phần mềm Rhinoceros” chưa từng được công bố trong bất cứ công trình khoa học nào khác cho đến thời điểm này
Khánh Hòa, ngày tháng năm 2019
Tác giả luận văn
Trần Văn Của
Trang 4LỜI CẢM ƠN Sau thời gian thực hiện đề tài đến nay đã hoàn thành Trong suốt thời gian thực hiện, tôi xin gửi lời cảm ơn đến quý phòng ban Trường Ðại học Nha Trang, Khoa Kỹ thuật giao thông, Khoa Sau đại học đã tạo điều kiện tốt nhất cho tôi được hoàn thành
đề tài này Ðặc biệt tôi xin cảm ơn thầy TS Huỳnh Lê Hồng Thái đã trực tiếp giúp đỡ, hướng dẫn tôi trong suốt thời gian thực hiện đề tài
Cuối cùng tôi xin gửi lời cảm ơn chân thành đến gia đình và tất cả bạn bè đã giúp
đỡ, động viên tôi trong suốt quá trình học tập và thực hiện đề tài
Mặc dù tôi đã nỗ lực cố gắng để hoàn thành tốt đề tài, nhưng do trình độ chuyên môn còn hạn chế nên thiếu sót là điều khó tránh khỏi, rất mong được sự đánh giá góp ý của quý thầy cô
Tôi xin chân thành cảm ơn!
Khánh Hòa, ngày tháng năm 2019
Tác giả luận văn
Trần Văn Của
Trang 5MỤC LỤC
LỜI CAM ĐOAN iii
LỜI CẢM ƠN iv
MỤC LỤC v
DANH MỤC KÝ HIỆU viii
DANH MỤC CHỮ VIẾT TẮT xi
DANH MỤC BẢNG xii
DANH MỤC HÌNH xiv
TRÍCH YẾU LUẬN VĂN xvi
LỜI NÓI ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 2
1.1GIỚITHIỆUĐỀTÀI 2
1.2.TÌNHHÌNHNGHIÊNCỨUTRONGVÀNGOÀINƯỚC 3
1.2.1 Tình hình nghiên cứu trên thế giới 3
1.2.2 Tình hình nghiên cứu trong nước 4
1.3MỤCTIÊU,ĐỐITƯỢNGVÀPHẠMVINGHIÊNCỨU 5
1.3.1 Mục tiêu nghiên cứu 5
1.3.2 Đối tượng, phạm vi nghiên cứu 5
1.3.2.1 Đối tượng nghiên cứu 5
1.3.2.2 Phạm vi nghiên cứu 5
1.4PHƯƠNGPHÁPNGHIÊNCỨU 6
1.5ÝNGHĨAKHOAHỌCVÀTHỰCTIỄN 6
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 7
2.1NGÔNNGỮLẬPTRÌNHCHORHINOCEROS 7
2.1.1 Ngôn ngữ lập trình VBScript 7
2.1.2 Các kiểu dữ liệu 8
2.1.3 Các toán tử trong VBScript 9
2.1.4 Các cấu trúc điều kiện 10
2.1.4.1 Lệnh If 10
2.1.4.2 Lệnh Case 11
2.1.5 Câu lệnh lặp 12
Trang 62.1.5.1 For Next 12
2.1.5.2 Do … Loop 12
2.1.6 Thủ tục (Procedure) 13
2.1.6.1 Sub Procedure 14
2.1.6.2 Function Procedure (Hàm) 14
2.2TÍNHTOÁNTÍNHNĂNG 14
2.2.1 Khai báo dữ liệu đầu vào 15
2.2.2 Tính toán thủy tĩnh 19
2.2.2.1 Đọc dữ liệu 23
2.2.2.2 Tạo mặt đường nước 23
2.2.2.3 Xác định các yếu tố mặt đường nước 24
2.2.2.4 Tạo khối 3D phần chìm thân tàu 26
2.2.2.5 Xác định các yếu tố thể tích 28
2.2.2.6 Xây dựng dữ liệu, vẽ đồ thị và xuất kết quả 30
2.2.3 Tính toán Bonjean 33
2.2.3.1 Đọc dữ liệu 35
2.2.3.2 Tạo mặt sườn và tạo mặt đường nước 35
2.2.3.3 Xác định phần chìm mặt sườn 36
2.2.3.4 Xác định yếu tố Bonjean theo đường nước và mạn tàu 37
2.2.4 Tính toán Pantokaren 38
2.2.5 Tính toán ổn định tàu thủy 46
2.2.5.1 Ổn định ban đầu 47
2.2.5.2 Ổn định ở góc nghiêng lớn 48
2.2.5.3 Ổn định động 49
CHƯƠNG 3: KẾT QUẢ NGHIÊN CỨU 51
3.1CHƯƠNGTRÌNHTÍNHTOÁNTÍNHNĂNG 51
3.1.1 Tổng quan về chương trình 51
3.1.2 Trình tự sử dụng chương trình 52
3.2KẾTQUẢCHẠYCHƯƠNGTRÌNH 52
3.2.1 Mẫu tàu số 1 52
3.2.1.1 Tính toán thủy tĩnh mẫu tàu số 1 53
3.2.1.2 Tính toán Bonjean mẫu tàu số 1 54
Trang 73.2.1.3 Tính toán ổn định ban đầu mẫu tàu số 1 57
3.2.1.4 Tính toán Pantokaren mẫu tàu số 1 58
3.2.1.5 Tính toán ổn định mẫu tàu số 1 59
3.2.1.6 So sánh kết quả tính với phần mềm DelftShip và Maxsurf 65
3.2.2 Mẫu tàu số 2 68
3.2.2.1 Tính toán thủy tĩnh mẫu tàu số 2 69
3.2.2.2 Tính toán Bonjean mẫu tàu số 2 70
3.2.2.3 Tính toán ổn định ban đầu mẫu tàu số 2 72
3.2.2.4 Tính toán Pantokaren mẫu tàu số 2 74
3.2.2.5 Tính toán ổn định mẫu tàu số 2 74
3.3.2.6 So sánh kết quả tính toán với phần mềm Maxsurf 80
CHƯƠNG 4: KẾT LUẬN VÀ ĐỀ XUẤT 84
4.1KẾTLUẬN 84
4.1.1 Ưu điểm 85
4.1.2 Nhược điểm 85
4.2ĐỀXUẤT 85
TÀI LIỆU THAM KHẢO 87
Trang 8DANH MỤC KÝ HIỆU
Lmax: Chiều dài tàu lớn nhất
Bmax: Chiều rộng tàu lớn nhất
H: Chiều cao mạn tàu
L: Chiều dài tàu
B: Chiều rộng tàu
Lf: Chiều dài đường nước
Bf: Chiều rộng đường nước
d: Chiều chìm trung bình
D: Lượng chiếm nước
V: Thể tích chiếm nước
Sf: Diện tích mặt đường nước
Xf: Hoành độ tâm diện tích mặt đường nước
XB: Hoành độ tâm nổi
ZB: Cao độ tâm nổi
Ix: Mômen quán tính riêng của diện tích mặt đường nước lấy đối với trục dọc
Iy: Mômen quán tính riêng của diện tích mặt đường nước lấy đối với trục ngang
SB: Diện tích mặt biên của mặt đường nước
VB: Thể tích hộp biên của phần chìm tàu
ω: Diện tích mặt cắt ngang
Trang 9Mω: Mô men diện tích mặt cắt ngang
Zω: Cao độ trọng tâm diện tích mặt cắt ngang f: Hàm số
φ: Góc nghiêng ngang
ψ: Góc nghiêng dọc
G: Trọng tâm tàu
XG: Hoành độ trọng tâm tàu
ZG: Cao độ trọng tâm tàu
S: Diện tích hứng gió của cabin
AV: Diện tích hứng gió của tàu
PV: Áp lực gió
ZV: Chiều cao tâm hứng gió
MV: Mô men nghiêng do gió
θr, θ1r: Góc lắc
θf: Góc vào nước
lw1: Tay đòn nghiêng do gió
lw2: Tay đòn nghiêng do gió giật
T: Chu kỳ lắc
Ak: Diện tích vây giảm lắc
Tm: Chiều chìm mũi tàu
Trang 10B’: Tâm nổi khi tàu nghiêng
Mhp: Mô men hồi phục
Lφ = GZ : Cánh tay đòn ổn định tĩnh
GM = ho : Chiều cao tâm nghiêng ngang ban đầu
KG = ZG : Chiều cao trọng tâm tàu so với mặt phẳng qua đáy tàu
KB = ZB : Chiều cao tâm nổi khi tàu không nghiêng
BM = r0 : Bán kính tâm nghiêng ngang khi tàu không nghiêng
BR = Lk : Cánh tay đòn ổn định hình dáng
LG: Cánh tay đòn ổn định trọng lượng
KG = ZG: Cao độ trọng tâm tàu
Ahp: Công của mô men hồi phục
Trang 11DANH MỤC CHỮ VIẾT TẮT 2D: Two Dimensions (Hai chiều)
3D: Three Dimensions (Ba chiều)
3D Solid: Three Dimensions Solid (Vật rắn ba chiều)
CAD: Computer – Aided Design (Thiết kế với sự hỗ trợ của máy tính)
Rhino: Rhinoceros (Phần mềm Rhinoceros)
NURBS: Non-uniform rational B-spline (Mô hình toán học được sử dụng trong
kĩ thuật đồ họa máy tính để biểu diễn đường cong và bề mặt.)
Trang 12DANH MỤC BẢNG
Bảng 2.1 Mô tả các kiểu dữ liệu 8
Bảng 2.2 Toán tử số học 9
Bảng 2.3 Toán tử logic 9
Bảng 2.4 Toán tử so sánh 10
Bảng 2.5 Thông số tàu 15
Bảng 2.6 Thông số trường hợp tải trọng 16
Bảng 2.7 Dữ liệu yêu cầu cho kiểm tra ổn định thời tiết 16
Bảng 3.1 Kết quả tính toán thủy tĩnh mẫu tàu số 1 53
Bảng 3.2 Kết quả tính toán Bonjean mẫu tàu số 1 54
Bảng 3.3 Thông số các trường hợp tải mẫu tàu số 1 57
Bảng 3.4 Kết quả tính toán ổn định ban đầu mẫu tàu số 1 57
Bảng 3.5 Bảng tính Pantokaren mẫu tàu số 1 58
Bảng 3.6 Dữ liệu yêu cầu cho kiểm tra ổn định thời tiết mẫu tàu số 1 59
Bảng 3.7 Bảng tính cánh tay đòn ổn định mẫu tàu số 1 60
Bảng 3.8 Bảng tính ổn định theo tiêu chuẩn thời tiết mẫu tàu số 1 61
Bảng 3.9 Bảng kiểm tra ổn định theo tiêu chuẩn đồ thị mẫu tàu số 1 62
Bảng 3.10 So sánh kết quả tính toán thủy tĩnh mẫu tàu số 1 65
Bảng 3.11 So sánh tính ổn định mẫu tàu số 1 67
Bảng 3.12 Kết quả tính toán thủy tĩnh mẫu tàu số 2 69
Bảng 3.13 Kết quả tính toán Bonjean mẫu tàu số 2 70
Bảng 3.14 Thông số các trường hợp tải mẫu tàu số 2 72
Bảng 3.15 Kết quả tính toán ổn định ban đầu mẫu tàu số 2 73
Bảng 3.16 Bảng tính Pantokaren mẫu tàu số 2 74
Bảng 3.17 Dữ liệu yêu cầu cho kiểm tra ổn định thời tiết mẫu tàu số 2 74
Trang 13Bảng 3.18 Bảng tính cánh tay đòn ổn định mẫu tàu số 2 75
Bảng 3.19 Bảng tính ổn định theo tiêu chuẩn thời tiết mẫu tàu số 2 76
Bảng 3.20 Bảng kiểm tra ổn định theo tiêu chuẩn đồ thị mẫu tàu số 2 77
Bảng 3.21 So sánh kết quả thủy tĩnh mẫu tàu số 2 80
Bảng 3.22 So sánh kết quả ổn định mẫu tàu số 2 81
Trang 14DANH MỤC HÌNH
Hình 2.1 Giao diện RhinoScriptEditor [12] 8
Hình 2.2 Hệ tọa độ thân tàu 14
Hình 2.3 Mô hình 3D vỏ tàu 15
Hình 2.4 Xác định các yếu tố mặt đường nước 19
Hình 2.5: Cách xác định các yếu tố mặt cắt ngang 21
Hình 2.6 Sơ đồ khối tính toán các yếu tố thủy tĩnh 22
Hình 2.7 Kết quả tạo mặt phẳng đường nước 24
Hình 2.8 Khối hộp 3D bao phủ phần nổi thân tàu 27
Hình 2.9 Phần chìm thân tàu 28
Hình 2.10 Đồ thị thủy tĩnh 32
Hình 2.11: Xác định các yếu tố mặt cắt ngang 33
Hình 2.12 Sơ đồ khối tính toán Bonjean 34
Hình 2.13 Mặt phẳng sườn 36
Hình 2.14 Mặt phẳng phần chìm của sườn 37
Hình 2.15 Đồ thị Bonjean 38
Hình 2.16 Sơ đồ khối tính toán các yếu tố của đồ thị trung gian 39
Hình 2.17 Mô hình tàu nghiêng ngang góc φ 40
Hình 2.18 Khối hộp 3D bao phủ phần nổi thân tàu nghiêng ngang 41
Hình 2.19 Phần chìm thân tàu nghiêng ngang 42
Hình 2.20 Các trạng thái nghiêng cùng góc φ 43
Hình 2.21 Đồ thị trung gian 43
Hình 2.22 Cánh tay đòn hình dáng Lk 43
Hình 2.23 Sơ đồ khối tính toán patokaren 44
Trang 15Hình 2.24 Đồ thị Pantokaren 46
Hình 2.25 Ổn định ban đầu 47
Hình 2.26 Xác định cánh tay đòn ổn định tại góc nghiêng lớn 48
Hình 2.27 Đồ thị ổn định tĩnh 49
Hình 2.28 Đồ thị ổn định tĩnh và đồ thị ổn định động 50
Hình 3.1 Tuyến hình mẫu tàu số 1 53
Hình 3.2 Đồ thị thủy tĩnh mẫu tàu số 1 54
Hình 3.3 Đồ thị Bonjean mẫu tàu số 1 56
Hình 3.4 Đồ thị Pantokaren mẫu tàu số 1 59
Hình 3.5 Đồ thị ổn định TH1 mẫu tàu số 1 62
Hình 3.6 Đồ thị ổn định TH2 mẫu tàu số 1 63
Hình 3.7 Đồ thị ổn định TH3 mẫu tàu số 1 63
Hình 3.8 Đồ thị ổn định TH4 mẫu tàu số 1 64
Hình 3.9 Đồ thị ổn định TH5 mẫu tàu số 1 64
Hình 3.10 Tuyến hình mẫu tàu số 2 69
Hình 3.11 Đồ thị thủy tĩnh mẫu tàu số 2 70
Hình 3.12 Đồ thị Bonjean mẫu tàu số 2 72
Hình 3.13 Đồ thị Pantokaren mẫu tàu số 1 74
Hình 3.14 Đồ thị ổn định TH1 mẫu tàu số 2 77
Hình 3.15 Đồ thị ổn định TH2 mẫu tàu số 2 78
Hình 3.16 Đồ thị ổn định TH3 mẫu tàu số 2 78
Hình 3.17 Đồ thị ổn định TH4 mẫu tàu số 2 79
Hình 3.18 Đồ thị ổn định TH5 mẫu tàu số 2 79
Trang 16TRÍCH YẾU LUẬN VĂN
Tự động hóa tính toán tính năng tàu thủy là một trong những vấn đề đã và đang được quan tâm nghiên cứu rộng rãi nhằm mục đích phục vụ tốt hơn cho việc tính toán thiết kế tàu và công tác đào tạo Rhinoceros (Rhino) là một phần mềm thương mại đơn
lẻ, là một công cụ mô hình hóa 3D dựa trên nền tảng NURBS [15] Phần mềm đang được phần lớn sinh viên và các công ty thiết kế tàu sử dụng nhưng chưa thể tự động hóa tính toán tính năng tàu Đề tài: “Lập trình tính toán tính năng tàu trên phần mềm Rhinoceros” được đề xuất không ngoài mục đích nói trên
Mục tiêu của đề tài là lập trình tính toán tính năng tàu thủy trên phần mềm Rhinoceros bằng ngôn ngữ RhinoScript đảm bảo độ chính xác cần thiết
Kết quả nghiên cứu đạt được của đề tài là chương trình tính toán tính năng tàu dùng cho phần mềm Rhino Qua những phân tích, so sánh, đánh giá có thể khẳng định chương trình tính toán tính năng tàu trên phần mềm Rhino là một chương trình tính toán tính năng mới, hợp lý mang lại kết quả đáng tin cậy Tuy nhiên để hoàn thiện hơn
có thể thêm phần tự động xây dựng mô hình vỏ tàu 3D
Bố cục của luận văn được chia làm bốn chương
Chương 1: Giới thiệu tổng quan về đề tài, tình hình nghiên cứu trong và ngoài nước Chương 2: Trình bày cơ sở lý thuyết của phương pháp tính toán tính năng tàu trên phần mềm Rhino và ngôn ngữ lập trình cho phần mềm Rhino
Chương 3: Trình bày kết quả nghiên cứu bao gồm các mô đun tính toán tính nổi
và tính ổn định của chương trình tính toán tính năng tàu trên phần mềm Rhino, thực hiện tính toán với mẫu tàu cụ thể và đi so sánh kết quả tính toán của chương trình với phần mềm DelftShip và Maxsurft
Chương 4: Trình bày những kết luận và khuyến nghị
Từ khóa:
“Tính toán tính năng tàu”
“Phần mềm Rhinoceros”
“Lập trình RhinoScript”
Trang 17LỜI NÓI ĐẦU Ngành công nghiệp đóng tàu Việt Nam đang phát triển mạnh mẽ và ngày càng khẳng định vị thế trên thế giới Để có được kết quả này, các khâu từ thiết kế sơ bộ, thiết kế kỹ thuật, thiết kế công nghệ, nhà máy đóng tàu không ngừng cải tiến Các khâu điều có các đặc thù riêng và đóng vai trò quan trọng trong toàn bộ quá trình sản xuất một con tàu Trong quá trình thực hiện khâu thiết kế kỹ thuật, nhiệm vụ đặt ra là phải khẳng định các kết quả thiết kế đạt được các mục đích cần thiết của con tàu, đảm bảo các tính năng hàng hải cần thiết Để trợ giúp cho công việc tính toán thiết kế này, hiện nay có rất nhiều phần mềm thiết kế chuyên dụng như AutoShip, Maxsurf Trong thiết kế tàu, toàn bộ cả quá trình thiết kế kỹ thuật khá tốn thời gian Vì vậy, nhu cầu tự động hóa cho quá trình này rất cần thiết
Ngoài ra, Rhino là một phần mềm thương mại đơn lẻ, là một công cụ mô hình hóa 3D dựa trên nền tảng NURBS Phần mềm này thường được sử dụng cho thiết kế
mỹ thuật, tàu thủy, đồ trang sức, thiết kế ôtô… bởi tính năng xây dựng mô hình tương đối dễ dàng và được phần lớn sinh viên và các công ty thiết kế tàu sử dụng Hơn nữa, bản thân phần mềm Rhino không hỗ trợ các công cụ tính toán tính năng tàu thủy, nhưng nó lại hỗ trợ các ngôn ngữ lập trình như Rhinoscript, PythonScript Nhờ vậy, có thể xây dựng được các chương trình tính toán một cách tự động, nhanh chóng và chính xác hơn Từ thực tế đó tôi lựa chọn thực hiện đề tài: “Lập trình tính toán tính năng tàu trên phần mềm Rhinoceros” Mục tiêu chính của đề tài là lập trình tính toán tính năng tàu chạy trên phần mềm Rhinoceros
Đề tài được chia làm các chương:
Chương 1: Tổng quan về đề tài
Chương 2: Cơ sở lý thuyết
Chương 3: Kết quả nghiên cứu
Chương 4: Thảo luận kết quả và kết luận
Trần Văn Của
Trang 18CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1 1 GIỚI THIỆU ĐỀ TÀI
Như đã biết, thiết kế đường hình tàu và tính toán tính năng hàng hải cần thiết của tàu là một công việc hết sức khó khăn, phức tạp, khối lượng công việc rất lớn và đòi hỏi sự chính xác cao Từ khi ra đời, thiết kế tàu không ngừng phát triển, trong chừng mực nhất định luôn có sự hỗ trợ có hiệu quả của các phương pháp tính và đặc biệt công cụ đắc lực nhất là máy tính Những phương pháp số được đưa vào giải quyết các bài toán thiết kế tàu cho kết quả chính xác hơn, tốc độ xử lý công việc nhanh hơn Nhưng hầu hết các phương pháp đều sử dụng dữ liệu từ bản vẽ đường hình 2D, áp dụng các phép tính tích phân gần đúng nên độ chính xác của kết quả tính cần phải được đánh giá Tiến tiếp trên con đường phát triển này là phương pháp tính toán dựa trên mô hình vận rắn 3D và tự động hóa tính toán, thiết kế đang dần được ưu tiên nghiên cứu hàng đầu Mô hình vật rắn 3D kết hợp với tự động hóa thiết kế tàu làm cho công việc thiết kế, tính toán trở nên dễ dàng hơn, chính xác hơn và thời gian giải quyết công việc rút ngắn lại nhiều lần so với cách làm trước nay
Hiện nay, phần lớn các phần mềm thiết kế tàu như AutoShip, Maxsurf, DelfShip, Napa, Solidworks… cho phép người sử dụng hoàn thiện các tính toán thiết kế của mình một cách bán tự động, nghĩa là sau khi tính toán thiết kế trên các phần mềm cần phải qua giai đoạn xử lý các số liệu kết quả từ các phần mềm theo quy định của đăng kiểm
Rhino là một phần mềm đơn lẻ, là một công cụ mô hình hóa 3D dựa trên nền tảng NURBS, được phát triển bởi Robert McNeel và những người cộng tác Phần mềm này thường được sử dụng cho thiết kế mỹ thuật, tàu thủy, đồ trang sức, ôtô[13]…Rhino trở nên phổ biến nhờ tính đa dạng của nó, có khả năng nhập xuất hơn
30 định dạng dữ liệu từ đó cho phép Rhino làm việc như một trình chuyển đổi giữa các phần mềm trong quá trình thiết kế Rhino chuyên về tạo mô hình bằng bề mặt NURBS
tự do Các công cụ phụ trợ được phát triển bởi McNeel bao gồm Flamingo (công cụ dựng hình Raytrace), Penguin (dựng hình kiểu vẽ tay), và Bongo (công cụ đồ họa) Đặc biệt Rhino là một phần mềm với mã nguồn mở cho phép phát triển bởi phía thứ
Trang 19ba Giống như nhiều phần mềm khác, Rhino cũng có tính năng cho phép lập trình dựa trên cơ sở ngôn ngữ Visual Basic và một bộ công cụ phát triển phần mềm SDK [17] cho phép đọc và viết file Rhino một cách trực tiếp Hiện nay, các mô đun thiết kế tàu xây dựng cho phần mềm Rhino đã được các công ty thiết kế tàu sử dụng như Orca3D, Seanaptic nhưng lại có một số nhược điểm như sau:
+ Giá thành cho các mô đun này tương đối cao không những vượt xa khả năng của sinh viên, và một số công ty thiết kế tàu
+ Các mô đun này thường được thiết kế, kiểm tra tính toán theo các tiêu chuẩn nước ngoài nên trong nhiều trường hợp kết quả tính toán cần phải được kiểm tra lại một lần nữa theo các quy định của đăng kiểm Việt Nam
Ngoài ra trong thực tế chuyên môn, hầu hết quá trình tính toán tính năng tàu thủy điều bắt đầu từ việc xây dựng mô hình tàu 3D trên phần mềm Rhino Nhưng hiện tại Rhino chỉ mới đáp ứng được việc xây dựng tuyến hình còn phần tính toán tính năng tàu thì phải nhờ đến phần mềm khác như Autoship, Maxsurf
Từ những lý do đó, tôi mạnh dạn chọn đề tài “ Lập trình tính toán tính năng tàu thủy trên phần mềm Rhinoceros” Trong đề tài này tôi tiến hành nghiên cứu các thuật toán tính toán tính năng tàu thủy và lập trình tính toán năng tàu thủy trên phần mềm Rhino
1.2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
1.2.1 Tình hình nghiên cứu trên thế giới
Liên quan đế vấn đề này, hiện nay trên thế giới cũng có nhiều chương trình, các
mô đun thiết kế tàu xây dựng cho phần mềm Rhino đã được các công ty thiết kế tàu sử dụng như Orca3D, Seanaptic
Orca3D là một gói Plug-in bên lĩnh vực hàng hải dành cho Rhino, được xây dựng
và phát triển bởi một nhóm kiến trúc sư hải quân Orca3D cung cấp các công cụ hỗ trợ trong việc thiết kế tàu như thiết kế vỏ tàu và làm trơn mịn, tính toán thủy tĩnh, ổn định, sức cản, lựa chọn công suất máy, tính toán khối lượng vỏ tàu và dự toán giá thành [14]
Seanaptic cũng là một gói Plug-in cho Rhino, bản quyền thuộc về công ty Seanaptic tại Barcelona Nó cung cấp các công cụ mô hình hóa, ước tính khối lượng và
Trang 20tính toán tọa độ trọng tâm vỏ tàu Đây là gói phần mềm chuyên bên lĩnh vực kết cấu tàu thủy [15]
Sau khi tìm hiểu, tôi nhận thấy các chương trình, mô đun này có đặc điểm như sau:
+ Công việc tính toán tính năng tàu trên các mô đun này điều được thực hiện qua các bước khá phức tạp, đòi hỏi người sử dụng phải có trình độ chuyên môn
+ Các phương pháp và thuật toán được xây dựng bên trong các chương trình, mô đun này điều được đóng gói chỉ cho phép người dùng sử dụng, người dùng không thể can thiệp sâu vào nội dung bên trong
Vì thế, theo ý kiến riêng tôi, việc tìm hiểu các chương trình, mô đun này để phục
vụ nghiên cứu, học tập, giảng dạy và thiết kế, tính toán tính năng tàu ở nước ta là còn nhiều hạn chế, khó khăn và tốn kém
1.2.2 Tình hình nghiên cứu trong nước
Như đã trình bày ở trên, hiện nay ở Việt Nam phần mềm có kỹ thuật vẽ đơn giản như Rhinoceros đang được phần lớn sinh viên và các công ty thiết kế vừa và nhỏ sử dụng Nhưng sau khi vẽ mô hình tàu trên những phần mềm này cần phải xuất qua một phần mềm khác như Autoship, Maxsurf để tính toán tính năng
Trong nước có các chương trình tự động vẽ tuyến hình tàu, tính toán tính năng tàu, một số thuật toán đã được nghiên cứu và ứng dụng như kết quả nghiên cứu của PGS.TS Trần Gia Thái, thông qua đề tài cấp Bộ “Tự động hóa thiết kế đường hình tàu đáp ứng nhu cầu đa dạng tàu nghề cá Việt Nam”[11] trong đó đã công bố phần mềm cho phép thiết kế đường hình cũng như tính toán tính năng của các mẫu tàu cá Việt Nam Kết quả nghiên cứu của Bùi Công Lộc với đề tài “Viết chương trình vẽ đường hình và tính toán tính năng các mẫu tàu khác nhau theo mẫu truyền thống tỉnh Ninh Thuận” [7], nhưng nhìn chung đa phần được viết bằng ngôn ngữ Autolisp ứng dụng cho phần mềm Autocad và sử dụng dữ liệu từ bản vẽ 2D nên các kết quả tính toán phần nào sẽ còn sai số và một hạn chế nữa là các nghiên cứu này là bị giới hạn trong một số mẫu tàu cá nhất định
Gần đây, Tác giả Nguyễn Xuân Hải, đã nghiên cứu đề tài “Nghiên cứu tính toán tay đòn ổn định tĩnh tàu thủy theo mô hình vật rắn 3D” Kết quả nghiên cứu này là một
Trang 21phương pháp mới, hợp lý có độ tin cậy trong việc tính toán cánh tay đòn ổn định tàu thủy theo mô hình vật rắn 3D, đã góp phần hạn chế những sai số cho những phương pháp tính toán truyền thống từ trước [8] Hạn chế của phương pháp này khó lập trình
tự động hóa tính toán nên khi sử dụng phương pháp này trong thiết kế tính toán tính năng tàu vẫn còn khá tốn thời gian
Tác giả Nguyễn Công Chánh đã thực hiện đề tài “Nghiên cứu sử dụng ngôn ngữ lập trình RhinoScript vẽ hệ lái tàu cá theo các thông số cho trước” [9] Kết quả của đề tài, khẳng định rằng có thể sử dụng ngôn ngữ lập trình RhinoScript để lập trình tính toán tính năng tàu thủy trên phần mềm Rhino
Nhìn chung hiện tại, trong nước vẫn chưa có công trình nghiên cứu chính thức nào liên quan đến vấn đề về tự động hóa tính toán tính năng tàu bằng ngôn ngữ RhinoScript
1.3 MỤC TIÊU, ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
1.3.1 Mục tiêu nghiên cứu
Mục tiêu chung của đề tài là lập trình tính toán tính năng tàu thủy trên phần mềm Rhino bằng ngôn ngữ RhinoScript đảm bảo độ chính xác cần thiết, cụ thể như sau: + Xây dựng chương trình tính toán thủy tĩnh
+ Xây dựng chương trình tính toán Bonjean
+ Xây dựng chương trình tính toán ổn định
1.3.2 Đối tượng, phạm vi nghiên cứu
1.3.2.1 Đối tượng nghiên cứu
Đề tài chủ yếu nghiên cứu các thuật toán và chương trình tính toán tính năng tàu thủy
1.3.2.2 Phạm vi nghiên cứu
Trong thời gian nghiên cứu cho phép, tôi dự kiến viết chương trình thực hiện một
số nội dung sau:
- Tính toán tính nổi tàu thủy
- Tính toán Bonjean
Trang 22- Tính toán tính ổn định tàu thủy
- Kiểm tra ổn định theo các tiêu chuẩn của đăng kiểm
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
Đề tài được nghiên cứu dựa trên cơ sở lý thuyết được trang bị tại Trường Đại học Nha Trang, kết hợp với yêu cầu quy định của đăng kiểm Việt Nam và tìm hiểu phân tích mối liên hệ giữa việc tính toán tính năng tàu và ngôn ngữ lập trình trên phần mềm Rhino bao gồm những phương pháp sau:
+ Phương pháp lý thuyết
+ Phương pháp thực nghiệm
Dựa vào các kết quả từ phần mềm Maxsurf và DelftShip đã được đăng kiểm phê duyệt để so sánh và đánh giá
1.5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN
Kết quả nghiên cứu của đề tài bước đầu có những đóng góp quan trọng nhất định
cả về mặt khoa học và thực tiễn, cụ thể như sau:
Trang 23CHƯƠNG 2
CƠ SỞ LÝ THUYẾT 2.1 NGÔN NGỮ LẬP TRÌNH CHO RHINOCEROS
2.1.1 Ngôn ngữ lập trình VBScript
Rhino là một phần mềm đồ họa CAD và 3D được phát triển bởi Robert McNeel
& Associates, một công ty tư nhân được thành lập vào năm 1980 Rhino được phát triển theo thuật toán NURBS, thuật toán tập trung vào việc trình bày chính xác các đường cong và bề mặt tự do toán học trong đồ họa máy tính [13]
RhinoScript là một công cụ soạn thảo kịch bản được sử dụng để thêm chức năng cho Rhino Nó dựa trên ngôn ngữ VBScript (Visual Basic Scripting Edition) của Microsoft VBScript là tập hợp con nghiêm ngặt của ngôn ngữ Visual Basic, được ứng dụng phổ biến trong Microsoft Excel, Microsoft Access, Microsoft Project và hệ thống phát triển Visual Basic Tuy nhiên, nó sẽ được thêm các hàm để phù hợp với phần mềm Rhino Khi Rhino nhận các lệnh RhinoScript thì nó sẽ chuyển lệnh này đến trình biên dịch của RhinoScript, các dòng text ứng với các lệnh của Rhino thì chúng sẽ đánh giá và thi hành lệnh như mong muốn
VBScript chỉ có một kiểu khai báo dữ liệu duy nhất được gọi là biến (Variant) [6] Biến thể là một loại dữ liệu đặc biệt có thể chứa các loại thông tin khác nhau, tùy thuộc vào cách sử dụng Bởi vì biến là kiểu dữ liệu duy nhất trong VBScript, nó cũng
là kiểu dữ liệu được trả về bởi tất cả các hàm trong VBScript Đơn giản nhất, một biến thể có thể chứa thông tin số hoặc chuỗi Biến thể hoạt động như một số khi nó được sử dụng nó trong ngữ cảnh số và dưới dạng chuỗi khi sử dụng nó trong ngữ cảnh chuỗi
Để viết một đoạn RhinoScript chúng ta có thể sử dụng các chương trình soạn thảo như: Notepad, Microsoft Word, nhưng việc tìm kiếm lỗi và nhận dạng biến rất khó khăn Vì vậy để khắc phục điều đó Rhino cung cấp môi trường lập trình RhinoScriptEditor như hình 2.1, môi trường này giúp viết và gỡ rối chương trình RhinoScript cũng như cho phép liên kết trực tiếp với Rhino để chạy thử chương trình
Trang 24Hình 2.1 Giao diện RhinoScriptEditor [12]
Trong VBScript, để thực hiện một lệnh bất kỳ nào đó trong phần mềm Rhino sẽ được viết theo cú pháp sau:
Rhino.<tên lệnh><Các tham số cho lệnh của Rhino>
Ví dụ để thực hiện vẽ một đường thẳng qua 2 điểm A (0,0,0) và B (10,5, 0) ta có
dữ liệu khác nhau Thông thường trong Visual Basic thì biến được gán cùng với kiểu
dữ liệu của biến, nhưng trong VBSrcipt thì không yêu cầu về điều này Các kiểu dữ liệu của biến được mô tả cụ thể như bảng 2.1
Bảng 2.1 Mô tả các kiểu dữ liệu
Kiểu dữ
Empty Biến là chưa được khởi tạo Giá trị là 0 cho các biến số hoặc
chuỗi có độ dài bằng không ("") cho các biến chuỗi Null Biến không chứa dữ liệu hợp lệ
Trang 25Long Chứa số nguyên trong phạm vi -2147483648 đến 2147483647 Single Biểu diễn giá trị từ ±1.510-45 đến ±3.4 × 1038 với độ chính xác 7
chữ số thập phân Double Biểu diễn giá trị từ ±5.0 × 10xác 15-16 chữ số thập phân -324 đến ±1.7 × 10308 với độ chính Date
Error Chứa dữ liệu lỗi
2.1.3 Các toán tử trong VBScript
Toán tử là ký hiệu chỉ ra phép toán nào đó được thực hiện trên các toán hạng (có thể là một hoặc hai toán hạng)
Not Trả về giá trị ngược lại của toán hạng
And Trả về True (1) khi và chỉ khi hai toán hạng cùng là True (1)
AndAlso Trả về giá trị như And nhưng khi toán hạng thứ nhất là False (0) sẽ không kiểm tra toán hạng thứ hai và trả về False
Trang 26Trong đó <điều kiện> có thể là biểu thức trả về giá trị True/False hoặc là một giá trị số Giá trị số khác 0 tương ứng với True, ngược lại là False
Sử dụng cú pháp này, người lập trình muốn khai báo với trình biên dịch rằng các câu lệnh trong vùng If … End If chỉ được thực hiện nếu như <điều kiện> là đúng
Trang 27Mẫu 2
If <điều kiện> Then ' Các câu lệnh khi điều kiện đúng Else
' Các câu lệnh khi điều kiện sai End if
Nếu chỉ có một câu lệnh được thực hiện trong mỗi trường hợp khi điều kiện đúng hoặc sai ta có thể viết như sau:
If <điều kiện> Then Câu_lệnh1 Else Câu_lệnh2
Trong đó câu_lệnh 1 là lệnh được thực hiện khi điều kiện đúng còn câu_lệnh 2 là lệnh được thực hiện khi điều kiện sai
2.1.4.2 Lệnh Case
Select Case<biểu thức>
Case<danh sách 1>
' Các lệnh thực hiện trong nhánh 1 Case <danh sách 2>
' Các lệnh thực hiện trong nhánh 2
Case Else ' Các lệnh thực hiện khi không có nhánh nào ở trên được chọn End Select
Danh sách được đưa ra để làm điều kiện rẽ nhánh có thể rơi vào một trong các trường hợp sau:
- biểu thức
Trang 28' Các câu lệnh Next [biến đếm]
- Các câu lệnh trong vùng For … Next chỉ được thực hiện nếu <biến đếm>
có giá trị trong đoạn [<giá trị đầu>, <giá trị cuối>]
- Sau mỗi lần thực hiện, <biến đếm> sẽ được tăng thêm <bước> Nếu không chỉ định, <bước> có giá trị là 1
- Nếu <bước> có trị > 0, cấu trúc chỉ thực hiện khi <giá trị đầu><= <giá trị cuối>
- Nếu <bước> có trị < 0, cấu trúc chỉ thực hiện khi <giá trị đầu>>= <giá trị cuối>
- Mệnh đề Exit For dùng để thoát ngang khỏi vòng lặp
2.1.5.2 Do … Loop
Mẫu 1
Do While <biểu thức logic>
' Các câu lệnh Loop
Trang 29Với cú pháp này, các câu lệnh đặt trong vùng Do While … Loop chỉ thực hiện khi <biểu thức logic> có giá trị True Sau mỗi lần thực hiện các câu lệnh trong vùng
Do While Loop, <biểu thức logic> sẽ được kiểm tra lại:
- Nếu trị True, thực hiện lại vòng lặp
Với cú pháp này, các câu lệnh đặt trong vùng Do Untile … Loop chỉ thực hiện khi <biểu thức logic> có giá trị False Sau mỗi lần thực hiện các câu lệnh trong vùng
Do While Loop, <biểu thức logic> sẽ được kiểm tra lại:
- Nếu trị True, thực hiện thì kết thúc vòng lặp
- Nếu trị False, thực hiện tiếp tục vòng lặp
có thể được gọi trong một câu lệnh hoặc được gọi trong một biểu thức
Trong ngôn ngữ lập trình VBScript thủ tục được chia thành hai loại: Sub Procedure, Function Procedure
Trang 302.1.6.1 Sub Procedure
Sub là một dãy các câu lệnh để thực thi một công việc, một chức năng đặc thù nào đó, sub được xem như là một thành phần của chương trình Nói một cách khác, sub là các câu lệnh được nhóm vào một khối và được đặt tên
Các sub có thể được gọi để thi hành thường là thông qua subname Điều này cho phép gọi tới những thủ tục nhiều lần mà không cần phải lặp lại các khối lệnh giống nhau một khi đã hoàn tất việc viết mã lệnh cho các thủ tục đó chỉ một lần
2.1.6.2 Function Procedure (Hàm)
Một hàm là dãy các lệnh để thực thi một thao tác đặc thù nào đó như là một phần của chương trình lớn hơn Nói một cách khác, hàm là các câu lệnh được nhóm vào một khối, được đặt tên và có một giá trị trả về
Các hàm có thể được gọi để thi hành (thường là thông qua tên của hàm) Điều này cho phép gọi tới hàm nhiều lần mà không cần phải lặp lại các khối mã giống nhau một khi đã hoàn tất việc viết mã cho các hàm đó chỉ một lần
2.2 TÍNH TOÁN TÍNH NĂNG
Phương pháp chung để tính toán tính năng tàu thủy được sử dụng trong đề tài này
là dựa trên mô hình 3D và ứng dụng các công cụ có sẵn trên phần mềm Rhino để tính toán trực tiếp các đặc trưng hình học phần chìm thân tàu Các đại lượng đặc trưng này luôn gắn trong một hệ tọa độ nhất định là hệ tọa độ thân tàu Theo lý thuyết tàu thủy,
hệ tọa độ thân tàu là hệ tọa độ Đề-các Oxyz có gốc O đặt tại giao điểm ba mặt phẳng: Mặt cắt ngang giữa tàu, mặt cắt dọc giữa tàu, mặt cơ bản qua đáy tàu Trục Ox hướng
về mũi, trục Oy hướng sang mạn phải, trục Oz hướng lên như hình 2.2 [5] Để định vị
mô hình ta di chuyển mô hình về gốc tọa độ mặc định của Rhino để thuận lợi khi sử dụng kết quả tính
Hình 2.2 Hệ tọa độ thân tàu
Trang 31Các đại lượng đặc trưng hình học thân tàu đều có đơn vị phụ thuộc vào đơn vị
đo của chúng ta đã khai báo sử dụng trong Rhino
2.2.1 Khai báo dữ liệu đầu vào
Các dữ liệu đầu vào cần thiết cho chương trình tính toán tính năng tàu được xây dựng trong một file excel File excel này cũng chính là file lưu trữ dữ liệu của kết quả tính toán được xuất ra từ chương trình Ngoài dữ liệu ở file excel, còn có thêm mô hình như mô hình 3D vỏ tàu, các đường bao để xây dựng bản vẽ tuyến hình và mô hình vật rắn 3D của vỏ tàu này để tính toán tính năng như hình 2.3
Hình 2.3 Mô hình 3D vỏ tàu
Dữ liệu đầu vào trong file excel bao gồm ba nhóm cơ bản được gọi là: Thông số tàu, các trường hợp tải trọng và thông số kiểm tra tiêu chuẩn ổn định thời tiết được trình bày trong sheet 1 của file “TINHNANG.xlsx”
- Thông số tàu được mô tả cụ thể như bảng 2.5
Bảng 2.5 Thông số tàu NHẬP THÔNG SỐ TÀU
Trang 32+ Tàu không có gãy góc: 0
- Trường hợp tải trọng được mô tả ở bảng 2.6
Bảng 2.6 Thông số trường hợp tải trọng
P (tấn) XG (m) ZG (m) Trường hợp 1 200.0 -0.780 2.180 Trường hợp 2 166.5 0.284 2.000 Trường hợp 3 150.0 0.404 2.057 Trường hợp 4 118.5 0.166 2.210 Trường hợp 5 178.5 -0.370 2.015
Giá trị “5” trong bảng 2.6 là tổng số các trường hợp tải trọng Trong thực tế, khi
bố trí các thành phần tải trọng, người thiết kế luôn cố gắng bố trí đối xứng qua mặt cắt dọc giữa tàu vì vậy YG = 0 nên trong bảng 2.6 không có thành phần YG Trường hợp đặc biệt YG ≠ 0 sẽ không được đề cập đến trong đề tài này
- Thông số kiểm tra ổn định thời tiết được thể hiện ở bảng 2.7
Bảng 2.7 Dữ liệu yêu cầu cho kiểm tra ổn định thời tiết NHẬP THÔNG SỐ KIỂM TRA ỔN ĐỊNH THỜI TIẾT
S (m2) XG (m) YG (m) ZG (m) Diện tích hứng gió của cabin 70.5 -7.2 5.7
Trang 33Giải thích:
Diện tích hứng gió của cabin
+ “70.5” Diện tích hứng gió của cabin (m2)
+ “-7.2” Hoành độ tâm diện tích hứng gió của cabin (m)
+ “5.7” Cao độ tâm diện tích hứng gió cabin (m)
Diện tích vây giảm lắc
+ “0” Diện tích vây giảm lắc (m2)
Vùng hoạt động của tàu
+ Vùng hoạt động SII: SII
Vị trí vào nước của tàu
+ “5.5” Tung độ của điểm vào nước
+ “4” Cao độ điểm vào nước
Hầu hết mọi chương trình muốn hoạt động thì phải có dữ liệu, vì vậy việc đầu tiên là phải khai báo dữ liệu trong file dữ liệu “TINHNANG.xlsx” theo mẫu trên Việc khai báo này mang tính thủ công và chỉ là dữ liệu bên ngoài chương trình Để chương trình có thể hiểu và sử dụng được thì phải trải qua giai đoạn lấy dữ liệu từ file dữ liệu
“TINHNANG.xlsx” và gán giá trị trong các ô dữ liệu đến các biến số mà ta đã tạo Lúc này, dữ liệu xem như là được lưu trữ trong bộ nhớ của chương trình thông qua các biến số
Quá trình này được mô tả bằng ngôn ngữ RhinoScript như sau:
Trang 34- Gọi ứng dụng excel chạy và mở file chứa dữ liệu TINHNANG.xlsx
Set objXL = CreateObject ("Excel.Application")
objXL.Visible = True
Call objXL WorkBooks.Open ("D:\CHUONGTRINH\TINHNANG")
- Lấy dữ liệu và gán cho các biến số
Dim Lmax, Bmax, H, KCS, SLS, KCDN, SLDN
Lmax = objXL.Worksheets(1) Cells (3, 4) Value
Bmax = objXL.Worksheets(1) Cells (4, 4) Value
H = objXL.Worksheets(1) Cells (5, 4) Value
KCS = objXL.Worksheets(1) Cells (9, 4) Value
SLS = objXL.Worksheets(1) Cells (10, 4) Value
KCDN = objXL.Worksheets(1) Cells (11, 4) Value
SLDN = objXL.Worksheets(1) Cells (12, 4) Value
Trên đây là cách thức để lấy dữ liệu và gán cho các biến
Trong đó:
Chiều dài lớn nhất có tên biến là “Lmax” được gán giá trị tại ô dữ liệu (3, 4) (hàng 3, cột 4) trong Worksheets1 của file dữ liệu “TINHNANG.xlsx” Tương tự cho chiều rộng lớn nhất có tên biến là “Bmax” được gán giá trị tại ô dữ liệu (4, 4), chiều cao mạn có tên biến là “H” được gán giá trị tại ô dữ liệu (4, 4), khoảng cách sườn có tên biến là “KCS” được gán giá trị tại ô dữ liệu (9, 4), số lượng sườn có tên biến là
“SLS” được gán giá trị tại ô dữ liệu (10, 4), khoảng cách đường nước có tên biến là
“KCDN” được gán giá trị tại ô dữ liệu (11, 4), số lượng đường nước có tên biến là
“SLDN” được gán giá trị tại ô dữ liệu (12, 4)
Ngoài những dữ liệu này, còn một dữ liệu rất quan trọng trong toàn bộ quá trình tính toán là mô hình vỏ tàu 3D Việc nhập kiểu dữ liệu này cho chương trình được mô
tả như sau:
Dim VTTN
Trang 35VTTN = Rhino.GetObject("CHON BE MAT VO TAU TINH TOAN TINH NANG") Trong đó:
“VTTN” là biến số được đặt cho mô hình vỏ tàu 3D thông qua câu lệnh Dim Với cấu trúc này, ta phải click chọn vào mô hình vỏ tàu 3D để thực hiện tính toán tính năng
2.2.2 Tính toán thủy tĩnh
Tính nổi tàu thủy là khả năng tàu nổi cân bằng ở vị trí xác định ứng với chế độ tải đang xét Đây là tính năng hàng hải quan trọng nhất của tàu Trong quá trình thiết kế phải xác định nhanh các yếu tố tính nổi ở các mớn nước tàu thực tế Để giải quyết vấn
đề này, ta có thể tính toán các yếu tố tính nổi ở các mớn nước nằm ngang, tàu cân bằng tức là không có góc nghiêng ngang, nghiêng dọc và xây dựng thành đồ thị thủy tĩnh (hay đồ thị thủy lực)
Đồ thị thủy tĩnh biểu diện các yếu tố tính nổi theo từng mớn nước của tàu bao gồm:
+ Thể tích chiếm nước V + Hệ số mặt đường nước α + Diện tích mặt đường nước Sf + Hệ số mặt cắt ngang β
+ Hoành độ diện tích mặt đường nước Xf + Hệ số béo thể tích δ
Để xác định các yếu tố tính nổi, tiến hành xét một mặt đường nước của tàu có chiều dài L như hình 2.4:
Hình 2.4 Xác định các yếu tố mặt đường nước
Trang 36Các công thức thức xác định các yếu tố của mặt đường nước
- Diện tích mặt đường nước Sf
Trang 37Xét mặt cắt ngang giữa tàu có diện tích ω trong giới hạn chiều chìm T trong mặt phẳng yOz như hình 2.5
mà sẽ dùng các công cụ của Rhino đã lập trình sẵn để tính toán trực tiếp các yếu tố thủy tĩnh theo các công thức trên
Trong chương trình này, khi tính toán thủy tĩnh, chương trình sẽ tự động lấy các giá trị từ các biến số đại diện cho những thông số như: Số lượng đường nước tính toán, khoảng cách giữa các đường nước theo mục 2.2.1
Tiếp theo chương trình sẽ thực hiện các bước tính toán lần lượt như sau: Tạo mặt đường nước, xác định các yếu tố mặt đường nước và gán dữ liệu kết quả tính toán như diện tích mặt đường nước, hoành độ tâm diện tích mặt đường nước đến biến số đại diện cho dữ liệu đồ thị thủy tĩnh, tạo khối 3D phần chìm thân tàu, xác định các yếu tố thể tích và gán dữ liệu kết quả tính toán như thể tích chiếm nước, hoành độ, cao độ tâm nổi đến biến số đại diện cho dữ liệu đồ thị thủy tĩnh Toàn bộ quá trình này được lặp đi lặp lại cho đến khi hết số lượng đường nước xem hình 2.6
Sau tính toán và xây dựng dữ liệu đồ thị thủy tĩnh cho tất cả đường nước, chương trình sẽ tự động chuyển sang giai đoạn vẽ đồ thị và xuất dữ liệu kết quả ra ngược lại file “TINHNANG.xlsx”
Trang 38Hình 2.6 Sơ đồ khối tính toán các yếu tố thủy tĩnh
ĐỌC DỮ LIỆU
TẠO MẶT ĐƯỜNG NƯỚC
HẾT ĐƯỜNG NƯỚC
XÂY DỰNG DỮ LIỆU ĐỒ THỊ
THỦY TĨNH SAI
Trang 392.2.2.1 Đọc dữ liệu
Khi tính toán thủy tĩnh, chương trình sẽ tự động sử dụng các biến số “SLDN”,
“KCDN” theo mục 2.2.1 là các biến đại diện cho khoảng cách đường nước và số lượng đường nước tính toán thủy tĩnh
2.2.2.2 Tạo mặt đường nước
Để xác định các yếu tố mặt đường nước, đầu tiên ta phải tạo mặt phẳng đường nước: Dùng lệnh “Line” vẽ đường thẳng nằm ngang, dọc theo chiều dài tàu và có cao
độ bằng cao độ của đường nước Dùng lệch “Project” để tạo ra đường bao của mặt đường nước, cuối cùng dùng lệnh “PlanarSfr” để tạo mặt phẳng đường nước
Quá trình này được mô tả như sau:
Command: Line
Start of line (BothSides Normal Angled Vertical FourPoint Bisector Perpendicular Tangent Extension):
(Chọn điểm bắt đầu của đường thẳng)
End of line (BothSides):
(Chọn điểm kết thúc của đường thẳng)
Command: Project
Select curves and points to project (Loose=No DeleteInput=No OutputLayer=Current):
(Chọn đường thẳng đại diện cho đường nước)
Select surfaces, polysurfaces and meshes to project onto (Loose=No
DeleteInput=No OutputLayer=Current): Press Enter when done
(Chọn mặt phẳng là bề mặt vỏ tàu, rồi nhấn enter)
Command: _PlanarSrf
Select planar curves to build surface Press Enter when done:
(Chọn đường bao của mặt đường nước, rồi nhấn Enter)
Trang 40Khi viết dưới dạng ngôn ngữ RhinoScript sẽ có dạng như sau:
linedn = Rhino.AddLine(Array (-12000, 0.0, 500), Array (-12000, 0.0, 500)) dbmatduongnuoc = Rhino.ProjectCurveToSurface(linedn, VTTN, Array(0, -1, 0)) matduongnuoc = Rhino.AddPlanarSrf(dbmatduongnuoc)
Trong đó:
Linedn: là đường thẳng đại diện cho đường nước có cao độ 500 mm
dbmatduongnuoc: Đường bao của mặt đường nước 500 mm với bề mặt vỏ tàu VTTN: bề mặt vỏ tàu tính toán tính năng theo mục 2.2.1
Rhino.AddPlanarSrf: Tạo ra mặt phẳng mặt đường nước từ đường bao của mặt đường nước
Kết quả quá trình tạo mặt đường nước được thể hiện ở hình 2.7
Hình 2.7 Kết quả tạo mặt phẳng đường nước 2.2.2.3 Xác định các yếu tố mặt đường nước
Từ mặt phẳng đường nước đã được tạo theo 2.2.2.2, ta dùng các lệnh trong tập lệnh “Mass Properties” như “SurfaceArea”, “SurfaceAreaCentroid”, “AreaMoments”
để xác định các đặc trưng hình học của mặt đường nước
+ Xác định diện tích mặt đường nước Sf