GRASS Programmer's Manual
6.4.2(2012)
|
00001 00002 /***************************************************************************** 00003 * 00004 * MODULE: Grass PDE Numerical Library 00005 * AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006 00006 * soerengebbert <at> gmx <dot> de 00007 * 00008 * PURPOSE: solute transport in porous media 00009 * part of the gpde library 00010 * 00011 * COPYRIGHT: (C) 2000 by the GRASS Development Team 00012 * 00013 * This program is free software under the GNU General Public 00014 * License (>=v2). Read the file COPYING that comes with GRASS 00015 * for details. 00016 * 00017 *****************************************************************************/ 00018 00019 #include "N_pde.h" 00020 00021 #ifndef _N_SOLUTE_TRANSPORT_H_ 00022 #define _N_SOLUTE_TRANSPORT_H_ 00023 00024 00025 typedef struct 00026 { 00027 N_array_3d *c; /*concentration */ 00028 N_array_3d *c_start; /*concentration at start */ 00029 N_array_3d *diff_x; /*x part of the diffusion tensor */ 00030 N_array_3d *diff_y; /*y part of the diffusion tensor */ 00031 N_array_3d *diff_z; /*z part of the diffusion tensor */ 00032 N_array_3d *nf; /*effective porosity */ 00033 N_array_3d *cs; /*concentration sources and sinks */ 00034 N_array_3d *q; /*well sources and sinks */ 00035 N_array_3d *R; /*retardation */ 00036 N_array_3d *cin; /*concentration input from wells */ 00037 00038 N_gradient_field_3d *grad; /*velocity field */ 00039 00040 N_array_3d *status; /*active/inactive/dirichlet cell status */ 00041 00042 N_array_3d *disp_xx; /*x part of the dispersivity tensor */ 00043 N_array_3d *disp_yy; /*x part of the dispersivity tensor */ 00044 N_array_3d *disp_zz; /*x part of the dispersivity tensor */ 00045 N_array_3d *disp_xy; /*xy part of the dispersivity tensor */ 00046 N_array_3d *disp_xz; /*xz part of the dispersivity tensor */ 00047 N_array_3d *disp_yz; /*yz part of the dispersivity tensor */ 00048 00049 double dt; /*calculation time */ 00050 double al, at; /*dispersivity length longditudinal and transversal */ 00051 int stab; /*stabilization criteria */ 00052 00053 } N_solute_transport_data3d; 00054 00055 00056 typedef struct 00057 { 00058 N_array_2d *c; /*concentration */ 00059 N_array_2d *c_start; /*concentration at start */ 00060 N_array_2d *diff_x; /*x part of the diffusion tensor */ 00061 N_array_2d *diff_y; /*y part of the diffusion tensor */ 00062 N_array_2d *nf; /*effective porosity */ 00063 N_array_2d *cs; /*concentration sources and sinks */ 00064 N_array_2d *q; /*well sources and sinks */ 00065 N_array_2d *R; /*retardation */ 00066 N_array_2d *cin; /*concentration */ 00067 00068 N_gradient_field_2d *grad; /*velocity field */ 00069 00070 N_array_2d *status; /*active/inactive/dirichlet cell status */ 00071 N_array_2d *top; /* top surface of the aquifer */ 00072 N_array_2d *bottom; /* bottom surface of the aquifer */ 00073 00074 N_array_2d *disp_xx; /*x part of the dispersivity tensor */ 00075 N_array_2d *disp_yy; /*x part of the dispersivity tensor */ 00076 N_array_2d *disp_xy; /*xy part of the dispersivity tensor */ 00077 00078 double dt; /*calculation time */ 00079 double al, at; /*dispersivity length longditudinal and transversal */ 00080 int stab; /*stabilization criteria */ 00081 00082 } N_solute_transport_data2d; 00083 00084 00085 extern N_data_star *N_callback_solute_transport_3d(void *solutedata, 00086 N_geom_data * geom, 00087 int col, int row, 00088 int depth); 00089 extern N_data_star *N_callback_solute_transport_2d(void *solutedata, 00090 N_geom_data * geom, 00091 int col, int row); 00092 extern N_solute_transport_data3d *N_alloc_solute_transport_data3d(int cols, 00093 int rows, 00094 int depths); 00095 extern N_solute_transport_data2d *N_alloc_solute_transport_data2d(int cols, 00096 int rows); 00097 extern void N_free_solute_transport_data3d(N_solute_transport_data3d * data); 00098 extern void N_free_solute_transport_data2d(N_solute_transport_data2d * data); 00099 00100 /*compute the dispersivity tensor */ 00101 extern void N_calc_solute_transport_disptensor_2d(N_solute_transport_data2d * 00102 data); 00103 extern void N_calc_solute_transport_disptensor_3d(N_solute_transport_data3d * 00104 data); 00105 extern void N_calc_solute_transport_transmission_2d(N_solute_transport_data2d 00106 * data); 00107 extern void N_calc_solute_transport_transmission_3d(N_solute_transport_data3d 00108 * data); 00109 #endif