โปรดอ้างอิงเป็น: Barba, Lorena A. และ Forsyth, Gilbert F. (2018) CFD Python: 12 ขั้นตอนสู่สมการเนเวียร์-สโตกส์ วารสารการศึกษาโอเพ่นซอร์ส , 1 (9), 21, https://doi.org/10.21105/jose.00021
CFD Python หรือที่รู้จักกันในชื่อ 12 ขั้นตอนของ Navier-Stokes เป็นโมดูลที่ใช้งานได้จริงสำหรับการเรียนรู้พื้นฐานของ Computational Fluid Dynamics (CFD) โดยการเขียนโค้ดโซลูชันให้กับสมการเชิงอนุพันธ์ย่อยพื้นฐานที่อธิบายฟิสิกส์ของการไหลของของไหล โมดูลนี้เป็นส่วนหนึ่งของหลักสูตรที่สอนโดย Prof. Lorena Barba ระหว่างปี 2009 ถึง 2013 ในแผนกวิศวกรรมเครื่องกลที่มหาวิทยาลัยบอสตัน (Prof. Barba ตั้งแต่ย้ายมาที่มหาวิทยาลัย George Washington)
โมดูลนี้ถือว่าความรู้การเขียนโปรแกรมพื้นฐานเท่านั้น (ในภาษาใดก็ได้) และพื้นฐานบางส่วนในสมการเชิงอนุพันธ์ย่อยและกลศาสตร์ของไหล "ขั้นตอน" ได้รับแรงบันดาลใจจากแนวคิดของดร. ริโอ โยโกตะ ซึ่งเป็นแพทย์หลังปริญญาเอกในห้องทดลองของศาสตราจารย์บาร์บาจนถึงปี 2011 และบทเรียนได้รับการปรับปรุงโดยศาสตราจารย์บาร์บาและนักเรียนของเธอตลอดหลายภาคการศึกษาที่สอนหลักสูตร CFD เราเขียนสมุดบันทึก Jupyter ชุดนี้ในปี 2013 เพื่อสอนหลักสูตรเร่งรัดสองวันในเมืองเมนโดซา ประเทศอาร์เจนตินา
ด้วยการแนะนำนักเรียนผ่านขั้นตอนเหล่านี้ (โดยไม่ข้ามขั้นตอนใดเลย!) พวกเขาได้เรียนรู้บทเรียนอันทรงคุณค่ามากมาย ลักษณะของแบบฝึกหัดที่เพิ่มขึ้นหมายความว่าพวกเขารู้สึกถึงความสำเร็จเมื่อสิ้นสุดการมอบหมายงานแต่ละชิ้น และพวกเขารู้สึกว่าพวกเขากำลังเรียนรู้โดยใช้ความพยายามเพียงเล็กน้อย เมื่อพวกเขาก้าวหน้า พวกเขาจะฝึกฝนการนำโค้ดกลับมาใช้ใหม่ตามธรรมชาติ และพวกเขาจะเรียนรู้การเขียนโปรแกรมและเทคนิคการพล็อตแบบค่อยเป็นค่อยไป ขณะที่พวกเขาวิเคราะห์ผลลัพธ์ พวกเขาเรียนรู้เกี่ยวกับการแพร่กระจายเชิงตัวเลข ความแม่นยำ และการลู่เข้า ภายในสี่สัปดาห์ของหลักสูตรที่กำหนดเป็นประจำ พวกเขาจะกลายเป็นโปรแกรมเมอร์ที่เชี่ยวชาญปานกลางและมีแรงจูงใจที่จะเริ่มอภิปรายเรื่องทางทฤษฎีมากขึ้น
ในหลักสูตรมหาวิทยาลัยภาคปกติ นักเรียนสามารถเรียนบทเรียน CFD Python ได้ภายใน 4 ถึง 5 สัปดาห์ เนื่องจากเป็นบทช่วยสอนแบบเข้มข้น หลักสูตรนี้จะแล้วเสร็จภายในสองหรือสามวันเต็ม ขึ้นอยู่กับประสบการณ์ของผู้เรียนก่อนหน้านี้ บทเรียนนี้สามารถนำไปใช้ศึกษาด้วยตนเองได้ ในทุกกรณี ผู้เรียนควรปฏิบัติตามตัวอย่างที่ใช้งานในแต่ละบทเรียนโดยพิมพ์โค้ดอีกครั้งในสมุดบันทึก Jupyter ใหม่ ซึ่งอาจจดบันทึกต้นฉบับในขณะที่ลองทำสิ่งต่างๆ
เริ่มเซสชันแบบโต้ตอบด้วยโมดูลนี้โดยใช้บริการ Binder:
ขั้นตอนที่ 1-4 อยู่ในมิติมิติเดียว ขั้นตอนที่ 5–10 อยู่ในสองมิติ (2D) ขั้นตอนที่ 11–12 แก้สมการเนเวียร์-สโตกส์ในแบบ 2 มิติ สมุดบันทึก "โบนัส" สามเล่มครอบคลุมเงื่อนไข CFL สำหรับความเสถียรของตัวเลข การดำเนินการอาร์เรย์ด้วย NumPy และการกำหนดฟังก์ชันใน Python
หากต้องการใช้บทเรียนเหล่านี้ คุณต้องมี Python 3 และสแต็กมาตรฐานของ Python เชิงวิทยาศาสตร์: NumPy, Matplotlib, SciPy, Sympy และแน่นอน คุณต้องมี Jupyter ซึ่งเป็นสภาพแวดล้อมการคำนวณเชิงโต้ตอบที่ทำงานบนเว็บเบราว์เซอร์
หลักสูตรสั้นๆ นี้สร้างขึ้นเป็นชุดสมุดบันทึก Jupyter ที่ประกอบด้วยเนื้อหาที่เป็นลายลักษณ์อักษรและวิธีแก้ปัญหาแบบได้ผลเกี่ยวกับโค้ด Python ในการทำงานกับสื่อการเรียนการสอน เราขอแนะนำให้คุณเริ่มแต่ละบทเรียนด้วยสมุดบันทึกใหม่ และทำตามโดยพิมพ์โค้ดแต่ละบรรทัด (อย่าคัดลอกและวาง!) และสำรวจโดยการเปลี่ยนพารามิเตอร์และดูว่าเกิดอะไรขึ้น
หลังการติดตั้ง เพื่อให้แน่ใจว่าแพ็คเกจของคุณเป็นปัจจุบัน ให้รันคำสั่งต่อไปนี้ในเทอร์มินัล:
conda update conda
conda update jupyter numpy sympy scipy matplotlib
หากคุณต้องการ Miniconda (Anaconda เวอร์ชันขนาดเล็กที่ช่วยประหยัดพื้นที่ดิสก์) ให้ติดตั้งไลบรารีที่จำเป็นทั้งหมดเพื่อติดตามหลักสูตรนี้โดยการรันคำสั่งต่อไปนี้ในเทอร์มินัล:
conda update conda
conda install jupyter
conda install numpy scipy sympy matplotlib
pip install jupyter
โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีที่จำเป็นโดยการรัน
pip install numpy scipy sympy matplotlib
เรายอมรับการสนับสนุนผ่านคำขอดึง—อันที่จริง ผู้ใช้หลายรายได้ส่งคำขอดึงเพื่อแก้ไขหรือปรับปรุงเล็กน้อยแล้ว คุณยังสามารถเปิดปัญหาได้หากคุณพบข้อบกพร่องหรือมีข้อเสนอแนะ
(c) 2017 Lorena A. Barba, Gilbert F. Forsyth เนื้อหาทั้งหมดอยู่ภายใต้ Creative Commons Attribution CC-BY 4.0 และโค้ดทั้งหมดอยู่ภายใต้ BSD-3 clause (ก่อนหน้านี้อยู่ภายใต้ MIT และมีการเปลี่ยนแปลงในวันที่ 8 มีนาคม 2018)
เรายินดีเป็นอย่างยิ่งหากคุณนำเนื้อหากลับมาใช้ใหม่ไม่ว่าด้วยวิธีใด!