ISO 9001 · 14001 · 45001

An Advanced Water Treatment Equipment Company

Flocculation and clarification in one circular tank, designed to CPHEEO guidelines, in full bridge, half bridge, central and peripheral drive versions up to 60 m diameter.

Clariflocculators designed for Indian water treatment plants

Adroit’s clariflocculator removes suspended solids and turbidity from raw water and wastewater by combining flocculation and sedimentation in a single circular tank. It has two mechanisms: a flocculator with slow-turning paddles in the central zone, and a clarifier scraper that collects settled sludge from the floor of the outer zone.
Our clariflocculators are approved makes with municipal and state agencies and are running at water treatment plants in Madhya Pradesh, Chhattisgarh and across India. Process design follows CPHEEO guidelines, with attention to velocity gradient (G), projected paddle area, paddle speed and detention time to support stable flocculation and clarification performance.

What a clariflocculator does

Application

At a water treatment plant, coagulant such as alum or PAC is dispersed into the raw water in the flash mixer. The clariflocculator takes it from there. In the flocculation zone, gentle stirring brings the tiny destabilised particles together into larger, heavier flocs. In the clarification zone around it, those flocs settle and the clear water is drawn off the top.

How the clariflocculator works

Operation

Coagulated water enters the central flocculation compartment. Paddles turning slowly on the drive promote contact between particles and build flocs. The water spends typically 15 to 45 minutes here, depending on design, and a baffle wall separates this zone hydraulically from the clarifier.
The water then passes under the baffle into the outer clarification zone. Flow slows down, the heavy flocs settle to the floor, and the clarified water rises and overflows a peripheral weir, or passes through submerged orifices, into the launder.
Scraper blades on the rotating bridge push the settled sludge along the sloping floor to a central sludge pit, from where it is sent to the sludge chamber and on for dewatering.

Where clariflocculators are used

Application areas

Municipal water treatment plants

Removes turbidity and suspended solids from surface water and groundwater after coagulation.

Sewage treatment plants

Chemically assisted clarification in STPs and tertiary treatment.

Industrial wastewater treatment

Textile, chemical, pharmaceutical and food industry effluents.

ETPs and CETPs

Clarification of chemically treated industrial effluent.

Power plants

Clarification of raw water before boiler feed and cooling water treatment.

Why choose Adroit's clariflocculator

Features & advantages

Designed to CPHEEO

Process design to CPHEEO guidelines; structural design to client and tender requirements.

Floc-focused paddle design

Paddle area, G value and speed calculated for good flocs with less coagulant.

High-torque drive

Reputed make gear drive with overload protection.

Every configuration

Full bridge, half bridge, centrally driven or peripherally driven.

Built to last

MS with shot blasting, primer and high-quality paint system, or SS 304 / SS 316.

Installation support

Complete support for erection and commissioning at site. Low capital, operating and maintenance cost.

Clariflocculator specifications

Dimensions & manufacturing

Full bridge / half bridge / centrally driven / peripherally driven

Type

Diameter Up to 60 m

Diameter

Up to 5 m

Side water depth

Typically 15 to 45 minutes, as per design

Flocculation detention time

Mild steel (shot blasted and painted), SS 304, SS 316, or as specified

Material of construction

High-torque gear drive with overload protection

Drive

As per CPHEEO guidelines

Process design

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

Chain Flight Sludge Scraper

Clarification & Separation

Continuous sludge and scum collection for rectangular settling tanks, driven slowly and steadily by heavy-duty chains.

View product

Grit Mechanism (Detritor)

Clarification & Separation

Square detritor with rotating scraper and reciprocating rake classifier that settles, collects and washes grit before it can wear out pumps and fill up tanks.

View product

Clarifier

Clarification & Separation

Scraper mechanisms for circular primary and secondary clarifiers, with bridge and drive arrangements matched to tank size.

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 Clariflocculator

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