푸 아송 방정식 : 라그랑주 승수를 통해 경계 조건으로 전체 그라데이션을 부과


11

I는 두 차원 포아송 방정식의 적용 실제 문제가 경계의 일부 부분 Γ m을 따라 두 개의 기울기 성분u /xu /y 를 측정했으므로 u

2u=f(x,y),inΩ
u/xu/yΓm 및 원거리 장으로 전파.
uxi0=gm,onΓm

접선 기울기 성분, , 나는 단지 Dirichlet 조건을 통해 통합하고 시행 할 수 있습니다. Γmuux(t,0) 법선 성분을 동시에 적용하려면u

Γmux(t,0)ds=u0
, 나는 Lagrange multipliers를 거쳐야 할 것을 모았습니다.ux(n,0)

따라서 변형 형태는 https://answers.launchpad.net/fenics/+question/212434https://answers.launchpad.net/fenics/+question 과 같은 관련 문제에 대한 정보를 종합하여 오랜 시간을 보냈습니다. / 216323

ΩuvdxλΓm(ux(n,0)gm)vds=Ωfvdx

그러나 여전히 내가 잘못 가고있는 것을 볼 수 없습니다. 내 솔루션 시도는 다음과 같습니다.

from dolfin import *

# Create mesh and define function space
mesh = UnitSquareMesh(64, 64)
V = FunctionSpace(mesh, "Lagrange", 1)
R = FunctionSpace(mesh, "R", 0)
W = V * R

# Create mesh function over cell facets
boundary_parts = MeshFunction("uint", mesh, mesh.topology().dim()-1)

# Mark left boundary facets as subdomain 0
class LeftBoundary(SubDomain):
    def inside(self, x, on_boundary):
        return on_boundary and x[0] < DOLFIN_EPS

Gamma_Left = LeftBoundary()
Gamma_Left.mark(boundary_parts, 0)

class FarField(SubDomain):
    def inside(self, x, on_boundary):
        return on_boundary and ( (x[0] > 1.0-DOLFIN_EPS) \
               or (x[1]<DOLFIN_EPS) or (x[1]> 1.0-DOLFIN_EPS) )

Gamma_FF = FarField()
Gamma_FF.mark(boundary_parts, 1)

# Define boundary condition
u0 = Expression("sin(x[1]*pi)")
bcs = [DirichletBC(V, u0, Gamma_Left)]

# Define variational problem
(u, lmbd) = TrialFunctions(W)
(v, d) = TestFunctions(W)

f = Expression("10*exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)")
g = Constant(0.0)
h = Constant(-4.0)
n = FacetNormal(mesh)

F = inner(grad(u), grad(v))*dx + d*dot(grad(u),n)*ds(0) + lmbd*dot(grad(v),n)*ds(0)-\
   (f*v*dx + g*v*ds(1) + h*d*ds(0) + lmbd*h*ds(0))

a = lhs(F)
L = rhs(F)

# Compute solution
A = assemble(a, exterior_facet_domains=boundary_parts)
b = assemble(L, exterior_facet_domains=boundary_parts)
for bc in bcs: bc.apply(A, b)

w = Function(W)
solve(A, w.vector(), b, 'lu')
(u,lmbd) = w.split()

# Plot solution
plot(u, interactive=True)

이것은 실행되지만 포아송 방정식의 솔루션과 전혀 유사하지 않은 시끄러운 결과를 제공합니다. 결합 된 함수 공간과 관련이있는 것 같지만 실수를 찾을 수 없습니다.
올바른 방향으로 도움이나 조언을 주셔서 감사합니다-이미 많은 감사드립니다!
건배
마르쿠스


이것을 바로 잡자. Dirichlet과 Neumann 데이터가 있지만 경계의 일부에만 있습니까?
Christian Clason

1
내가 OP를 이해했듯이, 그것은 경계에서 주어진 그라디언트입니다. Dirichlet 데이터는 접선 도함수를 부과하는 데 사용됩니다. 경계의 한 부분에 Dirichlet과 Neumann을 모두 적용하는 것이 이상하다고 생각했지만이 특정 상황에서는 일관성이 있습니다. 따라서 문제는 승수를 통해 경계에서 그래디언트 데이터를 적용하는 방법입니다.
Jan

