You are on page 1of 61

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƢỜNG ĐẠI HỌC BÁCH KHOA


KHOA CƠ KHÍ
BỘ MÔN CƠ ĐIỆN TỬ
---------------O0O---------------

LUẬN VĂN TỐT NGHIỆP

THIẾT KẾ HỆ THỐNG TẠO SÓNG BIỂN 2D

SVTH: Nguyễn Hồng Quân


MSSV: 20402050
GVHD: PGS.TS Nguyễn Tấn Tiến

Tp HCM, tháng 6/2009


LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

LỜI CẢM ƠN
Luận văn này sẽ không thể hoàn thành nếu tôi không nhận đƣợc sự giúp đỡ, chỉ bảo tận tình
của các thầy cô, bạn bè và sự khích lệ của ngƣời thân. Bởi vậy, trƣớc khi công khai thành quả
lao động này, tôi xin gửi lời cảm ơn chân thành sâu sắc đến những con ngƣời mà nếu không
có sự giúp đỡ của họ, tôi không biết là đến chừng nào tập luận văn này mới đƣợc ra đời.

Trƣớc hết, ngƣời có quan hệ gần gũi, có nhiều giúp đỡ trực tiếp nhất trong quá trình làm luận
văn là thầy hƣớng dẫn của tôi, thầy Nguyễn Tấn Tiến.

Kế đến, xin cảm ơn tất cả các thầy cô đã tham gia giảng dạy và quản lý lớp Việt – Pháp. Rất
nhiều mà tôi không thể kể tên ra hết ở đây.

Xin cảm ơn những ngƣời bạn ở Phòng Thí nghiệm đã có những góp ý, giúp đỡ trong quá trình
chế tạo thiết bị: anh Ngọc, Hạnh, anh Vinh.

Cảm ơn những ngƣời bạn cùng lớp Việt – Pháp đã giúp đỡ tôi trong quá trình học tập trƣớc
khi tiến đến làm luận văn này.

Xin cảm ơn các y bác sĩ BV Trƣng Vƣơng và Phạm Ngọc Thạch đã giúp tôi lấy lại sức khỏe
khi tôi lâm bệnh ngay trong quá trình làm luận văn.

Và không thể không kể đến sự động viên, khích lệ, giúp đỡ về vật chất của cha mẹ, anh em và
các ngƣời thân của tôi. Đây chính là chỗ dựa của tôi trong khi đang làm luận văn này.

i
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

TÓM TẮT LUẬN VĂN

Việc tạo sóng bằng cách sử dụng một máy tạo sóng (wave maker) trong một bể thử
nghiệm đã trở thành một công nghệ quan trọng trong lĩnh vực kỹ thuật bờ biển và đại dƣơng.
Máy tạo sóng không chỉ có mặt trong các bể thử nghiệm, trong các công cụ đo lƣờng trong
phòng thí nghiệm mà còn hiện diện dƣới dạng tƣơng đồng lý thuyết khắp nơi trong tự nhiên.
Đó là sự tạo sóng trên mặt sông, mặt biển do gió, do động vật bơi lội, do địa chấn, núi lửa
v.v…

Trên thế giới, lý thuyết sóng và hẹp hơn là lý thuyết máy tạo sóng đã đƣợc nghiên cứu
từ lâu, đã đào sâu đến những trƣờng hợp phức tạp; nhiều máy tạo sóng từ nhỏ đến lớn, từ đơn
giản đến phức tạp cũng đã đƣợc chế tạo. Bài luận văn này không có tham vọng “chế tạo lại
bánh xe” mà chỉ mong muốn góp phần vào những hoạt động nghiên cứu muôn hƣớng muôn
ngành ở bậc đại học, với đề tài có thể coi là ở những bƣớc khởi đầu của việc nghiên cứu máy
tạo sóng, đó là tìm hiểu lý thuyết việc tạo sóng đều, hai chiều bằng lý thuyết sóng tuyến tính
và chế tạo một thiết bị thực nghiệm tạo sóng đơn giản. Luận văn này còn bao gồm việc xây
dựng bài toán mô hình hóa, thực hiện tính toán mô phỏng trên máy tính bằng chƣơng trình tự
viết và so sánh với dữ liệu thu thập đƣợc từ thiết bị thực nghiệm đã chế tạo.

ii
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

MỤC LỤC

I. Giới thiệu ............................................................................................................................... 1


II. Lý thuyết máy tạo sóng đối với sóng phẳng tạo bởi mái giầm......................................... 5
1. Các bài toán giá trị biên ................................................................................................ 6
2. Nghiệm bài toán giá trị biên tuyến tính hóa cho trƣờng hợp đáy phẳng ngang .......... 11
III. Mô hình hóa toán học ...................................................................................................... 21
1. Tính số sóng ................................................................................................................ 21
2. Tìm phạm vi ảnh hƣởng của những sóng dừng........................................................... 22
3. Tính độ dâng sóng nƣớc .............................................................................................. 22
IV. Kết quả mô phỏng ............................................................................................................ 25
V. Thực nghiệm....................................................................................................................... 29
1. Thiết bị thí nghiệm ...................................................................................................... 29
2. Phƣơng pháp đo .......................................................................................................... 33
3. Kết quả đo ................................................................................................................... 44
4. Nhận xét ...................................................................................................................... 46
Tham khảo .............................................................................................................................. 48
Phụ lục ..................................................................................................................................... 49
Chƣơng trình mô phỏng tính toán sóng nƣớc sinh ra bởi máy tạo sóng có mái giầm .... 49

iii
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

DANH SÁCH HÌNH ẢNH

Hình Trang

Hình 1.1 ...................................................................................................................................... 2

Hình 1.2, Hình 1.3 ...................................................................................................................... 3

Hình 1.4, Hình 1.5 ...................................................................................................................... 4

Hình 2.1 ...................................................................................................................................... 5

Hình 2.2 ...................................................................................................................................... 8


Hình 2.3, Hình 2.4 .................................................................................................................... 17
Hình 2.5 .................................................................................................................................... 20
Hình 4.1, Hình 4.2. ................................................................................................................... 26
Hình 4.3, Hình 4.4. ................................................................................................................... 27
Hình 5.1. ................................................................................................................................... 29
Hình 5.2. ................................................................................................................................... 30
Hình 5.3, Hình 5.4. ................................................................................................................... 31
Hình 5.5, Hình 5.6. ................................................................................................................... 32
Hình 5.7. ................................................................................................................................... 33
Hình 5.8. ................................................................................................................................... 35
Hình 5.9. ................................................................................................................................... 36
Hình 5.10, Hình 5.11. ............................................................................................................... 37
Hình 5.12, Hình 5.13. ............................................................................................................... 38
Hình 5.14, Hình 5.15. ............................................................................................................... 39
Hình 5.16. ................................................................................................................................. 40
Hình 5.17, Hình 5.18. ............................................................................................................... 41
Hình 5.19. ................................................................................................................................. 42
Hình 5.20, Hình 21. .................................................................................................................. 43
Hình 5.22, Hình 5.23, Hình 24. ................................................................................................ 45
Hình 5.25, Hình 5.26. ............................................................................................................... 46

iv
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

DANH SÁCH BẢNG BIỂU

Bảng Trang

Bảng 2.1 .................................................................................................................................... 12

Bảng 4.1 .................................................................................................................................... 24

Bảng 5.1 .................................................................................................................................... 47

Bảng 5.2 .................................................................................................................................... 48

v
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

I. GIỚI THIỆU [1][2][3]

Việc tạo sóng bằng cách sử dụng một máy tạo sóng (wave maker) trong một bể thử
nghiệm đã trở thành một công nghệ quan trọng trong lĩnh vực kỹ thuật bờ biển và đại dƣơng.
Ngày nay hầu hết những thử nghiệm trong phòng thí nghiệm những cấu trúc nổi hay cấu trúc
có gài dƣới đáy và nghiên cứu biên dạng bờ biển cũng nhƣ những hiện tƣợng liên quan đều
dùng đến bể sóng. Bể này thƣờng có dạng hẹp, dài với một máy tạo sóng loại nào đó ở một
đầu và đầu kia là bờ triệt sóng; tuy nhiên những bờ triệt sóng dạng vành tròn cũng đƣợc đƣa
vào sử dụng khi ngƣời ta cần nghiên cứu về sự bồi tích bờ biển và lúc đó máy tạo sóng dạng
xoắn ốc đƣợc dùng để tạo sóng. Trọng mọi loại thử nghiệm này, máy tạo sóng đóng vai trò rất
quan trọng. Chuyển động sóng mà nó gây ra và yêu cầu về năng lƣợng của nó có thể đƣợc xác
định một cách khá đầy đủ từ lý thuyết sóng tuyến tính.

