sutra2.Analytical_Well module

class sutra2.Analytical_Well.AnalyticalWell(schematisation: HydroChemicalSchematisation)

Bases: object

Compute travel time distribution using analytical well functions.

schematisation

The HydroChemicalSchematisation object.

Type

object

total_travel_time

Sum of the unsaturated, shallow and target aquifer travel times for each point in the given distance array, [days].

Type

array

travel_time_unsaturated

Travel time in the unsaturated zone for each point in the given distance array returned as attrubute of the function, [days].

Type

array

travel_time_shallow_aquifer

Travel time in the shallow aquifer for each point in the given distance array, [days].

Type

array

travel_time_target_aquifer

Travel time in the target aquifer for each point in the given distance array, [days].

Type

array

distance

Array of distance(s) [m] from the well. For diffuse sources ‘distance’ is the ‘radial_distance’ array. For point sources ‘distance’ is ‘distance_point_contamination_from_well’.

Type

array

head

Hydraulic head for each point in the given distance array, [mASL].

Type

array

cumulative_fraction_abstracted_water

Cumulative fraction of the abstrated water for each point in the distance array, [-].

Type

array

flux_fraction

Fraction of the pumping well flux at point in the ‘radial_distance’ array, [-].

Type

array

spreading_distance

The spreading length is a measure of length (in metres) for the distance over which the groundwater lowering caused by the extraction will be noticeable, [m]

Type

float

df_output

Column ‘total_travel_time’: float Column ‘travel_time_unsaturated’: float Column ‘travel_time_shallow_aquifer’: float Column ‘travel_time_target_aquifer’: float Column ‘radial_distance’: float Column ‘head’: float Column ‘cumulative_fraction_abstracted_water’: float Column ‘flowline_discharge’: float

Type

pandas.DataFrame

df_flowline

Column ‘flowline_id’: Integer Column ‘flowline_type’: string Column ‘flowline_discharge’: Float Column ‘particle_release_day’: Float Column ‘input_concentration’: Float Column ‘endpoint_id’: str Column ‘well_discharge’: float Column ‘substance’: string Column ‘removal_function’: string

Type

pandas.DataFrame

df_particle

Column ‘flowline_id’: int Column ‘zone’: string Column ‘travel_time’: float Column ‘xcoord’: float Column ‘ycoord’: float Column ‘zcoord’: float Column ‘redox’: float Column ‘temp_water’: float Column ‘travel_distance’: float Column ‘porosity’: float Column ‘dissolved_organic_carbon’: float Column ‘pH’: float Column ‘fraction_organic_carbon’: float Column ‘solid_density’: float

Type

pandas.DataFrame

phreatic(distance=None, depth_point_contamination=None, cumulative_fraction_abstracted_water=None)

Calculates the travel time distribution for the phreatic schematisation for each of the aquifer zones and creates the df_flowline and df_particle dataframes.

Parameters
  • distance (array) – Array of distance(s) [m] from the well. For diffuse sources ‘distance’ is the ‘radial_distance’ array. For point sources ‘distance’ is ‘distance_point_contamination_from_well’.

  • depth_point_contamination (float) – Depth [mASL] of the point source contamination, if only diffuse contamination None is passed.

  • cumulative_fraction_abstracted_water (array) – Cumulative fraction of the abstrated water for each point in the distance array, [-].

