Я пробовал внутреннее граничное условие в приведенном ниже коде.
Я обнаружил, что, хотя я не установил внешнее граничное условие, решаемый результат будет зависеть от 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)