-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMixHy.hh
More file actions
142 lines (121 loc) · 4.32 KB
/
Copy pathMixHy.hh
File metadata and controls
142 lines (121 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/**********************************************************************
* *
* File Name: MixHy.hh *
* *
* Class Name: MixHy *
* *
* Goal: Mixed Hybrid Finite Element Method *
* *
* Copyright (C) 04/2002 Arthur Moncorge *
* arthur.moncorge@ensta.org *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, *
* MA 02111-1307, USA. *
* *
*********************************************************************/
#ifndef _CLASS_MIXHY_HH_
#define _CLASS_MIXHY_HH_
#include <iostream>
#include <math.h>
#include "ConjGrad.hh"
#include "Mesh.hh"
class MixHy {
public:
struct mixhy_arg{
int Nt;
int Ne;
int** Coore;
double*** Al;
double** IyRT;
int segINJE;
int segPROD;
double*** invM;
double** invMl;
struct Mesh::Edge** edge;
struct Mesh::Edge*** T_edge;
double k_p;
double mu1;
double mu2;
double flux_in;
double e_g;
int MAXTIME;
double K_ext;
double p_ext;
double dt;
int production_log;
char *productionname;
};
public:
MixHy(struct mixhy_arg mixhy_val);
~MixHy();
void update(int time, double* alpha, double* pressure, double** flux);
void set_dirichlet();
void compute_tpress(double* alpha, double** g, double* tpress);
void compute_flux(double* alpha, double** g, double* tpress, double** flux);
void compute_pressure(double* alpha, double** g, double* tpress, double* pressure);
void createg(double* alpha, double** g);
void createA(double* alpha, double*** A);
void createb(double* alpha, double** g, double* b);
void PrintA();
public:
/* Check which are private */
// Constants
int Nt;
int Ne;
double k_p;
double mu1;
double mu2;
double flux_in;
double e_g;
int MAXTIME;
double K_ext;
double p_ext;
// Working arrays
double* tpress;
double** g;
int* mask;
double*** A;
double* b;
double* tp0;
double* Atp0;
// Data from mesh
int** Coore;
double*** Al;
double** IyRT;
int segINJE;
int segPROD;
double*** invM;
double** invMl;
struct Mesh::Edge** edge;
struct Mesh::Edge*** T_edge;
double dt;
//! boolean value: has fluid 1 (alpha = 1) hit the leak
int fluid1atProducer;
//! boolean value: has fluid 1 (alpha = 1) hit the producer
int fluid1atLeak;
//! the cumulative volume that has flown from or into the leak
double leakCumulativeVolume;
//! the cumulative volume that has flown from or into the producer
double producerCumulativeVolume;
//! the cumulative volume of fluid 1 (alpha = 0) that has flown from or into the leak
double leakCumulativeVolumeAlpha;
//! the cumulative volume of fluid 1 (alpha = 0) that has flown out of the producer
double producerCumulativeVolumeAlpha;
int production_log;
char *productionname;
// Other class
ConjGrad cg;
};
#endif // End of _CLASS_MIXHY_HH_