Máy tạo sóng trong thực tế hiện diện rộng khắp hơn mức ngƣời ta trông đợi. Sự kích
thích của những cơn động đất dƣới đáy biển hay những công trình nhận tạo có thể gây ra sóng
mà ngƣời ta có thể ƣớc lƣợng dựa vào lý thuyết sóng, thực tế, tải trọng áp lên các cấu trúc có
thể xác định đƣợc. Bất kỳ vật thể chuyển động trong dòng chất lỏng có mặt thoáng đều phát
sinh sóng: những con vịt, những chiếc thuyền và nhiều thứ khác nữa. Máy tạo sóng còn đƣợc
dùng trong những bể sóng thí nghiệm để đo đạc những tác động do sóng gây nên đối với
những loại kết cấu và tàu bè khác nhau, bao gồm các chủng loại tàu, những cấu trúc nền ngoài
khơi và các vật thể khác.

Lý thuyết về sóng đã thu hút nhiều nhà khoa học thuộc lĩnh vực Cơ học chất lƣu và
Toán ứng dụng trong ít nhất một thế kỷ rƣỡi qua và là một nguồn những đề tài toán học đầy
hứng khởi và cũng thƣờng là khó khăn. Ngoài tầm quan trọng trong những phân ngành kỹ
thuật và khoa học ứng dụng khác nhau ra, nhiều hiện tƣợng sóng nƣớc còn xảy ra trong những
trải nghiệm hàng ngày. Sóng phát sinh bởi tàu trên sông và sóng phát sinh bởi gió hay động
đất chính là những ví dụ thân thuộc nhất. Những lý thuyết toán học về sóng nƣớc bao gồm
những phƣơng trình cơ học chất lƣu, khái niệm lan truyền sóng và vai trò then chốt của các
điều kiện biên. Những kết quả thu đƣợc từ lý thuyết có thể đƣa ra vài giải thích về một hiện
tƣợng tự nhiên hay cung cấp một bản mô tả có thể đƣợc kiểm tra bất cứ chỗ nào mà sự mở
rộng của nƣớc còn trong tầm tay: một con sông hoặc một cái ao, đại dƣơng hay thậm chí một
cái bồn tắm, chậu rửa trong nhà. Tuy nhiên, việc đạt đƣợc một sự thấu hiểu những cơ chế vật
lý xác đáng đang đặt ra một thách thức lớn cho các nhà cơ học chất lƣu và toán học ứng dụng.

1
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Trong ứng dụng thực tế, đƣợc sử dụng nhiều nhất là hai loại máy tạo sóng có dùng mái
giầm với hai kiểu chuyển động. Những máy tạo sóng này đƣợc gọi tên theo kiểu chuyển động
của giầm là máy tạo sóng kiểu piston và kiểu bản lề.

Dƣới đây là một số hình ảnh các máy tạo sóng:

Hình 1.1. Một máy tạo sóng kiểu piston (HR Wallingford Ltd)

2
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 1.2. Máy tạo sóng nhiều phần tử của HR Wallingford

Hình 1.3. Máy tạo sóng kiểu bản lề của Edinburgh Designs Ltd

3
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 1.4. Một số máy tạo sóng 3D của DHI Group

Hình 1.5. Một hồ thử nghiệm có sử dụng máy tạo sóng

4
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

II. LÝ THUYẾT MÁY TẠO SÓNG ĐỐI VỚI SÓNG PHẲNG TẠO BỞI
MÁI GIẦM [1]

Các giả thiết:

1) Dòng chất lỏng không nén đƣợc và không xoáy. Phần nƣớc bị dịch chuyển bởi máy
tạo sóng thì bằng với thể tích phần đỉnh sóng.

2) Mái giầm chuyển động với biên độ nhỏ và sóng có độ cao nhỏ.

3) Sóng lan truyền theo hƣớng ra vô cực. Ta có thể đạt đƣợc sự tƣơng đƣơng bằng
cách dùng vật hấp thụ sóng ở đầu kia của bể.

a)

b)

Hình 2.1. Sơ đồ hai kiểu mái giầm máy tạo sóng: kiểu piston (a) và kiểu bản lề (b)

5
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

1. CÁC BÀI TOÁN GIÁ TRỊ BIÊN

Để thành lập công thức cho bài toán sóng nƣớc biên độ nhỏ, ta cũng nên xem lại khái
quát cấu trúc của những bài toán giá trị biên mà bài toán đang khảo sát là một ví dụ. Nhiều bài
toán vật lý cổ điển và hầu hết những bài toán giải tích trong kỹ thuật có thể đƣợc đặt ra nhƣ
một bài toán điều kiện biên; tuy nhiên trong một vài sự khai triển điều này có thể không hiển
hiện rõ ràng.

Sự thành lập công thức một bài toán giá trị biên đơn giản là sự phát biểu dƣới dạng các
số hạng toán học của trạng thái vật lý mà chỉ có một nghiệm duy nhất tồn tại. Việc này thông
thƣờng bao gồm việc thiết lập trƣớc hết một vùng khảo sát và xác định một phƣơng trình vi
phân phải đƣợc thỏa mãn trong vùng đó. Thƣờng thì có vô số nghiệm cho phƣơng trình vi
phân và nhiệm vụ còn lại là chọn trong số đó một hoặc vài nghiệm phù hợp với bài toán vật lý
đang nghiên cứu. Sự lựa chọn này đƣợc thực hiện thông qua các điều kiện biên, tức là loại bỏ
những nghiệm nào không tƣơng thích với những điều kiện này.

Ngoài những điều kiện biên không gian (hay hình học), còn có những điều kiện biên
thời gian để xác định trạng thái của biến tại một vài điểm theo thời gian. Điều kiện thời gian
này đƣợc gọi là “điều kiện đầu”. Nếu chúng ta quan tâm đến sóng nƣớc, vốn tuần hoàn trong
không gian, thì chẳng hạn ta có thể chỉ định rằng sóng lan truyền theo hƣớng và tại thời
điểm , đỉnh sóng đƣợc định vị tại .

Phƣơng trình vi phân chi phối (The Governing Differential Equation)

Với giả thiết chất lỏng không xoáy và không nén đƣợc, một thế vận tốc tồn tại và thỏa
mãn phƣơng trình liên tục

hay

Phân kỳ của một gradient dẫn tới phƣơng trình Laplace, phải có hiệu lực xuyên suốt
dòng chất lỏng

6
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Phƣơng trình Laplace xảy ra trong nhiều lĩnh vực của vật lý và kỹ thuật và cũng đã có
nhiều cách giải nghiệm cho phƣơng trình này (ví dụ sách của Bland, 1961), do đó chỉ cần
chọn một cách giải áp dụng đƣợc cho trƣờng hợp chuyển động của sóng nƣớc riêng biệt đang
xét.

Ngoài ra, đối với dòng chất lỏng không phân kỳ và không xoáy, phƣơng trình Laplace
còn áp dụng cho hàm dòng. Sự không nén đƣợc hay tƣơng đƣơng là điều kiện không phân kỳ
cho hai chiều đảm bảo sự tồn tại của một hàm dòng mà từ đó có thể xác định đƣợc những vận
tốc phía dƣới sóng. Thay những vận tốc này vào điều kiện không xoáy lần nữa lại cho ra
phƣơng trình Laplace, ngoại trừ lần này là với hàm dòng

hay

Phƣơng trình này phải có hiệu lực xuyên suốt dòng chất lỏng. Nếu chuyển động là xoáy đƣợc
nhƣng không ma sát thì phƣơng trình chi phối sẽ là

Trong đó là vận tốc xoáy.

Một vài bình luận về hàm thế vận tốc và hàm dòng có thể giúp ích trong việc đạt đƣợc
sự thông hiểu tốt hơn trong những áp dụng sau này. Thứ nhất, nhƣ đã đề cập trƣớc, thế vận
tốc có thể đƣợc xác định với cả hai và ba chiều trong khi việc xác định hàm dòng trong ba
chiều chỉ làm đƣợc nếu dòng là đối xứng (trong trƣờng hợp này mặc dù dòng chảy xảy ra
trong ba chiều nhƣng một cách toán học thì vẫn hai chiều). Do đó, hàm dòng có ứng dụng tốt
nhất trong trƣờng hợp chuyển động sóng xảy ra trên một mặt phẳng. Thứ hai, phƣơng trình
Laplace thì tuyến tính, tức là nó không liên quan đến những số hạng tích và do đó có những
tính chất thú vị và đáng giá của sự chồng chập, có nghĩa là nếu , đều thỏa mãn phƣơng
trình Laplace thì cũng là nghiệm đúng phƣơng trình, trong đó , là
những hằng số bất kỳ. Nhƣ vậy ta có thể cộng thêm hay trừ bớt các nghiệm để xây dựng nên
những nghiệm áp dụng đƣợc cho những bài toán khảo sát khác nhau.

Trong trƣờng hợp bài toán máy tạo sóng này, ta có sơ đồ phƣơng trình chi phối và các
điều kiện biên nhƣ Hình 2.2:

7
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 2.2. Bài toán điều kiện biên sóng nước hai chiều