Returns

  • head (array) – Hydraulic head for each point in the given distance array, [mASL].

  • cumulative_fraction_abstracted_water (array) – Cumulative fraction of the abstrated water for each point in the distance array, [-].

  • total_travel_time (array) – Sum of the unsaturated, shallow and target aquifer travel times for each point in the given distance array, [days].

  • travel_time_unsaturated (array) – Travel time in the unsaturated zone for each point in the given distance array returned as attrubute of the function, [days].

  • travel_time_shallow_aquifer (array) – Travel time in the shallow aquifer for each point in the given distance array, [days].

  • travel_time_target_aquifer (array) – Travel time in the target aquifer for each point in the given distance array, [days].

  • df_output (pandas.DataFrame) – Column ‘total_travel_time’: float Column ‘travel_time_unsaturated’: float Column ‘travel_time_shallow_aquifer’: float Column ‘travel_time_target_aquifer’: float Column ‘radial_distance’: float Column ‘head’: float Column ‘cumulative_fraction_abstracted_water’: float Column ‘flowline_discharge’: float

  • df_flowline (pandas.DataFrame) – Column ‘flowline_id’: Integer Column ‘flowline_type’: string Column ‘flowline_discharge’: Float Column ‘particle_release_day’: Float Column ‘input_concentration’ Column ‘endpoint_id’: str Column ‘well_discharge’: float Column ‘substance’: string Column ‘removal_function’: string

  • df_particle (pandas.DataFrame) – Column ‘flowline_id’: int Column ‘zone’: string Column ‘travel_time’: float Column ‘xcoord’: float Column ‘ycoord’: float Column ‘zcoord’: float Column ‘redox’: float Column ‘temp_water’: float Column ‘travel_distance’: float Column ‘porosity’: float Column ‘dissolved_organic_carbon’: float Column ‘pH’: float Column ‘fraction_organic_carbon’: float Column ‘solid_density’: float

plot_depth_aquifers()
Plot the depths of the different aquifers (top/bottom boundaries),

and the drawdown of the groundwater level with radial distance to the well.

plot_travel_time_versus_cumulative_abstracted_water(xlim, ylim=[1, 5000])

Plot the travel time versus the cumulative abstracted water

Parameters
  • xlim (array) – The x-axis limits

  • ylim (array) – The y-axis limits

plot_travel_time_versus_radial_distance(xlim=[0, 4000], ylim=[1, 5000])

Plot the travel time versus the radial distance

Parameters
  • xlim (array) – The x-axis limits

  • ylim (array) – The y-axis limits

semiconfined(distance=None, depth_point_contamination=None)

Calculates the travel time distribution for the semiconfined schematisation for each of the aquifer zones and creates the df_flowline and df_particle dataframes.

Returns

  • head (array) – Hydraulic head for each point in the given distance array, [mASL].

  • cumulative_fraction_abstracted_water (array) – Cumulative fraction of the abstrated water for each point in the distance array, [-].

  • total_travel_time (array) – Sum of the unsaturated, shallow and target aquifer travel times for each point in the given distance array, [days].

  • travel_time_unsaturated (array) – Travel time in the unsaturated zone for each point in the given distance array returned as attrubute of the function, [days].

  • travel_time_shallow_aquifer (array) – Travel time in the shallow aquifer for each point in the given distance array, [days].

  • travel_time_target_aquifer (array) – Travel time in the target aquifer for each point in the given distance array, [days].

  • df_output (pandas.DataFrame) – Column ‘total_travel_time’: float Column ‘travel_time_unsaturated’: float Column ‘travel_time_shallow_aquifer’: float Column ‘travel_time_target_aquifer’: float Column ‘radial_distance’: float Column ‘head’: float Column ‘cumulative_fraction_abstracted_water’: float Column ‘flowline_discharge’: float

  • df_flowline (pandas.DataFrame) – Column ‘flowline_id’: Integer Column ‘flowline_type’: string Column ‘flowline_discharge’: Float Column ‘particle_release_day’: Float Column ‘input_concentration’ Column ‘endpoint_id’: str Column ‘well_discharge’: float Column ‘substance’: string Column ‘removal_function’: string

  • df_particle (pandas.DataFrame) – Column ‘flowline_id’: int Column ‘zone’: string Column ‘travel_time’: float Column ‘xcoord’: float Column ‘ycoord’: float Column ‘zcoord’: float Column ‘redox’: float Column ‘temp_water’: float Column ‘travel_distance’: float Column ‘porosity’: float Column ‘dissolved_organic_carbon’: float Column ‘pH’: float Column ‘fraction_organic_carbon’: float Column ‘solid_density’: float

