เงื่อนไขขอบเขตควรใช้อย่างไรเมื่อใช้วิธีไฟไนต์วอลโวลุ่ม?


16

จากคำถามก่อนหน้านี้ฉันพยายามใช้เงื่อนไขขอบเขตกับตาข่ายปริมาณ จำกัด ที่ไม่สม่ำเสมอนี้

ขอบเขตด้านซ้ายมือรวมถึงเซลล์ผี

ฉันต้องการใช้เงื่อนไขขอบเขตประเภทโรบินกับ lhs ของโดเมน ( x=xL)เช่นนั้น

σL=(dux+au)|x=xL

โดยที่เป็นค่าขอบเขต a , dคือสัมประสิทธิ์ที่กำหนดบนขอบเขต, การพาและการแพร่ตามลำดับ; คุณx = คุณσLa,d , คืออนุพันธ์ของu ที่ประเมินที่ขอบเขตและuคือตัวแปรที่เรากำลังแก้ux=uxuu

แนวทางที่เป็นไปได้

ฉันสามารถนึกถึงสองวิธีในการใช้เงื่อนไขขอบเขตนี้บนตาข่ายปริมาณ จำกัด ข้างต้น:

  1. วิธีเซลล์ผี

    เขียนเป็นความแตกต่างอัน จำกัด รวมถึงเซลล์ผี σ L = d u 1 - u 0ux

    σL=du1u0h+au(xL)

    A. จากนั้นใช้เชิงเส้นการแก้ไขที่มีจุดและx 1เพื่อหาค่ากลางU ( x L )x0x1u(xL)

    B. หรือหาโดยหาค่าเฉลี่ยของเซลล์u ( x L ) = 1u(xL)u(xL)=12(u0+u1)

    ไม่ว่าในกรณีใดการพึ่งพาเซลล์ผีสามารถกำจัดได้ในวิธีปกติ (ผ่านการทดแทนในสมการปริมาณ จำกัด )

  2. วิธีการประมาณค่า

    พอดีกับฟังก์ชันเชิงเส้น (หรือกำลังสอง) กับโดยใช้ค่าที่จุดx 1 , x 2 ( x 3 ) นี้จะช่วยให้ค่าที่U ( x L ) ฟังก์ชันเชิงเส้น (หรือกำลังสอง) สามารถแยกความแตกต่างเพื่อค้นหานิพจน์สำหรับค่าของอนุพันธ์, u x ( x L ) , ที่ขอบเขต วิธีการนี้ไม่ได้ใช้เซลล์ผีu(x)x1,x2x3u(xL)ux(xL)

คำถาม

  • วิธีใดในสาม (1A, 1B หรือ 2) คือ "มาตรฐาน" หรือคุณอยากจะแนะนำ
  • วิธีใดที่ทำให้เกิดข้อผิดพลาดน้อยที่สุดหรือเสถียรที่สุด?
  • ฉันคิดว่าฉันสามารถใช้วิธีเซลล์ผีได้ด้วยตัวเองอย่างไรก็ตามวิธีการประมาณด้วยวิธีสามารถใช้งานได้วิธีนี้มีชื่อหรือไม่
  • มีความแตกต่างของเสถียรภาพระหว่างการปรับฟังก์ชั่นเชิงเส้นหรือสมการกำลังสองหรือไม่?

สมการเฉพาะ

ฉันต้องการใช้ขอบเขตนี้กับสมการการแพร่ - การแพร่กระจาย (ในรูปแบบการอนุรักษ์) กับคำที่ไม่ใช่เชิงเส้น

ut=aux+duxx+s(x,u,t)

Discretising สมการนี้ในข้างต้นตาข่ายใช้ -method ให้,θ

wjn+1θrawj1n+1θrbwjn+1θrcwj+1n+1=wjn+(1θ)rawj1n+(1θ)rbwjn+(1θ)rcwj+1n+s(xj,tn)

อย่างไรก็ตามสำหรับขอบเขตของจุด ( ) ฉันชอบที่จะใช้แบบแผนโดยนัย ( θ = 1 ) เพื่อลดความซับซ้อนj=1θ=1

w1n+1raw0n+1rbw1n+1rcw2n+1=w1n+s1n

สังเกตุเห็นจุดโกสต์สิ่งนี้จะถูกลบออกโดยใช้เงื่อนไขขอบเขตw0n+1

สัมประสิทธิ์มีคำจำกัดความ

ra=Δthj(ahj2h+dh)

rb=Δthj(a2[hj1hhj+1h+]+d[1h1h+])

rc=Δthj(ahj2h++dh+)

ทั้งหมด " ตัวแปร" จะถูกกำหนดเป็นในแผนภาพข้างต้น ในที่สุดΔ tซึ่งเป็นขั้นตอนเวลา ( NBนี้เป็นกรณีที่ง่ายด้วยค่าสัมประสิทธิ์aและdคงที่ในทางปฏิบัติค่าสัมประสิทธิ์ " r " นั้นซับซ้อนกว่าด้วยเหตุผลนี้เล็กน้อย)hΔtadr