Vì bài toán chỉ xét sóng hai chiều nên phương trình chi phối (governing equation) thế
vận tốc là phƣơng trình Laplace chỉ liên quan đến hai tọa độ nhƣ sau:

(2.1)

1.1. Điều kiện biên động học (Kinematics boundary conditions)


Tại bất kỳ mặt biên nào, cố định nhƣ mặt đáy hay tự do nhƣ mặt nƣớc, cũng phải thỏa
mãn một số điều kiện vật lý xác định bởi vận tốc dòng chất lỏng. Những điều kiện trên động
học hạt nƣớc này đƣợc gọi là những điều kiện biên động học (kinematic boundary conditions).
Tại bất kỳ vùng mặt hay giao diện chất lỏng, rõ ràng là không có dòng chất lỏng chảy xuyên
qua giao diện vì nếu có thì sẽ chẳng có giao diện.

Biểu thức toán học của điều kiện biên động học có thể dẫn ra từ phƣơng trình mô tả
vùng mặt cấu thành nên mặt biên. Bất kỳ vùng mặt cố định hay chuyển động đều có thể đƣợc
diễn tả bằng biểu thức toán học có dạng . Nếu mặt đó biến động theo thời
gian nhƣ mặt nƣớc thì đạo hàm toàn phần của mặt đối với thời gian sẽ bằng không tại mặt.
Nói cách khác, nếu ta di chuyển cùng với mặt thì ta thấy nó không thay đổi.

(2.2a)

hay

(2.2b)

8
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

trong đó vector đơn vị vuông góc với mặt (vector pháp tuyến) đƣợc định nghĩa
và là vector trƣờng vận tốc với ba thành phần .
Điều kiện biên động học đƣợc sắp xếp lại thành

(2.3)

trong đó

Điều kiện này đòi hỏi thành phần vận tốc vuông góc với bề mặt phải liên quan đến vận
tốc địa phƣơng của mặt. Nếu mặt không đổi theo thời gian thì , có nghĩa là thành
phần vận tốc vuông góc với mặt thì bằng 0.

1.2. Điều kiện biên đáy (The Bottom Boundary Condition - BBC)
Mặt biên phía dƣới của vùng khảo sát của ta đƣợc mô tả bằng (đáy nằm ngang)
cho trƣờng hợp hai chiều trong đó gốc tọa độ ở mức nƣớc tĩnh và là độ sâu. Nếu đáy không
thấm qua đƣợc, ta mong đợi , bởi vì đáy không chuyển động theo thời gian.

Phƣơng trình mặt đáy là . Do vậy

(2.4)

1.3. Điều kiện biên động học mặt thoáng (Kinematic Free Surface Boundary
Condition - KFSBC)
Mặt thoáng của sóng có thể đƣợc mô tả là , trong đó
là độ dịch chuyển của mặt thoáng quanh mặt phẳng ngang . Điều kiện biên động học tại
mặt thoáng là

(2.5)

9
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

trong đó

Thực hiện phép nhân vô hƣớng ta đƣợc

(2.6)

1.4. Điều kiện biên động lực học mặt thoáng (Dynamic Free Surface Boundary
Condition)
Một đặc điểm khác biệt của những bề mặt cố định (trong không gian) là chúng có thể
chịu đƣợc sự thay đổi áp suất. Tuy nhiên, bề mặt tự do nhƣ giao diện không khí – nƣớc,
không thể chịu đƣợc biến thiên áp suất (bỏ qua lực căng mặt ngoài) xuyên qua giao diện và do
vậy phải có đáp ứng để duy trì áp suất đều khắp. Nhƣ thế phải có một điều kiện biên thứ hai,
gọi là điều kiện biên động học, trên bất kỳ mặt thoáng hay giao diện để định phân bố áp suất
ép lên mặt biên này.

Bởi vì điều kiện biên động lực học là một yêu cầu để áp suất trên mặt thoáng là đồng
đều dọc theo dạng sóng, phƣơng trình Bernoulli với áp dụng trên mặt thoáng
nhƣ sau

(2.7)

trong đó p là hằng số và đƣợc lấy theo áp suất tƣơng đối,

1.5. Điều kiện biên bên (Lateral Boundary Conditions)


Xét một mái giầm thẳng đứng hoạt động nhƣ một máy tạo sóng trong một bể sóng. Nếu
độ dịch chuyển của mái giầm đƣợc mô tả bằng , điều kiện biên động học là

10
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

trong đó

hay, tiến hành phép nhân vô hƣớng

(2.8)

Điều kiện này đòi hỏi các hạt chất lỏng tại vách di động cũng phải đi theo vách.

2. NGHIỆM BÀI TOÁN GIÁ TRỊ BIÊN TUYẾN TÍNH HÓA CHO TRƢỜNG
HỢP ĐÁY PHẲNG NGANG

2.1. Giải nghiệm phƣơng trình Laplace


Một phƣơng pháp thuận tiện để giải phƣơng trình vi phân riêng phần đƣợc gọi là tách
biến. Với trƣờng hợp của ta:

(2.9)

Với sóng tuần hoàn theo thời gian, ta có . Thế vận tốc bây giờ có dạng:

(2.10)

Thế vào phƣơng trình Laplace và chia cho ta đƣợc:

(2.11)

Rõ ràng, số hạng thứ nhất của phƣơng trình phụ thuộc vào một mình biến , trong khi
số hạng thứ hai chỉ phụ thuộc biến . Nếu ta xét sự biến thiên của trong khi giữ không đổi
thì số hạng thứ hai có thể biến thiên trong khi số hạng thứ nhất thì không. Việc này sẽ cho ra
một tổng khác không bên vế trái phƣơng trình (2.11) và nhƣ vậy phƣơng trình không đƣợc
nghiệm đúng. Cách duy nhất để phƣơng trình giữ đƣợc cân bằng là mỗi số hạng cùng bằng
một hằng số nhƣng trái dấu, tức là

11
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

(2.12a)

(2.12b)

Thực tế việc gán một hằng số âm cho số hạng của là không quan trọng bởi vì ta cho
phép hằng số phân tách có một giá trị ảo trong bài toán này và một cách tổng quát, hằng số
phân tách có thể là số phức.

Phƣơng trình (2.12) bây giờ bao gồm những phƣơng trình vi phân thƣờng có thể đƣợc
giải riêng. Ba trƣờng hợp có thể có bây giờ sẽ đƣợc kiểm tra dựa trên kiểu số của , đó là
trƣờng hợp thực, và thuần ảo. Bảng 2.1 liệt kê các trƣờng hợp riêng này (chú ý
rằng nếu bao gồm phần thực và ảo, điều này có thể hàm ý rằng độ cao sóng thay đổi theo
khoảng cách, điều này xảy ra trong trƣờng hợp sóng lan truyền với sự giảm chấn hay sóng
tăng cƣờng nhờ gió).

Bảng 2.1 Nghiệm có thể có của phƣơng trình Laplace, dựa trên phƣơng pháp tách biến

Tính chất của hằng số phân Các phƣơng trình vi phân


Nghiệm
tách k thƣờng

Thực

Ảo

12
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

2.2. Tuyến tính hóa điều kiện biên động lực học mặt thoáng
Phƣơng trình Bernoulli phải đƣợc thỏa mãn trên là mặt mà phƣơng trình của
nó là chƣa xác định. Một phƣơng pháp thuận tiện đƣợc dùng để đánh giá điều kiện là đánh giá
nó trên bằng cách khai triển giá trị của điều kiện tại (vị trí đã biết) bằng
chuỗi Taylor giản lƣợc:

trong đó trên .
Bây giờ với sóng vô cùng nhỏ, nhỏ, do đó có thể coi vận tốc và áp suất là nhỏ, nhƣ
thế tích của những biến này lại càng nhỏ: , hay . Nếu ta bỏ qua những
số hạng nhỏ này thì phƣơng trình Bernoulli đƣợc viết lại nhƣ sau

Kết quả của tuyến tính hóa điều kiện biên động lực học mặt thoáng liên hệ độ dịch
chuyển tức thời của mặt thoáng với tốc độ thay đổi theo thời gian của thế vận tốc.

Do định nghĩa của ta, sẽ có trung bình bằng không theo thời gian cũng nhƣ không
gian nên , nhƣ vậy

(2.13)

2.3. Tuyến tính hóa điều kiện biên động học mặt thoáng
Sử dụng khai triển chuỗi Taylor để liên hệ điều kiện biên tại độ dâng chƣa biết
với , ta có

13
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Lần nữa ta chỉ giữ lại những số hạng nào tuyến tính đối với những thông số nhỏ, , ,
và lƣu ý rằng không phải là hàm số của , điều kiện biên động học mặt thoáng cho ra:

(2.14a)

hay

(2.14b)

3. ÁP DỤNG CHO SÓNG PHẲNG SINH RA BỞI MỘT MÁI GIẦM

