weihuayi / fealpy

Finite Element Analysis Library in Python
Other
294 stars 127 forks source link

Helmholtz_PINN_dirichlet_2d robin_2d 边界条件处理 #438

Open xiaoyanyan97 opened 1 year ago

xiaoyanyan97 commented 1 year ago

老师,我看着这两个代码,发现Helmholtz_PINN_dirichlet_2d的loss没加边界条件,robin_2d加了边界条件,请问这是为什么呢?

还有一个问题需要您的帮助,请问poisson2d的带robin边界条件的代码怎么处理呀,我自己没能解决这个问题

AlbertZyy commented 1 year ago
  1. Helmholtz_PINN_dirichlet_2d 的 loss 没加边界条件:这是因为在 dirichlet 情形里,我们采用了 TFC(Theory of Functional Connection),使得模型天然满足边界条件。具体功能由BoxDBCSolution类实现。
  2. 关于 robin 边界条件:对于任何边界条件,一般只需要构造出条件式左边减右边的均方值即可。
xiaoyanyan97 commented 1 year ago

老师,感谢您的回答。但是,我就是robin边界条件在代码中左端如何表示不会写

AlbertZyy commented 1 year ago

在 Robin 条件中有关梯度的部分,可以参考这些算例在 pde 损失项的计算中,是如何对模型进行求导的;有关函数值的部分则和 Dirichlet 条件一样。

xiaoyanyan97 commented 1 year ago

好的老师,谢谢您。 还有个问题就是,Helmholtz这个代码中,为什么区分实部和虚部,请问他具体的方程是什么

AlbertZyy commented 1 year ago
  1. 因为模型的数据类型是 float64,所以需要两个模型分别训练成 PDE 解的实部和虚部;
  2. 具体方程定义在名为 pde 的函数里。
zhangxuebin1 commented 2 months ago

你好想问一下pinn求解频域helmholtz其中一个边界条件是dp/dx-iZnCUnK*ρ=0,Zn=1,ρ=1.259,C=340,K=10,Un=10,边界条件包括虚数i,这该怎么处理?

zhangxuebin1 commented 2 months ago
  1. 因为模型的数据类型是 float64,所以需要两个模型分别训练成 PDE 解的实部和虚部;
  2. 具体方程定义在名为 pde 的函数里。

你好想问一下pinn求解频域helmholtz其中一个边界条件是dp/dx-iZnCUnK*ρ=0,Zn=1,ρ=1.259,C=340,K=10,Un=10,边界条件包括虚数i,这该怎么处理?