class sutra2.Analytical_Well.HydroChemicalSchematisation(schematisation_type, computation_method='analytical', removal_function='omp', name=None, what_to_export='all', temp_correction_Koc=True, temp_correction_halflife=True, biodegradation_sorbed_phase=True, compute_thickness_vadose_zone=True, well_name='well1', ground_surface=0.0, thickness_vadose_zone_at_boundary=1, thickness_shallow_aquifer=10.0, thickness_target_aquifer=10.0, thickness_full_capillary_fringe=0.0, porosity_vadose_zone=0.35, porosity_shallow_aquifer=0.35, porosity_target_aquifer=0.35, porosity_gravelpack=0.35, porosity_clayseal=0.35, moisture_content_vadose_zone=0.2, solid_density_vadose_zone=2.65, solid_density_shallow_aquifer=2.65, solid_density_target_aquifer=2.65, fraction_organic_carbon_vadose_zone=0.001, fraction_organic_carbon_shallow_aquifer=0.0005, fraction_organic_carbon_target_aquifer=0.0005, grainsize_vadose_zone=0.00025, grainsize_shallow_aquifer=0.00025, grainsize_target_aquifer=0.00025, redox_vadose_zone='suboxic', redox_shallow_aquifer='anoxic', redox_target_aquifer='deeply_anoxic', dissolved_organic_carbon_vadose_zone=0.0, dissolved_organic_carbon_shallow_aquifer=0.0, dissolved_organic_carbon_target_aquifer=0.0, dissolved_organic_carbon_infiltration_water=0.0, total_organic_carbon_infiltration_water=0.0, pH_vadose_zone=7.0, pH_shallow_aquifer=7.0, pH_target_aquifer=7.0, temp_water=10.0, temperature_vadose_zone=None, temperature_shallow_aquifer=None, temperature_target_aquifer=None, recharge_rate=0.001, well_discharge=-1000.0, basin_length=None, basin_width=None, basin_xmin=None, basin_xmax=None, bottom_basin=None, bottom_sludge=None, hor_permeability_sludge=None, vertical_anisotropy_sludge=None, head_basin=None, basin_infiltration_rate=None, travel_time_h20_shallow_aquifer=None, minimum_travel_time_h20_shallow_aquifer=None, travel_time_h20_deeper_aquifer=None, minimum_travel_time_h20_target_aquifer=None, diameter_borehole=0.75, top_filterscreen=None, bottom_filterscreen=None, diameter_filterscreen=0.2, inner_diameter_filterscreen=None, top_gravelpack=None, bottom_gravelpack=None, diameter_gravelpack=None, inner_diameter_gravelpack=None, grainsize_gravelpack=0.001, top_clayseal=None, bottom_clayseal=None, diameter_clayseal=None, inner_diameter_clayseal=None, grainsize_clayseal=1e-06, hor_permeability_shallow_aquifer=1.0, hor_permeability_target_aquifer=10.0, hor_permeability_gravelpack=None, hor_permeability_clayseal=None, vertical_anisotropy_shallow_aquifer=1.0, vertical_anisotropy_target_aquifer=1.0, vertical_anisotropy_gravelpack=None, vertical_anisotropy_clayseal=None, diffuse_input_concentration=1, start_date_well=datetime.datetime(1950, 1, 1, 0, 0), start_date_contamination=None, end_date_contamination=None, compute_contamination_for_date=None, point_input_concentration=None, distance_point_contamination_from_well=array([1]), depth_point_contamination=None, discharge_point_contamination=None, source_area_radius=None, number_of_spreading_distance=None, model_radius=None, model_width=1, relative_position_starting_points_radial=None, relative_position_starting_points_in_basin=None, relative_position_starting_points_outside_basin=None, particle_release_day=None, ncols_near_well=20, ncols_far_well=30, nlayers_shallow_aquifer=10, nlayers_target_aquifer=10)

Bases: object

This class holds all the parameters that define the (surrounding of the) well such that travel times and removal rates can be determined.