Nhắc lại các điều kiện biên:

Dạng tuyến tính hóa của điều kiện biên động lực học và động học:

(2.15)

(2.16)

Điều kiện biên đáy là điều kiện không có dòng chảy xuyên qua

(2.17)

Đối với điều kiện biên bên, theo hƣớng x dƣơng, bởi vì x lớn dần, ta đòi hỏi sóng lan
truyền ra xa nhằm tận dụng điều kiện biên phát xạ (Sommerfield, 1964). Tại , điều kiện
động học phải đƣợc thỏa mãn trên máy tạo sóng. Nếu là sải giầm của máy tạo sóng thì
độ dịch chuyển ngang là

(2.18)

trong đó là tần số của máy tạo sóng.

Phƣơng trình mô tả bề mặt máy tạo sóng là

14
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

(2.19)

Điều kiện biên động học tổng quát

(2.20)

trong đó and . Thế ta đƣợc

(2.21)

Với độ dịch chuyển nhỏ và vận tốc nhỏ, ta có thể tuyến tính hóa phƣơng trình này bằng
cách bỏ qua số hạng thứ hai bên vế trái.

Cũng nhƣ ở mặt thoáng, sẽ thuận tiện hơn nếu ta diễn tả điều kiện tại biên bên di động
theo vị trí trung bình của nó . Để làm điều này ta khai triển điều kiện thành chuỗi
Taylor:

(2.22)

Rõ ràng, chỉ có số hạng đầu tiên trong chuỗi là tuyến tính đối với u và S(z), còn lại sẽ
đƣợc bỏ qua vì giả thiết là chúng rất nhỏ. Nhƣ thế thì điều kiện biên bên cuối cùng là

(2.23)

Bây giờ bài toán giá trị biên đã đƣợc xác định, mọi nghiệm có thể có của phƣơng trình
Laplace đều đƣợc kiểm tra để xác định xem chúng có thỏa mãn điều kiện biên hay không.
Tham khảo lại Bảng 2.1 ta tìm ra đƣợc dạng biểu thức hàm thế vận tốc tổng quát thỏa mãn
điều kiện biên đáy:

15
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

(2.24)

Khi sử dụng máy tạo sóng để tạo ra sóng nƣớc, bên cạnh sóng tiến (progressive wave)
mong muốn, còn có sự xuất hiện của nhiều sóng dừng (standing wave) chóng tan. Những chỉ
số , của chỉ ra phần đó của gắn với sóng tiến ( ) hay sóng dừng ( ).

Với bài toán máy tạo sóng thì A phải bằng không bởi vì không thể có dòng chảy đồng
nhất qua máy tạo sóng và B có thể đƣợc cho bằng 0 mà không ảnh hƣởng đến trƣờng vận tốc.
Những số hạng còn lại phải thỏa mãn hai điều kiện biên mặt thoáng tuyến tính hóa, kết hợp từ
cả hai điều kiện (động lực học và động học). Điều kiện này là

(2.25)

có đƣợc bằng cách khử độ dâng mặt thoáng từ phƣơng trình (2.15) và (2.16). Thế biểu thức
nghiệm vừa nãy vào điều kiện này cho ta:

(2.26)

(2.27)

Phƣơng trình thứ nhất là quan hệ tán sắc đối với sóng tiến, trong khi phƣơng trình thứ
hai, liên hệ giữa và tần số của máy tạo sóng, xác định số sóng của các sóng dừng mà biên
độ của nó giảm theo hàm mũ theo khoảng cách từ máy tạo sóng. Viết lại hai phƣơng trình trên
thành

(2.28)

Nghiệm của những phƣơng trình này có thể trình bày bằng đồ thị nhƣ Hình 2.3 và 2.4

16
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 2.3. Nghiệm phương trình tán sắc của sóng tiến

Hình 2.4. Nghiệm phương trình tán sắc của sóng dừng chóng tan

Phƣơng trình thứ nhất chỉ có một nghiệm hay nói cách khác chỉ có một giá trị với
và cho trƣớc trong khi rõ ràng là có vô số nghiệm cho phƣơng trình thứ hai mà tất cả đều có
thể đƣợc nhận. Điều này có nghĩa là có tồn tại một sóng tiến và vô số sóng dừng. Mỗi nghiệm
sẽ đƣợc ký hiệu , trong đó là một số nguyên. Dạng thức cuối cùng của kết quả bài
toán giá trị biên sẽ nhƣ sau:

17
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

(2.29)

Số hạng thứ nhất ( ) diễn tả một sóng tiến, tạo bởi máy
tạo sóng, trong khi chuỗi ở số hạng thứ hai ( ) là
những sóng dừng dần tan biến khi ra xa khỏi máy tạo sóng.

Để xem thử những sóng dừng suy giảm nhanh đến mức nào trên hƣớng , ta sẽ kiểm tra
số hạng đầu tiên của chuỗi, cái mà tan biến chậm nhất. Từ Hình 2.4 ta thấy lƣợng phải
lớn hơn nhƣng ta có thể tạm coi , nhƣ thế độ suy giảm của sóng dừng lớn

hơn . Với , , với , nó bằng 0.009. Do vậy số hạng thứ nhất


trong chuỗi có thể đƣợc bỏ qua từ nơi cách máy tạo sóng hai đến ba lần độ sâu.

Để có một bài giải đầy đủ, và phải đƣợc xác định. Điều này đƣợc thực hiện nhờ
điều kiện biên bên tại máy tạo sóng

hay

(2.30)

Bây giờ ta có một hàm của bằng với một chuỗi các hàm lƣợng giác của z bên vế phải,
tƣơng tự trƣờng hợp chuỗi Fourier. Trong thực tế, tập hợp những hàm
lập nên một chuỗi điều hòa hoàn toàn gồm những hàm
trực giao và do đó bất kỳ hàm liên tục nào cũng có thể khai triển qua chúng1. Do vậy để tìm

1
Điều này đƣợc suy ra từ định lý Sturm – Liouville. Sự trực giao có thể đƣợc chứng minh bằng cách chỉ ra rằng
những tích phân sau đây bằng không
;

18
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

, phƣơng trình trên đƣợc nhận với và lấy tích phân từ đến 0. Nhờ tính
trực giao của những hàm này mà những số hạng của chuỗi không có đóng góp gì và vì vậy

(2.31)

Nhân phƣơng trình (2.30) với và tích phân trên chiều sâu cho ta

(2.32)

Tùy vào dạng hàm của mà những hệ số có thể thu đƣợc không mấy khó khăn. Với
trƣờng hợp đơn giản máy tạo sóng kiểu piston hay bản lề, đƣợc xác đinh bởi

(2.33)

Vì thế

(2.34)

(2.35)

Chiều cao của sóng tiến đƣợc xác định bằng cách đánh giá ở khoảng cách xa so với
máy tạo sóng.

19
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

(2.36)

Thay thế , ta có thể tìm đƣợc tỉ số giữa chiều cao sóng và sải giầm:

(2.37)

(2.38)

Năng lƣợng cần thiết để tạo những sóng này có thể thu đƣợc bằng cách xác định dòng
năng lƣợng chảy ra xa khỏi máy tạo sóng:

(2.39)

trong đó E là năng lƣợng trung bình toàn phần trên một đơn vị diện tích

(2.40)

là vận tốc pha và với là vận tốc nhóm:

(2.41)

Hình 2.5 Vận tốc nhóm và vận tốc pha

20
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

III. MÔ HÌNH HÓA TOÁN HỌC

Bài toán mô hình này bao gồm:

Với độ cao sóng, chu kỳ cho trƣớc của sóng nƣớc mong muốn, tính số sóng, bƣớc
sóng và sải giầm của máy tạo sóng để tạo ra sóng.

Tìm khoảng cách mà từ đó trở đi những sóng dừng chóng tan có thể bỏ qua đƣợc.

Tính độ dâng của sóng nƣớc tại nhiều vị trí, có kể đến những sóng dừng tại những nơi
mà những ảnh hƣởng còn đáng kể.

1. TÍNH SỐ SÓNG

Các thông số cho trƣớc: độ cao sóng mong muốn , chu kỳ (do đó tần số góc
) và độ sâu của bể .

Những số sóng của sóng tiến và các sóng dừng đƣợc tính từ phƣơng trình tán sắc (2.26)
và (2.27)

trong đó phƣơng trình đầu tiên có nghiệm duy nhất , còn phƣơng trình thứ hai thì có nhiều
nghiệm nhƣng ta chỉ cần tìm vài nghiệm nhỏ nhất, để thuận tiện ta chọn ba nghiệm, bởi vì
biên độ sóng dừng giảm theo với tốc độ hàm mũ.

Những phƣơng trình này phi tuyến và có thể giải đƣợc bằng phƣơng pháp số nhờ một
hàm của ngôn ngữ lập trỉnh, ví dụ hàm scipy.optimize.fsolve() của Python, vốn là
wrapper của giải thuật hybrd và hybrj của MINPACK, gói thƣ viện tính toán số viết bằng
FORTRAN.

