Questions tagged «boundary-conditions»

对于使用偏微分方程对特定现象进行建模所必需的条件的选择和/或适当性方面的问题。

1
对流扩散方程使用诺伊曼边界条件时的物理量守恒
当我应用不同的边界条件时,我不理解对流扩散方程的不同行为。我的动机是模拟在扩散和对流作用下的实际物理量(粒子密度)。除非从边缘流出颗粒密度,否则内部应保持颗粒密度。按照这种逻辑,如果我强制执行Neumann边界条件,则系统的两端,例如(在左侧和右侧),则系统应“封闭”,即如果边界处的通量为零,则没有粒子可以逸出。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0 对于以下所有模拟,我已将Crank-Nicolson离散化应用于对流扩散方程,所有模拟都具有边界条件。但是,对于矩阵的第一行和最后一行(边界条件行),我允许独立于内部值进行更改。这允许端点完全隐式。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0ββ\beta 下面我讨论4种不同的配置,只有一种是我所期望的。最后,我讨论了我的实现。 仅扩散限制 在此,通过将速度设置为零来关闭对流项。 仅扩散,所有点均为ββ\boldsymbol{\beta} = 0.5(Crank-Niscolson) 如脉冲面积减小所见,该量不守恒。 仅扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 通过在边界上使用完全隐式方程,可以实现我所期望的:没有粒子逸出。您可以通过保留粒子扩散的区域来看到这一点。为什么在边界点选择影响情况的物理性?这是错误还是预期的?ββ\beta 扩散和平流 当包括对流项时,边界处的值似乎不会影响解。但是,对于所有情况,当边界似乎是“开放的”时,即粒子可以逃脱边界。为什么会这样呢?ββ\beta 在所有点上具有 = 0.5(Crank-Niscolson)的对流和扩散ββ\boldsymbol{\beta} 对流和扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 对流扩散方程的实现 从对流扩散方程开始, ∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x \frac{\partial \phi}{\partial t} = D\frac{\partial^2 \phi}{\partial x^2} + \boldsymbol{v}\frac{\partial \phi}{\partial x} 使用Crank-Nicolson进行写作, ϕn+1j−ϕnjΔt=D[1−β(Δx)2(ϕnj−1−2ϕnj+ϕnj+1)+β(Δx)2(ϕn+1j−1−2ϕn+1j+ϕn+1j+1)]+v[1−β2Δx(ϕnj+1−ϕnj−1)+β2Δx(ϕn+1j+1−ϕn+1j−1)]ϕjn+1−ϕjnΔt=D[1−β(Δx)2(ϕj−1n−2ϕjn+ϕj+1n)+β(Δx)2(ϕj−1n+1−2ϕjn+1+ϕj+1n+1)]+v[1−β2Δx(ϕj+1n−ϕj−1n)+β2Δx(ϕj+1n+1−ϕj−1n+1)] \frac{\phi_{j}^{n+1} - \phi_{j}^{n}}{\Delta t} = …

