⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmatrix.h

📁 OpenFVM-v1.1 open source cfd code
💻 H
字号:
/****************************************************************************//*                                qmatrix.h                                 *//****************************************************************************//*                                                                          *//* type QMATRIX                                                             *//*                                                                          *//* Copyright (C) 1992-1996 Tomas Skalicky. All rights reserved.             *//*                                                                          *//****************************************************************************//*                                                                          *//*        ANY USE OF THIS CODE CONSTITUTES ACCEPTANCE OF THE TERMS          *//*              OF THE COPYRIGHT NOTICE (SEE FILE COPYRGHT.H)               *//*                                                                          *//****************************************************************************/#ifndef QMATRIX_H#define QMATRIX_H#include <stdlib.h>#include "lastypes.h"#include "elcmp.h"#include "vector.h"#include "copyrght.h"typedef struct QMatrixType {    char *Name;    size_t Dim;    Boolean Symmetry;    ElOrderType ElOrder;    InstanceType Instance;    int LockLevel;    double MultiplD;    double MultiplU;    double MultiplL;    Boolean OwnData;    size_t *Len;    ElType **El;    Boolean *ElSorted;    Boolean *DiagElAlloc;    ElType **DiagEl;    Boolean *ZeroInDiag;    Real *InvDiagEl;    Boolean UnitRightKer;    Real *RightKerCmp;    Boolean UnitLeftKer;    Real *LeftKerCmp;    void *EigenvalInfo;    Boolean *ILUExists;    struct QMatrixType *ILU;} QMatrix;void Q_Constr(QMatrix *Q, char *Name, size_t Dim, Boolean Symmetry,              ElOrderType ElOrder, InstanceType Instance, Boolean OwnData);void Q_Destr(QMatrix *Q);void Q_SetName(QMatrix *Q, char *Name);char *Q_GetName(QMatrix *Q);size_t Q_GetDim(QMatrix *Q);Boolean Q_GetSymmetry(QMatrix *Q);ElOrderType Q_GetElOrder(QMatrix *Q);void Q_SetLen(QMatrix *Q, size_t RoC, size_t Len);size_t Q_GetLen(QMatrix *Q, size_t RoC);void Q_SetEntry(QMatrix *Q, size_t RoC, size_t Entry, size_t Pos, Real Val);size_t Q_GetPos(QMatrix *Q, size_t RoC, size_t Entry);Real Q_GetVal(QMatrix *Q, size_t RoC, size_t Entry);void Q_AddVal(QMatrix *Q, size_t RoC, size_t Entry, Real Val);/* macros for fast access */#define     Q__GetLen(PtrQ, RoC)               (PtrQ)->Len[RoC]#define     Q__SetEntry(PtrQ, RoC, Entry, Pos_, Val_) { \                (PtrQ)->El[RoC][Entry].Pos = (Pos_); \                (PtrQ)->El[RoC][Entry].Val = (Val_); \            }#define     Q__GetPos(PtrQ, RoC, Entry)        (PtrQ)->El[RoC][Entry].Pos#define     Q__GetVal(PtrQ, RoC, Entry)        (PtrQ)->El[RoC][Entry].Val#define     Q__AddVal(PtrQ, RoC, Entry, Val_) \                (PtrQ)->El[RoC][Entry].Val += (Val_)Real Q_GetEl(QMatrix *Q, size_t Row, size_t Clm);void Q_SortEl(QMatrix *Q);void Q_AllocInvDiagEl(QMatrix *Q);void Q_SetKer(QMatrix *Q, Vector *RightKer, Vector *LeftKer);Boolean Q_KerDefined(QMatrix *Q);void **Q_EigenvalInfo(QMatrix *Q);void Q_Lock(QMatrix *Q);void Q_Unlock(QMatrix *Q);#endif /* QMATRIX_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -