我试图在 FreeFem 中求解具有空间相关热扩散率的稳态热方程。即 我希望从扩散率变化所以,为了这个例子,你可能会想到形式 所以我would like 会是类似的东西(这显然不会编译,因为我还没有声明所有变量等。我只是在概述)
func real kappa() {
for (i=0;i<n;++i)
k += 1/sqrt((x-x(i)) + (y-y(i))^2);
return k;
}
problem heat(uh,vh,solver=GMRES) =
int2d(Th)( (dx(uh)*dx(vh) + dy(uh)*dy(vh)) * kappa ) // * kappa doesn't work!
+ on(1,uh=1) + on(2,uh=0);
我在一侧取 Dirichlet bc 为 1,在其他地方取为 0。问题是我不能在一行上写这个函数(因为它需要一个循环),而且 FreeFem 不允许我像这样在问题定义中调用用户定义的函数。所以要么我错过了一些东西,要么我需要另一种方法来做到这一点。指针?
编辑
好吧,我认为原因是对象dx(uh)
和合作。是类型的Vh
,所以我需要一个相同类型的对象。这意味着我必须在该类型上构建我的函数值。