4
如何将边界条件与Galerkin方法结合在一起?
我一直在网上阅读一些有关Galerkin方法来解决PDE的资源,但是我不清楚。以下是我对我所了解的内容的描述。 请考虑以下边值问题(BVP): L [ u (x ,y)] = 0上(x ,y)∈ Ω ,小号[ u ] = 0上(x ,y)∈ ∂&ΩL[u(x,y)]=0on(x,y)∈Ω,S[u]=0on(x,y)∈∂ΩL[u(x,y)]=0 \quad \text{on}\quad (x,y)\in\Omega, \qquad S[u]=0 \quad \text{on} \quad (x,y)\in\partial\Omega 其中是二阶线性微分算子,是BVP的域,是该域的边界,而是一阶线性微分算子。将为以下形式的近似值:Ω ⊂ - [R 2∂&Ω 小号ù (X ,ÿ )大号LLΩ ⊂ ř2Ω⊂R2\Omega\subset\mathbb{R}^2∂Ω∂Ω\partial\Omega小号SSù (X ,ÿ)u(x,y)u(x,y) u(x,y)≈∑i=1Naigi(x,y)u(x,y)≈∑i=1Naigi(x,y)u(x,y)\approx \sum_{i=1}^N a_i g_i(x,y) 其中是我们将用来近似一组函数。替代BVP:gigig_iuuu ∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)\sum_i a_i L[g_i(x,y)]=R(a_1,...,a_N,x,y) 由于我们的近似值不精确,因此残差不完全为零。在Galerkin-Ritz-Raleigh方法中,通过要求我们将相对于逼近函数集最小化。因此[R ⟨ …

1
尼采法在数值分析中的总体思路是什么?
我知道Nitsche方法是一种非常吸引人的方法,因为它允许在不使用Lagrange乘数的情况下考虑Dirichlet类型的边界条件或以较弱的方式与摩擦边界条件接触。它的优点是,将实现实现与模型相关,这是将Dirichlet边界条件类似于Neumann边界条件转换为弱项的优势。 但是,这对我来说似乎太笼统了。您能给我更具体的想法吗?一个简单的例子将不胜感激。

1
使用有限体积法时应如何应用边界条件?
从上一个问题开始,我试图将边界条件应用于该非均匀有限体积网格, 我想将Robin类型的边界条件应用于域的lhs(,这样,x=xL)x=xL)x=x_L) σL=(dux+au)∣∣∣x=xLσL=(dux+au)|x=xL \sigma_L = \left( d u_x + a u \right) \bigg|_{x=x_L} 其中是边界值; a ,d是分别在边界,对流和扩散上定义的系数;Ù X = ∂ ùσLσL\sigma_La,da,da, d,是的衍生物ü在边界评价和ü为我们所求解的变量。ux=∂u∂xux=∂u∂xu_x = \frac{\partial u}{\partial x}uuuuuu 可能的方法 我可以想到两种在上述有限体积网格上实现此边界条件的方法: 鬼细胞方法。 将写为包括虚像元的有限差。σ 大号 = ð Ü 1 - ü 0uxuxu_xσL=du1−u0h−+au(xL)σL=du1−u0h−+au(xL) \sigma_L = d \frac{u_1 - u_0}{h_{-}} + a u(x_L) A.然后对点x 0和x 1使用线性插值法求中间值u (x …

2
用Neumann边界条件写泊松方程有限差分矩阵
我对使用有限差分法求解泊松方程感兴趣。我想更好地了解如何用Neumann边界条件编写矩阵方程。有人会审查以下内容,对吗? 有限差分矩阵 泊松方程, ∂2u(x)∂x2=d(x)∂2u(x)∂x2=d(x) \frac{\partial^2u(x)}{\partial x^2} = d(x) 可以用有限差分矩阵方程近似 1(Δx)2M∙u^=d^1(Δx)2M∙u^=d^ \frac{1}{(\Delta x)^2} \textbf{M}\bullet \hat u = \hat d 其中是矩阵,和是(列)向量, Ñ × Ñ ù ð 1 × Ñ中号中号\textbf{M}n × nñ×ñn \times nü^ü^\hat ud^d^\hat d1 × n1个×ñ1 \times n 添加Neumann边界条件 诺伊曼边界条件会在边界处强制产生一个已知通量(此处我们将其应用到边界位于的左侧),x = 0X=0x=0 ∂u (x = 0 )∂X= σ∂ü(X=0)∂X=σ \frac{\partial u(x=0)}{\partial x} …

4
用有限差分法离散对流方程的边界条件
我试图找到一些资源来帮助解释在使用有限差分法求解PDE时如何选择边界条件。 我目前可以使用的所有书籍和笔记都说类似的话: 对于介绍性文本而言,在存在边界的情况下管理稳定性的一般规则过于复杂。他们需要复杂的数学机制 (A. Iserles微分方程数值分析的第一门课程) 例如,当尝试为平流方程实施两步越级方法时: un+1i=un−1i+μ(uni+1−uni−1)uin+1=uin−1+μ(ui+1n−ui−1n)u_i^{n+1} = u_i^{n-1} + \mu (u_{i+1}^n - u_{i-1}^n) 使用MATLAB M = 100; N = 100; mu = 0.5; c = [mu 0 -mu]; f = @(x)(exp(-100*(x-0.5).^2)); u = zeros (M, N); x = 1/(M+1) * (1:M); u(:,1) = f(x); u(:,2) = f(x + mu/(M+1)); …

2
] 0,1 []中热方程的周期边界条件
让我们考虑一个平滑的初始条件和热方程在一个维度: 在开区间] 0 ,1 [,让我们假设我们想要与有限差分数值求解。∂tu=∂xxu∂tu=∂xxu \partial_t u = \partial_{xx} u]0,1[]0,1[]0,1[ 我知道,要使我的问题很好地解决,我需要赋予它和x = 1的边界条件。我知道Dirichlet或Neumann都能很好地工作。x=0x=0x=0x=1x=1x=1 如果我在第一种情况下有内部点x k = kNNN表示k=1,⋯,N,则我有N个未知数:uk=u(xk)表示k=1,⋯,N,因为u是在边界处规定的。xk=kN+1xk=kN+1x_k=\frac{k}{N+1}k=1,⋯,Nk=1,⋯,Nk=1,\cdots,NNNNuk=u(xk)uk=u(xk)u_k=u(x_k)k=1,⋯,Nk=1,⋯,Nk=1,\cdots,Nuuu 在第二种情况下真有未知数ü 0,⋯ ,ù Ñ + 1,我知道如何使用(均相)诺伊曼BC在边界来离散拉普拉斯,例如具有两个虚构点的红利x − 1和x N + 2以及等式:N+2N+2N+2u0,⋯,uN+1u0,⋯,uN+1u_0,\cdots,u_{N+1}x−1x−1x_{-1}xN+2xN+2x_{N+2} u1−u−12h=0=uN+2−uN2hu1−u−12h=0=uN+2−uN2h\frac{u_1-u_{-1}}{2 h} = 0 = \frac{u_{N+2}-u_N}{2 h} 我的问题是关于定期公元前。我觉得我可以使用一个方程,即 ,但也许两年,然后我会用 ∂ X ü (0 )= ∂ X ù (1 )u(0)=u(1)u(0)=u(1)u(0) = u(1)∂xu (0 …

3
使用有限差分法时如何处理弯曲边界条件?
我正在尝试自己学习数字解PDE。 我开始使用有限差分法(FDM)已有一段时间了,因为我听说FDM是PDE众多数值方法的基础。到目前为止,我对FDM有了一些基本的了解,并且能够使用我在图书馆和Internet上找到的资料来为常规区域中的一些简单PDE编写代码,但是奇怪的是,我通常所用的资料很少关于治疗不规则的,弯曲的,奇怪的边界,像这样。 而且,我从未见过处理弯曲边界的简单方法。例如,《偏微分方程的数值解-入门》(Morton K.,Mayers D)一书,其中包含我到目前为止所见的最详细的讨论(主要在p71的3.4和p199的6.4中)。对于我来说,这确实很麻烦且令人沮丧。 因此,正如标题所要求的那样,关于弯曲边界,人们通常在使用FDM时如何处理它?换句话说,最流行的治疗方法是什么?还是取决于PDE的类型? 是否有(至少相对)优雅且高精度的方法来处理弯曲边界?还是只是不可避免的痛苦? 我什至要问,当今人们是否真的将FDM用于弯曲边界?如果没有,通常的方法是什么? 任何帮助,将不胜感激。

4
解决具有初始值和最终值约束的耦合ODE
我的问题的实质如下:我有两个ODE的系统。一个具有初始值约束,另一个具有最终值约束。可以将其视为对某些变量具有初始值约束而对其他变量具有最终值约束的单个系统。 详细信息如下: 我正在尝试使用连续时间有限水平LQR控制器来驱动线性动力学系统。我想继续使用Python生态系统。 该系统是在形式,受X˙(t )= A x (t )+ B u (t )x˙(t)=Ax(t)+Bu(t)\dot{x}(t) = Ax(t) + Bu(t)x (0 )= x0x(0)=x0x(0)=x_0 LQR解决方案生成矩阵,使得在线性的最优控制输入u(t)为u (t )= K (t )x (t )。x (t )ķ(吨)K(t)K(t)x (t )x(t)x(t)u (t )= K(t )x (t )u(t)=K(t)x(t)u(t) = K(t)x(t) 其中ķ(t )= R− 1乙ŤP(吨)K(t)=R−1BTP(t)K(t) = R^{-1} B^T P(t) 和是解决一个连续时间黎卡提微分方程(请注意,此P (吨)是一个矩阵)P(吨)P(t)P(t)P(吨)P(t)P(t) …

2
差异有限的实体力学:如何处理“角节点”?
我有一个关于编码固体力学边界条件(线性弹性)的问题。在特殊情况下,我必须使用有限差分(3D)。我对这个话题非常陌生,因此以下一些问题可能非常基础。 为了导致我的特定问题,首先,我想展示一下我已经实现的内容(为清楚起见,我将仅使用2D)。 1.)我有下列离散div(σ)=0div(σ)=0div(\sigma) = 0,表示发散的第一组分∂σxx∂x+∂σxy∂y=0∂σxx∂x+∂σxy∂y=0\frac{\partial\sigma_{xx}}{\partial x} + \frac{\partial\sigma_{xy}}{\partial y} = 0: 我使用非交错网格,因此Ux和Uy定义在同一位置。 2.)下一步是处理边界,在这里我使用“鬼节点”。根据σ∙n=t∗σ∙n=t∗\sigma \bullet n = t^*,其中t∗t∗t^*是边界上的应力。 (λ+2μ)∂Ux∂x+λ∂Uy∂y=σ∗xx(λ+2μ)∂Ux∂x+λ∂Uy∂y=σxx∗(\lambda + 2\mu)\frac{\partial U_x}{\partial x} + \lambda \frac{\partial U_y}{\partial y} = \sigma_{xx}^*σ∗xxσxx∗\sigma_{xx}^* μ∂Ux∂y+μ∂Uy∂x=σ∗xyμ∂Ux∂y+μ∂Uy∂x=σxy∗\mu\frac{\partial U_x}{\partial y} + \mu \frac{\partial U_y}{\partial x} = \sigma_{xy}^*σ∗xyσxy∗\sigma_{xy}^* 3.)我认为到目前为止,我的所有步骤似乎都是合乎逻辑的,如果没有,请纠正我。但是现在还有“角节点”,我不知道如何处理它们。 div(σ)=0div(σ)=0div(\sigma) = 0 所以我的问题是处理这些“角节点”的正确方法是什么?我为每个想法感到高兴。

