ISO 9001 · 14001 · 45001

An Advanced Water Treatment Equipment Company

GDisk® Pile Cloth Disk Filter

Fully submerged, gravity-fed tertiary filter with polyester pile cloth media and automatic backwash, designed for high-efficiency suspended-solids removal in a compact footprint.

Tertiary filtration for discharge and reuse

GDisk® is a pile cloth disk filter that removes suspended solids and turbidity, and the BOD and COD attached to them, from secondary treated wastewater. It is used for final polishing in municipal and industrial STPs, for water reuse, and in drinking water treatment as a pre-filter for surface water.

The filter runs by gravity with the disks fully submerged, backwashes automatically, and loses only 1–3% of the water to backwash. GDisk® has been installed at more than 270 sites worldwide, including the UK, USA, UAE and South East Asia, with references from 250 KLD to 600 MLD, and is certified to California Title 22 for water reuse.

What GDisk® does in a treatment plant

Application

After biological treatment, treated wastewater can still contain fine suspended solids along with associated BOD, COD and phosphorus. GDisk® captures these particles on deep pile cloth media and is used for tertiary polishing where lower suspended-solids and turbidity levels are required. Performance depends on influent quality, loading and the selected configuration.

Because it needs a fraction of the area of sand filters, it also suits upgrades of existing plants and sites where space is tight.

How GDisk® works

Operation

Filtration. Water flows by gravity into the filter tank and through the pile cloth on both faces of each disk. Suspended solids are trapped in the pile. The filtered water passes into the inside of the disk, flows to the central tube and leaves the filter.

Backwash. As solids build up, the water level in the tank rises. When it reaches a set level, or at a set time interval, the backwash starts. Suction heads on both sides of each disk draw water back through the cloth at low pressure, lifting the trapped solids out while the disks turn slowly. Filtration continues during backwash, so there is no downtime.

Sludge discharge. Heavier solids that settle in the bottom of the tank are removed automatically.

Because the disks are fully submerged, the whole cloth area is used for filtration, and gravity flow keeps energy use low.

Where GDisk® is used

Application areas

Tertiary treatment in STPs

Polishing of secondary effluent to tighter discharge norms.

Water reuse

Filtration of treated water for irrigation, industrial and other non-potable reuse.

Industrial wastewater treatment

Final polishing of treated effluent.

Drinking water treatment

Pre-filtration of surface water to remove fine suspended solids, algae and organic matter before further treatment.

Power plant cooling water

Removes suspended solids from cooling water, protecting equipment.

Why choose GDisk®

Features & advantages

High-quality effluent

Typically 1–5 mg/L TSS, with 30–40% reduction in BOD and COD.

Very low energy

Gravity filtration and low-pressure backwash.

Minimal water loss

Only 1–3% of the flow used for backwash.

Continuous, automatic operation

Backwash triggered by level sensor or timer; filtration continues during backwash.

Compact

Much smaller footprint than conventional sand filtration.

Long-life media

Polyester pile cloth, typically lasting more than five years. Disks can be removed by undoing two bolts for a once-a-year pressure wash.

GDisk® models

Dimensions & manufacturing

Polyester pile cloth

Filter media

Typically 1–5 mg/L

Effluent TSS

Automatic, low-pressure suction; level or timer initiated

Backwash

1–3% of flow

Backwash water

California Title 22 (water reuse)

Certification

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

Filter Underdrainage System

Filtration

The part of a sand filter you never see, and the part that decides whether it filters and backwashes evenly.

View product

Submerged Ultrafiltration (SUF)

Filtration

Membrane modules immersed directly in the tank, drawing water through the membrane under gentle suction for reuse-quality filtrate.

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 GDisk® Pile Cloth Disk Filter

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