什么? VecGetArray()?我也试过了哦~
错误如下:
纠结了一段时间,在高人指点下,终于发现了问题所在。
原来VecGetOwnershipRange()这个函数返回的[start,end),用 VecSetValues()对向量进行赋值时,索引值下界为0,但对向量进行取值时,索引下界是1。上面的代码忽略了这个因素,所以会出现内存访问越界。
比如说:
start = 0时,会访问xx_v(0),这个必然会出错。只需把
最后一个do i = istart, iend-1 改为do i = istart+1, iend 即可
下面给出正确的代码:
本文详细解析了使用PETSc库进行向量创建、设置及获取元素的具体步骤,并特别指出在利用VecGetOwnershipRange()获取索引范围时,应当注意其返回的是左闭右开区间,从而避免内存访问越界的问题。

1420

被折叠的 条评论
为什么被折叠?



