-
-
Notifications
You must be signed in to change notification settings - Fork 288
/
N_solute_transport.h
109 lines (89 loc) · 4.01 KB
/
N_solute_transport.h
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
/*****************************************************************************
*
* MODULE: Grass PDE Numerical Library
* AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006
* soerengebbert <at> gmx <dot> de
*
* PURPOSE: solute transport in porous media
* part of the gpde library
*
* COPYRIGHT: (C) 2000 by the GRASS Development Team
*
* This program is free software under the GNU General Public
* License (>=v2). Read the file COPYING that comes with GRASS
* for details.
*
*****************************************************************************/
#include "N_pde.h"
#ifndef _N_SOLUTE_TRANSPORT_H_
#define _N_SOLUTE_TRANSPORT_H_
typedef struct
{
N_array_3d *c; /*concentration */
N_array_3d *c_start; /*concentration at start */
N_array_3d *diff_x; /*x part of the diffusion tensor */
N_array_3d *diff_y; /*y part of the diffusion tensor */
N_array_3d *diff_z; /*z part of the diffusion tensor */
N_array_3d *nf; /*effective porosity */
N_array_3d *cs; /*concentration sources and sinks */
N_array_3d *q; /*well sources and sinks */
N_array_3d *R; /*retardation */
N_array_3d *cin; /*concentration input from wells */
N_gradient_field_3d *grad; /*velocity field */
N_array_3d *status; /*active/inactive/dirichlet cell status */
N_array_3d *disp_xx; /*x part of the dispersivity tensor */
N_array_3d *disp_yy; /*x part of the dispersivity tensor */
N_array_3d *disp_zz; /*x part of the dispersivity tensor */
N_array_3d *disp_xy; /*xy part of the dispersivity tensor */
N_array_3d *disp_xz; /*xz part of the dispersivity tensor */
N_array_3d *disp_yz; /*yz part of the dispersivity tensor */
double dt; /*calculation time */
double al, at; /*dispersivity length longditudinal and transversal */
int stab; /*stabilization criteria */
} N_solute_transport_data3d;
typedef struct
{
N_array_2d *c; /*concentration */
N_array_2d *c_start; /*concentration at start */
N_array_2d *diff_x; /*x part of the diffusion tensor */
N_array_2d *diff_y; /*y part of the diffusion tensor */
N_array_2d *nf; /*effective porosity */
N_array_2d *cs; /*concentration sources and sinks */
N_array_2d *q; /*well sources and sinks */
N_array_2d *R; /*retardation */
N_array_2d *cin; /*concentration */
N_gradient_field_2d *grad; /*velocity field */
N_array_2d *status; /*active/inactive/dirichlet cell status */
N_array_2d *top; /* top surface of the aquifer */
N_array_2d *bottom; /* bottom surface of the aquifer */
N_array_2d *disp_xx; /*x part of the dispersivity tensor */
N_array_2d *disp_yy; /*x part of the dispersivity tensor */
N_array_2d *disp_xy; /*xy part of the dispersivity tensor */
double dt; /*calculation time */
double al, at; /*dispersivity length longditudinal and transversal */
int stab; /*stabilization criteria */
} N_solute_transport_data2d;
extern N_data_star *N_callback_solute_transport_3d(void *solutedata,
N_geom_data * geom,
int col, int row,
int depth);
extern N_data_star *N_callback_solute_transport_2d(void *solutedata,
N_geom_data * geom,
int col, int row);
extern N_solute_transport_data3d *N_alloc_solute_transport_data3d(int cols,
int rows,
int depths);
extern N_solute_transport_data2d *N_alloc_solute_transport_data2d(int cols,
int rows);
extern void N_free_solute_transport_data3d(N_solute_transport_data3d * data);
extern void N_free_solute_transport_data2d(N_solute_transport_data2d * data);
/*compute the dispersivity tensor */
extern void N_calc_solute_transport_disptensor_2d(N_solute_transport_data2d *
data);
extern void N_calc_solute_transport_disptensor_3d(N_solute_transport_data3d *
data);
extern void N_calc_solute_transport_transmission_2d(N_solute_transport_data2d
* data);
extern void N_calc_solute_transport_transmission_3d(N_solute_transport_data3d
* data);
#endif