原始问题是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,
}),
}
结果:
我期待这个领域,统一指向砖块,但有一些不同的东西(这不是一个大问题,我认为这只是一个标志问题)。另外,我对左下角增值不满意。
我需要做些什么来纠正模型?
提前致谢。