GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
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 * SPDX-FileCopyrightText: 2000 GRASS Development Team
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 *****************************************************************************/
14
15#include "N_pde.h"
16
17#ifndef _N_SOLUTE_TRANSPORT_H_
18#define _N_SOLUTE_TRANSPORT_H_
19
20typedef struct {
21 N_array_3d *c; /*concentration */
22 N_array_3d *c_start; /*concentration at start */
23 N_array_3d *diff_x; /*x part of the diffusion tensor */
24 N_array_3d *diff_y; /*y part of the diffusion tensor */
25 N_array_3d *diff_z; /*z part of the diffusion tensor */
26 N_array_3d *nf; /*effective porosity */
27 N_array_3d *cs; /*concentration sources and sinks */
28 N_array_3d *q; /*well sources and sinks */
29 N_array_3d *R; /*retardation */
30 N_array_3d *cin; /*concentration input from wells */
31
32 N_gradient_field_3d *grad; /*velocity field */
33
34 N_array_3d *status; /*active/inactive/dirichlet cell status */
35
36 N_array_3d *disp_xx; /*x part of the dispersivity tensor */
37 N_array_3d *disp_yy; /*x part of the dispersivity tensor */
38 N_array_3d *disp_zz; /*x part of the dispersivity tensor */
39 N_array_3d *disp_xy; /*xy part of the dispersivity tensor */
40 N_array_3d *disp_xz; /*xz part of the dispersivity tensor */
41 N_array_3d *disp_yz; /*yz part of the dispersivity tensor */
42
43 double dt; /*calculation time */
44 double al, at; /*dispersivity length longditudinal and transversal */
45 int stab; /*stabilization criteria */
46
48
49typedef struct {
50 N_array_2d *c; /*concentration */
51 N_array_2d *c_start; /*concentration at start */
52 N_array_2d *diff_x; /*x part of the diffusion tensor */
53 N_array_2d *diff_y; /*y part of the diffusion tensor */
54 N_array_2d *nf; /*effective porosity */
55 N_array_2d *cs; /*concentration sources and sinks */
56 N_array_2d *q; /*well sources and sinks */
57 N_array_2d *R; /*retardation */
58 N_array_2d *cin; /*concentration */
59
60 N_gradient_field_2d *grad; /*velocity field */
61
62 N_array_2d *status; /*active/inactive/dirichlet cell status */
63 N_array_2d *top; /* top surface of the aquifer */
64 N_array_2d *bottom; /* bottom surface of the aquifer */
65
66 N_array_2d *disp_xx; /*x part of the dispersivity tensor */
67 N_array_2d *disp_yy; /*x part of the dispersivity tensor */
68 N_array_2d *disp_xy; /*xy part of the dispersivity tensor */
69
70 double dt; /*calculation time */
71 double al, at; /*dispersivity length longditudinal and transversal */
72 int stab; /*stabilization criteria */
73
75
77 N_geom_data *geom, int col,
78 int row, int depth);
80 N_geom_data *geom, int col,
81 int row);
83N_alloc_solute_transport_data3d(int cols, int rows, int depths);
85 int rows);
88
89/*compute the dispersivity tensor */
90extern void
92extern void
94extern void
96extern void
98#endif
N_solute_transport_data2d * N_alloc_solute_transport_data2d(int cols, int rows)
Allocate memory for the solute transport data structure in two dimensions.
void N_calc_solute_transport_disptensor_2d(N_solute_transport_data2d *data)
Compute the dispersivity tensor based on the solute transport data in 2d.
void N_free_solute_transport_data2d(N_solute_transport_data2d *data)
Release the memory of the solute transport data structure in two dimensions.
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.
void N_free_solute_transport_data3d(N_solute_transport_data3d *data)
Release the memory of the solute transport data structure in three dimensions.
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.
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.
void N_calc_solute_transport_transmission_2d(N_solute_transport_data2d *data)
Compute the transmission boundary condition in 2d.
void N_calc_solute_transport_transmission_3d(N_solute_transport_data3d *data)
void N_calc_solute_transport_disptensor_3d(N_solute_transport_data3d *data)
Compute the dispersivity tensor based on the solute transport data in 3d.
Matrix entries for a mass balance 5/7/9 star system.
Definition N_pde.h:292
Geometric information about the structured grid.
Definition N_pde.h:98
N_gradient_field_2d * grad
N_gradient_field_3d * grad