PetscBag 应该用来做什么?

计算科学 宠物
2021-12-26 01:39:52

我一直在尝试使用 PetscBag 来读取一些我想传递给我正在编写的程序的选项。在我遇到 PetscBag 的文档之前,我计划使用一个结构和一个函数,该结构将采用该结构并用于PetscOptionsGetSometype()设置结构中的所有值。

我认为 PetscBag 会节省一些代码,但是看到 PetscBag 中的每个变量都必须使用PetscOptionsRegisterSometype(),看起来使用 PetscBag 的代码与不使用它的代码一样多。

另一方面,我不太了解我将要使用的结构在使用 MPI 运行时如何工作。

PetscBag 应该用来做什么?与普通结构相比,它们有什么优势?

1个回答

PetscBag 中的项目通过相关的帮助字符串进行自我记录(在运行时可以看到 with-help和 with PetscBagView(),可以在运行时通过选项数据库 ( -prefix_fieldname 4.2e7) 覆盖,并且可以在 ASCII 和便携式二进制文件中序列化。使用普通结构,您必须编写代码来获取输入、提供帮助和序列化(包括在添加新字段时处理向后兼容性)。

用于特定问题数据的集合是合理的,例如物理模型配置的规范。这不是放置“问题大小的数据”(例如非结构化网格或高维观测数据)的好地方。