我有一些功能我希望在多边形域上进行数值积分 - 物理上,我正在对 FCC 晶格(截断八面体)的第一个布里渊区(BZ)进行积分。
我的目标是告诉 Fortran给定这种形状,空间和要整合的点。
我可以为这个区域写平面方程和不等式,也许将它们放入一个逻辑结构中,然后在整个 BZ 上积分,但这对我来说似乎效率低下。看来我应该能够使用任何可用的对称性来挑选 BZ 的一个独特位,然后使用这些对称性来反映/旋转/等我的答案。
有人告诉我已经存在可以执行此类操作的例程,但我不确定我搜索的内容是否合适(VASP 等)。
如果存在的话,有人会好心推荐一个合适的包吗?如果没有,是否有我应该研究的多维集成方法?如果是这样,是否有一种有效的方法来限制我的集成域?
另一种方法是简单地求和在区域内的统一网格上-然后以我想要的形状预先计算具有 1 和 0 的 rank-3 数组,调用、计算和求和是否会更有效仅适用于非零元素?只是想了解哪个方向最有效和最准确。