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
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
Trang 3LỜI CAM ĐOANTô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.
Tác giả luận văn
Trần Văn Của
iii
Trang 4LỜI CẢM ƠNSau 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!
Tác giả luận văn
Trần Văn Của
iv
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 1 GIỚI THIỆU ĐỀ TÀI 2
1.2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚ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.3 MỤC TIÊU, ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨ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.4 PHƯƠNG PHÁP NGHIÊN CỨU 6
1.5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN 6
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 7
2.1 NGÔN NGỮ LẬP TRÌNH CHO RHINOCEROS 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
v
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.2 TÍNH TOÁN TÍNH NĂ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.1 CHƯƠNG TRÌNH TÍNH TOÁN TÍNH NĂ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.2 KẾT QUẢ CHẠY CHƯƠNG TRÌ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
vi
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.1 KẾT LUẬ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
vii
Trang 8DANH MỤC KÝ HIỆU
d: Chiều chìm trung bình
I x : 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
I y : 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
ω: Diện tích mặt cắt ngang
viii
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
θ r , θ 1r : Góc lắc
Trang 10B’: Tâm nổi khi tàu nghiêng
KG = Z G : Chiều cao trọng tâm tàu so với mặt phẳng qua đáy tàu.
BM = r 0 : Bán kính tâm nghiêng ngang khi tàu không nghiêng.
Trang 11DANH MỤC CHỮ VIẾT TẮT2D: 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)
dụng trong kĩ thuật đồ họa máy tính để biểu diễn đường cong và bề mặt.) SDK: Software development kit (Bộ công cụ phát triển phần mềm)
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
xii
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
xiii
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 L k 43
Hình 2.23 Sơ đồ khối tính toán patokaren 44
xiv
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
xv
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ị.
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
1
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ứ
2
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:
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à
3
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.
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
4
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:
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
Trang 22- Tính toán tính ổn định tàu thủy.
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:
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:
động hóa vào tính toán tính năng tàu thủy cho phần mềm Rhino.
tính năng tàu thủy bằng ngôn ngữ Rhinoscript trên phần mềm Rhino.
rút ngắn thời gian trong quá trình thiết kế tàu.
giảng viên, sinh viên ngành kỹ thuật tàu thủy.
6
Trang 23CHƯƠNG 2
CƠ SỞ LÝ THUYẾT2.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.
7
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ó cú pháp như sau:
Rhino.Addline array (0,0,0), array (10,5,0).
2.1.2 Các kiểu dữ liệu
Như đã biết, VBScript chỉ có một kiểu khai báo dữ liệu duy nhất được gọi là biến (Variant) Biến được sử dụng trong những ngữ cảnh khác nhau thì sẽ mang một kiểu 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ữ
liệu
Empty
Null
Trang 262.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)
Trang 27sẽ không kiểm tra toán hạng thứ hai và trả về False 9
Ký hiệu Or OrElse Xor
Trong đó <đ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.
Trang 28Sử 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.
10
Trang 29Mẫu 2
If <điều kiện> Then
kiện đúng Else
đ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>
Case Else
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
11
Trang 30<biến đếm> có giá trị trong đoạn [<giá trị đầu>, <giá trị cuối>].
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>
2.1.5.2 Do … Loop
Mẫu 1
Do While <biểu thức logic>
'Các câu lệnh Loop
12
Trang 31Vớ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:
Cấu trúc này kiểm tra <biểu thức logic> trước khi thực hiện các lệnh nên sẽ không thực hiện lần nào nếu ngay lần đầu tiên <biểu thức logic> có trị False. Mẫu 2
Do Untile <biểu thức logic>
'Các câu lệnh Loop
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:
Trong ngôn ngữ lập trình VBScript thủ tục được chia thành hai loại: Sub Procedure, Function Procedure.
13
Trang 322.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
14
Trang 33Cá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 Thông số
Chiều dài lớn nhất Chiều rộng lớn nhất Chiều cao mạn Loại tàu (Gãy góc = 1)
Trang 34Tọa độ ky tàu Khoảng cách sườn Tổng số sườn Khoảng cách đường nước Tổng số đường nước Khoảng cách cắt dọc Tổng số cắt dọc
Giải thích: Loại tàu
Bảng 2.6 Thông số trường hợp tải trọng NHẬP TRƯỜNG HỢP TẢI TRỌNG
Trường hợp 1 Trường hợp 2 Trường hợp 3 Trường hợp 4 Trường hợp 5
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 Y G = 0 nên trong bảng 2.6 không có thành phần
Y G Trường hợp đặc biệt Y G ≠ 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
Diện tích hứng gió của cabin
Diện tích vây giảm lắc
Vùng hoạt động
Vị trí vào nước của tàu
Trang 35Giải thích:
Diện tích hứng gió của cabin
Diện tích vây giảm lắc
SII Vị trí vào nước của tàu
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:
17
Trang 36- 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
18
Trang 37VTTN = 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 S f + Hệ số mặt cắt ngang β
+ Hoành độ diện tích mặt đường nước X f + Hệ số béo thể tích δ
+ Cao độ tâm nổi Z B + Bán kính nghiêng dọc R + Hoành độ tâm nổi X B + Bán kính nghiêng ngang r
Để 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
19 Các công thức thức xác định các yếu tố của mặt đường nước
Trang 38- Diện tích mặt đường nước S f
yOz và xOy tính theo diện tích mặt cắt ngang.
Trang 39R = I yf /V
Trang 40Xé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.
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”.
21