ポアソン方程式:ラグランジュ乗数による境界条件として完全勾配を課す


11

私は、2次元のポアソン方程式によって支配物理的な問題を有していて 私は2つの勾配成分の測定値を有するU /X及びU /Y境界の一部に沿って、 ΓのMよう課すしたい、 uと

2u=f(x,y),inΩ
u/xu/yΓm あり、遠方界に伝播します。
uxi0=gm,onΓm

接線方向の傾き成分、、私は統合することができ、次いで、ディリクレ条件を介して強制よう ΓMUux(t,0) 同時に法線成分を課すために、U

Γmux(t,0)ds=u0
、私はラグランジュ乗数を経由する必要があります集まりました。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)

実行されますが、ノイズの多い結果が得られますが、ポアソン方程式の解にはまったく似ていません。結合された関数空間と関係があるようですが、間違いは見つかりません。
私は正しい方向への助けやポインタに感謝します-すでに多くの感謝!
乾杯
マルクス


これを正しくさせてください。ディリクレとノイマンの両方のデータがありますが、境界の一部にしかありませんか?
クリスチャンクラソン

1
OPを理解したように、境界で与えられるのは勾配です。ディリクレデータは、接線微分を課すために使用されます。境界の一部にディリクレとノイマンの両方を押し付けるのは奇妙だと思いましたが、この特定の状況では一貫しているかもしれません。したがって、問題は、境界に(乗数を介して)勾配データを適用する方法です。
1

確かに、それは一貫したデータを提供しますが、それでも安定性の欠如の問題と、境界の一部のみに境界条件があるという事実があります。
クリスチャンクラソン

わかりました、私が解決しようとしている特定の物理的な問題に関するより多くの情報を与えさせてください。私は静磁場を持っており、これは回転対称であると合理的に仮定できます。したがって2Dです。私は、回転軸にかなり近い線に沿った磁場密度ベクトルの半径方向および軸方向の成分を測定し、この回転軸からかなり離れた位置にあるこの磁場を見たいと思っています。ディリクレとノイマンBCの組み合わせは、ヤンが雄弁に説明したように問題にアプローチするという私の考えでした-境界に勾配データを課しました。
マルクス

1
OK、それは物事を大きく変えます。あなたは境界のない領域と、境界の「有限」部分全体の派生情報を持っていますか?
クリスチャンクラソン

回答:


8

まず、一般的な点:偏微分演算子に任意の境界条件を規定することはできず、偏微分方程式(演算子と境界条件の両方を常に含む)が適切であると期待することはできません。データ-これらはすべて、実際に何かを計算しようとするための必要条件です。

オペレーターによっては、課すことができる有効な条件が非常に多くあります(味を知るには、ライオンズとマゲネスの3巻のモノグラフをご覧ください)。ただし、何をしようとしているのか(2次楕円PDEの同じ(一部の)境界でディリクレ条件とノイマン条件の両方に相当する完全な勾配を指定する)はそれらの中にありません-これは横コーシー問題、不適切である:境界データの特定のペアが解を受け入れるという保証はなく、たとえ存在する場合でも、データの小さな摂動に関する安定性はありません。(実際、これはアダマールの意味での元の不適切な問題であり、適切な状態を議論するときに境界条件を無視できない古典的な例です。線形偏微分のコーシーの問題に関する彼の講義で明確な例を見つけることができます1920年代の方程式

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

  1. 境界条件(Neumann、Robin、Dirichlet-接線微分の積分で定数を修正する必要があります)を課すことができる場合、勾配の正規成分をNeumann条件として使用するだけで十分です。 (定数モードを修正できる場合)または接線成分をディリクレ条件として統合します。おそらく両方の条件が同じ関数に対応するため、どちらの方法でも同じ解が得られます。

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

    H2


FEniCSの混合要素による実装については、biharmonicデモを参照してください。これにはおそらくラプラス用語はありませんが、簡単に追加できると思います。
ヤンブレクタ

こんにちはクリスチャン、ご提案ありがとうございます!ポアソン方程式は数値の安定性に関しては良性であるという印象を受けました-それを指摘してくれてありがとう。あなたが提案したように私はそれを読んでいきます。これにより状況が大幅に変わるかどうかはわかりませんが、コメントでさらに述べたように、ディリクレとノイマンの組み合わせはおそらく誤解を招く可能性があります。私が探している「すべて」は、境界に勾配データを課す方法です。
マルクス

2
ポアソン方程式は良性ですが、それはあなたが解こうとしている方程式ではありません:)(境界条件は方程式の不可欠な部分です。演算子だけでは安定性を決定するには不十分です。)
Christian Clason

さて、それは私に噛む何かを与えます。あなたの時間、アドバイスや忍耐のためのみんなありがとう-とXYの罠に落ちるための私の謝罪...
マルクス

4

変更された問題の解決策がポアソン問題の解決策になると期待することはできません。問題を適切に解決するには何らかの方法で問題を変更する必要があるからです。

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が2つの独立した境界条件を受け入れることは期待できないということです。


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

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


2ufuH1

残念ながら私の数学はスクラッチには至らず、バナッハ空間の数学的な意味については確信が持てませんが、ラグランジュ乗数項が消えたときに方程式がポアソン方程式の解ではない理由を理解するのに苦労しています。物理的観点から、解決策は、(私が説明した実用的な問題に、私は数学的な意味での平均ソリューションをしないでください)私の知る限り存在している必要があります
マルクス

それはむしろ逆問題であり、あなたが課すことができるディリクレ条件と一緒に、測定する境界で観測された通常の勾配をもたらす遠方界の境界条件を見つけるのですか?
マルクス

3

確かに実装のため、そしておそらくあなたの定式化のために、あなたのアプローチはうまくいきません。

dolfinにディリクレ条件を課すと、最終的にテストスペースの対応するDOFがゼロに設定されます。

これは、フェニックスマニュアルからの抜粋です。

第3.3.9章(終了):ディリクレ境界条件の線形システムへの適用は、与えられた値に設定されるべきすべての自由度を識別し、その解が境界条件を尊重するように線形システムを修正します。これは、ディリクレ値に対応する行列の行の対角線にゼロを挿入して1を挿入し、右側ベクトル[...]の対応するエントリにディリクレ値を挿入することで実現されます。

vΓm

要約すると、dolfinのデフォルトルーチンを使用して、Dirichletと他の条件の両方を同じ境界に適用することはできません。

ただし、実装でこれを修正しようとする前に、数学的定式化に適したテストスペースを見つけてください(@Jan Blechtaが述べたように)。


私はあなたの意見を見る-私の定式化は私が実装したものを正確に反映していないかもしれないと思う-私の謝罪。変分原理はかすかな記憶に過ぎず、私は再び頭を動かそうとしています。ラグランジュ乗数を実装するFEniCSコードのいくつかの例と一緒にマニュアルを前後に読みました。あなたが提起する問題は、まさに2番目のテスト関数「d」を使用する理由だと思いました。
マルクス

@JanBlechtaに同意します。最初に、乗数に適切なスペースを見つける必要がありますが、これは重要です。乗数を使用してサイド条件を組み込むPDE制約の最適化に関するテキストは、役に立つアイデアを提供するでしょう。この論文では、乗数を使用して、時間依存のディリクレ条件を説明します。
1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.