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
What is Cycloxy Batchflow® SBR?
It is Adroit’s SBR system in which Cycloxy™ jet aspirators aerate and mix the basin and the Batchflow® floating weir decanter removes the treated water.
Does it need an air blower?
No. The jet aspirators draw atmospheric air in through a hollow shaft, so no external blower or diffuser system is needed.
How is the number of jet aspirators decided?
From the basin volume and the oxygen demand of the wastewater. Motor sizes range from 2.2 kW to 22 kW per unit.
How is it different from Batchflow® SBR?
The SBR process and the Batchflow® decanter are the same. In Cycloxy Batchflow® SBR, aeration and mixing are provided by Cycloxy™ jet aspirators.
Brochures, datasheets & media
Downloads
Documents
files
Photos
photos
Videos
videos
Explore more solutions
Related technologies
Batchflow® SBR
Sequencing batch reactor (SBR) system with a floating weir decanter built specifically for SBR plants.
Submersible Mixer
Compact underwater mixer that keeps solids in suspension and tank contents uniform, installed and lifted out on a guide rail.
Agitator & Flash Mixer
Dynamically balanced flash mixers and agitators for coagulant dosing, chemical preparation and process mixing, for plants up to 150 MLD.
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.
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.
Call us
+91 70248-48383Email
[email protected]
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();
}
})();