LoadError:julia for循环中的UndervarError
我在函数的开头定义一个变量phi_old,并给它赋值phi_start。 然后我有一个迭代循环: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
- 解一个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
。