Trong khi các bƣớc tính toán lặp để tìm đƣợc nghiệm số gần đúng có thể giao cho máy
tính thực hiện thì giá trị ƣớc lƣợng ban đầu để xuất phát vòng lặp phải do con ngƣời chọn lựa
để việc tính toán chóng ra kết quả. Đối với việc tìm , ta có thể tận dụng công thức gần đúng
đƣợc đề nghị bởi Fenton và McKee (1989) cho bƣớc sóng:

21
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

trong đó và .

Còn với , ba ƣớc lƣợng đầu của ba nghiệm , , có thể đƣợc suy luận
từ Hình 2.3. Chúng lần lƣợt là , , .

Sải giầm của máy tạo sóng có thể đƣợc tính bằng cách dùng (2.37) và (2.38)

2. TÌM PHẠM VI ẢNH HƢỞNG CỦA NHỮNG SÓNG DỪNG

Để chọn một chiều dài thích hợp cho bể, ta phải xác định phạm vi còn hiệu lực của sóng
dừng. Ta biết rằng biên độ sóng dừng suy giảm theo hàm mũ với
và khoảng cách . Vì vậy ta có thể xác định phạm vi đó dựa trên thành phần sóng dừng thứ
nhất, tức là và . Sóng dừng còn ảnh hƣởng khi tỉ số biên độ giữa nó và sóng tiến còn
cao hơn một ngƣỡng mà ta thƣờng chọn là 0,001.

Ký hiệu Sau đây là thuật toán chia đôi để tìm đƣợc


khoảng cách gần nhất mà sau đó trở đi sóng dừng có thể bỏ qua, sự tìm kiếm với phép lặp
đƣợc thực hiện trên một dãy tăng dần những vị trí rời rạc

Bắt đầu với , ,

1. Tại , tính
2. Nếu , cho và – , nếu , cho và
– và nếu thì dừng vòng lặp.
3. Quay lại bƣớc 2 và cứ thế, cho tới khi thì vòng lặp kết thúc với tìm đƣợc.

3. TÍNH ĐỘ DÂNG SÓNG NƢỚC

Việc tính toán độ dâng của sóng tiến tại nhiều vị trí trong nhiều thời điểm quả là đồ sộ
bởi nó cần tính giá trị nhiều hàm lƣợng giác. Việc này có thể đƣợc làm nhẹ bớt bằng phƣơng
pháp tính lặp nhƣ sau [2].

Trƣớc hết cho một dãy rời rạc các vị trí và một dãy các thời điểm
cách đều

22
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Độ dâng tại bƣớc thời gian thứ i:

Đề xuất thêm đi cùng với nhƣ sau

Ký hiệu ,

Độ dâng tại bƣớc thời gian thứ (i+1):

Ký hiệu ,

Ta có công thức dạng quy nạp

Thành phần gây bởi sóng dừng trong độ dâng

chỉ đáng kể trong khoảng cách mà ta đã xác định trƣớc đây và cũng có thể tính bằng phƣơng
pháp nêu trên.

23
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Độ dâng tính đƣợc cuối cùng là tổng độ dâng của 2 loại sóng trên.

24
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

IV. KẾT QUẢ MÔ PHỎNG

Dƣới đây là kết quả mô phỏng sóng nƣớc với:

- Độ cao sóng
- Chu kỳ
sinh bởi máy tạo sóng loại piston và loại bản lề trong bể với mức nƣớc cao .

Việc mô phỏng tính toán đƣợc thực hiện nhờ chƣơng trình mô phỏng tự viết bằng ngôn ngữ
Python (Xem Phụ lục).

Bảng 4.1. Kết quả mô phỏng

Piston type Flap type


Số sóng 5.765 5.765
Bƣớc sóng 1.09 1.09
Sải giầm 5.84 11.05
19.6 19.6
Các số sóng của sóng dừng 41.24 41.24
62.402 62.402
Khoảng ảnh hƣởng của sóng dừng 17 39

Sau đây là đồ thị độ dâng sóng nƣớc. Ta có thể thấy trong trƣờng hợp máy tạo sóng kiểu
bản lề, tác động của sóng dừng là đáng kể hơn so với kiểu piston.

25
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 4.1. Độ dâng tổng cộng của sóng tạo bởi máy tạo sóng kiểu piston

Hình 4.2. Độ dâng của riêng sóng dừng trong trường hợp máy tạo sóng kiểu piston

26
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 4.3. Độ dâng tổng cộng của sóng tạo bởi máy tạo sóng kiểu bản lề

Hình 4.4. Độ dâng của riêng sóng dừng trong trường hợp máy tạo sóng kiểu bản lề

27
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Kết luận: Trong trƣờng hợp của nƣớc nông ( ), máy tạo sóng kiểu piston tỏ ra hiệu quả
hơn kiểu bản lề. Ngoài ra, ta có thêm sự so sánh giữa máy tạo sóng kiểu piston và kiểu bản lề:

Kiểu piston:

- Ƣu điểm: Sải giầm của máy tạo sóng nhỏ hơn, tác động của những sóng dừng chóng
tan cũng nhỏ hơn.
- Khuyết điểm: Ở trƣờng hợp nƣớc sâu, kiểu này hao phí nhiều năng lƣợng hơn do phải
làm chuyển động cả những lớp nƣớc dƣới thấp.
Kiểu bản lề:

- Ƣu điểm: Ở trƣờng hợp nƣớc sâu, kiểu này không hao phí nhiều năng lƣợng nhƣ kiểu
piston.
- Khuyết điểm: Sải giầm của máy tạo sóng lớn hơn, tác động của những sóng dừng
chóng tan ít hơn.
Sau đây là thí nghiệm trên một máy tạo sóng nhỏ, tự chế kiểu piston với trƣờng hợp nƣớc
nông và độ cao sóng nhỏ.

28
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

V. THỰC NGHIỆM

1. THIẾT BỊ THÍ NGHIỆM

Thiết bị là một bể dài , rộng , cao , trong suốt, làm bằng chất liệu mica.
Một đầu bể là giầm tạo sóng chuyển động kiểu piston. Chuyển động theo hàm sin của giầm
đƣợc tạo bởi chuyển động tròn đều của động cơ thông qua cơ cấu sin (cơ cấu truyền động lợi
dụng tính chất chuyển động hình sin là hình chiếu của chuyển động tròn đều).

Hình 5.1. Sơ đồ thiết bị thí nghiệm

Đầu còn lại của bể là bờ triệt sóng có độ dốc thoai thoải, có nhiệm vụ làm tiêu giảm
sóng phản xạ từ đầu này của bể càng nhiều càng tốt. Bờ này đƣợc làm dạng tấm đặt nằm
nghiêng. Tấm này đƣợc kết lại từ nhiều mảnh vật liệu vốn đƣợc dùng làm dụng cụ rửa chén
trong nhà bếp. Loại vật liệu này đƣợc sử dụng vì nó có cấu trúc gồm nhiều sợi bện vào nhau
và cấu trúc ấy đƣợc mong đợi sẽ “xé nhỏ” dòng năng lƣợng do sóng mang đến rồi tiêu tốn bớt
năng lƣợng ấy.

Do điều kiện chế tạo không cho phép nên bể thí nghiệm này không thể đạt đƣợc hình
dạng và độ chính xác lý tƣởng nhƣ đƣợc nêu ra trong các điều kiện biên ở bài toán mô hình
hóa ở trên. Đặc biệt sai lệch nhiều là ở chỗ piston, nếu bỏ qua việc còn để dƣ nhiều sóng phản
xạ nơi bờ triệt sóng.

29
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.2. Bể thí nghiệm nhìn từ phía đầu có gắn giầm

30
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.3. Giầm có kiểu chuyển động piston

Hình 5.4. Bờ triệt sóng (màu xanh)

31
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.5. Giầm gạt nước tới lui tạo ra sóng

Hình 5.6. Sóng lan truyền trong bể

32
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.7. Sóng được hãm bớt tại bờ triệt sóng

Ta sẽ tiến hành thí nghiệm trên thiết bị này, đƣa nƣớc vào bể, cho chạy giầm tạo sóng
và tiến hành đo đạc sóng nƣớc thu đƣợc. Thông số cần đo là sải giầm, chiều cao sóng, bƣớc
sóng, độ sâu nƣớc lúc yên tĩnh.

2. PHƢƠNG PHÁP ĐO

Để đo sóng nƣớc trong thí nghiệm này, tôi sử dụng phƣơng pháp chụp ảnh và đo đạc
dựa trên hình ảnh thu đƣợc. Do yêu cầu của luận văn này không cần đến điều khiển hồi tiếp
trong thời gian thực, cũng không cần đo đạc chính xác lắm nên việc đo đạc trên ảnh chụp
đƣợc không cần thiết phải dùng đến các giải thuật xử lý ảnh số mà sẽ là đo đạc thủ công với
sự trợ giúp của các phần mềm đồ họa nhƣ Adobe Photoshop hay GIMP.

