我在下面的代码中尝试了内部边界条件。
我发现,虽然我没有设置外部边界条件,但解决的结果将取决于LargeValue。此外,当我增加largeValue时,必须再次重新定义方程式,否则只能通过将新值设置为LargeValue来更改方程式。
我已经使用sweep
方法来尝试获得更好的结果,但是它不起作用。
下面是我的代码。有没有错希望有人能帮助我!
for step in range(steps):
equation2=DiffusionTerm(coeff=perittivity)==ImplicitSourceTerm(largeValue*mask)-largeValue*mask*value
potential.setValue(0)
k=0.5
residual=1
while residual>1e-10 and abs(k-residual)>1e-18 :
k=residual
residual=equation2.sweep(potential)
if __name__=="__main__":
viewer.plot()
print step,residual,k-residual#,equation2,largeValue
largeValue=Variable(value = largeValue.value*1.1)