{"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\/es\/water-treatment-system\/feedwater-ro-fit-checker\/","title":{"rendered":"Comprobador RO-Fit de agua de alimentaci\u00f3n"},"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>Comprobador RO-Fit de agua de alimentaci\u00f3n<\/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=\"pan rallado\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Hogar<\/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\">Comprobador RO-Fit de agua de alimentaci\u00f3n<\/h2>\n          <h4 class=\"m-h4-subtitle\">Ingrese su an\u00e1lisis de agua cruda. Comparamos los l\u00edmites de agua de alimentaci\u00f3n DOW FilmTec BW30 y recomendamos la pila de pretratamiento que necesita su RO.<\/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\">S\u00f3lidos disueltos totales<\/span>\n            <\/div>\n            <div class=\"m-field\">\n              <label for=\"ms-fit-hardness\">Dureza (ppm como 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\">Cloro libre (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\">Turbidez (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\">Hierro (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\">Ied estimada<\/label>\n              <input type=\"number\" id=\"ms-fit-sdi\" value=\"6\" min=\"0\" max=\"20\" step=\"0.1\">\n              <span class=\"m-hint\">De la prueba de densidad del limo<\/span>\n            <\/div>\n          <\/div>\n          \n          <button class=\"m-btn\" onclick=\"msCheckFeedwaterFit()\">Verifique el ajuste del agua de alimentaci\u00f3n<\/button>\n\n          <div id=\"ms-fit-result\" class=\"m-result-box\">\n            <h3 class=\"m-h3-title\">Informe de compatibilidad de aguas de alimentaci\u00f3n<\/h3>\n            <div id=\"ms-fit-checks\"><\/div>\n            \n            <div class=\"m-stack\">\n              <h4 class=\"m-h4-stack-title\">Pila de pretratamiento recomendada<\/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';\">Solicite una revisi\u00f3n completa de ingenier\u00eda<\/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\/es\/wp-json\/wp\/v2\/pages\/2870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/comments?post=2870"}],"version-history":[{"count":0,"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/pages\/2870\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/pages\/1410"}],"wp:attachment":[{"href":"https:\/\/masstechx.com\/es\/wp-json\/wp\/v2\/media?parent=2870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}