Ý tƣởng đo đạc bằng các phần mềm đồ họa kể trên là nhƣ sau: Các phần mềm loại này
đều có công cụ đo khoảng cách các vị trí trên ảnh theo đơn vị pixel. Ta sẽ tận dụng công cụ

33
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

này để quy khoảng cách giữa hai vị trí ngoài cảnh thực ra pixel, sau đó sẽ so sánh với một
khoảng cách đơn vị cũng đã quy ra pixel thông qua cùng một điều kiện chụp ảnh (khoảng
cách chụp, góc chụp). Chẳng hạn, qua cùng một điều kiện chụp ảnh, một centimet ứng với
mƣời pixel và khoảng cách giữa hai vị trí cần đo ứng với một ngàn pixel thì khoảng cách thực
tế giữa hai vị trí ấy sẽ là một trăm centimet.

Trong trƣờng hợp thí nghiệm này, chụp ảnh sóng nƣớc chứa trong một bể trong suốt, để
đạt đƣợc yêu cầu là khoảng cách chuẩn (làm đơn vị so sánh) và khoảng cách cần đo đƣợc
chụp trong cùng một điều kiện thì cách làm đơn giản là đƣa khoảng cách chuẩn lên thành bể
bằng cách vẽ lên đó hay nhẹ nhàng hơn là dán một cây thƣớc lên thành bể. Việc dán này cũng
không cần đến keo dán mà chỉ cần nhúng ƣớt cây thƣớc rồi áp lên thành bể, lực căng mặt
ngoài của nƣớc giữa hai bề mặt rất phẳng sẽ giữ thƣớc cố định trên thành bể đủ lâu cho ta tiến
hành chụp ảnh. Cách dán này giúp ta dễ dàng xoay chuyển cây thƣớc cho ngay ngắn.

Sau khi đã có ảnh chụp, ta sẽ nhờ cậy máy tính trợ giúp trong việc xử lý hình ảnh để ra
đƣợc kết quả đo. Có thể sử dụng bất cứ phần mềm đồ họa nào có công cụ đo khoảng cách, đo
góc. Ở đây vì thói quen nên tôi dùng phần mềm GIMP (GNU Image Manipulation Program –
www.gimp.org) và tôi sẽ trình bày cách làm dựa trên phần mềm đó.

34
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Dƣới đây là bức ảnh thu đƣợc và đƣợc mở lên trong GIMP:

Hình 5.8

Nếu sử dụng camera nhƣ một cảm biến thu tín hiệu hình ảnh số đƣa về vi xử lý thì nƣớc
thƣờng đƣợc nhuộm màu vì các giải thuật xử lý ảnh số cho vi xử lý thƣờng không đủ thông
minh để phát hiện đƣờng dạng sóng biểu hiện qua giao diện nƣớc – không khí giữa các chi
tiết khác trong ảnh chụp. Còn ở đây, việc nhận dạng đƣợc thực hiện bằng mắt thƣờng nên
không cần đến nhuộm màu nƣớc cũng nhƣ các cách xếp đặt camera rƣờm rà.

35
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Trong bức ành thu đƣợc, nhận dạng các đối tƣợng cần đo:

Đỉnh sóng 2
Đỉnh sóng 1

Thƣớc

Hình 5.9

Bây giờ ta sẽ đo khoảng cách giữa hai đỉnh sóng trƣớc. Nếu không muốn cân nhắc, đắn
đo nhiều thì ta chỉ việc chọn công cụ Measure, chấm trên hai điểm ƣớm chừng của hai đỉnh
sóng để lấy giá trị khoảng cách. Nhƣng nếu muốn chính xác hơn và nếu không tự tin lắm vào
độ vững vàng của cánh tay điều khiển chuột thì trƣớc khi chọn công cụ Measure, ta nên khai
thác một công cụ trợ giúp đánh dấu của phần mềm. Điểm đánh dấu này phải có khả năng “bắt
dính chuột” để ta có thể chắc chắn sẽ chấm đúng vào điểm đó mà không lệch đi. Thông
thƣờng trong các phần mềm đồ họa, công cụ giúp tạo ra các điểm này đƣợc gọi là Guides. Đó
là những đƣờng thẳng có thể thêm bớt tùy ý vào ảnh, có khả năng “hút dính” chuột khi đƣa lại
gần và do đó giúp ta kéo đƣợc chuột trên một đƣờng thẳng tắp mà không bị chệch hƣớng. Khi
kết hợp hai đƣờng Guides cắt nhau thì có thể tạo ra một điểm “hút dính”, đó là cái ta cần.
(Chú thích thêm: Để tạo ra các điểm “hút dính”, có thể dùng một công cụ khác là Grid. Công
cụ này sẽ phủ lƣới lên ảnh đang xử lý và mỗi góc mắt lƣới sẽ là một điểm “hút dính”. Tuy

36
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

nhiên Grid không thích hợp trong trƣờng hợp này vì nó tạo ra những điểm phân bố đều đặn
theo một khoảng cách định trƣớc trong khi ta mong muốn tạo ra điểm “hút dính” tại vị trí bất
kỳ. Cũng nhƣ Guides, Grid không xuất hiện trong ảnh “thành phẩm”).

Cách lấy Guide là bấm chuột lên cây thƣớc ở rìa khung làm việc và kéo vào trong ảnh
đang xử lý. Nếu cần Guide nằm ngang thì bấm vào thƣớc ngang nằm phía trên và nếu cần
Guide nằm dọc thì bấm vào thƣớc dọc nằm phía trái.

Hình 5.10

Ta sẽ hạ đƣờng Guide đầu tiên xuống đỉnh sóng thứ nhất.

Hình 5.11

37
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Tiếp theo, đƣờng Guide thứ hai nằm dọc sẽ đƣợc đặt sao cho nó giao với đƣờng Guide
đầu tiên tại đúng vị trí đỉnh sóng. Để có thể đặt chính xác các đƣờng Guides, nên zoom gần
ảnh tại điểm đặt để nhìn rõ hơn.

Hình 5.12

Ta đã tạo xong điểm đánh dấu cho đỉnh sóng thứ nhất. Tiếp theo sẽ là đỉnh sóng thứ hai.

Đỉnh sóng thứ hai này nhìn trên ảnh lại không nằm ngang mức đỉnh sóng thứ nhất. Có
hai nguyên nhân: thứ nhất là do nhiều loại sai số trong thực tế mà hai đỉnh sóng này không
cao bằng nhau (mà trên hết, dạng sóng cũng không đƣợc đều lắm), thứ hai là trong thao tác
chụp ảnh, hình ảnh thu đƣợc bị xoay đi một chút.

Hình 5.13

38
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Trong trƣờng hợp này, có thể thấy nguyên nhân thứ hai có ảnh hƣởng nhiều hơn, do khi kiểm
tra lại độ nghiêng đáy bể trong hình chụp thì thấy độ xoay của ảnh là khá rõ ràng.

Hình 5.14

Khi nguyên nhân thứ hai là nguyên nhân chính thì ta sẽ đo theo đƣờng xiên giữa hai
đỉnh sóng. Cũng tạo điểm đánh dấu tại đỉnh sóng thứ hai tƣơng tự nhƣ đỉnh thứ nhất.

Hình 5.15

39
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Khi đã có đủ điểm đánh dấu, chọn công cụ Measure từ menu Tools hay bấm phím tắt
Shift + M (khi chuyển trở lại công cụ có khả năng di chuyển các đƣờng Guides, bấm M hay
chọn công cụ Move trong cửa sổ Toolbox).

Hình 5.16

40
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Chấm vào điểm đã đánh dấu trên đỉnh sóng thứ nhất, sau đó ấn giữ và kéo chuột về phía điểm
thứ hai:

Hình 5.17

Hình 5.18

41
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Sau khi đã lấy đủ hai điểm cần đo cho công cụ Measure, dƣới thanh status bar sẽ xuất
hiện kết quả đo theo đơn vị pixel (khoảng cách) và độ (góc). Ở đây, kết quả thu đƣợc là 1961
pixels.

Bằng cách này, tiếp tục đo khoảng cách giữa hai vạch 1cm của cây thƣớc đƣợc chụp kèm.

Hình 5.19

Có thể thấy ngay rằng 20 pixels trong ảnh này sẽ ứng với 1cm. Nhƣ vậy, 1961 pixels thu đƣợc
ở trên sẽ ứng với 98,05 cm. Đó là chiều dài bƣớc sóng đo đƣợc.

42
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Để đo chiều cao sóng thì ta cần dựng một đƣờng Guide đi qua chỗ hõm của sóng. Chiều
cao sóng đƣợc đo nƣơng theo đƣờng Guide thẳng đứng đi qua đỉnh sóng, từ điểm giao với
đƣờng Guide ngang đi qua đỉnh đến đƣờng Guide ngang đi qua chỗ hõm.

