ISO 9001 · 14001 · 45001

An Advanced Water Treatment Equipment Company

Cycloxy™ Jet Aspirator

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.

Aeration and mixing without blowers or diffusers

Cycloxy™ is Adroit’s jet aspirator for wastewater and effluent treatment. A high-speed rotor draws atmospheric air down a hollow shaft and releases it underwater as fine bubbles, while the same thrust mixes the tank. Oxygen transfer and mixing come from a single unit, so there is no blower house, no air header and no diffuser grid on the tank floor to clog or replace.

It is a practical choice for aerated lagoons, equalisation tanks and aeration tanks in STPs and ETPs, and for upgrading existing plants where installing blowers and diffusers would mean draining tanks and civil work.

Where a jet aspirator helps

Application

Biological treatment needs oxygen, and it needs the tank contents kept moving so solids stay in suspension and there are no dead zones. Cycloxy™ provides both. It is used to aerate and mix aerated lagoons and aeration tanks, to keep equalisation tanks fresh and mixed, and to add aeration capacity to existing plants that are overloaded.

Because it can be float-mounted, it can be added to a working tank without draining it.

How Cycloxy™ works

Operation

A motor mounted above the water drives a hollow shaft set at an angle into the tank. At the lower end, a propeller turns at about 1400 rpm and creates a low-pressure zone behind it.
That vacuum draws atmospheric air in through the top of the hollow shaft. The air leaves through a specially designed jet nozzle under the water, where the propeller shears it into fine bubbles. The bubbles give up oxygen as they travel through the tank, while the propeller’s thrust drives a strong current that mixes the tank and prevents settling.

Where Cycloxy™ is used

Application areas

Sewage treatment plants

Aeration and mixing for biological treatment.

ETPs and CETPs

Oxygen transfer and mixing for industrial and common effluent.

Industrial wastewater treatment

Aeration of process effluent in open tanks.

Aerated lagoons and equalisation tanks

Aeration and circulation in large or shallow basins.

Plant upgrades

Adds aeration capacity to existing tanks, often without draining them.

Why choose Cycloxy™

Features & advantages

Two jobs, one machine

Aeration and mixing in a single unit.

No blower, no diffusers

Air is drawn in by the rotor. Nothing on the tank floor to clog.

High oxygen transfer

Up to 2.0 kg O₂/kWh (1.8 to 2.0 kg O₂/kWh).

Flexible mounting

Float, wall or bridge mounted, and suitable for retrofitting in existing basins.

Stainless wetted parts

SS 304 or SS 316 for all submerged parts; coated mild steel for supports.

Low maintenance, controlled noise

Simple design with few wearing parts; noise kept below 85 dBA.

Cycloxy™ specifications

Dimensions & manufacturing

Wetted parts SS 304 / SS 316

Wetted parts

Mild steel with protective coating

Support structure

2.2 kW to 22 kW (selected by tank volume and oxygen demand)

Motor power

About 1400 rpm

Speed

1.8 to 2.0 kg O₂/kWh

Oxygen transfer efficiency

Float / wall / bridge

Mounting

LDPE, PUF-filled for stability

Float (if used)

Below 85 dBA

Noise

2 years against manufacturing defects

Warranty

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

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

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™ Jet Aspirator

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