Parameters
  • schematisation_type (string) – Choose the schematisation of the aquifer, choice of 4 public supply well fields ‘phreatic’, ‘semiconfined’, ‘riverbankfiltration’, ‘basinfiltration’

  • computation_method (string) – Defines the computational method used, choice of ‘analytical’ or ‘modpath’

  • removal_function (string) – Choice of removal function for ‘omp’ or ‘mbo’

  • what_to_export (string) – Defines what paramters are exported, ‘all’ exports all paramters, ‘omp’ only those relevant to the OMP or ‘mbo’ only exports parameters relevant for the microbial organisms (mbo)

  • temp_correction_Koc – KOC and half-life values generally refer to a standard lab temperature (tREF = 20-25oC) and should therefore be corrected when field temperature is different. Default is True

  • temp_correction_halflife: – Bool: KOC and half-life values generally refer to a standard lab temperature (tREF = 20-25oC) and should therefore be corrected when field temperature is different. Default is True

  • biodegradation_sorbed_phase (Bool) – Include biodegradation in the sorbed phase or not. Default is True

  • compute_thickness_vadose_zone (Bool) – Calculate the thickness of the vadose zone or not, Default is True

  • well_name (string) – Name of the well in the simulaiton. Default is ‘well1’

  • ground_surface (float) – Meters above sea level (ASL)

  • thickness_vadose_zone_at_boundary (float) – Thickness of each of the aquifer zones of interest (vadose, shallow and target), [m].

  • thickness_shallow_aquifer (float) – Thickness of each of the aquifer zones of interest (vadose, shallow and target), [m].

  • thickness_target_aquife (float) – Thickness of each of the aquifer zones of interest (vadose, shallow and target), [m].

  • thickness_full_capillary_fringe (float) – Thickness of the capillary fringe (subsurface layer in which groundwater seeps up from a water table by capillary action to fill pores), [m].

  • porosity_vadose_zone (float) – Porosity of each of the zones of interest, dimensionless [volume fraction].

  • porosity_shallow_aquifer (float) – Porosity of each of the zones of interest, dimensionless [volume fraction].

  • porosity_target_aquifer (float) – Porosity of each of the zones of interest, dimensionless [volume fraction].

  • porosity_gravelpack (float) – Porosity of each of the zones of interest, dimensionless [volume fraction].

  • porosity_clayseal (float) – Porosity of each of the zones of interest, dimensionless [volume fraction].

  • moisture_content_vadose_zone (float) – Mean multi-annual moisture content of unsaturated zone, dimensionless [volume fraction].

  • solid_density_vadose_zone (float) – Solid density, in kg/L, of each of the aquifer zones of interest.

  • solid_density_shallow_aquifer (float) – Solid density, in kg/L, of each of the aquifer zones of interest.

  • solid_density_target_aquifer (float) – Solid density, in kg/L, of each of the aquifer zones of interest.

  • fraction_organic_carbon_vadose_zone (float) – Mass fraction of the organic carbon in the aquifer zone of interest.

  • fraction_organic_carbon_shallow_aquifer (float) – Mass fraction of the organic carbon in the aquifer zone of interest.

  • fraction_organic_carbon_target_aquifer (float) – Mass fraction of the organic carbon in the aquifer zone of interest.

  • grainsize_vadose_zone (float) – Grain diameter (d50) of the sediment, [m].

  • grainsize_shallow_aquifer (float) – Grain diameter (d50) of the sediment, [m].

  • grainsize_target_aquifer (float) – Grain diameter (d50) of the sediment, [m].

  • redox_vadose_zone (string) – Definition of redox zones follows the scheme presented by Stuyfzand (1993, 2012b), which is in simplified form: ‘suboxic’: NO3 ≥ 1 mg/L, Fe = Mn < 0.1 mg/L; ‘anoxic’: O2 and NO3 < 1 mg/L, no SO4-reduction; ‘deeply_anoxic’: = O2 and NO3 < 1 mg/L, with SO4-reduction and/or methanogenesis.

  • redox_shallow_aquifer (string) – Definition of redox zones follows the scheme presented by Stuyfzand (1993, 2012b), which is in simplified form: ‘suboxic’: NO3 ≥ 1 mg/L, Fe = Mn < 0.1 mg/L; ‘anoxic’: O2 and NO3 < 1 mg/L, no SO4-reduction; ‘deeply_anoxic’: = O2 and NO3 < 1 mg/L, with SO4-reduction and/or methanogenesis.

  • redox_target_aquifer (string) – Definition of redox zones follows the scheme presented by Stuyfzand (1993, 2012b), which is in simplified form: ‘suboxic’: NO3 ≥ 1 mg/L, Fe = Mn < 0.1 mg/L; ‘anoxic’: O2 and NO3 < 1 mg/L, no SO4-reduction; ‘deeply_anoxic’: = O2 and NO3 < 1 mg/L, with SO4-reduction and/or methanogenesis.

  • dissolved_organic_carbon_vadose_zone (float) – Concentration of the dissolved organic carbon in each of the aquifer zones, [mg/L].

  • dissolved_organic_carbon_shallow_aquifer (float) – Concentration of the dissolved organic carbon in each of the aquifer zones, [mg/L].

  • dissolved_organic_carbon_target_aquifer (float) – Concentration of the dissolved organic carbon in each of the aquifer zones, [mg/L].

  • dissolved_organic_carbon_infiltration_water (float) – Concentrtaion of the dissolved organic carbon in the infiltrating water, [mg/L].

  • total_organic_carbon_infiltration_water (float) – Concentrtaion of the total organic carbon in the infiltrating water, [mg/L].

  • pH_vadose_zone (float) – pH in each aquifer zone, dimensionless.

  • pH_shallow_aquifer (float) – pH in each aquifer zone, dimensionless.

  • pH_target_aquifer (float) – pH in each aquifer zone, dimensionless.

  • temp_water (float) – Temperature, in degrees Celcius, for each aquifer zone. If only ‘temperature’ is given, the temperature in each zone is set to ‘temp_water’.

  • temperature_vadose_zone (float) – Temperature, in degrees Celcius, for each aquifer zone. If only ‘temperature’ is given, the temperature in each zone is set to ‘temp_water’.

  • temperature_shallow_aquifer (float) – Temperature, in degrees Celcius, for each aquifer zone. If only ‘temperature’ is given, the temperature in each zone is set to ‘temp_water’.

  • temperature_target_aquifer (float) – Temperature, in degrees Celcius, for each aquifer zone. If only ‘temperature’ is given, the temperature in each zone is set to ‘temp_water’.

  • recharge_rate (float) – Mean multi-annual groundwater recharge rate, [m/d].

  • well_discharge (float) – Mean annual well discharge, [m3/d].

  • diameter_borehole (float) – Diameter of the borehole of the well, [m].

  • top_filterscreen (float) – Top and bottom of the filterscreen of the well [mASL].

  • bottom_filterscreen (float) – Top and bottom of the filterscreen of the well [mASL].

  • diameter_filterscreen (float) – Diameter and inner diameter of the filterscreen of the well, [m].

  • inner_diameter_filterscreen (float) – Diameter and inner diameter of the filterscreen of the well, [m].

  • top_gravelpack (float) – Top and bottom of the gravelpack of the well [mASL].

  • bottom_gravelpack (float) – Top and bottom of the gravelpack of the well [mASL].

  • diameter_gravelpack (float) – Diameter and inner diameter of the gravelscreen of the well, [m].

  • inner_diameter_gravelpack (float) – Diameter and inner diameter of the gravelscreen of the well, [m].

  • grainsize_gravelpack (float) – Grain diameter (d50) of the gravelpack, [m].

  • top_clayseal (float) – Top and bottom of the clayseal of the well [mASL].

  • bottom_clayseal (float) – Top and bottom of the clayseal of the well [mASL].

  • diameter_clayseal (float) – Diameter and inner diameter of the clayseal of the well, [m].

  • inner_diameter_clayseal (float) – Diameter and inner diameter of the clayseal of the well, [m].

  • grainsize_clayseal (float) – Grain diameter (d50) of the clay seal, [m].

  • hor_permeability_shallow_aquifer (float) – Horizonatal permeability of each zone of the aquifer and the clayseal, [m/d].

  • hor_permeability_target_aquifer (float) – Horizonatal permeability of each zone of the aquifer and the clayseal, [m/d].

  • hor_permebility_gravelpack (float) – Horizonatal permeability of each zone of the aquifer and the clayseal, [m/d].

  • hor_permeability_clayseal (float) – Horizonatal permeability of each zone of the aquifer and the clayseal, [m/d].

  • hor_permeability_clayseal – Horizonatal permeability of the clayseal, [m/d].

  • vertical_anisotropy_shallow_aquifer (float) – Vertical anisotropy of each zone of the aquifer and the clayseal, [m/d]. @MartinvdS ratio of horizontal to vertical hydraulic conductivity? #AH MartinvdS error in this?

  • vertical_anisotropy_target_aquifer (float) – Vertical anisotropy of each zone of the aquifer and the clayseal, [m/d]. @MartinvdS ratio of horizontal to vertical hydraulic conductivity? #AH MartinvdS error in this?

  • vertical_anisotropy_gravelpack (float) – Vertical anisotropy of each zone of the aquifer and the clayseal, [m/d]. @MartinvdS ratio of horizontal to vertical hydraulic conductivity? #AH MartinvdS error in this?

  • vertical_anisotropy_clayseal (float) – Vertical anisotropy of each zone of the aquifer and the clayseal, [m/d]. @MartinvdS ratio of horizontal to vertical hydraulic conductivity? #AH MartinvdS error in this?

  • name (string) – Name of the OMP of MBO to use in the model.

  • diffuse_input_concentration (float) – Concentration of the diffuse source of the OMP in the groundwater recharge, [ug/L].

  • start_date_well (dt.datetime.strptime('YYYY-MM-DD', "%Y-%m-%d"),) – Start date of the well.

  • start_date_contamination (dt.datetime.strptime('YYYY-MM-DD', "%Y-%m-%d"),) – Start and end date for both the diffuse and point sources. @MartinvdS, is this a problem to use the start/end date for both?

  • end_date_contamination (dt.datetime.strptime('YYYY-MM-DD', "%Y-%m-%d"),) – Start and end date for both the diffuse and point sources. @MartinvdS, is this a problem to use the start/end date for both?

  • compute_contamination_for_date (dt.datetime.strptime('YYYY-MM-DD', "%Y-%m-%d"),) – Date for which to compute the contamination in the well.

  • point_input_concentration (float) – Concentration of the point source contamintation [ug/L].

  • distance_point_contamination_from_well (float) – Distance [m] from the well, depth [mASL] and discharge [m3/d] of the point source contamination.

  • depth_point_contamination (float) – Distance [m] from the well, depth [mASL] and discharge [m3/d] of the point source contamination.

  • discharge_point_contamination (float) – Distance [m] from the well, depth [mASL] and discharge [m3/d] of the point source contamination.

  • source_area_radius (float) – Radius of the source area, [m].

  • number_of_spreading_distance (float) – the higher the number of spreading distance between well and boundary, the smaller any boundary effects will be. (Ignored in this version)

  • model_radius (float) – Radius and width of the model, [m].

  • model_width (float) – Radius and width of the model, [m].

  • ncols_filterscreen (int) – Number of model columns in the filterscreen, gravelpack, near and far from the well.

  • ncols_gravelpack (int) – Number of model columns in the filterscreen, gravelpack, near and far from the well.

  • ncols_near_well (int) – Number of model columns in the filterscreen, gravelpack, near and far from the well.

  • ncols_far_well (int) – Number of model columns in the filterscreen, gravelpack, near and far from the well.

  • delr_filterscreen (float) – delr is the column spacing in the row direction for each of the filerscreen, gravelpak, near and far from the well.

  • delr_gravelpack (float) – delr is the column spacing in the row direction for each of the filerscreen, gravelpak, near and far from the well.

  • delr_near_well (float) – delr is the column spacing in the row direction for each of the filerscreen, gravelpak, near and far from the well.

  • delr_far_well (float) – delr is the column spacing in the row direction for each of the filerscreen, gravelpak, near and far from the well.

  • delc (list of floats) – delc is the row spacing in the column direction.

  • nlayer_shallow_aquifer – The number of layers in the model grid for the shallow and target aquifers.

  • nlayer_target_aquifer – The number of layers in the model grid for the shallow and target aquifers.

  • relative_position_starting_points_radial (list of floats -) – not yet included functionality for relative positions starting points flowlines

  • relative_position_starting_points_in_basin (list of floats -) – not yet included functionality for relative positions starting points flowlines

  • relative_position_starting_points_outside_basin (list of floats -) – not yet included functionality for relative positions starting points flowlines

  • parameters (BAR specific) – basin_length: float m basin_width: float m basin_xmin: float m basin_xmax: float m bottom_basin: float mASL bottom_sludge: float mASL hor_permeability_sludge: float m/d vertical_anisotropy_sludge: float - head_basin: float mASL basin_infiltration_rate: float m3/d travel_time_h20_shallow_aquifer: float d minimum_travel_time_h20_shallow_aquifer: float d travel_time_h20_deeper_aquifer: float d minimum_travel_time_h20_target_aquifer: float d

make_dictionary()

Returns dicitonaries of the different parameters for MODFLOW schematisation.