ANNEXURE A1
import math
import [Link] as plt
import statistics
import numpy as np
def calculate_deoxygenation_rate(dL_dt, K1):
rate_of_deoxygenation = -dL_dt
rate_of_deoxygenation *= K1
return rate_of_deoxygenation
def solve_for_X1(L_prime, K1, t):
K = 0.4343 * K1
X1 = L_prime * (1 - [Link](10, -K * t))
return X1
def calculate_deoxygenation_time(dL_dt, L_prime, L, X1, K):
ratio = L_prime / L
log_ratio = [Link](ratio)
time = log_ratio / (K * (L_prime - X1))
return time
title = input("Enter the title of the project: ")
NTR = int(input("Enter the number of transects: "))
QEFL = float(input("Enter the flow rate of the effluent in m3/s: "))
FMET = float(input("Enter the conversion factor FMET: "))
F1 = float(input("Enter the conversion factor F1: "))
F2 = float(input("Enter the conversion factor F2: "))
if(FMET<0):
FMET=1.0
if (F1 < 0):
F1=1.0
if (F2 < 0):
F2 = 0.67
QEFL = QEFL*FMET**3
OUTBNK = input("Enter the side of the bank of the effluent: ")
REFLD = []
for i in range(1, NTR+1):
[Link](input("Enter the reference field for transect %d: "
% i))
X = []
for i in range(1, NTR+1):
[Link](float(input("Enter the distance from outfall for
transect %d: " % i)))
Q = []
for i in range(1, NTR+1):
[Link](float(input("Enter the flow for transect %d: " % i)))
MVEL = []
for i in range(1, NTR + 1):
[Link](float(input("Enter the mean velocity for transect %d: "
% i)))
NYZ = [0] * 1000
YZ = [0.0] * 1000
U = [0.0] * 100
Ka = [0.0] * 100
KaO = [0.0] * 100
suma = [[0.0] * 100 for _ in range(100)]
sumf = [[0.0] * 100 for _ in range(100)]
sumq = [[0.0] * 100 for _ in range(100)]
ZAV = [0.0] * 100
CAVG = [0.0] * 100
CATRN = [0.0] * 100
YL = [[0.0] * 100 for _ in range(100)]
ZL = [[0.0] * 100 for _ in range(100)]
CPARM = [[0.0] * 100 for _ in range(100)]
VEL = [[0.0] * 100 for _ in range(100)]
DVEL = [[0.0] * 100 for _ in range(100)]
DELQ = [[0.0] * 100 for _ in range(100)]
DELA = [[0.0] * 100 for _ in range(100)]
DCONC = [[0.0] * 100 for _ in range(100)]
DCY = [[0.0] * 100 for _ in range(100)]
ARCY = [[0.0] * 100 for _ in range(100)]
FLUX = [[0.0] * 100 for _ in range(100)]
SUMF = [[0.0] * 100 for _ in range(100)]
UNIF = [[0.0] * 100 for _ in range(100)]
RYB = [[0.0] * 100 for _ in range(100)]
RQ = [[0.0] * 100 for _ in range(100)]
RC = [[0.0] * 100 for _ in range(100)]
RCTRN = [[0.0] * 100 for _ in range(100)]
for i in range(1, NTR + 1):
NYZ[i] = int(input("Enter the number of vertical strips for
transect {}: ".format(i)))
for j in range(1, NYZ[i] + 1):
YL[i][j] = float(input("Enter the distance of vertical strip
{} from the bank: ".format(j)))
for k in range(1, NYZ[i] + 1):
ZL[i][k] = float(input("Enter the depth of vertical strip {}:
".format(k)))
for l in range(1, NYZ[i] + 1):
CPARM[i][l] = float(input("Enter the conductivity at vertical
strip {}: ".format(l)))
for m in range(1, NYZ[i] + 1):
VEL[i][m] = float(input("Enter the velocity at vertical strip
{}: ".format(m)))
CBKG = float(input("Enter the background concentration in mg/l: "))
CEFL = float(input("Enter the concentration in the effluent in mg/l:
"))
CONC = [[0 for _ in range(100)] for _ in range(100)]
CONC_row = []
for i in range(1, NTR+1):
for l in range(1, NYZ[i] + 1):
CONC[i][l]= CPARM[i][l]-CBKG
if (CONC[i][l] < 0):
CONC[i][l] = 0.00
CONC_row.append([Link](CONC[i]))
squared_Q = [i ** 2 for i in Q]
Dh = []
for index in range(len(CONC_row)):
[Link](CONC_row[index] / squared_Q[index])
BKFX = [0]*NTR
TFLX = [0]*NTR
for i in range(NTR):
BKFX[i] = CBKG*(Q[i]-QEFL)
EFLX = CEFL*QEFL
TFLX[i] = BKFX[i]+EFLX
for i in range(1, NTR + 1):
for j in range(1, NYZ[i]+1):
DELA[i][j] = 0.5 * ((YL[i][j + 1]) - (YL[i][j])) * ((ZL[i][j
+ 1]) + (ZL[i][j]))
suma[i][j+1] = suma[i][j] + DELA[i][j]
DVEL[i][j] = 0.5 * ((VEL[i][j + 1]) + (VEL[i][j]))
DELQ[i][j] = DELA[i][j] * DVEL[i][j]
sumq[i][j+1] = sumq[i][j] + DELQ[i][j]
ZAV[i] = suma[i][NYZ[i]] / YL[i][NYZ[i]]
if (MVEL != 99):
U[i] = Q[i] / suma[i][NYZ[i]]
An = []
for i in range(1, NTR + 1):
[Link](ZAV[i-1]/X[i-1])
# To find slope(Beta)
slope = [Link](An, Dh, 1)[0]
beta = round(slope/2, 2)
for i in range(1, NTR + 1):
for j in range(1, NYZ[i]+1):
DCONC[i][j] = 0.5 * ((CONC[i][j+1]) + (CONC[i][j]))
DCY[i][j] = DCONC[i][j] * ((YL[i][j+1]) - (YL[i][j]))
ARCY[i][j] = ARCY[i][j]+DCY[i][j]
FLUX[i][j] = DCONC[i][j] * DELQ[i][j]
sumf[i][j+1] = sumf[i][j] + FLUX[i][j]
UNIF[i][j] = FLUX[i][j] / ((YL[i][j+1]) - (YL[i][j]))
CAVG[i] = CEFL * QEFL / Q[i-1]
CATRN[i] = sumf[i][NYZ[i]] / sumq[i][NYZ[i]]
import math
def calculate_deoxygenation_rate(dL_dt, K1):
rate_of_deoxygenation = -dL_dt
rate_of_deoxygenation *= K1
return rate_of_deoxygenation
def solve_for_X1(L_prime, K1, t):
K = 0.4343 * K1
X1 = L_prime * (1 - [Link](10, -K * t))
return X1
def calculate_deoxygenation_time(dL_dt, L_prime, L, X1, K):
ratio = L_prime / L
log_ratio = [Link](ratio)
time = log_ratio / (K * (L_prime - X1))
return time
L_prime = float(input("Enter the value of oxygen absorbed during
first stage:"))
L = float(input("Enter the value of oxygen requirement of the sample
at the time:"))
K1 = float(input("Enter the value of deoxygenation constant:"))
t = float(input("Enter the time:"))
# Calculate the derivative dL/dt
dL_dt = (L_prime * K1) / (0.4343 * (L_prime - L))
rate_of_deoxygenation = calculate_deoxygenation_rate(dL_dt, K1)
print("Rate of deoxygenation:", rate_of_deoxygenation)
X1 = solve_for_X1(L_prime, K1, t)
print("Value of X:", X1)
deoxygenation_time = calculate_deoxygenation_time(dL_dt, L_prime, L,
X1, K1)
print("Deoxygenation time:", deoxygenation_time)
#REAERATION CONSTANT
for i in range(1, NTR + 1):
#O CONNOR AND DOBBINS
Ka[i] = 3.93*((U[i]**0.5)/(ZAV[i]**1.5))
#OWENS
KaO[i] = 5.32*((U[i]**0.67)/(ZAV[i]**1.85))
import math
import [Link] as plt
def calculate_derivative(t, D, k_prime, S, H):
# Calculate the derivative dD/dt
dD_dt = -k_prime * D + (S / H)
return dD_dt
k_prime = float(input("Enter the Decay constant per unit time:")) #
Decay constant in per time unit
S = float(input("Enter the Sediment oxygen Demand:")) # Source term
H = float(input("Enter the Depth of the river:")) # Scaling factor
# Initial condition
D_initial = int()
# Time span
t_start = 0.0
t_end = 10.0
t_points = 100
dt = (t_end - t_start) / t_points
# Lists to store time and solution values
t_values = []
D_values = []
# Solve the differential equation using Euler's method
t = t_start
D = D_initial
for _ in range(t_points + 1):
t_values.append(t)
D_values.append(D)
dD_dt = calculate_derivative(t, D, k_prime, S, H)
D += dt * dD_dt
t += dt
# Plot the solution
[Link](t_values, D_values)
[Link]('Time')
[Link]('D')
[Link]('D vs. Time')
[Link]()
# Open the output file for writing
output_file = open("mixandat_output.txt", "w")
# Write the output to the file
output_file.write(title + "\n")
for i in range(1, NTR + 1):
output_file.write("TRANSECT %d:\n" % i)
output_file.write("%f meters from outfall\n" % X[i - 1])
output_file.write("QRIVER = %f\n" % Q[i - 1])
output_file.write("QEFL = %f\n" % QEFL)
output_file.write("BACKGROUND CONC. = %f\n" % CBKG)
output_file.write("EFFLUENT CONC. = %f\n" % CEFL)
output_file.write("UPSTREAM FLUX = %f\n" % BKFX[i - 1])
output_file.write("EFFLUENT FLUX = %f\n" % EFLX)
output_file.write("TOTAL FLUX = %f\n" % TFLX[i - 1])
column_names = ['Y', 'Z', 'VEL', 'CONC', 'SUMA', 'SUMQ', 'SUMF']
formatted_column_names = [str(col) for col in column_names]
column_names_str = '\t\t\t\t'.join(formatted_column_names)
output_file.write(column_names_str + "\n")
for j in range(1, NYZ[i] + 1):
row_values = [YL[i][j], ZL[i][j], VEL[i][j], CONC[i][j],
suma[i][j], sumq[i][j], sumf[i][j]]
formatted_row_values = [f"{value:.4f}" for value in
row_values]
row_values_str = "\t\t\t".join(formatted_row_values)
output_file.write(row_values_str + "\n")
output_file.write("AVG. CONC. JUST BELOW OUTFALL, CAVG = %f\n" %
CAVG[i])
output_file.write("AVG. CONC. AT THE TRANSECT, CATRN = %f\n" %
CATRN[i])
output_file.write("MEAN DEPTH = %f\n" % ZAV[i])
output_file.write("MEAN VELOCITY = %f\n" % U[i])
output_file.write("REAERATION CONSTANT FROM O CONNOR AND DOBBINS
EQUATION = %f\n" % Ka[i])
output_file.write("REAERATION CONSTANT FROM OWENS EQUATION = %f\
n" % KaO[i])
output_file.write("Rate of deoxygenation= %f\n" %
rate_of_deoxygenation)
output_file.write("Value of X= %f\n" % X1)
output_file.write("Deoxygenation time= %f\n" % deoxygenation_time)
output_file.write("BETA= %f\n" % beta)
[Link]('[Link]')
output_file.write("T H A N K Y O U")
output_file.write("\n")
# Close the output file
output_file.close()
# Print a message indicating the completion of the program
print("Output written to 'mixandat_output.txt'.")