1
หนังสือเล่มล่าสุดของ LeVeque เกี่ยวกับวิธีการปริมาณ จำกัด สนับสนุนเซลล์ผีเนื่องจากความเรียบง่ายของการใช้งาน แต่ฉันจำการอภิปรายของข้อผิดพลาดไม่ได้
Geoff Oxberry

คุณสามารถใส่สมการที่คุณต้องการแก้ลงไปได้ไหม วิธีที่จะไปจะขึ้นอยู่กับปัญหา ยกตัวอย่างเช่นมันอาจเป็นไปได้ว่าเนื่องจากส่วน 'นอยมันน์' เงื่อนไขขอบเขตจึงเป็นเหมือนการแก้ไขตามธรรมชาติในสูตรที่ไม่ต่อเนื่อง
Jan

@GeoffOxberry ขอบคุณสำหรับคำแนะนำ ฉันมีความสุขที่ใช้เซลล์ผีฉันจะพยายามและนำไปใช้ในทางนั้น
boyfarrell

@Jan I initially avoided putting the equations down because of the complexity due to the non-uniform mesh discretisation, but I just updated the question with these details. This is an advection-diffusion problem. I'm not too sure what you mean by "naturally resolved".
boyfarrell

0hdx(au+dux)dx=(au+dux)|x=h1(au+dux)|x=0=sux on the boundary, there is no need to discretize it.
Jan

คำตอบ:


9

This is rather a general remark on FVM than an answer to the concrete questions. And the message is that there shouldn't be the need for such an adhoc discretization of the boundary conditions.

Unlike in FE- or FD-methods, where the starting point is a discrete ansatz for the solution, the FVM approach leaves the solution untouched (at first) but averages on a segmentation of the domain. The discretization of the solution comes into play only when the obtained system of balance equations is turned into an algebraic equation system by approximating the fluxes across the interfaces.

In this sense, in view of the boundary conditions, I advise to stick to the continuous form of the solution as long as possible and to introduce the discrete approximations only at the very end.

Say, the equation

ut=aux+duxx+s(x,u,t)
holds on the entire domain. Then it holds on the subdomain [0,h1), and an integration in space gives
0h1utdx=0h1x(au+dux)dx+0h1s(x,u,t)dx=(au+dux)|x=h1(au+dux)|x=0+0h1s(x,u,t)dx,
which is the contribution of the first cell to the equation system. Note that, apart from taking only averages, there has been no discretization of u.

But now, to turn this into an algebraic equation, one typically assumes that on cell Ci the function u is constant in space, i.e. u(t,x)|Ci=ui(t). Thus, having associated u(xi)ui, one can express ux|hi at the cell boarders via the difference quotient in ui and ui+1. To express u at the cell boarders one can use interpolation (i.e. central differences or upwind schemes).

What to do at the boundary? In the example, it is all about approximating (au+dux)|x=0, no matter what has been done to u so far.

  • Given u|x=0=gD one can introduce a ghost cell and the condition that an interpolant between u0 and u1 is equal to gD at the boarder.

  • Given ux|x=0=gN one can introduce a ghost cell and the condition that an approximation to the derivative between u0 and u1 matches gN at the boarder

  • If the flux itself is prescribed: (au+dux)|x=0=gR, there is no need for a discretization.

However, I am not sure, what to do in the case that there are Robin type bc's that do not match the flux directly. This, will need some regularization because of the discontinuity of the advection and diffusion parameters.


===> Some personal thoughts on FVM <===

  • FVM is not a scaled FDM, as examples of 1D Poisson's equations on a regular grid often suggest
  • There shouldn't be a grid in FVM, there should be cells with interfaces and, if necessary, centers
  • That's why I think that a stencil formulation of the discretization is not suitable
  • Assembling of the equation system should be done according to the discretization approach, i.e. by iterating over the cells rather than defining an equation for every unknown. I mean to think of the i-th row of the coefficient matrix as the part of the problem posed on cell Ωi, rather than of the equation that is associated with ui.
  • This is particularly important for 2D or 3D problems but may also help to have a clear notation in 1D: Make a difference between the volume (in 1D: length) of the cell, here hi, and the distance between the centers, maybe in 1D: di:=di,i+1=|xixi+1|.


Thanks for your guidance while I was learning about this method. Maybe I can share my thoughts too. I agree it is best to say with the FVM form for as long as possible; particularly for the boundary conditions as you have shown! But I think it is very helpful when implementing to write the equation in matrix form; it is a precise and clear notation. Also, the stability and other numerical properties crucially depend on how the problem is discretised (for FVM this means how the fluxes an the cell faces are approximated). In that respect I prefer a matrix equations, to iteration over cells.
boyfarrell

Maybe my last point was ambiguous. In the end, you will have a coefficient matrix and a variable vector. I will edit my post. I was more about interpreting than actually doing.
Jan

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