/[escript]/trunk/paso/src/SolverFCT.h
ViewVC logotype

Annotation of /trunk/paso/src/SolverFCT.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1410 - (hide annotations)
Thu Feb 7 04:24:00 2008 UTC (12 years ago) by gross
File MIME type: text/plain
File size: 2926 byte(s)
a new version of the algebric upwinding a. flux limiter
1 gross 1361 /* $Id: $ */
2    
3     /*******************************************************
4     *
5     * Copyright 2007 by University of Queensland
6     *
7     * http://esscc.uq.edu.au
8     * Primary Business: Queensland, Australia
9     * Licensed under the Open Software License version 3.0
10     * http://www.opensource.org/licenses/osl-3.0.php
11     *
12     *******************************************************/
13    
14     #ifndef INC_SOLVERFCT
15     #define INC_SOLVERFCT
16    
17     #include "SystemMatrix.h"
18    
19 gross 1362 typedef struct Paso_FCTransportProblem {
20    
21 gross 1363 double theta;
22 gross 1370 double dt_max;
23 gross 1363 bool_t valid_matrices;
24    
25 gross 1407 Paso_SystemMatrix * transport_matrix;
26     Paso_SystemMatrix * mass_matrix;
27    
28 gross 1364 double* u;
29 gross 1407 double u_min;
30 gross 1364
31 gross 1407 /* x */
32     index_t *main_iptr;
33     Paso_SystemMatrix * iteration_matrix;
34     double* main_diagonal_low_order_transport_matrix;
35 gross 1362 double* lumped_mass_matrix;
36    
37     Paso_MPIInfo *mpi_info;
38     dim_t reference_counter;
39 gross 1361
40 gross 1362 } Paso_FCTransportProblem;
41 gross 1361
42 gross 1362 Paso_FCTransportProblem* Paso_FCTransportProblem_getReference(Paso_FCTransportProblem* in);
43 gross 1407 Paso_FCTransportProblem* Paso_FCTransportProblem_alloc(double theta, Paso_SystemMatrixPattern *pattern, int block_size);
44     double Paso_FCTransportProblem_getSafeTimeStepSize(Paso_FCTransportProblem* in);
45     void Paso_FCTransportProblem_setLowOrderOperator(Paso_FCTransportProblem * fc);
46 gross 1362 Paso_SystemMatrix* Paso_FCTransportProblem_borrowTransportMatrix(Paso_FCTransportProblem* in);
47 gross 1407 Paso_SystemMatrix* Paso_FCTransportProblem_borrowMassMatrix(Paso_FCTransportProblem* in);
48 gross 1362 double* Paso_FCTransportProblem_borrowLumpedMassMatrix(Paso_FCTransportProblem* in);
49     dim_t Paso_FCTransportProblem_getTotalNumRows(Paso_FCTransportProblem* in);
50 gross 1407 void Paso_FCTransportProblem_free(Paso_FCTransportProblem* in);
51 gross 1364 void Paso_SolverFCT_solve(Paso_FCTransportProblem* fctp, double* u, double dt, double* source, Paso_Options* options);
52 gross 1407 void Paso_FCTransportProblem_checkinSolution(Paso_FCTransportProblem* in, double* u);
53     void Paso_FCTransportProblem_applyPreAntiDiffusionCorrection(Paso_SystemMatrix *f,const double* u);
54     void Paso_SolverFCT_setMuPaLuPbQ(double* out,const double* M, const double* u,const double a, Paso_SystemMatrix *L, const double b,const double* Q);
55     void Paso_SolverFCT_setQs(const double* u,double* QN, double* QP, Paso_SystemMatrix *L);
56 gross 1410 void Paso_FCTransportProblem_setAntiDiffusionFlux(const double dt, const Paso_FCTransportProblem * fc, Paso_SystemMatrix *flux_matrix, const double* u, const double* u_last);
57 gross 1407 void Paso_FCTransportProblem_updateAntiDiffusionFlux(const Paso_FCTransportProblem * fc, Paso_SystemMatrix *flux_matrix,const double a, const double b, const double* u);
58     void Paso_FCTransportProblem_setRs(const Paso_SystemMatrix *f,const double* lumped_mass_matrix,const double* QN,const double* QP,double* RN,double* RP);
59     void Paso_FCTransportProblem_addCorrectedFluxes(double* f,Paso_SystemMatrix *flux_matrix,const double* RN,const double* RP);
60 gross 1361
61     #endif /* #ifndef INC_SOLVERFCT */

  ViewVC Help
Powered by ViewVC 1.1.26