ISO 9001 · 14001 · 45001

An Advanced Water Treatment Equipment Company

Batchflow® SBR

Sequencing batch reactor (SBR) system with a floating weir decanter built specifically for SBR plants.

Sequencing batch reactor (SBR) system for municipal and industrial wastewater

Batchflow® SBR is Adroit’s sequencing batch reactor (SBR) system for sewage and industrial effluent treatment. In an SBR, biological treatment and settling take place in the same basin in timed cycles, so a separate secondary clarifier is generally not required within the SBR process configuration.

The component that decides SBR effluent quality is the decanter, because all treated water leaves through it. Batchflow® uses a floating weir decanter designed specifically for SBR plants. It collects water from below the surface, keeping foam, scum and floating material out of the effluent, and moves down with the water level while staying as far as possible from the settled sludge.

Where Batchflow® SBR is used

Application

Batchflow® SBR is used in municipal sewage treatment plants and industrial effluent treatment plants designed around the sequencing batch reactor process.

How the Batchflow® SBR cycle works

Operation

Each SBR basin runs through the same sequence of steps, over and over:

Fill. Screened and degritted wastewater enters the basin.

React. The basin is aerated so that bacteria break down the organic load.

Settle. Aeration stops and the sludge settles, leaving a layer of clear treated water at the top.

Decant. The Batchflow® floating weir decanter draws off the clear water. It is connected through a flex joint that lets it move freely in the vertical plane between the high and low water levels. Water enters from below the surface, so foam, scum and floatables stay behind, and the decanter keeps the maximum distance from the settled sludge so that sludge does not enter the outlet pipe.

Where Batchflow® SBR is installed

Application areas

Municipal sewage treatment plants

STPs based on the sequencing batch reactor process.

Industrial effluent treatment plants

ETPs based on the sequencing batch reactor process.

Why choose Batchflow® SBR

Features & advantages

Decanter designed for SBR

The floating weir decanter is built specifically for SBR plants.

Clear effluent, no scum

Sub-surface withdrawal keeps foam, scum and floatables out of the treated water.

Sludge stays in the basin

The decanter keeps the maximum distance from settled sludge during decanting.

Free movement with water level

Flex joint allows vertical articulation between high and low water levels.

Maintenance-free decanting

Meets the requirement for maintenance-free decanting in SBR plants.

No separate secondary clarifier

Treatment and settling happen in the same basin.

Design basis

Dimensions & manufacturing

Sequencing batch reactor: fill, react, settle, decant

Process

Floating weir decanter with flex joint

Decanter

From below the water surface

Withdrawal

Flow, influent quality, treated water quality required

Design inputs

Frequently asked questions

FAQ

Brochures, datasheets & media

Downloads

Documents

files

No documents are available for this product.

Photos

photos

No media available for this product.

Videos

videos

No videos are available for this product.

Explore more solutions

Related technologies

Cycloxy Batchflow® SBR

Mixing & Aeration

SBR system using Cycloxy™ jet aspirators for aeration and mixing, with the Batchflow® floating weir decanter for controlled decanting.

View product

Submersible Mixer

Mixing & Aeration

Compact underwater mixer that keeps solids in suspension and tank contents uniform, installed and lifted out on a guide rail.

View product

Agitator & Flash Mixer

Mixing & Aeration

Dynamically balanced flash mixers and agitators for coagulant dosing, chemical preparation and process mixing, for plants up to 150 MLD.

View product

Cycloxy™ Jet Aspirator

Mixing & Aeration

Aeration and mixing from one machine. Draws in atmospheric air through a hollow shaft and breaks it into fine bubbles underwater, with no blower and no diffuser grid.

View product

Need fine screening sized for your inlet works?

Send us your flow rate, channel dimensions and the fine-solids you need to capture — our engineers will recommend the right Stepflow configuration.

    Enquire about Batchflow® SBR

    Product enquiry

    Tell us about your requirement and we’ll respond with specifications, references and pricing.

Request a quotation

Fields marked * are required. We typically respond within one business day.