사실, 그것은 일관된 데이터를 제공 할 것이지만, 여전히 안정성 부족 문제와 경계의 일부에만 경계 조건이 있다는 사실이 있습니다.
Christian Clason

좋아, 내가 해결하려고하는 특정 물리적 문제에 대해 더 많은 정보를 줄 것이다. 나는 회전 대칭이며 따라서 2D라고 합리적으로 가정 할 수있는 정적 자기장을 가지고 있습니다. 나는 회전 축에 상당히 가까운 선을 따라 자기장 밀도 벡터의 방사형 및 축 성분을 측정 하고이 회전 축에서 실질적으로 떨어진 거리 에서이 자기장을보고 싶습니다. Dirichlet과 Neumann BC의 조합은 Jan이 웅변 적으로 설명 된 것처럼 문제에 접근하는 내 생각이었습니다. 경계에 그라디언트 데이터를 부과했습니다.
Markus

1
좋아, 그게 크게 바뀐다. 따라서 무한한 도메인과 경계 의 전체 "유한"부분 에 대한 파생 정보가 있습니까?
Christian Clason

답변:


8

첫째, 일반적인 요점 : 부분 미분 연산자에 대해 임의의 경계 조건을 규정 할 수 없으며 부분 미분 방정식 (항상 연산자와 경계 조건을 모두 포함)이 잘 정립되어 있어야합니다. 즉, 데이터-모두 실제로 무언가를 계산하기 위해 필요한 조건입니다.

운영자에 따라, 당신이 부과 할 수있는 많은 유효한 조건들이 종종 있습니다 (미각을 얻기 위해, 라이온스와 매진의 3 권 모노 그래프 참조). 그러나 당신이하려는 일 (2 차 타원 PDE에 대해 동일한 (일부) 경계에서 Dirichlet 및 Neumann 조건 모두에 해당하는 전체 그라디언트 지정)은 그중 하나가 아닙니다. 측면 코시 문제주어진 경계 데이터 쌍이 해를 인정한다고 보장 할 수 없으며, 존재하는 경우에도 데이터의 작은 변동에 대한 안정성은 없습니다. (사실,이 마드의 의미에서 원래 아프 인한 문제는, 잘 posedness을 논의 할 때 경계 조건을 무시할 수없는 이유 고전적인 예. 당신은 자신에 명시 적으로 예를 찾을 수 있습니다 선형 편미분에서 코시의 문제에 대한 강의를 1920 년대의 방정식 .)

(r,R)×(a,b)x=rRxy=ay=b

  1. 경계 조건 (Neumann, Robin, Dirichlet-접선 도함수의 통합에서 상수를 수정해야 함)을 부과 할 수 있다면 기울기의 일반적인 구성 요소 중 하나를 Neumann 조건으로 사용하는 것으로 충분합니다 (상수 모드를 수정할 수있는 경우) 접선 구성 요소를 Dirichlet 조건으로 통합하십시오. 두 조건이 모두 같은 기능에 해당하기 때문에 어느 쪽이든 같은 솔루션을 얻을 수 있습니다.

  2. y=ay=bΔu=fΔu+εΔ2u=fε>0H2uuεuε0

    H2


FEniCS의 혼합 요소에 의한 구현은 biharmonic데모를 참조하십시오 . 이것은 아마도 Laplace 용어가 없지만 쉽게 추가 할 수 있다고 생각합니다.
Jan Blechta

기독교인 여러분, 제안 해 주셔서 감사합니다! 수치 안정성에 관한 한 포아송 방정식이 양성이라는 인상을 받았습니다. 제안한대로 읽어 드리겠습니다. 이것이 실질적인 변화인지 확실하지 않지만, 추가 의견에서 언급했듯이 Dirichlet-Neumann 조합은 아마도 잘못된 것입니다. 내가 찾고있는 '모두'는 경계에 그라디언트 데이터를 부과하는 방법입니다.
Markus

2
푸 아송 방정식은 양성이지만, 그건 당신이 :) 해결하기 위해 노력하고있는 방정식이 아니다 (경계 조건이 방정식의 중요한 부분 만 운전자가 안정성을 결정하는 충분하지 않습니다.)
기독교 Clason

