LoadError:julia for循环中的UndervarError

LoadError:julia for循环中的UndervarError,julia,Julia,我在函数的开头定义一个变量phi_old,并给它赋值phi_start。 然后我有一个迭代循环: 使用phi_old 解一个PDE得到一个解T 使用解T计算φu new 检查phi_new和phi_old之间的差异,如果其大于误差,则迭代循环再次开始,phi_old使用phi_new的值 如果差值小于误差,则迭代停止 但我得到了这个错误: Warning: Assignment to `T` in soft scope is ambiguous because a global variab

我在函数的开头定义一个变量phi_old,并给它赋值phi_start。 然后我有一个迭代循环:

  • 使用phi_old
  • 解一个PDE得到一个解T
  • 使用解T计算φu new
  • 检查phi_new和phi_old之间的差异,如果其大于误差,则迭代循环再次开始,phi_old使用phi_new的值
  • 如果差值小于误差,则迭代停止
但我得到了这个错误:

Warning: Assignment to `T` in soft scope is ambiguous because a global variable by the same name exists:
ERROR: LoadError: UndefVarError: phi_old not defined
下面是我的代码结构示例:

phi_old = createCellVariable(m,phi_start)

for i=1:i_end
 phi_new = myfunction(T)
 error = sum(phi_new.value[2,1:end]-phi_old.value[2,1:end])
 if error > 1E-03
  phi_old = phi_new
 else
  i=i+1
  break
 end
end

是否有任何技术可以用来更好地初始化/分配阵列并修复此错误?数组非常大,因此如果可能的话,我希望预先分配,并且只在必要时复制数组。

看起来您的代码与示例不一样,因为此示例不会产生与您显示的错误一样的错误。您能否提供实际的最小示例,该示例可以在其他计算机上运行而无需额外努力并生成错误?for循环引入了一个新的范围,并且循环中仅存在作为l值的
phi_old
,就会将其声明为覆盖全局
phi_old
的新变量,但是由于在
error=…
行之前没有给这个变量一个值,所以它是一个错误。要解决此问题,请在循环顶部使用
global phi_old