ESYS13  Revision_
ReactiveSolver.h
Go to the documentation of this file.
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 */