KmlMgSolverApply
进行求解回代。
接口定义
C Interface:
KmlMgStatus KmlMgSolverApply(KmlMgSolverH solver, KmlMgMatrixH B, KmlMgMatrixH X, KmlMgApplyOptions* options);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
solver |
KmlMgSolverH |
由KmlMgSolverCreate创建的求解器句柄 |
输入/输出 |
B |
KmlMgMatrix |
由KmlMgMatrixCreate函数创建的矩阵句柄,表示右端向量 |
输入 |
X |
KmlMgMatrix |
由KmlMgMatrixCreate函数创建的矩阵句柄,表示解空间,初始输入值可作为初次迭代初值 |
输入/输出 |
options |
KmlMgApplyOptions& |
回代配置信息 |
输入 |
返回值
返回值 |
类型 |
描述 |
---|---|---|
KML_MG_OK |
int |
正常执行 |
KML_MG_ERR_INVALID_PARAM |
int |
参数无效 |
KML_MG_ERR_UNSUPPORTED |
int |
暂不支持的功能 |
KML_MG_ERR_NO_MEMORY |
int |
分配内存失败 |
KML_MG_ERR_EXCEEDS_LIMIT |
int |
超过设置限制 |
KML_MG_ERR_INCOMPATIBLE |
int |
版本不兼容 |
KML_MG_ERR_NO_REQUIRED_FIELD |
int |
没设置必填字段 |
KML_MG_ERR_UNKNOWN_TYPE |
int |
未知的类型 |
KML_MG_ERR_THIRD_PART |
int |
内部调用第三方错误 |
KML_MG_ERR_INCONSISTENT |
int |
传递信息不一致 |
KML_MG_ERR_UNEXPECTED_CALL_ORDER |
int |
预期之外的调用顺序 |
KML_MG_ERR_MATRIX_VALUE_IS_NULL |
int |
矩阵值为空 |
KML_MG_ERR_NO_RESOURCE |
int |
资源未就绪 |
结构体说明
KmlMgApplyOptions
字段名 |
字段类型 |
字段说明 |
fieldMask |
uint64_t |
配置生效的字段掩码。非0的位代表配置对应字段指定的值,0的位代表使用默认值,可配置的掩码位请参见具体字段的说明。 |
useZeroGuess |
bool |
是否以X=0为初值开始迭代,若为true则迭代初值为0,若为false则以参数X传入时的值为初值。 掩码位:KML_MG_APPLY_OPTIONS_USE_ZERO_GUESS |
toleranceType |
KmlMgToleranceType |
迭代收敛的阈值类型,有如下值
掩码位:KML_MG_APPLY_OPTIONS_TOLERANCE_TYPE |
tolerance |
double |
迭代收敛的阈值,小于该阈值则停止迭代 掩码位:KML_MG_APPLY_OPTIONS_TOLERANCE |
maxIteration |
int64_t |
最大迭代次数,迭代次数达到阈值则停止迭代 掩码位:KML_MG_APPLY_OPTIONS_MAX_ITERATION |
restartStep |
int64_t |
重启步数,仅当KmlMgSolverOptions.ksp为KML_MG_SOLVER_GCR或KML_MG_SOLVER_GMRES时生效。 掩码位:KML_MG_APPLY_OPTIONS_RESTART_STEP |
solveResi |
bool |
是否转化成求解残差方程,精度优化选项。在给定初值X0时,若为true,则以将方程A*X=B转化为A*(X-X0)=B-A*X0。当X0非常接近真实解时仅当KmlMgSolverOptions.ksp为KML_MG_SOLVER_G 掩码位:KML_MG_APPLY_OPTIONS_SOLVE_RESI |