Algorithm 8. Agglomeration: Article 6 only#

Overview#

Calculate compliance of an agglomeration with Article 6 of the 1991 urban wastewater treatment directive.

Compliance depends on:

  • treatment type at connected plants, and

  • load entering plants.

Simplified Logic#

1. No primary treatment required#

  • NR

  • (exit_leaf = 08-01)

2. At least one primary treatment plant exists#

  • If any plant compliance = NC and load entering NC plants > 1% of collected load and ≥ 2000 p.e. →

    • NC

    • (exit_leaf = 08-02)

  • Else, if any plant compliance = PD

    • PD

    • (exit_leaf = 08-03)

  • Else, if any plant compliance = C

    • C

    • (exit_leaf = 08-04)

  • Else →

    • NR

    • (exit_leaf = 08-05)

Decision Tree#

        graph TB
ROOT["At least one plant has treatment required = primary"]

ROOT --> N1((NO)) --- C_NR_1["Compliance Article 6 = NR"]
C_NR_1 -.- ID01(["08-01"])

ROOT --> Y1((YES)) --- COND_1["At least one compliance for Article 6 = NC and (Sum of load entering for all plants with compliance for article 6 = NC) >1% and >= 2000p.e."]

COND_1 --- Y2((YES)) --- C_NC_1["Compliance article 6 = NC"]
C_NC_1 -.- ID02(["08-02"])

COND_1 --- N2((NO)) --- COND_2["At least one compliance for Article 6 = PD"]

COND_2 --- Y3((YES)) --- C_PD_1["Compliance article 6 = PD"]
C_PD_1 -.- ID03(["08-03"])

COND_2 --- N3((NO)) --- COND_3["At least one compliance for Article 6 = C"]

COND_3 --- Y4((YES)) --- C_C_1["Compliance article 6 = C"]
C_C_1 -.- ID04(["08-04"])

COND_3 --- N4((NO)) --- C_NR_2["Compliance article 6 = NR"]
C_NR_2 -.- ID05(["08-05"])

%% Styles
classDef reference stroke:#00a2ff,color:#00a2ff;
classDef yesBox fill:#4CAF50,color:white,stroke:#2E7D32;
classDef noBox fill:#F44336,color:white,stroke:#C62828;

%% Class Assignments
class ID01,ID02,ID03,ID04,ID05 reference;
class Y1,Y2,Y3,Y4 yesBox;
class N1,N2,N3,N4 noBox;
    

Pseudocode#

Show python code
A = (aggC1 * aggGenerated) * 0.01 
 
if np_treat_primary > 0: 
    # At least one primary treatment plant 
    if np_6NC > 0 and sp_load_enter_6NC > A*0.01 and sp_load_enter_6NC >= 2000: 
        return "NC", "08-02" 
    elif np_6PD > 0: 
        return "PD", "08-03" 
    elif np_6C > 0: 
        return "C", "08-04" 
    else: 
        return "NR", "08-05" 
else: 
    # No primary treatment plant 
    return "NR", "08-01"