{"id":2870,"date":"2026-05-13T09:42:35","date_gmt":"2026-05-13T09:42:35","guid":{"rendered":"https:\/\/masstechx.com\/?page_id=2870"},"modified":"2026-05-13T09:50:42","modified_gmt":"2026-05-13T09:50:42","slug":"feedwater-ro-fit-checker","status":"publish","type":"page","link":"https:\/\/masstechx.com\/fr\/water-treatment-system\/feedwater-ro-fit-checker\/","title":{"rendered":"V\u00e9rificateur d'ajustement RO-Fit d'eau d'alimentation"},"content":{"rendered":"<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-4fd2d63\" data-block-id=\"4fd2d63\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-4fd2d63-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-c24d0d9\" data-v=\"4\" data-block-id=\"c24d0d9\"><style>.stk-c24d0d9-container{margin-top:30px !important;margin-right:30px !important;margin-bottom:30px !important;margin-left:30px !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-c24d0d9-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-c24d0d9-inner-blocks\">\n<h1>V\u00e9rificateur d'ajustement RO-Fit d'eau d'alimentation<\/h1>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-546a8b9\" data-block-id=\"546a8b9\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-546a8b9-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-971d45b\" data-v=\"4\" data-block-id=\"971d45b\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-971d45b-container stk--no-background stk--no-padding\"><div class=\"has-text-align-center stk-block-content stk-inner-blocks stk-971d45b-inner-blocks\"><div class=\"ct-breadcrumbs\" data-source=\"rankmath\" ><nav aria-label=\"chapelure\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Accueil<\/span><\/p><\/nav><\/div><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-f5cc2f6\" data-block-id=\"f5cc2f6\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-f5cc2f6-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-b6c58fd\" data-v=\"4\" data-block-id=\"b6c58fd\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-b6c58fd-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-b6c58fd-inner-blocks\">\n<div id=\"mass-ro-fit-module\">\n  <style>\n    \/* ==========================================================================\n       Mass Technology - Feedwater RO-Fit Checker (Strictly Scoped)\n       ========================================================================== *\/\n    \n    \/* 1. Highest Level of Scope: Variables & Reset *\/\n    #mass-ro-fit-module {\n      --brand: #0078C0;\n      --brand-hover: #005A91;\n      --accent: #7860A8;\n      --accent-hover: #5e4691;\n      --ink: #1a1f29;\n      --muted: #6b7280;\n      --bg-alt: #f5f7fa;\n      --line: #e4e7ec;\n      --warn: #b45309;\n      --ok: #0f766e;\n      --err: #b91c1c;\n      \n      width: 100% !important;\n      background-color: var(--bg-alt) !important; \/* Full-Bleed Background *\/\n      font-family: inherit !important;\n      color: var(--ink) !important;\n      line-height: 1.6 !important;\n      box-sizing: border-box !important;\n      display: block !important;\n    }\n\n    #mass-ro-fit-module * {\n      box-sizing: inherit !important;\n    }\n\n    \/* 2. Anchored Content (Container) *\/\n    #mass-ro-fit-module .m-container {\n      width: 100% !important;\n      max-width: 1600px !important;\n      margin: 0 auto !important;\n      padding: 40px 70px !important; \/* \u5f39\u6027\u951a\u5b9a padding *\/\n    }\n\n    \/* 3. Tool Card Layout *\/\n    #mass-ro-fit-module .m-tool-card {\n      max-width: 920px !important;\n      margin: 0 auto !important;\n      background: #ffffff !important;\n      border-radius: 10px !important;\n      box-shadow: 0 4px 18px rgba(15,30,60,0.08) !important;\n      overflow: hidden !important;\n    }\n\n    \/* 4. Semantic Headings *\/\n    #mass-ro-fit-module .m-tool-head {\n      background: linear-gradient(135deg, var(--brand) 0%, var(--accent) 130%) !important;\n      color: #ffffff !important;\n      padding: 32px 40px !important;\n      text-align: center !important;\n    }\n\n    #mass-ro-fit-module h2.m-h2-title {\n      color: #ffffff !important;\n      font-size: 28px !important;\n      font-weight: 700 !important;\n      margin: 0 0 12px 0 !important;\n      line-height: 1.3 !important;\n      border: none !important;\n      padding: 0 !important;\n    }\n\n    #mass-ro-fit-module h4.m-h4-subtitle {\n      color: rgba(255, 255, 255, 0.92) !important;\n      font-size: 15px !important;\n      font-weight: 400 !important;\n      margin: 0 !important;\n      line-height: 1.5 !important;\n    }\n\n    \/* 5. Form Fields & Grid *\/\n    #mass-ro-fit-module .m-tool-body {\n      padding: 40px !important;\n    }\n\n    #mass-ro-fit-module .m-grid {\n      display: grid !important;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;\n      gap: 20px !important;\n      margin-bottom: 24px !important;\n    }\n\n    #mass-ro-fit-module .m-field label {\n      display: block !important;\n      font-weight: 600 !important;\n      margin-bottom: 8px !important;\n      font-size: 14px !important;\n      color: var(--ink) !important;\n    }\n\n    #mass-ro-fit-module .m-field input {\n      width: 100% !important;\n      padding: 12px 14px !important;\n      border: 1px solid var(--line) !important;\n      border-radius: 6px !important;\n      font-size: 15px !important;\n      background: #ffffff !important;\n      color: var(--ink) !important;\n      font-family: inherit !important;\n      box-shadow: none !important;\n      transition: border-color 0.2s ease, box-shadow 0.2s ease !important;\n    }\n\n    #mass-ro-fit-module .m-field input:focus {\n      outline: none !important;\n      border-color: var(--brand) !important;\n      box-shadow: 0 0 0 3px rgba(0, 120, 192, 0.12) !important;\n    }\n\n    #mass-ro-fit-module .m-hint {\n      font-size: 12.5px !important;\n      color: var(--muted) !important;\n      margin-top: 6px !important;\n      display: block !important;\n    }\n\n    #mass-ro-fit-module .m-btn {\n      display: inline-flex !important;\n      justify-content: center !important;\n      align-items: center !important;\n      width: 100% !important;\n      padding: 16px !important;\n      background: var(--brand) !important;\n      color: #ffffff !important;\n      border: none !important;\n      border-radius: 6px !important;\n      font-size: 16px !important;\n      font-weight: 600 !important;\n      cursor: pointer !important;\n      transition: background 0.2s ease !important;\n      font-family: inherit !important;\n    }\n\n    #mass-ro-fit-module .m-btn:hover {\n      background: var(--brand-hover) !important;\n    }\n\n    \/* 6. Results Section *\/\n    #mass-ro-fit-module .m-result-box {\n      display: none !important;\n      margin-top: 30px !important;\n      padding: 28px !important;\n      background: var(--bg-alt) !important;\n      border-left: 4px solid var(--brand) !important;\n      border-radius: 6px !important;\n      animation: msFadeIn 0.4s ease forwards !important;\n    }\n\n    #mass-ro-fit-module .m-result-box.show {\n      display: block !important;\n    }\n\n    @keyframes msFadeIn {\n      from { opacity: 0; transform: translateY(10px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    #mass-ro-fit-module h3.m-h3-title {\n      margin: 0 0 16px 0 !important;\n      color: var(--brand) !important;\n      font-size: 18px !important;\n      font-weight: 700 !important;\n      border: none !important;\n      padding: 0 !important;\n    }\n\n    \/* 7. Checklist Styling *\/\n    #mass-ro-fit-module .m-check {\n      padding: 12px 16px !important;\n      margin: 10px 0 !important;\n      border-radius: 6px !important;\n      font-size: 14px !important;\n      display: flex !important;\n      justify-content: space-between !important;\n      align-items: center !important;\n    }\n\n    #mass-ro-fit-module .m-check.pass { background: #ecfdf5 !important; border-left: 4px solid var(--ok) !important; color: var(--ok) !important; }\n    #mass-ro-fit-module .m-check.warn { background: #fef3c7 !important; border-left: 4px solid var(--warn) !important; color: var(--warn) !important; }\n    #mass-ro-fit-module .m-check.fail { background: #fee2e2 !important; border-left: 4px solid var(--err) !important; color: var(--err) !important; }\n\n    #mass-ro-fit-module .m-check strong {\n      display: block !important;\n      color: var(--ink) !important;\n      font-size: 14.5px !important;\n    }\n\n    #mass-ro-fit-module .m-check small {\n      color: var(--muted) !important;\n      font-size: 12.5px !important;\n      display: block !important;\n      margin-top: 4px !important;\n    }\n\n    #mass-ro-fit-module .m-check-value {\n      text-align: right !important;\n      font-weight: 500 !important;\n    }\n\n    \/* 8. Stack Recommendation Box *\/\n    #mass-ro-fit-module .m-stack {\n      margin-top: 24px !important;\n      padding: 20px !important;\n      background: #ffffff !important;\n      border: 1px solid var(--line) !important;\n      border-radius: 6px !important;\n    }\n\n    #mass-ro-fit-module h4.m-h4-stack-title {\n      margin: 0 0 14px 0 !important;\n      font-size: 14px !important;\n      color: var(--brand) !important;\n      text-transform: uppercase !important;\n      letter-spacing: 0.04em !important;\n      font-weight: 700 !important;\n      border: none !important;\n      padding: 0 !important;\n    }\n\n    #mass-ro-fit-module .m-stack ol {\n      margin: 0 !important;\n      padding-left: 24px !important;\n      font-size: 14px !important;\n      color: var(--ink) !important;\n    }\n\n    #mass-ro-fit-module .m-stack ol li {\n      margin-bottom: 6px !important;\n    }\n\n    #mass-ro-fit-module .m-verdict {\n      margin-top: 20px !important;\n      font-size: 15px !important;\n      font-weight: 600 !important;\n      line-height: 1.5 !important;\n    }\n\n    \/* 9. CTA Button *\/\n    #mass-ro-fit-module .m-cta {\n      display: inline-flex !important;\n      justify-content: center !important;\n      margin-top: 20px !important;\n      padding: 14px 24px !important;\n      background: var(--accent) !important;\n      color: #ffffff !important;\n      text-decoration: none !important;\n      border-radius: 6px !important;\n      font-weight: 600 !important;\n      font-size: 14px !important;\n      transition: background 0.2s ease !important;\n    }\n\n    #mass-ro-fit-module .m-cta:hover {\n      background: var(--accent-hover) !important;\n    }\n\n    \/* Responsive *\/\n    @media (max-width:690px) {\n      #mass-ro-fit-module .m-container { padding: 30px 20px !important; }\n      #mass-ro-fit-module .m-tool-body { padding: 24px !important; }\n      #mass-ro-fit-module .m-tool-head { padding: 24px !important; }\n      #mass-ro-fit-module .m-check { flex-direction: column !important; align-items: flex-start !important; }\n      #mass-ro-fit-module .m-check-value { text-align: left !important; margin-top: 8px !important; font-size: 13.5px !important;}\n    }\n  <\/style>\n\n  <div class=\"m-full-bleed-bg\">\n    <div class=\"m-container\">\n      \n      <div class=\"m-tool-card\">\n        <div class=\"m-tool-head\">\n          <h2 class=\"m-h2-title\">V\u00e9rificateur d'ajustement RO-Fit d'eau d'alimentation<\/h2>\n          <h4 class=\"m-h4-subtitle\">Entrez votre analyse de l'eau brute Nous nous comparons aux limites d'eau d'alimentation DOW FilmTec BW30 et recommandons la pile de pr\u00e9traitement dont votre RO a besoin.<\/h4>\n        <\/div>\n        \n        <div class=\"m-tool-body\">\n          <div class=\"m-grid\">\n            <div class=\"m-field\">\n              <label for=\"ms-fit-tds\">TDS (ppm)<\/label>\n              <input type=\"number\" id=\"ms-fit-tds\" value=\"800\" min=\"50\" max=\"40000\">\n              <span class=\"m-hint\">Solides dissous totaux<\/span>\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-hardness\">Duret\u00e9 (ppm comme CaCO3)<\/label>\n              <input type=\"number\" id=\"ms-fit-hardness\" value=\"250\" min=\"0\" max=\"2000\">\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-chlorine\">Chlore gratuit (mg\/L)<\/label>\n              <input type=\"number\" id=\"ms-fit-chlorine\" value=\"0.4\" min=\"0\" max=\"10\" step=\"0.1\">\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-turbidity\">Turbidit\u00e9 (NTU)<\/label>\n              <input type=\"number\" id=\"ms-fit-turbidity\" value=\"2.5\" min=\"0\" max=\"50\" step=\"0.1\">\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-iron\">Fer (mg\/L)<\/label>\n              <input type=\"number\" id=\"ms-fit-iron\" value=\"0.15\" min=\"0\" max=\"5\" step=\"0.01\">\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-sdi\">IDS estim\u00e9e<\/label>\n              <input type=\"number\" id=\"ms-fit-sdi\" value=\"6\" min=\"0\" max=\"20\" step=\"0.1\">\n              <span class=\"m-hint\">\u00c0 partir d'un test de densit\u00e9 de limon<\/span>\n            <\/div>\n          <\/div>\n          \n          <button class=\"m-btn\" onclick=\"msCheckFeedwaterFit()\">V\u00e9rifiez l'ajustement de l'eau d'alimentation<\/button>\n\n          <div id=\"ms-fit-result\" class=\"m-result-box\">\n            <h3 class=\"m-h3-title\">Rapport de compatibilit\u00e9 des eaux us\u00e9es<\/h3>\n            <div id=\"ms-fit-checks\"><\/div>\n            \n            <div class=\"m-stack\">\n              <h4 class=\"m-h4-stack-title\">Pile de pr\u00e9traitement recommand\u00e9e<\/h4>\n              <ol id=\"ms-fit-stack\"><\/ol>\n            <\/div>\n            \n            <div id=\"ms-fit-verdict\" class=\"m-verdict\"><\/div>\n            \n            <a class=\"m-cta\" href=\"#ct-popup-813\" onclick=\"event.preventDefault(); window.location.hash = 'ct-popup-813';\">Demandez un examen technique complet<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n  <script>\n    \/* Scoped Vanilla JS Function *\/\n    function msCheckFeedwaterFit() {\n      const tds = +document.getElementById('ms-fit-tds').value;\n      const hardness = +document.getElementById('ms-fit-hardness').value;\n      const chlorine = +document.getElementById('ms-fit-chlorine').value;\n      const turbidity = +document.getElementById('ms-fit-turbidity').value;\n      const iron = +document.getElementById('ms-fit-iron').value;\n      const sdi = +document.getElementById('ms-fit-sdi').value;\n\n      const checksDiv = document.getElementById('ms-fit-checks');\n      const stackEl = document.getElementById('ms-fit-stack');\n      checksDiv.innerHTML = ''; \n      stackEl.innerHTML = '';\n\n      function addCheck(label, value, target, status, note){\n        const div = document.createElement('div');\n        div.className = 'm-check ' + status;\n        div.innerHTML = '<div><strong>'+label+'<\/strong><small>'+note+'<\/small><\/div><div class=\"m-check-value\">'+value+'<br><span style=\"font-size:12px;opacity:0.8;\">target '+target+'<\/span><\/div>';\n        checksDiv.appendChild(div);\n      }\n      \n      function addStage(text){\n        const li = document.createElement('li'); \n        li.textContent = text; \n        stackEl.appendChild(li);\n      }\n\n      \/\/ TDS check (DOW BW30 standard: tested at 2,000 ppm NaCl; BWRO for higher)\n      let tdsStatus, tdsNote;\n      if (tds < 2000) { tdsStatus = 'pass'; tdsNote = 'Within BW30 standard test range'; }\n      else if (tds < 5000) { tdsStatus = 'warn'; tdsNote = 'Use BWRO config (higher pressure)'; }\n      else { tdsStatus = 'fail'; tdsNote = 'Requires seawater RO (SWRO) \u2014 separate config'; }\n      addCheck('TDS', tds+' ppm', '<2000 (BW30)', tdsStatus, tdsNote);\n\n      \/\/ Hardness \u2014 must be reduced below 1 ppm before RO\n      let hardStatus = hardness > 1 ? 'warn' : 'pass';\n      addCheck('Hardness', hardness+' ppm', '<1 (post-softener)', hardStatus,\n        hardness > 1 ? 'Cation softener required upstream of RO' : 'Already RO-ready');\n\n      \/\/ Chlorine \u2014 DOW BW30 destroyed by Cl. Max <0.1 mg\/L feedwater.\n      let clStatus = chlorine >= 0.1 ? 'fail' : 'pass';\n      addCheck('Free Chlorine', chlorine+' mg\/L', '<0.1 (post-carbon)', clStatus,\n        chlorine >= 0.1 ? 'Activated carbon filter required \u2014 membrane oxidation risk' : 'RO-safe');\n\n      \/\/ Turbidity \u2014 should be <0.5 NTU post-sand\n      let turbStatus = turbidity > 1 ? 'warn' : 'pass';\n      addCheck('Turbidity', turbidity+' NTU', '<0.5 (post-sand)', turbStatus,\n        turbidity > 1 ? 'Multi-media sand filter required' : 'Low turbidity');\n\n      \/\/ Iron \u2014 should be <0.1 mg\/L\n      let feStatus = iron > 0.1 ? 'warn' : 'pass';\n      addCheck('Iron', iron+' mg\/L', '<0.05 (post-treat)', feStatus,\n        iron > 0.1 ? 'Iron removal media or oxidation needed' : 'Acceptable');\n\n      \/\/ SDI \u2014 must be <5 before RO\n      let sdiStatus;\n      if (sdi <= 3) sdiStatus = 'pass';\n      else if (sdi <= 5) sdiStatus = 'warn';\n      else sdiStatus = 'fail';\n      addCheck('SDI (Silt Density Index)', sdi.toFixed(1), '<3 (RO-ready)', sdiStatus,\n        sdi > 5 ? 'High fouling risk \u2014 UF pretreatment recommended' : 'Standard pretreatment sufficient');\n\n      \/\/ Build recommended stack\n      if (turbidity > 0.5) addStage('Stage 1: Multi-Media Quartz Sand Filter (NTU \u2192 <0.5)');\n      if (chlorine >= 0.1) addStage('Stage 2: Activated Carbon Filter (free Cl \u2192 <0.1 mg\/L)');\n      if (hardness > 1) addStage('Stage 3: Cation Resin Softener (hardness \u2192 <1 ppm)');\n      addStage('Stage 4: 5 \u03bcm Cartridge Micron Filter (SDI \u2192 <3)');\n      if (sdi > 5 || iron > 0.3) addStage('Stage 5 (recommended): Hollow-fiber UF (PVDF, 0.01\u20130.1 \u03bcm)');\n      addStage('Main: DOW FilmTec ' + (tds >= 2000 ? 'BWRO variant' : 'BW30') + ' RO membrane stack');\n      addStage('Post-RO: UV Sterilizer (XP-UVC) + Ozone Generator (MS-AF)');\n\n      \/\/ Verdict\n      const verdict = document.getElementById('ms-fit-verdict');\n      const fails = checksDiv.querySelectorAll('.fail').length;\n      const warns = checksDiv.querySelectorAll('.warn').length;\n      \n      if (fails > 0) {\n        verdict.style.color = 'var(--err)';\n        verdict.textContent = '\u26a0 Feedwater requires customized RO configuration. Engineering review recommended before quoting.';\n      } else if (warns > 0) {\n        verdict.style.color = 'var(--warn)';\n        verdict.textContent = '\u25cb Standard Mass pretreatment stack handles this profile with the recommended stages above.';\n      } else {\n        verdict.style.color = 'var(--ok)';\n        verdict.textContent = '\u2713 Clean feedwater \u2014 minimal pretreatment required. RO operates at optimal recovery.';\n      }\n      \n      const resultBox = document.getElementById('ms-fit-result');\n      resultBox.classList.add('show');\n      \n      \/\/ Smooth scroll\n      setTimeout(() => {\n        resultBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n      }, 50);\n    }\n  <\/script>\n<\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Feedwater RO-Fit Checker Enter your raw water analysis. We benchmark against DOW FilmTec BW30 feedwater limits and recommend the pretreatment stack your RO needs. TDS (ppm) Total Dissolved Solids Hardness (ppm as CaCO\u2083) Free Chlorine (mg\/L) Turbidity (NTU) Iron (mg\/L) Estimated SDI From silt density test Check Feedwater Fit Feedwater Compatibility Report Recommended Pretreatment Stack [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":1410,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-2870","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/pages\/2870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/comments?post=2870"}],"version-history":[{"count":0,"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/pages\/2870\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/pages\/1410"}],"wp:attachment":[{"href":"https:\/\/masstechx.com\/fr\/wp-json\/wp\/v2\/media?parent=2870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}