--- myst: substitutions: macro: python: 1-5,16-46,49-55,58-63,66-73 cpp: 8-31,35-48,51-55,58-65,73 bloc1: python: "17" cpp: "8" bloc2: python: 19-27 cpp: 10-18 bloc3: python: 29-45 cpp: 20-29 bloc4: python: "55" cpp: "48" bloc5: python: "59" cpp: "52" bloc6: python: "73" cpp: "65" console: python: 2-27 cpp: 6-31 dedent: python: "" cpp: "4" --- # Macro "**sensitivitySobolFunctionFlowrateRunner.{{extension}}**" ## Objective The objective of this macro is to perform Sobol sensitivity analysis on a set of eight parameters used in the `flowrateModel` model described in [](#launcher_introduction_simple_case_problem), but this time using the {{Relaun}} architecture. ## Macro {{uranie}} {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + macro[language] + "\n" + "```" }} The function `flowrateModel` is loaded from the macro `UserFunctions.C` (the file can be found in `${URANIESYS}/share/uranie/macros`) {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc1[language] + "\n" + "```" }} Each parameter is related to the {{tds}} as a `TAttribute` and obeys an uniform law on specific interval: {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc2[language] + "\n" + "```" }} The interface to the function is then defined, using the {{Relaun}} interface, through a `TCIntEval` object and a sequential runner: {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc3[language] + "\n" + "```" }} To instantiate the `TSobol`, one uses the {{tds}}, a pointer to the runner and the number of samplings needed to perform sensitivity analysis (here ns=600): {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc4[language] + "\n" + ":dedent: " + dedent[language] + "\n" + "```" }} Computation of the sensitivity indexes: {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc5[language] + "\n" + ":dedent: " + dedent[language] + "\n" + "```" }} Data are exported from the {{tds}} to an ASCII file: {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner." + extension + "\n" + ":language: " + language + "\n" + ":lines: " + bloc6[language] + "\n" + ":dedent: " + dedent[language] + "\n" + "```" }} ## Graph {{ "```{" "figure" "} " + parent_dir + "/roottest/build/uranie/doc/sensitivity/use_cases/" + language + "/sobol_runner/sensitivitySobolFunctionFlowrateRunner.png\n" + ":align: center\n" + ":name: use_cases_sensitivitySobolFunctionFlowrateRunner\n" + figure_scale + "\n" + "\n" + "Graph of the macro **\"sensitivitySobolFunctionFlowrateRunner." + extension + "\"**" + "\n" + "```" }} ## Console {{ "```{" "literalinclude" "} " + parent_dir + "/roottest/build/uranie/doc/sensitivity/use_cases/" + language + "/sensitivitySobolFunctionFlowrateRunner_clean.log" + "\n" + ":language: none\n" + ":lines: " + console[language] + "\n" + "```" }}