Beispiel #1
0
def IterateFlow(flow, membrane, Js, Jw, side, vel):
    [dA] = membrane.GetDimensions(["dAm"])
    P = flow.data.get("P")
    T = flow.data.get("T")
    rho = flow.data.get("density")
    rho_w = DensityWater(T)
    pc_wt = flow.data.get("pc_wt")
    m_w_i = flow.data.get("mass_water")
    m_NaCl_i = flow.data.get("mass_NaCl")
    if side == "draw":
        m_w_f = m_w_i + Jw * 24 * dA * rho_w
        m_NaCl_f = m_NaCl_i - Js * 24 * 1e-3 * dA
    else:
        m_w_f = m_w_i - Jw * 24 * dA * rho_w
        m_NaCl_f = m_NaCl_i + Js * 24 * 1e-3 * dA
    dP = PressureLoss(membrane, pc_wt, rho, side, vel)
    next_flow = cl.flow({
        "P": P - dP,
        "T": T,
        "mass_water": m_w_f,
        "mass_NaCl": m_NaCl_f,
        "mass_total": m_w_f + m_NaCl_f
    })
    next_flow.CalcPcWt()
    next_flow.CalcOsmoticProperties()
    next_flow.CalcFlow()
    return next_flow
Beispiel #2
0
def SizePond(A, D, evaporation, infiltration_loss, m_brine_w, m_brine_NaCl,
             rainfall, rho_w):
    h = 0
    while h < D:
        H = [
            cl.flow({
                "P": P,
                "T": T,
                "mass_water": m_brine_w,
                "mass_NaCl": m_brine_NaCl,
                "mass_total": m_brine_w + m_brine_NaCl
            })
        ]
        H[0].CalcPcWt()
        H[0].CalcOsmoticProperties()
        H[0].CalcFlow()
        d = 243  #1st September
        hh = np.array(H[0].data["flow"] / A)
        pc_wts = np.array([H[0].data["pc_wt"]])
        iterations = 0
        while (h < D and pc_wts[len(pc_wts) - 1] < 0.265):
            d += 1
            previous_day = H[len(H) - 1]
            dd = d % 365
            m_NaCl = previous_day.data["mass_NaCl"]
            m_w = previous_day.data["mass_water"]
            rho = previous_day.data.get("density")
            pc_wt = pc_wts[len(pc_wts) - 1]
            brine_water = m_brine_w
            brine_NaCl = m_brine_NaCl
            rain = rainfall[dd] * A * rho_w  #kg
            evap = evaporation[dd] * A * rho_w  #kg
            soil_loss_water = A * infiltration_losses[dd] * rho * (
                1 - pc_wt) if h > 0 else 0
            seepage_NaCl = A * infiltration_losses[
                dd] * rho * pc_wt if h > 0 else 0
            m_w += max(brine_water + rain - evap - soil_loss_water, 0)
            m_NaCl += max(brine_NaCl - soil_loss_water, 0)
            m_t = m_w + m_NaCl
            pond = cl.pond({
                "P": P,
                "T": T,
                "mass_water": m_w,
                "mass_NaCl": m_NaCl,
                "mass_total": m_t
            })
            pond.CalcPcWt()
            pc_wts = np.append(pc_wts, pond.data["pc_wt"])
            pond.CalcOsmoticProperties()
            pond.CalcVolume()
            H.append(pond)
            V = pond.data["V"] / 1  #L
            h = V / A
            hh = np.append(hh, h)
            iterations += 1
        A *= 0.95
        print(h, iterations, A)
        return [d, hh, iterations, pc_wts]
Beispiel #3
0
import MembraneFlow as mf
import numpy as np
import pandas as pd
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import Reporting as r

T = 298.15
P = 1.01325

