{"id":2783,"date":"2026-08-07T06:59:46","date_gmt":"2026-08-07T06:59:46","guid":{"rendered":"https:\/\/dbq.kda.mybluehostin.me\/staging\/?page_id=2783"},"modified":"2026-09-08T05:20:08","modified_gmt":"2026-09-08T05:20:08","slug":"key-services","status":"publish","type":"page","link":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/","title":{"rendered":"New Frontiers"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2783\" class=\"elementor elementor-2783\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d557b06 e-con e-atomic-element e-flexbox-base e-6b0d8d4 \" data-id=\"d557b06\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"d557b06\">\n    \t\t<div class=\"elementor-element elementor-element-5dc162a elementor-widget elementor-widget-html\" data-id=\"5dc162a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"fluidyn-cfd-hero\">\r\n\r\n    <!-- CFD animated background -->\r\n    <canvas class=\"fluidyn-cfd-canvas\"><\/canvas>\r\n\r\n    <!-- Dark overlay -->\r\n    <div class=\"fluidyn-cfd-overlay\"><\/div>\r\n\r\n\r\n    <!-- Hero content -->\r\n    <div class=\"fluidyn-cfd-content\">\r\n\r\n        <!-- Small label -->\r\n        <div class=\"fluidyn-cfd-kicker\">\r\n            NEXT-GENERATION TECHNOLOGY FOR COMPLEX ENGINEERING\r\n        <\/div>\r\n\r\n\r\n        <!-- =================================================\r\n             HEADING ROTATOR\r\n             \r\n             Add as many headings as you want.\r\n             JavaScript automatically detects them.\r\n             ================================================= -->\r\n\r\n<div class=\"fluidyn-heading-rotator\">\r\n\r\n    <div class=\"fluidyn-heading-track\">\r\n\r\n        <!-- HEADING 2 -->\r\n        <div class=\"fluidyn-heading-item\">\r\n\r\n            <div class=\"fluidyn-main-heading\">\r\n                Fluidyn-REALTI\r\n            <\/div>\r\n\r\n            <div class=\"fluidyn-subheading\">\r\n                for Real time Monitoring and Forecast\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n\r\n        <!-- HEADING 3 -->\r\n        <div class=\"fluidyn-heading-item\">\r\n\r\n            <div class=\"fluidyn-main-heading\">\r\n                Hybrid Digital Twins\r\n            <\/div>\r\n\r\n            <div class=\"fluidyn-subheading\">\r\n                combining physics-based models with AI\/ML\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n\r\n        <!-- HEADING 4 -->\r\n        <div class=\"fluidyn-heading-item\">\r\n\r\n            <div class=\"fluidyn-main-heading\">\r\n                Custom Software Solutions\r\n            <\/div>\r\n\r\n            <div class=\"fluidyn-subheading\">\r\n                for user's specific application\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n\r\n        <!-- ADD MORE HEADINGS LIKE THIS -->\r\n\r\n        <!--\r\n        <div class=\"fluidyn-heading-item\">\r\n\r\n            <div class=\"fluidyn-main-heading\">\r\n                Your New Heading\r\n            <\/div>\r\n\r\n            <div class=\"fluidyn-subheading\">\r\n                Your new subheading goes here\r\n            <\/div>\r\n\r\n        <\/div>\r\n        -->\r\n\r\n    <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n        <!-- Description -->\r\n\r\n        <p class=\"fluidyn-cfd-description\">\r\n\r\n        <\/p>\r\n\r\n    <\/div>\r\n\r\n\r\n    <!-- Live status -->\r\n\r\n    <div class=\"fluidyn-cfd-status\">\r\n\r\n        <span class=\"fluidyn-cfd-status-dot\"><\/span>\r\n\r\n        <span>\r\n            LIVE SIMULATION FIELD\r\n        <\/span>\r\n\r\n    <\/div>\r\n\r\n<\/section>\r\n<style>\r\n\r\n\/* =========================================================\r\n   FLUIDYN CFD HERO\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-hero {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    min-height: 500px;\r\n\r\n    overflow: hidden;\r\n\r\n    background: #A9A9A9;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content: center;\r\n\r\n    isolation: isolate;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CFD CANVAS\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-canvas {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    width: 100%;\r\n\r\n    height: 100%;\r\n\r\n    display: block;\r\n\r\n    z-index: 0;\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DARK OVERLAY\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-overlay {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    z-index: 1;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at center,\r\n\r\n            rgba(169,169,169,0.08) 0%,\r\n\r\n            rgba(169,169,169,0.30) 55%,\r\n\r\n            rgba(90,90,90,0.78) 100%\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HERO CONTENT\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-content {\r\n    position: relative;\r\n    z-index: 11;\r\n    width: 100%;\r\n    max-width: 1200px;\r\n    margin: 0 auto;\r\n    padding: 40px 20px;\r\n    text-align: center;\r\n    box-sizing: border-box;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TOP LABEL\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-kicker {\r\n\r\n    display: inline-flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content: center;\r\n\r\n    margin-bottom: 38px;\r\n\r\n    padding: 10px 20px;\r\n\r\n    border: 1px solid\r\n        rgba(232,148,60,0.55);\r\n\r\n    border-radius: 999px;\r\n\r\n    background:\r\n        rgba(169,169,169,0.05);\r\n\r\n    color: #A9A9A9;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size: 12px;\r\n\r\n    font-weight: 600;\r\n\r\n    letter-spacing: 1.8px;\r\n\r\n    line-height: 1.2;\r\n\r\n    backdrop-filter: blur(8px);\r\n\r\n    -webkit-backdrop-filter: blur(8px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HEADING AREA\r\n   ========================================================= *\/\r\n\r\n.fluidyn-heading-rotator {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    max-width: 1250px;\r\n\r\n    height: 130px;\r\n\r\n    margin: 0 auto;\r\n\r\n    overflow: hidden;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HEADING TRACK\r\n   ========================================================= *\/\r\n\r\n.fluidyn-heading-track {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    height: 100%;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INDIVIDUAL HEADINGS\r\n   ========================================================= *\/\r\n\r\n.fluidyn-heading-item {\r\n\r\n    position: absolute;\r\n\r\n    left: 50%;\r\n    top: 50%;\r\n\r\n    width: 100%;\r\n    max-width: 1250px;\r\n\r\n    margin: 0;\r\n    padding: 0;\r\n\r\n    transform: translate(-50%, -50%);\r\n\r\n    text-align: center;\r\n\r\n    opacity: 0;\r\n\r\n    pointer-events: none;\r\n\r\n    will-change: opacity;\r\n}\r\n\r\n\r\n\/* ================================\r\n   MAIN HEADING\r\n================================ *\/\r\n\r\n.fluidyn-main-heading {\r\n\r\n    color: #E8943C;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size:\r\n        clamp(22px, 4vw, 57px);\r\n\r\n    font-weight: 700;\r\n\r\n    line-height: .05;\r\n\r\n    letter-spacing: -2px;\r\n\r\n    text-align: center;\r\n    margin: auto;\r\n}\r\n\r\n\r\n\/* ================================\r\n   CHANGING SUBHEADING\r\n================================ *\/\r\n\r\n.fluidyn-subheading {\r\n\r\n    margin-top: 32px;\r\n\r\n    color:\r\n        rgba(255,255,255,0.82);\r\n\r\nfont-family: 'Trebuchet MS', sans-serif;\r\n\r\n\r\n\r\n    font-size:\r\n        clamp(36px, 1.6vw, 21px);\r\n\r\n    font-weight: 400;\r\n\r\n    line-height: 1.5;\r\n\r\n    letter-spacing: 0;\r\n\r\n    text-align: center;\r\n\r\n    max-width: 800px;\r\n\r\n    margin-left: auto;\r\n    margin-right: auto;\r\n    margin-bottom: auto;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DESCRIPTION\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-description {\r\n\r\n    width: min(720px, 90%);\r\n\r\n    margin: 30px auto 0;\r\n\r\n    color:\r\n        rgba(255,255,255,0.78);\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size: 18px;\r\n\r\n    font-weight: 400;\r\n\r\n    line-height: 1.7;\r\n\r\n    text-align: center;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   LIVE STATUS\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-status {\r\n\r\n    position: absolute;\r\n\r\n    left: 28px;\r\n\r\n    bottom: 24px;\r\n\r\n    z-index: 4;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 9px;\r\n\r\n    color:\r\n        rgba(255,255,255,0.55);\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size: 10px;\r\n\r\n    font-weight: 500;\r\n\r\n    letter-spacing: 2px;\r\n\r\n    text-transform: uppercase;\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   STATUS DOT\r\n   ========================================================= *\/\r\n\r\n.fluidyn-cfd-status-dot {\r\n\r\n    width: 8px;\r\n\r\n    height: 8px;\r\n\r\n    flex: 0 0 8px;\r\n\r\n    border-radius: 50%;\r\n\r\n    background: #E8943C;\r\n\r\n    box-shadow:\r\n        0 0 8px\r\n        rgba(232,148,60,0.9),\r\n\r\n        0 0 18px\r\n        rgba(232,148,60,0.45);\r\n\r\n    animation:\r\n        fluidyn-status-pulse\r\n        1.8s\r\n        ease-in-out\r\n        infinite;\r\n}\r\n\r\n\r\n@keyframes fluidyn-status-pulse {\r\n\r\n    0%,\r\n    100% {\r\n\r\n        opacity: 0.35;\r\n\r\n        transform: scale(0.82);\r\n    }\r\n\r\n    50% {\r\n\r\n        opacity: 1;\r\n\r\n        transform: scale(1.15);\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 900px) {\r\n\r\n    .fluidyn-cfd-hero {\r\n\r\n        min-height: 540px;\r\n    }\r\n\r\n    .fluidyn-cfd-content {\r\n\r\n        width: 94%;\r\n\r\n        padding:\r\n            100px 15px 115px;\r\n    }\r\n\r\n    .fluidyn-heading-rotator {\r\n\r\n        height: 115px;\r\n    }\r\n\r\n    .fluidyn-heading-item {\r\n\r\n        font-size:\r\n            clamp(40px, 7vw, 64px);\r\n    }\r\n\r\n    .fluidyn-cfd-description {\r\n\r\n        font-size: 17px;\r\n    }\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 600px) {\r\n\r\n    .fluidyn-cfd-hero {\r\n\r\n        min-height: 620px;\r\n    }\r\n\r\n    .fluidyn-cfd-content {\r\n\r\n        width: 94%;\r\n\r\n        padding:\r\n            105px 8px 115px;\r\n    }\r\n\r\n    .fluidyn-cfd-kicker {\r\n\r\n        max-width: 92%;\r\n\r\n        margin-bottom: 24px;\r\n\r\n        padding:\r\n            8px 13px;\r\n\r\n        font-size: 9px;\r\n\r\n        letter-spacing: 1.1px;\r\n    }\r\n\r\n    .fluidyn-heading-rotator {\r\n\r\n        height: 135px;\r\n    }\r\n\r\n    .fluidyn-heading-item {\r\n\r\n        max-width: 94%;\r\n\r\n        white-space: normal;\r\n\r\n        font-size:\r\n            clamp(36px, 10vw, 56px);\r\n\r\n        line-height: 1.08;\r\n\r\n        letter-spacing: -1px;\r\n    }\r\n\r\n    .fluidyn-cfd-description {\r\n\r\n        width: 92%;\r\n\r\n        margin-top: 22px;\r\n\r\n        font-size: 15px;\r\n\r\n        line-height: 1.65;\r\n    }\r\n\r\n    .fluidyn-cfd-status {\r\n\r\n        left: 18px;\r\n\r\n        bottom: 18px;\r\n\r\n        font-size: 8px;\r\n\r\n        letter-spacing: 1.5px;\r\n    }\r\n\r\n}\r\n\r\n@media (max-width: 600px) {\r\n\r\n    .fluidyn-main-heading {\r\n\r\n        font-size:\r\n            clamp(36px, 10vw, 56px);\r\n\r\n        line-height: 1.08;\r\n\r\n        letter-spacing: -1px;\r\n    }\r\n\r\n\r\n    .fluidyn-subheading {\r\n\r\n        margin-top: 16px;\r\n\r\n        width: 90%;\r\n\r\n        font-size: 15px;\r\n\r\n        line-height: 1.5;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REDUCED MOTION\r\n   ========================================================= *\/\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n\r\n    .fluidyn-cfd-status-dot {\r\n\r\n        animation: none;\r\n    }\r\n\r\n}\r\n\r\n\r\n<\/style>\r\n<script>\r\n\r\n(function () {\r\n\r\n    \"use strict\";\r\n\r\n\r\n    \/* =====================================================\r\n       ELEMENTS\r\n       ===================================================== *\/\r\n\r\n    const hero =\r\n        document.querySelector(\r\n            \".fluidyn-cfd-hero\"\r\n        );\r\n\r\n    const canvas =\r\n        document.querySelector(\r\n            \".fluidyn-cfd-canvas\"\r\n        );\r\n\r\n    const headings =\r\n        Array.from(\r\n            document.querySelectorAll(\r\n                \".fluidyn-heading-item\"\r\n            )\r\n        );\r\n\r\n\r\n    if (\r\n        !hero ||\r\n        !canvas\r\n    ) {\r\n\r\n        return;\r\n    }\r\n\r\n\r\n    const ctx =\r\n        canvas.getContext(\"2d\");\r\n\r\n\r\n    \/* =====================================================\r\n       CANVAS\r\n       ===================================================== *\/\r\n\r\n    let width = 0;\r\n\r\n    let height = 0;\r\n\r\n    let dpr =\r\n        Math.min(\r\n            window.devicePixelRatio || 1,\r\n            2\r\n        );\r\n\r\n\r\n    function resizeCanvas() {\r\n\r\n        const rect =\r\n            hero.getBoundingClientRect();\r\n\r\n\r\n        width =\r\n            rect.width;\r\n\r\n\r\n        height =\r\n            rect.height;\r\n\r\n\r\n        dpr =\r\n            Math.min(\r\n                window.devicePixelRatio || 1,\r\n                2\r\n            );\r\n\r\n\r\n        canvas.width =\r\n            width * dpr;\r\n\r\n\r\n        canvas.height =\r\n            height * dpr;\r\n\r\n\r\n        canvas.style.width =\r\n            width + \"px\";\r\n\r\n\r\n        canvas.style.height =\r\n            height + \"px\";\r\n\r\n\r\n        ctx.setTransform(\r\n            dpr,\r\n            0,\r\n            0,\r\n            dpr,\r\n            0,\r\n            0\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       CFD FLOW\r\n       ===================================================== *\/\r\n\r\n    function flowField(\r\n        x,\r\n        y,\r\n        time\r\n    ) {\r\n\r\n        const nx =\r\n            x \/\r\n            Math.max(\r\n                width,\r\n                1\r\n            );\r\n\r\n\r\n        const ny =\r\n            y \/\r\n            Math.max(\r\n                height,\r\n                1\r\n            );\r\n\r\n\r\n        let vx = 1.15;\r\n\r\n        let vy = 0;\r\n\r\n\r\n        vx +=\r\n            Math.sin(\r\n                ny * 7 +\r\n                time * 0.00035\r\n            ) *\r\n            0.65;\r\n\r\n\r\n        vy +=\r\n            Math.cos(\r\n                nx * 5 -\r\n                time * 0.00025\r\n            ) *\r\n            0.55;\r\n\r\n\r\n        vy +=\r\n            Math.sin(\r\n                nx * 8 +\r\n                ny * 4 +\r\n                time * 0.00018\r\n            ) *\r\n            0.22;\r\n\r\n\r\n        \/* Central flow *\/\r\n\r\n        const centerX =\r\n            width * 0.58;\r\n\r\n\r\n        const centerY =\r\n            height * 0.5;\r\n\r\n\r\n        const dx =\r\n            x - centerX;\r\n\r\n\r\n        const dy =\r\n            y - centerY;\r\n\r\n\r\n        const distance =\r\n            Math.sqrt(\r\n                dx * dx +\r\n                dy * dy\r\n            ) + 1;\r\n\r\n\r\n        const influence =\r\n            Math.max(\r\n                0,\r\n                1 -\r\n                distance \/\r\n                (width * 0.58)\r\n            );\r\n\r\n\r\n        vx +=\r\n            (-dy \/ distance) *\r\n            influence *\r\n            0.40;\r\n\r\n\r\n        vy +=\r\n            (dx \/ distance) *\r\n            influence *\r\n            0.40;\r\n\r\n\r\n        return {\r\n            x: vx,\r\n            y: vy\r\n        };\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       CFD STREAMLINES\r\n       ===================================================== *\/\r\n\r\n    function drawStreamlines(\r\n        time\r\n    ) {\r\n\r\n        const lineCount =\r\n            Math.min(\r\n                70,\r\n                Math.max(\r\n                    32,\r\n                    Math.floor(\r\n                        width \/ 25\r\n                    )\r\n                )\r\n            );\r\n\r\n\r\n        for (\r\n            let i = 0;\r\n            i < lineCount;\r\n            i++\r\n        ) {\r\n\r\n            let x = -120;\r\n\r\n\r\n            let y =\r\n                (\r\n                    i \/\r\n                    lineCount\r\n                ) *\r\n                height;\r\n\r\n\r\n            ctx.beginPath();\r\n\r\n\r\n            ctx.moveTo(\r\n                x,\r\n                y\r\n            );\r\n\r\n\r\n            for (\r\n                let step = 0;\r\n                step < width \/ 7;\r\n                step++\r\n            ) {\r\n\r\n                const velocity =\r\n                    flowField(\r\n                        x,\r\n                        y,\r\n                        time\r\n                    );\r\n\r\n\r\n                x +=\r\n                    velocity.x * 7;\r\n\r\n\r\n                y +=\r\n                    velocity.y * 2.2;\r\n\r\n\r\n                if (\r\n                    y < -100 ||\r\n                    y >\r\n                    height + 100\r\n                ) {\r\n\r\n                    break;\r\n                }\r\n\r\n\r\n                ctx.lineTo(\r\n                    x,\r\n                    y\r\n                );\r\n            }\r\n\r\n\r\n            let opacity;\r\n\r\n\r\n            if (\r\n                i % 7 === 0\r\n            ) {\r\n\r\n                opacity = 0.32;\r\n\r\n            } else if (\r\n                i % 3 === 0\r\n            ) {\r\n\r\n                opacity = 0.20;\r\n\r\n            } else {\r\n\r\n                opacity = 0.12;\r\n            }\r\n\r\n\r\n            ctx.strokeStyle =\r\n                \"rgba(232,148,60,\" +\r\n                opacity +\r\n                \")\";\r\n\r\n\r\n            ctx.lineWidth =\r\n\r\n                i % 7 === 0\r\n                    ? 1.6\r\n                    :\r\n                i % 3 === 0\r\n                    ? 1.1\r\n                    :\r\n                    0.7;\r\n\r\n\r\n            ctx.stroke();\r\n        }\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       PARTICLES\r\n       ===================================================== *\/\r\n\r\n    const particles = [];\r\n\r\n    const PARTICLE_COUNT = 160;\r\n\r\n\r\n    function createParticle() {\r\n\r\n        return {\r\n\r\n            x:\r\n                Math.random() *\r\n                width,\r\n\r\n            y:\r\n                Math.random() *\r\n                height,\r\n\r\n            speed:\r\n                0.5 +\r\n                Math.random() *\r\n                0.7,\r\n\r\n            size:\r\n                0.7 +\r\n                Math.random() *\r\n                1.3\r\n        };\r\n    }\r\n\r\n\r\n    function createParticles() {\r\n\r\n        particles.length = 0;\r\n\r\n\r\n        for (\r\n            let i = 0;\r\n            i < PARTICLE_COUNT;\r\n            i++\r\n        ) {\r\n\r\n            particles.push(\r\n                createParticle()\r\n            );\r\n        }\r\n    }\r\n\r\n\r\n    function updateParticles(\r\n        time\r\n    ) {\r\n\r\n        for (\r\n            let i = 0;\r\n            i < particles.length;\r\n            i++\r\n        ) {\r\n\r\n            const particle =\r\n                particles[i];\r\n\r\n\r\n            const velocity =\r\n                flowField(\r\n                    particle.x,\r\n                    particle.y,\r\n                    time\r\n                );\r\n\r\n\r\n            particle.x +=\r\n                velocity.x *\r\n                particle.speed;\r\n\r\n\r\n            particle.y +=\r\n                velocity.y *\r\n                particle.speed;\r\n\r\n\r\n            if (\r\n                particle.x >\r\n                width + 30\r\n            ) {\r\n\r\n                particle.x =\r\n                    -20;\r\n\r\n                particle.y =\r\n                    Math.random() *\r\n                    height;\r\n            }\r\n\r\n\r\n            if (\r\n                particle.y <\r\n                -40\r\n            ) {\r\n\r\n                particle.y =\r\n                    height + 20;\r\n            }\r\n\r\n\r\n            if (\r\n                particle.y >\r\n                height + 40\r\n            ) {\r\n\r\n                particle.y =\r\n                    -20;\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    function drawParticles() {\r\n\r\n        for (\r\n            let i = 0;\r\n            i < particles.length;\r\n            i++\r\n        ) {\r\n\r\n            const p =\r\n                particles[i];\r\n\r\n\r\n            ctx.beginPath();\r\n\r\n\r\n            ctx.arc(\r\n                p.x,\r\n                p.y,\r\n                p.size,\r\n                0,\r\n                Math.PI * 2\r\n            );\r\n\r\n\r\n            ctx.fillStyle =\r\n                \"rgba(232,148,60,0.85)\";\r\n\r\n\r\n            ctx.fill();\r\n        }\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       CFD GLOW\r\n       ===================================================== *\/\r\n\r\n    function drawGlow(\r\n        time\r\n    ) {\r\n\r\n        const x =\r\n            width * 0.58 +\r\n            Math.sin(\r\n                time * 0.00025\r\n            ) *\r\n            width *\r\n            0.12;\r\n\r\n\r\n        const y =\r\n            height * 0.50 +\r\n            Math.cos(\r\n                time * 0.00018\r\n            ) *\r\n            height *\r\n            0.12;\r\n\r\n\r\n        const radius =\r\n            Math.min(\r\n                width,\r\n                height\r\n            ) *\r\n            0.45;\r\n\r\n\r\n        const gradient =\r\n            ctx.createRadialGradient(\r\n                x,\r\n                y,\r\n                0,\r\n                x,\r\n                y,\r\n                radius\r\n            );\r\n\r\n\r\n        gradient.addColorStop(\r\n            0,\r\n            \"rgba(232,148,60,0.07)\"\r\n        );\r\n\r\n\r\n        gradient.addColorStop(\r\n            0.45,\r\n            \"rgba(232,148,60,0.025)\"\r\n        );\r\n\r\n\r\n        gradient.addColorStop(\r\n            1,\r\n            \"rgba(232,148,60,0)\"\r\n        );\r\n\r\n\r\n        ctx.fillStyle =\r\n            gradient;\r\n\r\n\r\n        ctx.fillRect(\r\n            0,\r\n            0,\r\n            width,\r\n            height\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       HEADING ANIMATION SETTINGS\r\n       ===================================================== *\/\r\n\r\n    const FADE_IN =\r\n        1500;\r\n\r\n    const HOLD =\r\n        2500;\r\n\r\n    const FADE_OUT =\r\n        1500;\r\n\r\n    const GAP =\r\n        200;\r\n\r\n\r\n    let headingIndex = 0;\r\n\r\n    let headingPhase =\r\n        \"fade-in\";\r\n\r\n    let phaseStart =\r\n        performance.now();\r\n\r\n\r\n    \/* =====================================================\r\n       EASING\r\n       ===================================================== *\/\r\n\r\n    function easeInOut(\r\n        t\r\n    ) {\r\n\r\n        return (\r\n            t < 0.5\r\n                ?\r\n                2 * t * t\r\n                :\r\n                1 -\r\n                Math.pow(\r\n                    -2 * t + 2,\r\n                    2\r\n                ) \/ 2\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       RESET HEADINGS\r\n       ===================================================== *\/\r\n\r\n    function resetHeadings() {\r\n\r\n        headings.forEach(\r\n            function (heading) {\r\n\r\n                heading.style.opacity =\r\n                    \"0\";\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       START HEADING\r\n       ===================================================== *\/\r\n\r\n    function startHeading() {\r\n\r\n        resetHeadings();\r\n\r\n\r\n        if (\r\n            !headings.length\r\n        ) {\r\n\r\n            return;\r\n        }\r\n\r\n\r\n        headings[\r\n            headingIndex\r\n        ].style.opacity =\r\n            \"0\";\r\n\r\n\r\n        headingPhase =\r\n            \"fade-in\";\r\n\r\n\r\n        phaseStart =\r\n            performance.now();\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       UPDATE HEADING\r\n       ===================================================== *\/\r\n\r\n    function updateHeading(\r\n        now\r\n    ) {\r\n\r\n        if (\r\n            !headings.length\r\n        ) {\r\n\r\n            return;\r\n        }\r\n\r\n\r\n        const heading =\r\n            headings[\r\n                headingIndex\r\n            ];\r\n\r\n\r\n        const elapsed =\r\n            now -\r\n            phaseStart;\r\n\r\n\r\n        \/* =================================================\r\n           FADE IN\r\n           ================================================= *\/\r\n\r\n        if (\r\n            headingPhase ===\r\n            \"fade-in\"\r\n        ) {\r\n\r\n            const progress =\r\n                Math.min(\r\n                    1,\r\n                    elapsed \/\r\n                    FADE_IN\r\n                );\r\n\r\n\r\n            heading.style.opacity =\r\n                easeInOut(\r\n                    progress\r\n                );\r\n\r\n\r\n            if (\r\n                progress >= 1\r\n            ) {\r\n\r\n                headingPhase =\r\n                    \"hold\";\r\n\r\n\r\n                phaseStart =\r\n                    now;\r\n            }\r\n\r\n\r\n            return;\r\n        }\r\n\r\n\r\n        \/* =================================================\r\n           HOLD\r\n           ================================================= *\/\r\n\r\n        if (\r\n            headingPhase ===\r\n            \"hold\"\r\n        ) {\r\n\r\n            heading.style.opacity =\r\n                \"1\";\r\n\r\n\r\n            if (\r\n                elapsed >=\r\n                HOLD\r\n            ) {\r\n\r\n                headingPhase =\r\n                    \"fade-out\";\r\n\r\n\r\n                phaseStart =\r\n                    now;\r\n            }\r\n\r\n\r\n            return;\r\n        }\r\n\r\n\r\n        \/* =================================================\r\n           FADE OUT\r\n           ================================================= *\/\r\n\r\n        if (\r\n            headingPhase ===\r\n            \"fade-out\"\r\n        ) {\r\n\r\n            const progress =\r\n                Math.min(\r\n                    1,\r\n                    elapsed \/\r\n                    FADE_OUT\r\n                );\r\n\r\n\r\n            heading.style.opacity =\r\n                1 -\r\n                easeInOut(\r\n                    progress\r\n                );\r\n\r\n\r\n            if (\r\n                progress >= 1\r\n            ) {\r\n\r\n                heading.style.opacity =\r\n                    \"0\";\r\n\r\n\r\n                headingPhase =\r\n                    \"gap\";\r\n\r\n\r\n                phaseStart =\r\n                    now;\r\n            }\r\n\r\n\r\n            return;\r\n        }\r\n\r\n\r\n        \/* =================================================\r\n           GAP\r\n           ================================================= *\/\r\n\r\n        if (\r\n            headingPhase ===\r\n            \"gap\"\r\n        ) {\r\n\r\n            if (\r\n                elapsed >=\r\n                GAP\r\n            ) {\r\n\r\n                headingIndex =\r\n                    (\r\n                        headingIndex +\r\n                        1\r\n                    ) %\r\n                    headings.length;\r\n\r\n\r\n                startHeading();\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       MAIN ANIMATION LOOP\r\n       ===================================================== *\/\r\n\r\n    function animate(\r\n        now\r\n    ) {\r\n\r\n        \/* Background *\/\r\n\r\n        ctx.clearRect(\r\n            0,\r\n            0,\r\n            width,\r\n            height\r\n        );\r\n\r\n\r\n        ctx.fillStyle =\r\n            \"#050505\";\r\n\r\n\r\n        ctx.fillRect(\r\n            0,\r\n            0,\r\n            width,\r\n            height\r\n        );\r\n\r\n\r\n        drawGlow(\r\n            now\r\n        );\r\n\r\n\r\n        drawStreamlines(\r\n            now\r\n        );\r\n\r\n\r\n        updateParticles(\r\n            now\r\n        );\r\n\r\n\r\n        drawParticles();\r\n\r\n\r\n        \/* Heading *\/\r\n\r\n        updateHeading(\r\n            now\r\n        );\r\n\r\n\r\n        requestAnimationFrame(\r\n            animate\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       INITIALIZATION\r\n       ===================================================== *\/\r\n\r\n    resizeCanvas();\r\n\r\n    createParticles();\r\n\r\n    resetHeadings();\r\n\r\n    startHeading();\r\n\r\n\r\n    \/* =====================================================\r\n       RESIZE\r\n       ===================================================== *\/\r\n\r\n    let resizeTimer;\r\n\r\n\r\n    window.addEventListener(\r\n        \"resize\",\r\n        function () {\r\n\r\n            clearTimeout(\r\n                resizeTimer\r\n            );\r\n\r\n\r\n            resizeTimer =\r\n                setTimeout(\r\n                    function () {\r\n\r\n                        resizeCanvas();\r\n\r\n                        createParticles();\r\n\r\n                    },\r\n                    150\r\n                );\r\n        }\r\n    );\r\n\r\n\r\n    \/* =====================================================\r\n       START\r\n       ===================================================== *\/\r\n\r\n    requestAnimationFrame(\r\n        animate\r\n    );\r\n\r\n\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-b7266a4 e-con e-atomic-element e-flexbox-base e-92dee45 \" data-id=\"b7266a4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b7266a4\">\n    <div class=\"elementor-element elementor-element-63564b3 e-con-full e-flex e-con e-parent\" data-id=\"63564b3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-1af9087 e-con-full #1 e-flex e-con e-child\" data-id=\"1af9087\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;slideshow&quot;,&quot;background_slideshow_gallery&quot;:[{&quot;id&quot;:3121,&quot;url&quot;:&quot;https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot-2026-08-17-103237.png&quot;}],&quot;background_slideshow_loop&quot;:&quot;yes&quot;,&quot;background_slideshow_slide_duration&quot;:5000,&quot;background_slideshow_slide_transition&quot;:&quot;fade&quot;,&quot;background_slideshow_transition_duration&quot;:500}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3855757 elementor-widget elementor-widget-text-editor\" data-id=\"3855757\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">Custom Software Solutions :<\/span><\/p><p><em>Simulation engineered around you \u2014 not the other way around.<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0645252 elementor-widget elementor-widget-button\" data-id=\"0645252\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-grow\" href=\"#1\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">View more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d7a7695 e-con-full e-flex e-con e-child\" data-id=\"d7a7695\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;slideshow&quot;,&quot;background_slideshow_gallery&quot;:[{&quot;id&quot;:3133,&quot;url&quot;:&quot;https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot-2026-08-17-110446.png&quot;}],&quot;background_slideshow_loop&quot;:&quot;yes&quot;,&quot;background_slideshow_slide_duration&quot;:5000,&quot;background_slideshow_slide_transition&quot;:&quot;fade&quot;,&quot;background_slideshow_transition_duration&quot;:500}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-26eb57e elementor-widget elementor-widget-button\" data-id=\"26eb57e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-grow\" href=\"#2\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">View more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d5f8b5 elementor-widget elementor-widget-text-editor\" data-id=\"8d5f8b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">Hybrid Digital Twin :<\/span><\/p><p><em>One process, two dimensions \u2014 always in sync.<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8fffe88 e-con-full e-flex e-con e-child\" data-id=\"8fffe88\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;slideshow&quot;,&quot;background_slideshow_gallery&quot;:[{&quot;id&quot;:3134,&quot;url&quot;:&quot;https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Screenshot-2026-08-17-111015.png&quot;}],&quot;background_slideshow_loop&quot;:&quot;yes&quot;,&quot;background_slideshow_slide_duration&quot;:5000,&quot;background_slideshow_slide_transition&quot;:&quot;fade&quot;,&quot;background_slideshow_transition_duration&quot;:500}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a80a3f9 elementor-widget elementor-widget-text-editor\" data-id=\"a80a3f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: #ffffff;\">Fluidyn-REALTI :<\/span><\/p><p><em>Real-time visibility.Real-time response<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e2dd052 elementor-widget elementor-widget-button\" data-id=\"e2dd052\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-grow\" href=\"#3\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">View more<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-18a05f4 e-con e-atomic-element e-flexbox-base e-ec19d5b \" data-id=\"18a05f4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"18a05f4\" id=\"1\">\n    \t\t\t<h1 data-interaction-id=\"19c8db1\" class=\"e-19c8db1-7e194e0 e-heading-base\">Simulation Solutions, Built Around Your Needs<\/h1>\n\t\t\t\t<div class=\"elementor-element elementor-element-82bfe27 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"82bfe27\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fcb1a8c e-flex e-con-boxed e-con e-parent\" data-id=\"fcb1a8c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ad60c90 elementor-widget elementor-widget-text-editor\" data-id=\"ad60c90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><em>Every solver configuration for Fluidyn&#8217;s customised simulation software starts from the ground up \u2014 built around your actual plant geometry, real operating conditions, and the physics that genuinely drive your process, rather than adapting a pre-built template and hoping it fits. Heat transfer, particle transport, chemical reactions, and fluid flow are solved together in a single coupled framework rather than stitched together from separate modules, so the interactions between these physics are captured accurately and results reflect how your system actually behaves. Before any model is handed over, it&#8217;s benchmarked against field measurements and real plant data, ensuring the simulation isn&#8217;t just mathematically sound but proven to match what actually happens on the floor. The same solver framework that models a single reactor scales seamlessly to an entire industrial complex, with no re-architecting required whether you&#8217;re troubleshooting one vessel or planning a facility-wide expansion. And because you can change a geometry parameter, adjust a boundary condition, or test a new operating scenario and re-run without rebuilding from scratch, design exploration and what-if analysis happen in hours rather than weeks \u2014 keeping your engineering timeline moving instead of slowing it down.<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-6d47aed e-con e-atomic-element e-flexbox-base e-6d47aed-a55294f \" data-id=\"6d47aed\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6d47aed\" id=\"2\">\n    \t\t\t<h1 data-interaction-id=\"9225741\" class=\"e-9225741-6618731 e-heading-base\">A Living Model of Your Process<\/h1>\n\t\t\t\t<div class=\"elementor-element elementor-element-659157c elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"659157c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3cf29aa e-flex e-con-boxed e-con e-parent\" data-id=\"3cf29aa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40910fb elementor-widget elementor-widget-text-editor\" data-id=\"40910fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\" style=\"text-align: left;\"><em>The twin updates continuously as your actual equipment data flows in \u2014 pressure readings, temperatures, flow rates \u2014 so what you&#8217;re looking at reflects current plant conditions rather than design specs from last year&#8217;s commissioning, giving you a moving picture of your process instead of a frozen one. By tracking deviations in real time, it flags early signs of fouling, pressure drop, or thermal stress well before they translate into equipment failure or downtime, giving you a warning window measured in days or weeks rather than the abrupt surprise of an unplanned shutdown. It pulls data straight from what you already have instrumented \u2014 connecting directly to your plant sensors and SCADA\/DCS systems with no manual re-entry or spreadsheets bridging the gap \u2014 so the model stays synced automatically without adding operational overhead. Before touching the real process, you can trial a different flow rate, feed composition, or load condition entirely in the virtual model, so operational changes get vetted for risk and performance impact upfront instead of being learned the hard way on live equipment. And because design and operations teams reference the same model, there&#8217;s no translation loss between what was intended on paper and what&#8217;s actually running on the floor \u2014 everyone works from a single source of truth, which cuts down on miscommunication during troubleshooting or upgrades.<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-4abfd07 e-con e-atomic-element e-flexbox-base e-4abfd07-bcf312f \" data-id=\"4abfd07\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"4abfd07\" id=\"3\">\n    \t\t\t<h1 data-interaction-id=\"6b3c4d4\" class=\"e-6b3c4d4-bfae944 e-heading-base\">Realtime Forecast &amp; Monitoring<\/h1>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bd91bf elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"3bd91bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a51cd47 e-flex e-con-boxed e-con e-parent\" data-id=\"a51cd47\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba68246 elementor-widget elementor-widget-text-editor\" data-id=\"ba68246\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div role=\"feed\" aria-label=\"Chat messages\" aria-describedby=\"_r_h4l_\" data-find-provider-scope=\"\"><div data-sizer-excess=\"0\" data-rocksteady-sizer=\"\"><div data-rs-index=\"19\" data-index=\"19\" data-last-message=\"true\"><div tabindex=\"0\" role=\"article\" aria-setsize=\"20\" aria-posinset=\"20\" aria-label=\"Message 20 of 20\"><div data-test-render-count=\"1\"><div class=\"group group\/message-row\"><div class=\"contents\"><div class=\"group relative relative pb-[var(--msg-assistant-pb,0.75rem)]\" data-is-streaming=\"false\"><div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\"><div><div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 [&amp;_&gt;_*:last-child]:mb-0 print:block print:[&amp;_&gt;_*_+_*]:mt-3 standard-markdown\"><p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><em>Traditional inspections happen on a schedule, which means issues can develop silently in between visits \u2014 Fluidyn-Realti pulls data continuously from your plant sensors, so drift in temperature, pressure, or emission levels gets caught the moment it starts, not weeks later during the next audit. Rather than just reporting what&#8217;s happening now, the system runs predictive models on incoming data to flag a likely gas leak, contamination spread, or thermal excursion before it actually occurs, and that lead time \u2014 even just minutes \u2014 can be the difference between a controlled shutdown and a serious incident. Because raw sensor data is overwhelming when operators need to make fast decisions, the interface is built around what a control room actually needs: prioritized readouts, visual severity indicators, and layouts that surface the most critical parameter first instead of burying it three tabs deep. Generic alerting systems tend to over-notify, which leads teams to start ignoring alerts altogether, so thresholds here are calibrated to your specific process conditions and equipment tolerances, ensuring that when an alert fires, it actually means something is worth checking. And if you&#8217;re running more than one facility, switching between separate monitoring tools per site slows response time and makes cross-site comparison difficult \u2014 Fluidyn-Realti consolidates everything into a single dashboard, so a plant manager overseeing multiple units doesn&#8217;t need multiple logins or systems.<\/em><\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div aria-hidden=\"true\">\u00a0<\/div><div class=\"h-px w-full pointer-events-none\" aria-hidden=\"true\">\u00a0<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>NEXT-GENERATION TECHNOLOGY FOR COMPLEX ENGINEERING Fluidyn-REALTI for Real time Monitoring and Forecast Hybrid Digital Twins combining physics-based models with AI\/ML [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2783","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>New Frontiers -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"New Frontiers -\" \/>\n<meta property=\"og:description\" content=\"NEXT-GENERATION TECHNOLOGY FOR COMPLEX ENGINEERING Fluidyn-REALTI for Real time Monitoring and Forecast Hybrid Digital Twins combining physics-based models with AI\/ML [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-08T05:20:08+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/key-services\\\/\",\"url\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/key-services\\\/\",\"name\":\"New Frontiers -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/#website\"},\"datePublished\":\"2026-08-07T06:59:46+00:00\",\"dateModified\":\"2026-09-08T05:20:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/key-services\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/key-services\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/key-services\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"New Frontiers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/#website\",\"url\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dbq.kda.mybluehostin.me\\\/staging\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"New Frontiers -","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:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/","og_locale":"en_US","og_type":"article","og_title":"New Frontiers -","og_description":"NEXT-GENERATION TECHNOLOGY FOR COMPLEX ENGINEERING Fluidyn-REALTI for Real time Monitoring and Forecast Hybrid Digital Twins combining physics-based models with AI\/ML [&hellip;]","og_url":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/","article_modified_time":"2026-09-08T05:20:08+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/","url":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/","name":"New Frontiers -","isPartOf":{"@id":"https:\/\/dbq.kda.mybluehostin.me\/staging\/#website"},"datePublished":"2026-08-07T06:59:46+00:00","dateModified":"2026-09-08T05:20:08+00:00","breadcrumb":{"@id":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dbq.kda.mybluehostin.me\/staging\/key-services\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbq.kda.mybluehostin.me\/staging\/"},{"@type":"ListItem","position":2,"name":"New Frontiers"}]},{"@type":"WebSite","@id":"https:\/\/dbq.kda.mybluehostin.me\/staging\/#website","url":"https:\/\/dbq.kda.mybluehostin.me\/staging\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbq.kda.mybluehostin.me\/staging\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/pages\/2783","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/comments?post=2783"}],"version-history":[{"count":209,"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/pages\/2783\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/pages\/2783\/revisions\/3412"}],"wp:attachment":[{"href":"https:\/\/dbq.kda.mybluehostin.me\/staging\/wp-json\/wp\/v2\/media?parent=2783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}