问题标签 [petsc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 MPI 时 KiFMM 的带有 operator() 的段错误
我正在为我的代码使用 KiFMM 和 PETSc。串行版本没有问题,但是当我尝试将 MPI 与 2 个节点一起使用时,我现在收到一个错误(*trgPos)(j,i)
,其类型DblNumMat
如下所示:
http ://www.mrl.nyu.edu/~harper /kifmm3d/documentation/common/html/nummat_8hpp_18ed51e81f911a23442591467d7a83ca.html。
gdb 的回溯显示了这一点:
任何人都知道为什么会发生这种情况以及我能做些什么?
c - PETSC_VIEWER_DRAW_WORLD 什么也不显示
我刚开始使用 PETSC,我正在尝试使用 matView 绘制矩阵。我的代码是这样的:
当我以这种方式使用 MatView 时:
我可以看到一个包含行的列表。但是当我把它改成
什么都没发生。
我看不到有关网络结构的任何信息,甚至看不到列表。
我试图运行这些示例,但它们根本不起作用。此外,PETSC 文档只会让事情变得更糟。有人能帮我吗?我不想看到行列表,而是矩阵(以图形方式)。
评论中的更多上下文:
- X windows 运行正常——能够用
gvim
、xlogo
、xeyes
等进行确认。 - 库已使用 中
--with-x
的选项重建configure
。仍然没有出现。
shared-libraries - PETSC 3.3 - 如何编译并拥有所有 libpetscSOMETHING.so 文件?
我尝试使用此配置编译 PESTC:
但是在编译我的使用 petsc 的库时,即使我链接了所有 petsc 库,它也会在运行undefined symbol: _Z10VecGetSizeP6_p_VecPi
时libpetscvec.so
抱怨libpetscsnes.so
:
我还发现它会生成一些.mod
与这些非生成库同名的库(例如:)/tmp/petsc-3.3-p7/arch-linux2-c-debug/include/petscsnes.mod
。
所以我不确定我是否缺少一个标志,该标志应该告诉编译器不给我库模块,或者它们是否在某些外部包中,并且我应该使用--download-SOMEPACKAGE
.
这是在.so
中生成的库$PETSC_DIR/$PETSC_ARCH/lib
:
c++ - PETSC。不使用 mpiexec 运行程序
我如何在没有的情况下在多个线程中运行使用 PETSC 编写的程序./mpiexec -n <>
?
也许我需要单独初始化MPI?在这种情况下,您可以参考示例如何使用 init MPI吗?PetscInitialize()
谢谢!
python - 如何将 pyop2.petsc_base.Mat 矩阵转换为任何 scipy\numpy 稀疏格式?
假设我有一个矩阵 M:
文档https://op2.github.io/PyOP2/user.html说, M.sparsity.colidx持有“ CSR 数据结构的列索引数组”,而M.sparsity.rowptr持有“ CSR 数据结构的行指针数组” ",好的,所以我已经有了所有需要的坐标来重建 CSR 矩阵,但是这个CSR 数据结构在哪里?
c++ - mpi.h 的位置
我的计算机上有一个代码,Petsc
它依赖于mpi
. 在我的电脑上它运行良好。我把它放在集群上,导出路径gcc
,Petsc
和openmpi
(虽然我mpich
在我的电脑上使用我希望openmpi
也能工作)到LD_LIBRARY_PATH
和PATH
。我还更改了makefile中的路径。Petsc、gcc、openmpi 在集群上都可用,所以我没有配置任何东西。当我这样做时make
,编译器给出了错误:
fatal error: mpi.h: No such file or directory
我知道我没有提供完整的信息,但如果需要我可以提供更多信息。我怎样才能Petsc
知道在哪里mpi.h
?
matrix - 用鬼线构建 PETSc 矩阵?
由于 VecCreateGhost() 或 VecMPISetGhost() 函数,我知道 PETSc 允许其向量携带幻影值。有谁知道是否有类似的功能可以创建带有鬼线的矩阵?谢谢,米里亚姆
c - PETSc 中具有不规则形状的结构化网格(DM 上下文)
我在结构化网格中有一个有限差分问题PETSc
,DM
上下文帮助我非常容易地创建矩阵,DM
给我一个矩形域的整个矩阵,这对我很好,因为我正在使用这个参考系统,但我有一个不规则的形状在我的问题中,这意味着我没有在这个矩阵中使用很多条目。如何在矩阵组装中不分配此空间并告诉KSP
上下文不要使用此条目来解决问题?
我的代码是这样的:
module - PETSC 标头 #include'd 在模块中
我有一个包含全局变量的模块。要声明一些全局变量,我需要使用 HDF5。我也在使用一个库,所以我还需要包含一个头文件。所以 global_variable.F90 的序言看起来像这样。
Vec是在头文件中定义的数据类型,HID_T是在 HDF5 模块中定义的数据类型。
现在,我有一个包含 I/O 子例程的文件。该文件还使用 HDF5 和 global_variables.F90 中使用的相同库。所以 IO.F90 看起来像这样。
问题1:编译器在编译IO.F90时返回错误,说Vec是未定义的数据类型。但它并没有抱怨HID_T。我认为 global_variables 模块已经包含 HDF5 模块和头文件,使用 IO.F90 中的 global_variables 模块将处理每个数据类型声明,但似乎没有。你能帮我理解我理解错了吗?
问题2:有没有办法将#include的效果限制在声明它的模块上?
PS。如果我包含#include "finclude/petscvec.h"
在声明Vec的 IO.F90 中,那么它编译得很好。
c - 为什么 Valgrind 在 PETSc 中分配 char* 时报告大小为 8 的无效写入?
我在 PETSc 中的申请被终止了。我检查了 Valgrind 的情况,但我不明白它的报告:
在 tsresil.c:525(我在 PETSc 中的实现)中:
在继承.c 中:
PetscObject 是一个指向:
因此,问题似乎与 的分配有关char* descr
,但我不明白为什么。大小 8 会通知指针错误,不是吗?