ESYS13  Revision_
FluxLimiter.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_PASOFCTLIMITER
00016 #define INC_PASOFCTLIMITER
00017 
00018 #include "Transport.h"
00019 
00020 
00021 typedef struct Paso_FCT_FluxLimiter {
00022       Paso_SystemMatrix *antidiffusive_fluxes;
00023       Esys_MPIInfo *mpi_info;
00024       double dt;
00025       double* u_tilde;
00026       double* MQ;   /* (M_C* Q_min, M_C* Q_max) */ 
00027       double* R;   /* (R-, R+) */
00028       /* Paso_Coupler *MQ_coupler; */
00029       Paso_Coupler *R_coupler;
00030       Paso_Coupler *u_tilde_coupler;
00031       double*  borrowed_lumped_mass_matrix; /* borrowd reference */
00032 } Paso_FCT_FluxLimiter;
00033 
00034 #define Paso_FCT_FluxLimiter_getTotalNumRows(_f_) Paso_SystemMatrix_getTotalNumRows((_f_)->antidiffusive_fluxes)
00035 #define Paso_FCT_FluxLimiter_getFluxPattern(_f_) ((_f_)->antidiffusive_fluxes->pattern)
00036 
00037 PASO_DLL_API Paso_FCT_FluxLimiter* Paso_FCT_FluxLimiter_alloc(Paso_TransportProblem *fctp);
00038 PASO_DLL_API void Paso_FCT_FluxLimiter_free(Paso_FCT_FluxLimiter * in);
00039 PASO_DLL_API void Paso_FCT_FluxLimiter_setU_tilda(Paso_FCT_FluxLimiter* flux_limiter, const double *Mu_tilda);
00040 PASO_DLL_API void Paso_FCT_FluxLimiter_addLimitedFluxes_Start(Paso_FCT_FluxLimiter* flux_limiter);
00041 PASO_DLL_API void Paso_FCT_FluxLimiter_addLimitedFluxes_Complete(Paso_FCT_FluxLimiter* flux_limiter, double* b);
00042 
00043 #endif /* #ifndef INC_PASOFCTLIMITER */