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

📄 errhandl.c

📁 OpenFVM-v1.1 open source cfd code
💻 C
字号:
/****************************************************************************//*                                errhandl.c                                *//****************************************************************************//*                                                                          *//* ERRor HANDLing routines                                                  *//*                                                                          *//* 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)               *//*                                                                          *//****************************************************************************/#include <stdlib.h>#include <string.h>#include "errhandl.h"#include "copyrght.h"/* LASPack error status, procedure and objects where an error has ariced */static LASErrIdType LASErrId = LASOK;static char *LASProcName = NULL;static char *LASObject1Name = NULL;static char *LASObject2Name = NULL;static char *LASObject3Name = NULL;void LASError(LASErrIdType ErrId, char *ProcName, char *Object1Name,	      char *Object2Name, char *Object3Name)/* Set error status to ErrId, ... */{    LASErrId = ErrId;        /* release current values of error variables */    if (LASProcName != NULL)        free(LASProcName);    if (LASObject1Name != NULL)        free(LASObject1Name);    if (LASObject2Name != NULL)        free(LASObject2Name);    if (LASObject3Name != NULL)        free(LASObject2Name);    LASProcName = NULL;    LASObject1Name = NULL;    LASObject2Name = NULL;    LASObject3Name = NULL;        LASProcName = (char *)malloc((strlen(ProcName) + 1) * sizeof(char));    if (LASProcName != NULL) {        strcpy(LASProcName, ProcName);		if (Object1Name != NULL && strlen(Object1Name) > 0) {            LASObject1Name = (char *)malloc((strlen(Object1Name) + 1) * sizeof(char));            if (LASObject1Name != NULL)                strcpy(LASObject1Name, Object1Name);	}	if (Object2Name != NULL && strlen(Object2Name) > 0) {            LASObject2Name = (char *)malloc((strlen(Object2Name) + 1) * sizeof(char));            if (LASObject2Name != NULL)                strcpy(LASObject2Name, Object2Name);	}	if (Object3Name != NULL && strlen(Object3Name) > 0) {            LASObject3Name = (char *)malloc((strlen(Object3Name) + 1) * sizeof(char));            if (LASObject3Name != NULL)                strcpy(LASObject3Name, Object3Name);	}    } else {        strcpy(LASProcName, "(procedure unknown)");    }	printf("\nError: %d %s\n", LASErrId, LASProcName);}void LASBreak(void)/* user break */{    LASErrId = LASUserBreak;}LASErrIdType LASResult(void)/* get result of linear algebra operations */{    return(LASErrId);}void WriteLASErrDescr(FILE *File)/* write a short description of the reason caused break of LASPack */{    int NoPrintedObj;        if (LASErrId != LASOK) {	if (LASProcName != NULL) {            fprintf(File, "in %s", LASProcName);	    NoPrintedObj = 0;	    if (LASObject1Name != NULL || LASObject2Name != NULL		|| LASObject3Name != NULL)                fprintf(File, " for ");	    if (LASObject1Name != NULL) {	        if (NoPrintedObj > 0)                    fprintf(File, ", ");                fprintf(File, "%s", LASObject1Name);		NoPrintedObj++;	    }	    if (LASObject2Name != NULL) {	        if (NoPrintedObj > 0)                    fprintf(File, ", ");                fprintf(File, "%s", LASObject2Name);		NoPrintedObj++;	    }	    if (LASObject3Name != NULL) {	        if (NoPrintedObj > 0)                    fprintf(File, ", ");                fprintf(File, "%s", LASObject3Name);		NoPrintedObj++;	    }            fprintf(File, ":");        }        fprintf(File, "\n");    }        switch (LASErrId) {        case LASOK:            break;        case LASMemAllocErr:	    fprintf(File, "Not enough memory is available.\n");            break;        case LASLValErr:	    fprintf(File, "L-value parameter is expected.\n");            break;        case LASDimErr:	    fprintf(File, "Objects have incompatible dimensions.\n");            break;        case LASRangeErr:	    fprintf(File, "Indices are out of range.\n");            break;        case LASSymStorErr:	    fprintf(File, "Some elements are stored in the lower triangular part");	    fprintf(File, " of a symmetric matrix.\n");            break;        case LASMatrCombErr:	    fprintf(File, "Matrices cannot be combined.\n");            break;        case LASMulInvErr:	    fprintf(File, "Inverse multiplication cannot be carried out.\n");            break;        case LASElNotSortedErr:	    fprintf(File, "Matrix elements are not sorted.\n");            break;        case LASZeroInDiagErr:	    fprintf(File, "Zero elements in the matrix diagonal are not allowed.\n");            break;        case LASZeroPivotErr:	    fprintf(File, "Factorization produces zero pivot elements.\n");            break;        case LASILUStructErr:	    fprintf(File, "Matrix has a structure which is not allowed for ILU factorization.\n");            break;        case LASBreakdownErr:	    fprintf(File, "Iterative solver fails.\n");            break;        case LASUserBreak:	    fprintf(File, "Termination by an user break.\n");            break;    }}

⌨️ 快捷键说明

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