3
用有限体积法将Dirichlet边界条件应用于泊松方程。
我想知道在以单元为中心的非均匀网格上使用有限体积方法时通常如何应用Dirichlet条件, 我目前的实现只是在确定第一个单元格的值时施加了边界条件, ϕ1=gD(xL)ϕ1=gD(xL) \phi_1 = g_D(x_L) 其中是可变的解决方案和克d(X 大号)是在域的LHS狄利克雷边界条件值(NB X 大号 ≡ X 1 / 2)。但是,这是不正确的,因为边界条件应固定像元面的值而不是像元本身的值。我真正应该适用的是ϕϕ\phigD(xL)gD(xL)g_D(x_L) xL≡x1/2xL≡x1/2x_L \equiv x_{1/2} ϕL=gD(xL)ϕL=gD(xL) \phi_{L} = g_D(x_L) 例如,让我们求解泊松方程, 0=(ϕx)x+ρ(x)0=(ϕx)x+ρ(x) 0 = (\phi_x)_x + \rho(x) 有初始条件和边界条件 ρ=−1gD(xL)=0gN(xR)=0ρ=−1gD(xL)=0gN(xR)=0\rho=-1\\ g_D(x_L)=0 \\ g_N(x_R)=0 (其中是右侧的Neumann边界条件)。gN(xR)gN(xR)g_N(x_R) 注意数值解法如何将单元格变量的值固定为左侧的边界条件值()。这具有向上移动整个解决方案的影响。通过使用大量的网格点可以使影响最小化,但这并不是解决问题的好方法。gD(xL)=0gD(xL)=0g_D(x_L)=0 题 使用有限体积法时,将以何种方式应用Dirichlet边界条件?我假设我需要通过使用ϕ 0(幻影点)或ϕ 2进行插值或外推来固定的值,以便经过这些点的直线在x L处具有所需的值。您是否可以提供任何指导或示例,说明如何对以单元为中心的非均匀网格进行此操作?ϕ1ϕ1\phi_1ϕ0ϕ0\phi_0ϕ2ϕ2\phi_2xLxLx_L 更新资料 这是我尝试使用您建议的幻像细胞方法,看起来合理吗? 该方程对于细胞是(其中˚F表示的磁通φ),Ω1Ω1\Omega_1FF\mathcal{F}ϕϕ\phi F3/2−FL=ρ¯F3/2−FL=ρ¯ \mathcal{F}_{3/2} - \mathcal{F}_{L} = \bar{\rho} …