Hình 5.20

Do hai đỉnh không ở ngang mức nên kết quả đo chiều cao sóng tại hai nơi sẽ khác nhau. Lúc
đó ta sẽ lấy trung bình hai kết quả này.

Hình 5.21

Sau đây là kết quả thu đƣợc với phƣơng pháp đo trên.

43
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

3. KẾT QUẢ ĐO

Dƣới đây là kết quả thí nghiệm với các điều kiện ban đầu:

- Chu kỳ

- Độ sâu nƣớc

- Sải giầm (piston)

với năm lần đo rồi lấy trung bình.

Bảng 5.1. Kết quả các lần đo sóng nƣớc

Bƣớc sóng ( ) Chiều cao sóng ( )

Lần 1 103,4 3,0

Lần 2 103,4 2,9

Lần 3 106,5 4,8

Lần 4 101,6 3,8

Lần 5 101,1 4,0

Trung bình 103,2 3,7

Sử dụng chƣơng trình mô phỏng đã viết để tính toán lý thuyết bƣớc sóng và chiều cao sóng
theo điều kiện nhƣ trên thì thu đƣợc kết quả:

Bảng 5.2. So sánh kết quả đo thực nghiệm và lý thuyết

Lý thuyết Thực nghiệm Sai khác so với lý thuyết

Bƣớc sóng ( ) 100 103 3%

Chiều cao sóng ( ) 3,6 3,7 2,7%

Tiếp theo là dạng sóng của năm lần đo, thu đƣợc từ ảnh chụp và đã xóa bớt các chi tiết
xung quanh, chỉ giữ lại vết dạng sóng thể hiện thông qua giao diện nƣớc – không khí:

44
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.22. Dạng sóng lần đo thứ nhất

Hình 5.23. Dạng sóng lần đo thứ hai

Hình 5.24. Dạng sóng lần đo thứ ba

45
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

Hình 5.25. Dạng sóng lần đo thứ tư

Hình 5.26. Dạng sóng lần đo thứ năm

4. NHẬN XÉT

Trong kết quả đo độ dài bƣớc sóng và chiều cao sóng, sai lệch giữa kết quả thực nghiệm
và lý thuyết là và . Sai số này có thể chấp nhận đƣợc và nguyên nhân sai số có thể
kể đến:

- Việc tính toán lý thuyết đƣợc xét trong điều kiện lý tƣởng: bỏ qua ma sát, lực căng
mặt ngoài của nƣớc, nƣớc coi nhƣ không xoáy, sóng đƣợc xem nhƣ truyền đi xa
vô cùng mà không có sóng dội lại, dạng hình học của bề mặt biên cũng đƣợc coi
nhƣ lý tƣởng.

- Trong khi đó, điều kiện thực tế không thể đạt đƣợc lý tƣởng nhƣ vậy: không thể
triệt hãm hết sóng phản xạ, và những sóng dƣ này cứ tiếp tục dội qua dội lại từ

46
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

phía cuối bể và từ phía giáp với giầm (piston), hạn chế về điều kiện chế tạo không
cho phép tạo ra thiết bị chính xác, mặt giầm không thể che hết tiết diện ngang của
bể và chỗ khoảng hở giữa cạnh giầm và thành bể có thể tạo ra những nhiễu loạn
dòng nƣớc.

- Sự méo dạng của sóng khiến việc xác định đỉnh sóng để đo có thể sai lệch ít
nhiều.

Về biên dạng sóng nƣớc thu đƣợc, mặc dù bị méo dạng do ảnh hƣởng của sóng phản xạ
và các trở ngại thực tế khác nhƣng vẫn có thể phân biệt đƣợc các đỉnh sóng, hõm sóng.

47
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

TÀI LIỆU THAM KHẢO

[1] Dean & Dalrymble (1991), Water wave mechanics for engineers and scientists, Word
Scientific.

[2] Ben T. Nohara (2000), A Survey of the Generation of Ocean Waves in a Test Basin, 2000

[3] Harald M. Brunnhofer (2005), Forced Capillary-Gravity Water Waves in a 2D


Rectangular Basin.

48
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

PHỤ LỤC

Chƣơng trình mô phỏng tính toán sóng nƣớc sinh ra bởi máy tạo sóng có mái
giầm
Đây là chƣơng trình tự viết bằng ngôn ngữ Python. Ngôn ngữ Python mặc dù còn khá lạ
lẫm đối với ngƣời lập trình Việt Nam, nhất là với ngƣời trong lĩnh vực kỹ thuật không chuyên
về Công nghệ thông tin nhƣng nó đã đƣợc sử dụng rộng rãi trong nhiều trƣờng đại học và các
viện nghiên cứu ở các nƣớc tiên tiến (trong đó có Cơ quan hàng không vũ trụ Mỹ NASA).
Những ƣu điểm khiến tôi chọn Python cho việc viết chƣơng trình này (cũng nhƣ các chƣơng
trình tôi đã viết trong thời gian qua để phục vụ những nhu cầu riêng) là cú pháp rất súc tích, rõ
ràng, gọn ghẽ giúp năng suất làm việc tăng cao, mã nguồn dễ đọc thuận tiện cho việc chia sẻ,
trao đổi, khả năng phân hóa thành các module và mở rộng cao, hỗ trợ tốt cho việc tính toán số
(hai module NumPy và SciPy hỗ trợ tính toán số đƣợc phát triển rất rộn ràng) và sự lớn mạnh
nhanh chóng trong việc trở thành một trong những ngôn ngữ lập trình phổ biến nhất. Ngoài
ra, sự hỗ trợ lập trình hƣớng đối tƣợng của Python giúp tổ chức chƣơng trình thuận tiện hơn
so với cách lập trình thủ tục của MATLAB.

Do mức độ sử dụng không thƣờng xuyên nên chƣơng trình này của tôi không đƣợc
trang bị một giao diện đồ họa GUI mà chỉ chạy trên console. Việc thay đổi thông số đầu vào
sẽ đƣợc thực hiện bằng cách thay đổi trong nội dung của script chƣơng trình.

Chƣơng trình đƣợc tổ chức thành một class đối tƣợng lớn là SurfaceWave và hai class
nhỏ WaveMaker, Basin. Các properties và method của các class đƣợc cho trong sơ đồ ở trang
sau.

Các lệnh sử dụng các class trên (khởi tạo đối tƣợng, gán giá trị cho các properties, gọi
method) để giải quyết bài toán cụ thể đƣợc đặt trong hàm main(). Khi thay đổi bài toán thì
các thông số đầu vào sẽ đƣợc sửa đổi ngay trong script, trong hàm main() này.

49
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

SurfaceWave WaveMaker
- wm = WaveMaker - width
- height (đƣợc lấy bằng

Properties
- bs = Basin
bằng độ sâu của nƣớc)
- wavenumber (số sóng)
- type (kiểu chuyển động)
- height (độ cao sóng)
- stroke
- sigma (tần số góc dao động)
Properties

- g (gia tốc trọng trƣờng)


- ks (số sóng của các sóng
Basin
dừng chóng tan)
- Cm (hệ số biên độ của sóng - length

Properties
dừng chóng tan) - width
- rho (khối lƣợng riêng của - depth
nƣớc)
dispersionEq()
swAmp()
calc_wavenumber()
calc_strokeratio()
calc_wavemakerstroke()
Methods

calc_standingwave()
seek_stwave_lim()
stwave_amp()
energy()
elevation()
runsim()

Nội dung mã nguồn:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Simulation.py
# This is the prgram for simulating water wave generated by
# wavemaker in test basin
# Copyright 2009 Nguyễn Hồng Quân <ng.hong.quan@gmail.com>

import numpy as np

from scipy.optimize import fsolve


from math import *

50
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

STANDINGWAVE_THRESHOLD = 0.001

class WaveMaker():
def __init__(self, width, height, type):
self.width = width
self.height = height # Considered equal to water depth.
self.type = type

class Basin():
def __init__(self, length, width, depth):
self.length = length
self.width = width
self.depth = depth

class SurfaceWave:
def __init__(self, wm, bs):
self.wm = wm
self.bs = bs
self.wavenumber = self.wm.stroke = self.height = 0
self.ks = [0]*3
self.Cm = [0]*3
self.rho = 1000 # fluid density
# Water depth is considered equal to wavemaker height

def dispersionEq(self, k, wavetype='p'):


sigma, h = self.sigma, self.wm.height
if wavetype == 'p': # Progressive Wave
return sigma**2 - 9.8*k*tanh(k*h)
else: # Standing wave
return sigma**2 + 9.8*k*tan(k*h)

def swAmp(self, ks, x): # Standing wave amplitude


