KmlScadssAnalyze

分析输入矩阵,包括Reordering、符号分解等。

接口定义

C Interface:

int KmlScadssAnalyze(KmlScadssSolver *solver, KmlScasolverMatrix *matrix, const KmlDssAnalyzeOption *basicOptions, const KmlScadssAnalyzeOption *scaOptions);

参数

参数名

类型

描述

输入/输出

solver

KmlScadssSolver *

由KmlScadssInit创建的求解器句柄。

输入

matrix

KmlScasolverMatrix *

矩阵句柄,由KmlScasolverMatrixCreate函数创建,不可为空指针。

输入

basicOptions

KmlDssAnalyzeOption *

分析阶段基础配置选项,不可为空指针,具体内容如4.3.3.10.2.2-表1所示。

输入

scaOptions

KmlScadssAnalyzeOption *

分析阶段分布式配置选项,不可为空指针,具体内容如表1所示。

  
表1 KmlScadssAnalyzeOption结构体字段描述

字段名

类型

描述

fieldMask

uint64_t

配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位见具体字段的说明。

fr

KmlScadssFRAlgo

Fill-in reduction算法类型,若不指定此掩码,则使用分析阶段基础配置项basicOptions的相关配置项。有如下值。

  • KMLSCADSS_FR_USER表示使用自定义Fill-in reduction函数。

掩码位:KMLSCADSS_ANALYSE_OPTIONS_FR

userFR

KmlScadssUserFRFunc

用户自定义的分布式Fill-in reduction算法,使用KmlScadssUserFRFunc结构体描述,见表2

  • 如果fr字段掩码KMLSCADSS_FR_USER未指定,则将忽略该参数。
  • 如果fr字段掩码为KMLSCADSS_FR_USER,但userFR.func为NULL,则会出现错误.

掩码位:KMLSCADSS_ANALYSE_OPTIONS_USER_FR

表2 KmlScadssAnalyzeOption结构体字段描述

字段名

类型

描述

func

int (*)(void *arg, const KmlScadssMatrixPartition *partition, const KmlSolverMatrixStore *store, void *iPerm, MPI_Comm comm);

用户自定义的分布式Fill-in reduction函数,该函数的原型为int (*func)(void *arg, const KmlScadssMatrixPartition *partition, const KmlSolverMatrixStore *store, void *iPerm, MPI_Comm comm);

arg

void *

用户相关的参数,和可以用作用户上下文。在调用func函数时将此作为第一个参数。

返回值

返回值

类型

描述

KMLSS_NO_ERROR

int

正常执行。

KMLSS_INTERNAL_ERROR

int

内部错误。

KMLSS_NULL_ARGUMENT

int

solver,matrix,basicOptions,scaOptions存在空参数。

依赖

#include "kml_scadss.h"