/***************************************************************************** * * MODULE: Grass PDE Numerical Library * AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006 * soerengebbert gmx de * * PURPOSE: groundwater flow 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. * *****************************************************************************/ #ifndef _N_GWFLOW_H_ #define _N_GWFLOW_H_ #include "N_pde.h" #include #define N_GW_CONFINED 0 /*confined groundwater */ #define N_GW_UNCONFINED 1 /*unconfined groundwater */ #define N_GW_DRY_CELL 0 /*a dry cell */ #define N_GW_SURFACE_CELL 1 /*a surface cell */ #define N_GW_NORMAL_CELL 2 /*a normal wet cell */ /*! * \brief This data structure contains all data needed to compute the * groundwater mass balance in three dimension * */ typedef struct { N_array_3d *phead; /*!piezometric head [m] */ N_array_3d *phead_start; /*!start conditions [m] */ N_array_3d *hc_x; /*!x part of the hydraulic conductivity tensor [m/s] */ N_array_3d *hc_y; /*!y part of the hydraulic conductivity tensor [m/s] */ N_array_3d *hc_z; /*!z part of the hydraulic conductivity tensor [m/s] */ N_array_3d *q; /*!sources and sinks [m^3/s] */ N_array_2d *r; /*!recharge at the top of the gw leayer [1/s] */ N_array_3d *s; /*!specific yield [1/m] */ N_array_3d *nf; /*!effective porosity [-] */ /*river */ N_array_3d *river_leak; /*!Leakage of the river bed [1/s] */ N_array_3d *river_head; /*!Waterlevel of the river [m] */ N_array_3d *river_bed; /*!Bed of the river [m] */ /*drainage */ N_array_3d *drain_leak; /*!Leakage of the drainage bed [1/s] */ N_array_3d *drain_bed; /*!Bed of the drainage [m] */ N_array_3d *status; /*!active/inactive/dirichlet cell status */ N_array_3d *drycells; /*!array of dry cells */ double dt; /*!calculation time [s] */ } N_gwflow_data3d; /*! * \brief This data structure contains all data needed to compute the * groundwater mass balance in two dimension * */ typedef struct { N_array_2d *phead; /*!piezometric head [m] */ N_array_2d *phead_start; /*!start conditions [m] */ N_array_2d *hc_x; /*!x part of the hydraulic conductivity tensor [m/s] */ N_array_2d *hc_y; /*!y part of the hydraulic conductivity tensor [m/s] */ N_array_2d *q; /*!sources and sinks [m^3/s] */ N_array_2d *r; /*!recharge at the top of the gw leayer [1/s] */ N_array_2d *s; /*!specific yield [1/m] */ N_array_2d *nf; /*!effective porosity [-] */ /*river */ N_array_2d *river_leak; /*!Leakage of the river bed [1/s] */ N_array_2d *river_head; /*!Waterlevel of the river [m] */ N_array_2d *river_bed; /*!Bed of the river [m] */ /*drainage */ N_array_2d *drain_leak; /*!Leakage of the drainage bed [1/s] */ N_array_2d *drain_bed; /*!Bed of the drainage */ N_array_2d *top; /*!top surface of the quifer [m] */ N_array_2d *bottom; /*!bottom of the aquifer [m] */ N_array_2d *status; /*!active/inactive/dirichlet cell status */ N_array_2d *drycells; /*!array of dry cells */ double dt; /*!calculation time */ int gwtype; /*!Which type of groundwater, N_GW_CONFINED or N_GW_UNCONFIED */ } N_gwflow_data2d; extern N_data_star *N_callback_gwflow_3d(void *gwdata, N_geom_data * geom, int col, int row, int depth); extern N_data_star *N_callback_gwflow_2d(void *gwdata, N_geom_data * geom, int col, int row); extern void N_gwflow_3d_calc_water_budget(N_gwflow_data3d * data, N_geom_data * geom, N_array_3d * budget); extern void N_gwflow_2d_calc_water_budget(N_gwflow_data2d * data, N_geom_data * geom, N_array_2d * balance); extern N_gwflow_data3d *N_alloc_gwflow_data3d(int cols, int rows, int depths, int river, int drain); extern N_gwflow_data2d *N_alloc_gwflow_data2d(int cols, int rows, int river, int drain); extern void N_free_gwflow_data3d(N_gwflow_data3d * data); extern void N_free_gwflow_data2d(N_gwflow_data2d * data); #endif