วิทยาศาสตร์การคำนวณ

ถามตอบสำหรับนักวิทยาศาสตร์ที่ใช้คอมพิวเตอร์เพื่อแก้ปัญหาทางวิทยาศาสตร์

5
C ++ หรือ Python สำหรับการพัฒนาไลบรารี CFD
คุณจะพูดว่าอะไรคือข้อดี / ข้อเสียของสองวิธีในการเขียนโค้ดไลบรารีทั่วไป (finite volume, fem, dg) สำหรับกลศาสตร์ต่อเนื่องของการคำนวณ นี่คือสิ่งที่ฉันเห็นตอนนี้ดังนั้นโปรดให้ประสบการณ์ของคุณเองและอย่าทำให้ฉันเป็นประกาย :): 1) C ++: การเขียนโปรแกรมทั่วไป, ฟังก์ชั่นเสมือนจริง, การบรรทุกเกินพิกัด, ความเร็ว ... : เครื่องมือ genreic + OOP ทั้งหมดที่มีอยู่เพื่อสร้างสิ่งที่คุณต้องการ ห้องสมุดระดับต่ำส่วนใหญ่มีอยู่ (ไม่มีการพัฒนาด้านวิทยาศาสตร์และวิศวกรรมที่กว้างขวางเช่นห้องสมุดสำหรับ Python) 2) Python + wrappers สำหรับการคำนวณแบบขนาน (pyOpenCL และอื่น ๆ ) จำนวนมากรองรับ libs หลากหลายชนิด โค้ดที่คุณคิด: การติดตั้งใช้งานเสร็จเร็วมาก เวลาดำเนินการช้าลง หากคุณต้องการเขียนโค้ดเฟรมเวิร์กที่รองรับวิธีการต่าง ๆ ทำงานกับรูปทรงเรขาคณิตและปัญหาที่ซับซ้อนคุณจะเลือกอะไรและทำไม

1
วิธีสร้างปริมาณ จำกัด ที่สมดุลและวิธี Galerkin ที่ไม่ต่อเนื่องสำหรับ PDE แบบไฮเปอร์โบลิกที่มีเงื่อนไขแหล่งที่มา?
คำศัพท์ต้นฉบับเช่นคำว่า Bathymetry ในสมการน้ำตื้นจำเป็นต้องบูรณาการในลักษณะพิเศษเพื่อรักษาสถานะคงตัวทางกายภาพ มีวิธีการทั่วไปในการสร้างวิธีการที่สมดุลหรือไม่หรือต้องใช้เทคนิคพิเศษสำหรับแต่ละสมการ?

1
มีวิธีใดบ้างในการแก้สมการออยเลอร์แบบกดได้
ฉันต้องการเขียนตัวแก้สมการออยเลอร์แบบกดได้และที่สำคัญที่สุดคือฉันต้องการให้มันทำงานได้อย่างมีประสิทธิภาพในทุกสถานการณ์ ฉันต้องการให้เป็นแบบ FE (DG ใช้ได้) วิธีการที่เป็นไปได้คืออะไร? ฉันตระหนักถึงการทำลำดับที่ 0 DG (ปริมาณ จำกัด ) และควรทำงานอย่างมีประสิทธิภาพ ฉันใช้ตัวแก้ไข FVM พื้นฐานและใช้งานได้ดี แต่การบรรจบกันค่อนข้างช้า อย่างไรก็ตามนี่เป็นทางเลือกหนึ่งอย่างแน่นอน ฉันใช้ตัวแก้ไข FE (ใช้ได้กับทุก ๆ ตาข่ายและคำสั่งพหุนามในองค์ประกอบใด ๆ ) สำหรับสมการเชิงเส้นออยเลอร์ แต่ฉันได้รับการแกว่งลวงตา ฉันได้อ่านในวรรณคดีว่าต้องมีเสถียรภาพ หากฉันใช้การทำให้มีเสถียรภาพบางอย่างนั่นจะทำงานได้ดีสำหรับปัญหาทั้งหมด (= เงื่อนไขขอบเขตและรูปทรงเรขาคณิต) หรือไม่ อัตราการลู่เข้าจะเป็นอย่างไร? นอกเหนือจากนั้นมีวิธีการที่แข็งแกร่งอื่น ๆ สำหรับสมการออยเลอร์ (เช่นลำดับ DG ที่สูงขึ้นด้วยการทำให้มีเสถียรภาพ) ฉันรู้ว่าหลายคนลองใช้สิ่งต่าง ๆ มากมายในรหัสการวิจัยของพวกเขา แต่ฉันสนใจวิธีการที่แข็งแกร่งซึ่งใช้ได้กับรูปทรงเรขาคณิตและเงื่อนไขขอบเขตทั้งหมด (แก้ไข: ในรูปแบบ 2D และ 3D)

