Python 从_DMDA_Vec_数组到用于TS的Vec的petsc4py映射

Python 从_DMDA_Vec_数组到用于TS的Vec的petsc4py映射,python,petsc,Python,Petsc,我已经初始化了ts=PETSc.ts().create(),并尝试使用ts.setSolution(u)的一些初始分布进行求解,并得到一个类型错误 它似乎希望使用Vec类型,但正在作为\u DMDA\u Vec\u数组传递 设置如下所示: 创建dmda=PETSc.dmda().create() 创建一个全局向量x=dmda.createGlobalVec() 获取我们的IC向量:IC=dmda.getVecArray(x) 填充矢量 尝试ts.setSolution(ic)但它不喜欢ic是\u

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

它似乎希望使用
Vec
类型,但正在作为
\u DMDA\u Vec\u数组传递

设置如下所示:

  • 创建
    dmda=PETSc.dmda().create()
  • 创建一个全局向量
    x=dmda.createGlobalVec()
  • 获取我们的IC向量:
    IC=dmda.getVecArray(x)
  • 填充矢量
  • 尝试
    ts.setSolution(ic)
    但它不喜欢
    ic
    \u DMDA\u Vec\u数组
    对象
  • 到目前为止,我发现了两件事:

  • ic=dmda.getVecArray(x)
    正在执行它应该执行的操作--创建一个
    \u dmda\u Vec\u数组
    对象
  • 在常规PETSc中,等效的方法是使用函数
    dmdavegetarray()
    ,然后在填充完值后,运行函数
    dmdavecreastorarray()
    ,将
    \u DMDA\u Vec\u数组
    对象转换回
    ts
    的可用
    Vec
    对象 Python中
    \u DMDA\u Vec\u数组
    Vec
    类型的等效协议/工作流是什么