Author Archives: SangVN

Lattice Boltzmann Method – Phương pháp lưới Boltzmann

Phương pháp lưới Boltzmann ngày càng được sử dụng rộng rãi để mô phỏng chuyển động của lưu chất. Trong khóa học này sẽ giới thiệu đến bạn đọc các kiến thức cơ bản của LBM, code và các ví dụ cụ thể. Chi tiết theo đường link: https://github.com/SangVn/Lattice_Boltzmann_Method.

Một số kết quả thu được:

Dòng chảy qua hình trụ
Những cuộn xoáy như mái tóc dài của cô gái đang tung bay trong gió
Dòng chảy qua một chú cá voi 2D

VnCFD_2.21.5 – The Best Combination of Python, Fortran and MPI for Learning CFD Coding!

VnCFD_2.21.5 is a free, open source computational fluid dynamics (CFD) software released for Educational Purposes. It’s written in a combination of Python, Fortran and MPI. The core of calculation, written in Fortran, and the MPI help to speed up the simulations, while Python is comfortable to control Classes and Data. The VnCFD_2.21.5 Code, which is short, clear and easy to read, helps you save a lot of time spent on learning the basic of CFD coding.

Link download: https://github.com/SangVn/VnCFD_2.21.5

Nếu bạn theo dõi khóa học “Thực hành CFD với Python!” hay đã từng tiếp xúc với phần mềm VnCFD_2D (bản mới nhất VnCFD_2D_v3), bạn sẽ thấy việc viết chương trình CFD trên Python rất thuận tiện, đặc biệt trong các thao tác với Class và mảng. Sự linh hoạt và dễ dùng chính là điểm mạnh của Python. Tuy nhiên tốc độ tính toán của VnCFD_2D rất chậm, đặc biệt khi mô phỏng dòng chảy khí thực, giải hệ phương trình Navier-Stokes. Nguyên nhân chính là vì các vòng lặp tính toán trong Python chậm chạp nếu so với C, C++ hay Fortran. Thế nên VnCFD_2D thực sự chỉ phù hợp cho việc học cách thức xây dựng chương trình mô phỏng mà không phải dùng cho tính toán.

Để khắc phục điểm yếu trên và đồng thời bổ sung cho khóa học “Thực hành CFD với Python!” thêm phong phú, phần mềm VnCFD_2.21.5 đã được phát triển. VnCFD_2.21.5 là sự kết hợp hoàn hảo tính linh hoạt của Python, tốc độ tính toán của Fortran và được gia tốc bởi MPI. Chính vì thế VnCFD_2.21.5 nhanh gấp hàng trăm lần so với VnCFD_2D_v3.

Để có được điều này cấu trúc dữ liệu trong VnCFD_2.21.5 đã được thay đổi so với các phiên bản VnCFD_2D. Nếu như trong VnCFD_2D tất cả các thông số (như khối lượng riêng, vận tốc, áp suất …) được lưu trữ riêng lẻ trong từng ô lưới, trong từng mặt ô lưới, thì ở VnCFD_2.21.5 trong mỗi khối block, mỗi một thông số sẽ có một mảng dữ liệu chứa toàn bộ các giá trị thông số đó trong tất cả các ô lưới. Khi tính toán, các mảng dữ liệu này sẽ được gửi cho các hàm viết trên Fortran xử lý nên tốc độ tính toán tăng lên gấp nhiều lần.

Xét về mặt cấu trúc dữ liệu thì cấu trúc mới này không linh hoạt. Nó chỉ phù hợp với lưới có cấu trúc, trong khi cấu trúc dữ liệu cũ được dùng cho cả hai loại lưới có và không có cấu trúc. Với cấu trúc mới, các vòng lặp tính toán được xử lý thông qua các index (i, j) của mảng dữ liệu và đòi hỏi sự kết hợp chính xác giữa các mảng dữ liệu với nhau, do đó phải rất cẩn thận khi viết code để không bị sai một đơn vị đếm nào. Còn với cấu trúc cũ, các vòng lặp tính toán được thao tác thông qua các ô lưới, các mặt ô lưới, đã được gắn với các thông số cụ thể, do đó rất dễ dàng viết code. Nếu như VnCFD_2D_v3 được viết lại trên C++ và kết hợp với MPI trong VnCFD_2.21.5 thì sẽ là một phiên bản hoàn hảo!

Về mặt “kĩ thuật”, VnCFD_2.21.5 đã đạt đến giới hạn về tốc độ tính toán. Tuy nhiên chúng ta vẫn có thể tăng tốc độ hội tụ nghiệm bằng “phương pháp”. Thay vì dùng sơ đồ tường minh (explicit) nếu sử dụng sơ đồ ẩn (implicit) ta có thể tăng bước thời gian lên hàng trăm lần.

VnCFD_2.21.5, cũng như VnCFD_2D_v3 là những phương tiện học tập hiệu quả, giúp tiết kiệm thời gian học các bước cơ bản phát triển phần mềm CFD nói riêng và các phần mềm mô phỏng nói chung. Chúng cực kì hữu ích giúp bạn nắm được bản chất của CFD.

