从_DMDA_Vec_array到Vec的petsc4py映射以在TS中使用

时间:2019-07-18 18:30:28

标签: python petsc

我已经初始化ts = PETSc.TS().create(),并尝试使用ts.setSolution(u)进行一些初始分布求解,并得到类型错误。

似乎要使用Vec类型,但正在以_DMDA_Vec_array的形式传递。

设置如下:

  1. 创建dmda = PETSc.DMDA().create(<...>)
  2. 创建全局向量x = dmda.createGlobalVec()
  3. 获取我们的IC向量:ic = dmda.getVecArray(x)
  4. 填写IC向量
  5. 尝试ts.setSolution(ic),但不喜欢ic_DMDA_Vec_array对象

到目前为止,我发现了两件事:

  1. ic = dmda.getVecArray(x)正在执行应做的工作-创建一个_DMDA_Vec_array对象
  2. 在常规PETSc中,等效方法是使用函数DMDAVecGetArray(),然后在填充值后,运行函数DMDAVecRestoreArray()_DMDA_Vec_array对象转换为Vec的可用ts对象。

Python中_DMDA_Vec_arrayVec类型的等效协议/工作流程是什么?

0 个答案:

没有答案