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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2073 - (hide annotations)
Thu Nov 20 10:51:41 2008 UTC (13 years, 8 months ago) by phornby
File MIME type: text/plain
File size: 3909 byte(s)
Still working away at makeing paso sharable on windows.


1 gross 1361
2     /*******************************************************
3 ksteube 1811 *
4     * Copyright (c) 2003-2008 by University of Queensland
5     * Earth Systems Science Computational Center (ESSCC)
6     * http://www.uq.edu.au/esscc
7     *
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 gross 1361
14 ksteube 1811
15 gross 1361 #ifndef INC_SOLVERFCT
16     #define INC_SOLVERFCT
17    
18     #include "SystemMatrix.h"
19 gross 1804 #include "Options.h"
20     #include "performance.h"
21 gross 1361
22 gross 1362 typedef struct Paso_FCTransportProblem {
23    
24 gross 1363 double theta;
25 gross 1370 double dt_max;
26 gross 1363 bool_t valid_matrices;
27    
28 gross 1407 Paso_SystemMatrix * transport_matrix;
29     Paso_SystemMatrix * mass_matrix;
30    
31 gross 1364 double* u;
32 gross 1562 Paso_Coupler* u_coupler;
33 gross 1364
34 gross 1407 index_t *main_iptr;
35     Paso_SystemMatrix * iteration_matrix;
36     double* main_diagonal_low_order_transport_matrix;
37 gross 1362 double* lumped_mass_matrix;
38    
39     Paso_MPIInfo *mpi_info;
40     dim_t reference_counter;
41 gross 1361
42 gross 1362 } Paso_FCTransportProblem;
43 gross 1361
44 phornby 2073
45     PASO_DLL_API
46 gross 1362 Paso_FCTransportProblem* Paso_FCTransportProblem_getReference(Paso_FCTransportProblem* in);
47 phornby 2073
48     PASO_DLL_API
49 gross 1407 Paso_FCTransportProblem* Paso_FCTransportProblem_alloc(double theta, Paso_SystemMatrixPattern *pattern, int block_size);
50 phornby 2073
51     PASO_DLL_API
52 gross 1562 dim_t Paso_FCTransportProblem_getBlockSize(const Paso_FCTransportProblem* in);
53 phornby 2073
54     PASO_DLL_API
55 gross 1407 double Paso_FCTransportProblem_getSafeTimeStepSize(Paso_FCTransportProblem* in);
56 phornby 2073
57     PASO_DLL_API
58 gross 1407 void Paso_FCTransportProblem_setLowOrderOperator(Paso_FCTransportProblem * fc);
59 phornby 2073
60     PASO_DLL_API
61 gross 1362 Paso_SystemMatrix* Paso_FCTransportProblem_borrowTransportMatrix(Paso_FCTransportProblem* in);
62 phornby 2073
63     PASO_DLL_API
64 gross 1407 Paso_SystemMatrix* Paso_FCTransportProblem_borrowMassMatrix(Paso_FCTransportProblem* in);
65 phornby 2073
66     PASO_DLL_API
67 gross 1362 double* Paso_FCTransportProblem_borrowLumpedMassMatrix(Paso_FCTransportProblem* in);
68 phornby 2073
69     PASO_DLL_API
70 gross 1362 dim_t Paso_FCTransportProblem_getTotalNumRows(Paso_FCTransportProblem* in);
71 phornby 2073
72     PASO_DLL_API
73 gross 1407 void Paso_FCTransportProblem_free(Paso_FCTransportProblem* in);
74 phornby 2073
75     PASO_DLL_API
76 gross 1417 void Paso_FCTransportProblem_reset(Paso_FCTransportProblem* in);
77 phornby 2073
78     PASO_DLL_API
79 gross 1364 void Paso_SolverFCT_solve(Paso_FCTransportProblem* fctp, double* u, double dt, double* source, Paso_Options* options);
80 phornby 2073
81     PASO_DLL_API
82 gross 1407 void Paso_FCTransportProblem_checkinSolution(Paso_FCTransportProblem* in, double* u);
83 phornby 2073
84     PASO_DLL_API
85 gross 1562 void Paso_FCTransportProblem_applyPreAntiDiffusionCorrection(Paso_SystemMatrix *f,const Paso_Coupler* u_coupler);
86 phornby 2073
87     PASO_DLL_API
88 gross 1562 void Paso_SolverFCT_setQs(const Paso_Coupler* u_coupler,double* QN, double* QP, const Paso_SystemMatrix *L);
89 phornby 2073
90     PASO_DLL_API
91 gross 1562 void Paso_FCTransportProblem_setAntiDiffusionFlux(const double dt, const Paso_FCTransportProblem * fc, Paso_SystemMatrix *flux_matrix, const Paso_Coupler* u_coupler);
92 phornby 2073
93     PASO_DLL_API
94 gross 1562 void Paso_FCTransportProblem_setRs(const Paso_SystemMatrix *f,const double* lumped_mass_matrix,const Paso_Coupler* QN,const Paso_Coupler* QP,double* RN,double* RP);
95 phornby 2073
96     PASO_DLL_API
97 gross 1562 void Paso_FCTransportProblem_addCorrectedFluxes(double* f,const Paso_SystemMatrix *flux_matrix,const Paso_Coupler* RN,const Paso_Coupler* RP);
98 gross 1361
99 phornby 2073
100     PASO_DLL_API
101 gross 1562 void Paso_SolverFCT_setMuPaLuPbQ(double* out, const double* M, const Paso_Coupler* u_coupler, const double a, const Paso_SystemMatrix *L, const double b, const double* Q);
102 phornby 2073
103     PASO_DLL_API
104 gross 1562 Paso_Connector* Paso_FCTransportProblem_borrowConnector(const Paso_FCTransportProblem* in);
105 phornby 2073
106     PASO_DLL_API
107 ksteube 1812 void Paso_FCT_setUp(Paso_FCTransportProblem* fctp, const double dt, const double *sourceN, const double *sourceP, double* b, double* uTilde,
108 gross 1804 Paso_Coupler* uTilde_coupler, double *QN, Paso_Coupler* QN_coupler, double *QP, Paso_Coupler* QP_coupler,
109     Paso_Options* options, Paso_Performance* pp);
110 phornby 2073
111     PASO_DLL_API
112 gross 1859 index_t Paso_FCTransportProblem_getTypeId(const index_t solver,const index_t preconditioner, const index_t package,const bool_t symmetry);
113 phornby 2073
114 gross 1361 #endif /* #ifndef INC_SOLVERFCT */

  ViewVC Help
Powered by ViewVC 1.1.26