solver主命令

介绍solver主命令的使用和参数含义

作用

设置FEAT的求解器类型和参数,不同求解器的可设置参数不一样。目前支持的求解器类型为:

  • SPACK求解器:采用Spooles库的求解算法,也是FEAT的默认求解器,可支持多进程并行。
  • PARDISO求解器:采用Intel MKL Pardiso库的部分求解算法,可支持多进程并行。
  • EIGEN求解器:采用Eigen库的部分求解算法,主要用于算法研究。
  • PETSc求解器:采用PETSc库的部分求解算法,支持MPI并行。

关于求解器的选择:

  • 直接法一般比迭代法要用更多的内存,稳定性不好迭代法,但直接法计算更快
  • 对于小体系,可以选用直接法,建议优先采用SPACKPARDISO
  • 对于大体系,如果内存不够用,可以考虑采用迭代法
  • 如果对于确定的问题,可以采用不同预条件子的迭代法,具体可在PETSc算法中设置

SPACK求解器

形式

solver engine SPACK
       -threads xx
       -droptol xx
       -tau xx
       -etol xx
       -eiter xx

说明

  • -threads xx: 指定求解的多线程数,如果设置了系统变量:OMP_NUM_THREADS,则不用再设置线程数。
  • -tau xx: 指定SPOOLES求解器精度tau。
  • -droptol xx: 指定SPOOLES求解器精度droptol。
  • -etol xx: 指定频率求解算法的精度。
  • -eiter xx: 指定频率求解算法的最大迭代次数。

示例

solver engine SPACK
solver engine SPACK -threads 4

PARDISO求解器

形式

solver engine PARDISO
       -lmethod llt/dlt
       -emethod llt/dlt
       -etol xx
       -eiter xx
       -threads xx

说明

  • -lmethod ldlt: 指定矩阵求解器的算法,ldlt是直接法,采用Pardiso的LDLT分解,是系统默认的方法;llt是直接法,采用Pardiso的LLT分解。
  • -emethod llt: 指定频率求解的算法,ldlt是直接法,采用Pardiso的LDLT分解,是系统默认的方法;llt是直接法,采用Pardiso的LLT分解。
  • -etol xx: 指定频率求解算法的精度。
  • -eiter xx: 指定频率求解算法的最大迭代次数。
  • -threads xx: 指定求解的多线程数。如果设置了系统变量:OMP_NUM_THREADS,则不用再设置线程数。

示例

solver engine PARDISO -lmethod ldlt -threads 4
solver engine PARDISO -emethod llt

EIGEN求解器

形式

solver engine EIGEN
       -lmethod llt/cg/
       -emethod lu/cg
       -etol xx
       -eiter xx
       -threads xx

说明

  • -lmethod llt: 指定矩阵求解器的算法,llt是直接法,采用LLT分解,是系统默认的方法;cg是迭代法,常用的共轭梯度算法
  • -emethod lu: 指定频率求解的算法,lu是采用LU分解求解;cg是采用迭代法求解。默认是lu算法,但对于大规模问题,cg方法占用内存更少,但求解更慢。
  • -etol xx: 指定频率求解算法的精度。
  • -eiter xx: 指定频率求解算法的最大迭代次数。
  • -threads xx: 指定求解的多线程数,只支持Pardiso的算法。如果设置了系统变量:OMP_NUM_THREADS,则不用再设置线程数。

示例

solver engine EIGEN -lmethod llt -threads 4
solver engine EIGEN -emethod cg

PETSc求解器

目前只支持FEAT的MPI版本。

形式

solver engine PETSc
       -pc xx
       -etol xx
       -eiter xx

说明

  • -pc xx: 指定KSP算法的预条件子的类型,默认是PCICC预条件子,可参考PETSc手册
  • -etol xx: 指定频率求解算法的精度。
  • -eiter xx: 指定频率求解算法的最大迭代次数。

示例

solver engine PETSc
solver engine PETSc -pc PCICC

反馈留言 💬