3
ในทางคณิตศาสตร์เหตุใดเวกเตอร์จำนวนมาก / โหลดเวคเตอร์จะทำงานอย่างไร
ฉันรู้ว่าผู้คนมักจะแทนที่เมทริกซ์มวลสม่ำเสมอด้วยเมทริกซ์แนวทแยง ในอดีตฉันยังได้ติดตั้งโค้ดที่โหลดเวคเตอร์นั้นประกอบกันเป็นก้อนแทนที่จะเป็นแบบ FEM ที่สอดคล้องกัน แต่ฉันไม่เคยตรวจสอบสาเหตุที่เราได้รับอนุญาตให้ทำตั้งแต่แรก สัญชาตญาณหลังการจับก้อนก้อนที่อนุญาตให้ใช้กับมวลและโหลดเวกเตอร์คืออะไร การให้เหตุผลทางคณิตศาสตร์สำหรับมันคืออะไร? ในกรณีใดบ้างที่ไม่ได้รับอนุญาตให้ใช้ก้อน / ไม่เหมาะสำหรับมวลและโหลดเวกเตอร์?

2
รูปแบบการออกแบบในการเขียนซอฟต์แวร์ตัวเลขใน C ++
ฉันกำลังมองหาแหล่งข้อมูลเกี่ยวกับรูปแบบการออกแบบและหลักการของซอฟต์แวร์เชิงตัวเลขซึ่งอาจเป็นไปได้ แต่ไม่จำเป็นต้องให้ความสำคัญกับวิธีการเชิงวัตถุกับรหัสตัวเลข ฉันตระหนักถึงข้อความการเขียนซอฟต์แวร์ทางวิทยาศาสตร์: คู่มือสำหรับสไตล์ที่ดีแต่สิ่งนี้ยังเกี่ยวข้องกับสิ่งต่าง ๆ มากมายเช่นประเด็นประเด็นลอยวิธีและเวลาในการปรับให้เหมาะสม ฯลฯ ฉันกำลังมองหาข้อมูลเกี่ยวกับภาพใหญ่ของการออกแบบรหัสตัวเลขไม่ใช่ทุกอย่างที่เกี่ยวข้องกับอัลกอริทึมและสิ่งที่คล้ายกัน ฉันหวังว่าจะมีแหล่งข้อมูลสำหรับสิ่งนี้และไม่มีใครเหลือที่จะเข้าใช้ห้องสมุดหลังจากห้องสมุดโดยเฉพาะอย่างยิ่งเนื่องจากไม่มีแนวทางในการออกแบบสิ่งที่ถูกต้องอย่างชาญฉลาด (นี่ไม่ใช่ภาษาเฉพาะ แต่ถ้ามีเนื้อหาเฉพาะภาษาใด ๆ ฉันต้องการ C ++)