2
如何在整体稀疏有限元刚度矩阵中有效地实现Dirichlet边界条件
我想知道整体稀疏有限元矩阵中的Dirichlet边界条件实际上是如何有效实现的。例如,假设我们的全局有限元矩阵为: ķ=⎡⎣⎢⎢⎢⎢⎢⎢520− 10241个0001个632− 1037000203⎤⎦⎥⎥⎥⎥⎥⎥和右侧矢量图b =⎡⎣⎢⎢⎢⎢⎢⎢b 1b 2b 3b 4b 5⎤⎦⎥⎥⎥⎥⎥⎥K=[520−102410001632−1037000203]and right-hand side vectorb=[b1b2b3b4b5]K = \begin{bmatrix} 5 & 2 & 0 & -1 & 0 \\ 2 & 4 & 1 & 0 & 0 \\ 0 & 1 & 6 & 3 & 2 \\ -1 & 0 & 3 …

2
边界条件切比雪夫微分
我想知道在进行切比雪夫区分时是否有人有处理边界的经验。 我目前正在尝试实现无滑移边界条件,以解决3D中不可压缩的Navier Stokes方程,以确保边界处的流量为零,是否真的像设置u(:,:,1)和u一样简单(:,:,N)= 0在计算的每个阶段(类似于v和w),如教科书所示。似乎并没有考虑到边界附近的点如何受到边界处零流量的影响,而且这种方法似乎太简单了。 感谢任何能提供帮助的人。

