We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
您好, 扩散方程是:u_t = (D(x, y) * (u_xx + u_yy)) 我想训练的算子是G:D→u 我在设置上下边界是1的时候程序运行的结果是图1。
但是为什么当我设置成四周都是1的时候结果是图2,这个结果和我用FEM计算的结果(图3)不太符合。
是我边界条件设置不对吗?麻烦帮我解答下,谢谢!以下是程序中边界条件的设置。
def pde(x, u, D_x): du_t = dde.grad.jacobian(u, x, j=2) du_xx = dde.grad.hessian(u, x, i=0, j=0) du_yy = dde.grad.hessian(u, x, i=1, j=1) return du_t - D_x * (du_xx + du_yy)
def on_boundary_condition_t(x, on_boundary): return on_boundary and np.isclose(x[1], 1) def on_boundary_condition_b(x, on_boundary): return on_boundary and np.isclose(x[1], 0) def on_boundary_condition_l(x, on_boundary): return on_boundary and np.isclose(x[0], 0) def on_boundary_condition_r(x, on_boundary): return on_boundary and np.isclose(x[0], 1) def boundary_condition_t_value(x): return 1. def boundary_condition_b_value(x): return 1. def boundary_condition_l_value(x): return 1. def boundary_condition_r_value(x): return 1. def initial_value(x): return 0. def on_initial_condition(x, on_initial): return on_initial
geom = dde.geometry.Rectangle([0, 0], [1, 1]) timedomain = dde.geometry.TimeDomain(0, 1) geomtime = dde.geometry.GeometryXTime(geom, timedomain)
bc_t = dde.icbc.DirichletBC(geomtime, boundary_condition_t_value, on_boundary=on_boundary_condition_t, component=0) bc_b = dde.icbc.DirichletBC(geomtime, boundary_condition_b_value, on_boundary=on_boundary_condition_b, component=0)
bc_l = dde.icbc.DirichletBC(geomtime, boundary_condition_l_value, on_boundary=on_boundary_condition_l, component=0) bc_r = dde.icbc.DirichletBC(geomtime, boundary_condition_r_value, on_boundary=on_boundary_condition_r, component=0)
ic = dde.icbc.IC(geomtime, initial_value, on_initial_condition)
pde = dde.data.TimePDE( geomtime, pde, [bc_t, bc_b, bc_l, bc_r, ic], num_domain=1000, num_boundary=600, num_initial=600, num_test=400, )
The text was updated successfully, but these errors were encountered:
No branches or pull requests
您好,
扩散方程是:u_t = (D(x, y) * (u_xx + u_yy))
我想训练的算子是G:D→u
我在设置上下边界是1的时候程序运行的结果是图1。
但是为什么当我设置成四周都是1的时候结果是图2,这个结果和我用FEM计算的结果(图3)不太符合。
是我边界条件设置不对吗?麻烦帮我解答下,谢谢!以下是程序中边界条件的设置。
def pde(x, u, D_x):
du_t = dde.grad.jacobian(u, x, j=2)
du_xx = dde.grad.hessian(u, x, i=0, j=0)
du_yy = dde.grad.hessian(u, x, i=1, j=1)
return du_t - D_x * (du_xx + du_yy)
def on_boundary_condition_t(x, on_boundary):
return on_boundary and np.isclose(x[1], 1)
def on_boundary_condition_b(x, on_boundary):
return on_boundary and np.isclose(x[1], 0)
def on_boundary_condition_l(x, on_boundary):
return on_boundary and np.isclose(x[0], 0)
def on_boundary_condition_r(x, on_boundary):
return on_boundary and np.isclose(x[0], 1)
def boundary_condition_t_value(x):
return 1.
def boundary_condition_b_value(x):
return 1.
def boundary_condition_l_value(x):
return 1.
def boundary_condition_r_value(x):
return 1.
def initial_value(x):
return 0.
def on_initial_condition(x, on_initial):
return on_initial
geom = dde.geometry.Rectangle([0, 0], [1, 1])
timedomain = dde.geometry.TimeDomain(0, 1)
geomtime = dde.geometry.GeometryXTime(geom, timedomain)
bc_t = dde.icbc.DirichletBC(geomtime, boundary_condition_t_value, on_boundary=on_boundary_condition_t, component=0)
bc_b = dde.icbc.DirichletBC(geomtime, boundary_condition_b_value, on_boundary=on_boundary_condition_b, component=0)
bc_b = dde.icbc.boundary_conditions.PeriodicBC(geomtime, component_x=1, on_boundary=on_boundary_condition_b)
bc_l = dde.icbc.DirichletBC(geomtime, boundary_condition_l_value, on_boundary=on_boundary_condition_l, component=0)
bc_r = dde.icbc.DirichletBC(geomtime, boundary_condition_r_value, on_boundary=on_boundary_condition_r, component=0)
bc_r = dde.icbc.boundary_conditions.PeriodicBC(geomtime, component_x=0, on_boundary=on_boundary_condition_r)
ic = dde.icbc.IC(geomtime, initial_value, on_initial_condition)
pde = dde.data.TimePDE(
geomtime,
pde,
[bc_t, bc_b,
bc_l, bc_r,
ic],
num_domain=1000,
num_boundary=600,
num_initial=600,
num_test=400,
)
The text was updated successfully, but these errors were encountered: