元の質問はこちらですが、sfepyと有限要素法を知っている人はここにいると思います。
さて、私はベクトル重力場をモデル化したい、つまり(弱定式化で)
ここで、G はターゲット ベクトル フィールド、rho は密度値です。これは、特定のマテリアルの定数パラメータです。
私の問題定義ファイル:
import numpy as nm
filename_mesh = 'my.mesh'
regions = {
'Omega' : ('all', {}),
'Overground' : ('nodes of group 1', {}),
'Underground' : ('nodes of group 2', {}),
'Brick' : ('nodes of group 3', {}),
}
field_1 = {
'name' : 'gravity',
'dtype' : nm.float64,
'shape' : (3,),
'region' : 'Omega',
'approx_order' : 1,
}
variables = {
'G' : ('unknown field', 'gravity', 0 ),
'g' : ('test field', 'gravity', 'G'),
}
ebcs = {
}
materials = {
'm' : ({'rho': {
'Overground': 1.0e-7,
'Underground': 1.0e+0,
'Brick': 1.0e+5
}},
),
'n' : ({'G' : 1.0 }, )
}
equations = {
'Gravity' : """dw_div_grad.1.Omega( g, G ) = dw_div.1.Omega( m.rho, g )"""
}
solvers = {
'ls' : ('ls.scipy_direct', {}),
'newton' : ('nls.newton', {
'i_max' : 1,
'eps_a' : 1e-10,
}),
}
結果:
レンガに一様に向けられたフィールドを期待していましたが、そこから何かが発散していました(それは大きな問題ではなく、単なるサインの問題だと思います)。また、左下隅の値を増やすことに満足していません。
モデルを修正するにはどうすればよいですか?
前もって感謝します。