RO = {
    "recovery_rate": 0.4
}
RO_water = cl.flow({
    "pc_wt": 0.0001,
    "P": P,
    "T": T,
    "flow": 128e6 #L/d
})
seawater = cl.flow({
    "pc_wt": 0.035,
    "P": P,
    "T": T,
    "flow": RO_water.data["flow"] / RO["recovery_rate"] #MLD
})
seawater.CalcOsmoticProperties()
seawater.CalcMassRate()
RO_water.CalcOsmoticProperties()
RO_water.CalcMassRate()
RO_brine = cl.flow({
    "P": P,
    "T": T,
Beispiel #4
0
import json

fs = open('environmental_data.json', 'r')
data = json.loads(fs.read())
rainfall = data.get("rainfall")
rainfall_avg = data.get("rainfall_avg")
evaporation = data.get("evaporation")
evaporation_avg = data.get("evaporation_avg")
infiltration_losses = data.get("infiltration_losses")
infiltration_losses_avg = data.get("infiltration_losses_avg")

P = 1.01325
T = 273.15 + 25

brine_pc_wt = 0.057  #%wt
brine = cl.flow({"P": P, "T": T, "pc_wt": brine_pc_wt, "flow": 192e6})
brine.CalcOsmoticProperties()
brine.CalcMassRate()
brine_water = brine.data.get("mass_water")
brine_NaCl = brine.data.get("mass_NaCl")
rho_brine = brine.data.get("density")
m_t_brine = brine.data.get("mass_total")

targ_diff_pc_wt = 0.15  #%wt
targ_pond_pc_wt = targ_diff_pc_wt + brine_pc_wt  #%wt
print(targ_pond_pc_wt)  #0.207

gamma_D = 0.3
gamma_F = 1 - gamma_D
print(gamma_F)  #0.7
Beispiel #5
0
    s)
membrane.CalcElementDimensions()
[dAd, dA] = membrane.GetDimensions(["dAd", "dAm"])  #m^2

Qi = 100  #L/h
Jw = 35  #L/h/m^2
Js = 5  #L/h/m^2
Qf = f.IDF(Qi, Jw, dA)
print(Qi, Qf)

P = 50
T = 273.15
pc_wt = 0.1
Vi = Qi / dAd / 1e3 / 3600  #m/s

flow = cl.flow({"P": P, "T": T, "pc_wt": pc_wt, "flow": Qi})
flow.CalcOsmoticProperties()
flow.CalcMassRate()

Ci = flow.data.get("molar_concentration")
Cf = f.IDC(Qi, Ci, Qf, Js, dA)
print(Ci, Cf)

# def IterateFlow(flow, Jw, Js, side, vel):
#     rho = flow.data.get("density")
#     rho_w = f.DensityWater(T)
#     m_w_i = flow.data.get("mass_water")
#     m_NaCl_i = flow.data.get("mass_NaCl")
#     if side == "draw":
#         m_w_f = m_w_i + Jw*dA*rho_w
#         m_NaCl_f = m_NaCl_i - Js*dA
Beispiel #6
0
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

Amax = 151 * 1e6  #m^2
T = 298.15
P = 1.01325
fs = open('environmental_data.json', 'r')
data = json.loads(fs.read())
rainfall = data.get("rainfall")
evaporation = data.get("evaporation")
infiltration_losses = data.get("infiltration_losses")

RO = {"recovery_rate": 0.4}
RO_water = cl.flow({
    "pc_wt": 0.0001,
    "P": P,
    "T": T,
    "flow": 128  #MLD
})
seawater = cl.flow({
    "pc_wt": 0.035,
    "P": P,
    "T": T,
    "flow": RO_water.data["flow"] / RO["recovery_rate"]  #MLD
})
seawater.CalcOsmoticProperties()
seawater.CalcMassRate()
RO_water.CalcOsmoticProperties()
RO_water.CalcMassRate()
brine_discharge = cl.flow({
    "P": P,
    "T": T,
Beispiel #7
0
import json
import math
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
import MembraneFlow as mf
import numpy as np

T = 298.15
P = 1.01325

RO = {"recovery_rate": 0.4}
RO_water = cl.flow({
    "pc_wt": 0.0001,
    "P": P,
    "T": T,
    "flow": 128e6  #L/d
})
seawater = cl.flow({
    "pc_wt": 0.035,
    "P": P,
    "T": T,
    "flow": RO_water.data["flow"] / RO["recovery_rate"]  #MLD
})
seawater.CalcOsmoticProperties()
seawater.CalcMassRate()
RO_water.CalcOsmoticProperties()
RO_water.CalcMassRate()
RO_brine = cl.flow({
    "P": P,
    "T": T,