GRASS Programmer's Manual  6.4.2(2012)
N_solute_transport.h
Go to the documentation of this file.
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
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines