• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

FCTSolver.h

Go to the documentation of this file.
00001 
00002 /*******************************************************
00003 *
00004 * Copyright (c) 2003-2010 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_PASOFCT
00016 #define INC_PASOFCT
00017 
00018 #include "Functions.h"
00019 #include "Transport.h"
00020 
00021 
00022 typedef struct Paso_FCTSolver {
00023       Paso_TransportProblem* transportproblem;
00024       Paso_SystemMatrix *flux_matrix_m;
00025       double dt;
00026       double* uTilde_n;
00027       double* QN_n;
00028       double* QP_n;
00029       double* RN_m;
00030       double* RP_m;
00031       Paso_Coupler *QN_n_coupler;
00032       Paso_Coupler *QP_n_coupler;
00033       Paso_Coupler *RN_m_coupler;
00034       Paso_Coupler *RP_m_coupler;
00035       Paso_Coupler *uTilde_n_coupler;
00036       Paso_Coupler *u_m_coupler;
00037 } Paso_FCTSolver;
00038 
00039 
00040 PASO_DLL_API
00041 err_t Paso_FCTSolver_Function_call(Paso_Function * F,double* value, const double* arg, Paso_Performance *pp);
00042 
00043 PASO_DLL_API
00044 void Paso_FCTSolver_Function_free(Paso_Function * in);
00045 
00046 PASO_DLL_API
00047 Paso_Function* Paso_FCTSolver_Function_alloc(Paso_TransportProblem *tp, Paso_Options* options);
00048            
00049 PASO_DLL_API
00050 err_t Paso_FCTSolver_solve(Paso_Function* F, double* u, double dt, Paso_Options* options, Paso_Performance *pp);
00051 
00052 PASO_DLL_API
00053 double Paso_FCTSolver_getSafeTimeStepSize(Paso_TransportProblem* fctp);
00054 
00055 PASO_DLL_API
00056 void Paso_FCTSolver_applyPreAntiDiffusionCorrection(Paso_SystemMatrix *f,const Paso_Coupler* u_coupler);
00057 
00058 PASO_DLL_API
00059 void Paso_FCTSolver_setQs(const Paso_Coupler* u_coupler,double* QN, double* QP, const Paso_SystemMatrix *L);
00060 
00061 PASO_DLL_API
00062 void Paso_FCTSolver_setAntiDiffusionFlux(const double dt, const Paso_TransportProblem * fc, Paso_SystemMatrix *flux_matrix, const Paso_Coupler* u_coupler);
00063 
00064 PASO_DLL_API
00065 void Paso_FCTSolver_setRs(const Paso_SystemMatrix *f,const double* lumped_mass_matrix,const Paso_Coupler* QN,const Paso_Coupler* QP,double* RN,double* RP);
00066 
00067 PASO_DLL_API
00068 void Paso_FCTSolver_addCorrectedFluxes(double* f,const Paso_SystemMatrix *flux_matrix,const Paso_Coupler* RN,const Paso_Coupler* RP);
00069 
00070 
00071 PASO_DLL_API
00072 void Paso_FCTSolver_setMuPaLu(double* out, const double* M, const Paso_Coupler* u_coupler, const double a, const Paso_SystemMatrix *L);
00073 
00074 PASO_DLL_API
00075 void Paso_FCTSolver_setLowOrderOperator(Paso_TransportProblem * fc);
00076 
00077 PASO_DLL_API
00078 void Paso_FCTSolver_setUp(Paso_TransportProblem* fctp, const double dt, const double *u, double* b, double* uTilde,
00079                           Paso_Coupler* uTilde_coupler, double *QN, Paso_Coupler* QN_coupler, double *QP, Paso_Coupler* QP_coupler,
00080                           Paso_Options* options, Paso_Performance* pp);
00081 
00082 PASO_DLL_API
00083 err_t Paso_FCTSolver_setUpRightHandSide(Paso_TransportProblem* fctp, const double dt, 
00084                         const double *u_m, Paso_Coupler* u_m_coupler,  double * z_m,
00085                                         Paso_SystemMatrix* flux_matrix, Paso_Coupler* uTilde_coupler, const double *b, 
00086                                         Paso_Coupler* QN_coupler, Paso_Coupler* QP_coupler,
00087                                         double *RN_m, Paso_Coupler* RN_m_coupler, double* RP_m, Paso_Coupler* RP_m_coupler,
00088                                         Paso_Performance* pp);
00089 PASO_DLL_API
00090 void Paso_FCTSolver_Function_initialize(const double dt3, Paso_TransportProblem* fctp, Paso_Options* options, Paso_Performance* pp);
00091 
00092 #endif /* #ifndef INC_PASOFCT */

Generated on Thu Jan 12 2012 00:37:03 for ESYS13 by  doxygen 1.7.1