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!