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
What is an SBR system?
A sequencing batch reactor treats wastewater in batches. Filling, biological treatment, settling and decanting all happen in the same tank, one after another, in a repeating cycle.
What does the decanter do in an SBR?
It removes the clear treated water from the top of the basin after settling, without taking scum from the surface or sludge from the bottom.
Why a floating weir decanter?
It floats with the water level and draws from just below the surface throughout the decant, so it stays away from both the scum on top and the sludge at the bottom.
Is Batchflow® SBR used for industrial effluent?
Yes. It is used in both municipal STPs and industrial ETPs based on SBR technology.
What is Cycloxy Batchflow® SBR?
It is the Batchflow® SBR with aeration and mixing by Cycloxy™ jet aspirators, which need no air blower. See the Cycloxy Batchflow® SBR page.
Brochures, datasheets & media
Downloads
Documents
files
Photos
photos
Videos
videos
Explore more solutions
Related technologies
Cycloxy Batchflow® SBR
SBR system using Cycloxy™ jet aspirators for aeration and mixing, with the Batchflow® floating weir decanter for controlled decanting.
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 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();
}
})();