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_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 */