GRASS 8 Programmer's Manual
8.5.0(2026)-8d6ceba290
Toggle main menu visibility
Loading...
Searching...
No Matches
N_solute_transport.h
Go to the documentation of this file.
1
/*****************************************************************************
2
*
3
* MODULE: Grass PDE Numerical Library
4
* AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006
5
* soerengebbert <at> gmx <dot> de
6
*
7
* PURPOSE: solute transport in porous media
8
* part of the gpde library
9
*
10
* COPYRIGHT: (C) 2000 by the GRASS Development Team
11
*
12
* This program is free software under the GNU General Public
13
* License (>=v2). Read the file COPYING that comes with GRASS
14
* for details.
15
*
16
*****************************************************************************/
17
18
#include "
N_pde.h
"
19
20
#ifndef _N_SOLUTE_TRANSPORT_H_
21
#define _N_SOLUTE_TRANSPORT_H_
22
23
typedef
struct
{
24
N_array_3d
*
c
;
/*concentration */
25
N_array_3d
*
c_start
;
/*concentration at start */
26
N_array_3d
*
diff_x
;
/*x part of the diffusion tensor */
27
N_array_3d
*
diff_y
;
/*y part of the diffusion tensor */
28
N_array_3d
*
diff_z
;
/*z part of the diffusion tensor */
29
N_array_3d
*
nf
;
/*effective porosity */
30
N_array_3d
*
cs
;
/*concentration sources and sinks */
31
N_array_3d
*
q
;
/*well sources and sinks */
32
N_array_3d
*
R
;
/*retardation */
33
N_array_3d
*
cin
;
/*concentration input from wells */
34
35
N_gradient_field_3d
*
grad
;
/*velocity field */
36
37
N_array_3d
*
status
;
/*active/inactive/dirichlet cell status */
38
39
N_array_3d
*
disp_xx
;
/*x part of the dispersivity tensor */
40
N_array_3d
*
disp_yy
;
/*x part of the dispersivity tensor */
41
N_array_3d
*
disp_zz
;
/*x part of the dispersivity tensor */
42
N_array_3d
*
disp_xy
;
/*xy part of the dispersivity tensor */
43
N_array_3d
*
disp_xz
;
/*xz part of the dispersivity tensor */
44
N_array_3d
*
disp_yz
;
/*yz part of the dispersivity tensor */
45
46
double
dt
;
/*calculation time */
47
double
al
,
at
;
/*dispersivity length longditudinal and transversal */
48
int
stab
;
/*stabilization criteria */
49
50
}
N_solute_transport_data3d
;
51
52
typedef
struct
{
53
N_array_2d
*
c
;
/*concentration */
54
N_array_2d
*
c_start
;
/*concentration at start */
55
N_array_2d
*
diff_x
;
/*x part of the diffusion tensor */
56
N_array_2d
*
diff_y
;
/*y part of the diffusion tensor */
57
N_array_2d
*
nf
;
/*effective porosity */
58
N_array_2d
*
cs
;
/*concentration sources and sinks */
59
N_array_2d
*
q
;
/*well sources and sinks */
60
N_array_2d
*
R
;
/*retardation */
61
N_array_2d
*
cin
;
/*concentration */
62
63
N_gradient_field_2d
*
grad
;
/*velocity field */
64
65
N_array_2d
*
status
;
/*active/inactive/dirichlet cell status */
66
N_array_2d
*
top
;
/* top surface of the aquifer */
67
N_array_2d
*
bottom
;
/* bottom surface of the aquifer */
68
69
N_array_2d
*
disp_xx
;
/*x part of the dispersivity tensor */
70
N_array_2d
*
disp_yy
;
/*x part of the dispersivity tensor */
71
N_array_2d
*
disp_xy
;
/*xy part of the dispersivity tensor */
72
73
double
dt
;
/*calculation time */
74
double
al
,
at
;
/*dispersivity length longditudinal and transversal */
75
int
stab
;
/*stabilization criteria */
76
77
}
N_solute_transport_data2d
;
78
79
extern
N_data_star
*
N_callback_solute_transport_3d
(
void
*solutedata,
80
N_geom_data
*geom,
int
col,
81
int
row,
int
depth);
82
extern
N_data_star
*
N_callback_solute_transport_2d
(
void
*solutedata,
83
N_geom_data
*geom,
int
col,
84
int
row);
85
extern
N_solute_transport_data3d
*
86
N_alloc_solute_transport_data3d
(
int
cols,
int
rows,
int
depths);
87
extern
N_solute_transport_data2d
*
N_alloc_solute_transport_data2d
(
int
cols,
88
int
rows);
89
extern
void
N_free_solute_transport_data3d
(
N_solute_transport_data3d
*data);
90
extern
void
N_free_solute_transport_data2d
(
N_solute_transport_data2d
*data);
91
92
/*compute the dispersivity tensor */
93
extern
void
94
N_calc_solute_transport_disptensor_2d
(
N_solute_transport_data2d
*data);
95
extern
void
96
N_calc_solute_transport_disptensor_3d
(
N_solute_transport_data3d
*data);
97
extern
void
98
N_calc_solute_transport_transmission_2d
(
N_solute_transport_data2d
*data);
99
extern
void
100
N_calc_solute_transport_transmission_3d
(
N_solute_transport_data3d
*data);
101
#endif
N_pde.h
N_alloc_solute_transport_data2d
N_solute_transport_data2d * N_alloc_solute_transport_data2d(int cols, int rows)
Allocate memory for the solute transport data structure in two dimensions.
Definition
n_solute_transport.c:442
N_calc_solute_transport_disptensor_2d
void N_calc_solute_transport_disptensor_2d(N_solute_transport_data2d *data)
Compute the dispersivity tensor based on the solute transport data in 2d.
Definition
n_solute_transport.c:637
N_free_solute_transport_data2d
void N_free_solute_transport_data2d(N_solute_transport_data2d *data)
Release the memory of the solute transport data structure in two dimensions.
Definition
n_solute_transport.c:521
N_alloc_solute_transport_data3d
N_solute_transport_data3d * N_alloc_solute_transport_data3d(int cols, int rows, int depths)
Allocate memory for the solute transport data structure in three dimensions.
Definition
n_solute_transport.c:389
N_free_solute_transport_data3d
void N_free_solute_transport_data3d(N_solute_transport_data3d *data)
Release the memory of the solute transport data structure in three dimensions.
Definition
n_solute_transport.c:483
N_callback_solute_transport_2d
N_data_star * N_callback_solute_transport_2d(void *solutedata, N_geom_data *geom, int col, int row)
This callback function creates the mass balance of a 5 point star.
Definition
n_solute_transport.c:180
N_callback_solute_transport_3d
N_data_star * N_callback_solute_transport_3d(void *solutedata, N_geom_data *geom, int col, int row, int depth)
This is just a placeholder.
Definition
n_solute_transport.c:27
N_calc_solute_transport_transmission_2d
void N_calc_solute_transport_transmission_2d(N_solute_transport_data2d *data)
Compute the transmission boundary condition in 2d.
Definition
n_solute_transport.c:563
N_calc_solute_transport_transmission_3d
void N_calc_solute_transport_transmission_3d(N_solute_transport_data3d *data)
N_calc_solute_transport_disptensor_3d
void N_calc_solute_transport_disptensor_3d(N_solute_transport_data3d *data)
Compute the dispersivity tensor based on the solute transport data in 3d.
Definition
n_solute_transport.c:698
N_array_2d
Definition
N_pde.h:132
N_array_3d
Definition
N_pde.h:175
N_data_star
Matrix entries for a mass balance 5/7/9 star system.
Definition
N_pde.h:295
N_geom_data
Geometric information about the structured grid.
Definition
N_pde.h:101
N_gradient_field_2d
Definition
N_pde.h:559
N_gradient_field_3d
Definition
N_pde.h:570
N_solute_transport_data2d
Definition
N_solute_transport.h:52
N_solute_transport_data2d::al
double al
Definition
N_solute_transport.h:74
N_solute_transport_data2d::stab
int stab
Definition
N_solute_transport.h:75
N_solute_transport_data2d::c_start
N_array_2d * c_start
Definition
N_solute_transport.h:54
N_solute_transport_data2d::dt
double dt
Definition
N_solute_transport.h:73
N_solute_transport_data2d::status
N_array_2d * status
Definition
N_solute_transport.h:65
N_solute_transport_data2d::R
N_array_2d * R
Definition
N_solute_transport.h:60
N_solute_transport_data2d::cin
N_array_2d * cin
Definition
N_solute_transport.h:61
N_solute_transport_data2d::bottom
N_array_2d * bottom
Definition
N_solute_transport.h:67
N_solute_transport_data2d::grad
N_gradient_field_2d * grad
Definition
N_solute_transport.h:63
N_solute_transport_data2d::q
N_array_2d * q
Definition
N_solute_transport.h:59
N_solute_transport_data2d::diff_x
N_array_2d * diff_x
Definition
N_solute_transport.h:55
N_solute_transport_data2d::cs
N_array_2d * cs
Definition
N_solute_transport.h:58
N_solute_transport_data2d::top
N_array_2d * top
Definition
N_solute_transport.h:66
N_solute_transport_data2d::disp_xy
N_array_2d * disp_xy
Definition
N_solute_transport.h:71
N_solute_transport_data2d::nf
N_array_2d * nf
Definition
N_solute_transport.h:57
N_solute_transport_data2d::disp_xx
N_array_2d * disp_xx
Definition
N_solute_transport.h:69
N_solute_transport_data2d::disp_yy
N_array_2d * disp_yy
Definition
N_solute_transport.h:70
N_solute_transport_data2d::c
N_array_2d * c
Definition
N_solute_transport.h:53
N_solute_transport_data2d::at
double at
Definition
N_solute_transport.h:74
N_solute_transport_data2d::diff_y
N_array_2d * diff_y
Definition
N_solute_transport.h:56
N_solute_transport_data3d
Definition
N_solute_transport.h:23
N_solute_transport_data3d::disp_yz
N_array_3d * disp_yz
Definition
N_solute_transport.h:44
N_solute_transport_data3d::disp_xx
N_array_3d * disp_xx
Definition
N_solute_transport.h:39
N_solute_transport_data3d::c
N_array_3d * c
Definition
N_solute_transport.h:24
N_solute_transport_data3d::disp_zz
N_array_3d * disp_zz
Definition
N_solute_transport.h:41
N_solute_transport_data3d::q
N_array_3d * q
Definition
N_solute_transport.h:31
N_solute_transport_data3d::al
double al
Definition
N_solute_transport.h:47
N_solute_transport_data3d::nf
N_array_3d * nf
Definition
N_solute_transport.h:29
N_solute_transport_data3d::disp_yy
N_array_3d * disp_yy
Definition
N_solute_transport.h:40
N_solute_transport_data3d::c_start
N_array_3d * c_start
Definition
N_solute_transport.h:25
N_solute_transport_data3d::grad
N_gradient_field_3d * grad
Definition
N_solute_transport.h:35
N_solute_transport_data3d::disp_xy
N_array_3d * disp_xy
Definition
N_solute_transport.h:42
N_solute_transport_data3d::diff_y
N_array_3d * diff_y
Definition
N_solute_transport.h:27
N_solute_transport_data3d::cin
N_array_3d * cin
Definition
N_solute_transport.h:33
N_solute_transport_data3d::dt
double dt
Definition
N_solute_transport.h:46
N_solute_transport_data3d::cs
N_array_3d * cs
Definition
N_solute_transport.h:30
N_solute_transport_data3d::stab
int stab
Definition
N_solute_transport.h:48
N_solute_transport_data3d::at
double at
Definition
N_solute_transport.h:47
N_solute_transport_data3d::diff_x
N_array_3d * diff_x
Definition
N_solute_transport.h:26
N_solute_transport_data3d::status
N_array_3d * status
Definition
N_solute_transport.h:37
N_solute_transport_data3d::R
N_array_3d * R
Definition
N_solute_transport.h:32
N_solute_transport_data3d::diff_z
N_array_3d * diff_z
Definition
N_solute_transport.h:28
N_solute_transport_data3d::disp_xz
N_array_3d * disp_xz
Definition
N_solute_transport.h:43
gpde
N_solute_transport.h
Generated on
for GRASS 8 Programmer's Manual by
1.17.0