2
การกำหนดเงื่อนไข krylov ด้วยวิธี krylov อื่น
ในวิธีเช่น gmres หรือ bicgstab มันน่าดึงดูดใจที่จะใช้อีกวิธี krylov เป็น preconditioner หลังจากทั้งหมดพวกเขาจะใช้งานง่ายในวิธีที่ปราศจากเมทริกซ์และในสภาพแวดล้อมแบบคู่ขนาน ตัวอย่างเช่นหนึ่ง coul ใช้การวนซ้ำสองครั้ง (สมมติว่า ~ 5) ของ bigcstab ที่ไม่มีเงื่อนไขในฐานะ precontioner สำหรับ gmres หรือการรวมกันของวิธี krylov อื่น ๆ ฉันไม่พบการอ้างอิงถึงวิธีการดังกล่าวในครอกดังนั้นฉันคาดหวังว่านี่เป็นเพราะมันไม่ได้มีประสิทธิภาพมาก ฉันต้องการที่จะเข้าใจว่าทำไมมันไม่มีประสิทธิภาพ มีกรณีที่เป็นตัวเลือกที่ดีหรือไม่? ในการวิจัยของฉันฉันสนใจเกี่ยวกับวิธีการแก้ปัญหาของรูปไข่ 3 มิติในสภาพแวดล้อมแบบขนาน (mpi)

3
ไฟล์ HDF5 เหมาะสมสำหรับการควบคุมการแก้ไข git หรือไม่?
ฉันไม่คุ้นเคยกับรูปแบบไฟล์ที่ใช้ใน HDF5 แต่ฉันสงสัยว่าไฟล์ HDF5 เหมาะสมสำหรับการควบคุมการแก้ไขด้วย git (หรือตัวอย่างเช่น Mercurial หรือ Subversion) หรือไม่ ฉันเดาว่าฉันหมายถึงอะไร: ไฟล์ HDF5 เหมาะสำหรับการกระจายแบบ line-based หรือคอมไพล์จะต้องรักษา HDF5 เป็นไบนารี่ขนาดใหญ่หนึ่งไฟล์และจัดเก็บสำเนาทั้งหมดสำหรับการแก้ไขแต่ละครั้งหรือไม่

1
เหตุใดการตรึงจุดเพื่อลบช่องว่างที่ไม่ถูกต้อง
สมการปัวซองที่มีเงื่อนไขขอบเขตของนอยมันน์ทั้งหมดมีช่องว่างมิติคงที่เดียว เมื่อแก้ปัญหาด้วยวิธี Krylov พื้นที่ว่างสามารถลบได้ด้วยการลบค่าเฉลี่ยของการแก้ปัญหาแต่ละการวนซ้ำหรือโดยการตรึงค่าของจุดยอดเดียว การปักจุดสุดยอดเพียงจุดเดียวมีข้อดีของความเรียบง่ายและหลีกเลี่ยงการลดลงทั่วโลกต่อการฉายภาพ อย่างไรก็ตามมันมักจะถูกมองว่าไม่ดีเนื่องจากมีผลต่อการปรับสภาพ ดังนั้นฉันจึงหักค่าเฉลี่ยเสมอ อย่างไรก็ตามทั้งสองวิธีนั้นต่างกันมากที่สุดโดยการแก้ไขอันดับ 2 ดังนั้นตาม (1) พวกเขาควรมาบรรจบกันในจำนวนการวนซ้ำเกือบเท่าเดิม การใช้เหตุผลนี้ถูกต้องหรือมีเหตุผลเพิ่มเติมว่าการปักหมุดเป็นจุดที่ไม่ดี (อาจจะไม่แน่นอนทางคณิตศาสตร์) (1): การปรับระดับต่ำส่งผลต่อการลู่เข้าของวิธี Krylov อย่างไร

1
เหตุใดการรวมตัวแบบก้าวกระโดดจึงเป็น symplectic และ RK4 หากไม่แม่นยำกว่า
ในระบบที่ควรอนุรักษ์พลังงานในทางทฤษฎีการจำลองที่แม่นยำที่สุดจะประหยัดพลังงาน (รวมถึงการให้ตำแหน่งที่ถูกต้องความเร็วและอื่น ๆ ) RK4 นั้นแม่นยำกว่าเกมเสือข้ามห้วย แต่กระโชกประหยัดพลังงานและ RK4 ไม่ได้ ทำไมนี้

