{"id":1658,"date":"2026-02-26T12:33:48","date_gmt":"2026-02-26T11:33:48","guid":{"rendered":"https:\/\/nextgenerationcooling.com\/loesninger\/coolant-distribution-unit-cdu\/"},"modified":"2026-10-26T09:17:31","modified_gmt":"2026-10-26T08:17:31","slug":"coolant-distribution-unit-cdu","status":"publish","type":"page","link":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/","title":{"rendered":"Coolant Distribution Unit CDU"},"content":{"rendered":"<h1><strong><span data-contrast=\"auto\" xml:lang=\"DA-DK\" lang=\"DA-DK\" class=\"TextRun SCXW240781916 BCX0\"><span class=\"NormalTextRun SpellingErrorV2Themed SpellingErrorHighlight SCXW240781916 BCX0\">Coolant<\/span><span class=\"NormalTextRun SCXW240781916 BCX0\">\u00a0Distribution Unit<\/span><\/span><span class=\"EOP SCXW240781916 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/strong><br \/>Intelligent flowstyring og systemintegration til k\u00f8ling p\u00e5 rackniveau<\/h1>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/03\/CDU_Top.png\" alt=\"\"><\/p>\n<h2><span data-contrast=\"auto\" xml:lang=\"DA-DK\" lang=\"DA-DK\" class=\"TextRun SCXW238159691 BCX0\"><span class=\"NormalTextRun SpellingErrorV2Themed SCXW238159691 BCX0\">Coolant<\/span><span class=\"NormalTextRun SCXW238159691 BCX0\"><span>\u00a0<\/span>Distribution Unit<\/span><\/span><span class=\"EOP SCXW238159691 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/h2>\n<div>\n<p>NGC&#8217;s CDU&#8217;er forbinder k\u00f8ling p\u00e5 rackniveau med bygningens infrastruktur gennem et modul\u00e6rt og hydraulisk stabilt design. Hver CDU sikrer definerede driftsforhold, pr\u00e6cis flowregulering og forudsigelig termisk ydeevne i hele systemet.<\/p>\n<p>NGC&#8217;s CDU&#8217;er findes i to kapacitetsplatforme:<\/p>\n<ul>\n<li>Aktiv CDU p\u00e5 rackniveau til installationer p\u00e5 10 til 50 kW<\/li>\n<li>Passiv CDU p\u00e5 systemniveau til installationer p\u00e5 300 til 500 kW<\/li>\n<\/ul>\n<p>Hver platform arbejder inden for klart specificerede hydrauliske parametre, s\u00e5 ydeevnen er stabil og den termiske adf\u00e6rd forudsigelig. Det modul\u00e6re design g\u00f8r det muligt at skalere installationen og samtidig holde de hydrauliske forhold under kontrol.<\/p>\n<p>Udviklet til alt fra installationer med \u00e9t rack til systemer p\u00e5 flere megawatt.<\/p>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\">\n<p><strong>Defineret hydraulisk styring<br \/><\/strong>Holder tryk og flow stabilt p\u00e5 tv\u00e6rs af tilsluttede racks.<\/p>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\"> <\/span><\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">\n<p><strong>Uafh\u00e6ngighed p\u00e5 rackniveau<br \/><\/strong>Mindsker den hydrauliske p\u00e5virkning mellem enhederne og bevarer den termiske stabilitet.<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">\n<p><strong>Modul\u00e6re kapacitetsplatforme<br \/><\/strong>Findes i to platforme: 10 til 50 kW (aktiv) og 300 til 500 kW (passiv).<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li aria-setsize=\"-1\" data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\">\n<p><strong>Enkel integration i bygningen<br \/><\/strong>Forbinder k\u00f8ling p\u00e5 rackniveau med prim\u00e6rforsyningen uden kompliceret indregulering.<\/p>\n<\/li>\n<\/ul>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559685&quot;:720,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<\/div>\n<h2>Produktoversigt<\/h2>\n<ul>\n<li>\n<h3>N\u00f8glepunkter<\/h3>\n<div>\n<ul>\n<li>Pr\u00e6cis regulering af flow og tryk<\/li>\n<li>H\u00f8j systemstabilitet ved skiftende belastning<\/li>\n<li>To kapacitetsplatforme: 10 til 50 kW (aktiv) \/ 300 til 500 kW (passiv)<\/li>\n<li>Designet til skalerbare datacenterinstallationer<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<li>\n<h3>V\u00e6rdi<\/h3>\n<div>\n<ul>\n<li>P\u00e5lidelig ydeevne inden for et defineret hydraulisk omr\u00e5de<\/li>\n<li>Underst\u00f8tter pr\u00e6cis dimensionering af flow og styring af returtemperatur<\/li>\n<li>Kortere reaktionstid ved skiftende belastning<\/li>\n<li>Skalerbare konfigurationer fra enkelte installationer til systemer p\u00e5 flere MW<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<li>\n<h3>Funktioner<\/h3>\n<div>\n<ul>\n<li>Aktive eller passive CDU-konfigurationer<\/li>\n<li>Integreret varmevekslerplatform<\/li>\n<li>Hydraulisk adskillelse mellem prim\u00e6r- og sekund\u00e6rkreds<\/li>\n<li>Sensorbaseret overv\u00e5gning af tryk, temperatur og flow<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<li>\n<h3>Tekniske data<\/h3>\n<div>\n<ul>\n<li>10 til 50 kW (aktiv CDU), 300 til 500 kW (passiv CDU)<\/li>\n<li>Flow i prim\u00e6rkredsen: op til 15 m\u00b3\/h<\/li>\n<li>Driftstemperatur: 15 til 40 \u00b0C<\/li>\n<li>Effektforbrug: 50 til 520 W (afh\u00e6ngigt af konfiguration)<\/li>\n<\/ul>\n<\/div>\n<\/li>\n<\/ul>\n<div>\n<div id=\"test360\" style=\"\n  width:100%;\n  aspect-ratio:4\/3;\n  position:relative;\n  overflow:hidden;\n  background:white;\n  cursor:grab;\n  touch-action:none;\n\"><\/p>\n<p>  <!-- FULLSCREEN BUTTON --><br \/>\n  <button id=\"fullscreenBtn\" type=\"button\" aria-label=\"Fullscreen\" style=\"\n    position:absolute;\n    top:16px;\n    left:16px;\n    z-index:30;\n    width:38px;\n    height:38px;\n    border:0;\n    border-radius:50%;\n    background:rgba(255,255,255,.92);\n    color:#222;\n    cursor:pointer;\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    box-shadow:0 1px 3px rgba(0,0,0,.12);\n    padding:0;\n  \"><br \/>\n    <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\"\n         fill=\"none\" stroke=\"currentColor\"\n         stroke-width=\"2\" stroke-linecap=\"round\"\n         stroke-linejoin=\"round\">\n      <path d=\"M8 3H5a2 2 0 0 0-2 2v3\"\/>\n      <path d=\"M16 3h3a2 2 0 0 1 2 2v3\"\/>\n      <path d=\"M8 21H5a2 2 0 0 1-2-2v-3\"\/>\n      <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\"\/>\n    <\/svg><br \/>\n  <\/button><\/p>\n<p>  <!-- ZOOM BUTTONS --><\/p>\n<div id=\"zoomControls\" style=\"\n    position:absolute;\n    top:16px;\n    right:16px;\n    z-index:30;\n    display:flex;\n    flex-direction:column;\n    gap:8px;\n  \"><\/p>\n<p>    <button id=\"zoomInBtn\" type=\"button\" aria-label=\"Zoom in\" style=\"\n      width:38px;\n      height:38px;\n      border:0;\n      border-radius:50%;\n      background:rgba(255,255,255,.92);\n      color:#222;\n      font-size:20px;\n      line-height:1;\n      cursor:pointer;\n      display:flex;\n      align-items:center;\n      justify-content:center;\n      box-shadow:0 1px 3px rgba(0,0,0,.12);\n    \">+<\/button><\/p>\n<p>    <button id=\"zoomOutBtn\" type=\"button\" aria-label=\"Zoom out\" disabled style=\"\n      width:38px;\n      height:38px;\n      border:0;\n      border-radius:50%;\n      background:rgba(255,255,255,.92);\n      color:#222;\n      font-size:20px;\n      line-height:1;\n      cursor:not-allowed;\n      display:flex;\n      align-items:center;\n      justify-content:center;\n      box-shadow:0 1px 3px rgba(0,0,0,.12);\n      opacity:.4;\n    \">\u2212<\/button><\/p><\/div>\n<\/div>\n<div id=\"thumbs\" style=\"\n  display:flex;\n  justify-content:center;\n  gap:10px;\n  margin-top:12px;\n\">\n<\/div>\n<p><script>\n(function () {<\/p>\n<p>  const container = document.getElementById(\"test360\");\n  const thumbs = document.getElementById(\"thumbs\");<\/p>\n<p>  const zoomControls = document.getElementById(\"zoomControls\");\n  const zoomInBtn = document.getElementById(\"zoomInBtn\");\n  const zoomOutBtn = document.getElementById(\"zoomOutBtn\");\n  const fullscreenBtn = document.getElementById(\"fullscreenBtn\");<\/p>\n<p>  const BASE360 = \"https:\/\/3de.dk\/ngc\/360-web\/\";\n  const BASEIMG = \"https:\/\/3de.dk\/ngc\/Images-web\/\";\n  const COUNT = 24;<\/p>\n<p>  const stills = [\n    \"CDU_render_02.webp\",\n    \"CDU_render_03.webp\",\n    \"CDU_render_NoBox_02.webp\",\n    \"CDU_render_NoBox_03.webp\"\n  ];<\/p>\n<p>  let images = [];\n  let current = 0;\n  let startX = null;\n  let startY = null;\n  let lastX = null;\n  let accumulator = 0;\n  let mode360 = true;\n  let currentStill = null;\n  let dragged = false;<\/p>\n<p>  \/* --------------------------------\n     KEEP CONTROLS ON TOP\n  -------------------------------- *\/<\/p>\n<p>  function restoreControls() {<\/p>\n<p>    container.appendChild(fullscreenBtn);\n    container.appendChild(zoomControls);<\/p>\n<p>  }<\/p>\n<p>  \/* --------------------------------\n     ZOOM BUTTON STATE\n  -------------------------------- *\/<\/p>\n<p>  function updateZoomButtons() {<\/p>\n<p>    const zoomed =\n      !!document.getElementById(\"ngcZoomLayer\");<\/p>\n<p>    zoomInBtn.disabled = zoomed;\n    zoomOutBtn.disabled = !zoomed;<\/p>\n<p>    zoomInBtn.style.opacity =\n      zoomed ? \".4\" : \"1\";<\/p>\n<p>    zoomOutBtn.style.opacity =\n      zoomed ? \"1\" : \".4\";<\/p>\n<p>    zoomInBtn.style.cursor =\n      zoomed ? \"not-allowed\" : \"pointer\";<\/p>\n<p>    zoomOutBtn.style.cursor =\n      zoomed ? \"pointer\" : \"not-allowed\";<\/p>\n<p>  }<\/p>\n<p>  \/* --------------------------------\n     360 IMAGES\n  -------------------------------- *\/<\/p>\n<p>  for (let i = 0; i < COUNT; i++) {\n\n    const img = document.createElement(\"img\");\n\n    img.src =\n      BASE360 +\n      String(i + 1).padStart(4, \"0\") +\n      \".webp\";\n\n    img.style.position = \"absolute\";\n    img.style.inset = \"0\";\n    img.style.width = \"100%\";\n    img.style.height = \"100%\";\n    img.style.objectFit = \"contain\";\n    img.style.display = i === 0 ? \"block\" : \"none\";\n    img.style.pointerEvents = \"none\";\n\n    img.draggable = false;\n\n    container.appendChild(img);\n    images.push(img);\n\n  }\n\n\n  function showFrame(index) {\n\n    images[current].style.display = \"none\";\n\n    current =\n      ((index % COUNT) + COUNT) % COUNT;\n\n    images[current].style.display = \"block\";\n\n  }\n\n\n  \/* --------------------------------\n     SHOW 360\n  -------------------------------- *\/\n\n  function show360() {\n\n    closeZoom();\n\n    startX = null;\n    startY = null;\n    lastX = null;\n    accumulator = 0;\n    dragged = false;\n\n    mode360 = true;\n    currentStill = null;\n\n    container.innerHTML = \"\";\n\n    images.forEach(function(img, i) {\n\n      img.style.display =\n        i === current ? \"block\" : \"none\";\n\n      container.appendChild(img);\n\n    });\n\n    restoreControls();\n\n    container.style.cursor = \"grab\";\n\n    updateZoomButtons();\n\n  }\n\n\n  \/* --------------------------------\n     SHOW STILL\n  -------------------------------- *\/\n\n  function showStill(filename) {\n\n    closeZoom();\n\n    startX = null;\n    startY = null;\n    lastX = null;\n    accumulator = 0;\n    dragged = false;\n\n    mode360 = false;\n    currentStill = filename;\n\n    container.innerHTML = \"\";\n\n    const img = document.createElement(\"img\");\n\n    img.src = BASEIMG + filename;\n\n    img.style.position = \"absolute\";\n    img.style.inset = \"0\";\n    img.style.width = \"100%\";\n    img.style.height = \"100%\";\n    img.style.objectFit = \"contain\";\n    img.style.pointerEvents = \"none\";\n\n    img.draggable = false;\n\n    container.appendChild(img);\n\n    restoreControls();\n\n    container.style.cursor = \"zoom-in\";\n\n    updateZoomButtons();\n\n  }\n\n\n  \/* --------------------------------\n     CURRENT IMAGE\n  -------------------------------- *\/\n\n  function currentImageSource() {\n\n    if (mode360) {\n\n      return (\n        BASE360 +\n        String(current + 1).padStart(4, \"0\") +\n        \".webp\"\n      );\n\n    }\n\n    return BASEIMG + currentStill;\n\n  }\n\n\n  \/* --------------------------------\n     NORMAL VIEWER DRAG\n  -------------------------------- *\/\n\n  container.addEventListener(\"pointerdown\", function(e) {\n\n    if (\n      e.target === zoomInBtn ||\n      e.target === zoomOutBtn ||\n      e.target === fullscreenBtn ||\n      fullscreenBtn.contains(e.target)\n    ) {\n      return;\n    }\n\n\n    if (document.getElementById(\"ngcZoomLayer\"))\n      return;\n\n\n    startX = e.clientX;\n    startY = e.clientY;\n    lastX = e.clientX;\n\n    accumulator = 0;\n    dragged = false;\n\n\n    try {\n\n      container.setPointerCapture(\n        e.pointerId\n      );\n\n    } catch(err) {}\n\n\n    if (mode360) {\n\n      container.style.cursor =\n        \"grabbing\";\n\n    }\n\n  });\n\n\n  container.addEventListener(\"pointermove\", function(e) {\n\n    if (startX === null)\n      return;\n\n\n    const totalX =\n      e.clientX - startX;\n\n    const totalY =\n      e.clientY - startY;\n\n\n    if (\n      Math.abs(totalX) > 5 ||\n      Math.abs(totalY) > 5\n    ) {<\/p>\n<p>      dragged = true;<\/p>\n<p>    }<\/p>\n<p>    if (!mode360)\n      return;<\/p>\n<p>    const dx =\n      e.clientX - lastX;<\/p>\n<p>    lastX =\n      e.clientX;<\/p>\n<p>    accumulator += dx;<\/p>\n<p>    const step = 18;<\/p>\n<p>    if (\n      Math.abs(accumulator) >= step\n    ) {<\/p>\n<p>      const frames =\n        Math.trunc(\n          accumulator \/ step\n        );<\/p>\n<p>      showFrame(\n        current + frames\n      );<\/p>\n<p>      accumulator -=\n        frames * step;<\/p>\n<p>    }<\/p>\n<p>  });<\/p>\n<p>  container.addEventListener(\"pointerup\", function(e) {<\/p>\n<p>    if (startX === null)\n      return;<\/p>\n<p>    const shouldZoom =\n      !dragged;<\/p>\n<p>    startX = null;\n    startY = null;\n    lastX = null;\n    accumulator = 0;\n    dragged = false;<\/p>\n<p>    container.style.cursor =\n      mode360\n      ? \"grab\"\n      : \"zoom-in\";<\/p>\n<p>    if (shouldZoom) {<\/p>\n<p>      setTimeout(function() {<\/p>\n<p>        openZoom();<\/p>\n<p>      }, 0);<\/p>\n<p>    }<\/p>\n<p>  });<\/p>\n<p>  container.addEventListener(\"pointercancel\", function() {<\/p>\n<p>    startX = null;\n    startY = null;\n    lastX = null;\n    accumulator = 0;\n    dragged = false;<\/p>\n<p>    container.style.cursor =\n      mode360\n      ? \"grab\"\n      : \"zoom-in\";<\/p>\n<p>  });<\/p>\n<p>  \/* --------------------------------\n     ZOOM\n  -------------------------------- *\/<\/p>\n<p>  function openZoom() {<\/p>\n<p>    if (\n      document.getElementById(\n        \"ngcZoomLayer\"\n      )\n    )\n      return;<\/p>\n<p>    const src =\n      currentImageSource();<\/p>\n<p>    if (!src)\n      return;<\/p>\n<p>    const zoomLayer =\n      document.createElement(\"div\");<\/p>\n<p>    zoomLayer.id =\n      \"ngcZoomLayer\";<\/p>\n<p>    zoomLayer.style.position =\n      \"absolute\";<\/p>\n<p>    zoomLayer.style.inset =\n      \"0\";<\/p>\n<p>    zoomLayer.style.overflow =\n      \"hidden\";<\/p>\n<p>    zoomLayer.style.background =\n      \"white\";<\/p>\n<p>    zoomLayer.style.zIndex =\n      \"10\";<\/p>\n<p>    zoomLayer.style.cursor =\n      \"grab\";<\/p>\n<p>    zoomLayer.style.touchAction =\n      \"none\";<\/p>\n<p>    const zoomImage =\n      document.createElement(\"img\");<\/p>\n<p>    zoomImage.src =\n      src;<\/p>\n<p>    zoomImage.style.position =\n      \"absolute\";<\/p>\n<p>    zoomImage.style.inset =\n      \"0\";<\/p>\n<p>    zoomImage.style.width =\n      \"100%\";<\/p>\n<p>    zoomImage.style.height =\n      \"100%\";<\/p>\n<p>    zoomImage.style.objectFit =\n      \"contain\";<\/p>\n<p>    zoomImage.style.userSelect =\n      \"none\";<\/p>\n<p>    zoomImage.style.pointerEvents =\n      \"none\";<\/p>\n<p>    zoomImage.style.transformOrigin =\n      \"center center\";<\/p>\n<p>    zoomImage.draggable =\n      false;<\/p>\n<p>    zoomLayer.appendChild(\n      zoomImage\n    );<\/p>\n<p>    container.appendChild(\n      zoomLayer\n    );<\/p>\n<p>    restoreControls();<\/p>\n<p>    let panX = 0;\n    let panY = 0;<\/p>\n<p>    let down = false;\n    let pointerId = null;<\/p>\n<p>    let zoomStartX = 0;\n    let zoomStartY = 0;<\/p>\n<p>    let zoomLastX = 0;\n    let zoomLastY = 0;<\/p>\n<p>    let zoomDragged = false;<\/p>\n<p>    function updateZoom() {<\/p>\n<p>      zoomImage.style.transform =\n        \"translate(\" +\n        panX +\n        \"px,\" +\n        panY +\n        \"px) scale(2.2)\";<\/p>\n<p>    }<\/p>\n<p>    updateZoom();\n    updateZoomButtons();<\/p>\n<p>    zoomLayer.addEventListener(\n      \"pointerdown\",\n      function(e) {<\/p>\n<p>        down = true;\n        pointerId = e.pointerId;<\/p>\n<p>        zoomStartX = e.clientX;\n        zoomStartY = e.clientY;<\/p>\n<p>        zoomLastX = e.clientX;\n        zoomLastY = e.clientY;<\/p>\n<p>        zoomDragged = false;<\/p>\n<p>        zoomLayer.style.cursor =\n          \"grabbing\";<\/p>\n<p>        try {<\/p>\n<p>          zoomLayer.setPointerCapture(\n            e.pointerId\n          );<\/p>\n<p>        } catch(err) {}<\/p>\n<p>      }\n    );<\/p>\n<p>    zoomLayer.addEventListener(\n      \"pointermove\",\n      function(e) {<\/p>\n<p>        if (\n          !down ||\n          e.pointerId !== pointerId\n        )\n          return;<\/p>\n<p>        const totalX =\n          e.clientX - zoomStartX;<\/p>\n<p>        const totalY =\n          e.clientY - zoomStartY;<\/p>\n<p>        if (\n          Math.abs(totalX) > 5 ||\n          Math.abs(totalY) > 5\n        ) {<\/p>\n<p>          zoomDragged = true;<\/p>\n<p>        }<\/p>\n<p>        const dx =\n          e.clientX - zoomLastX;<\/p>\n<p>        const dy =\n          e.clientY - zoomLastY;<\/p>\n<p>        zoomLastX =\n          e.clientX;<\/p>\n<p>        zoomLastY =\n          e.clientY;<\/p>\n<p>        if (zoomDragged) {<\/p>\n<p>          panX += dx;\n          panY += dy;<\/p>\n<p>          updateZoom();<\/p>\n<p>        }<\/p>\n<p>      }\n    );<\/p>\n<p>    zoomLayer.addEventListener(\n      \"pointerup\",\n      function(e) {<\/p>\n<p>        if (\n          !down ||\n          e.pointerId !== pointerId\n        )\n          return;<\/p>\n<p>        down = false;<\/p>\n<p>        zoomLayer.style.cursor =\n          \"grab\";<\/p>\n<p>        if (!zoomDragged) {<\/p>\n<p>          closeZoom();<\/p>\n<p>        }<\/p>\n<p>        pointerId = null;<\/p>\n<p>      }\n    );<\/p>\n<p>    zoomLayer.addEventListener(\n      \"pointercancel\",\n      function() {<\/p>\n<p>        down = false;\n        pointerId = null;<\/p>\n<p>        zoomLayer.style.cursor =\n          \"grab\";<\/p>\n<p>      }\n    );<\/p>\n<p>  }<\/p>\n<p>  \/* --------------------------------\n     CLOSE ZOOM\n  -------------------------------- *\/<\/p>\n<p>  function closeZoom() {<\/p>\n<p>    const zoomLayer =\n      document.getElementById(\n        \"ngcZoomLayer\"\n      );<\/p>\n<p>    if (zoomLayer) {<\/p>\n<p>      zoomLayer.remove();<\/p>\n<p>    }<\/p>\n<p>    updateZoomButtons();<\/p>\n<p>  }<\/p>\n<p>  \/* --------------------------------\n     ZOOM BUTTONS\n  -------------------------------- *\/<\/p>\n<p>  zoomInBtn.addEventListener(\n    \"click\",\n    function(e) {<\/p>\n<p>      e.stopPropagation();<\/p>\n<p>      openZoom();<\/p>\n<p>    }\n  );<\/p>\n<p>  zoomOutBtn.addEventListener(\n    \"click\",\n    function(e) {<\/p>\n<p>      e.stopPropagation();<\/p>\n<p>      closeZoom();<\/p>\n<p>    }\n  );<\/p>\n<p>  \/* --------------------------------\n     FULLSCREEN\n  -------------------------------- *\/<\/p>\n<p>  function fullscreenElement() {<\/p>\n<p>    return (\n      document.fullscreenElement ||\n      document.webkitFullscreenElement ||\n      null\n    );<\/p>\n<p>  }<\/p>\n<p>  function requestFullscreen() {<\/p>\n<p>    const fn =\n      container.requestFullscreen ||\n      container.webkitRequestFullscreen ||\n      container.webkitRequestFullScreen;<\/p>\n<p>    if (fn) {<\/p>\n<p>      const result =\n        fn.call(container);<\/p>\n<p>      if (\n        result &&\n        result.catch\n      ) {<\/p>\n<p>        result.catch(function() {});<\/p>\n<p>      }<\/p>\n<p>    }<\/p>\n<p>  }<\/p>\n<p>  function exitFullscreen() {<\/p>\n<p>    const fn =\n      document.exitFullscreen ||\n      document.webkitExitFullscreen;<\/p>\n<p>    if (fn) {<\/p>\n<p>      fn.call(document);<\/p>\n<p>    }<\/p>\n<p>  }<\/p>\n<p>  fullscreenBtn.addEventListener(\n    \"click\",\n    function(e) {<\/p>\n<p>      e.stopPropagation();<\/p>\n<p>      if (fullscreenElement()) {<\/p>\n<p>        exitFullscreen();<\/p>\n<p>      } else {<\/p>\n<p>        \/*\n          Original viewer leaves\n          zoom before fullscreen.\n        *\/<\/p>\n<p>        closeZoom();<\/p>\n<p>        requestFullscreen();<\/p>\n<p>      }<\/p>\n<p>    }\n  );<\/p>\n<p>  function fullscreenChanged() {<\/p>\n<p>    const isFullscreen =\n      fullscreenElement() === container;<\/p>\n<p>    if (isFullscreen) {<\/p>\n<p>      closeZoom();<\/p>\n<p>      \/*\n        Fill fullscreen while retaining\n        the viewer's 4:3 image area.\n      *\/<\/p>\n<p>      container.style.width = \"100%\";\n      container.style.height = \"100%\";\n      container.style.aspectRatio = \"auto\";<\/p>\n<p>    } else {<\/p>\n<p>      container.style.width = \"100%\";\n      container.style.height = \"\";\n      container.style.aspectRatio = \"4 \/ 3\";<\/p>\n<p>    }<\/p>\n<p>  }<\/p>\n<p>  document.addEventListener(\n    \"fullscreenchange\",\n    fullscreenChanged\n  );<\/p>\n<p>  document.addEventListener(\n    \"webkitfullscreenchange\",\n    fullscreenChanged\n  );<\/p>\n<p>  \/* --------------------------------\n     THUMBNAILS\n  -------------------------------- *\/<\/p>\n<p>  function makeThumb(\n    src,\n    clickFunction,\n    label\n  ) {<\/p>\n<p>    const button =\n      document.createElement(\"button\");<\/p>\n<p>    button.type =\n      \"button\";<\/p>\n<p>    button.style.width =\n      \"80px\";<\/p>\n<p>    button.style.height =\n      \"80px\";<\/p>\n<p>    button.style.padding =\n      \"0\";<\/p>\n<p>    button.style.background =\n      \"white\";<\/p>\n<p>    button.style.border =\n      \"1px solid #ddd\";<\/p>\n<p>    button.style.borderRadius =\n      \"8px\";<\/p>\n<p>    button.style.overflow =\n      \"hidden\";<\/p>\n<p>    button.style.cursor =\n      \"pointer\";<\/p>\n<p>    button.style.position =\n      \"relative\";<\/p>\n<p>    const img =\n      document.createElement(\"img\");<\/p>\n<p>    img.src = src;<\/p>\n<p>    img.style.width =\n      \"100%\";<\/p>\n<p>    img.style.height =\n      \"100%\";<\/p>\n<p>    img.style.objectFit =\n      \"contain\";<\/p>\n<p>    button.appendChild(\n      img\n    );<\/p>\n<p>    if (label) {<\/p>\n<p>      const badge =\n        document.createElement(\"span\");<\/p>\n<p>      badge.textContent =\n        label;<\/p>\n<p>      badge.style.position =\n        \"absolute\";<\/p>\n<p>      badge.style.bottom =\n        \"3px\";<\/p>\n<p>      badge.style.left =\n        \"50%\";<\/p>\n<p>      badge.style.transform =\n        \"translateX(-50%)\";<\/p>\n<p>      badge.style.background =\n        \"rgba(0,0,0,.6)\";<\/p>\n<p>      badge.style.color =\n        \"white\";<\/p>\n<p>      badge.style.fontSize =\n        \"9px\";<\/p>\n<p>      badge.style.padding =\n        \"2px 5px\";<\/p>\n<p>      badge.style.borderRadius =\n        \"10px\";<\/p>\n<p>      button.appendChild(\n        badge\n      );<\/p>\n<p>    }<\/p>\n<p>    button.addEventListener(\n      \"click\",\n      clickFunction\n    );<\/p>\n<p>    thumbs.appendChild(\n      button\n    );<\/p>\n<p>  }<\/p>\n<p>  \/* 360 THUMBNAIL *\/<\/p>\n<p>  makeThumb(\n    BASE360 + \"0001.webp\",\n    show360,\n    \"360\u00b0\"\n  );<\/p>\n<p>  \/* STILL THUMBNAILS *\/<\/p>\n<p>  stills.forEach(\n    function(filename) {<\/p>\n<p>      makeThumb(<\/p>\n<p>        BASEIMG + filename,<\/p>\n<p>        function() {<\/p>\n<p>          showStill(filename);<\/p>\n<p>        }<\/p>\n<p>      );<\/p>\n<p>    }\n  );<\/p>\n<p>  updateZoomButtons();<\/p>\n<p>})();\n<\/script>\n<\/div>\n<div>\n<div id=\"ngc-cdu-info\">\n<div class=\"ngc-eyebrow\">\n    Next Generation Cooling\n  <\/div>\n<h1 class=\"ngc-title\">\n    CDU<br \/>\n  <\/h1>\n<div class=\"ngc-subtitle\">\n    Coolant Distribution Unit \u00b7 Datacentre med h\u00f8j t\u00e6thed\n  <\/div>\n<p class=\"ngc-tagline\">\n    Intelligent flowstyring og systemintegration til k\u00f8ling p\u00e5 rackniveau.\n  <\/p>\n<p class=\"ngc-description\">\n   NGC&#8217;s CDU&#8217;er forbinder k\u00f8ling p\u00e5 rackniveau med bygningens infrastruktur gennem et modul\u00e6rt og hydraulisk stabilt design. Hver CDU holder definerede driftsforhold, pr\u00e6cis flowregulering og forudsigelig termisk ydeevne og kan skaleres fra \u00e9t rack til systemer p\u00e5 flere megawatt.\n  <\/p>\n<p>  <!-- CAPACITY PLATFORM --><\/p>\n<section class=\"ngc-section\">\n<h4 class=\"ngc-heading\">\n      Kapacitetsplatform<br \/>\n    <\/h4>\n<div class=\"ngc-chip-row\" id=\"ngc-platform\">\n<p>      <button\n        type=\"button\"\n        class=\"ngc-chip ngc-chip-active\"\n        data-platform=\"active\"><br \/>\n        Aktiv \u00b7 10 til 50 kW<br \/>\n      <\/button><\/p>\n<p>      <button\n        type=\"button\"\n        class=\"ngc-chip\"\n        data-platform=\"passive\"><br \/>\n        Passiv \u00b7 300 til 500 kW<br \/>\n      <\/button><\/p><\/div>\n<\/section>\n<p>  <!-- TECHNICAL DATA --><\/p>\n<section class=\"ngc-section\">\n<h4 class=\"ngc-heading\">\n      Tekniske data<br \/>\n    <\/h4>\n<ul class=\"ngc-specs\">\n<li>\n        <span>K\u00f8lekapacitet<\/span><br \/>\n        <strong id=\"ngc-capacity\">10\u201350 kW<\/strong>\n      <\/li>\n<li>\n        <span>Placering<\/span><br \/>\n        <strong id=\"ngc-deployment\">Rackniveau (aktiv)<\/strong>\n      <\/li>\n<li>\n        <span>Flow i prim\u00e6rkredsen<\/span><br \/>\n        <strong>Op til 15 m\u00b3\/h<\/strong>\n      <\/li>\n<li>\n        <span>Driftstemperatu<\/span><br \/>\n        <strong>15\u201340 \u00b0C<\/strong>\n      <\/li>\n<li>\n        <span>Effektforbrug<\/span><br \/>\n        <strong>50\u2013520 W<\/strong>\n      <\/li>\n<li>\n        <span>Regulering<\/span><br \/>\n        <strong>Flow og tryk, sensorbaseret<\/strong>\n      <\/li>\n<li>\n        <span>Integration<\/span><br \/>\n        <strong>Modul\u00e6r, ingen indregulering<\/strong>\n      <\/li>\n<\/ul>\n<\/section>\n<p>  <!-- DOWNLOAD --><\/p>\n<div class=\"ngc-actions\">\n<p><a\n  class=\"ngc-btn ngc-btn-primary\"\n  href=\"https:\/\/nextgenerationcooling.com\/da\/loesninger\/download-datablade\/\"><br \/>\n  Download datablad<br \/>\n<\/a><\/p><\/div>\n<\/div>\n<style>\n<p>#ngc-cdu-info {\n  font-family: arboria, Poppins, Arial, sans-serif;\n  color: #171717;\n  width: 100%;\n  box-sizing: border-box;\n}<\/p>\n<p>\/* INTRO *\/<\/p>\n<p>.ngc-eyebrow {\n  color: #f25929;\n  font-size: 13px;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: .08em;\n  margin-bottom: 6px;\n}<\/p>\n<p>.ngc-title {\n  font-size: 42px;\n  line-height: 1;\n  font-weight: 700;\n  margin: 0 0 8px 0;\n}<\/p>\n<p>.ngc-subtitle {\n  font-size: 14px;\n  color: #777;\n  margin-bottom: 22px;\n}<\/p>\n<p>.ngc-tagline {\n  font-size: 20px;\n  line-height: 1.4;\n  font-weight: 600;\n  margin: 0 0 14px 0;\n}<\/p>\n<p>.ngc-description {\n  font-size: 15px;\n  line-height: 1.65;\n  color: #555;\n  margin: 0;\n}<\/p>\n<p>\/* SECTIONS *\/<\/p>\n<p>.ngc-section {\n  margin-top: 30px;\n}<\/p>\n<p>.ngc-heading {\n  font-size: 13px;\n  font-weight: 700;\n  margin: 0 0 12px 0;\n  text-transform: uppercase;\n  letter-spacing: .04em;\n}<\/p>\n<p>\/* CHIPS *\/<\/p>\n<p>.ngc-chip-row {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}<\/p>\n<p>.ngc-chip {\n  appearance: none;\n  border: 1px solid #ddd;\n  background: #fff;\n  color: #333;\n  border-radius: 100px;\n  padding: 9px 14px;\n  font-family: inherit;\n  font-size: 13px;\n  cursor: pointer;\n  transition: all .15s ease;\n}<\/p>\n<p>.ngc-chip:hover {\n  border-color: #aaa;\n}<\/p>\n<p>.ngc-chip-active {\n  background: #171717;\n  color: #fff;\n  border-color: #171717;\n}<\/p>\n<p>\/* TECHNICAL DATA *\/<\/p>\n<p>.ngc-specs {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  border-top: 1px solid #e6e6e6;\n}<\/p>\n<p>.ngc-specs li {\n  display: flex;\n  justify-content: space-between;\n  gap: 20px;\n  padding: 11px 0;\n  border-bottom: 1px solid #e6e6e6;\n  font-size: 13px;\n  line-height: 1.35;\n}<\/p>\n<p>.ngc-specs span {\n  color: #777;\n}<\/p>\n<p>.ngc-specs strong {\n  font-weight: 600;\n  text-align: right;\n}<\/p>\n<p>\/* DOWNLOAD BUTTON *\/<\/p>\n<p>.ngc-actions {\n  margin-top: 30px;\n}<\/p>\n<p>.ngc-btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  box-sizing: border-box;\n  min-height: 40px;\n  padding: 11px 18px;\n  border-radius: 100px;\n  font-size: 13px;\n  font-weight: 600;\n  text-decoration: none;\n  transition: all .15s ease;\n}<\/p>\n<p>.ngc-btn-primary {\n  background: #f25929;\n  color: #fff;\n  border: 1px solid #f25929;\n}<\/p>\n<p>.ngc-btn-primary:hover {\n  opacity: .88;\n}<\/p>\n<p>\/* SMALL SCREENS *\/<\/p>\n<p>@media (max-width: 600px) {<\/p>\n<p>  .ngc-title {\n    font-size: 34px;\n  }<\/p>\n<p>  .ngc-tagline {\n    font-size: 18px;\n  }<\/p>\n<p>  .ngc-specs li {\n    gap: 12px;\n  }<\/p>\n<p>  .ngc-btn {\n    width: 100%;\n  }<\/p>\n<p>}<\/p>\n<\/style>\n<p><script>\n(function () {<\/p>\n<p>  const platform =\n    document.getElementById(\"ngc-platform\");<\/p>\n<p>  const capacity =\n    document.getElementById(\"ngc-capacity\");<\/p>\n<p>  const deployment =\n    document.getElementById(\"ngc-deployment\");<\/p>\n<p>  const data = {<\/p>\n<p>    active: {\n      capacity: \"10\u201350 kW\",\n      deployment: \"Rack-level (active)\"\n    },<\/p>\n<p>    passive: {\n      capacity: \"300\u2013500 kW\",\n      deployment: \"System-level (passive)\"\n    }<\/p>\n<p>  };<\/p>\n<p>  platform.addEventListener(\"click\", function(e) {<\/p>\n<p>    const button =\n      e.target.closest(\".ngc-chip\");<\/p>\n<p>    if (!button)\n      return;<\/p>\n<p>    platform\n      .querySelectorAll(\".ngc-chip\")\n      .forEach(function(item) {<\/p>\n<p>        item.classList.remove(\n          \"ngc-chip-active\"\n        );<\/p>\n<p>      });<\/p>\n<p>    button.classList.add(\n      \"ngc-chip-active\"\n    );<\/p>\n<p>    const selected =\n      data[button.dataset.platform];<\/p>\n<p>    if (selected) {<\/p>\n<p>      capacity.textContent =\n        selected.capacity;<\/p>\n<p>      deployment.textContent =\n        selected.deployment;<\/p>\n<p>    }<\/p>\n<p>  });<\/p>\n<p>})();\n<\/script>\n<\/div>\n<h1>\n<h1 class=\"uk-position-relative uk-text-center\" data-id=\"page#3-0-0-0\">L\u00e6s mere om NGC&#8217;s CDU<\/h1>\n<\/h1>\n<p><video src=\"\/wp-content\/uploads\/2026\/03\/NGC-CDU-VO.mp4\" poster=\"\"><\/video><\/p>\n<h1>\n<h2><strong>Ofte stillede sp\u00f8rgsm\u00e5l om vores CDU<\/strong><\/h2>\n<\/h1>\n<div>\n<p><strong>Almindelige sp\u00f8rgsm\u00e5l om NGC&#8217;s CDU&#8217;er, og hvordan du v\u00e6lger den rigtige til dit anl\u00e6g.<\/strong><\/p>\n<\/div>\n<hr>\n<ul>\n<li>\n<h3>Hvad er en Coolant Distribution Unit?<\/h3>\n<div>\n<p>En CDU adskiller bygningens prim\u00e6re k\u00f8lekreds fra kredsen ved serverracket og styrer flow, tryk og temperatur, s\u00e5 k\u00f8lingen er stabil og pr\u00e6cis. Den holder ogs\u00e5 bygningens vandforsyning adskilt fra det rensede vand, der bruges p\u00e5 racksiden. NGC tilbyder en aktiv (10 til 50 kW) og en passiv (300 til 500 kW) platform, der passer til forskellige rackt\u00e6theder. Begge er bygget til enkel integration i nye eller eksisterende datacentre.<\/p>\n<\/div>\n<\/li>\n<li>\n<h3>Hvordan v\u00e6lger man den rigtige CDU til et datacenter?<\/h3>\n<div>\n<p>Det afh\u00e6nger af rackt\u00e6theden, og om du har brug for aktiv pumpning eller et passivt, trykdrevet design. AI- og HPC-racks med h\u00f8j t\u00e6thed har typisk brug for aktive CDU&#8217;er (10 til 50 kW), som giver t\u00e6ttere flowstyring og hurtigere respons p\u00e5 \u00e6ndringer i belastningen, med justering inden for 1 til 2 sekunder. St\u00f8rre installationer kan bruge passive CDU&#8217;er (300 til 500 kW), der er bygget til en h\u00f8jere samlet kapacitet. Anl\u00e6ggets temperaturomr\u00e5de og den tilg\u00e6ngelige plads har ogs\u00e5 betydning for valget.<\/p>\n<\/div>\n<\/li>\n<li>\n<h3>Hvad er forskellen p\u00e5 aktive og passive CDU&#8217;er?<\/h3>\n<div>\n<p>Aktive CDU&#8217;er har indbyggede pumper, der giver pr\u00e6cis flowstyring i mindre skala (10 til 50 kW), mens passive CDU&#8217;er bruger en modulerende ventil til at flytte k\u00f8lev\u00e6sken ved langt st\u00f8rre belastninger (300 til 500 kW). Aktive enheder reagerer t\u00e6ttere og hurtigere p\u00e5 \u00e6ndringer i belastningen, inden for 1 til 2 sekunder, mod 6 til 8 sekunder for passive. Det rigtige valg afh\u00e6nger af rackt\u00e6thed, hvor meget belastningen varierer, og hvilken infrastruktur anl\u00e6gget har.<\/p>\n<\/div>\n<\/li>\n<\/ul>\n<h2>Download datablad<\/h2>\n<div>\n<p>    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/03\/DS_CDU_300-500Kw.jpg\" alt=\"\"><\/p>\n<h3>Se vores udvalg af CDU&#8217;er<\/h3>\n<div>\n<p>Udforsk vores Coolant Distribution Unit (CDU)<br \/>\nHvert datablad giver et detaljeret overblik over hydrauliske parametre, kapacitetsomr\u00e5der, driftstemperaturer, elektriske krav og retningslinjer for integration, s\u00e5 systemet kan designes og vurderes pr\u00e6cist.\n<\/p>\n<\/div>\n<p><a href=\"https:\/\/nextgenerationcooling.com\/da\/loesninger\/download-datablade\/\">Download<\/a><\/p>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"animation\":\"scale-up\",\"animation_delay\":\"200\",\"css\":\".el-section {\\n    border-bottom: 5px solid #F25929;\\n}\",\"image_position\":\"center-center\",\"image_size\":\"cover\",\"padding_bottom\":\"none\",\"style\":\"muted\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"2-3\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<strong><span data-contrast=\\\"auto\\\" xml:lang=\\\"DA-DK\\\" lang=\\\"DA-DK\\\" class=\\\"TextRun SCXW240781916 BCX0\\\"><span class=\\\"NormalTextRun SpellingErrorV2Themed SpellingErrorHighlight SCXW240781916 BCX0\\\">Coolant<\/span><span class=\\\"NormalTextRun SCXW240781916 BCX0\\\">\u00a0Distribution Unit<\/span><\/span><span class=\\\"EOP SCXW240781916 BCX0\\\" data-ccp-props=\\\"{}\\\">\u00a0<\/span><\/strong><br \/>Intelligent flowstyring og systemintegration til k\u00f8ling p\u00e5 rackniveau\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"title_element\":\"h1\",\"title_style\":\"heading-small\"}}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"1-3\"},\"children\":[{\"type\":\"image\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/03\/CDU_Top.png\",\"image_svg_color\":\"emphasis\",\"image_width\":300,\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"text_align\":\"right\",\"text_align_breakpoint\":\"m\",\"text_align_fallback\":\"center\"}}]}],\"props\":{\"layout\":\"2-3,1-3\"}}]},{\"type\":\"section\",\"props\":{\"animation\":\"scale-up\",\"animation_delay\":\"200\",\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"props\":{\"layout\":\"2-3,1-3\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"2-3\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<span data-contrast=\\\"auto\\\" xml:lang=\\\"DA-DK\\\" lang=\\\"DA-DK\\\" class=\\\"TextRun SCXW238159691 BCX0\\\"><span class=\\\"NormalTextRun SpellingErrorV2Themed SCXW238159691 BCX0\\\">Coolant<\/span><span class=\\\"NormalTextRun SCXW238159691 BCX0\\\"><span>\u00a0<\/span>Distribution Unit<\/span><\/span><span class=\\\"EOP SCXW238159691 BCX0\\\" data-ccp-props=\\\"{}\\\">\u00a0<\/span>\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"title_element\":\"h2\",\"title_style\":\"heading-medium\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>NGC's CDU'er forbinder k\u00f8ling p\u00e5 rackniveau med bygningens infrastruktur gennem et modul\u00e6rt og hydraulisk stabilt design. Hver CDU sikrer definerede driftsforhold, pr\u00e6cis flowregulering og forudsigelig termisk ydeevne i hele systemet.<\/p>\n\n\\n\n\n<p>NGC's CDU'er findes i to kapacitetsplatforme:<\/p>\n\n\\n\n\n<ul>\\n\n\n<li>Aktiv CDU p\u00e5 rackniveau til installationer p\u00e5 10 til 50 kW<\/li>\n\n\\n\n\n<li>Passiv CDU p\u00e5 systemniveau til installationer p\u00e5 300 til 500 kW<\/li>\n\n\\n<\/ul>\n\n\\n\n\n<p>Hver platform arbejder inden for klart specificerede hydrauliske parametre, s\u00e5 ydeevnen er stabil og den termiske adf\u00e6rd forudsigelig. Det modul\u00e6re design g\u00f8r det muligt at skalere installationen og samtidig holde de hydrauliske forhold under kontrol.<\/p>\n\n\\n\n\n<p>Udviklet til alt fra installationer med \u00e9t rack til systemer p\u00e5 flere megawatt.<\/p>\n\n\\n\n\n<ul>\\n\n\n<li aria-setsize=\\\"-1\\\" data-leveltext=\\\"\uf0b7\\\" data-font=\\\"Symbol\\\" data-listid=\\\"3\\\" data-list-defn-props=\\\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\\\" data-aria-posinset=\\\"1\\\" data-aria-level=\\\"1\\\">\\n\n\n<p><strong>Defineret hydraulisk styring<br \/><\/strong>Holder tryk og flow stabilt p\u00e5 tv\u00e6rs af tilsluttede racks.<\/p>\n\n\\n<span data-ccp-props=\\\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\\\"> <\/span><\/li>\n\n\\n<\/ul>\n\n\\n\n\n<ul>\\n\n\n<li aria-setsize=\\\"-1\\\" data-leveltext=\\\"\uf0b7\\\" data-font=\\\"Symbol\\\" data-listid=\\\"3\\\" data-list-defn-props=\\\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\\\" data-aria-posinset=\\\"2\\\" data-aria-level=\\\"1\\\">\\n\n\n<p><strong>Uafh\u00e6ngighed p\u00e5 rackniveau<br \/><\/strong>Mindsker den hydrauliske p\u00e5virkning mellem enhederne og bevarer den termiske stabilitet.<\/p>\n\n\\n<\/li>\n\n\\n<\/ul>\n\n\\n\n\n<ul>\\n\n\n<li aria-setsize=\\\"-1\\\" data-leveltext=\\\"\uf0b7\\\" data-font=\\\"Symbol\\\" data-listid=\\\"3\\\" data-list-defn-props=\\\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\\\" data-aria-posinset=\\\"3\\\" data-aria-level=\\\"1\\\">\\n\n\n<p><strong>Modul\u00e6re kapacitetsplatforme<br \/><\/strong>Findes i to platforme: 10 til 50 kW (aktiv) og 300 til 500 kW (passiv).<\/p>\n\n\\n<\/li>\n\n\\n<\/ul>\n\n\\n\n\n<ul>\\n\n\n<li aria-setsize=\\\"-1\\\" data-leveltext=\\\"\uf0b7\\\" data-font=\\\"Symbol\\\" data-listid=\\\"3\\\" data-list-defn-props=\\\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\\\" data-aria-posinset=\\\"4\\\" data-aria-level=\\\"1\\\">\\n\n\n<p><strong>Enkel integration i bygningen<br \/><\/strong>Forbinder k\u00f8ling p\u00e5 rackniveau med prim\u00e6rforsyningen uden kompliceret indregulering.<\/p>\n\n\\n<\/li>\n\n\\n<\/ul>\n\n\\n\n\n<p><span data-ccp-props=\\\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559685&quot;:720,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\\\">\u00a0<\/span><\/p>\n\n\\n\n\n<p><span data-ccp-props=\\\"{}\\\">\u00a0<\/span><\/p>\n\n\",\"margin_bottom\":\"default\",\"margin_top\":\"default\"}}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"1-3\"}}]}]},{\"type\":\"section\",\"props\":{\"animation\":\"scale-up\",\"animation_delay\":\"200\",\"image_position\":\"center-center\",\"style\":\"muted\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"style\":\"card-default\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"Produktoversigt\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"title_element\":\"h2\",\"title_style\":\"heading-small\"}},{\"type\":\"switcher\",\"props\":{\"content_column_breakpoint\":\"m\",\"css\":\"li {\\n    list-style: none;\\n}\\n\\nul {\\n    padding-left: 0px;\\n}\\n\\n.el-content li:before {\\n        content: \\\"\\\";\\n    background-image: url(https:\/\/nextgenerationcooling.com\/wp-content\/uploads\/2025\/11\/check.png);\\n    background-size: 25px 25px;\\n    width: 25px;\\n    height: 25px;\\n    display: inline-block;\\n    \/* background-position: 50% 50%; *\/\\n    vertical-align: sub;\\n    margin-right: 5px;\\n}\\n}\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"nav\":\"tab\",\"nav_align\":\"left\",\"nav_grid_breakpoint\":\"m\",\"nav_grid_width\":\"auto\",\"nav_position\":\"top\",\"show_content\":true,\"show_image\":true,\"show_label\":true,\"show_link\":true,\"show_meta\":true,\"show_thumbnail\":true,\"show_title\":false,\"switcher_animation\":\"slide-right\",\"switcher_height\":true,\"thumbnav_height\":\"75\",\"thumbnav_svg_color\":\"emphasis\",\"thumbnav_width\":\"100\",\"title_align\":\"top\",\"title_element\":\"h3\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\"},\"children\":[{\"type\":\"switcher_item\",\"props\":{\"content\":\"\n\n<ul>\\n\n\n<li>Pr\u00e6cis regulering af flow og tryk<\/li>\n\n\\n\n\n<li>H\u00f8j systemstabilitet ved skiftende belastning<\/li>\n\n\\n\n\n<li>To kapacitetsplatforme: 10 til 50 kW (aktiv) \/ 300 til 500 kW (passiv)<\/li>\n\n\\n\n\n<li>Designet til skalerbare datacenterinstallationer<\/li>\n\n\\n<\/ul>\n\n\",\"title\":\"N\u00f8glepunkter\"}},{\"type\":\"switcher_item\",\"props\":{\"content\":\"\n\n<ul>\\n\n\n<li>P\u00e5lidelig ydeevne inden for et defineret hydraulisk omr\u00e5de<\/li>\n\n\\n    \n\n<li>Underst\u00f8tter pr\u00e6cis dimensionering af flow og styring af returtemperatur<\/li>\n\n\\n    \n\n<li>Kortere reaktionstid ved skiftende belastning<\/li>\n\n\\n    \n\n<li>Skalerbare konfigurationer fra enkelte installationer til systemer p\u00e5 flere MW<\/li>\n\n\\n<\/ul>\n\n\",\"title\":\"V\u00e6rdi\"}},{\"type\":\"switcher_item\",\"props\":{\"content\":\"\n\n<ul>\\n\n\n<li>Aktive eller passive CDU-konfigurationer<\/li>\n\n\\n    \n\n<li>Integreret varmevekslerplatform<\/li>\n\n\\n    \n\n<li>Hydraulisk adskillelse mellem prim\u00e6r- og sekund\u00e6rkreds<\/li>\n\n\\n    \n\n<li>Sensorbaseret overv\u00e5gning af tryk, temperatur og flow<\/li>\n\n\\n<\/ul>\n\n\",\"title\":\"Funktioner\"}},{\"type\":\"switcher_item\",\"props\":{\"content\":\"\n\n<ul>\\n\n\n<li>10 til 50 kW (aktiv CDU), 300 til 500 kW (passiv CDU)<\/li>\n\n\\n    \n\n<li>Flow i prim\u00e6rkredsen: op til 15 m\u00b3\/h<\/li>\n\n\\n    \n\n<li>Driftstemperatur: 15 til 40 \u00b0C<\/li>\n\n\\n    \n\n<li>Effektforbrug: 50 til 520 W (afh\u00e6ngigt af konfiguration)<\/li>\n\n\\n<\/ul>\n\n\",\"title\":\"Tekniske data\"}}]}]}]}]},{\"type\":\"section\",\"props\":{\"image_position\":\"center-center\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"props\":{\"layout\":\"1-2,1-2\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"1-2\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"\n\n<div id=\\\"test360\\\" style=\\\"\\n  width:100%;\\n  aspect-ratio:4\/3;\\n  position:relative;\\n  overflow:hidden;\\n  background:white;\\n  cursor:grab;\\n  touch-action:none;\\n\\\">\\n\\n  <!-- FULLSCREEN BUTTON -->\\n  <button id=\\\"fullscreenBtn\\\" type=\\\"button\\\" aria-label=\\\"Fullscreen\\\" style=\\\"\\n    position:absolute;\\n    top:16px;\\n    left:16px;\\n    z-index:30;\\n    width:38px;\\n    height:38px;\\n    border:0;\\n    border-radius:50%;\\n    background:rgba(255,255,255,.92);\\n    color:#222;\\n    cursor:pointer;\\n    display:flex;\\n    align-items:center;\\n    justify-content:center;\\n    box-shadow:0 1px 3px rgba(0,0,0,.12);\\n    padding:0;\\n  \\\">\\n    <svg width=\\\"18\\\" height=\\\"18\\\" viewBox=\\\"0 0 24 24\\\"\\n         fill=\\\"none\\\" stroke=\\\"currentColor\\\"\\n         stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\"\\n         stroke-linejoin=\\\"round\\\">\\n      <path d=\\\"M8 3H5a2 2 0 0 0-2 2v3\\\"\/>\\n      <path d=\\\"M16 3h3a2 2 0 0 1 2 2v3\\\"\/>\\n      <path d=\\\"M8 21H5a2 2 0 0 1-2-2v-3\\\"\/>\\n      <path d=\\\"M16 21h3a2 2 0 0 0 2-2v-3\\\"\/>\\n    <\/svg>\\n  <\/button>\\n\\n\\n  <!-- ZOOM BUTTONS -->\\n  <\/p>\n<div id=\\\"zoomControls\\\" style=\\\"\\n    position:absolute;\\n    top:16px;\\n    right:16px;\\n    z-index:30;\\n    display:flex;\\n    flex-direction:column;\\n    gap:8px;\\n  \\\">\\n\\n    <button id=\\\"zoomInBtn\\\" type=\\\"button\\\" aria-label=\\\"Zoom in\\\" style=\\\"\\n      width:38px;\\n      height:38px;\\n      border:0;\\n      border-radius:50%;\\n      background:rgba(255,255,255,.92);\\n      color:#222;\\n      font-size:20px;\\n      line-height:1;\\n      cursor:pointer;\\n      display:flex;\\n      align-items:center;\\n      justify-content:center;\\n      box-shadow:0 1px 3px rgba(0,0,0,.12);\\n    \\\">+<\/button>\\n\\n    <button id=\\\"zoomOutBtn\\\" type=\\\"button\\\" aria-label=\\\"Zoom out\\\" disabled style=\\\"\\n      width:38px;\\n      height:38px;\\n      border:0;\\n      border-radius:50%;\\n      background:rgba(255,255,255,.92);\\n      color:#222;\\n      font-size:20px;\\n      line-height:1;\\n      cursor:not-allowed;\\n      display:flex;\\n      align-items:center;\\n      justify-content:center;\\n      box-shadow:0 1px 3px rgba(0,0,0,.12);\\n      opacity:.4;\\n    \\\">\u2212<\/button>\\n\\n  <\/div>\n<p>\\n\\n<\/p><\/div>\n<p>\\n\\n\\n<\/p>\n<div id=\\\"thumbs\\\" style=\\\"\\n  display:flex;\\n  justify-content:center;\\n  gap:10px;\\n  margin-top:12px;\\n\\\">\\n<\/div>\n<p>\\n\\n\\n<script>\\n(function () {\\n\\n  const container = document.getElementById(\\\"test360\\\");\\n  const thumbs = document.getElementById(\\\"thumbs\\\");\\n\\n  const zoomControls = document.getElementById(\\\"zoomControls\\\");\\n  const zoomInBtn = document.getElementById(\\\"zoomInBtn\\\");\\n  const zoomOutBtn = document.getElementById(\\\"zoomOutBtn\\\");\\n  const fullscreenBtn = document.getElementById(\\\"fullscreenBtn\\\");\\n\\n  const BASE360 = \\\"https:\/\/3de.dk\/ngc\/360-web\/\\\";\\n  const BASEIMG = \\\"https:\/\/3de.dk\/ngc\/Images-web\/\\\";\\n  const COUNT = 24;\\n\\n  const stills = [\\n    \\\"CDU_render_02.webp\\\",\\n    \\\"CDU_render_03.webp\\\",\\n    \\\"CDU_render_NoBox_02.webp\\\",\\n    \\\"CDU_render_NoBox_03.webp\\\"\\n  ];\\n\\n  let images = [];\\n  let current = 0;\\n  let startX = null;\\n  let startY = null;\\n  let lastX = null;\\n  let accumulator = 0;\\n  let mode360 = true;\\n  let currentStill = null;\\n  let dragged = false;\\n\\n\\n  \/* --------------------------------\\n     KEEP CONTROLS ON TOP\\n  -------------------------------- *\/\\n\\n  function restoreControls() {\\n\\n    container.appendChild(fullscreenBtn);\\n    container.appendChild(zoomControls);\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     ZOOM BUTTON STATE\\n  -------------------------------- *\/\\n\\n  function updateZoomButtons() {\\n\\n    const zoomed =\\n      !!document.getElementById(\\\"ngcZoomLayer\\\");\\n\\n    zoomInBtn.disabled = zoomed;\\n    zoomOutBtn.disabled = !zoomed;\\n\\n    zoomInBtn.style.opacity =\\n      zoomed ? \\\".4\\\" : \\\"1\\\";\\n\\n    zoomOutBtn.style.opacity =\\n      zoomed ? \\\"1\\\" : \\\".4\\\";\\n\\n    zoomInBtn.style.cursor =\\n      zoomed ? \\\"not-allowed\\\" : \\\"pointer\\\";\\n\\n    zoomOutBtn.style.cursor =\\n      zoomed ? \\\"pointer\\\" : \\\"not-allowed\\\";\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     360 IMAGES\\n  -------------------------------- *\/\\n\\n  for (let i = 0; i < COUNT; i++) {\\n\\n    const img = document.createElement(\\\"img\\\");\\n\\n    img.src =\\n      BASE360 +\\n      String(i + 1).padStart(4, \\\"0\\\") +\\n      \\\".webp\\\";\\n\\n    img.style.position = \\\"absolute\\\";\\n    img.style.inset = \\\"0\\\";\\n    img.style.width = \\\"100%\\\";\\n    img.style.height = \\\"100%\\\";\\n    img.style.objectFit = \\\"contain\\\";\\n    img.style.display = i === 0 ? \\\"block\\\" : \\\"none\\\";\\n    img.style.pointerEvents = \\\"none\\\";\\n\\n    img.draggable = false;\\n\\n    container.appendChild(img);\\n    images.push(img);\\n\\n  }\\n\\n\\n  function showFrame(index) {\\n\\n    images[current].style.display = \\\"none\\\";\\n\\n    current =\\n      ((index % COUNT) + COUNT) % COUNT;\\n\\n    images[current].style.display = \\\"block\\\";\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     SHOW 360\\n  -------------------------------- *\/\\n\\n  function show360() {\\n\\n    closeZoom();\\n\\n    startX = null;\\n    startY = null;\\n    lastX = null;\\n    accumulator = 0;\\n    dragged = false;\\n\\n    mode360 = true;\\n    currentStill = null;\\n\\n    container.innerHTML = \\\"\\\";\\n\\n    images.forEach(function(img, i) {\\n\\n      img.style.display =\\n        i === current ? \\\"block\\\" : \\\"none\\\";\\n\\n      container.appendChild(img);\\n\\n    });\\n\\n    restoreControls();\\n\\n    container.style.cursor = \\\"grab\\\";\\n\\n    updateZoomButtons();\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     SHOW STILL\\n  -------------------------------- *\/\\n\\n  function showStill(filename) {\\n\\n    closeZoom();\\n\\n    startX = null;\\n    startY = null;\\n    lastX = null;\\n    accumulator = 0;\\n    dragged = false;\\n\\n    mode360 = false;\\n    currentStill = filename;\\n\\n    container.innerHTML = \\\"\\\";\\n\\n    const img = document.createElement(\\\"img\\\");\\n\\n    img.src = BASEIMG + filename;\\n\\n    img.style.position = \\\"absolute\\\";\\n    img.style.inset = \\\"0\\\";\\n    img.style.width = \\\"100%\\\";\\n    img.style.height = \\\"100%\\\";\\n    img.style.objectFit = \\\"contain\\\";\\n    img.style.pointerEvents = \\\"none\\\";\\n\\n    img.draggable = false;\\n\\n    container.appendChild(img);\\n\\n    restoreControls();\\n\\n    container.style.cursor = \\\"zoom-in\\\";\\n\\n    updateZoomButtons();\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     CURRENT IMAGE\\n  -------------------------------- *\/\\n\\n  function currentImageSource() {\\n\\n    if (mode360) {\\n\\n      return (\\n        BASE360 +\\n        String(current + 1).padStart(4, \\\"0\\\") +\\n        \\\".webp\\\"\\n      );\\n\\n    }\\n\\n    return BASEIMG + currentStill;\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     NORMAL VIEWER DRAG\\n  -------------------------------- *\/\\n\\n  container.addEventListener(\\\"pointerdown\\\", function(e) {\\n\\n    if (\\n      e.target === zoomInBtn ||\\n      e.target === zoomOutBtn ||\\n      e.target === fullscreenBtn ||\\n      fullscreenBtn.contains(e.target)\\n    ) {\\n      return;\\n    }\\n\\n\\n    if (document.getElementById(\\\"ngcZoomLayer\\\"))\\n      return;\\n\\n\\n    startX = e.clientX;\\n    startY = e.clientY;\\n    lastX = e.clientX;\\n\\n    accumulator = 0;\\n    dragged = false;\\n\\n\\n    try {\\n\\n      container.setPointerCapture(\\n        e.pointerId\\n      );\\n\\n    } catch(err) {}\\n\\n\\n    if (mode360) {\\n\\n      container.style.cursor =\\n        \\\"grabbing\\\";\\n\\n    }\\n\\n  });\\n\\n\\n  container.addEventListener(\\\"pointermove\\\", function(e) {\\n\\n    if (startX === null)\\n      return;\\n\\n\\n    const totalX =\\n      e.clientX - startX;\\n\\n    const totalY =\\n      e.clientY - startY;\\n\\n\\n    if (\\n      Math.abs(totalX) > 5 ||\\n      Math.abs(totalY) > 5\\n    ) {\\n\\n      dragged = true;\\n\\n    }\\n\\n\\n    if (!mode360)\\n      return;\\n\\n\\n    const dx =\\n      e.clientX - lastX;\\n\\n    lastX =\\n      e.clientX;\\n\\n    accumulator += dx;\\n\\n    const step = 18;\\n\\n\\n    if (\\n      Math.abs(accumulator) >= step\\n    ) {\\n\\n      const frames =\\n        Math.trunc(\\n          accumulator \/ step\\n        );\\n\\n      showFrame(\\n        current + frames\\n      );\\n\\n      accumulator -=\\n        frames * step;\\n\\n    }\\n\\n  });\\n\\n\\n  container.addEventListener(\\\"pointerup\\\", function(e) {\\n\\n    if (startX === null)\\n      return;\\n\\n\\n    const shouldZoom =\\n      !dragged;\\n\\n\\n    startX = null;\\n    startY = null;\\n    lastX = null;\\n    accumulator = 0;\\n    dragged = false;\\n\\n\\n    container.style.cursor =\\n      mode360\\n      ? \\\"grab\\\"\\n      : \\\"zoom-in\\\";\\n\\n\\n    if (shouldZoom) {\\n\\n      setTimeout(function() {\\n\\n        openZoom();\\n\\n      }, 0);\\n\\n    }\\n\\n  });\\n\\n\\n  container.addEventListener(\\\"pointercancel\\\", function() {\\n\\n    startX = null;\\n    startY = null;\\n    lastX = null;\\n    accumulator = 0;\\n    dragged = false;\\n\\n    container.style.cursor =\\n      mode360\\n      ? \\\"grab\\\"\\n      : \\\"zoom-in\\\";\\n\\n  });\\n\\n\\n  \/* --------------------------------\\n     ZOOM\\n  -------------------------------- *\/\\n\\n  function openZoom() {\\n\\n    if (\\n      document.getElementById(\\n        \\\"ngcZoomLayer\\\"\\n      )\\n    )\\n      return;\\n\\n\\n    const src =\\n      currentImageSource();\\n\\n\\n    if (!src)\\n      return;\\n\\n\\n    const zoomLayer =\\n      document.createElement(\\\"div\\\");\\n\\n\\n    zoomLayer.id =\\n      \\\"ngcZoomLayer\\\";\\n\\n    zoomLayer.style.position =\\n      \\\"absolute\\\";\\n\\n    zoomLayer.style.inset =\\n      \\\"0\\\";\\n\\n    zoomLayer.style.overflow =\\n      \\\"hidden\\\";\\n\\n    zoomLayer.style.background =\\n      \\\"white\\\";\\n\\n    zoomLayer.style.zIndex =\\n      \\\"10\\\";\\n\\n    zoomLayer.style.cursor =\\n      \\\"grab\\\";\\n\\n    zoomLayer.style.touchAction =\\n      \\\"none\\\";\\n\\n\\n    const zoomImage =\\n      document.createElement(\\\"img\\\");\\n\\n\\n    zoomImage.src =\\n      src;\\n\\n    zoomImage.style.position =\\n      \\\"absolute\\\";\\n\\n    zoomImage.style.inset =\\n      \\\"0\\\";\\n\\n    zoomImage.style.width =\\n      \\\"100%\\\";\\n\\n    zoomImage.style.height =\\n      \\\"100%\\\";\\n\\n    zoomImage.style.objectFit =\\n      \\\"contain\\\";\\n\\n    zoomImage.style.userSelect =\\n      \\\"none\\\";\\n\\n    zoomImage.style.pointerEvents =\\n      \\\"none\\\";\\n\\n    zoomImage.style.transformOrigin =\\n      \\\"center center\\\";\\n\\n    zoomImage.draggable =\\n      false;\\n\\n\\n    zoomLayer.appendChild(\\n      zoomImage\\n    );\\n\\n    container.appendChild(\\n      zoomLayer\\n    );\\n\\n    restoreControls();\\n\\n\\n    let panX = 0;\\n    let panY = 0;\\n\\n    let down = false;\\n    let pointerId = null;\\n\\n    let zoomStartX = 0;\\n    let zoomStartY = 0;\\n\\n    let zoomLastX = 0;\\n    let zoomLastY = 0;\\n\\n    let zoomDragged = false;\\n\\n\\n    function updateZoom() {\\n\\n      zoomImage.style.transform =\\n        \\\"translate(\\\" +\\n        panX +\\n        \\\"px,\\\" +\\n        panY +\\n        \\\"px) scale(2.2)\\\";\\n\\n    }\\n\\n\\n    updateZoom();\\n    updateZoomButtons();\\n\\n\\n    zoomLayer.addEventListener(\\n      \\\"pointerdown\\\",\\n      function(e) {\\n\\n        down = true;\\n        pointerId = e.pointerId;\\n\\n        zoomStartX = e.clientX;\\n        zoomStartY = e.clientY;\\n\\n        zoomLastX = e.clientX;\\n        zoomLastY = e.clientY;\\n\\n        zoomDragged = false;\\n\\n        zoomLayer.style.cursor =\\n          \\\"grabbing\\\";\\n\\n\\n        try {\\n\\n          zoomLayer.setPointerCapture(\\n            e.pointerId\\n          );\\n\\n        } catch(err) {}\\n\\n      }\\n    );\\n\\n\\n    zoomLayer.addEventListener(\\n      \\\"pointermove\\\",\\n      function(e) {\\n\\n        if (\\n          !down ||\\n          e.pointerId !== pointerId\\n        )\\n          return;\\n\\n\\n        const totalX =\\n          e.clientX - zoomStartX;\\n\\n        const totalY =\\n          e.clientY - zoomStartY;\\n\\n\\n        if (\\n          Math.abs(totalX) > 5 ||\\n          Math.abs(totalY) > 5\\n        ) {\\n\\n          zoomDragged = true;\\n\\n        }\\n\\n\\n        const dx =\\n          e.clientX - zoomLastX;\\n\\n        const dy =\\n          e.clientY - zoomLastY;\\n\\n\\n        zoomLastX =\\n          e.clientX;\\n\\n        zoomLastY =\\n          e.clientY;\\n\\n\\n        if (zoomDragged) {\\n\\n          panX += dx;\\n          panY += dy;\\n\\n          updateZoom();\\n\\n        }\\n\\n      }\\n    );\\n\\n\\n    zoomLayer.addEventListener(\\n      \\\"pointerup\\\",\\n      function(e) {\\n\\n        if (\\n          !down ||\\n          e.pointerId !== pointerId\\n        )\\n          return;\\n\\n\\n        down = false;\\n\\n        zoomLayer.style.cursor =\\n          \\\"grab\\\";\\n\\n\\n        if (!zoomDragged) {\\n\\n          closeZoom();\\n\\n        }\\n\\n\\n        pointerId = null;\\n\\n      }\\n    );\\n\\n\\n    zoomLayer.addEventListener(\\n      \\\"pointercancel\\\",\\n      function() {\\n\\n        down = false;\\n        pointerId = null;\\n\\n        zoomLayer.style.cursor =\\n          \\\"grab\\\";\\n\\n      }\\n    );\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     CLOSE ZOOM\\n  -------------------------------- *\/\\n\\n  function closeZoom() {\\n\\n    const zoomLayer =\\n      document.getElementById(\\n        \\\"ngcZoomLayer\\\"\\n      );\\n\\n\\n    if (zoomLayer) {\\n\\n      zoomLayer.remove();\\n\\n    }\\n\\n\\n    updateZoomButtons();\\n\\n  }\\n\\n\\n  \/* --------------------------------\\n     ZOOM BUTTONS\\n  -------------------------------- *\/\\n\\n  zoomInBtn.addEventListener(\\n    \\\"click\\\",\\n    function(e) {\\n\\n      e.stopPropagation();\\n\\n      openZoom();\\n\\n    }\\n  );\\n\\n\\n  zoomOutBtn.addEventListener(\\n    \\\"click\\\",\\n    function(e) {\\n\\n      e.stopPropagation();\\n\\n      closeZoom();\\n\\n    }\\n  );\\n\\n\\n  \/* --------------------------------\\n     FULLSCREEN\\n  -------------------------------- *\/\\n\\n  function fullscreenElement() {\\n\\n    return (\\n      document.fullscreenElement ||\\n      document.webkitFullscreenElement ||\\n      null\\n    );\\n\\n  }\\n\\n\\n  function requestFullscreen() {\\n\\n    const fn =\\n      container.requestFullscreen ||\\n      container.webkitRequestFullscreen ||\\n      container.webkitRequestFullScreen;\\n\\n    if (fn) {\\n\\n      const result =\\n        fn.call(container);\\n\\n      if (\\n        result &&\\n        result.catch\\n      ) {\\n\\n        result.catch(function() {});\\n\\n      }\\n\\n    }\\n\\n  }\\n\\n\\n  function exitFullscreen() {\\n\\n    const fn =\\n      document.exitFullscreen ||\\n      document.webkitExitFullscreen;\\n\\n    if (fn) {\\n\\n      fn.call(document);\\n\\n    }\\n\\n  }\\n\\n\\n  fullscreenBtn.addEventListener(\\n    \\\"click\\\",\\n    function(e) {\\n\\n      e.stopPropagation();\\n\\n      if (fullscreenElement()) {\\n\\n        exitFullscreen();\\n\\n      } else {\\n\\n        \/*\\n          Original viewer leaves\\n          zoom before fullscreen.\\n        *\/\\n\\n        closeZoom();\\n\\n        requestFullscreen();\\n\\n      }\\n\\n    }\\n  );\\n\\n\\n  function fullscreenChanged() {\\n\\n    const isFullscreen =\\n      fullscreenElement() === container;\\n\\n\\n    if (isFullscreen) {\\n\\n      closeZoom();\\n\\n      \/*\\n        Fill fullscreen while retaining\\n        the viewer's 4:3 image area.\\n      *\/\\n\\n      container.style.width = \\\"100%\\\";\\n      container.style.height = \\\"100%\\\";\\n      container.style.aspectRatio = \\\"auto\\\";\\n\\n    } else {\\n\\n      container.style.width = \\\"100%\\\";\\n      container.style.height = \\\"\\\";\\n      container.style.aspectRatio = \\\"4 \/ 3\\\";\\n\\n    }\\n\\n  }\\n\\n\\n  document.addEventListener(\\n    \\\"fullscreenchange\\\",\\n    fullscreenChanged\\n  );\\n\\n\\n  document.addEventListener(\\n    \\\"webkitfullscreenchange\\\",\\n    fullscreenChanged\\n  );\\n\\n\\n  \/* --------------------------------\\n     THUMBNAILS\\n  -------------------------------- *\/\\n\\n  function makeThumb(\\n    src,\\n    clickFunction,\\n    label\\n  ) {\\n\\n    const button =\\n      document.createElement(\\\"button\\\");\\n\\n\\n    button.type =\\n      \\\"button\\\";\\n\\n    button.style.width =\\n      \\\"80px\\\";\\n\\n    button.style.height =\\n      \\\"80px\\\";\\n\\n    button.style.padding =\\n      \\\"0\\\";\\n\\n    button.style.background =\\n      \\\"white\\\";\\n\\n    button.style.border =\\n      \\\"1px solid #ddd\\\";\\n\\n    button.style.borderRadius =\\n      \\\"8px\\\";\\n\\n    button.style.overflow =\\n      \\\"hidden\\\";\\n\\n    button.style.cursor =\\n      \\\"pointer\\\";\\n\\n    button.style.position =\\n      \\\"relative\\\";\\n\\n\\n    const img =\\n      document.createElement(\\\"img\\\");\\n\\n\\n    img.src = src;\\n\\n    img.style.width =\\n      \\\"100%\\\";\\n\\n    img.style.height =\\n      \\\"100%\\\";\\n\\n    img.style.objectFit =\\n      \\\"contain\\\";\\n\\n\\n    button.appendChild(\\n      img\\n    );\\n\\n\\n    if (label) {\\n\\n      const badge =\\n        document.createElement(\\\"span\\\");\\n\\n\\n      badge.textContent =\\n        label;\\n\\n      badge.style.position =\\n        \\\"absolute\\\";\\n\\n      badge.style.bottom =\\n        \\\"3px\\\";\\n\\n      badge.style.left =\\n        \\\"50%\\\";\\n\\n      badge.style.transform =\\n        \\\"translateX(-50%)\\\";\\n\\n      badge.style.background =\\n        \\\"rgba(0,0,0,.6)\\\";\\n\\n      badge.style.color =\\n        \\\"white\\\";\\n\\n      badge.style.fontSize =\\n        \\\"9px\\\";\\n\\n      badge.style.padding =\\n        \\\"2px 5px\\\";\\n\\n      badge.style.borderRadius =\\n        \\\"10px\\\";\\n\\n\\n      button.appendChild(\\n        badge\\n      );\\n\\n    }\\n\\n\\n    button.addEventListener(\\n      \\\"click\\\",\\n      clickFunction\\n    );\\n\\n\\n    thumbs.appendChild(\\n      button\\n    );\\n\\n  }\\n\\n\\n  \/* 360 THUMBNAIL *\/\\n\\n  makeThumb(\\n    BASE360 + \\\"0001.webp\\\",\\n    show360,\\n    \\\"360\u00b0\\\"\\n  );\\n\\n\\n  \/* STILL THUMBNAILS *\/\\n\\n  stills.forEach(\\n    function(filename) {\\n\\n      makeThumb(\\n\\n        BASEIMG + filename,\\n\\n        function() {\\n\\n          showStill(filename);\\n\\n        }\\n\\n      );\\n\\n    }\\n  );\\n\\n\\n  updateZoomButtons();\\n\\n})();\\n<\/script>&#8220;}}]},{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;,&#8221;width_medium&#8221;:&#8221;1-2&#8243;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;html&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<div id=\\\"ngc-cdu-info\\\">\\n\\n  <\/p>\n<div class=\\\"ngc-eyebrow\\\">\\n    Next Generation Cooling\\n  <\/div>\n<p>\\n\\n  <\/p>\n<h1 class=\\\"ngc-title\\\">\\n    CDU\\n  <\/h1>\n<p>\\n\\n  <\/p>\n<div class=\\\"ngc-subtitle\\\">\\n    Coolant Distribution Unit \u00b7 Datacentre med h\u00f8j t\u00e6thed\\n  <\/div>\n<p>\\n\\n  <\/p>\n<p class=\\\"ngc-tagline\\\">\\n    Intelligent flowstyring og systemintegration til k\u00f8ling p\u00e5 rackniveau.\\n  <\/p>\n<p>\\n\\n  <\/p>\n<p class=\\\"ngc-description\\\">\\n   NGC&#8217;s CDU&#8217;er forbinder k\u00f8ling p\u00e5 rackniveau med bygningens infrastruktur gennem et modul\u00e6rt og hydraulisk stabilt design. Hver CDU holder definerede driftsforhold, pr\u00e6cis flowregulering og forudsigelig termisk ydeevne og kan skaleres fra \u00e9t rack til systemer p\u00e5 flere megawatt.\\n  <\/p>\n<p>\\n\\n\\n  <!-- CAPACITY PLATFORM -->\\n\\n  <\/p>\n<section class=\\\"ngc-section\\\">\\n\\n    <\/p>\n<h4 class=\\\"ngc-heading\\\">\\n      Kapacitetsplatform\\n    <\/h4>\n<p>\\n\\n    <\/p>\n<div class=\\\"ngc-chip-row\\\" id=\\\"ngc-platform\\\">\\n\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"ngc-chip ngc-chip-active\\\"\\n        data-platform=\\\"active\\\">\\n        Aktiv \u00b7 10 til 50 kW\\n      <\/button>\\n\\n      <button\\n        type=\\\"button\\\"\\n        class=\\\"ngc-chip\\\"\\n        data-platform=\\\"passive\\\">\\n        Passiv \u00b7 300 til 500 kW\\n      <\/button>\\n\\n    <\/div>\n<p>\\n\\n  <\/section>\n<p>\\n\\n\\n  <!-- TECHNICAL DATA -->\\n\\n  <\/p>\n<section class=\\\"ngc-section\\\">\\n\\n    <\/p>\n<h4 class=\\\"ngc-heading\\\">\\n      Tekniske data\\n    <\/h4>\n<p>\\n\\n    <\/p>\n<ul class=\\\"ngc-specs\\\">\\n\\n      <\/p>\n<li>\\n        <span>K\u00f8lekapacitet<\/span>\\n        <strong id=\\\"ngc-capacity\\\">10\u201350 kW<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Placering<\/span>\\n        <strong id=\\\"ngc-deployment\\\">Rackniveau (aktiv)<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Flow i prim\u00e6rkredsen<\/span>\\n        <strong>Op til 15 m\u00b3\/h<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Driftstemperatu<\/span>\\n        <strong>15\u201340 \u00b0C<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Effektforbrug<\/span>\\n        <strong>50\u2013520 W<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Regulering<\/span>\\n        <strong>Flow og tryk, sensorbaseret<\/strong>\\n      <\/li>\n<p>\\n\\n      <\/p>\n<li>\\n        <span>Integration<\/span>\\n        <strong>Modul\u00e6r, ingen indregulering<\/strong>\\n      <\/li>\n<p>\\n\\n    <\/ul>\n<p>\\n\\n  <\/section>\n<p>\\n\\n\\n  <!-- DOWNLOAD -->\\n\\n  <\/p>\n<div class=\\\"ngc-actions\\\">\\n\\n<a\\n  class=\\\"ngc-btn ngc-btn-primary\\\"\\n  href=\\\"https:\/\/nextgenerationcooling.com\/da\/loesninger\/download-datablade\/\\\">\\n  Download datablad\\n<\/a>\\n\\n  <\/div>\n<p>\\n\\n<\/p><\/div>\n<p>\\n\\n\\n<\/p>\n<style>\\n\\n#ngc-cdu-info {\\n  font-family: arboria, Poppins, Arial, sans-serif;\\n  color: #171717;\\n  width: 100%;\\n  box-sizing: border-box;\\n}\\n\\n\\n\/* INTRO *\/\\n\\n.ngc-eyebrow {\\n  color: #f25929;\\n  font-size: 13px;\\n  font-weight: 700;\\n  text-transform: uppercase;\\n  letter-spacing: .08em;\\n  margin-bottom: 6px;\\n}\\n\\n.ngc-title {\\n  font-size: 42px;\\n  line-height: 1;\\n  font-weight: 700;\\n  margin: 0 0 8px 0;\\n}\\n\\n.ngc-subtitle {\\n  font-size: 14px;\\n  color: #777;\\n  margin-bottom: 22px;\\n}\\n\\n.ngc-tagline {\\n  font-size: 20px;\\n  line-height: 1.4;\\n  font-weight: 600;\\n  margin: 0 0 14px 0;\\n}\\n\\n.ngc-description {\\n  font-size: 15px;\\n  line-height: 1.65;\\n  color: #555;\\n  margin: 0;\\n}\\n\\n\\n\/* SECTIONS *\/\\n\\n.ngc-section {\\n  margin-top: 30px;\\n}\\n\\n.ngc-heading {\\n  font-size: 13px;\\n  font-weight: 700;\\n  margin: 0 0 12px 0;\\n  text-transform: uppercase;\\n  letter-spacing: .04em;\\n}\\n\\n\\n\/* CHIPS *\/\\n\\n.ngc-chip-row {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 8px;\\n}\\n\\n.ngc-chip {\\n  appearance: none;\\n  border: 1px solid #ddd;\\n  background: #fff;\\n  color: #333;\\n  border-radius: 100px;\\n  padding: 9px 14px;\\n  font-family: inherit;\\n  font-size: 13px;\\n  cursor: pointer;\\n  transition: all .15s ease;\\n}\\n\\n.ngc-chip:hover {\\n  border-color: #aaa;\\n}\\n\\n.ngc-chip-active {\\n  background: #171717;\\n  color: #fff;\\n  border-color: #171717;\\n}\\n\\n\\n\/* TECHNICAL DATA *\/\\n\\n.ngc-specs {\\n  list-style: none;\\n  margin: 0;\\n  padding: 0;\\n  border-top: 1px solid #e6e6e6;\\n}\\n\\n.ngc-specs li {\\n  display: flex;\\n  justify-content: space-between;\\n  gap: 20px;\\n  padding: 11px 0;\\n  border-bottom: 1px solid #e6e6e6;\\n  font-size: 13px;\\n  line-height: 1.35;\\n}\\n\\n.ngc-specs span {\\n  color: #777;\\n}\\n\\n.ngc-specs strong {\\n  font-weight: 600;\\n  text-align: right;\\n}\\n\\n\\n\/* DOWNLOAD BUTTON *\/\\n\\n.ngc-actions {\\n  margin-top: 30px;\\n}\\n\\n.ngc-btn {\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  box-sizing: border-box;\\n  min-height: 40px;\\n  padding: 11px 18px;\\n  border-radius: 100px;\\n  font-size: 13px;\\n  font-weight: 600;\\n  text-decoration: none;\\n  transition: all .15s ease;\\n}\\n\\n.ngc-btn-primary {\\n  background: #f25929;\\n  color: #fff;\\n  border: 1px solid #f25929;\\n}\\n\\n.ngc-btn-primary:hover {\\n  opacity: .88;\\n}\\n\\n\\n\/* SMALL SCREENS *\/\\n\\n@media (max-width: 600px) {\\n\\n  .ngc-title {\\n    font-size: 34px;\\n  }\\n\\n  .ngc-tagline {\\n    font-size: 18px;\\n  }\\n\\n  .ngc-specs li {\\n    gap: 12px;\\n  }\\n\\n  .ngc-btn {\\n    width: 100%;\\n  }\\n\\n}\\n\\n<\/style>\n<p>\\n\\n\\n<script>\\n(function () {\\n\\n  const platform =\\n    document.getElementById(\\\"ngc-platform\\\");\\n\\n  const capacity =\\n    document.getElementById(\\\"ngc-capacity\\\");\\n\\n  const deployment =\\n    document.getElementById(\\\"ngc-deployment\\\");\\n\\n\\n  const data = {\\n\\n    active: {\\n      capacity: \\\"10\u201350 kW\\\",\\n      deployment: \\\"Rack-level (active)\\\"\\n    },\\n\\n    passive: {\\n      capacity: \\\"300\u2013500 kW\\\",\\n      deployment: \\\"System-level (passive)\\\"\\n    }\\n\\n  };\\n\\n\\n  platform.addEventListener(\\\"click\\\", function(e) {\\n\\n    const button =\\n      e.target.closest(\\\".ngc-chip\\\");\\n\\n    if (!button)\\n      return;\\n\\n\\n    platform\\n      .querySelectorAll(\\\".ngc-chip\\\")\\n      .forEach(function(item) {\\n\\n        item.classList.remove(\\n          \\\"ngc-chip-active\\\"\\n        );\\n\\n      });\\n\\n\\n    button.classList.add(\\n      \\\"ngc-chip-active\\\"\\n    );\\n\\n\\n    const selected =\\n      data[button.dataset.platform];\\n\\n\\n    if (selected) {\\n\\n      capacity.textContent =\\n        selected.capacity;\\n\\n      deployment.textContent =\\n        selected.deployment;\\n\\n    }\\n\\n  });\\n\\n})();\\n<\/script>&#8220;}}]}]}]},{&#8220;type&#8221;:&#8221;section&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;style&#8221;:&#8221;default&#8221;,&#8221;title_breakpoint&#8221;:&#8221;xl&#8221;,&#8221;title_position&#8221;:&#8221;top-left&#8221;,&#8221;title_rotation&#8221;:&#8221;left&#8221;,&#8221;vertical_align&#8221;:&#8221;middle&#8221;,&#8221;width&#8221;:&#8221;default&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;headline&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<h1 class=\\\"uk-position-relative uk-text-center\\\" data-id=\\\"page#3-0-0-0\\\">L\u00e6s mere om NGC&#8217;s CDU<\/h1>\n<p>&#8220;,&#8221;image_align&#8221;:&#8221;left&#8221;,&#8221;image_margin&#8221;:&#8221;xsmall&#8221;,&#8221;position&#8221;:&#8221;relative&#8221;,&#8221;position_bottom&#8221;:&#8221;0&#8243;,&#8221;title_element&#8221;:&#8221;h1&#8243;}},{&#8220;type&#8221;:&#8221;video&#8221;,&#8221;props&#8221;:{&#8220;margin_bottom&#8221;:&#8221;default&#8221;,&#8221;margin_top&#8221;:&#8221;default&#8221;,&#8221;video&#8221;:&#8221;wp-content\/uploads\/2026\/03\/NGC-CDU-VO.mp4&#8243;,&#8221;video_controls&#8221;:true,&#8221;video_loading&#8221;:&#8221;lazy&#8221;}}]}]}]},{&#8220;type&#8221;:&#8221;section&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;style&#8221;:&#8221;default&#8221;,&#8221;title_breakpoint&#8221;:&#8221;xl&#8221;,&#8221;title_position&#8221;:&#8221;top-left&#8221;,&#8221;title_rotation&#8221;:&#8221;left&#8221;,&#8221;vertical_align&#8221;:&#8221;middle&#8221;,&#8221;width&#8221;:&#8221;default&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;headline&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<h2><strong>Ofte stillede sp\u00f8rgsm\u00e5l om vores CDU<\/strong><\/h2>\n<p>&#8220;,&#8221;image_align&#8221;:&#8221;left&#8221;,&#8221;image_margin&#8221;:&#8221;xsmall&#8221;,&#8221;title_element&#8221;:&#8221;h1&#8243;}},{&#8220;type&#8221;:&#8221;text&#8221;,&#8221;props&#8221;:{&#8220;column_breakpoint&#8221;:&#8221;m&#8221;,&#8221;content&#8221;:&#8221;<\/p>\n<p><strong>Almindelige sp\u00f8rgsm\u00e5l om NGC&#8217;s CDU&#8217;er, og hvordan du v\u00e6lger den rigtige til dit anl\u00e6g.<\/strong><\/p>\n<p>&#8220;,&#8221;margin_bottom&#8221;:&#8221;default&#8221;,&#8221;margin_top&#8221;:&#8221;default&#8221;}},{&#8220;type&#8221;:&#8221;divider&#8221;,&#8221;props&#8221;:{&#8220;divider_element&#8221;:&#8221;hr&#8221;}},{&#8220;name&#8221;:&#8221;Accordion Multiple Items Start Closed&#8221;,&#8221;type&#8221;:&#8221;accordion&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;accordion_item&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<p>En CDU adskiller bygningens prim\u00e6re k\u00f8lekreds fra kredsen ved serverracket og styrer flow, tryk og temperatur, s\u00e5 k\u00f8lingen er stabil og pr\u00e6cis. Den holder ogs\u00e5 bygningens vandforsyning adskilt fra det rensede vand, der bruges p\u00e5 racksiden. NGC tilbyder en aktiv (10 til 50 kW) og en passiv (300 til 500 kW) platform, der passer til forskellige rackt\u00e6theder. Begge er bygget til enkel integration i nye eller eksisterende datacentre.<\/p>\n<p>&#8220;,&#8221;title&#8221;:&#8221;Hvad er en Coolant Distribution Unit?&#8221;}},{&#8220;type&#8221;:&#8221;accordion_item&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<p>Det afh\u00e6nger af rackt\u00e6theden, og om du har brug for aktiv pumpning eller et passivt, trykdrevet design. AI- og HPC-racks med h\u00f8j t\u00e6thed har typisk brug for aktive CDU&#8217;er (10 til 50 kW), som giver t\u00e6ttere flowstyring og hurtigere respons p\u00e5 \u00e6ndringer i belastningen, med justering inden for 1 til 2 sekunder. St\u00f8rre installationer kan bruge passive CDU&#8217;er (300 til 500 kW), der er bygget til en h\u00f8jere samlet kapacitet. Anl\u00e6ggets temperaturomr\u00e5de og den tilg\u00e6ngelige plads har ogs\u00e5 betydning for valget.<\/p>\n<p>&#8220;,&#8221;title&#8221;:&#8221;Hvordan v\u00e6lger man den rigtige CDU til et datacenter?&#8221;}},{&#8220;type&#8221;:&#8221;accordion_item&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<p>Aktive CDU&#8217;er har indbyggede pumper, der giver pr\u00e6cis flowstyring i mindre skala (10 til 50 kW), mens passive CDU&#8217;er bruger en modulerende ventil til at flytte k\u00f8lev\u00e6sken ved langt st\u00f8rre belastninger (300 til 500 kW). Aktive enheder reagerer t\u00e6ttere og hurtigere p\u00e5 \u00e6ndringer i belastningen, inden for 1 til 2 sekunder, mod 6 til 8 sekunder for passive. Det rigtige valg afh\u00e6nger af rackt\u00e6thed, hvor meget belastningen varierer, og hvilken infrastruktur anl\u00e6gget har.<\/p>\n<p>&#8220;,&#8221;title&#8221;:&#8221;Hvad er forskellen p\u00e5 aktive og passive CDU&#8217;er?&#8221;}}],&#8221;props&#8221;:{&#8220;block_align&#8221;:&#8221;center&#8221;,&#8221;collapsible&#8221;:true,&#8221;content_column_breakpoint&#8221;:&#8221;m&#8221;,&#8221;image_align&#8221;:&#8221;top&#8221;,&#8221;image_grid_breakpoint&#8221;:&#8221;m&#8221;,&#8221;image_grid_width&#8221;:&#8221;1-2&#8243;,&#8221;image_svg_color&#8221;:&#8221;emphasis&#8221;,&#8221;link_style&#8221;:&#8221;default&#8221;,&#8221;link_text&#8221;:&#8221;Read more&#8221;,&#8221;multiple&#8221;:true,&#8221;show_image&#8221;:true,&#8221;show_link&#8221;:true}}]}]}]},{&#8220;type&#8221;:&#8221;section&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;style&#8221;:&#8221;default&#8221;,&#8221;title_breakpoint&#8221;:&#8221;xl&#8221;,&#8221;title_position&#8221;:&#8221;top-left&#8221;,&#8221;title_rotation&#8221;:&#8221;left&#8221;,&#8221;vertical_align&#8221;:&#8221;middle&#8221;,&#8221;width&#8221;:&#8221;default&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;headline&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;Download datablad&#8221;,&#8221;image_align&#8221;:&#8221;left&#8221;,&#8221;image_margin&#8221;:&#8221;xsmall&#8221;,&#8221;title_element&#8221;:&#8221;h2&#8243;,&#8221;title_style&#8221;:&#8221;heading-small&#8221;}}]}]},{&#8220;type&#8221;:&#8221;row&#8221;,&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;column&#8221;,&#8221;props&#8221;:{&#8220;image_position&#8221;:&#8221;center-center&#8221;,&#8221;position_sticky_breakpoint&#8221;:&#8221;m&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;grid&#8221;,&#8221;props&#8221;:{&#8220;content_column_breakpoint&#8221;:&#8221;m&#8221;,&#8221;filter_align&#8221;:&#8221;left&#8221;,&#8221;filter_all&#8221;:true,&#8221;filter_grid_breakpoint&#8221;:&#8221;m&#8221;,&#8221;filter_grid_width&#8221;:&#8221;auto&#8221;,&#8221;filter_position&#8221;:&#8221;top&#8221;,&#8221;filter_style&#8221;:&#8221;tab&#8221;,&#8221;grid_default&#8221;:&#8221;1&#8243;,&#8221;grid_medium&#8221;:&#8221;&#8221;,&#8221;image_align&#8221;:&#8221;left&#8221;,&#8221;image_grid_breakpoint&#8221;:&#8221;m&#8221;,&#8221;image_grid_width&#8221;:&#8221;1-5&#8243;,&#8221;image_svg_color&#8221;:&#8221;emphasis&#8221;,&#8221;image_width&#8221;:500,&#8221;item_animation&#8221;:true,&#8221;lightbox_bg_close&#8221;:true,&#8221;link_fullwidth&#8221;:false,&#8221;link_style&#8221;:&#8221;primary&#8221;,&#8221;link_text&#8221;:&#8221;Download&#8221;,&#8221;margin_bottom&#8221;:&#8221;default&#8221;,&#8221;margin_top&#8221;:&#8221;default&#8221;,&#8221;meta_align&#8221;:&#8221;below-title&#8221;,&#8221;meta_element&#8221;:&#8221;div&#8221;,&#8221;meta_style&#8221;:&#8221;text-meta&#8221;,&#8221;show_content&#8221;:true,&#8221;show_hover_image&#8221;:true,&#8221;show_hover_video&#8221;:true,&#8221;show_image&#8221;:true,&#8221;show_link&#8221;:true,&#8221;show_meta&#8221;:true,&#8221;show_title&#8221;:true,&#8221;show_video&#8221;:true,&#8221;title_align&#8221;:&#8221;top&#8221;,&#8221;title_element&#8221;:&#8221;h3&#8243;,&#8221;title_grid_breakpoint&#8221;:&#8221;m&#8221;,&#8221;title_grid_width&#8221;:&#8221;1-2&#8243;,&#8221;title_hover_style&#8221;:&#8221;reset&#8221;},&#8221;children&#8221;:[{&#8220;type&#8221;:&#8221;grid_item&#8221;,&#8221;props&#8221;:{&#8220;content&#8221;:&#8221;<\/p>\n<p>Udforsk vores Coolant Distribution Unit (CDU)\\nHvert datablad giver et detaljeret overblik over hydrauliske parametre, kapacitetsomr\u00e5der, driftstemperaturer, elektriske krav og retningslinjer for integration, s\u00e5 systemet kan designes og vurderes pr\u00e6cist.\\n<\/p>\n<p>&#8220;,&#8221;image&#8221;:&#8221;wp-content\/uploads\/2026\/03\/DS_CDU_300-500Kw.jpg&#8221;,&#8221;link&#8221;:&#8221;da\/loesninger\/download-datablade\/&#8221;,&#8221;title&#8221;:&#8221;Se vores udvalg af CDU&#8217;er&#8221;}}]}]}]}]}],&#8221;version&#8221;:&#8221;5.0.46&#8243;,&#8221;yooessentialsVersion&#8221;:&#8221;3.0.15&#8243;} &#8211;><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coolant\u00a0Distribution Unit\u00a0Intelligent flowstyring og systemintegration til k\u00f8ling p\u00e5 rackniveau Coolant\u00a0Distribution Unit\u00a0 NGC&#8217;s CDU&#8217;er forbinder k\u00f8ling p\u00e5 rackniveau med bygningens infrastruktur gennem et modul\u00e6rt og hydraulisk stabilt design. Hver CDU sikrer definerede driftsforhold, pr\u00e6cis flowregulering og forudsigelig termisk ydeevne i hele systemet. NGC&#8217;s CDU&#8217;er findes i to kapacitetsplatforme: Aktiv CDU p\u00e5 rackniveau til installationer p\u00e5 10 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1639,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1658","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling<\/title>\n<meta name=\"description\" content=\"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling\" \/>\n<meta property=\"og:description\" content=\"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/\" \/>\n<meta property=\"og:site_name\" content=\"Next Generation Cooling\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T08:17:31+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/coolant-distribution-unit-cdu\\\/\",\"url\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/coolant-distribution-unit-cdu\\\/\",\"name\":\"CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#website\"},\"datePublished\":\"2026-02-26T11:33:48+00:00\",\"dateModified\":\"2026-10-26T08:17:31+00:00\",\"description\":\"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/coolant-distribution-unit-cdu\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/coolant-distribution-unit-cdu\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/coolant-distribution-unit-cdu\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"L\u00f8sninger\",\"item\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/loesninger\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Coolant Distribution Unit CDU\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#website\",\"url\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/\",\"name\":\"Next Generation Cooling\",\"description\":\"Next Generation Cooling\",\"publisher\":{\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#organization\"},\"alternateName\":\"NGC\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#organization\",\"name\":\"Next Generation Cooling\",\"alternateName\":\"Next Generation Cooling A\\\/S\",\"url\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nextgenerationcooling.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/NGC_Logo_Payoff_Orange-250px.jpg\",\"contentUrl\":\"https:\\\/\\\/nextgenerationcooling.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/NGC_Logo_Payoff_Orange-250px.jpg\",\"width\":250,\"height\":125,\"caption\":\"Next Generation Cooling\"},\"image\":{\"@id\":\"https:\\\/\\\/nextgenerationcooling.com\\\/da\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/105962666\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling","description":"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/","og_locale":"da_DK","og_type":"article","og_title":"CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling","og_description":"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.","og_url":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/","og_site_name":"Next Generation Cooling","article_modified_time":"2026-10-26T08:17:31+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimeret l\u00e6setid":"9 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/","url":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/","name":"CDU til datacentre med h\u00f8j t\u00e6thed | Next Generation Cooling","isPartOf":{"@id":"https:\/\/nextgenerationcooling.com\/da\/#website"},"datePublished":"2026-02-26T11:33:48+00:00","dateModified":"2026-10-26T08:17:31+00:00","description":"Vores CDU er udviklet til datacentre med h\u00f8j t\u00e6thed og AI. Den giver pr\u00e6cis flowstyring, termisk stabilitet og energieffektivitet.","breadcrumb":{"@id":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/coolant-distribution-unit-cdu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nextgenerationcooling.com\/da\/"},{"@type":"ListItem","position":2,"name":"L\u00f8sninger","item":"https:\/\/nextgenerationcooling.com\/da\/loesninger\/"},{"@type":"ListItem","position":3,"name":"Coolant Distribution Unit CDU"}]},{"@type":"WebSite","@id":"https:\/\/nextgenerationcooling.com\/da\/#website","url":"https:\/\/nextgenerationcooling.com\/da\/","name":"Next Generation Cooling","description":"Next Generation Cooling","publisher":{"@id":"https:\/\/nextgenerationcooling.com\/da\/#organization"},"alternateName":"NGC","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nextgenerationcooling.com\/da\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/nextgenerationcooling.com\/da\/#organization","name":"Next Generation Cooling","alternateName":"Next Generation Cooling A\/S","url":"https:\/\/nextgenerationcooling.com\/da\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/nextgenerationcooling.com\/da\/#\/schema\/logo\/image\/","url":"https:\/\/nextgenerationcooling.com\/wp-content\/uploads\/2026\/03\/NGC_Logo_Payoff_Orange-250px.jpg","contentUrl":"https:\/\/nextgenerationcooling.com\/wp-content\/uploads\/2026\/03\/NGC_Logo_Payoff_Orange-250px.jpg","width":250,"height":125,"caption":"Next Generation Cooling"},"image":{"@id":"https:\/\/nextgenerationcooling.com\/da\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/105962666"]}]}},"_links":{"self":[{"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/pages\/1658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/comments?post=1658"}],"version-history":[{"count":13,"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/pages\/1658\/revisions"}],"predecessor-version":[{"id":1757,"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/pages\/1658\/revisions\/1757"}],"up":[{"embeddable":true,"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/pages\/1639"}],"wp:attachment":[{"href":"https:\/\/nextgenerationcooling.com\/da\/wp-json\/wp\/v2\/media?parent=1658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}