1

我已经初始化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回.Vects

_DMDA_Vec_arrayPython 中用于Vec键入的等效协议/工作流是什么?

4

0 回答 0