1
การแก้ปัญหาที่แข็งแกร่งและอ่อนแอของ PDE
แบบฟอร์มที่แข็งแกร่งของ PDE ต้องว่าวิธีการแก้ปัญหาที่ไม่รู้จักอยู่ใน 2 แต่รูปแบบที่อ่อนแอต้องใช้เพียงว่าวิธีการแก้ปัญหาที่ไม่รู้จักอยู่ในเอช 1H2H2H^2H1H1H^1 คุณตกลงกันได้อย่างไร

3
การปรับพื้นผิวโดยนัยให้เหมาะสมกับจุดที่ตั้งไว้
ฉันมีคำถามเกี่ยวกับรูปสี่เหลี่ยมจัตุรัสพอดีกับชุดของจุดและบรรทัดฐานที่สอดคล้องกัน (หรือเทียบเท่าแทนเจนต์) มีการสำรวจพื้นผิวรูปสี่เหลี่ยมจัตุรัสที่เหมาะสมกับข้อมูล ผลงานบางส่วนมีดังนี้: การติดตั้งโดยตรงแบบ จำกัด ประเภทของพื้นผิว Quadric , James Andrews, Carlo H. Sequin การออกแบบโดยใช้คอมพิวเตอร์ช่วยและการใช้งาน, 10 (a), 2013, bbb-ccc การปรับพีชคณิตของพื้นผิวสี่เหลี่ยมจัตุรัสกับข้อมูล , I. Al-Subaihi และ GA Watson , มหาวิทยาลัยดันดี เหมาะสมกับรูปทรง projective ยังถูกปกคลุมด้วยผลงานบางอย่างเช่นนี้ จากผลงานทั้งหมดนี้ฉันคิดว่าวิธีการของ Taubin สำหรับ Quadric fitting ค่อนข้างเป็นที่นิยม: G. Taubin "การประมาณความโค้งของระนาบพื้นผิวและส่วนโค้งของอวกาศที่ไม่ได้ถูกกำหนดโดยสมการโดยนัยซึ่งมีการประยุกต์ใช้กับการแบ่งส่วนภาพขอบและช่วง ", IEEE Trans PAMI, Vol. 13, 1991, pp1115-1138 ขอสรุปสั้น ๆ …

