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
类型的等效协议/工作流是什么