Environmental Processes Analysis
- aguaclara.research.environmental_processes_analysis.invpH(pH)[source]
Calculate inverse pH, i.e. hydronium ion concentration, given pH.
- Parameters:
pH (float) – pH to be inverted
- Returns:
The inverse pH or hydronium ion concentration (in moles per liter)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import invpH >>> invpH(10) <Quantity(1e-10, 'mole / liter')>
- aguaclara.research.environmental_processes_analysis.alpha0_carbonate(pH)[source]
Calculate the fraction of total carbonates in carbonic acid form (H2CO3)
- Parameters:
pH (float) – pH of the system
- Returns:
Fraction of carbonates in carbonic acid form (H2CO3)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... alpha0_carbonate ... ) >>> round(alpha0_carbonate(10), 7) <Quantity(0.00015, 'dimensionless')>
- aguaclara.research.environmental_processes_analysis.alpha1_carbonate(pH)[source]
Calculate the fraction of total carbonates in bicarbonate form (HCO3-)
- Parameters:
pH (float) – pH of the system
- Returns:
Fraction of carbonates in bicarbonate form (HCO3-)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... alpha1_carbonate ... ) >>> round(alpha1_carbonate(10), 7) <Quantity(0.639969, 'dimensionless')>
- aguaclara.research.environmental_processes_analysis.alpha2_carbonate(pH)[source]
Calculate the fraction of total carbonates in carbonate form (CO3-2)
- Parameters:
pH (float) – pH of the system
- Returns:
Fraction of carbonates in carbonate form (CO3-2)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... alpha2_carbonate ... ) >>> round(alpha2_carbonate(10), 7) <Quantity(0.359881, 'dimensionless')>
- aguaclara.research.environmental_processes_analysis.ANC_closed(pH, total_carbonates)[source]
Calculate the acid neutralizing capacity (ANC) under a closed system in which no carbonates are exchanged with the atmosphere during the experiment. Based on pH and total carbonates in the system.
- Parameters:
- Returns:
The acid neutralizing capacity of the closed system (eq/L)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... ANC_closed ... ) >>> from aguaclara.core.units import u >>> round(ANC_closed(10, 1*u.mol/u.L), 7) <Quantity(1.359831, 'equivalent / liter')>
- aguaclara.research.environmental_processes_analysis.ANC_open(pH)[source]
Calculate the acid neutralizing capacity (ANC) calculated under an open system based on pH.
- Parameters:
pH (float) – pH of the system
- Returns:
The acid neutralizing capacity of the closed system (eq/L)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... ANC_open ... ) >>> round(ANC_open(10), 7) <Quantity(0.0907346, 'equivalent / liter')>
- aguaclara.research.environmental_processes_analysis.aeration_data(DO_column, dirpath)[source]
Extract the data from folder containing tab delimited files of aeration data. The file must be the original tab delimited file. All text strings below the header must be removed from these files. The file names must be the air flow rates with units of micromoles/s. An example file name would be “300.xls” where 300 is the flow rate in micromoles/s. The function opens a file dialog for the user to select the directory containing the data.
- Parameters:
DO_column – Index of the column that contains the dissolved oxygen concentration data.
dirpath (string) – Path to the directory containing aeration data that you want to analyze.
- Returns:
collection of
- filepaths (string list) - All file paths in the directory
sorted by flow rate
- airflows (numpy.array) - Sorted array of air flow rates
with units of micromole/s
- DO_data (numpy.array list) - Sorted list of Numpy arrays.
Thus each of the numpy data arrays can have different lengths to accommodate short and long experiments
- time_data (numpy.array list) - Sorted list of Numpy arrays
containing the times with units of seconds
- aguaclara.research.environmental_processes_analysis.O2_sat(P_air, temp)[source]
Calculate saturaed oxygen concentration in mg/L for 278 K < T < 318 K
- Parameters:
- Returns:
Saturated oxygen concentration in mg/L
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import O2_sat >>> from aguaclara.core.units import u >>> round(O2_sat(1*u.atm , 300*u.kelvin), 7) <Quantity(8.0931572, 'milligram / liter')>
- aguaclara.research.environmental_processes_analysis.Gran(data_file_path)[source]
Extract the data from a ProCoDA Gran plot file. The file must be the original tab delimited file.
- Parameters:
data_file_path – The path to the file. If the file is in the working directory, then the file name is sufficient.
- Returns:
collection of
V_titrant (float) - Volume of titrant in mL
ph_data (numpy.array) - pH of the sample
- V_sample (float) - Volume of the original sample
that was titrated in mL
- Normality_titrant (float) - Normality of the acid used
to titrate the sample in mole/L
- V_equivalent (float) - Volume of acid required to
consume all of the ANC in mL
ANC (float) - Acid Neutralizing Capacity of sample in mole/L
- aguaclara.research.environmental_processes_analysis.CMFR(t, C_initial, C_influent)[source]
Calculate the effluent concentration of a conversative (non-reacting) material with continuous input to a completely mixed flow reactor.
Note: time t=0 is the time at which the material starts to flow into the reactor.
- Parameters:
- Returns:
Effluent concentration
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import CMFR >>> from aguaclara.core.units import u >>> round(CMFR(0.1, 0*u.mg/u.L, 10*u.mg/u.L), 7) <Quantity(0.9516258, 'milligram / liter')> >>> round(CMFR(0.9, 5*u.mg/u.L, 10*u.mg/u.L), 7) <Quantity(7.9671517, 'milligram / liter')>
- aguaclara.research.environmental_processes_analysis.E_CMFR_N(t, N)[source]
Calculate a dimensionless measure of the output tracer concentration from a spike input to a series of completely mixed flow reactors.
- Parameters:
- Returns:
Dimensionless measure of the output tracer concentration (concentration * volume of 1 CMFR) / (mass of tracer)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... E_CMFR_N ... ) >>> round(E_CMFR_N(0.5, 3), 7) np.float64(0.7530643) >>> round(E_CMFR_N(0.1, 1), 7) np.float64(0.9048374)
- aguaclara.research.environmental_processes_analysis.E_Advective_Dispersion(t, Pe)[source]
Calculate a dimensionless measure of the output tracer concentration from a spike input to reactor with advection and dispersion.
- Parameters:
- Returns:
dimensionless measure of the output tracer concentration (concentration * volume of reactor) / (mass of tracer)
- Return type:
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... E_Advective_Dispersion ... ) >>> round(E_Advective_Dispersion(0.5, 5), 7) np.float64(0.4774864)
- aguaclara.research.environmental_processes_analysis.Tracer_CMFR_N(t_seconds, t_bar, C_bar, N)[source]
Used by Solver_CMFR_N. All inputs and outputs are unitless. This is the model function, f(x, …). It takes the independent variable as the first argument and the parameters to fit as separate remaining arguments.
- Parameters:
- Returns:
The model concentration as a function of time
- Return type:
float list
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... Tracer_CMFR_N ... ) >>> from aguaclara.core.units import u >>> Tracer_CMFR_N([1, 2, 3, 4, 5]*u.s, 5*u.s, 10*u.mg/u.L, 3) <Quantity([2.96358283 6.50579498 8.03352597 7.83803116 6.72125423], 'milligram / liter')>
- aguaclara.research.environmental_processes_analysis.Solver_CMFR_N(t_data, C_data, theta_guess, C_bar_guess)[source]
Use non-linear least squares to fit the function Tracer_CMFR_N(t_seconds, t_bar, C_bar, N) to reactor data.
- Parameters:
- Returns:
tuple of
theta (float)- Residence time in seconds
- C_bar (float) - Average concentration with same units
as C_bar_guess
N (float)- Number of CMFRS in series that best fit the data
- aguaclara.research.environmental_processes_analysis.Tracer_AD_Pe(t_seconds, t_bar, C_bar, Pe)[source]
Used by Solver_AD_Pe. All inputs and outputs are unitless. This is the model function, f(x, …). It takes the independent variable as the first argument and the parameters to fit as separate remaining arguments.
- Parameters:
- Returns:
The model concentration as a function of time
- Return type:
float list
- Examples:
>>> from aguaclara.research.environmental_processes_analysis import ( ... Tracer_AD_Pe ... ) >>> from aguaclara.core.units import u >>> Tracer_AD_Pe([1, 2, 3, 4, 5]*u.s, 5*u.s, 10*u.mg/u.L, 5) <Quantity([0.25833732 3.23793989 5.8349833 6.62508831 6.30783131], 'milligram / liter')>
- aguaclara.research.environmental_processes_analysis.Solver_AD_Pe(t_data, C_data, theta_guess, C_bar_guess)[source]
Use non-linear least squares to fit the function Tracer_AD_Pe(t_seconds, t_bar, C_bar, Pe) to reactor data.
- Parameters:
- Returns:
tuple of
theta (float)- Residence time in seconds
- C_bar (float) - Average concentration with same units
as C_bar_guess
Pe (float) - Peclet number that best fits the data