Với tốc độ tính toán hiệu quả, VnCFD_2.21.5 được sử dụng để mô phỏng các dòng chảy Euler, Navier-Stokes, nghiên cứu ảnh hưởng của điều kiện biên, sơ đồ tính toán, phương pháp tính dòng qua mặt và nhiều vấn đề khác của CFD.

Một sự kết hợp hoàn hảo giữa Python, Fortran và MPI, có thể ví VnCFD_2.21.5 như một cỗ máy tổng hợp tất cả những gì tinh túy nhất của Mercedes-Benz VISION AVTR, Tesla Cybertruck và SpaceX Falcon 9.

Bạn sẽ cảm thấy rất thích thú khi sử dụng VnCFD_2.21.5! Chúc bạn gặp nhiều điều thú vị!

Inspired By The Future!

Thực hành CFD với Python – Phần 4! VnCFD_2D_v3!

Thực hành CFD với Python – Phần 4 và VnCFD_2D_v3 sẽ hướng dẫn các bạn phương pháp tính giải hệ phương trình Navier-Stokes hai chiều. So với hệ phương trình Euler, để giải hệ Navier-Stokes chúng ta cần bổ sung thêm hàm tính dòng khuếch tán đặc trưng bởi độ nhớt và tính chất dẫn nhiệt của khí thực.

Link tải khóa học và chương trình: CFD_Notebook_P4VnCFD_2D_v3.

plate

NASA Undergraduate Programs

Trên trang chủ của Cơ quan hàng không vũ trụ Mỹ – NASA có rất nhiều thông tin bổ ích, nhiều kiến thức và chương trình máy tính được chia sẻ miễn phí. Một trong số đó là các phần mềm được viết trên ngôn ngữ Java cho sinh viên [link] để bắt đầu nghiên cứu về khí động lực học và lực đẩy.

Các chương trình này bao gồm:

  1. FoilSim III Student Version 1.5a
  2. TunnelSys – Tunnel Test Applet Version 1.0a
  3. Interactive Wright 1901 Wind Tunnel
  4. Mach and Speed of Sound Calculator
  5. Isentropic Flow Calculator
  6. ShockSim Version 1.3e Shock Wave Simulator
  7. Supersonic Cone Simulator
  8. ShockModeler Version 1.3a Multiple Shock Wave Simulator
  9. Method of Characteristics analysis Nozzle Simulation
  10. Interactive Nozzle Simulator
  11. Supersonic Flows Simulator
  12. EngineSimU Brayton Cycle analysis of a turbine engine or ramjet
  13. FoilSimU III simulator that performs a Kutta-Joukowski analysis

Các bạn có thể download chúng [tại đây] (click vào clone or download) và xem hướng dẫn sử dụng tại [link]. Về cơ bản, để sử dụng chúng, ta cần cài Java cho windows hay linux. Trong các files được tải, hãy để ý 2 files Driver.class và Driver.java. Để chạy các chương trình này hãy mở terminal (linux) hay powerShell, cmd (windows) chạy lệnh: java Driver. Theo mặc định, tất cả các chương trình sẽ chạy cùng một lúc. Để chỉ chạy một chương trình nào đó, ví dụ Nozzle, hãy mở file Driver.java,  trong public … {} comment tât cả các dòng không chứa từ nozzle bằng cách thêm dấu hai gạch chéo // vào đầu dòng. Đổi tên public class thành NozzleProg, đổi tên file thành NozzleProg.java, biên dịch lại file này bằng câu lệnh: javac NozzleProg.java (hoặc javac -Xlint NozzleProg.java). Ta sẽ có file mới NozzleProg.class. Để chạy nó sử dụng lệnh java NozzleProg. Tương tự như vậy cho các chương trình còn lại.

Moc

FoilSimU

EngineSimU

Nozzle

WTest

FoilSim

Tunl

Shock

Isentrop

Mach

Thực hành CFD với Python! VnCFD_2D_v2!

VnCFD_2D_v2 là chương trình mô phỏng khí động lực học chuyển động dòng chảy không nhớt trong không gian hai chiều, giải hệ phương trình Euler 2D. So với phiên bản 1 VnCFD_2D_v1, phiên bản hai có nhiều thay đổi. Các thay đổi chính bao gồm:

  • Sử dụng python3.7.
  • Tăng tốc độ tính toán lên gấp 5 lần bằng cách sử dụng hàm tính dòng được viết trên ngôn ngữ FORTRAN, so với việc sử dụng hàm dòng viết bằng Python.
  • Cấu trúc dữ liệu thay đổi để phù hợp với lưới nhiều blocks.
  • Mở rộng thêm các điều kiện biên để phù hợp với lưới nhiều block, để có thể đặt nhiều điều kiện biên trên một biên, và thêm các điều kiện biên subsonic.
  • Rút gọn các lệnh chạy chương trình, việc sử dụng chương trình trở nên rất thuận tiện.

Link download: https://github.com/SangVn/VnCFD_2D_v2

nozzle_2