Python 重力场的有限元模拟

Python 重力场的有限元模拟,python,finite-element-analysis,Python,Finite Element Analysis,最初的问题是,但我认为,这里可以是了解sfepy和有限元方法的人 我想对矢量重力场进行建模,也就是说(在弱公式中) 这里G是目标向量场,rho是密度值,这是给定材料的常数参数 我的问题定义文件: import numpy as nm filename_mesh = 'my.mesh' regions = { 'Omega' : ('all', {}), 'Overground' : ('nodes of group 1', {}), 'Undergro

最初的问题是,但我认为,这里可以是了解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,
    }),
}
结果:

我期待着这个领域,一致地指向砖块,但得到了一些偏离它(这不是一个大问题,我认为这只是一个标志问题)。另外,我不满意在左下角增加值

我要做什么来修正模型


提前谢谢。

我不清楚轮廓显示了什么。这是人体受力的曲线图吗?取代由此产生的压力?也许我错过了。