我已经初始化ts = PETSc.TS().create()
,并尝试使用ts.setSolution(u)
进行一些初始分布求解,并得到类型错误。
似乎要使用Vec
类型,但正在以_DMDA_Vec_array
的形式传递。
设置如下:
dmda = PETSc.DMDA().create(<...>)
x = dmda.createGlobalVec()
ic = dmda.getVecArray(x)
ts.setSolution(ic)
,但不喜欢ic
是_DMDA_Vec_array
对象到目前为止,我发现了两件事:
ic = dmda.getVecArray(x)
正在执行应做的工作-创建一个_DMDA_Vec_array
对象DMDAVecGetArray()
,然后在填充值后,运行函数DMDAVecRestoreArray()
将_DMDA_Vec_array
对象转换为Vec
的可用ts
对象。 Python中_DMDA_Vec_array
到Vec
类型的等效协议/工作流程是什么?