h = self.wm.height
S, sigma, kh = self.wm.stroke, self.sigma, ks*h
if self.wm.type == 'piston':
Cm = 2*S*sigma*sin(kh)/ks/(2*kh + sin(2*kh))
elif self.wm.type == 'flap':
Cm = 2*S*sigma*(kh*sin(kh) + cos(kh) - 1)/ks**2*h/(2*kh +
sin(2*kh))
return Cm*sigma*cos(kh)*exp(-k*x)*cos(kh)

def calc_wavenumber(self):
g, sigma, T, h = self.g, self.sigma, 2*pi/self.sigma,
self.wm.height
L_inf = (g*T**2)/(2*pi)
L_init = L_inf*pow(tanh(pow(sigma**2*h/g, 3.0/4)), 2.0/3)
k_init = 2*pi/L_init
self.wavenumber = k = fsolve(self.dispersionEq, k_init, ('p',))
self.wavelength = L = 2*pi/k
return k

def calc_strokeratio(self):
if not self.wavenumber: self.calc_wavenumber()
kh = self.wavenumber*self.wm.height
if self.wm.type == 'piston':
# Ratio wave height per wavemaker stroke
rat = 2*(cosh(2*kh) - 1)/(sinh(2*kh) + 2*kh)

51
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

elif self.wm.type == 'flap':


rat = 4*sinh(kh)*(kh*sinh(kh) - cosh(kh) + 1)/kh/(sinh(2*kh) +
2*kh)
return rat

def calc_wavemakerstroke(self):
rat = self.calc_strokeratio()
self.wm.stroke = s = self.height/rat
return s

def calc_standingwave(self):
sigma, h = self.sigma, self.wm.height
if not self.wm.stroke:
S = self.calc_wavemakerstroke()
else: S = self.wm.stroke
for i in xrange(3):
self.ks[i] = k = fsolve(self.dispersionEq, (i + 1)*pi/h,
('s',))
kh = k*h
if self.wm.type == 'piston':
self.Cm[i] = 2*S*sigma*sin(kh)/k/(2*kh - sin(2*kh))
elif self.wm.type == 'flap':
self.Cm[i] = 2*S*sigma*(kh*sin(kh) + cos(kh) - 1)/kh/(2*kh
- sin(2*kh))

def seek_stwave_lim(self):
x, H, l = self.x, self.height, self.bs.length
if self.stwave_amp(l)/(H/2) >= STANDINGWAVE_THRESHOLD:
return x.size - 1
pl, p, pr = 0, x.size/2, x.size - 1
while pr > pl and pl != p:
diff = self.stwave_amp(x[p])/(H/2) - STANDINGWAVE_THRESHOLD
if diff <= 0:
pr = p
p = pl + (p - pl)/2
else:
pl = p
p += (pr - p)/2
return p

def stwave_amp(self, x):


Cm, ks, sigma, g, h = self.Cm[0], self.ks[0], self.sigma, self.g,
self.wm.height
return np.abs(Cm*np.exp(-ks*x)*np.cos(ks*h)*sigma/g)

def energy(self):
"""
Energy per unit width"""
kh = self.wavenumber*self.bs.depth
c = self.sigma/self.wavenumber
e = 1./8*self.rho*self.g*(self.height**2)
n = 0.5*(1 + 2*kh/sinh(2*kh))
return e*c*n

def elevation(self, wavetype, x):


sigma, h, g, t = self.sigma, self.wm.height, self.g, self.t
# array of elevation/amplitude datas
elvs = np.zeros((t[2], x.size))

52
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

# array of velocity/max_velocity datas


# vels = self.elvs.copy()
# elevation at instant t-1
# At instant t_start:
if wavetype == 'progressive':
kx = self.wavenumber*x
dat = np.zeros((x.size, 2))
B = (self.height/2)*np.array([cos(sigma*t[0]),
sin(sigma*t[0])]).reshape(2, 1)
# reshape B to calculate matrix product
for xi in xrange(x.size):
dat[xi] = rotation(B, kx[xi])
elvs[0] = dat[:,0]
#vels[0] = dat[:,1]
elif wavetype == 'standing':
dat = [np.zeros((x.size, 2))]*3
B = (sigma/g)*np.array([cos(sigma*t[0] + pi/2), sin(sigma*t[0]
+ pi/2)])
for m in xrange(3):
C, k = self.Cm[m], self.ks[m]
for xi in xrange(x.size):
dat[m][xi] = B*C*exp(-k*x[xi])
elvs[0] += dat[m][:,0]
#vels[0] += dat[m][:,1]
# At next instants
alpha = cos(-sigma*t[1])
beta = sin(-sigma*t[1])
A = np.array([[alpha, beta], [-beta, alpha]])
if wavetype == 'progressive':
for ti in xrange(1, t[2]):
prev = np.array([dat[:,0], dat[:,1]])
#print 't =', ti,'Prv:', prev[:,0]
for xi in xrange(x.size):
'''
Product of
/ \ / \
| alpha -beta | | elv[i-1] |
| beta alpha | | vel[i-1] |
\ / \ /
'''
dat[xi] = np.dot(A, prev[:, xi].reshape(2,
1)).flatten()
elvs[ti] = dat[:,0]
elif wavetype == 'standing':
for ti in xrange(1, t[2]):
for m in xrange(3):
prev = np.array([dat[m][:,0], dat[m][:,1]])
for xi in xrange(x.size):
# The same as progressive wave
dat[m][xi] = np.dot(A, prev[:, xi].reshape(2,
1)).flatten()
elvs[ti] = dat[m][:,0]
#vels[ti] += dat[m][:,1]
return elvs

def runsim(self, x, t):


"""
Calculating elevation at positions x at instants t.

53
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

x: array of positions
t: (time_start, time_start, number_of_instants)
"""
sigma, h, g = self.sigma, self.wm.height, self.g
self.x, self.t = x, t
if not self.ks: self.calc_standingwave()
self.p = p = self.seek_stwave_lim()

# Standing wave amplitude


#self.swamp = np.abs(Cm*np.exp(-ks*x)*np.cos(ks*h)*sigma/g)
#print 'Standing wave amplitude:', swamp
#print 'Standing wave threshold:', STANDINGWAVE_THRESHOLD
#print 'Standing wave amplitude per progressive wave amplitude:',\
# swamp/(self.height/2)

if t[1] and t[2] and isinstance(x, np.ndarray):


# array of elevation/amplitude datas
self.elvs = np.zeros((t[2], x.size))
# array of velocity/max_velocity datas
#self.vels = self.elvs.copy()

self.elvs = self.elevation('progressive', x)
self.elvs[:, :p] += self.elevation('standing', x[:p])

def rotation(B, ang):


"""
Product of
/ \ / \
| cosa sina | | B1 |
| -sina cosa | | B2 |
\ / \ /
"""
c, s = cos(ang), sin(ang)
u = np.array([[c, s], [-s, c]])
return np.dot(u, B).flatten()

def main():
period = 1.
depth = 0.12
wm = WaveMaker(0.5, depth, 'piston')
bs = Basin(3., wm.width, depth)
wave = SurfaceWave(wm, bs)
wave.height = 0.05
wave.sigma = 2*pi/period
wave.g = 9.8

print 'Given:'
print 'Wave height: H =', wave.height
print 'Period: T =', period
print "Depth (wavemaker's height):", wm.height

print "~"*10
print 'Result:'
print 'Wave number k =', wave.calc_wavenumber()
print 'Wave length: L =', wave.wavelength
wave.calc_standingwave()

54
LUẬN VĂN TỐT NGHIỆP Nguyễn Hồng Quân

print 'Wavemaker stroke: S =', wave.wm.stroke


print
print 'ks: ', wave.ks
print 'Cm:', wave.Cm
t = (0, 0.02, 151) # calculating instants (start, time-step, number
of instant)

x1 = np.linspace(0, sqrt(wave.bs.length), 81)


x = x1**2

wave.runsim(x, t)
print 'Standing wave is neglegible at x[%d] = %g'\
%(wave.p, x[wave.p])
print 'Energy per unit width:', wave.energy()
print 'Ratio of Elevation/Amplitude cause by progressive wave at x =
%g..%g:' % (x[0], x[-1])
print
t_dat = np.linspace(t[0], t[0] + (t[2] - 1)*t[1], t[2])
import Gnuplot
g = Gnuplot.Gnuplot(debug=1)
g('set parametric')
g('set data style lines')
g('set hidden')
g.title("Water wave by %s type wavemaker" % wave.wm.type)
g.xlabel('t')
g.ylabel('x')
g.zlabel(u"η".encode('utf-8'))
g.splot(Gnuplot.GridData(wave.elevation('standing', x[:wave.p]), t_dat,
x[:wave.p], binary=0))
raw_input('Press Enter to continue')
g.splot(Gnuplot.GridData(wave.elvs, t_dat, x, binary=0))
g.hardcopy("%s.ps" % wave.wm.type, enhanced=1, color=1)
raw_input('Press Enter to exit')
return 0

if __name__ == '__main__':
main()

55

You might also like