(() => {
  if (window.adroitEnquiryButtonsReady) return;

  window.adroitEnquiryButtonsReady = true;

  const rootSelector = ".adroit-contact-form";

  const buttonSelector = [
    "#wsf-1-field-38",
    "#wsf-1-field-39",
  ].join(", ");

  const values = {
    "wsf-1-field-38": "Product Enquiry",
    "wsf-1-field-39": "Service Request",
  };

  function getFormRoot(element) {
    return element.closest(rootSelector);
  }

  function getHiddenField(form) {
    let field = form.querySelector(
      'input[data-enquiry-type-field="true"]'
    );

    if (!field) {
      field = document.createElement("input");
      field.type = "hidden";
      field.name = "inquiry_type";
      field.dataset.enquiryTypeField = "true";

      form.appendChild(field);
    }

    return field;
  }

  function getErrorRow(formRoot) {
    let errorRow = formRoot.querySelector(
      '[data-enquiry-error-row="true"]'
    );

    if (errorRow) return errorRow;

    const fieldsGrid = formRoot.querySelector(".wsf-fields");
    const firstField = formRoot.querySelector(
      "#wsf-1-field-wrapper-20"
    );

    if (!fieldsGrid || !firstField) return null;

    errorRow = document.createElement("div");
    errorRow.className =
      "wsf-extra-small-12 wsf-tile wsf-field-wrapper";
    errorRow.dataset.enquiryErrorRow = "true";
    errorRow.hidden = true;

    const errorMessage = document.createElement("div");
    errorMessage.className = "wsf-invalid-feedback";
    errorMessage.textContent = "This field is required.";
    errorMessage.setAttribute("aria-live", "polite");

    errorRow.appendChild(errorMessage);

    fieldsGrid.insertBefore(errorRow, firstField);

    return errorRow;
  }

  function showError(formRoot) {
    const errorRow = getErrorRow(formRoot);

    if (!errorRow) return;

    errorRow.hidden = false;

    const errorMessage = errorRow.querySelector(
      ".wsf-invalid-feedback"
    );

    if (errorMessage) {
      errorMessage.style.display = "block";
    }

    formRoot.querySelectorAll(buttonSelector).forEach((button) => {
      button.classList.add("is-invalid");
      button.setAttribute("aria-invalid", "true");
    });
  }

  function clearError(formRoot) {
    const errorRow = formRoot.querySelector(
      '[data-enquiry-error-row="true"]'
    );

    if (errorRow) {
      errorRow.hidden = true;
    }

    formRoot.querySelectorAll(buttonSelector).forEach((button) => {
      button.classList.remove("is-invalid");
      button.removeAttribute("aria-invalid");
    });
  }

  function hasSelection(formRoot) {
    return Boolean(
      formRoot.querySelector(
        "#wsf-1-field-38.is-selected, #wsf-1-field-39.is-selected"
      )
    );
  }

  function validateEnquiry(formRoot) {
    if (hasSelection(formRoot)) {
      clearError(formRoot);
      return true;
    }

    showError(formRoot);
    return false;
  }

  function selectButton(button) {
    const formRoot = getFormRoot(button);
    const form = button.closest("form");

    if (!formRoot || !form) return;

    formRoot.querySelectorAll(buttonSelector).forEach((item) => {
      const isSelected = item === button;

      item.classList.toggle("is-selected", isSelected);
      item.setAttribute("aria-pressed", String(isSelected));
    });

    getHiddenField(form).value = values[button.id] || "";

    clearError(formRoot);
  }

  /*
   * Window capture runs before WS Form's button click handler.
   * This stops WS Form AJAX submission only when enquiry type is missing.
   */
  window.addEventListener(
    "click",
    (event) => {
      const enquiryButton = event.target.closest(
        `${rootSelector} #wsf-1-field-38, ${rootSelector} #wsf-1-field-39`
      );

      if (enquiryButton) {
        selectButton(enquiryButton);
        return;
      }

      const submitButton = event.target.closest(
        `${rootSelector} button[type="submit"], ${rootSelector} input[type="submit"]`
      );

      if (!submitButton) return;

      const formRoot = getFormRoot(submitButton);

      if (!formRoot) return;

      if (validateEnquiry(formRoot)) return;

      event.preventDefault();
      event.stopImmediatePropagation();
    },
    true
  );

  /*
   * Covers pressing Enter in a form field.
   */
  window.addEventListener(
    "submit",
    (event) => {
      const form = event.target;

      if (!(form instanceof HTMLFormElement)) return;

      const formRoot = getFormRoot(form);

      if (!formRoot) return;

      if (validateEnquiry(formRoot)) return;

      event.preventDefault();
      event.stopImmediatePropagation();
    },
    true
  );

  function initialize() {
    document.querySelectorAll(rootSelector).forEach((formRoot) => {
      const form = formRoot.querySelector("form");

      formRoot.querySelectorAll(buttonSelector).forEach((button) => {
        button.classList.remove("is-selected", "is-invalid");
        button.removeAttribute("aria-invalid");
        button.setAttribute("aria-pressed", "false");
      });

      clearError(formRoot);

      if (form) {
        getHiddenField(form).value = "";
      }
    });
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", initialize, {
      once: true,
    });
  } else {
    initialize();
  }
})();