ESYS13
Revision_
|
00001 00002 /******************************************************* 00003 * 00004 * Copyright (c) 2003-2012 by University of Queensland 00005 * Earth Systems Science Computational Center (ESSCC) 00006 * http://www.uq.edu.au/esscc 00007 * 00008 * Primary Business: Queensland, Australia 00009 * Licensed under the Open Software License version 3.0 00010 * http://www.opensource.org/licenses/osl-3.0.php 00011 * 00012 *******************************************************/ 00013 00014 00015 #ifndef INC_PASOREACTIVE 00016 #define INC_PASOREACTIVE 00017 00018 #include "Transport.h" 00019 00020 #define PASO_RT_EXP_LIM_MIN sqrt(EPSILON) /* exp(h)-1 ~ h + h**2/2 for abs(h) < PASO_RT_EXP_LIM_MIN */ 00021 #define PASO_RT_EXP_LIM_MAX log(1./sqrt(EPSILON)) /* it is assumed that exp(h) with h>PASO_RT_EXP_LIM_MAX is not reliable */ 00022 00023 00024 typedef struct Paso_ReactiveSolver { 00025 double A; 00026 double dt; 00027 } Paso_ReactiveSolver; 00028 00029 00030 PASO_DLL_API 00031 err_t Paso_ReactiveSolver_solve(Paso_ReactiveSolver* support, Paso_TransportProblem* fctp, double* u, double* u_old, const double* source, Paso_Options* options, Paso_Performance *pp); 00032 00033 PASO_DLL_API 00034 Paso_ReactiveSolver* Paso_ReactiveSolver_alloc(Paso_TransportProblem* fctp); 00035 00036 PASO_DLL_API 00037 void Paso_ReactiveSolver_free(Paso_ReactiveSolver* in); 00038 00039 PASO_DLL_API 00040 double Paso_ReactiveSolver_getSafeTimeStepSize(Paso_TransportProblem* fctp); 00041 00042 PASO_DLL_API 00043 void Paso_ReactiveSolver_initialize(const double dt, Paso_ReactiveSolver* rsolver, Paso_Options* options); 00044 00045 #endif /* #ifndef INC_PASOREACTIVE */