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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1639 - (show annotations)
Mon Jul 14 08:55:25 2008 UTC (11 years, 2 months ago) by gross
File MIME type: text/plain
File size: 3304 byte(s)


1 /* $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 #include "Functions.h"
19
20 typedef struct Paso_FCTransportProblem {
21
22 double theta;
23 double dt_max;
24 bool_t valid_matrices;
25
26 Paso_SystemMatrix * transport_matrix;
27 Paso_SystemMatrix * mass_matrix;
28
29 double* u;
30 Paso_Coupler* u_coupler;
31 double u_min;
32
33 index_t *main_iptr;
34 Paso_SystemMatrix * iteration_matrix;
35 double* main_diagonal_low_order_transport_matrix;
36 double* lumped_mass_matrix;
37
38 Paso_MPIInfo *mpi_info;
39 dim_t reference_counter;
40
41 } Paso_FCTransportProblem;
42
43 Paso_FCTransportProblem* Paso_FCTransportProblem_getReference(Paso_FCTransportProblem* in);
44 Paso_FCTransportProblem* Paso_FCTransportProblem_alloc(double theta, Paso_SystemMatrixPattern *pattern, int block_size);
45 dim_t Paso_FCTransportProblem_getBlockSize(const Paso_FCTransportProblem* in);
46 double Paso_FCTransportProblem_getSafeTimeStepSize(Paso_FCTransportProblem* in);
47 void Paso_FCTransportProblem_setLowOrderOperator(Paso_FCTransportProblem * fc);
48 Paso_SystemMatrix* Paso_FCTransportProblem_borrowTransportMatrix(Paso_FCTransportProblem* in);
49 Paso_SystemMatrix* Paso_FCTransportProblem_borrowMassMatrix(Paso_FCTransportProblem* in);
50 double* Paso_FCTransportProblem_borrowLumpedMassMatrix(Paso_FCTransportProblem* in);
51 dim_t Paso_FCTransportProblem_getTotalNumRows(Paso_FCTransportProblem* in);
52 void Paso_FCTransportProblem_free(Paso_FCTransportProblem* in);
53 void Paso_FCTransportProblem_reset(Paso_FCTransportProblem* in);
54 void Paso_SolverFCT_solve(Paso_FCTransportProblem* fctp, double* u, double dt, double* source, Paso_Options* options);
55 void Paso_FCTransportProblem_checkinSolution(Paso_FCTransportProblem* in, double* u);
56 void Paso_FCTransportProblem_applyPreAntiDiffusionCorrection(Paso_SystemMatrix *f,const Paso_Coupler* u_coupler);
57 void Paso_SolverFCT_setQs(const Paso_Coupler* u_coupler,double* QN, double* QP, const Paso_SystemMatrix *L);
58 void Paso_FCTransportProblem_setAntiDiffusionFlux(const double dt, const Paso_FCTransportProblem * fc, Paso_SystemMatrix *flux_matrix, const Paso_Coupler* u_coupler);
59 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);
60 void Paso_FCTransportProblem_addCorrectedFluxes(double* f,const Paso_SystemMatrix *flux_matrix,const Paso_Coupler* RN,const Paso_Coupler* RP);
61
62 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);
63 Paso_Connector* Paso_FCTransportProblem_borrowConnector(const Paso_FCTransportProblem* in);
64 Paso_Function * Paso_Function_FCT_alloc(Paso_MPIInfo *mpi_info);
65 err_t Paso_Function_FCT_call(Paso_Function * F,double* value, const double* arg);
66 void Paso_Function_FCT_free(Paso_Function * F);
67
68 #endif /* #ifndef INC_SOLVERFCT */

  ViewVC Help
Powered by ViewVC 1.1.26