1
สมการการพาความร้อนแบบแปรผันกับความเร็วสามารถลดลงได้ไหม?
ฉันพยายามที่จะเข้าใจสมการการพาความร้อนด้วยสัมประสิทธิ์ความเร็วตัวแปรที่ดีขึ้นเล็กน้อย โดยเฉพาะฉันไม่เข้าใจว่าสมการจะอนุรักษ์ได้อย่างไร สมพา , ∂u∂t+∂∂x(vu)=0∂u∂t+∂∂x(vu)=0 \frac{\partial u}{\partial t} + \frac{\partial}{\partial x}(\boldsymbol{v}u) = 0 เรามาตีความว่าเป็นความเข้มข้นของสปีชีส์ทางกายภาพบางชนิด ( c m - 3 ) หรือปริมาณทางกายภาพอื่น ๆ ที่ไม่สามารถสร้างหรือทำลายได้ หากเรารวมu ( x , t ) เข้ากับโดเมนของเราเราก็ควรจะได้รับค่าคงที่u(x,t)u(x,t)u(x,t)cm−3cm−3cm^{-3}u(x,t)u(x,t)u(x,t) ∫xmaxxminu(x,t)dx=constant∫xminxmaxu(x,t)dx=constant \int_{x_{\text{min}}}^{x_{\text{max}}} u(x,t) dx = \text{constant} (นี่คือสิ่งที่ฉันหมายถึงโดยการอนุรักษ์นิยม) ถ้าเราปล่อยให้ความเร็วเป็นฟังก์ชันของอวกาศ (และเวลา), ดังนั้นกฎลูกโซ่จะต้องถูกนำมาใช้เพื่อให้v(x,t)v(x,t)\boldsymbol{v}(x,t) ∂u∂t+v∂u∂x+u∂v∂x?=0∂u∂t+v∂u∂x+u∂v∂x⏟?=0 \frac{\partial u}{\partial t} + \boldsymbol{v}\frac{\partial u}{\partial x} + \underbrace{u\frac{\partial …

2
วิธีที่มีประสิทธิภาพมากที่สุดในการเขียนลูป 'for' ใน Matlab คืออะไร
ฉันได้อ่านแล้วว่าถ้าเช่นฉันมี double forloop ที่วิ่งอยู่เหนือ index ของเมทริกซ์จากนั้นการวางดัชนีการรันคอลัมน์ในลูปด้านนอกนั้นมีประสิทธิภาพมากกว่า ตัวอย่างเช่น: a=zeros(1000); for j=1:1000 for i=1:1000 a(i,j)=1; end end วิธีที่มีประสิทธิภาพมากที่สุดในการเขียนโค้ดคืออะไรถ้าฉันมีforลูปสามลูปขึ้นไป ตัวอย่างเช่น: a=zeros(100,100,100); for j=1:100 for i=1:100 for k=1:100 a(i,j,k)=1; end end end

2
สำหรับข้อมูลที่มีเสียงดังหรือมีโครงสร้างที่ดีจะมีกำลังสองดีกว่ากฎจุดกึ่งกลางหรือไม่
คำถามสองข้อแรกเท่านั้นที่มีความสำคัญ อื่น ๆ เป็นเพียงภาพประกอบ พื้นหลัง สี่เหลี่ยมจัตุรัสขั้นสูงเช่นคอมโพสิตระดับสูงกว่านิวตัน –Cotes, Gauß – Legendre และ Romberg ส่วนใหญ่จะมีไว้สำหรับกรณีที่หนึ่งสามารถตัวอย่างฟังก์ชั่นอย่างละเอียด แต่ไม่รวมการวิเคราะห์ อย่างไรก็ตามสำหรับฟังก์ชั่นที่มีโครงสร้างที่ดีกว่าช่วงเวลาการสุ่มตัวอย่าง (ดูภาคผนวก A สำหรับตัวอย่าง) หรือเสียงการวัดพวกเขาไม่สามารถแข่งขันด้วยวิธีง่าย ๆ เช่นกฎกึ่งกลางหรือกฎสี่เหลี่ยมคางหมู (ดูภาคผนวก B สำหรับการสาธิต) สิ่งนี้ค่อนข้างใช้งานง่ายเช่นกฎคอมโพสิตของซิมป์สันนั้น“ ทิ้ง” หนึ่งในสี่ของข้อมูลโดยการกำหนดน้ำหนักให้ต่ำลง เหตุผลเดียวที่ทำให้รูปสี่เหลี่ยมจัตุรัสดังกล่าวดีกว่าสำหรับฟังก์ชั่นที่น่าเบื่ออย่างเพียงพอนั่นคือการจัดการผลกระทบของเส้นขอบอย่างเหมาะสมนั้นมีมากกว่าผลกระทบของข้อมูลที่ถูกทิ้ง จากมุมมองอื่นมันชัดเจนสำหรับฉันว่าสำหรับฟังก์ชั่นที่มีโครงสร้างหรือเสียงที่ดีตัวอย่างที่อยู่ห่างจากชายแดนของโดเมนการรวมจะต้องมีระยะเวลาเท่ากันและมีน้ำหนักเกือบเท่ากัน (สำหรับตัวอย่างจำนวนมาก ) ในทางกลับกันการสร้างพื้นที่สี่เหลี่ยมจัตุรัสของฟังก์ชั่นดังกล่าวอาจได้รับประโยชน์จากการจัดการผลกระทบชายแดนที่ดีกว่า คำถาม สมมติว่าฉันต้องการรวมข้อมูลที่มีโครงสร้างแบบมิติเดียวที่มีเสียงดังหรือแบบละเอียด จำนวนของจุดสุ่มตัวอย่างได้รับการแก้ไข (เนื่องจากการประเมินฟังก์ชั่นมีราคาแพง) แต่ฉันสามารถวางมันได้อย่างอิสระ อย่างไรก็ตามฉัน (หรือวิธีการ) ไม่สามารถวางจุดสุ่มตัวอย่างแบบโต้ตอบเช่นขึ้นอยู่กับผลลัพธ์จากจุดสุ่มตัวอย่างอื่น ๆ ฉันยังไม่ทราบภูมิภาคที่มีปัญหาที่อาจเกิดขึ้นก่อน ดังนั้นบางอย่างเช่นGauß – Legendre (จุดสุ่มตัวอย่างที่ไม่เท่ากัน) ก็โอเค การสร้างพื้นที่สี่เหลี่ยมจัตุรัสปรับตัวไม่ได้เนื่องจากต้องการจุดสุ่มตัวอย่างแบบโต้ตอบ มีวิธีการใดที่นอกเหนือไปจากวิธีการจุดกึ่งกลางที่เสนอสำหรับกรณีเช่นนี้หรือไม่? หรือ: …

2
การสังเกตแบบจุดต่อจุดและต่อเนื่องในปัญหาการผกผันของ PDE
ฉันทำงานกับปัญหาผกผันสำหรับปริญญาเอกของฉัน การวิจัยซึ่งเพื่อประโยชน์ของความเรียบง่ายที่เราจะพูดคือการกำหนดในββ\beta L(β)u≡−∇⋅(k0eβ∇u)=fL(β)u≡−∇⋅(k0eβ∇u)=fL(\beta)u \equiv -\nabla\cdot(k_0e^\beta\nabla u) = f จากข้อสังเกตบางอย่าง ; เป็นค่าคงที่และเป็นที่รู้จัก นี่คือสูตรโดยทั่วไปว่าเป็นปัญหาการปรับให้เหมาะสมที่สุดuouou^ok0k0k_0fff J[u,λ;β]=12∫Ω(u(x)−uo(x))2dx+∫Ωλ(L(β)u−f)dxJ[u,λ;β]=12∫Ω(u(x)−uo(x))2dx+∫Ωλ(L(β)u−f)dxJ[u, \lambda; \beta] = \frac{1}{2}\int_\Omega(u(x) - u^o(x))^2dx + \int_\Omega\lambda(L(\beta)u - f)dx โดยที่คือตัวคูณ Lagrange ฟังก์ชันอนุพันธ์ของเทียบกับสามารถคำนวณได้โดยการแก้สมการ adjointλλ\lambdaJJJββ\beta L(β)λ=u−uo.L(β)λ=u−uo.L(\beta)\lambda = u - u^o. ฟังก์ชั่นการทำให้เป็นปกติบางอย่างถูกเพิ่มเข้าไปในปัญหาด้วยเหตุผลปกติR[β]R[β]R[\beta] สมมติฐานที่ไม่ได้พูดว่านี่คือข้อมูลที่สังเกตมีการกำหนดไว้อย่างต่อเนื่องตลอดโดเมน\ฉันคิดว่ามันอาจเหมาะสมกว่าสำหรับปัญหาของฉันที่จะใช้แทนuouou^oΩΩ\Omega J[u,λ;β]=∑Nn=1(u(xn)−uo(xn))22σ2n+∫Ωλ(L(β)u−f)dxJ[u,λ;β]=∑n=1N(u(xn)−uo(xn))22σn2+∫Ωλ(L(β)u−f)dxJ[u, \lambda; \beta] = \sum_{n = 1}^N\frac{(u(x_n) - u^o(x_n))^2}{2\sigma_n^2} + \int_\Omega\lambda(L(\beta)u - f)dx โดยที่เป็นจุดที่ทำการวัดและคือค่าเบี่ยงเบนมาตรฐานของการวัด -th การวัดของสนามนี้มักจะขาด …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.