# -*- coding: UTF-8 -*-
from __future__ import division
from __future__ import unicode_literals

def bpk_dop(Q, q, gamma, t, kst, kv, bpk_fon, bpk_pdk=3):

    """ Расчет допустимых к отводу в водные объекты сточных вод
    определяют по величине БПКполн
    Q, q - расход воды соответственно в реке и сточных водах, м3/с;
    gamma - коэффициент смешения;
    t - длительность перемешивания воды от места сброса
    до контрольного створа, сут.
    kst, kv - константы скорости потребления кислорода соответсвенно
    сточной водой и водой водного объекта;
    bpk_pdk - нормативное значение БПКполн смеси сточных вод и воды
    водного объекта в контрольном створе, мг/дм3;
        - для водоемов хозяйственно-питьевого назначения норматив по
    БПКполн 3мг/дм3;
        - для объектов культурно-бытового назначения норматив по
    БПКполн не менее 6 мг/дм3;
    bpk_fon - знчение БПКполн воды водного объекта до места выпуска сточных вод,
    т.е. фоновое значение БПКполн мг/дм3;
    t - длительность перемещения воды от места сброса до контрольного
    створа, сут.
    """

    result = (gamma * Q) / (q * 10 ** (-kst*t)) * (bpk_pdk - bpk_fon * 10 ** (-kv * t)) + (bpk_pdk) / (10 ** (-kst * t))
    text = "БПК[sub]доп[/sub] = (γ · Q) / (q · 10[sup] -kст·t[/sub]) · (БПК[sub]ПДК[/sub] - \
БПК[sub]фон[/sub] · 10[sup] -kв·t[/sub]) + БПК[sub]ПДК[/sub] / 10[sup] -kст·t[/sub] = \
({0:.5g} · {1:.5g}) / ({2:.5g} · 10[sup] -{4} · {3:.5g}[/sub]) · ({7} - \
{6} · 10[sup]-{5} · {3:.5g}[/sub]) + {7} / 10[sup]-{4} · {3:.5g}[/sub] = \
{8:.5g} мг/дм[sup]3[/sup]".format(gamma, Q, q, t, kst, kv, bpk_fon, bpk_pdk, result)
    return (result, text)


def t_func(Lf, Vsr):

    """
    Продолжительность перемещения воды от места сброса сточных вод до
    контрольного створа;
    Lf - расстояние по форватеру от места выпуска сточных вод до
    ближайшего створа водопользования, м;
    Vsr - средняя скорость течения реки, м/с;
    """

    result = Lf / (Vsr * 86400)
    text = "φ = L[sub]ф[/sub] / (V[sub]ср[/sub] · 86400) = {} / ({} · 86400) = {:.5g} сут".format(Lf, Vsr, result)
    return (result, text)

def bpk_pur_eff(bpk_st, bpk_dop):

    """ Необходимая степень очистки сточных вод по показателю БПКполн """

    result = (bpk_st- bpk_dop) / bpk_st * 100
    text = "Z = (БПК[sub]ст[/sub] - БПК[sub]доп[/sub]) / БПК[sub]ст[/sub] · 100%  = \
({0} - {1:.5g}) / {1:.5g} · 100% = {2:.5g}%".format(bpk_st, bpk_dop, result)
    return (result, text)
