最初的问题是here,但我认为,这里可以是知道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,
}),
}
结果:
我预计场,统一指向砖,但得到了一些不同的东西(这不是一个大问题,我认为这只是一个标志问题)。另外,我对左下角的值增加不满意。
我必须做什么来纠正模型?
提前致谢。