좋아, 씹을 무언가를 준다. 귀하의 시간, 조언 및 인내심에 감사드립니다-그리고 XY 함정에 빠진 것에 대해 사과드립니다 ...
Markus

4

변경된 문제에 대한 해결책이 Poisson 문제에 대한 해결책이라고 기대할 수는 없습니다 .

가능한 문제 공식화는 을 최소화하는 것으로 추측 할 수 있습니다

F(u,λ)=Ω12|u|2dxΩfudxΓNgudS+ΓNλ(uuD)dS
(u,λ)V×L2(ΓN)V={vH1;v|ΓD=0}ΓDuDΓNF(u)
0=DF(u)[v]=ΩuvdxΩfvdxΓNgvdSvV,
ΓNΓD
0=DF(u,λ)[v,μ]=ΩuvdxΩfvdxΓNgvdS+ΓNλvdS+ΓNμ(uuD)dS(v,μ)V×L2(ΓN),
Δu=fun=gλΓNΓN

λ|g|

ΓDvVΓD

결론적으로 2 차 PDE가 두 개의 독립적 경계 조건을 인정할 것이라고 기대할 수 없습니다.


F(u,λ)DF(u,λ)[v,μ]derivative()

F(u,λ)λL2(ΓN)λL2(Ω)λR


2ufuH1

내 수학은 불행히도 긁히지 않았으며 Banach 공간의 수학적 의미에 대해 확신하지 못하지만 Lagrange 승수 항이 사라질 때 왜 방정식이 푸 아송 방정식에 대한 해결책이 아닌지 알기 어려워합니다. 물리적 관점에서 볼 수있는 한 해결책 (내가 설명한 실제 문제에 대해서는 수학적인 의미의 해결책을 의미하지는 않습니다)
Markus

따라서 당신이 부과 할 수있는 Dirichlet 조건과 함께 측정 한 경계에서 관찰 된 수직 기울기를 산출하는 원거리 장의 경계 조건을 찾는 것이 오히려 역의 문제입니다.
Markus

3

구현 및 아마도 공식 때문에 접근 방식이 효과가 없습니다.

dolfin에 Dirichlet 조건을 부과하면 테스트 공간의 해당 DOF가 0으로 설정됩니다.

이것은 fenics-manual 에서 발췌 한 것입니다 .

3 장 3.3.9 (끝) : 선형 시스템에 Dirichlet 경계 조건을 적용하면 주어진 값으로 설정해야하는 모든 자유도를 식별하고 솔루션이 경계 조건을 준수하도록 선형 시스템을 수정합니다. Dirichlet 값에 해당하는 행렬 행의 대각선에 1을 0으로 삽입하고 오른쪽 벡터의 해당 항목에 Dirichlet 값을 삽입하여 [...]

vΓm

요약하면, dolfin의 기본 루틴을 사용하면 동일한 경계에서 Dirichlet과 다른 조건을 모두 적용 할 수 없습니다.

그러나 구현 에서이 문제를 해결하기 전에 @Jan Blechta가 언급했듯이 수학 공식에 적합한 테스트 공간을 찾으십시오.


나는 당신의 요점을 본다-나는 나의 공식이 내가 구현 한 것을 정확하게 반영하지 않을 것이라고 생각한다-나의 사과. 변이 원리는 흐릿한 기억이지만 나는 다시 내 머리를 잡으려고 노력하고 있습니다. Lagrange 멀티 플라이어를 구현하는 FEniCS 코드 예제와 함께 매뉴얼을 앞뒤로 읽었습니다. 제기 한 문제는 정확히 두 번째 테스트 기능 'd'를 사용하는 이유라고 생각했습니다.
Markus

@JanBlechta에 동의합니다. 처음에는 승수에 적합한 공간을 찾아야합니다. 아마 승수를 사용하여 부수 조건을 통합하는 PDE 제약 조건 최적화에 관한 텍스트가 도움이 될만한 아이디어를 줄 것입니다. 이 백서 에서는 시간에 따른 Dirichlet 조건을 설명하기 위해 승수를 사용합니다.
Jan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.