Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals

solverError.h

Go to the documentation of this file.
00001 /*
00002   Last changed Time-stamp: <2005-12-15 20:33:39 raim>
00003   $Id: solverError.h,v 1.13 2005/12/15 19:54:06 raimc Exp $ 
00004 */
00005 /* 
00006  *
00007  * This library is free software; you can redistribute it and/or modify it
00008  * under the terms of the GNU Lesser General Public License as published
00009  * by the Free Software Foundation; either version 2.1 of the License, or
00010  * any later version.
00011  *
00012  * This library is distributed in the hope that it will be useful, but
00013  * WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
00014  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. The software and
00015  * documentation provided hereunder is on an "as is" basis, and the
00016  * authors have no obligations to provide maintenance, support,
00017  * updates, enhancements or modifications.  In no event shall the
00018  * authors be liable to any party for direct, indirect, special,
00019  * incidental or consequential damages, including lost profits, arising
00020  * out of the use of this software and its documentation, even if the
00021  * authors have been advised of the possibility of such damage.  See
00022  * the GNU Lesser General Public License for more details.
00023  *
00024  * You should have received a copy of the GNU Lesser General Public License
00025  * along with this library; if not, write to the Free Software Foundation,
00026  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00027  *
00028  * The original code contained here was initially developed by:
00029  *
00030  *     Andrew Finney
00031  *
00032  * Contributor(s):
00033  *     Rainer Machne
00034  */
00035 
00036 #ifndef _SOLVERERROR_H_
00037 #define _SOLVERERROR_H_
00038 
00039 #include <stdarg.h>
00040 #include <stddef.h>
00041 #include "sbmlsolver/exportdefs.h"
00042 
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046 
00050 typedef enum errorCode
00051 {
00052 
00054     SOLVER_ERROR_ODE_COULD_NOT_BE_CONSTRUCTED_FOR_SPECIES  = 10000,
00055     SOLVER_ERROR_THE_MODEL_CONTAINS_EVENTS = 10001,
00056     SOLVER_ERROR_THE_MODEL_CONTAINS_ALGEBRAIC_RULES = 10002,
00057     SOLVER_ERROR_ODE_MODEL_COULD_NOT_BE_CONSTRUCTED = 10003,
00058     SOLVER_ERROR_NO_KINETIC_LAW_FOUND_FOR_REACTION = 10004,
00059     SOLVER_ERROR_ENTRIES_OF_THE_JACOBIAN_MATRIX_COULD_NOT_BE_CONSTRUCTED = 10005,
00060     SOLVER_ERROR_MODEL_NOT_SIMPLIFIED = 10006,
00061     SOLVER_ERROR_ENTRIES_OF_THE_PARAMETRIC_MATRIX_COULD_NOT_BE_CONSTRUCTED = 10007,
00062 
00064     SOLVER_ERROR_MAKE_SURE_SCHEMA_IS_ON_PATH = 10030,
00065     SOLVER_ERROR_CANNOT_PARSE_MODEL = 10031,
00066     SOLVER_ERROR_DOCUMENTLEVEL_ONE = 100032,
00067      
00069     SOLVER_ERROR_NO_GRAPHVIZ = 10050,
00071     SOLVER_ERROR_INTEGRATOR_SETTINGS = 10100,
00072     SOLVER_ERROR_VARY_SETTINGS = 10101,
00073       
00075     SOLVER_ERROR_INTEGRATION_NOT_SUCCESSFUL = 20000,
00076     SOLVER_ERROR_EVENT_TRIGGER_FIRED = 20001,
00077     SOLVER_ERROR_CVODE_MALLOC_FAILED = 20002,
00078 
00081     SOLVER_ERROR_AST_UNKNOWN_NODE_TYPE = 20100,
00082     SOLVER_ERROR_AST_UNKNOWN_FAILURE = 20101,
00083     SOLVER_ERROR_AST_EVALUATION_FAILED_MISSING_VALUE = 20102,
00084     SOLVER_ERROR_AST_EVALUATION_FAILED_DELAY = 20103,
00085     SOLVER_ERROR_AST_EVALUATION_FAILED_LAMBDA = 20104,
00086     SOLVER_ERROR_AST_EVALUATION_FAILED_FUNCTION = 20105,
00087     SOLVER_ERROR_AST_EVALUATION_FAILED_FLOAT_FACTORIAL = 20106,
00089     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_CONSTANT = 20110,
00090     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_OPERATOR = 20111,
00091     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LAMBDA = 20112,
00092     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_DELAY = 20114,
00093     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_FACTORIAL = 20115,
00094     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_PIECEWISE = 20117,
00095     SOLVER_ERROR_AST_DIFFERENTIATION_FAILED_LOGICAL_OR_RELATIONAL = 20118,
00096     
00098     SOLVER_ERROR_CVODE_RESULTS_FAILED = 20201,
00099     SOLVER_ERROR_SBML_RESULTS_FAILED = 20202,
00100     
00102     SOLVER_MESSAGE_RERUN_WITH_OR_WO_JACOBIAN = 20500,
00103     SOLVER_MESSAGE_STEADYSTATE_FOUND = 20501,
00104  
00106     SOLVER_ERROR_NO_MORE_MEMORY_AVAILABLE = 30000,
00107 
00109     SOLVER_ERROR_SYMBOL_IS_NOT_IN_MODEL = 40000,
00110     SOLVER_ERROR_ATTEMPTING_TO_COPY_VARIABLE_STATE_BETWEEN_INSTANCES_OF_DIFFERENT_MODELS = 40001
00111 
00112 } errorCode_t;
00113 
00115 typedef enum errorType
00116 {
00117     FATAL_ERROR_TYPE = 0,
00118     ERROR_ERROR_TYPE = 1,
00119     WARNING_ERROR_TYPE = 2,
00120     NUMBER_OF_ERROR_TYPES = 3
00121 } errorType_t;
00122 
00123 #define RETURN_ON_ERRORS_WITH(x) \
00124 {if (SolverError_getNum(ERROR_ERROR_TYPE) || SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
00125 
00126 #define RETURN_ON_FATALS_WITH(x) \
00127 {if (SolverError_getNum(FATAL_ERROR_TYPE)) return (x); }
00128 
00129 #define ASSIGN_NEW_MEMORY_BLOCK(_ref, _num, _type, _return) \
00130 { (_ref) = (_type *)SolverError_calloc(_num, sizeof(_type)); RETURN_ON_FATALS_WITH(_return) }
00131 
00132 #define ASSIGN_NEW_MEMORY(_ref, _type, _return) ASSIGN_NEW_MEMORY_BLOCK(_ref, 1, _type, _return)
00133 
00134 /* get number of stored errors  of given type */
00135 SBML_ODESOLVER_API int SolverError_getNum(errorType_t); 
00136 
00137 /* get a stored error message */
00138 SBML_ODESOLVER_API char * SolverError_getMessage(errorType_t, int errorNum);
00139 
00140 /* get error code */
00141 SBML_ODESOLVER_API errorCode_t SolverError_getCode(errorType_t, int errorNum);
00142 
00143 /* get error code of last error stored of given type */
00144 SBML_ODESOLVER_API errorCode_t SolverError_getLastCode(errorType_t);
00145 
00146 /* empty error store */
00147 SBML_ODESOLVER_API void SolverError_clear();
00148 
00149 /* create an error */
00150 SBML_ODESOLVER_API void SolverError_error(errorType_t, errorCode_t, char *format, ...);
00151 
00152 /* exit the program if errors or fatals have been created. */
00153 SBML_ODESOLVER_API void SolverError_haltOnErrors();
00154 
00155 /* write all errors and warnings to standard error */
00156 SBML_ODESOLVER_API void SolverError_dump();
00157 
00158 /* write all errors and warnings to a string (owned by caller unless SolverError_isMemoryExhausted()) */
00159 SBML_ODESOLVER_API char *SolverError_dumpToString();
00160 
00161 /* free string returned by SolverError_dumpToString */
00162 SBML_ODESOLVER_API void SolverError_freeDumpString(char *);
00163 
00164 /* write all errors and warnings to standard error and then empty error store*/
00165 SBML_ODESOLVER_API void SolverError_dumpAndClearErrors();
00166 
00167 /* allocated memory and sets error if it fails */
00168 SBML_ODESOLVER_API void *SolverError_calloc(size_t num, size_t size);
00169 
00170 /* returns 1 if memory has been exhausted 0 otherwise */
00171 SBML_ODESOLVER_API int SolverError_isMemoryExhausted();
00172 
00173 #ifdef __cplusplus
00174 }
00175 #endif
00176 
00177 #endif 
00178 /* _SOLVERERROR_H_ */
00179 

Generated on Wed Dec 21 18:10:07 2005 for SBML ODE Solver Library API by  doxygen 1.4.4