		<div data-elementor-type="wp-page" data-elementor-id="939" class="elementor elementor-939" data-elementor-post-type="page">
				{"id":939,"date":"2025-11-03T17:41:09","date_gmt":"2025-11-03T16:41:09","guid":{"rendered":"https:\/\/newmarinello.gasweb.it\/gtot\/"},"modified":"2026-07-13T14:48:21","modified_gmt":"2026-07-13T12:48:21","slug":"gtot","status":"publish","type":"page","link":"https:\/\/newmarinello.gasweb.it\/en\/gtot\/","title":{"rendered":"Gtot, solar and optical properties"},"content":{"rendered":"<div class=\"elementor-element elementor-element-ff204d9 e-flex e-con-boxed e-con e-parent\" data-id=\"ff204d9\" 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-b0b17ac elementor-widget elementor-widget-heading\" data-id=\"b0b17ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Briefly<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d58ad54 elementor-widget elementor-widget-text-editor\" data-id=\"d58ad54\" 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>Gtot is the total factor of solar energy, i.e. the ratio between transmitted energy through the combination of glazing plus solar protection device and incident energy.<\/p><p>Gtot data reported in the downloadable pdf file are related to standard glazing (as required by reference legislation).<\/p><p>Other fabric\u2019s properties are reported; these are necessary if a qualified technician needs to asseverate the effective Gtot (referred to the combination of the present glazing with the adopted solar protection device).<\/p><p>In the document you will find more information about this.<\/p><p>Below the pdf file, two useful calculation tools are reported in order to estimate Gtot data (please consider the notes below).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8abfafd elementor-widget elementor-widget-mtw_button_widget\" data-id=\"8abfafd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mtw_button_widget.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"mtb_button \"><a href=\"https:\/\/newmarinello.gasweb.it\/wp-content\/uploads\/Gtot-proprieta-solari-e-ottiche-dei-tessuti_IT_EN.pdf\" target=\"_blank\"><i class=\"fa-solid fa-file-pdf\"><\/i><span>Gtot, solar and optical properties<\/span><\/a><\/div>        <style>\n\n        <\/style>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-93d59da e-con-full e-flex e-con e-child\" data-id=\"93d59da\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d7d58a e-n-tabs-mobile elementor-widget elementor-widget-n-tabs\" data-id=\"6d7d58a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;tabs_justify_horizontal&quot;:&quot;stretch&quot;,&quot;horizontal_scroll&quot;:&quot;disable&quot;}\" data-widget_type=\"nested-tabs.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-tabs\" data-widget-number=\"114808202\" aria-label=\"Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.\">\n\t\t\t<div class=\"e-n-tabs-heading\" role=\"tablist\">\n\t\t\t\t\t<button id=\"e-n-tab-title-1148082021\" data-tab-title-id=\"e-n-tab-title-1148082021\" class=\"e-n-tab-title\" aria-selected=\"true\" data-tab-index=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"e-n-tab-content-1148082021\" style=\"--n-tabs-title-order: 1;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tGtot data estimation with fabric outside the window\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-1148082022\" data-tab-title-id=\"e-n-tab-title-1148082022\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-1148082022\" style=\"--n-tabs-title-order: 2;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tGtot data estimation with fabric inside the window\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t<div class=\"e-n-tabs-content\">\n\t\t\t\t<div id=\"e-n-tab-content-1148082021\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1148082021\" data-tab-index=\"1\" style=\"--n-tabs-title-order: 1;\" class=\"e-active elementor-element elementor-element-5e1d66f e-con-full e-flex e-con e-child\" data-id=\"5e1d66f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-404fe61 e-flex e-con-boxed e-con e-child\" data-id=\"404fe61\" 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-eac6b43 elementor-widget elementor-widget-shortcode\" data-id=\"eac6b43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <form action=\"#\" method=\"post\" id=\"gtotFrmEsterno\">\n            <div class=\"gtot_form\">\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"G_vE\" id=\"G_vE\">\n                        <label for=\"G_vE\">\n                            Gv - total solar transmittance of the <strong>glazing<\/strong> (0 - 1)\n                        <\/label>\n                        <span>example: 0,75<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"G_vE_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"U_gE\" id=\"U_gE\">\n                        <label for=\"U_gE\">\n                            Uv - thermal transmittance of the                            <strong>glazing<\/strong>\n                            (W\/m\u00b2K)\n                        <\/label>\n                        <span>example: 3,00<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"U_gE_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"T_sE\" id=\"T_sE\">\n                        <label for=\"T_sE\">\n                            Ts - solar transmittance of the                            <strong>fabric<\/strong>\n                            (%)\n                        <\/label>\n                        <span>example: 20<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"T_sE_error\"><\/div>\n\n                <\/div>\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"A_sE\" id=\"A_sE\">\n                        <label for=\"A_sE\">\n                            As - solar absorbance of the                            <strong>fabric<\/strong>\n                            (%)\n                        <\/label>\n                        <span>example: 10<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"A_sE_error\"><\/div>\n                <\/div>\n\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"G_1E\" id=\"G_1E\" value=\"5\" readonly> <label for=\"G_1E\">G1 - Constant (fixed value) - (W\/m\u00b2K)<\/label>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"G_1E_error\"><\/div>\n                <\/div>\n\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"G_2E\" id=\"G_2E\" value=\"10\" readonly> <label for=\"G_2E\">G2 - Constant (fixed value) - (W\/m\u00b2K)<\/label>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"G_2E_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row mtb_button\">\n\n                    <button type=\"button\" id=\"btnEsterno\">Calculate External Gtot<\/button>\n                    <button type=\"button\" id=\"btnResetEsterno\">Reset<\/button>\n                <\/div>\n\n                <div class=\"risultato\">Estimated Gtot<div id=\"risultatoE\" aria-live=\"polite\" >...<\/div>\n                <\/div>\n\n\n            <\/div>\n        <\/form>\n        <!-- ====== ISTANZA \u201cESTERNO\u201d ====== -->\n        <script>\n            \/* Incolla DA QUI (dentro lo stesso IIFE dell'Interno, dopo la const interno = new GtotForm(...)) *\/\n\n            (() => {\n                class GtotForm {\n                    constructor({\n                        fields,\n                        resultId,\n                        btnCalcId,\n                        btnResetId,\n                        compute\n                    }) {\n                        this.fields = fields;\n                        this.resultEl = document.getElementById(resultId);\n                        this.btnCalc = document.getElementById(btnCalcId);\n                        this.btnReset = document.getElementById(btnResetId);\n                        this.computeFn = compute;\n                    }\n\n                    \/\/ --- utils privati ---\n                    static toNumber(str) {\n                        if (typeof str !== \"string\") return NaN;\n                        const n = str.trim().replace(\/,\/g, \".\");\n                        if (n && !\/^[+-]?\\d*(\\.\\d+)?$\/.test(n)) return NaN;\n                        return parseFloat(n);\n                    }\n                    static roundTo(n, d = 2) {\n                        const f = 10 ** d;\n                        return Math.round(n * f) \/ f;\n                    }\n                    static setError(id, msg) {\n                        const err = document.getElementById(`${id}_error`);\n                        const input = document.getElementById(id);\n                        if (err) err.textContent = msg || \"\";\n                        if (input) {\n                            input.setAttribute(\"aria-invalid\", msg ? \"true\" : \"false\");\n                            input.style.outline = msg ? \"2px solid red\" : \"\";\n                        }\n                    }\n\n                    readValues() {\n                        const values = {},\n                            valids = {};\n                        for (const [id, def] of Object.entries(this.fields)) {\n                            const raw = document.getElementById(id)?.value ?? \"\";\n                            const v = def.parse(raw);\n                            values[id] = v;\n                            valids[id] = def.validate(v);\n                        }\n                        return {\n                            values,\n                            valids\n                        };\n                    }\n                    allValid(valids) {\n                        return Object.values(valids).every(Boolean);\n                    }\n\n                    \/\/ valida SOLO il campo passato\n                    validateField(id) {\n                        const def = this.fields[id];\n                        if (!def) return;\n                        const v = def.parse(document.getElementById(id)?.value ?? \"\");\n                        const ok = def.validate(v);\n                        GtotForm.setError(id, ok ? \"\" : def.msg);\n                    }\n\n                    computeSilent() {\n                        const {\n                            values,\n                            valids\n                        } = this.readValues();\n                        if (!this.resultEl) return;\n                        if (!this.allValid(valids)) {\n                            this.resultEl.textContent = \"\/\";\n                            return;\n                        }\n                        const val = this.computeFn(values);\n                        this.resultEl.textContent = Number(GtotForm.roundTo(val, 2).toFixed(2)).toLocaleString('it-IT', {\n                            minimumFractionDigits: 2,\n                            maximumFractionDigits: 2\n                        });\n                    }\n\n                    validateAllWithErrors() {\n                        let ok = true;\n                        for (const [id, def] of Object.entries(this.fields)) {\n                            const v = def.parse(document.getElementById(id)?.value ?? \"\");\n                            const isOk = def.validate(v);\n                            GtotForm.setError(id, isOk ? \"\" : def.msg);\n                            if (!isOk) ok = false;\n                        }\n                        return ok;\n                    }\n\n                    mount() {\n                        \/\/ Click: valida tutto e calcola\n                        this.btnCalc?.addEventListener(\"click\", () => {\n                            const ok = this.validateAllWithErrors();\n                            if (ok) this.computeSilent();\n                            else if (this.resultEl) this.resultEl.textContent = \"\/\";\n                        });\n\n                        \/\/ Reset: ripulisce solo gli elementi di questo form\n                        this.btnReset?.addEventListener(\"click\", () => {\n                            const form = this.btnReset.closest(\"form\");\n                            if (form) form.reset();\n                            for (const id of Object.keys(this.fields)) GtotForm.setError(id, \"\");\n                            if (this.resultEl) this.resultEl.textContent = \"\/\";\n                        });\n\n                        \/\/ Validazione per-campo + ricalcolo silenzioso\n                        for (const id of Object.keys(this.fields)) {\n                            const el = document.getElementById(id);\n                            if (!el) continue;\n                            const onOne = () => {\n                                this.validateField(id);\n                                this.computeSilent();\n                            };\n                            el.addEventListener(\"input\", onOne);\n                            el.addEventListener(\"change\", onOne);\n                            el.addEventListener(\"blur\", onOne);\n                        }\n                    }\n                }\n\n                \/\/ ====== ISTANZA \u201cINTERNO\u201d ======\n                \/\/ Campi attesi nell\u2019HTML: G_vI, U_gI, R_sI, A_sI, G_3I\n                \/\/ Error containers: G_vI_error, ecc.\n                \/\/ Bottoni: btnInterno, btnResetInterno\n                \/\/ Risultato: risultatoI\n                const esternoFields = {\n                    G_vE: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 1,\n                        msg: 'Value between 0 and 1.'\n                    },\n                    U_gE: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n > 0,\n                        msg: 'Number > 0 (W\/m\u00b2K).'\n                    },\n                    T_sE: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 100,\n                        msg: 'Percentage between 0 and 100.'\n                    },\n                    A_sE: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 100,\n                        msg: 'Percentage between 0 and 100.'\n                    },\n                    G_1E: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n > 0,\n                        msg: 'Number > 0 (W\/m\u00b2K).'\n                    },\n                    G_2E: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n > 0,\n                        msg: 'Number > 0 (W\/m\u00b2K).'\n                    }\n                };\n\n                const esterno = new GtotForm({\n                    fields: esternoFields,\n                    resultId: \"risultatoE\",\n                    btnCalcId: \"btnEsterno\",\n                    btnResetId: \"btnResetEsterno\",\n                    compute: ({\n                        G_vE,\n                        U_gE,\n                        T_sE,\n                        A_sE,\n                        G_1E,\n                        G_2E\n                    }) => {\n                        const GE = 1 \/ (1 \/ U_gE + 1 \/ G_1E + 1 \/ G_2E);\n                        const Ts = T_sE \/ 100;\n                        const As = A_sE \/ 100;\n                        \/\/ g_totE = Ts*Gv + As*(GE\/G2) + (Ts*(1-Gv))*(GE\/G1)\n                        return Ts * G_vE + As * (GE \/ G_2E) + (Ts * (1 - G_vE)) * (GE \/ G_1E);\n                    }\n                });\n\n                \/\/ *** Sostituisci la vecchia riga DOMContentLoaded con questa: ***\n                document.addEventListener(\"DOMContentLoaded\", () => {\n                    esterno.mount();\n                });\n            })();\n        <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-1148082022\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-1148082022\" data-tab-index=\"2\" style=\"--n-tabs-title-order: 2;\" class=\" elementor-element elementor-element-4c51cd6 e-con-full e-flex e-con e-child\" data-id=\"4c51cd6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-bfa6aab e-flex e-con-boxed e-con e-child\" data-id=\"bfa6aab\" 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-2130633 elementor-widget elementor-widget-shortcode\" data-id=\"2130633\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <form action=\"#\" method=\"post\" id=\"gtotFrmInterno\">\n            <div class=\"gtot_form\">\n                <div class=\"gtot_form_row\">\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"G_vI\" id=\"G_vI\">\n                        <label for=\"G_vI\">\n                            Gv - total solar transmittance of the                            <strong>glazing<\/strong>\n                            (0 - 1)\n                        <\/label>\n                        <span>example: 0,75<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"G_vI_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row\">\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"U_gI\" id=\"U_gI\"> <label for=\"U_gI\">\n                            Uv - thermal transmittance of the                            <strong>glazing<\/strong>\n                            (W\/m\u00b2K)\n\n                        <\/label>\n                        <span>example: 3,00<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"U_gI_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row\">\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"T_sI\" id=\"T_sI\"> <label for=\"T_sI\">\n                            Rs - solar reflectance of the                            <strong>fabric<\/strong>\n                            (%)\n                        <\/label>\n                        <span>example: 20<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"T_sI_error\"><\/div>\n                <\/div>\n                <div class=\"gtot_form_row\">\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"A_sI\" id=\"A_sI\"> <label for=\"A_sI\">\n                            As - solar absorbance of the                            <strong>fabric<\/strong>\n                            (%)\n                        <\/label>\n                        <span>example: 10<\/span>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"A_sI_error\"><\/div>\n                <\/div>\n\n                <div class=\"gtot_form_row\">\n\n                    <div class=\"gtot_form_input\">\n                        <input required type=\"text\" name=\"G_3I\" id=\"G_3I\" value=\"30\" readonly> <label for=\"G_3I\">G3 - Constant (fixed value) - (W\/m\u00b2K)<\/label>\n                    <\/div>\n                    <div class=\"gtot-form-error\" role=\"alert\" id=\"G_3I_error\"><\/div>\n                <\/div>\n\n                <div class=\"gtot_form_row mtb_button\">\n                    <button type=\"button\" id=\"btnInterno\">Calculate Internal Gtot<\/button>\n                    <button type=\"button\" id=\"btnResetInterno\">Reset<\/button>\n                <\/div>\n\n                <div class=\"risultato\">Estimated Gtot<div id=\"risultatoI\" aria-live=\"polite\" >...<\/div>\n                <\/div>\n\n\n            <\/div>\n        <\/form>\n        <script>\n            (() => {\n                class GtotForm {\n                    constructor({\n                        fields,\n                        resultId,\n                        btnCalcId,\n                        btnResetId,\n                        compute\n                    }) {\n                        this.fields = fields;\n                        this.resultEl = document.getElementById(resultId);\n                        this.btnCalc = document.getElementById(btnCalcId);\n                        this.btnReset = document.getElementById(btnResetId);\n                        this.computeFn = compute;\n                    }\n\n                    \/\/ --- utils privati ---\n                    static toNumber(str) {\n                        if (typeof str !== \"string\") return NaN;\n                        const n = str.trim().replace(\/,\/g, \".\");\n                        if (n && !\/^[+-]?\\d*(\\.\\d+)?$\/.test(n)) return NaN;\n                        return parseFloat(n);\n                    }\n                    static roundTo(n, d = 2) {\n                        const f = 10 ** d;\n                        return Math.round(n * f) \/ f;\n                    }\n                    static setError(id, msg) {\n                        const err = document.getElementById(`${id}_error`);\n                        const input = document.getElementById(id);\n                        if (err) err.textContent = msg || \"\";\n                        if (input) {\n                            input.setAttribute(\"aria-invalid\", msg ? \"true\" : \"false\");\n                            input.style.outline = msg ? \"2px solid red\" : \"\";\n                        }\n                    }\n\n                    readValues() {\n                        const values = {},\n                            valids = {};\n                        for (const [id, def] of Object.entries(this.fields)) {\n                            const raw = document.getElementById(id)?.value ?? \"\";\n                            const v = def.parse(raw);\n                            values[id] = v;\n                            valids[id] = def.validate(v);\n                        }\n                        return {\n                            values,\n                            valids\n                        };\n                    }\n                    allValid(valids) {\n                        return Object.values(valids).every(Boolean);\n                    }\n\n                    \/\/ valida SOLO il campo passato\n                    validateField(id) {\n                        const def = this.fields[id];\n                        if (!def) return;\n                        const v = def.parse(document.getElementById(id)?.value ?? \"\");\n                        const ok = def.validate(v);\n                        GtotForm.setError(id, ok ? \"\" : def.msg);\n                    }\n\n                    computeSilent() {\n                        const {\n                            values,\n                            valids\n                        } = this.readValues();\n                        if (!this.resultEl) return;\n                        if (!this.allValid(valids)) {\n                            this.resultEl.textContent = \"\/\";\n                            return;\n                        }\n                        const val = this.computeFn(values);\n                        this.resultEl.textContent = Number(GtotForm.roundTo(val, 2).toFixed(2)).toLocaleString('it-IT', {\n                            minimumFractionDigits: 2,\n                            maximumFractionDigits: 2\n                        });\n\n                    }\n\n                    validateAllWithErrors() {\n                        let ok = true;\n                        for (const [id, def] of Object.entries(this.fields)) {\n                            const v = def.parse(document.getElementById(id)?.value ?? \"\");\n                            const isOk = def.validate(v);\n                            GtotForm.setError(id, isOk ? \"\" : def.msg);\n                            if (!isOk) ok = false;\n                        }\n                        return ok;\n                    }\n\n                    mount() {\n                        \/\/ Click: valida tutto e calcola\n                        this.btnCalc?.addEventListener(\"click\", () => {\n                            const ok = this.validateAllWithErrors();\n                            if (ok) this.computeSilent();\n                            else if (this.resultEl) this.resultEl.textContent = \"\/\";\n                        });\n\n                        \/\/ Reset: ripulisce solo gli elementi di questo form\n                        this.btnReset?.addEventListener(\"click\", () => {\n                            const form = this.btnReset.closest(\"form\");\n                            if (form) form.reset();\n                            for (const id of Object.keys(this.fields)) GtotForm.setError(id, \"\");\n                            if (this.resultEl) this.resultEl.textContent = \"\/\";\n                        });\n\n                        \/\/ Validazione per-campo + ricalcolo silenzioso\n                        for (const id of Object.keys(this.fields)) {\n                            const el = document.getElementById(id);\n                            if (!el) continue;\n                            const onOne = () => {\n                                this.validateField(id);\n                                this.computeSilent();\n                            };\n                            el.addEventListener(\"input\", onOne);\n                            el.addEventListener(\"change\", onOne);\n                            el.addEventListener(\"blur\", onOne);\n                        }\n                    }\n                }\n\n                \/\/ ====== ISTANZA \u201cINTERNO\u201d ======\n                \/\/ Campi attesi nell\u2019HTML: G_vI, U_gI, R_sI, A_sI, G_3I\n                \/\/ Error containers: G_vI_error, ecc.\n                \/\/ Bottoni: btnInterno, btnResetInterno\n                \/\/ Risultato: risultatoI\n                const internoFields = {\n                    G_vI: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 1,\n                        msg: 'Value between 0 and 1.'\n                    },\n                    U_gI: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n > 0,\n                        msg: 'Number > 0 (W\/m\u00b2K).'\n                    },\n                    T_sI: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 100,\n                        msg: 'Percentage between 0 and 100.'\n                    },\n                    A_sI: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n >= 0 && n <= 100,\n                        msg: 'Percentage between 0 and 100.'\n                    },\n                    G_3I: {\n                        parse: GtotForm.toNumber,\n                        validate: n => isFinite(n) && n > 0,\n                        msg: 'Number > 0 (W\/m\u00b2K).'\n                    }\n                };\n\n                const interno = new GtotForm({\n                    fields: internoFields,\n                    resultId: \"risultatoI\",\n                    btnCalcId: \"btnInterno\",\n                    btnResetId: \"btnResetInterno\",\n                    compute: ({\n                        G_vI,\n                        U_gI,\n                        T_sI,\n                        A_sI,\n                        G_3I\n                    }) => {\n                        const GI = 1 \/ (1 \/ U_gI + 1 \/ G_3I);\n                        const Ts = T_sI \/ 100,\n                            As = A_sI \/ 100;\n                        g_totI = G_vI * (1 - (G_vI * Ts) - (As * (GI \/ G_3I)));\n                        console.log(g_totI);\n                        return G_vI * (1 - (G_vI * Ts) - (As * (GI \/ G_3I)));\n                    }\n                });\n\n                document.addEventListener(\"DOMContentLoaded\", () => interno.mount());\n            })();\n        <\/script>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e2b6e0 elementor-widget elementor-widget-text-editor\" data-id=\"5e2b6e0\" 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>Calculation is executed using simplified calculation method as described by standard UNI EN ISO 52022-1, simple to use but with a higher approximation degree.<\/p><p>For a more accurate calculation refer to standard UNI EN ISO 52022-3 \u201cDetailed calculation method of the solar and daylight characteristics for solar protection devices combined with glazing\u201d.<\/p><p><strong>Please note that this calculator is only an evaluation tool. The obtained results cannot be in any way certified and \/ or challenged.<\/strong><\/p><p><strong>Marinello Tende srl does not take responsibility for any inaccuracies or consequences deriving from the use of this calculation tool.<\/strong><\/p><p><strong>By using this calculator, the user accepts what previously reported.<\/strong><\/p><p>\u00a0<\/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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Gv &#8211; fattore solare del vetro (0 &#8211; 1) esempio: 0,75 Uv \u2013 trasmittanza termica del vetro (W\/m\u00b2K) esempio: 3,00 Ts \u2013 trasmissione solare del tessuto (%) esempio: 0,75 As \u2013 assorbimento solare del tessuto (%) esempio: 0,75 G1 \u2013 Costante (valore fisso) &#8211; (W\/m\u00b2K) G2 \u2013 Costante (valore fisso) &#8211; (W\/m\u00b2K) Calcola Gtot Esterno [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":200,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-939","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/pages\/939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/comments?post=939"}],"version-history":[{"count":0,"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/pages\/939\/revisions"}],"wp:attachment":[{"href":"https:\/\/newmarinello.gasweb.it\/en\/wp-json\/wp\/v2\/media?parent=939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}