ISO 9001 · 14001 · 45001

An Advanced Water Treatment Equipment Company

Cycloxy Batchflow® SBR

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

SBR aeration without blowers or diffusers

Cycloxy Batchflow® SBR brings together two Adroit technologies. Aeration and mixing in the SBR basin come from Cycloxy™ jet aspirators, which draw atmospheric air in through a hollow shaft and release it underwater as fine bubbles while mixing the basin. Treated water is removed by the Batchflow® floating weir decanter, designed specifically for SBR plants.
Because the jet aspirators draw their own air, the plant needs no external blower and no diffuser piping in the basin.

Where Cycloxy Batchflow® SBR is used

Application

Cycloxy Batchflow® SBR is used for municipal sewage treatment plants and industrial effluent treatment plants based on SBR technology.

How the cycle works

Operation

Fill. Screened and degritted wastewater enters the basin.

React. Cycloxy™ jet aspirators aerate and mix the basin. Each unit’s rotor turns at about 1400 rpm and creates a vacuum that draws atmospheric air down a hollow shaft. The air leaves through a specially designed jet nozzle underwater and breaks into fine bubbles for oxygen transfer, while the hydraulic thrust mixes the basin and prevents dead zones.

Settle. The aspirators stop and the sludge settles, leaving clear treated water at the top.

Decant. The Batchflow® floating weir decanter draws off the clear water from below the surface, keeping foam, scum and floatables out. It moves freely between the high and low water levels on a flex joint, keeping the maximum distance from the settled sludge so that sludge does not enter the outlet pipe.

Where it is installed

Application areas

Municipal sewage treatment plants

STPs based on the sequencing batch reactor process.

Industrial effluent treatment plants

ETPs and CETPs based on SBR technology.

Why choose Cycloxy Batchflow® SBR

Features & advantages

No blower, no diffusers

Jet aspirators draw in atmospheric air themselves; no separate blower or diffuser piping is required.

Aeration and mixing in one unit

Each Cycloxy™ unit provides both oxygen transfer and mixing.

High oxygen transfer

Cycloxy™ jet aspirators transfer up to 2.0 kg O₂/kWh (1.8 to 2.0 kg O₂/kWh).

Flexible mounting

Jet aspirators can be float, wall or bridge mounted.

Clean decanting

Batchflow® floating weir decanter draws from below the surface and away from settled sludge.

Low maintenance

Simple, robust aspirator design with SS 304 / SS 316 submerged parts, and maintenance-free decanting.

Design basis

Dimensions & manufacturing

Sequencing batch reactor: fill, react, settle, decant

Process

Cycloxy™ jet aspirators

Aeration and mixing

2.2 kW to 22 kW per unit (as per tank volume and oxygen demand)

Aspirator motor power

About 1400 rpm

Aspirator speed

1.8 to 2.0 kg O₂/kWh

Oxygen transfer efficiency

SS 304 / SS 316

Aspirator wetted parts

Float / wall / bridge

Aspirator mounting

Below 85 dBA

Aspirator noise

Batchflow® floating weir decanter with flex joint

Decanter

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

Batchflow® SBR

Mixing & Aeration

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

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 Cycloxy 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();
  }
})();