1
使用快速傅立叶变换来解决带有混合边界条件的二维Poisson问题需要哪个傅立叶级数?
我听说,当边界条件都是一种类型时,可以使用快速傅立叶变换来解决泊松问题。考虑一个二维矩形域,假设两个相对的边具有周期性边界条件,而另两个具有狄里克雷条件。是否可以应用快速傅立叶变换来有效解决此问题?如果是这样,指数形式是否足够?如果没有,您会为这种情况推荐哪种求解器?

1
具有周期边界条件的薛定inger方程
我有以下几个问题: 我正在尝试使用曲柄nicolson离散化解决一维Schrodinger方程,然后求反三对角矩阵。我的问题现在演变为周期性边界条件的问题,因此我修改了代码以使用Sherman Morrison算法。 假设v当我希望反转三对角矩阵时,在每个时间步中都存在我的RHS。的大小v是我在空间上拥有的网格点的数量。当我设定v[0]并v[-1]按照我的周期性情况的要求互相称呼时,我的方程式崩溃了。我不知道为什么会这样。我正在使用python2.7和scipy的内置solve_banded来求解方程。 这引出了我的第二个问题:我使用python是因为它是我最了解的语言,但是我发现它运行起来很慢(即使使用numpy和scipy提供的优化)。我已经尝试使用C ++,因为我对此相当熟悉。我以为我会使用经过BLAS优化的GSL,但没有找到任何文档来创建复杂向量或使用此类复杂值向量求解三对角矩阵。 我希望在程序中使用对象,因为我觉得这是以后进行泛化以包含波动函数之间的耦合的最简单方法,因此我坚持使用面向对象的语言。 我可以尝试手动编写三对角矩阵求解器,但是在python中编写时遇到了问题。随着时间的推移,随着时间的推移,我逐渐发展,错误不断累积,使我无聊。考虑到这一点,我决定使用内置方法。 任何建议深表感谢。 编辑:这是相关的代码段。该符号是从Wikipedia的页面上引用的三对角矩阵(TDM)公式。v是每个时间步长的crank nicolson算法的RHS。向量a,b和c是TDM的对角线。定期案例的校正算法来自CFD Wiki。我做了一些重命名。他们所说的u,v我称之为U,V(大写)。我称q为补数,y为临时解,而实际解为self.currentState。v [0]和v [-1]的分配是引起问题的原因,因此已被注释掉。您可能会忽略伽玛系数。它们是用于建模Bose Einstein冷凝物的非线性因子。 for T in np.arange(self.timeArraySize): for i in np.arange(0,self.spaceArraySize-1): v[i] = Y*self.currentState[i+1] + (1-2*Y)*self.currentState[i] + Y*self.currentState[i-1] - 1j*0.5*self.timeStep*potential[i]*self.currentState[i] - self.gamma*1j*0.5*self.timeStep*(abs(self.currentState[i])**2)*self.currentState[i] b[i] = 1+2*Y + 1j*0.5*self.timeStep*potential[i] + self.gamma*self.timeStep*1j*0.5*(abs(self.currentState[i])**2) #v[0] = Y*self.currentState[1] + (1-2*Y)*self.currentState[0] + Y*self.currentState[-1] - 1j*0.5*self.timeStep*potential[0]*self.currentState[0]# …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.