Full Code of Ifsttar/I-Simpa for AI

main 929a5c8e5f59 cached
2284 files
29.1 MB
7.8M tokens
3687 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (31,153K chars total). Download the full file to get everything.
Repository: Ifsttar/I-Simpa
Branch: main
Commit: 929a5c8e5f59
Files: 2284
Total size: 29.1 MB

Directory structure:
gitextract_46o2u985/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── custom.md
│   │   └── feature_request.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── CI_main.yml
│       ├── actions/
│       │   └── windows/
│       │       └── getCcache/
│       │           └── action.yml
│       ├── flatpak.yml
│       ├── sub_buildLinux.yml
│       ├── sub_buildMacOS.yml
│       ├── sub_buildWindows.yml
│       ├── sub_prepare.yml
│       └── sub_wrapup.yml
├── .gitignore
├── .readthedocs.yml
├── .tx/
│   └── config
├── CHANGELOG.md
├── CMakeLists.txt
├── DESCRIPTION.txt
├── Docs/
│   ├── Building.md
│   ├── I_Simpa_overview.rst
│   ├── I_Simpa_standard.rst
│   ├── License.txt
│   ├── _Footer.md
│   ├── _Sidebar.md
│   ├── bibliography.bib
│   ├── code_SPPS.rst
│   ├── code_SPPS_Validation.rst
│   ├── code_SPPS_modelling.rst
│   ├── code_SPPS_principle.rst
│   ├── code_TCR.rst
│   ├── code_characteristics.rst
│   ├── code_configuration_SPPS.rst
│   ├── code_configuration_TCR.rst
│   ├── code_configuration_frequency_bands.rst
│   ├── code_configuration_job.rst
│   ├── code_configuration_meshing.rst
│   ├── code_configuration_run.rst
│   ├── conf.py
│   ├── console_window.rst
│   ├── create_charts.rst
│   ├── define_position.rst
│   ├── element_properties_sound_level_results.rst
│   ├── errors_messages.rst
│   ├── file_csbin.rst
│   ├── file_gabe.rst
│   ├── file_gap.rst
│   ├── file_pbin.rst
│   ├── file_recp.rst
│   ├── file_recps.rst
│   ├── file_rpi.rst
│   ├── freecad_create_room.rst
│   ├── glossary.rst
│   ├── import_file_recommandations.rst
│   ├── import_options.rst
│   ├── index.rst
│   ├── main_windows.rst
│   ├── manipulate_sources_receivers.rst
│   ├── menu_edition.rst
│   ├── menu_file.rst
│   ├── menu_help.rst
│   ├── menu_simulation.rst
│   ├── menu_view.rst
│   ├── menu_windows.rst
│   ├── menus.rst
│   ├── presentation.rst
│   ├── project_database.rst
│   ├── project_window.rst
│   ├── properties_window.rst
│   ├── references.rst
│   ├── requirements.txt
│   ├── room_acoustics_parameters.rst
│   ├── setup.rst
│   ├── surface_selection.rst
│   ├── tab_calculation.rst
│   ├── tab_results.rst
│   ├── tab_scene.rst
│   ├── toolbar_meshing.rst
│   ├── toolbar_project.rst
│   ├── toolbar_selection.rst
│   ├── toolbar_simulation.rst
│   ├── toolbar_view_camera.rst
│   ├── toolbars.rst
│   ├── tutorial_Elmia_hall.rst
│   ├── tutorial_industrial_hall.rst
│   ├── tutorial_teaching_room.rst
│   ├── using_directivity.rst
│   ├── using_spectrum.rst
│   ├── validations/
│   │   ├── validation_atmospheric_absorption.rst
│   │   ├── validation_clarity_calculation.rst
│   │   └── validation_notice.rst
│   └── ystatic/
│       └── MathJax-2.7.5/
│           ├── MathJax.js
│           ├── config/
│           │   ├── AM_CHTML-full.js
│           │   ├── AM_CHTML.js
│           │   ├── AM_HTMLorMML-full.js
│           │   ├── AM_HTMLorMML.js
│           │   ├── AM_SVG-full.js
│           │   ├── AM_SVG.js
│           │   ├── Accessible-full.js
│           │   ├── Accessible.js
│           │   ├── MML_CHTML-full.js
│           │   ├── MML_CHTML.js
│           │   ├── MML_HTMLorMML-full.js
│           │   ├── MML_HTMLorMML.js
│           │   ├── MML_SVG-full.js
│           │   ├── MML_SVG.js
│           │   ├── MMLorHTML.js
│           │   ├── Safe.js
│           │   ├── TeX-AMS-MML_HTMLorMML-full.js
│           │   ├── TeX-AMS-MML_HTMLorMML.js
│           │   ├── TeX-AMS-MML_SVG-full.js
│           │   ├── TeX-AMS-MML_SVG.js
│           │   ├── TeX-AMS_CHTML-full.js
│           │   ├── TeX-AMS_CHTML.js
│           │   ├── TeX-AMS_HTML-full.js
│           │   ├── TeX-AMS_HTML.js
│           │   ├── TeX-AMS_SVG-full.js
│           │   ├── TeX-AMS_SVG.js
│           │   ├── TeX-MML-AM_CHTML-full.js
│           │   ├── TeX-MML-AM_CHTML.js
│           │   ├── TeX-MML-AM_HTMLorMML-full.js
│           │   ├── TeX-MML-AM_HTMLorMML.js
│           │   ├── TeX-MML-AM_SVG-full.js
│           │   ├── TeX-MML-AM_SVG.js
│           │   ├── default.js
│           │   └── local/
│           │       └── local.js
│           ├── extensions/
│           │   ├── AssistiveMML.js
│           │   ├── CHTML-preview.js
│           │   ├── FontWarnings.js
│           │   ├── HTML-CSS/
│           │   │   └── handle-floats.js
│           │   ├── HelpDialog.js
│           │   ├── MatchWebFonts.js
│           │   ├── MathEvents.js
│           │   ├── MathML/
│           │   │   ├── content-mathml.js
│           │   │   └── mml3.js
│           │   ├── MathMenu.js
│           │   ├── MathZoom.js
│           │   ├── Safe.js
│           │   ├── TeX/
│           │   │   ├── AMScd.js
│           │   │   ├── AMSmath.js
│           │   │   ├── AMSsymbols.js
│           │   │   ├── HTML.js
│           │   │   ├── action.js
│           │   │   ├── autobold.js
│           │   │   ├── autoload-all.js
│           │   │   ├── bbox.js
│           │   │   ├── begingroup.js
│           │   │   ├── boldsymbol.js
│           │   │   ├── cancel.js
│           │   │   ├── color.js
│           │   │   ├── enclose.js
│           │   │   ├── extpfeil.js
│           │   │   ├── mathchoice.js
│           │   │   ├── mediawiki-texvc.js
│           │   │   ├── mhchem.js
│           │   │   ├── mhchem3/
│           │   │   │   └── mhchem.js
│           │   │   ├── newcommand.js
│           │   │   ├── noErrors.js
│           │   │   ├── noUndefined.js
│           │   │   ├── unicode.js
│           │   │   └── verb.js
│           │   ├── a11y/
│           │   │   ├── accessibility-menu.js
│           │   │   ├── auto-collapse.js
│           │   │   ├── collapsible.js
│           │   │   ├── explorer.js
│           │   │   ├── invalid_keypress.ogg
│           │   │   ├── mathjax-sre.js
│           │   │   ├── mathmaps/
│           │   │   │   ├── en/
│           │   │   │   │   ├── functions/
│           │   │   │   │   │   ├── algebra.js
│           │   │   │   │   │   ├── elementary.js
│           │   │   │   │   │   ├── hyperbolic.js
│           │   │   │   │   │   └── trigonometry.js
│           │   │   │   │   ├── symbols/
│           │   │   │   │   │   ├── greek-capital.js
│           │   │   │   │   │   ├── greek-mathfonts-bold.js
│           │   │   │   │   │   ├── greek-mathfonts-italic.js
│           │   │   │   │   │   ├── greek-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── greek-scripts.js
│           │   │   │   │   │   ├── greek-small.js
│           │   │   │   │   │   ├── greek-symbols.js
│           │   │   │   │   │   ├── hebrew_letters.js
│           │   │   │   │   │   ├── latin-lower-double-accent.js
│           │   │   │   │   │   ├── latin-lower-normal.js
│           │   │   │   │   │   ├── latin-lower-phonetic.js
│           │   │   │   │   │   ├── latin-lower-single-accent.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-script.js
│           │   │   │   │   │   ├── latin-mathfonts-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-double-struck.js
│           │   │   │   │   │   ├── latin-mathfonts-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-monospace.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif.js
│           │   │   │   │   │   ├── latin-mathfonts-script.js
│           │   │   │   │   │   ├── latin-rest.js
│           │   │   │   │   │   ├── latin-upper-double-accent.js
│           │   │   │   │   │   ├── latin-upper-normal.js
│           │   │   │   │   │   ├── latin-upper-single-accent.js
│           │   │   │   │   │   ├── math_angles.js
│           │   │   │   │   │   ├── math_arrows.js
│           │   │   │   │   │   ├── math_characters.js
│           │   │   │   │   │   ├── math_delimiters.js
│           │   │   │   │   │   ├── math_digits.js
│           │   │   │   │   │   ├── math_geometry.js
│           │   │   │   │   │   ├── math_harpoons.js
│           │   │   │   │   │   ├── math_non_characters.js
│           │   │   │   │   │   ├── math_symbols.js
│           │   │   │   │   │   ├── math_whitespace.js
│           │   │   │   │   │   └── other_stars.js
│           │   │   │   │   └── units/
│           │   │   │   │       ├── energy.js
│           │   │   │   │       ├── length.js
│           │   │   │   │       ├── memory.js
│           │   │   │   │       ├── other.js
│           │   │   │   │       ├── speed.js
│           │   │   │   │       ├── temperature.js
│           │   │   │   │       ├── time.js
│           │   │   │   │       ├── volume.js
│           │   │   │   │       └── weight.js
│           │   │   │   ├── es/
│           │   │   │   │   ├── functions/
│           │   │   │   │   │   ├── algebra.js
│           │   │   │   │   │   ├── elementary.js
│           │   │   │   │   │   ├── hyperbolic.js
│           │   │   │   │   │   └── trigonometry.js
│           │   │   │   │   ├── symbols/
│           │   │   │   │   │   ├── greek-capital.js
│           │   │   │   │   │   ├── greek-mathfonts-bold.js
│           │   │   │   │   │   ├── greek-mathfonts-italic.js
│           │   │   │   │   │   ├── greek-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── greek-scripts.js
│           │   │   │   │   │   ├── greek-small.js
│           │   │   │   │   │   ├── greek-symbols.js
│           │   │   │   │   │   ├── hebrew_letters.js
│           │   │   │   │   │   ├── latin-lower-double-accent.js
│           │   │   │   │   │   ├── latin-lower-normal.js
│           │   │   │   │   │   ├── latin-lower-phonetic.js
│           │   │   │   │   │   ├── latin-lower-single-accent.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-script.js
│           │   │   │   │   │   ├── latin-mathfonts-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-double-struck.js
│           │   │   │   │   │   ├── latin-mathfonts-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-monospace.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif.js
│           │   │   │   │   │   ├── latin-mathfonts-script.js
│           │   │   │   │   │   ├── latin-rest.js
│           │   │   │   │   │   ├── latin-upper-double-accent.js
│           │   │   │   │   │   ├── latin-upper-normal.js
│           │   │   │   │   │   ├── latin-upper-single-accent.js
│           │   │   │   │   │   ├── math_angles.js
│           │   │   │   │   │   ├── math_arrows.js
│           │   │   │   │   │   ├── math_characters.js
│           │   │   │   │   │   ├── math_delimiters.js
│           │   │   │   │   │   ├── math_digits.js
│           │   │   │   │   │   ├── math_geometry.js
│           │   │   │   │   │   ├── math_harpoons.js
│           │   │   │   │   │   ├── math_non_characters.js
│           │   │   │   │   │   ├── math_symbols.js
│           │   │   │   │   │   ├── math_whitespace.js
│           │   │   │   │   │   └── other_stars.js
│           │   │   │   │   └── units/
│           │   │   │   │       ├── energy.js
│           │   │   │   │       ├── length.js
│           │   │   │   │       ├── memory.js
│           │   │   │   │       ├── other.js
│           │   │   │   │       ├── speed.js
│           │   │   │   │       ├── temperature.js
│           │   │   │   │       ├── time.js
│           │   │   │   │       ├── volume.js
│           │   │   │   │       └── weight.js
│           │   │   │   └── mathmaps_ie.js
│           │   │   ├── semantic-enrich.js
│           │   │   └── wgxpath.install.js
│           │   ├── asciimath2jax.js
│           │   ├── fast-preview.js
│           │   ├── jsMath2jax.js
│           │   ├── mml2jax.js
│           │   ├── tex2jax.js
│           │   └── toMathML.js
│           ├── jax/
│           │   ├── element/
│           │   │   └── mml/
│           │   │       ├── jax.js
│           │   │       └── optable/
│           │   │           ├── Arrows.js
│           │   │           ├── BasicLatin.js
│           │   │           ├── CombDiacritMarks.js
│           │   │           ├── CombDiactForSymbols.js
│           │   │           ├── Dingbats.js
│           │   │           ├── GeneralPunctuation.js
│           │   │           ├── GeometricShapes.js
│           │   │           ├── GreekAndCoptic.js
│           │   │           ├── Latin1Supplement.js
│           │   │           ├── LetterlikeSymbols.js
│           │   │           ├── MathOperators.js
│           │   │           ├── MiscMathSymbolsA.js
│           │   │           ├── MiscMathSymbolsB.js
│           │   │           ├── MiscSymbolsAndArrows.js
│           │   │           ├── MiscTechnical.js
│           │   │           ├── SpacingModLetters.js
│           │   │           ├── SuppMathOperators.js
│           │   │           ├── SupplementalArrowsA.js
│           │   │           └── SupplementalArrowsB.js
│           │   ├── input/
│           │   │   ├── AsciiMath/
│           │   │   │   ├── config.js
│           │   │   │   └── jax.js
│           │   │   ├── MathML/
│           │   │   │   ├── config.js
│           │   │   │   ├── entities/
│           │   │   │   │   ├── a.js
│           │   │   │   │   ├── b.js
│           │   │   │   │   ├── c.js
│           │   │   │   │   ├── d.js
│           │   │   │   │   ├── e.js
│           │   │   │   │   ├── f.js
│           │   │   │   │   ├── fr.js
│           │   │   │   │   ├── g.js
│           │   │   │   │   ├── h.js
│           │   │   │   │   ├── i.js
│           │   │   │   │   ├── j.js
│           │   │   │   │   ├── k.js
│           │   │   │   │   ├── l.js
│           │   │   │   │   ├── m.js
│           │   │   │   │   ├── n.js
│           │   │   │   │   ├── o.js
│           │   │   │   │   ├── opf.js
│           │   │   │   │   ├── p.js
│           │   │   │   │   ├── q.js
│           │   │   │   │   ├── r.js
│           │   │   │   │   ├── s.js
│           │   │   │   │   ├── scr.js
│           │   │   │   │   ├── t.js
│           │   │   │   │   ├── u.js
│           │   │   │   │   ├── v.js
│           │   │   │   │   ├── w.js
│           │   │   │   │   ├── x.js
│           │   │   │   │   ├── y.js
│           │   │   │   │   └── z.js
│           │   │   │   └── jax.js
│           │   │   └── TeX/
│           │   │       ├── config.js
│           │   │       └── jax.js
│           │   └── output/
│           │       ├── CommonHTML/
│           │       │   ├── autoload/
│           │       │   │   ├── annotation-xml.js
│           │       │   │   ├── maction.js
│           │       │   │   ├── menclose.js
│           │       │   │   ├── mglyph.js
│           │       │   │   ├── mmultiscripts.js
│           │       │   │   ├── ms.js
│           │       │   │   ├── mtable.js
│           │       │   │   └── multiline.js
│           │       │   ├── config.js
│           │       │   ├── fonts/
│           │       │   │   └── TeX/
│           │       │   │       ├── AMS-Regular.js
│           │       │   │       ├── Caligraphic-Bold.js
│           │       │   │       ├── Fraktur-Bold.js
│           │       │   │       ├── Fraktur-Regular.js
│           │       │   │       ├── Main-Bold.js
│           │       │   │       ├── Math-BoldItalic.js
│           │       │   │       ├── SansSerif-Bold.js
│           │       │   │       ├── SansSerif-Italic.js
│           │       │   │       ├── SansSerif-Regular.js
│           │       │   │       ├── Script-Regular.js
│           │       │   │       ├── Typewriter-Regular.js
│           │       │   │       ├── fontdata-extra.js
│           │       │   │       └── fontdata.js
│           │       │   └── jax.js
│           │       ├── HTML-CSS/
│           │       │   ├── autoload/
│           │       │   │   ├── annotation-xml.js
│           │       │   │   ├── maction.js
│           │       │   │   ├── menclose.js
│           │       │   │   ├── mglyph.js
│           │       │   │   ├── mmultiscripts.js
│           │       │   │   ├── ms.js
│           │       │   │   ├── mtable.js
│           │       │   │   └── multiline.js
│           │       │   ├── config.js
│           │       │   ├── fonts/
│           │       │   │   ├── Asana-Math/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Gyre-Pagella/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Gyre-Termes/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Latin-Modern/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size7/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Neo-Euler/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── STIX/
│           │       │   │   │   ├── General/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── Arrows.js
│           │       │   │   │   │   │   ├── BBBold.js
│           │       │   │   │   │   │   ├── BoldFraktur.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiacritMarks.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GeometricShapes.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekBold.js
│           │       │   │   │   │   │   ├── GreekSSBold.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LatinExtendedD.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathBold.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSBold.js
│           │       │   │   │   │   │   ├── MiscMathSymbolsA.js
│           │       │   │   │   │   │   ├── MiscMathSymbolsB.js
│           │       │   │   │   │   │   ├── MiscSymbols.js
│           │       │   │   │   │   │   ├── MiscTechnical.js
│           │       │   │   │   │   │   ├── NumberForms.js
│           │       │   │   │   │   │   ├── PhoneticExtensions.js
│           │       │   │   │   │   │   ├── SpacingModLetters.js
│           │       │   │   │   │   │   ├── SuperAndSubscripts.js
│           │       │   │   │   │   │   └── SuppMathOperators.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── BasicLatin.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekBoldItalic.js
│           │       │   │   │   │   │   ├── GreekSSBoldItalic.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathBoldItalic.js
│           │       │   │   │   │   │   ├── MathBoldScript.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSItalicBold.js
│           │       │   │   │   │   │   └── SpacingModLetters.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekItalic.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathItalic.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSItalic.js
│           │       │   │   │   │   │   ├── MathScript.js
│           │       │   │   │   │   │   ├── SpacingModLetters.js
│           │       │   │   │   │   │   └── ij.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── AlphaPresentForms.js
│           │       │   │   │   │       ├── Arrows.js
│           │       │   │   │   │       ├── BBBold.js
│           │       │   │   │   │       ├── BlockElements.js
│           │       │   │   │   │       ├── BoldFraktur.js
│           │       │   │   │   │       ├── BoxDrawing.js
│           │       │   │   │   │       ├── CJK.js
│           │       │   │   │   │       ├── CombDiacritMarks.js
│           │       │   │   │   │       ├── CombDiactForSymbols.js
│           │       │   │   │   │       ├── ControlPictures.js
│           │       │   │   │   │       ├── CurrencySymbols.js
│           │       │   │   │   │       ├── Cyrillic.js
│           │       │   │   │   │       ├── Dingbats.js
│           │       │   │   │   │       ├── EnclosedAlphanum.js
│           │       │   │   │   │       ├── Fraktur.js
│           │       │   │   │   │       ├── GeneralPunctuation.js
│           │       │   │   │   │       ├── GeometricShapes.js
│           │       │   │   │   │       ├── GreekAndCoptic.js
│           │       │   │   │   │       ├── GreekBold.js
│           │       │   │   │   │       ├── GreekBoldItalic.js
│           │       │   │   │   │       ├── GreekItalic.js
│           │       │   │   │   │       ├── GreekSSBold.js
│           │       │   │   │   │       ├── GreekSSBoldItalic.js
│           │       │   │   │   │       ├── Hiragana.js
│           │       │   │   │   │       ├── IPAExtensions.js
│           │       │   │   │   │       ├── Latin1Supplement.js
│           │       │   │   │   │       ├── LatinExtendedA.js
│           │       │   │   │   │       ├── LatinExtendedAdditional.js
│           │       │   │   │   │       ├── LatinExtendedB.js
│           │       │   │   │   │       ├── LatinExtendedD.js
│           │       │   │   │   │       ├── LetterlikeSymbols.js
│           │       │   │   │   │       ├── Main.js
│           │       │   │   │   │       ├── MathBold.js
│           │       │   │   │   │       ├── MathBoldItalic.js
│           │       │   │   │   │       ├── MathBoldScript.js
│           │       │   │   │   │       ├── MathItalic.js
│           │       │   │   │   │       ├── MathOperators.js
│           │       │   │   │   │       ├── MathSS.js
│           │       │   │   │   │       ├── MathSSBold.js
│           │       │   │   │   │       ├── MathSSItalic.js
│           │       │   │   │   │       ├── MathSSItalicBold.js
│           │       │   │   │   │       ├── MathScript.js
│           │       │   │   │   │       ├── MathTT.js
│           │       │   │   │   │       ├── MiscMathSymbolsA.js
│           │       │   │   │   │       ├── MiscMathSymbolsB.js
│           │       │   │   │   │       ├── MiscSymbols.js
│           │       │   │   │   │       ├── MiscSymbolsAndArrows.js
│           │       │   │   │   │       ├── MiscTechnical.js
│           │       │   │   │   │       ├── NumberForms.js
│           │       │   │   │   │       ├── PhoneticExtensions.js
│           │       │   │   │   │       ├── SpacingModLetters.js
│           │       │   │   │   │       ├── Specials.js
│           │       │   │   │   │       ├── SuperAndSubscripts.js
│           │       │   │   │   │       ├── SuppMathOperators.js
│           │       │   │   │   │       ├── SupplementalArrowsA.js
│           │       │   │   │   │       ├── SupplementalArrowsB.js
│           │       │   │   │   │       └── ij.js
│           │       │   │   │   ├── IntegralsD/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsSm/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUp/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUpD/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUpSm/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       ├── Main.js
│           │       │   │   │   │       └── PrivateUse.js
│           │       │   │   │   ├── SizeFiveSym/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeFourSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeOneSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeThreeSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeTwoSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-1.0.js
│           │       │   │   │   ├── fontdata-beta.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── STIX-Web/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Italic/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   └── TeX/
│           │       │   │       ├── AMS/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── Arrows.js
│           │       │   │       │       ├── BBBold.js
│           │       │   │       │       ├── BoxDrawing.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Dingbats.js
│           │       │   │       │       ├── EnclosedAlphanum.js
│           │       │   │       │       ├── GeneralPunctuation.js
│           │       │   │       │       ├── GeometricShapes.js
│           │       │   │       │       ├── GreekAndCoptic.js
│           │       │   │       │       ├── Latin1Supplement.js
│           │       │   │       │       ├── LatinExtendedA.js
│           │       │   │       │       ├── LetterlikeSymbols.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── MathOperators.js
│           │       │   │       │       ├── MiscMathSymbolsB.js
│           │       │   │       │       ├── MiscSymbols.js
│           │       │   │       │       ├── MiscTechnical.js
│           │       │   │       │       ├── PUA.js
│           │       │   │       │       ├── SpacingModLetters.js
│           │       │   │       │       └── SuppMathOperators.js
│           │       │   │       ├── Caligraphic/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Fraktur/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   ├── Other.js
│           │       │   │       │   │   └── PUA.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── Other.js
│           │       │   │       │       └── PUA.js
│           │       │   │       ├── Greek/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   ├── BoldItalic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Main/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── Arrows.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── CombDiactForSymbols.js
│           │       │   │       │   │   ├── GeneralPunctuation.js
│           │       │   │       │   │   ├── GeometricShapes.js
│           │       │   │       │   │   ├── Latin1Supplement.js
│           │       │   │       │   │   ├── LatinExtendedA.js
│           │       │   │       │   │   ├── LatinExtendedB.js
│           │       │   │       │   │   ├── LetterlikeSymbols.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   ├── MathOperators.js
│           │       │   │       │   │   ├── MiscMathSymbolsA.js
│           │       │   │       │   │   ├── MiscSymbols.js
│           │       │   │       │   │   ├── MiscTechnical.js
│           │       │   │       │   │   ├── SpacingModLetters.js
│           │       │   │       │   │   ├── SuppMathOperators.js
│           │       │   │       │   │   └── SupplementalArrowsA.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── GeneralPunctuation.js
│           │       │   │       │   │   ├── Latin1Supplement.js
│           │       │   │       │   │   ├── LetterlikeSymbols.js
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── GeometricShapes.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── MiscSymbols.js
│           │       │   │       │       └── SpacingModLetters.js
│           │       │   │       ├── Math/
│           │       │   │       │   ├── BoldItalic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Italic/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── SansSerif/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   └── Other.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   └── Other.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── Script/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── Size1/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size2/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size3/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size4/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Typewriter/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── WinChrome/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── WinIE6/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── AMS.js
│           │       │   │       │       ├── Bold.js
│           │       │   │       │       └── Main.js
│           │       │   │       ├── fontdata-extra.js
│           │       │   │       └── fontdata.js
│           │       │   ├── imageFonts.js
│           │       │   └── jax.js
│           │       ├── NativeMML/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       ├── PlainSource/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       ├── PreviewHTML/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       └── SVG/
│           │           ├── autoload/
│           │           │   ├── annotation-xml.js
│           │           │   ├── maction.js
│           │           │   ├── menclose.js
│           │           │   ├── mglyph.js
│           │           │   ├── mmultiscripts.js
│           │           │   ├── ms.js
│           │           │   ├── mtable.js
│           │           │   └── multiline.js
│           │           ├── config.js
│           │           ├── fonts/
│           │           │   ├── Asana-Math/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Gyre-Pagella/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Gyre-Termes/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Latin-Modern/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size7/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Neo-Euler/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── STIX-Web/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Italic/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   └── TeX/
│           │           │       ├── AMS/
│           │           │       │   └── Regular/
│           │           │       │       ├── Arrows.js
│           │           │       │       ├── BoxDrawing.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Dingbats.js
│           │           │       │       ├── EnclosedAlphanum.js
│           │           │       │       ├── GeneralPunctuation.js
│           │           │       │       ├── GeometricShapes.js
│           │           │       │       ├── GreekAndCoptic.js
│           │           │       │       ├── Latin1Supplement.js
│           │           │       │       ├── LatinExtendedA.js
│           │           │       │       ├── LetterlikeSymbols.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── MathOperators.js
│           │           │       │       ├── MiscMathSymbolsB.js
│           │           │       │       ├── MiscSymbols.js
│           │           │       │       ├── MiscTechnical.js
│           │           │       │       ├── PUA.js
│           │           │       │       ├── SpacingModLetters.js
│           │           │       │       └── SuppMathOperators.js
│           │           │       ├── Caligraphic/
│           │           │       │   ├── Bold/
│           │           │       │   │   └── Main.js
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Fraktur/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   ├── Other.js
│           │           │       │   │   └── PUA.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── Other.js
│           │           │       │       └── PUA.js
│           │           │       ├── Main/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── Arrows.js
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── CombDiactForSymbols.js
│           │           │       │   │   ├── GeneralPunctuation.js
│           │           │       │   │   ├── GeometricShapes.js
│           │           │       │   │   ├── GreekAndCoptic.js
│           │           │       │   │   ├── Latin1Supplement.js
│           │           │       │   │   ├── LatinExtendedA.js
│           │           │       │   │   ├── LatinExtendedB.js
│           │           │       │   │   ├── LetterlikeSymbols.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   ├── MathOperators.js
│           │           │       │   │   ├── MiscMathSymbolsA.js
│           │           │       │   │   ├── MiscSymbols.js
│           │           │       │   │   ├── MiscTechnical.js
│           │           │       │   │   ├── SpacingModLetters.js
│           │           │       │   │   ├── SuppMathOperators.js
│           │           │       │   │   └── SupplementalArrowsA.js
│           │           │       │   ├── Italic/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── GeneralPunctuation.js
│           │           │       │   │   ├── GreekAndCoptic.js
│           │           │       │   │   ├── LatinExtendedA.js
│           │           │       │   │   ├── LatinExtendedB.js
│           │           │       │   │   ├── LetterlikeSymbols.js
│           │           │       │   │   └── Main.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── GeometricShapes.js
│           │           │       │       ├── GreekAndCoptic.js
│           │           │       │       ├── LatinExtendedA.js
│           │           │       │       ├── LatinExtendedB.js
│           │           │       │       ├── LetterlikeSymbols.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── MiscSymbols.js
│           │           │       │       ├── SpacingModLetters.js
│           │           │       │       └── SuppMathOperators.js
│           │           │       ├── Math/
│           │           │       │   ├── BoldItalic/
│           │           │       │   │   └── Main.js
│           │           │       │   └── Italic/
│           │           │       │       └── Main.js
│           │           │       ├── SansSerif/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   └── Other.js
│           │           │       │   ├── Italic/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   └── Other.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Main.js
│           │           │       │       └── Other.js
│           │           │       ├── Script/
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       └── Main.js
│           │           │       ├── Size1/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size2/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size3/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size4/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Typewriter/
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Main.js
│           │           │       │       └── Other.js
│           │           │       ├── fontdata-extra.js
│           │           │       └── fontdata.js
│           │           └── jax.js
│           ├── latest.js
│           └── localization/
│               ├── ar/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ar.js
│               ├── ast/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ast.js
│               ├── bcc/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── bcc.js
│               ├── bg/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── bg.js
│               ├── br/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── br.js
│               ├── ca/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ca.js
│               ├── cdo/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cdo.js
│               ├── ce/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ce.js
│               ├── cs/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cs.js
│               ├── cy/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cy.js
│               ├── da/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── da.js
│               ├── de/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── de.js
│               ├── diq/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── diq.js
│               ├── en/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── en.js
│               ├── eo/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── eo.js
│               ├── es/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── es.js
│               ├── fa/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fa.js
│               ├── fi/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fi.js
│               ├── fr/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fr.js
│               ├── gl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── gl.js
│               ├── he/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── he.js
│               ├── ia/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ia.js
│               ├── it/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── it.js
│               ├── ja/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ja.js
│               ├── kn/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── kn.js
│               ├── ko/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ko.js
│               ├── lb/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lb.js
│               ├── lki/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lki.js
│               ├── lt/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lt.js
│               ├── mk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── mk.js
│               ├── nl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── nl.js
│               ├── oc/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── oc.js
│               ├── pl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pl.js
│               ├── pt/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pt.js
│               ├── pt-br/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pt-br.js
│               ├── qqq/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── qqq.js
│               ├── ru/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ru.js
│               ├── scn/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── scn.js
│               ├── sco/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sco.js
│               ├── sk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sk.js
│               ├── sl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sl.js
│               ├── sv/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sv.js
│               ├── th/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── th.js
│               ├── tr/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── tr.js
│               ├── uk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── uk.js
│               ├── vi/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── vi.js
│               ├── zh-hans/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── zh-hans.js
│               └── zh-hant/
│                   ├── FontWarnings.js
│                   ├── HTML-CSS.js
│                   ├── HelpDialog.js
│                   ├── MathML.js
│                   ├── MathMenu.js
│                   ├── TeX.js
│                   └── zh-hant.js
├── LICENSE.md
├── README.md
├── cmake/
│   ├── CPM.cmake
│   └── SetupBoost.cmake
├── currentRelease/
│   ├── ExperimentalCore/
│   │   └── md_octave/
│   │       ├── README.txt
│   │       ├── bounded_priority_queue.py
│   │       ├── build_recsurf.py
│   │       ├── coreConfig.py
│   │       ├── kdtree.py
│   │       ├── md_octave.py
│   │       ├── sauve_recponct_results.py
│   │       ├── sauve_recsurf_results.py
│   │       ├── script/
│   │       │   ├── AbsorptionConstructionMatrix.m
│   │       │   ├── Calcul_insta.m
│   │       │   ├── Coef_Att_Atmos.m
│   │       │   ├── Euler_implicite.m
│   │       │   ├── Input_parameters.m
│   │       │   ├── Surfaces_Salle.m
│   │       │   ├── TransmissionConstructionMatrix.m
│   │       │   ├── VolumeSalle.m
│   │       │   ├── VolumeVC.m
│   │       │   ├── VolumeVCDOF.m
│   │       │   ├── boundary_faces.m
│   │       │   ├── changem.m
│   │       │   ├── integVC_cst.m
│   │       │   ├── laplacienblocks2.m
│   │       │   ├── line3d.m
│   │       │   ├── mainDiffusion.m
│   │       │   ├── matrice_transmission.m
│   │       │   └── volumeTetra.m
│   │       ├── sound_level_layer.py
│   │       └── xmlreader.py
│   └── ExperimentalScript/
│       ├── density_report_recp_tool/
│       │   ├── __init__.py
│       │   └── __ui_startup__.py
│       ├── intensity_all_report_recp_tool/
│       │   ├── __init__.py
│       │   ├── __ui_startup__.py
│       │   └── todo.txt
│       └── md_octave/
│           ├── __init__.py
│           ├── __project_loading__.py
│           ├── icon/
│           │   └── Waves0.xcf
│           └── locale/
│               ├── en_US/
│               │   └── LC_MESSAGES/
│               │       └── messages.po
│               └── fr_FR/
│                   └── LC_MESSAGES/
│                       └── messages.po
├── make_flatpak.sh
├── org.noise_planet.i-simpa.appdata.xml
├── org.noise_planet.i-simpa.desktop
├── org.noise_planet.i-simpa.yml
└── src/
    ├── SystemScript/
    │   ├── new_element_witness/
    │   │   └── __init__.py
    │   └── uilocale/
    │       └── __init__.py
    ├── VolumetricMeshRepair/
    │   ├── CMakeLists.txt
    │   ├── adaptative_mesh_guide.cpp
    │   ├── adaptative_mesh_guide.hpp
    │   ├── main_remesh.cpp
    │   ├── main_remesh.hpp
    │   ├── manager/
    │   │   ├── smart_ptr.h
    │   │   └── smart_ptr.inl
    │   ├── mathlib.h
    │   ├── point_feeder.cpp
    │   ├── point_feeder.hpp
    │   ├── scalar_field_creator.cpp
    │   ├── scalar_field_creator.hpp
    │   ├── smart_macro.h
    │   ├── sortVols.py
    │   ├── spacial_discretisation.cpp
    │   ├── spacial_discretisation.hpp
    │   ├── spatial_discretization.cpp
    │   ├── spatial_discretization.hpp
    │   ├── tools/
    │   │   ├── intersection_algo.h
    │   │   ├── intersection_home.h
    │   │   ├── intersection_tri.cpp
    │   │   └── intersection_tri.h
    │   ├── triang_cubic_meshing.cpp
    │   ├── triang_cubic_meshing.hpp
    │   ├── triang_marching_cube.cpp
    │   ├── triang_marching_cube.hpp
    │   ├── triang_marching_tetra.cpp
    │   ├── triang_marching_tetra.hpp
    │   ├── triangle_feeder.cpp
    │   ├── triangle_feeder.hpp
    │   ├── triangulator.cpp
    │   └── triangulator.hpp
    ├── ctr/
    │   ├── CMakeLists.txt
    │   ├── TC_CalculationCore.cpp
    │   ├── TC_CalculationCore.h
    │   ├── ctrVersion.h.in
    │   ├── data_manager/
    │   │   ├── core_configuration.cpp
    │   │   └── core_configuration.h
    │   ├── doc_analyseCore/
    │   │   └── tc_analyse.odt
    │   ├── input_output/
    │   │   ├── reportmanager.cpp
    │   │   └── reportmanager.h
    │   ├── main_tc.cpp
    │   └── tcTypes.h
    ├── isimpa/
    │   ├── 3dengine/
    │   │   ├── ArcBall.cpp
    │   │   ├── ArcBall.h
    │   │   ├── Camera.cpp
    │   │   ├── Camera.h
    │   │   ├── Core/
    │   │   │   ├── 3ds.cpp
    │   │   │   ├── 3ds.h
    │   │   │   ├── Animator.cpp
    │   │   │   ├── Animator.hpp
    │   │   │   ├── Asc.cpp
    │   │   │   ├── Asc.h
    │   │   │   ├── Material.cpp
    │   │   │   ├── Material.h
    │   │   │   ├── Mathlib.h
    │   │   │   ├── Model3D.cpp
    │   │   │   ├── Model3D.h
    │   │   │   ├── Nff.cpp
    │   │   │   ├── Nff.h
    │   │   │   ├── Objet3D.cpp
    │   │   │   ├── Objet3D.h
    │   │   │   ├── Objet3D_maillage.cpp
    │   │   │   ├── Particules.cpp
    │   │   │   ├── Particules.h
    │   │   │   ├── Recepteurs_ponctuel_intensity.cpp
    │   │   │   ├── Recepteurs_ponctuel_intensity.hpp
    │   │   │   ├── Recepteurs_surfacique.cpp
    │   │   │   ├── Recepteurs_surfacique.h
    │   │   │   ├── Texture.cpp
    │   │   │   ├── Texture.h
    │   │   │   ├── bin.cpp
    │   │   │   ├── bin.h
    │   │   │   ├── mesh.cpp
    │   │   │   ├── mesh.h
    │   │   │   ├── stl.cpp
    │   │   │   ├── stl.hpp
    │   │   │   ├── var.cpp
    │   │   │   └── var.h
    │   │   ├── GlBitmapSurface.cpp
    │   │   ├── GlBitmapSurface.h
    │   │   ├── OpenGLApp.cpp
    │   │   ├── OpenGLApp.h
    │   │   ├── OpenGlViewer.cpp
    │   │   ├── OpenGlViewer.h
    │   │   ├── legendFonts.cpp
    │   │   ├── legendFonts.h
    │   │   ├── legendObject.cpp
    │   │   ├── legendObject.h
    │   │   ├── temporaire/
    │   │   │   └── collision.h
    │   │   └── tools/
    │   │       ├── extruder.cpp
    │   │       ├── extruder.h
    │   │       ├── intersection_seeker.cpp
    │   │       ├── intersection_seeker.h
    │   │       ├── opengl_test.cpp
    │   │       ├── opengl_test.hpp
    │   │       ├── recepteursurf_difference.cpp
    │   │       ├── recepteursurf_difference.hpp
    │   │       ├── tesselator.cpp
    │   │       └── tesselator.h
    │   ├── CMakeLists.txt
    │   ├── ConvertUTF.c
    │   ├── ConvertUTF.h
    │   ├── GL/
    │   │   └── opengl_inc.h
    │   ├── IHM/
    │   │   ├── AboutDialog.cpp
    │   │   ├── AboutDialog.hpp
    │   │   ├── ComboTreeCtrl.cpp
    │   │   ├── ComboTreeCtrl.h
    │   │   ├── DataWindow.cpp
    │   │   ├── DataWindow.h
    │   │   ├── DialogDiagramCreator.cpp
    │   │   ├── DialogDiagramCreator.h
    │   │   ├── GabeDataGrid.cpp
    │   │   ├── GabeDataGrid.hpp
    │   │   ├── MainPropGrid.cpp
    │   │   ├── MainPropGrid.h
    │   │   ├── PropGrid.cpp
    │   │   ├── PropGrid.h
    │   │   ├── ProprieteFrame.cpp
    │   │   ├── ProprieteFrame.h
    │   │   ├── ProprieteFrame_grid.cpp
    │   │   ├── ProprieteFrame_grid.h
    │   │   ├── ProprieteFrame_rendu.cpp
    │   │   ├── ProprieteFrame_rendu.h
    │   │   ├── RecepteurSOperationDialog.cpp
    │   │   ├── RecepteurSOperationDialog.h
    │   │   ├── WizardRemeshModel.cpp
    │   │   ├── WizardRemeshModel.hpp
    │   │   ├── base64.cpp
    │   │   ├── base64.h
    │   │   ├── customItem/
    │   │   │   ├── uimenuitem.cpp
    │   │   │   └── uimenuitem.hpp
    │   │   ├── customRenderer/
    │   │   │   ├── gridcellgabefloatrenderer.cpp
    │   │   │   └── gridcellgabefloatrenderer.hpp
    │   │   ├── customdialog/
    │   │   │   ├── customdlg.cpp
    │   │   │   └── customdlg.h
    │   │   ├── foldpaneltree.cpp
    │   │   ├── foldpaneltree.h
    │   │   ├── languageSelection.cpp
    │   │   ├── languageSelection.hpp
    │   │   ├── loadingSceneDialog.cpp
    │   │   ├── loadingSceneDialog.hpp
    │   │   ├── pyConsole.cpp
    │   │   ├── pyConsole.hpp
    │   │   ├── simpleGraph.cpp
    │   │   ├── simpleGraph.h
    │   │   ├── simpleGraphArrays.h
    │   │   ├── simpleGraphDialogs.cpp
    │   │   ├── simpleGraphDialogs.h
    │   │   ├── simpleGraphEnumerators.cpp
    │   │   ├── simpleGraphEnumerators.h
    │   │   ├── simpleGraphManager.cpp
    │   │   ├── simpleGraphManager.h
    │   │   ├── uiTreeCtrl.cpp
    │   │   └── uiTreeCtrl.h
    │   ├── Important_progression.odt
    │   ├── NotesPourUtilisateurs.odt
    │   ├── UtfConverter.cpp
    │   ├── UtfConverter.h
    │   ├── data_manager/
    │   │   ├── appconfig.cpp
    │   │   ├── appconfig.h
    │   │   ├── appconfig_version.cpp.in
    │   │   ├── customEditor/
    │   │   │   ├── wxGridCellColorEditor.cpp
    │   │   │   ├── wxGridCellColorEditor.h
    │   │   │   ├── wxGridCellFileEditor.cpp
    │   │   │   ├── wxGridCellFileEditor.h
    │   │   │   ├── wxGridCellFontEditor.cpp
    │   │   │   ├── wxGridCellFontEditor.h
    │   │   │   ├── wxGridCellTreeEditor.cpp
    │   │   │   └── wxGridCellTreeEditor.h
    │   │   ├── drawable_element.cpp
    │   │   ├── drawable_element.h
    │   │   ├── e_data.h
    │   │   ├── e_data_bool.h
    │   │   ├── e_data_bool_bfreqchoice.h
    │   │   ├── e_data_color.h
    │   │   ├── e_data_entier.h
    │   │   ├── e_data_file.h
    │   │   ├── e_data_float.h
    │   │   ├── e_data_font.h
    │   │   ├── e_data_list.h
    │   │   ├── e_data_row.h
    │   │   ├── e_data_row_bandefreq.h
    │   │   ├── e_data_row_ext_bandefreq.h
    │   │   ├── e_data_row_materiau.h
    │   │   ├── e_data_text.h
    │   │   ├── e_data_tree.h
    │   │   ├── e_position.h
    │   │   ├── element.cpp
    │   │   ├── element.h
    │   │   ├── generic_element/
    │   │   │   ├── e_directivity.cpp
    │   │   │   ├── e_directivity.h
    │   │   │   ├── e_directivity_app.h
    │   │   │   ├── e_directivity_user.h
    │   │   │   ├── e_gammeabsorption.cpp
    │   │   │   ├── e_gammeabsorption.h
    │   │   │   ├── e_gammefrequence.cpp
    │   │   │   ├── e_gammefrequence.h
    │   │   │   ├── e_gammefrequence_app.h
    │   │   │   ├── e_gammefrequence_user.h
    │   │   │   ├── e_materiau.cpp
    │   │   │   ├── e_materiau.h
    │   │   │   ├── e_materiau_app.h
    │   │   │   ├── e_materiau_user.h
    │   │   │   ├── e_property_freq.cpp
    │   │   │   └── e_property_freq.h
    │   │   ├── grpInfo/
    │   │   │   ├── data_group_info.cpp
    │   │   │   └── data_group_info.h
    │   │   ├── logger_tetgen_debug.hpp
    │   │   ├── projet.cpp
    │   │   ├── projet.h
    │   │   ├── projet_calculation.cpp
    │   │   ├── projet_maillage.cpp
    │   │   ├── projet_python.cpp
    │   │   ├── projet_remesh.cpp
    │   │   ├── projet_undo_redo.cpp
    │   │   ├── python_interface/
    │   │   │   ├── boost_python_header.cpp
    │   │   │   ├── boost_python_header.h
    │   │   │   ├── instanceManager.cpp
    │   │   │   ├── instanceManager.hpp
    │   │   │   ├── py_ui_module/
    │   │   │   │   ├── Application.cpp
    │   │   │   │   ├── Application.hpp
    │   │   │   │   ├── e_pyext.cpp
    │   │   │   │   ├── e_pyext.hpp
    │   │   │   │   ├── element_file_pywrap.cpp
    │   │   │   │   ├── element_file_pywrap.hpp
    │   │   │   │   ├── element_pywrap.cpp
    │   │   │   │   ├── element_pywrap.hpp
    │   │   │   │   ├── generate_enum_def.py
    │   │   │   │   ├── samples/
    │   │   │   │   │   ├── __init__.py
    │   │   │   │   │   ├── __project_loading__.py
    │   │   │   │   │   └── add_data_sample.py
    │   │   │   │   └── uictrl_doxygen.py
    │   │   │   ├── python_command.h
    │   │   │   ├── pythonshell.cpp
    │   │   │   ├── pythonshell.hpp
    │   │   │   ├── pythonstdioredirect.cpp
    │   │   │   └── pythonstdioredirect.hpp
    │   │   ├── tree_core/
    │   │   │   ├── e_core.h
    │   │   │   ├── e_core_core.h
    │   │   │   ├── e_core_core_bfreqselection.h
    │   │   │   ├── e_core_core_config.h
    │   │   │   ├── e_core_core_tetconf.h
    │   │   │   ├── e_core_sppscore.h
    │   │   │   ├── e_core_tccore.h
    │   │   │   └── e_core_tlmcore.h
    │   │   ├── tree_rapport/
    │   │   │   ├── e_report.h
    │   │   │   ├── e_report_file.cpp
    │   │   │   ├── e_report_file.h
    │   │   │   ├── e_report_folder.h
    │   │   │   ├── e_report_gabe.cpp
    │   │   │   ├── e_report_gabe.h
    │   │   │   ├── e_report_gabe_gap.cpp
    │   │   │   ├── e_report_gabe_gap.h
    │   │   │   ├── e_report_gabe_recp.cpp
    │   │   │   ├── e_report_gabe_recp.h
    │   │   │   ├── e_report_gabe_recps.cpp
    │   │   │   ├── e_report_gabe_recps.h
    │   │   │   ├── e_report_partvisualisation.h
    │   │   │   ├── e_report_recepteurssvisualisation.h
    │   │   │   ├── e_report_rpi.h
    │   │   │   ├── e_report_unknown_file.cpp
    │   │   │   └── e_report_unknown_file.h
    │   │   ├── tree_scene/
    │   │   │   ├── e_scene.cpp
    │   │   │   ├── e_scene.h
    │   │   │   ├── e_scene_bdd.h
    │   │   │   ├── e_scene_bdd_directivities.h
    │   │   │   ├── e_scene_bdd_directivities_app.h
    │   │   │   ├── e_scene_bdd_directivities_user.h
    │   │   │   ├── e_scene_bdd_materiaux.h
    │   │   │   ├── e_scene_bdd_materiaux_app.h
    │   │   │   ├── e_scene_bdd_materiaux_app_group.h
    │   │   │   ├── e_scene_bdd_materiaux_app_materiau.h
    │   │   │   ├── e_scene_bdd_materiaux_propmateriau.h
    │   │   │   ├── e_scene_bdd_materiaux_rendermateriau.h
    │   │   │   ├── e_scene_bdd_materiaux_user.h
    │   │   │   ├── e_scene_bdd_materiaux_user_group.h
    │   │   │   ├── e_scene_bdd_materiaux_user_materiau.h
    │   │   │   ├── e_scene_bdd_spectrums.h
    │   │   │   ├── e_scene_bdd_spectrums_app.h
    │   │   │   ├── e_scene_bdd_spectrums_user.h
    │   │   │   ├── e_scene_donnees.h
    │   │   │   ├── e_scene_encombrements.h
    │   │   │   ├── e_scene_encombrements_encombrement_cuboide.h
    │   │   │   ├── e_scene_encombrements_encombrement_model.h
    │   │   │   ├── e_scene_encombrements_encombrement_proprietes.h
    │   │   │   ├── e_scene_encombrements_encombrement_rendu.h
    │   │   │   ├── e_scene_groupesurfaces.h
    │   │   │   ├── e_scene_groupesurfaces_groupe.cpp
    │   │   │   ├── e_scene_groupesurfaces_groupe.h
    │   │   │   ├── e_scene_groupesurfaces_groupe_vertex.h
    │   │   │   ├── e_scene_projet.h
    │   │   │   ├── e_scene_projet_configuration.h
    │   │   │   ├── e_scene_projet_environnement.h
    │   │   │   ├── e_scene_projet_informations.h
    │   │   │   ├── e_scene_projet_rendu.h
    │   │   │   ├── e_scene_projet_rendu_origine.h
    │   │   │   ├── e_scene_projet_userconfiguration.h
    │   │   │   ├── e_scene_recepteursp.h
    │   │   │   ├── e_scene_recepteursp_recepteur.h
    │   │   │   ├── e_scene_recepteursp_recepteur_proprietes.h
    │   │   │   ├── e_scene_recepteursp_recepteur_rendu.h
    │   │   │   ├── e_scene_recepteurss.h
    │   │   │   ├── e_scene_recepteurss_recepteur.h
    │   │   │   ├── e_scene_recepteurss_recepteur_proprietes.h
    │   │   │   ├── e_scene_recepteurss_recepteur_rendu.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe_proprietes.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe_rendu.h
    │   │   │   ├── e_scene_sources.h
    │   │   │   ├── e_scene_sources_source.h
    │   │   │   ├── e_scene_sources_source_properties.h
    │   │   │   ├── e_scene_sources_source_rendu.h
    │   │   │   ├── e_scene_volumes.cpp
    │   │   │   ├── e_scene_volumes.h
    │   │   │   ├── e_scene_volumes_volume.h
    │   │   │   ├── e_scene_volumes_volume_proprietes.h
    │   │   │   └── e_scene_volumes_volume_rendu.h
    │   │   └── tree_userpref/
    │   │       ├── e_userprefitem.hpp
    │   │       ├── e_userprefitemisotemplate.hpp
    │   │       └── e_userprefnode.hpp
    │   ├── doxDoc/
    │   │   ├── addelementDoc.h
    │   │   ├── compenants/
    │   │   │   ├── addelementDoc.h
    │   │   │   ├── doxygenDoc.h
    │   │   │   ├── temp.txt
    │   │   │   └── translationDoc.h
    │   │   ├── demos/
    │   │   │   ├── demo_doxygen.h
    │   │   │   ├── demo_translation_1.h
    │   │   │   ├── demos_add_element.h
    │   │   │   ├── demos_add_element_drawable.h
    │   │   │   ├── demos_add_element_parent.h
    │   │   │   └── demos_add_element_withprop.h
    │   │   ├── doxygenDoc.h
    │   │   ├── mainDoc.h
    │   │   ├── ref/
    │   │   │   └── VisualCPPGuide.mht
    │   │   └── translationDoc.h
    │   ├── first_header_include.hpp
    │   ├── lang/
    │   │   ├── fr.po
    │   │   ├── pl.po
    │   │   ├── pt_BR.po
    │   │   └── zh_CN.po
    │   ├── last_cpp_include.hpp
    │   ├── main/
    │   │   ├── i_simpa_main.cpp
    │   │   └── i_simpa_main.h
    │   ├── manager/
    │   │   ├── alphanum.hpp
    │   │   ├── bigfilereader.cpp
    │   │   ├── bigfilereader.h
    │   │   ├── boollocker.h
    │   │   ├── generic_typedef.h
    │   │   ├── interf_logger.hpp
    │   │   ├── lifetimeWitness.hpp
    │   │   ├── modelRetriever.cpp
    │   │   ├── modelRetriever.hpp
    │   │   ├── processManager.cpp
    │   │   ├── processManager.h
    │   │   ├── sppsString.cpp
    │   │   ├── stringParser.h
    │   │   └── stringTools.h
    │   ├── nc_curves.cpp
    │   ├── readme.txt
    │   └── resources/
    │       ├── Bitmaps/
    │       │   ├── Sources_icones.txt
    │       │   ├── flags/
    │       │   │   └── readme.txt
    │       │   └── iso/
    │       │       ├── Coldfire.gpl
    │       │       ├── Firecode.gpl
    │       │       ├── NF S 31-130.gpl
    │       │       ├── RYBG.gpl
    │       │       ├── jet.gpl
    │       │       ├── jet25.gpl
    │       │       ├── makerrvb.py
    │       │       └── rvb.gpl
    │       ├── Directivities/
    │       │   ├── speaker-test1.txt
    │       │   ├── speaker-test2.txt
    │       │   └── speaker-test3.txt
    │       ├── License.rtf
    │       ├── SystemScript/
    │       │   ├── check_version/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_started__.py
    │       │   │   └── locale/
    │       │   │       └── fr.po
    │       │   ├── graphy/
    │       │   │   ├── __init__.py
    │       │   │   ├── all_tests.py
    │       │   │   ├── backends/
    │       │   │   │   ├── __init__.py
    │       │   │   │   └── google_chart_api/
    │       │   │   │       ├── __init__.py
    │       │   │   │       ├── bar_chart_test.py
    │       │   │   │       ├── base_encoder_test.py
    │       │   │   │       ├── encoders.py
    │       │   │   │       ├── line_chart_test.py
    │       │   │   │       ├── pie_chart_test.py
    │       │   │   │       ├── util.py
    │       │   │   │       └── util_test.py
    │       │   │   ├── bar_chart.py
    │       │   │   ├── bar_chart_test.py
    │       │   │   ├── common.py
    │       │   │   ├── common_test.py
    │       │   │   ├── formatters.py
    │       │   │   ├── formatters_test.py
    │       │   │   ├── graphy_test.py
    │       │   │   ├── line_chart.py
    │       │   │   ├── line_chart_test.py
    │       │   │   ├── pie_chart.py
    │       │   │   ├── pie_chart_test.py
    │       │   │   └── util.py
    │       │   ├── job_tool/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── moveto_vertex/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── new_element_witness/
    │       │   │   └── __init__.py
    │       │   ├── preceiv_sourceTracker/
    │       │   │   ├── __init__.py
    │       │   │   ├── __project_loading__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── recp_res_tool/
    │       │   │   ├── __init__.py
    │       │   │   └── __ui_startup__.py
    │       │   ├── recp_tool/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── sample/
    │       │   │   ├── __ui_startup__.py
    │       │   │   ├── parttocsv.py
    │       │   │   ├── test_groups.py
    │       │   │   └── test_part_io.py
    │       │   ├── source_tools/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   └── uilocale/
    │       │       └── __init__.py
    │       ├── UserScript/
    │       │   └── readme.txt
    │       ├── appconst.xml
    │       ├── doc/
    │       │   ├── tutorial/
    │       │   │   ├── Round_Robin_3/
    │       │   │   │   ├── readme.txt
    │       │   │   │   ├── results_p3_public.xls
    │       │   │   │   └── studio_coordinates_p3.xls
    │       │   │   ├── script_tutorial/
    │       │   │   │   ├── ReadSurfReceiver.py
    │       │   │   │   ├── SppsReportSample/
    │       │   │   │   │   ├── __init__.py
    │       │   │   │   │   ├── __ui_startup__.py
    │       │   │   │   │   ├── besttick.py
    │       │   │   │   │   ├── buildhtmlreport.py
    │       │   │   │   │   ├── encode.js
    │       │   │   │   │   ├── locale/
    │       │   │   │   │   │   ├── en_US/
    │       │   │   │   │   │   │   └── LC_MESSAGES/
    │       │   │   │   │   │   │       └── messages.po
    │       │   │   │   │   │   └── fr_FR/
    │       │   │   │   │   │       └── LC_MESSAGES/
    │       │   │   │   │   │           └── messages.po
    │       │   │   │   │   ├── recsurf_report_stats.py
    │       │   │   │   │   ├── ressource/
    │       │   │   │   │   │   ├── Read Me.txt
    │       │   │   │   │   │   ├── script.js
    │       │   │   │   │   │   └── style.css
    │       │   │   │   │   ├── settings.py
    │       │   │   │   │   └── testlocale.py
    │       │   │   │   ├── recp_res_norm/
    │       │   │   │   │   ├── __init__.py
    │       │   │   │   │   ├── __ui_startup__.py
    │       │   │   │   │   └── locale/
    │       │   │   │   │       └── fr_FR/
    │       │   │   │   │           └── LC_MESSAGES/
    │       │   │   │   │               └── messages.po
    │       │   │   │   └── user_core/
    │       │   │   │       ├── __init_.py
    │       │   │   │       └── locale/
    │       │   │   │           └── fr_FR/
    │       │   │   │               └── LC_MESSAGES/
    │       │   │   │                   └── messages.po
    │       │   │   ├── tutorial 1/
    │       │   │   │   └── tutorial_1.proj
    │       │   │   ├── tutorial 2/
    │       │   │   │   ├── Auswertung_Phase_II.xls
    │       │   │   │   ├── elmia.ply
    │       │   │   │   ├── elmia_coordinates.xls
    │       │   │   │   ├── material_catt - Copie.txt
    │       │   │   │   ├── material_catt.txt
    │       │   │   │   ├── readme.txt
    │       │   │   │   └── tutorial_2.proj
    │       │   │   └── tutorial 3/
    │       │   │       ├── Industrial.proj
    │       │   │       ├── Industrial_hall.ply
    │       │   │       └── tutorial_3.proj
    │       │   └── validation/
    │       │       ├── atmospheric_absorption/
    │       │       │   ├── Validation_atmospheric_absorption.proj
    │       │       │   ├── Validation_atmospheric_absorption.xlsx
    │       │       │   └── ~$Validation_atmospheric_absorption_diffuse_quasi_cubic_room_January_2018.xlsx
    │       │       └── clarity_calculation/
    │       │           ├── Clarity_room_1000_m3.proj
    │       │           ├── Clarity_room_12000_m3.proj
    │       │           ├── Clarity_room_125_m3.proj
    │       │           ├── Clarity_room_504_m3.proj
    │       │           ├── Clarity_room_8000_m3.proj
    │       │           ├── Clarity_validation.xlsx
    │       │           └── ~$Clarity_validation.xlsx
    │       ├── isimpa.desktop
    │       ├── isimpa.icns
    │       ├── license.html
    │       └── license_fichiers/
    │           ├── colorschememapping.xml
    │           ├── filelist.xml
    │           └── themedata.thmx
    ├── lib_interface/
    │   ├── CMakeLists.txt
    │   ├── Core/
    │   │   ├── Model3D.h
    │   │   ├── mathlib.cpp
    │   │   └── mathlib.h
    │   ├── coreString.cpp
    │   ├── coreString.h
    │   ├── coreTypes.cpp
    │   ├── coreTypes.h
    │   ├── coreinitialisation.cpp
    │   ├── coreinitialisation.h
    │   ├── data_manager/
    │   │   ├── base_core_configuration.cpp
    │   │   ├── base_core_configuration.h
    │   │   └── data_calculation/
    │   │       ├── Celerite_du_son.cpp
    │   │       ├── Coef_Att_Atmos.cpp
    │   │       ├── Masse_volumique_air.cpp
    │   │       └── calculsPropagation.h
    │   ├── input_output/
    │   │   ├── baseReportManager.cpp
    │   │   ├── baseReportManager.h
    │   │   ├── bin.cpp
    │   │   ├── bin.h
    │   │   ├── cxml.cpp
    │   │   ├── cxml.h
    │   │   ├── directivity/
    │   │   │   ├── directivityBalloon.cpp
    │   │   │   ├── directivityBalloon.h
    │   │   │   ├── directivityParser.cpp
    │   │   │   └── directivityParser.h
    │   │   ├── exportRecepteurSurf/
    │   │   │   ├── rsbin.cpp
    │   │   │   ├── rsbin.h
    │   │   │   ├── std_rsbin.cpp
    │   │   │   └── std_rsbin.hpp
    │   │   ├── gabe/
    │   │   │   ├── gabe.cpp
    │   │   │   ├── gabe.h
    │   │   │   ├── stdgabe.cpp
    │   │   │   └── stdgabe.h
    │   │   ├── gpl_io.cpp
    │   │   ├── gpl_io.hpp
    │   │   ├── importExportMaillage/
    │   │   │   ├── m_report_bin.cpp
    │   │   │   ├── m_report_bin.h
    │   │   │   ├── mbin.cpp
    │   │   │   └── mbin.h
    │   │   ├── part_binary.h
    │   │   ├── particles/
    │   │   │   ├── part_binary.h
    │   │   │   ├── part_io.cpp
    │   │   │   └── part_io.hpp
    │   │   ├── ply/
    │   │   │   ├── rply.cpp
    │   │   │   ├── rply.hpp
    │   │   │   ├── rply_interface.cpp
    │   │   │   ├── rply_interface.hpp
    │   │   │   ├── rplyfile.hpp
    │   │   │   └── triangulate.cpp.future
    │   │   ├── poly/
    │   │   │   ├── poly.cpp
    │   │   │   └── poly.h
    │   │   ├── progressionInfo.h
    │   │   ├── pugixml/
    │   │   │   ├── .codecov.yml
    │   │   │   ├── .gitignore
    │   │   │   ├── .travis.yml
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── README.md
    │   │   │   ├── appveyor.yml
    │   │   │   ├── contrib/
    │   │   │   │   └── foreach.hpp
    │   │   │   ├── docs/
    │   │   │   │   ├── config.adoc
    │   │   │   │   ├── manual.adoc
    │   │   │   │   ├── manual.html
    │   │   │   │   ├── quickstart.adoc
    │   │   │   │   ├── quickstart.html
    │   │   │   │   └── samples/
    │   │   │   │       ├── character.xml
    │   │   │   │       ├── custom_memory_management.cpp
    │   │   │   │       ├── include.cpp
    │   │   │   │       ├── load_error_handling.cpp
    │   │   │   │       ├── load_file.cpp
    │   │   │   │       ├── load_memory.cpp
    │   │   │   │       ├── load_options.cpp
    │   │   │   │       ├── load_stream.cpp
    │   │   │   │       ├── modify_add.cpp
    │   │   │   │       ├── modify_base.cpp
    │   │   │   │       ├── modify_remove.cpp
    │   │   │   │       ├── save_custom_writer.cpp
    │   │   │   │       ├── save_declaration.cpp
    │   │   │   │       ├── save_file.cpp
    │   │   │   │       ├── save_options.cpp
    │   │   │   │       ├── save_stream.cpp
    │   │   │   │       ├── save_subtree.cpp
    │   │   │   │       ├── text.cpp
    │   │   │   │       ├── transitions.xml
    │   │   │   │       ├── traverse_base.cpp
    │   │   │   │       ├── traverse_iter.cpp
    │   │   │   │       ├── traverse_predicate.cpp
    │   │   │   │       ├── traverse_rangefor.cpp
    │   │   │   │       ├── traverse_walker.cpp
    │   │   │   │       ├── tree.xml
    │   │   │   │       ├── weekly-shift_jis.xml
    │   │   │   │       ├── weekly-utf-16.xml
    │   │   │   │       ├── weekly-utf-8.xml
    │   │   │   │       ├── xgconsole.xml
    │   │   │   │       ├── xpath_error.cpp
    │   │   │   │       ├── xpath_query.cpp
    │   │   │   │       ├── xpath_select.cpp
    │   │   │   │       └── xpath_variables.cpp
    │   │   │   ├── readme.txt
    │   │   │   ├── scripts/
    │   │   │   │   ├── cocoapods_push.sh
    │   │   │   │   ├── nuget.autopkg
    │   │   │   │   ├── nuget_build.bat
    │   │   │   │   ├── premake4.lua
    │   │   │   │   ├── pugixml.pc.in
    │   │   │   │   ├── pugixml.podspec
    │   │   │   │   ├── pugixml.xcodeproj/
    │   │   │   │   │   └── project.pbxproj
    │   │   │   │   ├── pugixml_airplay.mkf
    │   │   │   │   ├── pugixml_codeblocks.cbp
    │   │   │   │   ├── pugixml_codelite.project
    │   │   │   │   ├── pugixml_vs2005.vcproj
    │   │   │   │   ├── pugixml_vs2005_static.vcproj
    │   │   │   │   ├── pugixml_vs2008.vcproj
    │   │   │   │   ├── pugixml_vs2008_static.vcproj
    │   │   │   │   ├── pugixml_vs2010.vcxproj
    │   │   │   │   ├── pugixml_vs2010_static.vcxproj
    │   │   │   │   ├── pugixml_vs2013.vcxproj
    │   │   │   │   ├── pugixml_vs2013_static.vcxproj
    │   │   │   │   └── pugixml_vs2015.vcxproj
    │   │   │   ├── src/
    │   │   │   │   ├── pugiconfig.hpp
    │   │   │   │   ├── pugixml.cpp
    │   │   │   │   └── pugixml.hpp
    │   │   │   └── tests/
    │   │   │       ├── allocator.cpp
    │   │   │       ├── allocator.hpp
    │   │   │       ├── archive.py
    │   │   │       ├── autotest-appveyor.ps1
    │   │   │       ├── common.hpp
    │   │   │       ├── data/
    │   │   │       │   ├── empty.xml
    │   │   │       │   ├── large.xml
    │   │   │       │   ├── latintest_latin1.xml
    │   │   │       │   ├── latintest_utf8.xml
    │   │   │       │   ├── multiline.xml
    │   │   │       │   ├── small.xml
    │   │   │       │   ├── truncation.xml
    │   │   │       │   ├── utftest_utf16_be.xml
    │   │   │       │   ├── utftest_utf16_be_bom.xml
    │   │   │       │   ├── utftest_utf16_be_clean.xml
    │   │   │       │   ├── utftest_utf16_be_nodecl.xml
    │   │   │       │   ├── utftest_utf16_le.xml
    │   │   │       │   ├── utftest_utf16_le_bom.xml
    │   │   │       │   ├── utftest_utf16_le_clean.xml
    │   │   │       │   ├── utftest_utf16_le_nodecl.xml
    │   │   │       │   ├── utftest_utf32_be.xml
    │   │   │       │   ├── utftest_utf32_be_bom.xml
    │   │   │       │   ├── utftest_utf32_be_clean.xml
    │   │   │       │   ├── utftest_utf32_be_nodecl.xml
    │   │   │       │   ├── utftest_utf32_le.xml
    │   │   │       │   ├── utftest_utf32_le_bom.xml
    │   │   │       │   ├── utftest_utf32_le_clean.xml
    │   │   │       │   ├── utftest_utf32_le_nodecl.xml
    │   │   │       │   ├── utftest_utf8.xml
    │   │   │       │   ├── utftest_utf8_bom.xml
    │   │   │       │   ├── utftest_utf8_clean.xml
    │   │   │       │   ├── utftest_utf8_nodecl.xml
    │   │   │       │   └── тест.xml
    │   │   │       ├── data_fuzz_parse/
    │   │   │       │   ├── basic.xml
    │   │   │       │   ├── doctype.xml
    │   │   │       │   ├── refs.xml
    │   │   │       │   ├── types.xml
    │   │   │       │   ├── utf16.xml
    │   │   │       │   └── utf32.xml
    │   │   │       ├── fuzz_parse.cpp
    │   │   │       ├── helpers.hpp
    │   │   │       ├── main.cpp
    │   │   │       ├── test.cpp
    │   │   │       ├── test.hpp
    │   │   │       ├── test_document.cpp
    │   │   │       ├── test_dom_modify.cpp
    │   │   │       ├── test_dom_text.cpp
    │   │   │       ├── test_dom_traverse.cpp
    │   │   │       ├── test_header_guard.cpp
    │   │   │       ├── test_header_iosfwd_1.cpp
    │   │   │       ├── test_header_iosfwd_2.cpp
    │   │   │       ├── test_header_iostream_1.cpp
    │   │   │       ├── test_header_iostream_2.cpp
    │   │   │       ├── test_header_only_1.cpp
    │   │   │       ├── test_header_only_2.cpp
    │   │   │       ├── test_header_string_1.cpp
    │   │   │       ├── test_header_string_2.cpp
    │   │   │       ├── test_header_string_iostream.cpp
    │   │   │       ├── test_memory.cpp
    │   │   │       ├── test_parse.cpp
    │   │   │       ├── test_parse_doctype.cpp
    │   │   │       ├── test_unicode.cpp
    │   │   │       ├── test_version.cpp
    │   │   │       ├── test_write.cpp
    │   │   │       ├── test_xpath.cpp
    │   │   │       ├── test_xpath_api.cpp
    │   │   │       ├── test_xpath_functions.cpp
    │   │   │       ├── test_xpath_operators.cpp
    │   │   │       ├── test_xpath_parse.cpp
    │   │   │       ├── test_xpath_paths.cpp
    │   │   │       ├── test_xpath_paths_abbrev_w3c.cpp
    │   │   │       ├── test_xpath_paths_w3c.cpp
    │   │   │       ├── test_xpath_variables.cpp
    │   │   │       ├── test_xpath_xalan_1.cpp
    │   │   │       ├── test_xpath_xalan_2.cpp
    │   │   │       ├── test_xpath_xalan_3.cpp
    │   │   │       ├── test_xpath_xalan_4.cpp
    │   │   │       ├── test_xpath_xalan_5.cpp
    │   │   │       ├── writer_string.cpp
    │   │   │       └── writer_string.hpp
    │   │   ├── utf8/
    │   │   │   ├── checked.h
    │   │   │   ├── core.h
    │   │   │   └── unchecked.h
    │   │   └── utf8.h
    │   ├── manager/
    │   │   ├── smart_ptr.h
    │   │   └── smart_ptr.inl
    │   ├── std_tools.cpp
    │   ├── std_tools.hpp
    │   ├── tests/
    │   │   ├── balloon_test.cpp
    │   │   ├── cube.cbin
    │   │   ├── cube_mesh.mbin
    │   │   ├── io_test.cpp
    │   │   ├── rs_cut.csbin
    │   │   ├── speaker-test1.txt
    │   │   ├── speaker-test2.txt
    │   │   └── test_import1.poly
    │   └── tools/
    │       ├── collision.h
    │       ├── octree44.cpp
    │       ├── octree44.hpp
    │       ├── octree44_cylinderElement.cpp
    │       ├── octree44_cylinderElement.hpp
    │       ├── octree44_dotElement.cpp
    │       ├── octree44_dotElement.hpp
    │       ├── octree44_segmentElement.cpp
    │       ├── octree44_segmentElement.hpp
    │       ├── octree44_sphereElement.cpp
    │       ├── octree44_sphereElement.hpp
    │       ├── octree44_triangleElement.cpp
    │       ├── octree44_triangleElement.hpp
    │       ├── surf_merging.cpp
    │       ├── surf_merging.hpp
    │       ├── vol_identifier.cpp
    │       ├── vol_identifier.hpp
    │       ├── vol_splitter.cpp
    │       └── vol_splitter.hpp
    ├── preprocess/
    │   ├── CMakeLists.txt
    │   ├── Preprocess.cpp
    │   ├── computations.cpp
    │   ├── computations.hpp
    │   └── tools/
    │       ├── intersection_algo.h
    │       ├── intersection_home.h
    │       ├── intersection_tri.cpp
    │       └── intersection_tri.h
    ├── python_bindings/
    │   ├── CMakeLists.txt
    │   ├── __init__.py
    │   ├── docs/
    │   │   └── libsimpa_docs.h
    │   ├── doxygen.py
    │   ├── generate_code.py
    │   ├── libsimpa.i
    │   ├── named_tuple.py
    │   ├── samples/
    │   │   ├── ReadParticlesFiles.py
    │   │   ├── WriteParticlesFiles.py
    │   │   ├── spps_conversion_resultats.py
    │   │   ├── spps_maillage.py
    │   │   └── spps_model.py
    │   └── tests/
    │       ├── check_retrocompat.py
    │       ├── check_retrocompat_gabe.py
    │       ├── check_retrocompat_mesh.py
    │       ├── check_retrocompat_recsurf.py
    │       ├── mesh.cbin
    │       ├── model_io.py
    │       ├── retrocompat_test.gabe
    │       ├── rs_cut.csbin
    │       ├── test_math.py
    │       └── tetramesh.mbin
    ├── readme.txt
    ├── spps/
    │   ├── CMakeLists.txt
    │   ├── CalculationCore.cpp
    │   ├── CalculationCore.h
    │   ├── data_manager/
    │   │   ├── core_configuration.cpp
    │   │   └── core_configuration.h
    │   ├── input_output/
    │   │   ├── reportmanager.cpp
    │   │   └── reportmanager.h
    │   ├── sppsInitialisation.cpp
    │   ├── sppsInitialisation.h
    │   ├── sppsNantes.cpp
    │   ├── sppsTypes.cpp
    │   ├── sppsTypes.h
    │   ├── sppsVersion.h.in
    │   ├── tests/
    │   │   ├── config.xml
    │   │   ├── speaker-test3.txt
    │   │   └── spps_core_test.cpp
    │   └── tools/
    │       ├── dotdistribution.cpp
    │       ├── dotdistribution.h
    │       └── dotreflection.h
    └── tetgen/
        ├── CMakeLists.txt
        ├── LICENSE
        ├── README
        ├── predicates.cxx
        ├── tetgen.cxx
        └── tetgen.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):** See 'About I-Simpa' for the Version and build
 - OS: [e.g. iOS]
 - Version [e.g. 22]
 - Build date [eg. 2020-06-26T08:52:28]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/custom.md
================================================
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---




================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/pull_request_template.md
================================================
Description of the pull request:


If applicable a reference to a related issue:


For external contributors, this pull request will not be merged until the following document are sent.

Contributor licence agreement

For legal reasons, if contributors want their contribution to be merged with the I-Simpa code base, they are invited to agree with a Contributor License Agreement:

- Entity Contributor License Agreement, for institutions 
https://i-simpa.ifsttar.fr/community/contribute/entity-cla/
- Individual Contributor License Agreement, for individual contributors 
https://i-simpa.ifsttar.fr/community/contribute/individual-cla/

Contributors must fill one of these forms and send the signed version by mail at: I-Simpa@ifsttar.fr



================================================
FILE: .github/workflows/CI_main.yml
================================================
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# *                                                                         *
# *   Copyright (c) 2023 0penBrain.                                         *
# *                                                                         *
# *   This file is part of ISIMPA.                                         *
# *                                                                         *
# *   ISIMPA is free software: you can redistribute it and/or modify it    *
# *   under the terms of the GNU Lesser General Public License as           *
# *   published by the Free Software Foundation, either version 2.1 of the  *
# *   License, or (at your option) any later version.                       *
# *                                                                         *
# *   ISIMPA is distributed in the hope that it will be useful, but        *
# *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      *
# *   Lesser General Public License for more details.                       *
# *                                                                         *
# *   You should have received a copy of the GNU Lesser General Public      *
# *   License along with ISIMPA. If not, see                               *
# *   <https://www.gnu.org/licenses/>.                                      *
# *                                                                         *
# ***************************************************************************

# This is the master workflow for CI of I-SIMPA.
# It (only) aims at properly organizing the sub-workflows.

name: I-SIMPA main CI

on: [workflow_dispatch, push, pull_request]

concurrency:
  group: IS-CI-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:

  Prepare:
    uses: ./.github/workflows/sub_prepare.yml
    with:
      artifactBasename: Prepare-${{ github.run_id }}

  Linux:
    needs: [Prepare]
    uses: ./.github/workflows/sub_buildLinux.yml
    with:
      artifactBasename: Linux-${{ github.run_id }}

  Windows:
    needs: [Prepare]
    uses: ./.github/workflows/sub_buildWindows.yml
    with:
      artifactBasename: Windows-${{ github.run_id }}

  MacOS:
    needs: [Prepare]
    uses: ./.github/workflows/sub_buildMacOS.yml
    with:
      artifactBasename: MacOS-${{ github.run_id }}

  WrapUp:
    needs: [
        Prepare,
        Linux,
        Windows,
        MacOS
      ]
    if: always()
    uses: ./.github/workflows/sub_wrapup.yml
    with:
      previousSteps: ${{ toJSON(needs) }}


================================================
FILE: .github/workflows/actions/windows/getCcache/action.yml
================================================
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# *                                                                         *
# *   Copyright (c) 2023 0penBrain.                                         *
# *                                                                         *
# *   This file is part of ISIMPA.                                         *
# *                                                                         *
# *   ISIMPA is free software: you can redistribute it and/or modify it    *
# *   under the terms of the GNU Lesser General Public License as           *
# *   published by the Free Software Foundation, either version 2.1 of the  *
# *   License, or (at your option) any later version.                       *
# *                                                                         *
# *   ISIMPA is distributed in the hope that it will be useful, but        *
# *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      *
# *   Lesser General Public License for more details.                       *
# *                                                                         *
# *   You should have received a copy of the GNU Lesser General Public      *
# *   License along with ISIMPA. If not, see                               *
# *   <https://www.gnu.org/licenses/>.                                      *
# *                                                                         *
# ***************************************************************************

# This action aims at speeding up CI and reduce dependency to external resources
# by creating a cache of Ccache needed binaries then using it for CI runs rather
# than downloading every time.
#
# If it needs to be updated to another version, the process it to change
# 'downloadpath' and 'version' inputs below then delete the existing cache
# from Github interface so a new one is generated using new values.

name: getCcache
description: "Windows: tries to get a cached version of Ccache and create one if fails"

inputs:
  ccachebindir:
    description: "Directory where ccache binaries shall be stored"
    required: true
# Below inputs shall generally not be provided as they won't be used if a cached version exists
# They are mainly used because Github do not support adding env variables in a composite action
  ccachedownloadpath:
    description: "Path where to download ccache"
    required: false
    default: https://github.com/ccache/ccache/releases/download/v4.9/
  ccacheversion:
    description: "Ccache version to be downloaded"
    required: false
    default: ccache-4.9-windows-x86_64

runs:
  using: "composite"
  steps:
    - name: Create destination directory
      shell: bash
      run: |
        mkdir -p ${{ inputs.ccachebindir }}
    - name: Get cached version
      uses: actions/cache/restore@v4
      id: getCached
      with:
        path: ${{ inputs.ccachebindir }}
        key: ccacheforwin-${{ inputs.ccacheversion }}
    - name: Download ccache
      shell: bash
      if: steps.getCached.outputs.cache-hit != 'true'
      run: |
        curl -L -o ccache.zip ${{ inputs.ccachedownloadpath }}${{ inputs.ccacheversion }}.zip
        7z x ccache.zip -o"ccachetemp" -r -y
        cp -a ccachetemp/${{ inputs.ccacheversion }}/ccache.exe ${{ inputs.ccachebindir }}
        cp -a ccachetemp/${{ inputs.ccacheversion }}/ccache.exe ${{ inputs.ccachebindir }}/cl.exe
        rm ccache.zip
        rm -rf ccachetemp
    - name: Save version to cache
      if: steps.getCached.outputs.cache-hit != 'true'
      uses: actions/cache/save@v4
      with:
        path: ${{ inputs.ccachebindir }}
        key: ${{ steps.getCached.outputs.cache-primary-key }}


================================================
FILE: .github/workflows/flatpak.yml
================================================
on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:
name: CI
jobs:
  flatpak:
    name: "Flatpak"
    container:
      image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
      options: --privileged
    strategy:
      matrix:
        variant:
          - arch: x86_64
            runner: ubuntu-24.04
          - arch: aarch64
            runner: ubuntu-24.04-arm
    runs-on: ${{ matrix.variant.runner }}
    steps:
      - uses: actions/checkout@v4
      - uses: flatpak/flatpak-github-actions/flatpak-builder@v6
        with:
          bundle: isimpa.flatpak
          manifest-path: org.noise_planet.i-simpa.yml
          cache-key: flatpak-builder-${{ github.sha }}
          arch: ${{ matrix.variant.arch }}
          verbose: true



================================================
FILE: .github/workflows/sub_buildLinux.yml
================================================
name: Build linux

on:
  workflow_call:
    inputs:
      artifactBasename:
        type: string
        required: true
      allowedToFail:
        default: false
        type: boolean
        required: false
    outputs:
      reportFile:
        value: ${{ jobs.Build.outputs.reportFile }}

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Release

jobs:
  build:
    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
    # You can convert this to a matrix build if you need cross-platform coverage.
    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
    runs-on: ubuntu-22.04       
    env:
      CPM_SOURCE_CACHE: ~/.cache/CPM
    steps:
      - uses: actions/checkout@v5
      - name: Install I-SIMPA dependencies
        run: |
          sudo sed -i 's/azure\.//' /etc/apt/sources.list 
          sudo apt-get update 
          sudo apt-get install -y --no-install-recommends \
          build-essential \
          libgtk-3-dev \
          freeglut3-dev \
          libxmu-dev \
          libxi-dev \
          libpng-dev \
          libjpeg-dev \
          libxxf86vm1 \
          libxxf86vm-dev \
          libxrandr-dev \
          mesa-common-dev \
          mesa-utils \
          libgl1-mesa-dev \
          libglapi-mesa \
          byacc \
          gettext \
          cmake \
          python3-dev \
          swig \
          libboost-all-dev
      - name: Cache CPM dependency packages
        uses: actions/cache@v3
        with:
          path: |
            ${{ env.CPM_SOURCE_CACHE }}
          key: ${{ runner.os }}-isimpa

      - name: Configure CMake
        # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
        # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
        run: |
          cmake -DCPM_SOURCE_CACHE=${{ env.CPM_SOURCE_CACHE }} -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

      - name: Build
        working-directory: ${{github.workspace}}/build
        # Compile i-simpa
        run: make

      - name: Install
        working-directory: ${{github.workspace}}/build
        # Copy stuff to bin subdirectory for "standalone" application
        run: make install

      - name: Test
        working-directory: ${{github.workspace}}/build
        # Execute tests defined by the CMake configuration.
        # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
        run: make test


================================================
FILE: .github/workflows/sub_buildMacOS.yml
================================================
name: Build MacOS

on:
  workflow_call:
    inputs:
      artifactBasename:
        type: string
        required: true
      allowedToFail:
        default: false
        type: boolean
        required: false
    outputs:
      reportFile:
        value: ${{ jobs.Build.outputs.reportFile }}

jobs:
  build:
    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
    # You can convert this to a matrix build if you need cross-platform coverage.
    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
    runs-on: macos-latest
    env:
      CPM_SOURCE_CACHE: ~/.cache/CPM
      builddir: ${{github.workspace}}/build
    steps:
      - uses: actions/checkout@v5
      - name: Install dependencies
        run: |
          brew install gettext swig
      - name: Cache CPM dependency packages
        uses: actions/cache@v3
        with:
          path: |
            ${{ env.CPM_SOURCE_CACHE }}
          key: ${{ runner.os }}-isimpa

      - name: Configure CMake
        # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
        # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
        run: |
          cmake -G Xcode -DCPM_SOURCE_CACHE=${{ env.CPM_SOURCE_CACHE }} -B "${{ env.builddir }}" -DCMAKE_BUILD_TYPE=Release -DTEAM_ID="${{ secrets.TEAMID }}"
      - name: Compiling sources
        run: |
          cmake --build "${{ env.builddir }}" --config Release
      - name: Create distribution package
        run: |
          cpack -G DragNDrop
        working-directory: ${{ env.builddir }}
      - name: Upload I-Simpa standalone
        uses: actions/upload-artifact@v4
        with:
          name: macos_dmg
          path: ${{ env.builddir }}/distribution/*.dmg





================================================
FILE: .github/workflows/sub_buildWindows.yml
================================================
# ***************************************************************************
# *   Copyright (c) 2023 0penBrain                               *
# *                                                                         *
# *   This program is free software; you can redistribute it and/or modify  *
# *   it under the terms of the GNU Lesser General Public License (LGPL)    *
# *   as published by the Free Software Foundation; either version 2 of     *
# *   the License, or (at your option) any later version.                   *
# *   for detail see the LICENCE text file.                                 *
# *                                                                         *
# *   This program is distributed in the hope that it will be useful,       *
# *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
# *   GNU Library General Public License for more details.                  *
# *                                                                         *
# *   You should have received a copy of the GNU Library General Public     *
# *   License along with this program; if not, write to the Free Software   *
# *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
# *   USA                                                                   *
# *                                                                         *
# ***************************************************************************

# This is a build and test workflow for CI of I-SIMPA.
# This workflow aims at building and testing I-SIMPA on Windows using MSVC.

name: Build Windows
on:
  workflow_call:
    inputs:
      artifactBasename:
        type: string
        required: true
      allowedToFail:
        default: false
        type: boolean
        required: false
    outputs:
      reportFile:
        value: ${{ jobs.Build.outputs.reportFile }}

jobs:
  Build:
    runs-on: windows-2022
    name: MSW vs2022 DLL Release x64
    continue-on-error: ${{ inputs.allowedToFail }}
    env:
      CPM_SOURCE_CACHE: C:/ISIMPA/CPM/
      CCACHE_DIR: C:/ISIMPA/cache/
      CCACHE_COMPILERCHECK: "%compiler%" # default:mtime
      CCACHE_MAXSIZE: 1G
      CCACHE_COMPRESS: true
      CCACHE_COMPRESSLEVEL: 1
      CCACHE_NOHASHDIR: true
      CCACHE_DIRECT: true
      #CCACHE_SLOPPINESS: "pch_defines,time_macros" # Can't get PCH to work on Windows
      CCACHE_LOGFILE: C:/logs/ccache.log
      ## Have to use C:\ because not enough space on workspace drive
      builddir: C:/ISIMPA/build/release/
      ccachebindir: C:/ISIMPA/ccache/
      logdir: C:/logs/
      reportdir: C:/report/
      reportfilename: ${{ inputs.artifactBasename }}-report.md
    outputs:
      reportFile: ${{ steps.Init.outputs.reportFile }}

    steps:
      - name: Checking out source code
        uses: actions/checkout@v4
        with:
          submodules: true
      - name: Make needed directories, files and initializations
        id: Init
        run: |
          mkdir ${{ env.CCACHE_DIR }}
          mkdir ${{ env.ccachebindir }}
          mkdir ${{ env.builddir }}
          mkdir ${{ env.logdir }}
          mkdir ${{ env.reportdir }}
          echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
      - name: Cache CPM dependency packages
        uses: actions/cache@v4
        with:
          path: |
            ${{ env.CPM_SOURCE_CACHE }}
          key: ${{ runner.os }}-isimpa
      - name: Get Ccache
        uses: ./.github/workflows/actions/windows/getCcache
        with:
          ccachebindir: ${{ env.ccachebindir }}
      - name: Restore compiler cache
        uses: actions/cache@v4
        with:
          save-always: true
          path: ${{ env.CCACHE_DIR }}
          key: ISIMPA-Windows-${{ github.ref }}-${{ github.run_id }}
          restore-keys: |
            ISIMPA-Windows-${{ github.ref }}-
            ISIMPA-Windows-
      - name: Print Ccache statistics before build, reset stats and print config
        run: |
          . $env:ccachebindir\ccache -s
          . $env:ccachebindir\ccache -z
          . $env:ccachebindir\ccache -p
      - name: Add msbuild to PATH
        uses: microsoft/setup-msbuild@v2
      - name: Install GnuWin32 gettext tools
        run: |
          choco install poedit -y
      - name: Configuring CMake
        run: >
          cmake -B"${{ env.builddir }}" .
          -DCPM_SOURCE_CACHE=${{ env.CPM_SOURCE_CACHE }} 
          -DCMAKE_VS_NO_COMPILE_BATCHING=ON
          -DCMAKE_BUILD_TYPE=Release
          -DCMAKE_C_COMPILER_LAUNCHER=${{ env.ccachebindir }}/ccache.exe
          -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.ccachebindir }}/ccache.exe
          -DGETTEXT_MSGFMT_EXECUTABLE="C:/Program Files (x86)/Poedit/GettextTools/bin/msgfmt.exe"
          -DGETTEXT_MSGMERGE_EXECUTABLE="C:/Program Files (x86)/Poedit/GettextTools/bin/msgmerge.exe"
      - name: Compiling sources
        run: |
          cmake --build "${{ env.builddir }}" --config Release --parallel
      - name: CPack
        run: |
          cpack
        working-directory: ${{ env.builddir }}
      - name: Print Ccache statistics after build
        run: |
          . $env:ccachebindir\ccache -s
      - name: Upload logs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ${{ inputs.artifactBasename }}-Logs
          path: |
            ${{ env.logdir }}

      - name: Upload I-Simpa standalone
        uses: actions/upload-artifact@v4
        with:
          name: windows-no-install-x64
          path: ${{ env.builddir }}/src/isimpa
      - name: Upload I-Simpa install
        uses: actions/upload-artifact@v4
        with:
          name: windows-setup-x64
          path: ${{ env.builddir }}/distribution/*.exe


================================================
FILE: .github/workflows/sub_prepare.yml
================================================
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# *                                                                         *
# *   Copyright (c) 2023 0penBrain.                                         *
# *                                                                         *
# *   This file is part of ISIMPA.                                         *
# *                                                                         *
# *   ISIMPA is free software: you can redistribute it and/or modify it    *
# *   under the terms of the GNU Lesser General Public License as           *
# *   published by the Free Software Foundation, either version 2.1 of the  *
# *   License, or (at your option) any later version.                       *
# *                                                                         *
# *   ISIMPA is distributed in the hope that it will be useful, but        *
# *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      *
# *   Lesser General Public License for more details.                       *
# *                                                                         *
# *   You should have received a copy of the GNU Lesser General Public      *
# *   License along with ISIMPA. If not, see                               *
# *   <https://www.gnu.org/licenses/>.                                      *
# *                                                                         *
# ***************************************************************************

# This is the pre-check workflow for CI of ISIMPA.
# It aims at running some basic checks about the workflow run ...
# ... and gathering some data needed for the next steps.

name: Prepare

on:
  workflow_call:
    inputs:
      artifactBasename:
        type: string
        required: true
      dontFailOnOldRebase:
        default: true
        type: boolean
        required: false
      maxRebaseHours:
        default: "48"
        type: string
        required: false
    outputs:
      reportFile:
        value: ${{ jobs.Prepare.outputs.reportFile }}
      changedFiles:
        value: ${{ jobs.Prepare.outputs.changedFiles }}
      changedPythonFiles:
        value: ${{ jobs.Prepare.outputs.changedPythonFiles }}
      changedCppFiles:
        value: ${{ jobs.Prepare.outputs.changedCppFiles }}

jobs:

  Prepare:
    env:
      isPR: ${{ github.event_name == 'pull_request' }}
      isPush: ${{ github.event_name == 'push' }}
      logdir: /tmp/logs/
      reportdir: /tmp/report/
      reportfilename: ${{ inputs.artifactBasename }}-report.md
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash
    outputs:
      reportFile: ${{ steps.Init.outputs.reportFile }}
      changedFiles: ${{ steps.Output.outputs.changedFiles }}
      changedPythonFiles: ${{ steps.Output.outputs.changedPythonFiles }}
      changedCppFiles: ${{ steps.Output.outputs.changedCppFiles }}

    steps:
      - name: Make needed directories, files and initializations
        id: Init
        run: |
          mkdir -p ${{ env.logdir }}
          mkdir -p ${{ env.reportdir }}
          commitCnt=0
          touch ${{ env.logdir }}changedFiles.lst ${{ env.logdir }}changedCppFiles.lst ${{ env.logdir }}changedPythonFiles.lst
          echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
      - name: Determine base and head SHA in case of PR
        if: env.isPR == 'true'
        run: |
          baseSha=${{ github.event.pull_request.base.sha }}
          headSha=${{ github.event.pull_request.head.sha }}
          echo "baseSha=$baseSha" >> $GITHUB_ENV
          echo "headSha=$headSha" >> $GITHUB_ENV
          echo "This CI run is performed on a Pull Request" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
          echo "Base SHA is $baseSha, Head SHA is $headSha" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
      - name: Check if PR has been recently rebased
        if: env.isPR == 'true'
        continue-on-error: ${{ inputs.dontFailOnOldRebase }}
        run: |
          baseDate=$(curl -H "Accept: application/vnd.github+json" -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" $GITHUB_API_URL/repos/$GITHUB_REPOSITORY/commits/$baseSha | jq -r '.commit.committer.date')
          dateDiff=$(( ( $(date +%s) - $(date -d $baseDate +%s) ) / 3600 ))
          echo "Pull request is based on a $dateDiff hour-old commit" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
          # Exit the step with appropriate code
          if [ $dateDiff -gt ${{ inputs.maxRebaseHours }} ]
          then
            echo -n ":warning: Pull request should be rebased" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
            exit 1
          fi
      - name: Determine base and head SHA in case of push
        if: env.isPush == 'true'
        run: |
          baseSha=${{ github.event.before }}
          headSha=${{ github.event.after }}
          echo "headSha=$headSha" >> $GITHUB_ENV
          if [ $baseSha -eq 0 ]
          then
            echo "This CI run is performed on a Push that created a new branch : files changed will be ignored" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
            echo "Head SHA is $headSha" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
            echo "isPush='false'" >> $GITHUB_ENV
          else
            echo "This CI run is performed on a Push" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
            echo "Base SHA is $baseSha, Head SHA is $headSha" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
            echo "baseSha=$baseSha" >> $GITHUB_ENV
          fi
      - name: Get compare between head and base
        if: env.isPR == 'true' || env.isPush == 'true'
        run: |
          echo "$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/compare/$baseSha...$headSha"
          curl -H "Accept: application/vnd.github+json" -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" $GITHUB_API_URL/repos/$GITHUB_REPOSITORY/compare/$baseSha...$headSha > ${{ env.logdir }}compare.json
      - name: Get number of commits in the changeset
        if: env.isPR == 'true' || env.isPush == 'true'
        run: |
          commitCnt=$(jq -re '.ahead_by' ${{ env.logdir }}compare.json)
          echo "Changeset is composed of $commitCnt commit(s)" | tee -a ${{env.reportdir}}${{ env.reportfilename }}
      - name: Get files modified in changeset #TODO check what happens with deleted file in the subsequent process
        if: env.isPR == 'true' || env.isPush == 'true'
        run: |
          jq '.files[] | if .status != "removed" then .filename else empty end' ${{ env.logdir }}compare.json > ${{ env.logdir }}changedFiles.lst
          grep -E '\.(py|py3)"' ${{ env.logdir }}changedFiles.lst > ${{ env.logdir }}changedPythonFiles.lst || true
          grep -E '\.(c|c\+\+|cc|cpp|cu|cuh|cxx|h|h\+\+|hh|hpp|hxx)"' ${{ env.logdir }}changedFiles.lst > ${{ env.logdir }}changedCppFiles.lst || true
          # Write the report
          echo "::group::Modified files in changeset (removed files are ignored) :" ; cat ${{ env.logdir }}changedFiles.lst ; echo "::endgroup::"
          echo "<details><summary>Modified files (removed files are ignored):</summary>" >> ${{env.reportdir}}${{ env.reportfilename }}
          cat ${{ env.logdir }}changedFiles.lst >> ${{env.reportdir}}${{ env.reportfilename }}
          echo "</details>" >> ${{env.reportdir}}${{ env.reportfilename }}
          echo "" >> ${{env.reportdir}}${{ env.reportfilename }}
      - name: Transmitting outputs
        id: Output
        run: |
          echo "changedFiles=$(cat ${{ env.logdir }}changedFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
          echo "changedPythonFiles=$(cat ${{ env.logdir }}changedPythonFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
          echo "changedCppFiles=$(cat ${{ env.logdir }}changedCppFiles.lst | tr '\n' ' ')" >> $GITHUB_OUTPUT
          echo "" >> $GITHUB_OUTPUT
      - name: Upload logs
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ${{ inputs.artifactBasename }}-Logs
          path: |
            ${{ env.logdir }}
      - name: Upload report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: ${{ env.reportfilename }}
          path: |
            ${{env.reportdir}}${{ env.reportfilename }}


================================================
FILE: .github/workflows/sub_wrapup.yml
================================================
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# *                                                                         *
# *   Copyright (c) 2023 0penBrain.                                         *
# *                                                                         *
# *   This file is part of ISIMPA.                                         *
# *                                                                         *
# *   ISIMPA is free software: you can redistribute it and/or modify it    *
# *   under the terms of the GNU Lesser General Public License as           *
# *   published by the Free Software Foundation, either version 2.1 of the  *
# *   License, or (at your option) any later version.                       *
# *                                                                         *
# *   ISIMPA is distributed in the hope that it will be useful, but        *
# *   WITHOUT ANY WARRANTY; without even the implied warranty of            *
# *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      *
# *   Lesser General Public License for more details.                       *
# *                                                                         *
# *   You should have received a copy of the GNU Lesser General Public      *
# *   License along with ISIMPA. If not, see                               *
# *   <https://www.gnu.org/licenses/>.                                      *
# *                                                                         *
# ***************************************************************************

# This is a generic wrapup workflow that only aims at gathering reports and ...
# ... presenting them as a unified summary
#
# It expects steps to be summarized to be presented a JSON input formatted ...
# ... as the "needs" context of Github :
# https://docs.github.com/en/actions/learn-github-actions/contexts#needs-context
# In addition to standard "result", each step shall have a string entry in "outputs" ...
# ... named "reportFile" containing the name of the corresponding report. The ...
# ... report file shall be available in an artifact with the same name.

name: WrapUp
on:
  workflow_call:
    inputs:
      previousSteps:
        type: string
        required: true

jobs:

  WrapUp:
    runs-on: ubuntu-latest
    env:
      artifactsDownloadDir: /tmp/artifacts/
    defaults:
      run:
        shell: bash

    steps:
      - name: Make needed directories, files and initializations
        run: |
          mkdir -p ${{ env.artifactsDownloadDir }}
      - name: Download artifacts
        uses: actions/download-artifact@v4
        with:
          path: ${{ env.artifactsDownloadDir }}
      - name: Save input data to file
        run: |
          cat > data << "EOD"
          ${{ inputs.previousSteps }}
          EOD
      - name: Compute the report
        run: |
          echo "usedArtifacts<<EOD" >> $GITHUB_ENV
          for step in $(jq -r "keys_unsorted | .[]" data)
          do
            echo "Processing step $step"
            result=$(jq -r ".\"$step\".result" data)
            icon=":heavy_check_mark:"
            if [ $result == 'failure' ]
            then
              icon=":x:"
            elif [ $result == 'cancelled' ]
            then
              icon=":no_entry_sign:"
            elif [ $result == 'skipped' ]
            then
              icon=":white_check_mark:"
            fi
            echo "### $icon $step step" >> report.md
            if [ $result == 'skipped' ]
            then
              echo "Step was skipped, no report was generated" | tee -a report.md
              continue
            elif [ $result == 'cancelled' ]
            then
              echo "Step was cancelled when executing, report may be incomplete" | tee -a report.md
            fi
            report=$(jq -r ".\"$step\".outputs.reportFile" data)
            if [ $report ]
            then
              echo "Report for step $step is $report"
              echo "$report" >> $GITHUB_ENV
              if [ $(find ${{ env.artifactsDownloadDir }} -type f -name $report | wc -l) -eq 1 ]
              then
                find ${{ env.artifactsDownloadDir }} -type f -name $report -exec cat {} \; >> report.md
              else
                echo "No or several files found for report $report, not printing" | tee -a report.md
                echo "Below files found :"
                find ${{ env.artifactsDownloadDir }} -type f -name $report
              fi
            else
              echo "Report file was not set by step $step" | tee -a report.md
            fi
            echo "" >> report.md
          done
          echo "EOD" >> $GITHUB_ENV
          cat report.md >> $GITHUB_STEP_SUMMARY
      - name: Delete used artifacts
        continue-on-error: true
        uses: geekyeggo/delete-artifact@v5
        with:
          name: |
            ${{ env.usedArtifacts }}


================================================
FILE: .gitignore
================================================
*.mo
*.pyd
*.pyo
*.bak
*.7z
*.hgignore
*.user
*.orig
*.htm
Debug
Debug Unix
currentRelease/libisimpa/
currentRelease/doc/documentation/Offline_documentation/doctrees/
*.ncb
*.rar
*.tags
*.idb
*.pdb
*.suo
*.depend
*.exe
*.dll
*.pyc
*.pyd
*.obj
*~
*.exp
*.lib
.idea/
CMakeCache.txt
CMakeFiles/
enum_def.cpp
enum_doxygen.h
vc_msw/
vc_mswd/
Thumbs.db
.cmake_dirty
.codelite/
I-Simpa.workspace
Makefile
isimpa.mk
isimpa.project
build/
make.bat
files.txt
*.pot
# cmake should convert .po files into .mo files if necessary
*.mo
.vscode
.vs
.DS_Store
out/
*.kdev4
CMakeSettings.json
.flatpak-builder
# pixi environments
.pixi/*
!.pixi/config.toml
*.flatpak


================================================
FILE: .readthedocs.yml
================================================
# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Build documentation with MkDocs
#mkdocs:
#  configuration: mkdocs.yml

# Optionally build your docs in additional formats such as PDF and ePub
formats:
  - pdf
  - htmlzip
  
build:
  os: "ubuntu-22.04"
  tools:
    python: "3.11"

python:    
  install:
  - requirements: Docs/requirements.txt


================================================
FILE: .tx/config
================================================
[main]
host = https://app.transifex.com

[o:LAE:p:i-simpa:r:i-simpa-en]
file_filter            = src/isimpa/lang/<lang>.po
source_file            = src/isimpa/lang/<lang>.pot
source_lang            = en
type                   = PO
minimum_perc           = 90
replace_edited_strings = false
keep_translations      = false

[o:LAE:p:i-simpa:r:jobtool-toolbox]
file_filter            = currentRelease/SystemScript/job_tool/locale/<lang>.po
source_file            = currentRelease/SystemScript/job_tool/<lang>.pot
source_lang            = en
type                   = PO
replace_edited_strings = false
keep_translations      = false

[o:LAE:p:i-simpa:r:preceiv_sourceTracker]
file_filter            = currentRelease/SystemScript/preceiv_sourceTracker/locale/<lang>.po
source_file            = currentRelease/SystemScript/preceiv_sourceTracker/<lang>.pot
source_lang            = en
type                   = PO
replace_edited_strings = false
keep_translations      = false

[o:LAE:p:i-simpa:r:receivertools-toolbox]
file_filter            = currentRelease/SystemScript/recp_tool/locale/<lang>.po
source_file            = currentRelease/SystemScript/recp_tool/<lang>.pot
source_lang            = en
type                   = PO
replace_edited_strings = false
keep_translations      = false

[o:LAE:p:i-simpa:r:sourcetools-toolbox]
file_filter            = currentRelease/SystemScript/source_tools/locale/<lang>.po
source_file            = currentRelease/SystemScript/source_tools/<lang>.pot
source_lang            = en
type                   = PO
replace_edited_strings = false
keep_translations      = false

[o:LAE:p:i-simpa:r:vertextools-toolbox]
file_filter            = currentRelease/SystemScript/moveto_vertex/locale/<lang>.po
source_file            = currentRelease/SystemScript/moveto_vertex/<lang>.pot
source_lang            = en
type                   = PO
replace_edited_strings = false
keep_translations      = false



================================================
FILE: CHANGELOG.md
================================================
# I-SIMPA 1.3.4 release version - 23 Dec 2020
Changelog from last officiel release 1.2.3
Changes in 4,451 files and 807 commits

## Software
* Upgrade to Python 3.8
* Fix missing DLL files
* 64 bit build version
* Update main libraries
* ... and many various fix

## SPPS Code
* Fix illegal memory allocation while executing SPPS from I-Simpa
* Fix diffusion reflection algorithm
* SPPS output extended information on reflection and particles in receivers event (only with displayed particules count)
* ... and many various fix

## Interface
* Add Offline and Online documentation shortcuts
* Fix application folder for language selection
* Fix toolbar drawing issue by forcing slider to 16 pixel height
* Add translations
* ... and many various fix

## Documentation
* Add Online and Offline documentation
* ... and many various fix

## Features
* Import 3D model in mm, cm, foot... unit
* ... and many various fix

## Bug corrections
* Fix import 32 model from FreeCad
* ... and many various fix


================================================
FILE: CMakeLists.txt
================================================
# begin basic metadata
# minimum CMake version required for C++20 support, among other things
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)

cmake_policy(SET CMP0177 NEW) # install() DESTINATION paths are normalized
cmake_policy(SET CMP0175 NEW)
# Maps to a solution file (isimpa.sln). The solution will
# have all targets (exe, lib, dll) as projects (.vcproj)
project (isimpa VERSION 1.4.0)

# a better way to load dependencies
include(cmake/CPM.cmake)
# download boost source and compile using CPM
include(cmake/SetupBoost.cmake)

# convert path of a .lib file into a .dll file
# findboost does not store .dll locations
macro(LIB_TO_DLL LIBPATH DLL_PATH)
    get_filename_component(DLL_FILENAME ${LIBPATH}  NAME_WE)
    get_filename_component(DLL_DIR ${LIBPATH} DIRECTORY)
	set(${DLL_PATH} "${DLL_DIR}/${DLL_FILENAME}.dll")
	if(NOT EXISTS "${DLL_DIR}/${DLL_FILENAME}.dll")
      MESSAGE(ERROR " Dll file does not exists ${DLL_DIR}/${DLL_FILENAME}.dll")
	endif()
endmacro(LIB_TO_DLL)

macro(COPY_LIB LIBPATH DESTINATION)
    get_filename_component(UT_SHARED_FILE ${LIBPATH} NAME)
    configure_file(${LIBPATH}
            ${DESTINATION}/${UT_SHARED_FILE} COPYONLY)
endmacro(COPY_LIB)

if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
    set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/bin" CACHE PATH "default install path" FORCE )
	message (STATUS "Default install path is set: " ${CMAKE_INSTALL_PREFIX})
else()
    message (STATUS "Install path already defined: " ${CMAKE_INSTALL_PREFIX})
endif()

# Turn on the ability to create folders to organize projects (.vcproj)
# It creates "CMakePredefinedTargets" folder by default and adds CMake
# defined projects like INSTALL.vcproj and ZERO_CHECK.vcproj
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# Set compiler flags and options.
#############################################################
# enable use of c++11 features where available
# full c++11 support in clang 3.3+: http://clang.llvm.org/cxx_status.html
# for Mac, this is probably Apple LLVM 4.2 (based on LLVM 3.2svn, in XCode 4.6+)
#   or definitely Apple LLVM 5.0 (based on LLVM 3.3svn, in Xcode 5+):
#   https://gist.github.com/yamaya/2924292

IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
    EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
    IF (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
        SET(USE_CXX_11 TRUE)
        set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wall --std=c++11 -O3 -fPIC" )        
        set( CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -Wall -O3 -fPIC" )
    ENDIF()
ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    IF ((NOT APPLE AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "3.2")
            OR (APPLE AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "4.1"))
        SET(USE_CXX_11 TRUE)
        set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wall --std=c++11  -Wno-error=c++11-narrowing -O3 -fPIC" )    
        set(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -Wall -O3 -fPIC" )
    ENDIF()
ELSEIF (MSVC AND MSVC_VERSION GREATER 1600)
    SET(USE_CXX_11 TRUE)
ELSE()
    SET(USE_CXX_11 FALSE)
ENDIF()

# set cmake policy

cmake_policy(SET CMP0086 NEW)
cmake_policy(SET CMP0078 NEW)
cmake_policy(SET CMP0074 NEW)

# Command to output information to the console
# Useful for displaying errors, warnings, and debugging
message (STATUS "cxx Flags: " ${CMAKE_CXX_FLAGS})

# Sub-directories where more CMakeLists.txt exist
add_subdirectory (src/lib_interface)
add_subdirectory (src/python_bindings)
if(NOT LIBSIMPA_ONLY)
    add_subdirectory (src/ctr)
    add_subdirectory (src/VolumetricMeshRepair)
    add_subdirectory (src/preprocess)
    add_subdirectory(src/tetgen)
    add_subdirectory (src/spps)
    if(NOT SKIPISIMPA)
       add_subdirectory (src/isimpa)
    else()
       message (STATUS "Skip building GUI")
    endif()
endif ()

# custom target for CLion "make install"
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
    add_custom_target(install_${PROJECT_NAME}
            $(MAKE) install
            DEPENDS ${PROJECT_NAME}
            COMMENT "Installing ${PROJECT_NAME}")
endif()

# Turn on CMake testing capabilities
set(TEST_DATA_DIR "${PROJECT_BINARY_DIR}/Testing")
file(MAKE_DIRECTORY ${TEST_DATA_DIR})
enable_testing()


================================================
FILE: DESCRIPTION.txt
================================================
I-Simpa is a graphical user interface (GUI) developed to host three-dimensional numerical codes for the modeling of sound propagation
in complex geometrical domains. Although I-Simpa is well adapted for energetic models (ray-tracing, sound-particle tracing, theory of
reverberation…), it can be extended to use ondulatory approaches.
I-Simpa alone is not a calculation software, but is equivalent to a pre and post-processor for acoustic codes. One or more numerical
codes must be added in order to obtain a fully functional system. At the present time, I-Simpa is delivered with two codes
(TCR and SPPS, see information here).
Classical applications are room and building acoustics, environmental noise and industrial noise, but it can be easily extend to other
applications concerning the sound propagation in 3D environments (interior of vehicle, sound in cavities…).

The main concepts of I-Simpa are:

* a functional GUI: elements and components are organized in tree structures, to easily access to all information, parameters and
properties. Many features are proposed for helping users…
* an ‘open’ system: all information and data are organized in spreadsheets that can be displayed, exported, copied…
* an ‘open’ software: each user can integrate its own numerical propagation code, develop its own functionalities within the interface
for its own applications… All have been done in order you can extend I-Simpa easily. 


I-Simpa has been initially developed as a research tool (i.e. for research laboratories), but can also be a very efficient tool for a professional or commercial use.

================================================
FILE: Docs/Building.md
================================================
## Building I-Simpa

#### Minimal Hardware requirements

* Processor 1.5 GHz Intel Pentium® or equivalent / higher
* Graphic card with OpenGl® (1.4 or higher) with display resolution 1024 x 728 or more
* Hard disk: 20 Go free space
* RAM: 512 Mo minimum required

#### Software & Dependencies requirements

* CMake
* Boost 1.73
* wxWidget 3.1.4
* Swig 3.0.11
* Python 3.8

:warning: This project uses OpenGL, check if your graphic driver is up to date !

---

### On Windows with Microsoft Visual Studio (64bits)

Last (free) version in date :  [Visual Studio Community 2019](https://www.visualstudio.com/)

#### Libraries installation

We recommend you to create a lib folder in `C:` and to use it when extracting extracting externals libraries source.

* **Boost**
	* [Download Boost 1.73](http://www.boost.org/users/history/)
	* Extract the archive
	* To build Boost : from the Visual Studio shell (Menu > All Programs > Visual Studio Tools), in the Boost folder
	
			.\bootstrap.bat
			# build just what we need
			.\b2. toolset=msvc-16.0 --with-thread --with-random --with-python --with-date_time --with-test --with-filesystem --with-regex --build-type=complete stage
			# or everything
			.\b2. toolset=msvc-16.0 --build-type=complete stage
	
	* Move the lib/ folder (inside stage/) to the Boost folder root
	* Create/check environment variable

			BOOST_INCLUDEDIR		path\to\boost\
			BOOST_LIBRARYDIR		path\to\boost\lib\

* **Swig**
	* [Download Swig](http://www.swig.org/)
	* Extract the archive
	* Add to Path the Swig folder path
* **wxWidgets**
	* [Download the wxWidget 3.1.4 Windows Installer](http://www.wxwidgets.org/downloads/)
	* The installer extract the source in a folder
	* In the wxWidget folder, in build/msw, launch wx_vc16.sl
	* Choose the "debug" mode and generate the solution
	* Choose the "release" mode and generate the solution again
	* Quit Visual Studio
	* Create/check environment variable

			WXWIN		path\to\wxwidget
	
* **Python**
	* [Download Python 3.8](https://www.python.org/downloads/)
	* Install it (the installer has an option that can do the two next steps for you)
	* Add to Path the Python installation folder path
	* Create/check environment variable
	
			PYTHONPATH		path\to\python\Lib

#### Building I-Simpa

1. Generate the Visual Studio project with CMake (GUI or command line), be careful to choose a different and empty build folder. Normally, all libraries will be found by CMake (if not, good luck).
2. In the build folder, launch isimpa.sln
3. Define i-simpa as the start project (right clic)
4. Generate ALL_BUILD in debug mode and in release mode, then generate INSTALL
6. You will find I-Simpa ready to launch in the bin folder of your build folder

### On GNU/Linux (GCC or Clang)

Travis will tell you if our Linux build work : [![Build Status](https://travis-ci.org/Ifsttar/I-Simpa.svg?branch=master)](https://travis-ci.org/Ifsttar/I-Simpa)

The travis build commands under linux are here https://github.com/Ifsttar/I-Simpa/blob/master/.travis.yml 

We have currently issues on OpenGL calls under linux. Display of particles and surface receivers are not working in Gnu/Linux. However all the other features appears to work.

#### Dependencies

In order to build under linux you have to download/install the following libraries:

- gcc-4.8
- g++-4.8
- python 3.8
- freeglut3-dev
- libxmu-dev
- libxi-dev
- libpng-dev
- libjpeg-dev
- libxxf86vm1
- libxxf86vm-dev
- libxi-dev
- libxrandr-dev
- mesa-common-dev
- mesa-utils
- libgl1-mesa-dev
- libglapi-mesa
- libgtk-3-dev
- byacc
- gettext

Swig from here:
https://github.com/swig/swig/archive/rel-3.0.10.tar.gz

Boost from here:
https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.bz2/download

wxWidgets from here:
https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxWidgets-3.1.4.tar.bz2

Cmake from here (or from apt-get)
https://cmake.org/files/LatestRelease/cmake-3.22.0.tar.gz

#### Building instructions

Creating makefile using CMake program (from the I-Simpa source directory):

```sh
export CXX="g++-4.8"
export CC="gcc-4.8"

cmake --version
${CC} --version
${CXX} --version

mkdir build
cd build

CLANG_WARNINGS=""

# wxWidget path (only in script scope)
export PATH=$HOME/wxWidgets-install/bin/:$HOME/swig-install/bin/:$HOME/cmake-install/bin/:$PATH
export BOOST_LIBRARYDIR=$HOME/boost-install/lib/
export BOOST_INCLUDEDIR=$HOME/boost-install/include/
export BOOST_ROOT=$HOME/boost-install/

cmake ..
```

Then you can run the build:

```sh
make
make DESTDIR=/home/john/isimpabuild/ install
```

Then run isimpa program located in the specified destdir.


### Other installation/configuration

Contributors can try other configurations, using more recent libraries (wxWidgets for example), other IDE (Code::Blocks for example) or a more recent version of Visual Studio... If you success in building and running I-Simpa, we will appreciate that you share your experience, adding it in this wiki. Please <a href="mailto:i-simpa@ifsttar.fr">contact us by mail</a>.

### Need information

If you have some problem during the building procedure, please <a href="mailto:i-simpa@ifsttar.fr">contact us by mail</a>.


================================================
FILE: Docs/I_Simpa_overview.rst
================================================
I-Simpa overview
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I-Simpa alone is **not a calculation software**, but is equivalent to a pre and post-processor
for acoustic codes. One or more numerical codes must be added in order to obtain a fully functional system.

At the present time, **I-Simpa is distributed with two codes**:

- `TCR code`_ based on the classical theory of reverberation
- `SPPS code`_ based on particle tracing approach

The resume of `all code characteristics are given here`_

.. _`TCR code`: code_TCR.html
.. _`SPPS code`: code_SPPS.html
.. _`all code characteristics are given here`: code_characteristics.html

Classical applications are room and building acoustics, environmental noise and industrial noise, but it can be easily extend to other applications concerning the sound propagation in 3D environments (interior of vehicle, sound in cavities…).

I-Simpa has been initially developed as a research tool (i.e. for research laboratories), but can also be a very efficient tool for a professional/commercial use, as well as for education.

**Functionnal**
	Elements and components are organized in tree structures, to easily access to all information, parameters and properties. Many features are proposed for helping users

**Open system**
	All information and data are organized in spreadsheets that can be displayed, exported, copied… User can use their own software for processing data and graphical representation.

**Open software**
	User can integrate their own numerical propagation code, develop their own functionalities within the interface, using Python scripts… All have been done in order you can extend I-Simpa easily.

**Open source project**
	The source code of I-Simpa is freely available on the GitHub plateform (https://github.com/Ifsttar/I-Simpa). There are many way for the community to contribute to the development of I-Simpa.

I-Simpa features
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Geometry
------------------


.. image:: images/Features/Import_geometry.png
	:align: left
	:width: 140px


Import 3D files
	Import 3D files with common extensions: 3DS (3D Studio), STL (stereolithography), PLY (Stanford) and POLY (TetGen).

,,,,


.. image:: images/Features/Correction_model.png
	:align: left
	:width: 140px

Geometry correction
	Automatic tools for model corrections and repairs during file importation. Model detection error.

,,,,


.. image:: images/Features/geometry_approximation.png
	:align: left
	:width: 140px

Geometry approximation
	Algorithm for model approximation by the marching cube method. This can be useful for original 3D scene with many problems.

,,,,


.. image:: images/Features/creating_scene.png
	:align: left
	:width: 140px


Parallelepipedic geometry
	Built-in design of parallelepipedic model. Just gives the dimensions of the scene.

,,,,

Surface material
---------------------


.. image:: images/Features/import_material.png
	:align: left
	:width: 140px

Import data material
	Import data from file (import from CATT-Acoustic™ and Odeon room acoustics software).

,,,,


.. image:: images/Features/manipulate_materials.png
	:align: left
	:width: 140px

Reference and User material database
	Use the built-in database (Reference) or create your own materials (User database). Organize and copy material between (sub-)groups of material.

,,,,


.. image:: images/Features/material_properties.png
	:align: left
	:width: 140px

Material properties
	Define acoustic parameters by frequency band: absorption, transmission loss, scattering, scattering reflection law. Add material information (description, physical parameters...).

,,,,

Sound sources
---------------------

.. image:: images/Features/spectrum_data.png
	:align: left
	:width: 140px

Reference and User spectrum database
	Use the built-in database (Reference) or create your own source spectrum (User database).

,,,,

.. image:: images/Features/source_properties.png
	:align: left
	:width: 140px

Sources properties
	Define source properties: spectrum, position, directivity, delay, activate/desactivate sources.

,,,,

.. image:: images/Features/Manipulate_sources.png
	:align: left
	:width: 140px

Sources manipulation
	Organize and copy sources between (sub-)groups of material. Translation and rotation of (sub-)groups of sound sources.

,,,,

Acoustic receivers
---------------------


.. image:: images/Features/Punctual_receiver_properties.png
	:align: left
	:width: 140px

Punctual sound sources
	Defines source properties: position, directivity, orientation to a point or (with a dynamic link) to a source, background noise.

,,,,

.. image:: images/Features/manipulate_punctual_receivers.png
	:align: left
	:width: 140px

Receivers manipulation
	Organize and copy receivers between (sub-)groups of material. Translation and rotation of (sub-)groups of receivers.

,,,,

.. image:: images/Features/surface_receiver.png
	:align: left
	:width: 140px

Surface receivers
	Definition of a surface receiver by selecting surfaces of the 3D model or by creating cut planes.

,,,,


Acoustic calculation
---------------------

.. image:: images/Features/calculation_codes.png
	:align: left
	:width: 140px

Calculation code
	Built-in acoustic calculation code: sound particle tracing (SPPS); Classical theory of reverberation for room acoustics (TCR).

,,,,

.. image:: images/Features/sound_map.png
	:align: left
	:width: 140px

Sound map
	Noisemap (surface receivers) in stationary stationary state, time-varying state, time-cumulated state. Iso-contours.

,,,,

.. image:: images/Features/acoustical_parameters.png
	:align: left
	:width: 140px

Acoustics parameters
	:term:`EN ISO 3382-1` room acoustics parameters: Reverberation times, Clarity, Definition, Early support, Centre time, Strength, Early Lateral Energy Fraction, Late Lateral Sound Level.

,,,,

.. image:: images/Features/result_animation.png
	:align: left
	:width: 140px

Animation
	Intensity vectors animation for punctual receivers. Ray-tracing and particle-tracing animation.

,,,,


Other features
---------------------


.. image:: images/Features/python_script.png
	:align: left
	:width: 140px

Python™ scripting
	Extension of I-Simpa functionalities using Python scripts. Creations of Toolbox.

,,,,

.. image:: images/Features/environmental_data.png
	:align: left
	:width: 140px

Environmental data
	Definition of atmospheric conditions and calculation of absorption coefficient (:term:`ISO 9613-1`). Meteorological parameters (log-lin sound speed velocity profiles).

,,,,

.. image:: images/Features/meshing.png
	:align: left
	:width: 140px

Tetrahedric meshing
	Built-in Delaunay tetrahedric meshing using TetGen code (fully parametrized).

,,,,

.. image:: images/Features/fitting_zone.png
	:align: left
	:width: 140px

Fitting zone
	Definition of volumes with fitting objects characterized by probabilistic parameters (:term:`mean free path`, absorption, diffusion law).


================================================
FILE: Docs/I_Simpa_standard.rst
================================================
Standards
====================

Acoustics
----------

.. glossary::

   ISO 9613-1
      ISO 9613-1:1993, Acoustics -- Attenuation of sound during propagation outdoors -- Part 1: Calculation of the absorption of sound by the atmosphere
      http://www.iso.org/iso/catalogue_detail.htm?csnumber=17426

   ISO 3382-1
      ISO 3382-1:2009, Acoustics -- Measurement of room acoustic parameters -- Part 1: Performance spaces
      http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=40979

   NF S31-133
      NF S31-133:2011, Acoustics -- Outdoor noise - Calculation of sound levels
      https://www.boutique.afnor.org/norme/nf-s31-133/acoustique-bruit-dans-l-environnement-calcul-de-niveaux-sonores/article/678966/fa169343

   ISO 354
      ISO 354:2003, Acoustics -- Measurement of sound absorption in a reverberation room
      https://www.iso.org/standard/34545.html

   ISO 10534-1
      ISO 10534-1:1996, Acoustics -- Determination of sound absorption coefficient and impedance in impedance tubes -- Part 1: Method using standing wave ratio
      https://www.iso.org/standard/18603.html

   ISO 10534-2
      ISO 10534-2:1998, Acoustics -- Determination of sound absorption coefficient and impedance in impedance tubes -- Part 2: Transfer-function method
      https://www.iso.org/standard/22851.html

   ISO 17497-1
      ISO 17497-1:2004, Acoustics -- Sound-scattering properties of surfaces -- Part 1: Measurement of the random-incidence scattering coefficient in a reverberation room
      https://www.iso.org/standard/31397.html

   ISO 17497-2
      ISO 17497-2:2012, Acoustics -- Sound-scattering properties of surfaces -- Part 2: Measurement of the directional diffusion coefficient in a free field
      https://www.iso.org/standard/55293.html

   ISO 266
      ISO 266:1997, Acoustics -- Preferred frequencies
      https://www.iso.org/standard/1350.html

   EN ISO 3382-1
      ISO 3382-1:2009, Acoustics -- Measurement of room acoustic parameters -- Part 1: Performance spaces
      https://www.iso.org/standard/40979.html



Other
-----

   ISO 639-1
      NF ISO 639-1:2003 -- Codes for the representation of names of languages - Part 1 : Alpha-2 code
      https://www.boutique.afnor.org/standard/nf-iso-639-1/codes-for-the-representation-of-names-of-languages-part-1-alpha-2-code/article/742951/fa104093

   ISO 639-2
      NF ISO 639-2:1999 -- Codes for the representation of names of languages - Part : alpha-3 code
      https://www.boutique.afnor.org/standard/nf-iso-639-2/codes-for-the-representation-of-names-of-languages-part-alpha-3-code/article/727490/fa043864

   ISO 639-3
      NF ISO 639-3:2007 -- Codes for the representation of names of languages - Part 3 : alpha-3 code for comprehensive coverage of languages
      https://www.boutique.afnor.org/standard/nf-iso-639-3/codes-for-the-representation-of-names-of-languages-part-3-alpha-3-code-for-comprehensive-coverage-of-languages/article/752747/fa138697

   ISO 639-4
      NF ISO 639-4:2010 -- Codes for the representation of names of languages - Part 4 : general principles of coding of the representation of names of languages and related entities, and application guidelines
      https://www.boutique.afnor.org/standard/nf-iso-639-4/codes-for-the-representation-of-names-of-languages-part-4-general-principles-of-coding-of-the-representation-of-names-of-lan/article/724011/fa138698

   ISO 639-5
      NF ISO 639-5:2008 -- Codes for the representation of names of languages - Part 5 : Alpha-3 code for language families and groups
      https://www.boutique.afnor.org/standard/nf-iso-639-5/codes-for-the-representation-of-names-of-languages-part-5-alpha-3-code-for-language-families-and-groups/article/645452/fa138699

   ISO 639-5
      NF ISO 639-6:2010 -- Codes for the representation of names of languages - Part 6 : alpha-4 code for comprehensive coverage of language variants
      https://www.boutique.afnor.org/standard/nf-iso-639-6/codes-for-the-representation-of-names-of-languages-part-6-alpha-4-code-for-comprehensive-coverage-of-language-variants/article/699300/fa148722


================================================
FILE: Docs/License.txt
================================================
/* ----------------------------------------------------------------------
* I-SIMPA (https://i-simpa.univ-gustave-eiffel.fr/). This file is part of I-SIMPA.
*
* I-SIMPA is a GUI for 3D numerical sound propagation modelling dedicated
* to scientific acoustic simulations.
* Copyright (C) 2007-2022 - Université Gustave Eiffel - Judicael Picaut, Nicolas Fortin
*
* I-SIMPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* I-SIMPA is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA or
* see <http://ww.gnu.org/licenses/>
*
* For more information, please consult:
* <https://i-simpa.univ-gustave-eiffel.fr/>
*
* To contact Université Gustave Eiffel, write to:
* Université Gustave Eiffel,
* Boulevard Descartes, Champs-sur-Marne, 77454 Marne-la-Vallée cedex 2 FRANCE
* or write to software@univ-eiffel.fr
* ----------------------------------------------------------------------*/


================================================
FILE: Docs/_Footer.md
================================================
| [I-Simpa website](https://i-simpa.univ-gustave-eiffel.fr/) | [Build I-Simpa](https://github.com/Ifsttar/I-Simpa/blob/master/Docs/Building.md) | [Download](https://i-simpa.univ-gustave-eiffel.fr/download/colonne-1/download/) | [Forum](https://i-simpa.univ-gustave-eiffel.fr/support/colonne-1/user-forum/) | [Report an issue](https://github.com/Ifsttar/I-Simpa/issues) | Copyright © 2015 Ifsttar

================================================
FILE: Docs/_Sidebar.md
================================================
[**Home**](https://github.com/Ifsttar/I-Simpa/wiki)

**Setup**
* [Install I-Simpa](Installation)
* [Update I-Simpa](Update)
* [Remove I-Simpa](Uninstallation)

**Description**
* [Presentation](Presentation)
* Menus
  * [Menu 'File'](Menu-File)
  * [Menu 'Edition'](Menu-Edition)
  * [Menu 'Simulation'](Menu-Simulation)
  * [Menu 'View'](Menu-View)
  * [Menu 'Windows'](Menu-Windows)
  * [Menu 'Help'](Menu-Help)
* [Tool Bars](Tool-Bars)
* ['Project' window](Project-window)
  *  ['Scene' tab](Scene-tab)
     * 'Data' tree
       * [Fitting zones](Fitting-zones)
       * [Sound sources](Sound-sources)
       * [Receivers](Punctual-receivers)
       * [Surface receivers](Surface-receivers)
       * [Scene surfaces](Scene-surfaces)
     * 'Project' tree
       * [Project configuration](Project-Configuration)
       * [Display](Display)
       * [Environment](Environment)
       * [Information](Information)
       * Project database
          * [Material](Material)
          * [Spectrum](Spectrum)
  *  'Calculation' tab
       * SPPS code
       * TCR code
  *  'Results' tab
* ['Properties' window](Properties-window)
* ['Console' windows](Console-window)

**Thematics**
* Basic procedures
   * [Manipulate faces](Manipulate-face)
   * [Define a position](Define-position)
   * [Manipulate sources/receivers](Manipulating-sources-and-receivers)
   * [Create diagrams](Create-diagrams)
   * [Spectrum definition](Spectrum-definition)
* Scene configuration
* Calculation configuration
* Visualization of results

**Tutorials**
* Study of teaching room
* Study of a concert hall
* Study of an industrial hall
* Scripting examples

================================================
FILE: Docs/bibliography.bib
================================================
@article{Schroeder_1965,
author = {Schroeder,M. R. },
title = {New Method of Measuring Reverberation Time},
journal = {The Journal of the Acoustical Society of America},
volume = {37},
number = {3},
pages = {409-412},
year = {1965},
doi = {10.1121/1.1909343},
URL = {https://doi.org/10.1121/1.1909343},
eprint = {https://doi.org/10.1121/1.1909343}
}

@article{kuttruff1981
author = {Kuttruff,K. Heinrich },
title = {Sound decay in reverberation chambers with diffusing elements},
journal = {The Journal of the Acoustical Society of America},
volume = {69},
number = {6},
pages = {1716-1723},
year = {1981},
doi = {10.1121/1.385951},
URL = {https://doi.org/10.1121/1.385951},
eprint = {https://doi.org/10.1121/1.385951}
}


@article{auletta1985,
	title = {Contribution À {L}'étude de la {Propagation} {Du} {Son} {Dans} {Les} {Locaux} {Industriels} {Encombrés} – 1ère {Partie} (Étude {Théorique})},
	volume = {75},
	journal = {Revue d'Acoustique},
	author = {Auletta, N.},
	year = {1985},
	pages = {477--487}
}


@article{auletta1986,
	title = {Contribution À {L}'étude de la {Propagation} {Du} {Son} {Dans} {Des} {Locaux} {Industriels} {Encombrés} – 2ème {Partie}},
	volume = {76},
	journal = {Revue d'Acoustique},
	author = {Auletta, N.},
	year = {1986},
	pages = {5--18}
}

@article{lindqvist1982,
title = "Sound Attenuation in Large Factory Spaces",
journal = "Acta Acustica united with Acustica",
year = "1982",
volume = "50",
number = "5",
pages = "313-328",
issn = "1610-1928",
url = "https://www.ingentaconnect.com/content/dav/aaua/1982/00000050/00000005/art00004",
author = "Lindqvist, E. A.",
}

@article{ondet1989,
author = {Ondet,A. M.  and Barbry,J. L. },
title = {Modeling of sound propagation in fitted workshops using ray tracing},
journal = {The Journal of the Acoustical Society of America},
volume = {85},
number = {2},
pages = {787-796},
year = {1989},
doi = {10.1121/1.397551},
URL = {https://doi.org/10.1121/1.397551},
eprint = {https://doi.org/10.1121/1.397551}
}

@article{joyce1974,
  title = {Classical-particle description of photons and phonons},
  author = {Joyce, W. B.},
  journal = {Phys. Rev. D},
  volume = {9},
  issue = {12},
  pages = {3234--3256},
  numpages = {0},
  year = {1974},
  month = {Jun},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevD.9.3234},
  url = {https://link.aps.org/doi/10.1103/PhysRevD.9.3234}
}

@article{joyce1975,
author = {Joyce,W. B. },
title = {Sabine’s reverberation time and ergodic auditoriums},
journal = {The Journal of the Acoustical Society of America},
volume = {58},
number = {3},
pages = {643-655},
year = {1975},
doi = {10.1121/1.380711},
URL = {https://doi.org/10.1121/1.380711},
eprint = {https://doi.org/10.1121/1.380711}
}

@article{joyce1978,
author = {Joyce,W. B. },
title = {Exact effect of surface roughness on the reverberation time of a uniformly absorbing spherical enclosure},
journal = {The Journal of the Acoustical Society of America},
volume = {64},
number = {5},
pages = {1429-1436},
year = {1978},
doi = {10.1121/1.382120},
URL = {https://doi.org/10.1121/1.382120},
eprint = {https://doi.org/10.1121/1.382120}
}


@PHDTHESIS{lepolles2003,
title = "Modélisation des champs diffus en acoustique architecturale par la théorie des transports : application au milieu urbain",
author = "Le Pollès, Thierry",
year = "2003",
pages = "185 p.",
school = "Université du Maine, France",
url = "http://www.theses.fr/2003LEMA1016",
}


@book{kuttruff2016,
	title = {Room {Acoustics}},
	isbn = {978-1-315-37215-0},
	url = {https://www.taylorfrancis.com/books/9781315372150},
	abstract = {Well established as a classic reference and specialised textbook, since its first publication in 1973, Heinrich Kuttruff’s Room Acoustics combines detailed},
	language = {en},
	urldate = {2019-06-20},
	publisher = {CRC Press},
	author = {Kuttruff, Heinrich},
	month = oct,
	year = {2016},
	doi = {10.1201/9781315372150},
}

@article{burns1990,
title = "Large-scale surface to surface transport for photons and electrons via Monte Carlo",
journal = "Computing Systems in Engineering",
volume = "1",
number = "1",
pages = "75 - 99",
year = "1990",
issn = "0956-0521",
doi = "https://doi.org/10.1016/0956-0521(90)90049-Q",
url = "http://www.sciencedirect.com/science/article/pii/095605219090049Q",
author = "P.J. Burns and J.D. Maltby and M.A. Christon",
}

@article{hodgson1991,
author = {Hodgson,Murray },
title = {Evidence of diffuse surface reflections in rooms},
journal = {The Journal of the Acoustical Society of America},
volume = {89},
number = {2},
pages = {765-771},
year = {1991},
doi = {10.1121/1.1894636},
URL = { https://doi.org/10.1121/1.1894636},
eprint = {https://doi.org/10.1121/1.1894636}
}

@article{lam1996,
author = {Lam,Y. W. },
title = {A comparison of three diffuse reflection modeling methods used in room acoustics computer models},
journal = {The Journal of the Acoustical Society of America},
volume = {100},
number = {4},
pages = {2181-2192},
year = {1996},
doi = {10.1121/1.417927},
URL = {https://doi.org/10.1121/1.417927},
eprint = {https://doi.org/10.1121/1.417927}
}

@article{xiangyang2002,
title = "Development of a hybrid computer model for simulating the complicated virtual sound field in enclosures",
journal = "Applied Acoustics",
volume = "63",
number = "5",
pages = "481 - 491",
year = "2002",
issn = "0003-682X",
doi = "https://doi.org/10.1016/S0003-682X(01)00054-8",
url = "http://www.sciencedirect.com/science/article/pii/S0003682X01000548",
author = "Zeng Xiangyang and Chen Ke-an and Sun Jincai",
}

@article{vorlander2000,
title = "Definition and measurement of random-incidence scattering coefficients",
journal = "Applied Acoustics",
volume = "60",
number = "2",
pages = "187 - 199",
year = "2000",
issn = "0003-682X",
doi = "https://doi.org/10.1016/S0003-682X(99)00056-0",
url = "http://www.sciencedirect.com/science/article/pii/S0003682X99000560",
author = "Michael Vorländer and Eckard Mommertz",
}

@book{cox2016,
	title = {Acoustic {Absorbers} and {Diffusers} : {Theory}, {Design} and {Application}},
	isbn = {978-1-315-36921-1},
	shorttitle = {Acoustic {Absorbers} and {Diffusers}},
	url = {https://www.taylorfrancis.com/books/9781315369211},
	language = {en},
	urldate = {2019-06-20},
	publisher = {CRC Press},
	author = {Cox, Trevor and {D’Antonio}, Peter},
	month = nov,
	year = {2016},
	doi = {10.1201/9781315369211},
}

@incollection{bass1984,
	booktitle = {Physical acoustics: Principles and methods},
	title = {Absorption of sound by the atmosphere},
	volume = {17},
	url = {http://adsabs.harvard.edu/abs/1984papm...17..145B},
	author = {Bass, H. E. and Sutherland, L. C. and Piercy, J. and Evans, L.},
	year = {1984},
	pages = {145--232},
	publisher = {Academic Press, Inc.},
}

@book{salomons2001,
	title = {Computational {Atmospheric} {Acoustics}},
	isbn = {978-0-7923-7161-8},
	url = {https://www.springer.com/gp/book/9780792371618},
	language = {en},
	urldate = {2019-06-20},
	publisher = {Springer Netherlands},
	author = {Salomons, E. M.},
	year = {2001},
}

@article{embrechts2001,
title = "Determination of the Scattering Coefficient of Random Rough Diffusing Surfaces for Room Acoustics Applications",
journal = "Acta Acustica united with Acustica",
publishercode ="dav",
year = "2001",
volume = "87",
number = "4",
pages = "482-494",
issn = "1610-1928",
url = "https://www.ingentaconnect.com/content/dav/aaua/2001/00000087/00000004/art00007",
author = "Embrechts, J. J. and Archambeau, D. and Stan, G. B.",
}

@article{barron1988,
author = {Barron,M.  and Lee,L‐J. },
title = {Energy relations in concert auditoriums. I},
journal = {The Journal of the Acoustical Society of America},
volume = {84},
number = {2},
pages = {618-628},
year = {1988},
doi = {10.1121/1.396840},
URL = {https://doi.org/10.1121/1.396840},
eprint = {https://doi.org/10.1121/1.396840}
}


================================================
FILE: Docs/code_SPPS.rst
================================================
Presentation
~~~~~~~~~~~~~~~~~~~~~~~~~~

**SPPS is a sound particles-tracing code, based on geometrical, energetical and probabilistic approaches.**

- `Visit the offical I-Simpa website`_ for additionnal information about SPPS code.

- See the main `characteristics of the code`_ that is embedded in I-Simpa

.. _Visit the offical I-Simpa website: https://i-simpa.univ-gustave-eiffel.fr/presentation/embedded-codes/spps/
.. _`characteristics of the code`: code_characteristics.html

The simulation principle of the SPPS code (from French "Simulation de la Propagation
de Particules Sonores") relies upon tracking sound particles, carrying a amount
of energy ε and emitted from a sound source, within a 3D-domain. Each particle
propagates along a straight line between two time steps Δt (the whole trajectory
may be curved), until collision with an object. At each collision, sound particles
may be absorbed, reflected, scattered, diffused, transmitted, depending on the nature of the object.

Two algorithms can be considered:

	1. The first approach (**Random**) is to consider that the energy of the particle is constant. In function of the phenomena, the particle may disappear from the domain or follows its propagation: the number of sound particles decreases along the time.

	2. In the second approach (**Energetic**), the particle energy is decreasing according to the physical phenomena occurring during the propagation. In this case, the number of particles in the domain should be constant along the time. Since, in both cases, physical phenomena can be modeled according to probabilistic laws.

Both approaches are equivalent to Monte-Carlo methods. The accuracy of prediction is then mainly dependent of the initial number of particles.

Detailled information about SPPS code:

- `Using SPPS within I-simpa`_
- `General principle of SPPS`_
- `The physics inside SPPS`_
- `Validation of SPPS code`_
- `Validation of I-Simpa (online)`_

.. _`Using SPPS within I-simpa`: code_configuration_SPPS.html
.. _`General principle of SPPS`: code_SPPS_principle.html
.. _`The physics inside SPPS`: code_SPPS_modelling.html
.. _`Validation of SPPS code`: code_SPPS_Validation.html
.. _`Validation of I-Simpa (online)`: https://i-simpa.ifsttar.fr/support/resources/code-verification/


================================================
FILE: Docs/code_SPPS_Validation.rst
================================================
Verification of the SPPS code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Here were proposed some validations and verifications of the SPPS code.

.. warning:: Paid attention to the limitations of this validation. `Goto this page`_

- `Clarity calculation implementation validation`_
- `Atmospheric absorption implementation verification`_

.. _`Goto this page`: validations/validation_notice.html
.. _`Clarity calculation implementation validation`: validations/validation_clarity_calculation.html
.. _`Atmospheric absorption implementation verification`: validations/validation_atmospheric_absorption.html


================================================
FILE: Docs/code_SPPS_modelling.rst
================================================
Modelling of physical phenomena in SPPS
===================================================

Sound source modelling
--------------------------------

General formalism
~~~~~~~~~~~~~~~~~~

Acoustic directivity and probability density of sound particles emission
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

From a numerical modelling point of view, the problem of sound emission from a point source is to attribute to the sound particles, at a given moment (which can be the origin of time), the exact position of the source, propagation directions in accordance with the directivity of the source. For example, in the case of an omnidirectional sound source, it is necessary to verify that the sound particles, once emitted, are uniformly distributed over a sphere centred on the source (see corresponding figure: :ref:`geo_source`). The first solution that comes to mind is to make a deterministic discretization of the source's radiation in spherical coordinates; the method would consist in considering emission angles :math:`\theta` and :math:`\phi` by constant steps. Nevertheless, such discretization of emission angles causes an artificial concentration of sound particles at the poles of the sphere symbolizing the source.

.. _geo_source:

.. figure:: images/SPPS/geo_source.png
   :width: 300px
   :align: center
   :alt: Elementary geometry for a sound source

   Elementary geometry for a sound source

   The direction of emission of a particle is defined in spherical coordinates by the angles :math:`\phi` (azimuth) between :math:`0` and :math:`2\pi`, and :math:`\theta` between :math:`0` and :math:`\pi` (polar angle), or by the elementary solid angle :math:`d\Omega`.

It is in fact necessary to check the respect of the number of particles emitted by elementary solid angle :math:`d\Omega = d\phi\,\sin\theta\,d\theta`, checks the directivity of the source, either in a deterministic or random way (figure[geo\_source]). In our case, we chose a random draw of the initial directions of the particles. It is then necessary to define the probability densities :math:`g(\phi)` and :math:`p(\theta)`, respectively for the angles :math:`\phi\in[0.2\pi]` and :math:`\theta\in[0.\pi]`, such as the probability density :math:`Q(\theta,\phi)` of emission in the direction :math:`(\theta,\phi)` (or probability density :math:`F(\Omega)` of emission in the elementary solid angle :math:`\Omega`) either in accordance with the directivity of the source. In practice, :math:`Q(\theta,\phi)` is nothing more than the directivity of the source. By definition, these probability densities verify the following relationship:

.. math::

   \begin{aligned}
           \int F(\Omega)\, d\Omega &= \iint Q(\theta,\phi) \,\sin\theta \, d\phi\,d\theta \\
           &=\int_{0}^{2\pi} g(\phi) \, d\phi \int_{0}^{\pi} p(\theta)\,\sin\theta\,d\theta\\
           &=1.
           \end{aligned}

From the point of view of sound power, this is equivalent to considering that the power :math:`W` of the source is well distributed over the surface of a sphere centered on the source:

.. math:: \iint W\,Q(\theta,\phi) \,\sin\theta \, d\phi\,d\theta=W.

If the densities :math:`g(\phi)` and :math:`p(\theta)` are independent, they check:

.. math:: \label{cond_g} \int_{0}^{2\pi} g(\phi) \, d\phi = 1,
   :label: cond_g

and

.. math:: \label{cond_p} \int_{0}^{\pi} p(\theta)\,\sin\phi\,d\theta=1.
   :label: cond_p

Source power and elementary particle energy
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Acoustically, for a period of time :math:`\Delta t`, a power source :math:`W` emits an amount of energy :math:`E=W\times \Delta t`. From a particle concept point of view, each particle carries an elementary energy :math:`\varepsilon_0`. If the source emits :math:`N` sound particles, the energy conservation between the two approaches therefore requires:

.. math:: N \times \varepsilon_0 = W\times \Delta t,

then

.. math:: \label{energie_elementaire} \varepsilon_0 = \frac{W}{N}\times \Delta t.

Omnidirectionnal source
~~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

An omnidirectional sound source is a source that radiates in all directions with the same amplitude. The directivity of the source is similar to a sphere. The directivity coefficient :math:`Q` associated with the directivity of the source is equal to :math:`1`.

Modeling
''''''''''''

In the case of an omnidirectional source, the densities :math:`g(\phi)` and :math:`p(\theta)` being uniform, the relationships :eq:`cond_g` and :eq:`cond_p` verify:

.. math:: \int_{0}^{2\pi} g(\phi) \, d\phi =\int_{0}^{2\pi} A \, d\phi = 1

and

.. math:: \int_{0}^{\pi} p(\theta)\,\sin\theta\,d\theta=\int_{0}^{\pi} B\,\sin\theta\,d\theta=1,

where :math:`A=1/2\pi` and :math:`B=1/2` are two normalization constants. In practice, the method consists first of drawing an angle :math:`\theta` between :math:`0` and :math:`2\pi` as follows:

.. math:: \label{choix_phi} \phi=2\pi \times u \quad \in [0,2\pi]

where :math:`u` is a random number between :math:`0` and :math:`1`, and defined by a uniform distribution. If the angle :math:`\theta` is chosen in the same way (*i.e.* :math:`\theta= \pi \times v`, :math:`v` being a random number with a uniform distribution between :math:`0` and :math:`1`), the distribution of the emission directions does not respect the elementary solid angle consistency, since the condition ([cond\_p]) is not verified. In this case, the directions around the poles would be preferred. It is actually necessary to determine the angles :math:`\theta` which verify a distribution proportional to :math:`\sin\theta`. In this simple case, the procedure consists in applying the inverse cumulative distribution function method. According to the relationship :eq:`cond_p`, the probability :math:`f(\hat{\theta})` of drawing an angle :math:`\theta<\hat{\theta}` is given by:

.. math:: \label{cdf_dist_theta} f(\hat{\theta}) = \frac{1}{2} \int_{0}^{\hat{\theta}} \sin\theta \, d\theta=\frac{1}{2} \left[\cos\hat{\theta}-1\right].

Knowing that this distribution is between :math:`0` and :math:`1`, the choice of the angle :math:`hat{\theta}` is made by randomly drawing a number :math:`v\in[0.1]`, following a uniform distribution, such as:

.. math:: \hat{\theta} = \cos^{-1} \left(2v-1\right)\quad \in [0,\pi].

The propagation vectors :math:`\mathbf{v}(v_x,v_y,v_z)`, of standard :math:`c` (sound velocity), are then defined by the relationships:

.. math::

   \mathbf{v}=\left\{\begin{array}{l}
               v_x=c\,\cos\theta\,\sin\phi\\
               v_y=c\,\sin\theta\,\sin\phi\\
               v_z=c\,\cos\phi
               \end{array}\right.

Verification
''''''''''''

The figures :ref:`Dist_angles_phi_2019` and :ref:`Dist_angles_theta_2019` shows an example of the distribution of angles :math:`\theta` and :math:`\phi` obtained according to this printing method with :math:`10000` achievements. It is easy to see that the angle distribution checks the theoretical distribution. It is understood that the quality of the random draw depends on the method of generating random numbers, and that compliance with theoretical distributions increases with the number of draws.

.. _Dist_angles_phi_2019:

.. figure:: images/SPPS/Dist_angles_phi_2019.png
   :width: 500px
   :align: center
   :alt: Distribution of emission angles for an omnidirectional source.

   Distribution of emission angles :math:`\phi` for an omnidirectional source


.. _Dist_angles_theta_2019:

.. figure:: images/SPPS/Dist_angles_theta_2019.png
   :width: 500px
   :align: center
   :alt: Distribution of emission angles for an omnidirectional source.

   Distribution of emission angles :math:`\theta` for an omnidirectional source


Unidirectional source
~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

A unidirectional sound source is a source that radiates in a single direction of space, defined by the angles :math:`\theta` and :math:`\phi`, at the point of emission and in the absolute reference point. The directivity coefficient associated with the directivity of the source is then defined by:

.. math:: Q\left(\theta,\phi\right)=\delta\left(\theta,\phi\right)=\delta\left(\theta\right)\times\delta\left(\phi\right),

where :math:`\delta` is the Dirac distribution funtion.

Modelling
''''''''''''

The modelling of this type of source is entirely deterministic and therefore does not pose a problem. It is enough to define a vector :math:`\mathbf{s}(s_x,s_y,s_z)` in the absolute reference frame of the scene, such that:

.. math::

   \mathbf{s}=\left\{\begin{array}{l}
               s_x=s\,\cos\theta\,\sin\phi\\
               s_y=s\,\sin\theta\,\sin\phi\\
               s_z=s\,\cos\phi
               \end{array}\right.


Plane sources (XY, YZ and XZ)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

A 'plane' type sound source is a source that radiates in a plane. By default, we consider three sources XY, YZ and XZ defined by the three reference planes :math:`(xOy)`, :math:`(yOz)` and :math:`(xOz)` respectively.

Modelling
''''''''''''

The procedure consists in randomly determining the direction of propagation of a particle in a plane. Using the angle convention presented in figure :ref:`geo_source`, we will have:

.. math::

   \left\{\begin{array}{llll}
               \text{XY plane:}& \theta=2\pi \times u\quad &\text{and}&\quad \phi=\pi/2\\
               \text{YZ plane:}& \theta=0 \quad &\text{and}&\quad \phi=2\pi \times u\\
               \text{XZ plane:}& \theta=\pi/2\quad &\text{and}&\quad \phi=2\pi \times u
               \end{array}\right.

where :math:`u` refers to a random number between :math:`0` and :math:`1`. Thereafter, the propagation vector :math:`\mathbf{v}(v_x,v_y,v_y,v_z)`, of standard :math:`c` (sound velocity), is defined by the relationships:

.. math::

   \mathbf{v}=\left\{\begin{array}{l}
               v_x=c\,\cos\theta\,\sin\phi\\
               v_y=c\,\sin\theta\,\sin\phi\\
               v_z=c\,\cos\phi
               \end{array}\right.


Acoustic propagation modelling
-----------------------------------------

Acoustic propagation
~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

In the absence of absorption and reflection on the walls of the domain or on objects, the decrease in sound intensity from an omnidirectional source is written:

.. math:: I=\frac{Q}{4\pi\,r^2},


where :math:`r` is the distance to the source, and :math:`Q` is the directivity of the source in the direction of observation (:math:`Q=1` for an omnidirectional source). This decrease reflects the phenomenon of geometric dispersion, which describes the "spreading" of a spherical wave as it propagates.

Modeling
''''''''''''

Considering the method presented for an omnidirectional source, the geometric dispersion is automatically respected. Indeed, the proposed numerical method allows to obtain a uniform distribution of particles over an elementary solid angle. On a sphere, the particle distribution :math:`n(r)` (in :math:`m^2`) is therefore equal to:

.. math:: n(r)=\frac{N}{4\pi\,r^2},

where :math:`N` is the number of particles. The particle distribution therefore verifies the same decrease as the intensity. It should be noted, however, that the further away the observation point is from the source, the more sound particles will be required.

Verification
''''''''''''

The figure :ref:`verif_dispersion` shows the numerical results of the free field propagation (the free field is simulated by considering a long corridor with perfectly absorbent limits), for an omnidirectional sound source, without atmospheric absorption (number of particles :math:`N=20\times 10^6`). The agreement is excellent.

.. _verif_dispersion:

.. figure:: images/SPPS/fig_illustration_dispersion.png
   :width: 500px
   :align: center
   :alt: Distribution of emission angles for an omnidirectional source.

   Verification of the respect of the geometric dispersion with the SPPS code

   The numerical simulations are compared with the theoretical decrease (:math:`N=20\times 10^6` particles). The marker presents the result of the simulation with the **SPPS** code. The solid line shows the theoretical geometric dispersion.


Atmospheric absorption
~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

During its propagation in air, a sound wave is partially attenuated by particular physical mechanisms ("classical" transmission processes, molecular absorption due to rotational relaxation, molecular absorption due to vibratory relaxation of oxygen and nitrogen) :cite:`bass1984`. Thus, after a propagation distance :math:`r`, the amplitude :math:`p_t` of the sound pressure decreases according to the relationship (:term:`ISO 9613-1`):

.. math::

   \label{eq:att_atmos_pression}
           p_t= p_i \exp \left(-\frac{\ln(10)}{20}\alpha_\text{air}\times r\right)

where :math:`p_i` is the initial pressure. Considering that the sound intensity is proportional to the square of the sound pressure,

.. math::

   \label{eq:att_atmos_pression_I}
           I\propto p_t^2 \propto \exp \left(-2\frac{\ln(10)}{20}\alpha_\text{air}\times r\right)

and writing that the intensity :math:`I` of the sound wave decreases with the relationship:

.. math::
   :label: att_atmos

   \label{eq:att_atmos}
           I= I_0 \exp -m\,r,

where :math:`I_0` is the initial intensity of the sound wave. Then, the atmospheric absorption coefficient :math:`m` (in Np/m) can be expressed from the atmospheric absorption coefficient :math:`\alpha_\text{air}` (in dB/m), by the relationship:

.. math:: m=\frac{\ln 10}{10}\alpha_\text{air}.

In **SPPS** code, the atmospheric absorption coefficient :math:`\alpha_{air}` is calculated according to :term:`ISO 9613-1`, considering the centre frequency of each frequency band of calculation according to the reference standard (*cf.* paragraph 8.2.1 of :term:`ISO 9613-1`). This approximation is considered valid if the product of the source-receiver distance (in km) by the square of the centre frequency (in kHz) does not exceed 6 km.kHz :math:`^2` for the third octave bands and 3 km.kHz :math:`^2` for the octave bands. However, the propagation distance must not exceed 6 km for third octave bands and 3 km for octave bands, regardless of the centre frequency considered.



Random modelling
''''''''''''''''''''''''''

By choosing the 'random' calculation mode, atmospheric absorption is taken into account as a probability of the sound particle disappearing during its displacement. The corresponding probability density can be defined from the relationship :eq:`att_atmos`:

.. math:: f(r)=\exp -m\,r.

This quantity expresses the probability that the particle will not be absorbed during its propagation distance :math:`r`. The probability density :math:`f(r)` is well between :math:`1` and :math:`0` (see figure :ref:`geo_att_atmos`):

- :math:`f(0)=1`, the probability is maximum, the particle cannot be absorbed if it does not move;

- :math:`f(\infty)=0`, the probability is zero since the particle cannot spread infinitely.

It is also easily verified that the probability of propagation is independent of the previous probability of propagation:

.. math:: f\left(\Sigma_{n=1}^N r_i\right)=\Pi_{i=1}^N f(r_n).

Taking atmospheric absorption into account is relatively simple. It is sufficient to consider a uniform random number :math:`\zeta` between :math:`0` and :math:`1`, at each time step, and to compare this number to the probability density :math:`f(d_0)` corresponding to an elementary displacement :math:`d_O=c\Delta t` on a time step :math:`\Delta t`. If this number :math:`\zeta` is less than :math:`f(d_o)`, there will be propagation. Otherwise, there will be atmospheric absorption, thus disappearing the particle. Even on a small number of particles, this method makes it possible to correctly take into account atmospheric absorption.

.. _geo_att_atmos:

.. figure:: images/SPPS/geo_att_atmos.png
   :width: 500px
   :align: center
   :alt: Modelling of atmospheric absorption by a random process.

   Modelling of atmospheric absorption by a random process

   The curve :math:`f(r)` separates the propagation domain from the atmospheric absorption domain.


Energetic modelling
''''''''''''''''''''''''''''

By choosing the 'energetic' calculation option, the energy of the particle is weighted throughout its movement, using the relationship :eq:`att_atmos`.

Verification
''''''''''''

As an illustration, the figure :ref:`illustration_att_atmos` shows the sound decrease calculated by the **SPPS** code at :math:`10` kHz for classical atmospheric conditions (:math:`T=20` Celsisus, :math:`H=50` %, :math:`P=101325` Pa, or :math:`m=0.036` m :math:`^{-1}`), for both types of modelling, compared to the theoretical decrease presented to the relationship :eq:`att_atmos`; the simulation is identical to the one for the verification of the respect of the geometric dispersion.. As expected, energetic modelling gives a better result than random modelling, the average deviation from the theoretical curve being :math:`0.17` dB and :math:`0.41` dB respectively, the calculation times being similar.


.. _illustration_att_atmos:

.. figure:: images/SPPS/illustration_att_atmos.png
   :width: 500px
   :align: center
   :alt: Illustration of the modelling of atmospheric absorption in the SPPS code.

   Illustration of the modelling of atmospheric absorption in the SPPS code

   Comparison with the theoretical decrease (with et without atmospheric absorption) Simulations performed with (:math:`N=20\times 10^6` particles) at 10 kHz, for conventional atmospheric conditions: :math:`T=20` Celsisus, :math:`H=50` %, :math:`P=101325` Pa, or :math:`m=0.036` m :math:`^{-1}`.


Acoustic velocity profile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

In outdoor environments, acoustic propagation can be influenced by micrometeorological conditions governed by thermal (heat transfer) and aerodynamic (wind profiles) laws. The phenomena have a very strong interaction with the ground (topography, surface and subsoil temperature, hygrometry, crops, forests, obstacles, buildings, etc.). In addition, they evolve rapidly in time and space, making their analytical description and numerical modelling complex. The thermal and aerodynamic factors that influence propagation are as follows:

	- Thermal factors: heat exchanges between the ground and the lower layer of the atmosphere lead to a variation in air temperature as a function of the height above the ground, and therefore to a variation in sound velocity.

	- Aerodynamic factors: due to the roughness of the ground surface, wind speed is always higher at height than at ground level. In a given situation, the speed of sound in the presence of wind corresponds to the algebraic sum of the speed of sound in the absence of wind and the projection of the wind vector on the direction of propagation considered. This speed therefore varies according to the height above the ground.

By analogy with the laws of optics (see figure :ref:`geo_profil_celerite`), the effect of atmospheric conditions on acoustic propagation can be described through the expression of the acoustic index :math:`n` of the propagation medium. If placed in a vertical section, this index is assumed to vary with altitude :math:`z` and with source-receptor distance :math:`r`, such that:

.. math:: n(r,z)=\frac{c(r,z)}{c_0}=\langle n(r,z)\rangle + \mu(r,z),

where :math:`c`s the effective velocity of the sound wave in the environment crossed and :math:`c_0` the reference one. Thus, two distinct phenomena can be distinguished that affect acoustic propagation, refraction and atmospheric turbulence. These phenomena are respectively related to the deterministic parts :math:`\langle n\rangle` and stochastic :math:`\mu` of the propagation medium index. In practice, these refraction and turbulence phenomena co-exist and interact, leading to complex propagation conditions, as well as a very wide dispersion of the sound levels encountered *in situ*, all of which are identical (topography, soil type, source-receptor geometry, etc.).


.. _geo_profil_celerite:

.. figure:: images/SPPS/geo_profil_celerite.png
   :width: 500px
   :align: center
   :alt: Schematic representation of the acoustic refraction in the atmosphere in the presence of a vertical velocity profile.

   Schematic representation of the acoustic refraction in the atmosphere in the presence of a vertical velocity profile

Acoustic velocity profile model
'''''''''''''''''''''''''''''''

The average sound velocity profile thus depends on the average wind and temperature profiles. This velocity profile can be described analytically, depending on whether it follows a linear (":math:`\text{lin}`"), logarithmic (":math:`\text{log}`"), hybrid (":math:`\text{log-lin}`") or other law. The ":math:`\text{log}`" profiles thus have the advantage of translating the very strong vertical gradient of sound velocity in the immediate vicinity of the ground, but do not accurately reflect the more moderate evolution with altitude above a certain height. On the other hand, the ":math:`\text{lin}`" profile minimizes the effects in the vicinity of the ground and are therefore not representative of reality when placed at very low altitude. A good compromise therefore consists in using hybrid profiles of the type ":math:`\text{log-lin}`" (valid especially for a so-called "stable" atmosphere), expressed through the parameters :math:`a_\text{log}` and :math:`b_\text{lin}` which appear in the analytical expression of the vertical profile of the effective sound velocity:

.. math::
   :label: celerite_log_lin

   \label{eq:celerite_log_lin}
           \langle c(z)\rangle=c_0+ a_\text{log}\times \ln\left(1+\frac{z}{z_0}\right)+b_\text{lin}\times \left( z-z_0\right),

où :math:`z_0` is the roughness parameter, whose typical values range from :math:`10^{-2}` m for short grass to several meters in urban areas. The vertical gradient is then expressed by deriving according to the variable :math:`z`:

.. math:: \frac{\partial\langle c(z)\rangle}{\partial z}=\frac{a_\text{log}}{z_0}+b_\text{lin}.

The main effect of propagation in a medium of variable speed is to bend the sound rays downwards or upwards depending on whether the vertical gradient of sound velocity is positive (*conditions (very) favorable* to propagation) or negative (*conditions (very) unfavorable* to propagation) respectively. The transient state between these two states represents *homogeneous* propagation conditions.

	- **Homogeneous:** the speed :math:`c` is the same at any point in the domain and equal to the reference speed :math:`c_0`, the latter being calculated as a function of temperature and humidity conditions by the formula:

	   .. math:: c_0=343.2\sqrt{\frac{T}{T_\text{ref}}},

	   where :math:`T` is the temperature (K), and :math:`T_\text{ref}=293.15` K the reference temperature (:term:`ISO 9613-1`).

	-  **Very unfavorable** : :math:`a_\text{log}=-1` and :math:`b_\text{lin}=-0.12`;

	-  **Unfavorable** : :math:`a_\text{log}=-0.4` and :math:`b_\text{lin}=-0.04`;

	-  **Favorable**: :math:`a_\text{log}=+0.4` and :math:`b_\text{lin}=+0.04`;

	-  **Very favorable**: :math:`a_\text{log}=+1` and :math:`b_\text{lin}=+0.12`.

The curvature of the radius, at the boundary of zones (I) and (II), is obtained by applying the Huygens-Fresnel construction, resulting in the following Snell-Descartes law :cite:`salomons2001` (see figure :ref:`geo_profil_celerite`):

.. math::
   :label: relation_snell

   \label{relation_snell}
           \frac{\cos\gamma_1}{c_1}=\frac{\cos\gamma_2}{c_2},

where :math:`c_1` and :math:`c_2` are respectively the norms of the propagation vectors :math:`\mathbf{c_1}` and :math:`\mathbf{c_2}`, and where the angles :math:`\gamma_1` and :math:`\gamma_2` are defined with respect to the horizontal axis in the plane :math:`(xOy)`. By construction, the projection of the propagation direction in the plane :math:`(xOy)`, defined by the angle :math:`\phi` in spherical coordinates, is preserved.

Modelling
''''''''''''

Whatever the method of calculation chosen, the speed is taken into account is identical. At each time step, the speed standard is calculated according to the chosen speed profile, based on the relationship :eq:`celerite_log_lin`. To determine the new direction of propagation, due to the change in speed, the relationship :eq:`relation_snell` must then be applied. Knowing the angle :math:`\theta_1` of the initial propagation direction, the new propagation direction is defined by:

.. math::
   :label: cosgamma2

   \label{cosgamma2}
           \cos\gamma_2=\frac{c_2}{c_1}\cos\gamma_1=\frac{c_2}{c_1}\frac{\sqrt{c_{1x}^2+c_{1y}^2}}{c_1}.

The coordinates of the propagation vector are then obtained by:

.. math::

   \mathbf{c_2}=\left\{\begin{array}{l}
           c_{2x}=c_2\cos\gamma_2\cos\phi\\
           c_{2y}=c_2\cos\gamma_2\sin\phi\\
           c_{2z}=c_2\sin\gamma_2
           \end{array}\right.

with

.. math:: \sin\phi=\frac{c_{1y}}{\sqrt{c_{1x}^2+c_{1y}^2}},

and

.. math:: \cos\phi=\frac{c_{1x}}{\sqrt{c_{1x}^2+c_{1y}^2}}.

From a numerical simulation point of view, the calculation of :math:`\cos\gamma_2` by the relationship :eq:`cosgamma2` can give values higher than :math:`1` which is obviously not physical. This case occurs when the curvature (*turning point*) of a radius is reversed. To avoid this problem and impose a change in curvature, the procedure consists in imposing the value from :math:`\gamma_2` to :math:`1-\epsilon` (:math:`\epsilon` being a very small value) and changing the orientation of the component :math:`c_{2z}`.

As an example, the figure [illustration\_refraction] shows two illustrations of how acoustic refraction is taken into account using this method. This figure can be compared directly with the examples given in the reference :cite:`salomons2001` (figures 4.5 and 4.6).

.. _illustration_refraction_downward:

.. figure:: images/SPPS/illustration_refraction_downward.png
   :width: 500px
   :align: center
   :alt: Illustration of the modelling of acoustic refraction with SPPS in downward condition.

   Illustration of the modelling of acoustic refraction with SPPS in downward condition

.. _illustration_refraction_upward:

.. figure:: images/SPPS/illustration_refraction_upward.png
   :width: 500px
   :align: center
   :alt: Illustration of the modelling of acoustic refraction with SPPS in upward condition.

   Illustration of the modelling of acoustic refraction with SPPS in upward condition


Diffusion by fittings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The presence of a large number of objects on the path of a sound wave can lead to a diffusion process. This process can be simulated in a deterministic way, by modelling each object individually. When the number of objects becomes large, and these objects are of similar sizes (example of an industrial hall with many machines (without acoustic emission) or similar boxes), it may be more interesting to statistically model this fitting zone.

Physical description
''''''''''''''''''''

In order to take into account the diffusion and absorption of diffusing (or scattering) objects distributed in the propagation medium, we considered an approach similar to that of Ondet and Barbry :cite:`ondet1989`, which itself is based on the work of many authors :cite:`kuttruff1981,auletta1985,auletta1986,lindqvist1982`, among others. In this approach,

- the diffusing objects (or obstacles, or fittings, or scattering objects...) are considered as punctual. Sound particles are returned in all directions of space at each collision with a scattering object (except in the case of absorption). This assumption is generally valid when the wavelength is in the order of magnitude of the characteristic dimension of the obstacle;

- the scattering phenomenon follows a Poisson process, which means that the probability of collision of a sound particle with a scattering object follows a Poisson's law. The collision probabilities are independent of each other (the collision probability during time :math:`t` and :math:`t+dt` is independent of collisions before time :math:`t`);

- the objects in the fitting zone do not produce particles (*i.e.* these objects are not sound sources).

.. _illustration_diffusion_fittings:

.. figure:: images/SPPS/illustration_diffusion_fittings.png
   :width: 500px
   :align: center
   :alt: Schematic representation of the acoustic diffusion by obstacles in a fitting zone.

   Schematic representation of the acoustic diffusion by obstacles in a fitting zone

A sound wave propagating in the environment may come into contact with scattering objects, causing the wave to diffract simultaneously and, in part, to absorb it. By analogy, in the particle approach, a particle that comes into contact with a scattering object can either be absorbed or reflected in another direction of propagation (see figure: :ref:`illustration_diffusion_fittings`). At the macroscopic scale, *i.e.* considering all the sound particles simultaneously, a diffusion process occurs, characterized by:

- the absorption coefficient :math:`\alpha_c` of the scattering objects;

- the bulk density :math:`n_c` of the propagation medium, defined by the number :math:`N_c` of obstacles present in the volume :math:`V_c`:

.. math:: n_c=\frac{N_c}{V_c}.

- the average scattering section :math:`q_c`, *i.e.* the average surface of the scattering object, seen by a particle in a given incident direction. In practice, this data is very difficult to obtain, if not impossible, since the scattering objects are of complex and different shapes. In this condition, it is common to assimilate the diffusing object to a sphere, having the same external surface :math:`s_c` as the object. Whatever the angle of incidence, the visible cross-section of the sphere (mean scattering cross-section) will be equal to a quarter of the total surface area of the sphere, or:

.. math:: q_c=\frac{s_c}{4}.

- the average diffraction section per unit volume :math:`\nu_c`, also called the diffusion frequency, by

.. math:: \nu_c=n_c\,q_c,

-- if all the scattering objects are identical, or

.. math:: \nu_c=\frac{1}{V}\sum_{p=1}^{N_c}\frac{s_{c_p}}{4}

-- if each object diffusing :math:`p` is defined by its surface :math:`s_{c_p}`. In practice, and in the rest of the document, the diffusing objects will be considered uniform in the same volume of diffusion. Nevertheless, within the same propagation volume, several separate diffusion volumes can be considered.

Since the scattering phenomenon follows a Poisson's law, the probability that a sound particle will collide with scattering objects after a time :math:`t_k` is equal to:

.. math:: W_k (c\,t_k)=\frac{\left(\nu_c \, c\,t_k\right)^k}{k!}\exp\left(-\nu_c\, c\, t_k\right),

where :math:`c\, t_k` is the distance covered during a time :math:`t_k`, which can be expressed from the distance :math:`R_p` between two collisions (see figure: :ref:`illustration_diffusion_fittings`):

.. math:: c\,t_k=\sum_{p=1}^k R_p.

Since the collision probabilities are independent of each other :cite:`ondet1989`, it is easy to show that the random variables :math:`R_i` (noted :math:`R` afterwards) follow the following probability density :math:`f(R)`:

.. math:: \label{dispois} f(R)=\nu_c \exp\left(-\nu_c \, R\right).
   :label: dispois

The average free path :math:`\lambda_c` (average distance between two collisions) is simply obtained by expressing the first moment of the above probability density, namely:

.. math:: \lambda_c=\int_0^\infty R\, f(R)\, dR=\frac{1}{\nu_c}.

Modelling
''''''''''''

By definition, the cumulative distribution function, associated with this probability density, is defined by the following relationship:

.. math:: \label{fdc} p(\hat{R})=\int_0^{\hat{R}} f(R)\, dR=1-\exp\left(-\nu_c\,\hat{R}\right).
   :label: fdc

This cumulative distribution function simply expresses the probability that the particle will collide with a scattering object during a long path :math:`\hat{R}`. This function is therefore null for :math:`\hat{R}=0` and equal to :math:`1` for :math:`\hat{R}=\infty`. The numerical simulation of the diffusion process is performed by the inverse cumulative distribution function method, obtained by reversing the relationship :eq:`fdc` , *i.e.*:

.. math:: \label{fdci} \hat{R}=-\frac{1}{\nu_c}\ln \left[ 1-p(\hat{R})\right].
   :label: fdc2

The cumulative distribution function being between :math:`0` and :math:`1`, it can be assimilated to a random variable :math:`\xi` between :math:`0` and :math:`1`. By drawing a succession of random variables :math:`\xi_i`, we can determine a succession of paths of length :math:`\hat{R}_i` that satisfies the distribution function :eq:`dispois` of our problem:

.. math:: \label{fdci_2} \hat{R}_n=-\frac{1}{\nu_c}\ln \left[ 1-\xi_n\right].

An example of a random draw using the inverse cumulative distribution method is shown in Figure [fig:verification\_diffusion\_encrowding]. The comparison with the theoretical distribution shows an excellent behaviour of the method.

.. _verification_diffusion_fittings:

.. figure:: images/SPPS/verification_diffusion_fittings.png
   :width: 500px
   :align: center
   :alt: Distribution of the distance between two collission obtained by the inverse cumulative distribution function method and comparison with the theoretical distribution.

   Distribution of the :math:`\hat{R}_i` paths obtained by the inverse cumulative distribution function method and comparison with the theoretical distribution

When a sound particle :math:`n` enters a fitting zone, it is associated with a collision distance :math:`R_n` with an object of the congestion by applying the relationship :eq:`fdc2`. As the sound particle propagates in the crowded area, a test is performed to determine if the cumulative distance :math:`d_n` of the particle in the crowded area is less or more than :math:`R_n`. If the distance traveled :math:`d_n` is greater than the collision distance :math:`R_n` the particle collides with an object. In the 'Energetic' mode, the energy of the sound particle is weighted by the average absorption coefficient :math:`\alpha_c` of the space requirement and continues its propagation in a random direction (uniform distribution). In the 'Random' mode, a new random draw on a uniform variable :math:`u` allows to determine if the particle is absorbed by the diffusing object (same procedure than for considering absorption by a wall), or reflected in a uniform direction. After each collision, the cumulative propagation distance is reset to zero, and a new draw is made to determine the next collision distance. Whatever the calculation mode chosen, as long as the distance travelled by the particle is less than the collision distance, the particle continues its path without changing direction.

Wall modelling
-----------------------

Physical description
~~~~~~~~~~~~~~~~~~~~

Absorption, dissipation and acoustic transmission
''''''''''''''''''''''''''''''''''''''''''''''''''''

In contact with a wall (see figure :ref:`geo_wall`), a sound wave will be partly reflected back into the domain for one part :math:`R`, partly dissipated by transforming the acoustic energy into heat in the material for the other part :math:`\beta`), the rest being transmitted through the material in the adjacent domain for the other par :math:`\tau`. The latter coefficient is defined as the transmission factor. If :math:`W_i` is the power incident on a wall, then a part :math:`W_r=R\,W_i` will be reflected, a part :math:`W_d=\beta\,W_i` will be dissipated in the material, and a part :math:`W_t=\tau\,W_i` will be transmitted through the partition. By construction (there can be no creation of energy, nor more absorption than incident energy), the coefficients :math:`R`, :math:`\beta` and :math:`\tau` are between 0 and 1, so the energy balance of the wall is written:

.. math:: R+\beta+\tau=1.

.. _geo_wall:

.. figure:: images/SPPS/geo_wall.png
   :alt:  Illustration of the mechanisms of reflection, absorption, dissipation and acoustic transmission through a wall.
   :width: 400px
   :align: center

   Illustration of the mechanisms of reflection, absorption, dissipation (internal loss) and acoustic transmission through a wall

It is usual to define the absorption coefficient :math:`\alpha` of the wall as the sum of the transmitted part :math:`\tau` and the dissipated part (internal loss) :math:`\beta`, in the form :math:`\alpha=\beta+\tau`, so that the above energy balance is written:

.. math:: R=1-\alpha.

The absorption coefficient of a material can be measured using the standardised procedures :term:`ISO 354` for the reverberation chamber method, as well as :term:`ISO 10534-1` and :term:`ISO 10534-2` for the impedance tube method. For the sound transmission coefficient, the reader may refer to the different parts of the standards for air transmission (ISO 140).

Acoustic diffusion
''''''''''''''''''''''''''''''''''''''''''''''''''''

On the other hand, depending on the shape, size and distribution of the wall irregularities, the sound wave can be reflected simultaneously in the specular direction and in other directions. In room acoustics, it is common to consider that a fraction :math:`1-s` of the sound energy will be reflected in the direction of specular reflection, while a fraction :math:`s` of the energy will be reflected in the other directions of space, according to a law of reflection characterized by irregularities in the wall :cite:`embrechts2001`. In the latter case, we speak of *diffuse reflection*, where :math:`s` is called scattering coefficient.

In room acoustics, numerous theoretical and experimental studies are currently underway to characterize or measure these laws of reflection :cite:`vorlander2000,cox2016`. However, the common practice is to use Lambert's law to describe a diffuse reflection. The value of the scattering coefficient :math:`s` can be obtained by a standardized measurement procedure (:term:`ISO 17497-1`).

.. note::

	It is important to note that this scattering coefficient (:term:`ISO 17497-1`), which defines the ratio between non-specular reflected energy on the total energy, is different from the diffusion coefficient :math:`\delta` (:term:`ISO 17497-2`), which defines the ability of the surface to uniformly scatter in all direction. In some acoustic simulation software, the diffraction coefficient :math:`s` may sometimes wrongly called the diffusion coefficient.


Acoustic reflection modelling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Random modelling
''''''''''''''''''''''''''

First, a sound particle colliding with a wall can either be absorbed by the wall (with a probability :math:`\alpha`), or reflected in a new direction of propagation (with a probability :math:`R=1-\alpha`). In practice, the absorption/reflection choice is made by randomly drawing a number :math:`u` between :math:`0` and :math:`1`, following a uniform distribution:

- If this number is less than :math:`\alpha=1-R` (at the considered point), the particle is absorbed and disappears from the propagation medium.

- If this number is greater than :math:`\alpha=1-R`, the particle is reflected and continues to propagate in a new direction. In this last case, to determine the type of reflection (specular or diffuse), a new random draw :math:`v` is performed between :math:`0` and :math:`1`:

	-- If this number is less than the value of :math:`1-s` (*i.e.* :math:`v<(1-s)`) at the point considered, the particle is specularly reflected, in accordance with the well-known Snell-Descartes laws.

	-- Otherwise (*i.e.* if :math:`v>(1-s)`), the reflection is diffuse. In the latter case, it is necessary to determine the direction of diffuse reflection.

Energetic modelling
''''''''''''''''''''''''''

When a particle collides with a wall, its energy :math:`\epsilon` is weighted by the reflection coefficient :math:`R=1-\alpha`. The choice of specular or diffuse reflection, depending on the scattering coefficient, is identical to the 'Random' method: a random draw :math:`v` is performed between :math:`0` and :math:`1`. If this number is less than the value of :math:`1-s`, the particle is specularly reflected. Otherwise, the reflection is diffuse, in a direction to be determined. An entirely 'Energetic' treatment would be possible by duplicating the particle into two particles, the first being reflected in the specular direction and the second in the diffuse direction; however this last solution is not yet implemented in the **SPPS** code..

Modelling of the reflection laws
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Formalism
''''''''''''''''''''''''''''''''''''''''''''''''''''

Let us consider an incident sound particle on a wall, whose incident direction is defined by the spherical coordinates :math:`(\theta,\phi)` (see figure :ref:`geo_reflection`). This particle has a probability of :math:`P(\theta,\phi;\theta',\phi')\equiv P(\Omega,\Omega')` being reflected in the elementary solid angle :math:`d\Omega' =\sin\phi'\, d\phi'\, d\phi'\, d\theta'` :cite:`joyce1974,joyce1975,joyce1978,lepolles2003`.

.. _geo_reflection:

.. figure:: images/SPPS/geo_reflection.png
   :alt: Elementary geometry of a reflection by a wall
   :align: center
   :width: 500px

   Elementary geometry of a reflection by a wall

   Variables :math:`\phi` and :math:`\phi'` refer respectively to the angles of incidence and reflection with respect to the normal at the wall. The angles :math:`\theta` and :math:`\theta'` in the tangent plane, directions of incidence and reflection, are not represented (:math:`\phi,\phi'\in[0,\pi/2]` and :math:`\theta,\theta'\in[0,2\pi]`).

:math:`P(\Omega,\Omega')\,d\Omega'` actually represents the fraction of the incident sound intensity that is reflected in the solid angle :math:`d\Omega'`. Let's say :math:`j(\theta,\phi)` the incident flow of particles. The flow of reflected particles :math:`j'(\theta',\phi')` is expressed:

.. math::
   :label: eq_flux_1

   \label{eq_flux_1} j'(\theta',\phi') \cos \phi'=\int
               P(\theta,\phi;\theta',\phi')\, j(\theta,\phi) \cos \phi \,d\Omega.

Defining the reflection law :math:`R(\theta,\phi;\theta',\phi')\equiv R(\Omega,\Omega')` on the following:

.. math:: R(\theta,\phi;\theta',\phi')=\frac{P(\theta,\phi;\theta',\phi')}{\cos(\phi')},

the relation :eq:`eq_flux_1` can be written:

.. math::

   \label{eq_flux_1b} j'(\theta',\phi') =\int
               R(\theta,\phi;\theta',\phi')\, j(\theta,\phi) \cos \phi \,d\Omega.

It is important to emphasize the difference between the law of reflection :math:`R` and the probability :math:`P`. :math:`P` refers to a probability of reflection of a sound particle by elementary solid angle, while :math:`R` refers to the flow of energy reflected in a direction :math:`\phi'`, for an incident flow in the direction :math:`\phi`.

The first law of thermodynamics requires the conservation of the flow on the surface (in the absence of absorption). The law of reflection :math:`R(\Omega,\Omega')` must therefore check the following condition:

.. math::

   \label{loi_2} \int P(\Omega,\Omega') \,d\Omega'=\int
               R(\Omega,\Omega')\cos\phi' \,d\Omega'=1,

or, in spherical coordinates,

.. math::

   \label{loi_2b} \iint R(\theta,\phi;\theta',\phi')\cos\phi'
               \,\sin\phi'\,d\phi'\,d\theta'=1.

The second law of thermodynamics imposes this time:

.. math::
   :label: loi_1

   \label{loi_1} \int P(\Omega,\Omega') \,d\Omega=\int
               R(\Omega,\Omega')\cos\phi \,d\Omega=1,

or, in spherical coordinates,

.. math::
   :label: loi_1b

   \label{loi_1b} \iint R(\theta,\phi;\theta',\phi')\cos\phi
               \,\sin\phi\,d\phi\,d\theta=1.

On the other hand, the principle of reciprocity requires that

.. math:: \label{loi_3} R(\Omega,\Omega')=R(\Omega',\Omega).
   :label: loi_3

Despite some recent studies, and apart from Lambert's law widely used to model diffuse reflections :cite:`kuttruff2016`, to our knowledge there are no other laws of reflection for real walls. In the **SPPS** code, however, we propose arbitrary modes of reflection, more or less real, presented in figure :ref:`geo_reflection_law`.

.. _geo_reflection_law:

.. figure:: images/SPPS/geo_reflection_law.png
   :alt: Illustration of the reflection laws proposed in the SPPS code.
   :align: center
   :width: 800px

   Illustration of the reflection laws proposed in the **SPPS** code


Specular reflection
''''''''''''''''''''''''''''''''''''''''''''''''''''

Physical description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The simplest mode of reflection is defined by specular reflection and can be written in three dimensions:

.. math::

   R(\theta,\phi;\theta',\phi')=2 \delta(\theta-\theta' \pm \pi)
               \,\delta(\sin^2 \phi-\sin^2 \phi'),

where the couples :math:`(\theta,\phi)` and :math:`(\theta',\phi')` refer respectively to the incident and reflected directions of the sound particles on the wall. Although the form of this expression is not conventional, this relationship verifies the laws of Snell-Descartes, as well as the conditions :eq:`loi_1` to :eq:`loi_3`.

Modelling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

From a numerical point of view, the simulation of this reflection law does not pose a major problem, since the angles of incidence of each particle on a wall are known. The modelling is identical for the 'Random' and 'Energetic'"' approaches.

Uniform reflection
''''''''''''''''''''''''''''''''''''''''''''''''''''

Physical description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A uniform reflection law produces a distribution of reflection angles :math:`P(\Omega')` that is equiprobable. This should not be confused with Lambert's law of reflection, for which uniformity is verified by the law of reflection. In the case of a uniform law, particles are reflected uniformly throughout the half space, regardless of the angle of incidence. Under these conditions, the reflection density after normalization is written:

.. math:: P(\Omega')d\Omega'= P(\theta',\phi')d\Omega'=\left[\frac{1}{2\pi}\,d\theta'\right] \,\left[\sin \phi' \,d\phi'\right],

or

.. math:: R(\theta',\phi')=\frac{1}{2\pi\cos\phi'},

with :math:`\theta'\in[0,2\pi]` and :math:`\phi'\in[0,\pi/2]`.

Modelling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

From a numerical point of view, the determination of the angle of reflection is again obtained by the inverse cumulative distribution function method,

.. math:: f(\hat{\phi})= \int_{0}^{\hat{\phi}} \sin\phi'\,d\phi'=1-\cos\hat{\phi},

which gives

.. math:: \hat{\phi}=\cos^{-1}\left(1-u\right),

where :math:`u` is a random number between :math:`0` and :math:`1`.

Lambert reflection
''''''''''''''''''''''''''''''''''''''''''''''''''''

Physical description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In optics, a perfectly diffuse surface is a surface that also appears bright regardless of the angle of observation, and regardless of the angle of incidence. In terms of acoustics, a perfectly diffuse surface will reflect the same energy in all directions regardless of the angle of incidence. From a mathematical point of view, this condition requires that the law of reflection :math:`R` be independent of the direction of reflection, and therefore of the direction of incidence (by reciprocity). After normalization, the law of reflection is written:

.. math:: R(\theta,\phi;\theta',\phi')=\frac{1}{2\pi}\times 2.

The coefficient :math:`1/2\pi` is related to the normalization according to the angle :math:`\theta'` (uniform distribution between :math:`0` and :math:`2\pi`). The second coefficient (factor :math:`2`) is related to the normalization according to the angle :math:`\phi'`. The probability of :math:`P(\Omega') d\Omega'` is therefore reduced to

  .. math::

     \begin{aligned}
                 P(\Omega') \, d\Omega' & =  R\,\cos\phi'\,\sin\phi'\,d\theta'\,d\phi'\\
                 & = \left[\frac{1}{2\pi}\,d\theta'\right]\, \left[2 \cos\phi'\,\sin\phi'\,d\phi'\right],
                 \end{aligned}


where the expression :math:`\cos\phi'` is related to Lambert's law. It is easy to check that :math:`R` checks the conditions :eq:`loi_1` to :eq:`loi_3`. It is important to note the difference between a random surface and an uniform surface. The first one is conditioned by an uniform random reflection law :math:`R`, while the second is defined by a uniform probability :math:`P`.

Modelling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

From a numerical point of view, the random drawing of the reflection angles (in three dimensions) must be carried out in accordance with the distribution :math:`P(\Omega')`, *i.e.* :math:`P(\phi')` in our case. Applying the inverse cumulative distribution function method, the probability :math:`f(\hat{\phi})` that a sound particle is reflected in an angle :math:`\phi'` between :math:`0` and :math:`\hat{\phi}` is given by the following relationship:

.. math:: f(\hat{\phi})=2\int_{0}^{\hat{\phi}} \cos\phi'\sin\phi'\,d\phi'=\sin^2 \hat{\phi}.

Since this probability is between :math:`0` and :math:`1`, the choice of angle :math:`\hat{\phi}` is made by randomly drawing a number :math:`u\in[0.1]`, such that:

.. math:: \hat{\phi}=\sin^{-1}\sqrt{u}=\cos^{-1}\left(1-u\right)^\frac{1}{2}.

.. warning::

	It is important to note that other authors :cite:`burns1990,hodgson1991,lam1996,xiangyang2002` mention other relationships. The correct formulation depends on the angle convention. It is also possible that some of the relationships that are proposed may not be accurate.

Normal reflection
''''''''''''''''''''''''''''''''''''''''''''''''''''

Physical description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Let us consider a law of reflection independent of the incident direction and defined only by the angle of reflection :math:`\phi'` around the normal to the wall (:math:`\theta'` being uniform between :math:`0` and :math:`2\pi`), of the form:

.. math::

     \begin{aligned}
                 R(\Omega')&=R(\theta',\phi')\\
                 &=\frac{1}{2\pi}\times (n+1)\cos^{n-1}\phi'\\
                 &=\frac{n+1}{2\pi}\,w^{n-1}.
                 \end{aligned}

where :math:`n` is a positive integer. The quantity noted :math:`w=\cos\phi'` is none other than the projection of the direction of reflection on the normal at the wall. According to the notations in this document, the probability :math:`P` will therefore be expressed:

.. math::

     \begin{aligned}
                 P(\Omega')\,d\Omega'&=P(\phi')\,\sin\phi'\,d\theta'\,d\phi'\\
                 &=\left[\frac{1}{2\pi}d\theta'\right] \times \left[(n+1)\cos^{n}\phi'\,d\phi'\right]\\
                 &=\frac{n+1}{2\pi}\,w^{n}\,d\theta'\,d\phi'
                 \end{aligned}


which justifies the name "law in :math:`w^n`". This form of reflection is identical to the one introduced in (lepolles2003). It can be noted that this type of law is a generalized form of Lambert's law (:math:`n=1`) and the uniform law (:math:`n=0`).

Modelling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

From a numerical point of view, the random drawing of the angles of reflection is achieved by applying the inverse cumulative distribution function method. The probability :math:`f(\hat{\Omega})` (*i.e.* the probability :math:`f(\hat{\phi})` since the direction of reflection depends only on the angle with respect to normal) that a sound particle is reflected in an elementary solid angle between :math:`0` and :math:`\hat{\Omega}` is then given by the relationship:

.. math:: f(\hat{\phi})= (n+1)\int_{0}^{\hat{\phi}} \cos^n\phi'\sin\phi'\, d\phi'\phi' =1-\cos^{n+1}\hat{\phi}.

Since this probability is between :math:`0` and :math:`1`, the choice of angle :math:`\hat{\phi}` is made by randomly drawing a number :math:`u\in[0.1]`, such that:

.. math:: \hat{\phi}=\cos^{-1}\left(1-u\right)^\frac{1}{n+1}.


Acoustic transmission modelling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Physical description
''''''''''''''''''''

As mentioned above, the part of the power that is not reflected by the wall is either dissipated in the wall or transmitted. The acoustic transmission is then defined by the transmission factor :math:`\tau`, defined as the ratio of the transmitted power :math:`W_t` by the wall to the incident power :math:`W_i`. If there is no dissipation in the wall (*i.e.* everything is transmitted through the wall), then :math:`\tau=\alpha`. Otherwise, :math:`\tau<\alpha`. In practice, acoustic transmission is rather defined by the insertion loss (IL or :math:`R`) of the wall, which is a function of the transmission factor through the following relationship:

.. math:: R=10\,\log\left(\frac{W_i}{W_t}\right)=-10\,\log{\tau}.

Random modelling
''''''''''''''''''''''''''

The modelling is similar to the one used for acoustic reflection. To determine if the sound particle is dissipated or transmitted by the partition, it is necessary to draw a number :math:`w` between :math:`0` and :math:`\alpha`:

- If this number is less than :math:`\tau`, the particle is transmitted and keeps its direction of propagation;

- Otherwise the particle is 'dissipated' and disappears from the propagation medium.

Energetic modelling
''''''''''''''''''''''''''''

The energy modeling is performed by weighting the energy of the particle once transmitted by the partition, by the coefficient :math:`\tau`. In this case, there is no change of direction of propagation.

Verification of wall modelling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The figure :ref:`fig_test_reflexion` illustrates the result of the reflection procedure (reflection=specular/diffuse, absorption=loss/transmission) in random mode, with the following acoustic parameters: scattering coefficient :math:`s=0.6`, absorption coefficient :math:`\alpha=0.8`, transmission coefficient :math:`\tau=10^{-R/10}=0.1` (attenuation index :math:`R=10` dB). With :math:`10000` realizations, the different phenomena are found (in terms of number of realizations) with the same proportions as the imposed acoustic parameters.

.. _fig_test_reflexion:

.. figure:: images/SPPS/figure_test_reflexion.png
   :alt: Verification of the procedure for modelling absorption, transmission and reflection.
   :align: center
   :width: 500px

   Verification of the procedure for modelling absorption (dissipation and transmission) and reflection (specular and diffuse) phenomena


In the previous figure, only the random drawing process is modelled (note that this simulation was realized with a very simplementation of the method, not the the one implemented in the **SPPS** code, this last one being more performant).

- The first group 'Total' corresponds to the sum of the number of achievements (initial number of particles, reflection + absorption, specular + diffus + dissipation + transmission); these three quantities therefore have the exactly same value, which the initial number of sound particles (*i.e.* 10000).

- The second group corresponds to the 'Reflection' process, divided into the total number of reflections (R, 2005 particles, *i.e* an equivalent reflection coefficient of 0.2005, which is quite the same that the initial condition of the random process :math:`R=1-\alpha=0.2`), specular reflections (S, 788 particles) and diffusion (Df, 1217 particles, , *i.e* an equivalent scattering coefficient of 1217/2005=0.61, which is quite the same that the initial condition of the random process :math:`s=0.6`)).

- The third group corresponds to the 'Absorption' process, divided into the total number of absorption (A, 7995 particles, , *i.e* an equivalent absorption coefficient of 0.7995, which is quite the same that the initial condition of the random process :math:`\alpha=0.8`)), dissipation (D, 7014 particles) and transmission (T, 981 particles, , *i.e* an equivalent transmission coefficient of 0.0981, which is quite the same that the initial condition of the random process :math:`\tau=0.1`)).


Calculation of sound levels at observation points
---------------------------------------------------

In the **SPPS** code, two types of receivers are considered:

- 'Volume' receivers model the so-called "classical" point receivers. Since the notion of point receiver is not applicable in the **SPPS** code, since in theory the probability that a sound particle will pass through a point receiver is zero, it is necessary to give a volume to the receiver point, to count the number of particles that have passed through it, and thus deduce the energy density at the observation point. For a point receiver, the **SPPS** code returns the sound pressure level, at each time step of the calculation and for each frequency band considered;

- 'Surface' receivers are surface elements (like a face element of the 3D scene) on which incident sound intensities are calculated, which then makes it possible to construct acoustic maps. For a surface receiver, the code **SPPS** returns the sound intensity, at each time step of the calculation and for each frequency band considered.

In addition, the calculation code also determines the overall sound pressure level in the 3D model, summing the contributions of each particle, at each time step and for each frequency band.


Calculation of the sound pressure level at a volume receiver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The amount of **energy** :math:`E_\text{rec}^{j}(n)` (in J or W.s) in the frequency band :math:`j` received at a volume receiver, at the time step :math:`n` (*i.e.* to time :math:`n \Delta t`) is equal to the sum of the energies :math:`\varepsilon_i^{j}` brought by each particle :math:`i` in the frequency band :math:`j`, crossing the receiver volume during the time step :math:`n` (figure[principle\_receiver\_volumique]):

.. math:: E_\text{rec}^{j}(n)=\sum_i^{N_0} \varepsilon_i^{j} = \sum_i^{N_0} \frac{W}{N} \epsilon_i^{j} \times \Delta t_i,

where :math:`{N_0}` is the total number of particles passing through the receiver volume and :math:`\Delta t_i` is the presence time of the particle :math:`i` in the receiver volume (:math:`\Delta t_i<\Delta t`), and :math:`\epsilon_i^{j}` the weighting coefficient (between 0 and 1) associated with the particle :math:`i` in the frequency band :math:`j`. If the calculation mode is "random", the coefficient :math:`\epsilon_i^{j}` is constant and equal to the unit (1). If the calculation mode is "energetic", the coefficient :math:`\epsilon_i^{j}` translates the cumulative loss of energy in the frequency band :math:`j` of the particle :math:`i` throughout its path due to the physical phenomena encountered (absorption by walls and obstructions, atmospheric absorption, sound transmission...). The presence time :math:`\Delta t_i` can also be expressed as a function of the length of the path of the particle :math:`i` in the receiving volume, *i.e.* :math:`\ell_i`, such as :math:`\Delta t_i=\ell_i/c`, :math:`c` being the velocity of the particle at the observation point. Considering a "volume" receiver is defined by a spherical volume of radius :math:`r_\text{rec}` (and volume :math:`V_\text{rec}`), the **energy density** :math:`w_\text{rec}^{j}(n)` (J/m\ :math:`^3`) in the volume receiver, for the frequency band :math:`j`, is given by:

.. math::
   :label: eq_density_energy_punctual_receiver

   \label{densite_energie_recepteur_volumique}
           w_\text{rec}^{j}(n)=\frac{E_\text{rec}(n)}{V_\text{rec}}= \frac{W}{N} \frac{1}{V_\text{rec}} \sum_i^{N_0} \epsilon_i^{j} \frac{\ell_i}{c}.

.. note::

	The definition of the receiver volume is a crucial element for the quality and representativeness of the results. It must be large enough to count sound particles as they propagate, but not too large to make the energy density calculated at the observation point representative.

.. _geo_punctual_receiver:

.. figure:: images/SPPS/geo_punctual_receiver.png
   :alt: Principle of the calculation of the sound pressure level for a volume receiver.
   :align: center
   :width: 500px

   Principle of the calculation of the sound pressure level for a volume receiver

   The energy density in the volume receiver is calculated by summing the energy contributions of each particle passing through the receiver. The contribution of the particle :math:`i` is calculated from the path :math:`\ell_i` of the particle in the volume receiver :eq:`eq_density_energy_punctual_receiver`.

The **sound intensity** :math:`I_\text{rec}^{j}(n)` (in W/m\ :math:`^2`) at the receiving point is given by:

.. math:: I_\text{rec}^{j}(n)=c \times w^{j}_\text{rec}(n)= \frac{W}{N} \frac{1}{V_\text{rec}} \sum_i^{N_0} \epsilon_i^{j}\ell_i.

The **sound intensity level** :math:`L_\text{I,rec}^{j}(n)` and the **sound pressure level** :math:`SPL_\text{rec}(n)` (in dB) can then be derived from the sound intensity by the following relationships:

.. math::

   \label{LI_recepteur_volumique}
           L_\text{I,rec}^{j}(n)=10\log\left(\frac{P2_\text{rec}^{j}(n)}{\rho_0 c I_0}\right),

and

.. math::

   \label{SPL_recepteur_volumique}
           SPL_\text{rec}^{j}(n)=10\log\left( \frac{P2_\text{rec}^{j}(n)}{p_0^2}\right),

where :math:`I_0=10^{-12}` W/m :math:`^2` and :math:`p_0=20 \times 10^{-6}` Pa denote the reference sound intensity and sound pressure. Each of the previous quantities (energy, energy density, intensity and sound levels) are calculated for each frequency band.


Intensity vector at a volume receiver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The vector **sound intensity** :math:`\mathbf{I}_\text{rec}^{j}(n)` (in W/m :math:`^2` or J/m :math:`^2`.s) at the receiving point, for the frequency band :math:`j`, is defined as the sum of the energy densities carried by the velocity vector :math:`\mathbf{v}_i` of the particles (standard :math:`c_i`) passing through the receiving volume:

Calculation of the lateral sound pressure level at a volume receiver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For the calculation of certain acoustic parameters, such as those based on lateral energy (LF with a weighting in :math:`|\cos\theta|` and LFC with a weighting in :math:`\cos^2\theta`), it is necessary to consider a weighting of the sound intensity as a function of the angle :math:`\theta` between the observation direction of the point receiver (in principle oriented towards the sound source) and the incident direction of the particles at the receiver. As a result, the **SPPS** code also returns the following two quantities, homogeneous to the square of the sound pressure (*i.e.* in Pa\ :math:`^2`):

.. math::

   \begin{aligned}
           P2_{\text{rec},\cos\theta}^{j}(n)&= \rho_0 c^2 \times w^{j}_{\text{rec},\cos\theta}(n)\\
           &= \rho_0 c \frac{W}{N} \frac{1}{V_\text{rec}} \times \sum_i^{N_0} \epsilon_i^{j}\ell_i|\cos\theta_i|,
           \end{aligned}

and

.. math::

   \begin{aligned}
            P2_{\text{rec},\cos^2\theta}^{j}(n)&= \rho_0 c^2 \times w^{j}_{\text{rec},\cos^2\theta}\\
            &= \rho_0 c \frac{W}{N} \frac{1}{V_\text{rec}} \times \sum_i^{N_0} \epsilon_i^{j}\ell_i\cos^2\theta_i.
           \end{aligned}

where :math:`\theta_i` is the corresponding angle for the particle :math:`i`.


Calculation of the sound intensity level on a surface receiver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The **power** :math:`W_\text{surf}^{j}` (in W) received by a surface element of size :math:`\Delta S` of normal :math:`\mathbf{n}` is equal to the sum of the energy provided by each particle :math:`i` in the frequency band :math:`j` per time unit :math:`\Delta t`, at the time step :math:`n` (*i.e.* at time :math:`n\Delta t`), either:

.. math:: W_\text{surf}^{j}(n)=\sum_i^{N_0} \frac{\varepsilon_i^{j}}{\Delta t} \frac{\mathbf{v_i}}{c}\cdot \mathbf{n}=\frac{W}{N} \sum_i^{N_0}  \epsilon_i\cos\theta_i,

where :math:`\mathbf{v_i}` refers to the velocity vector (of norm :math:`c`) of the particle :math:`i`, :math:`\theta_i` the angle between normal :math:`\mathbf{n}` of the surface and the direction of the particle, and where :math:`{N_0}` is the total number of sound particles colliding with the surface element :math:`\Delta S`.

The **sound intensity** :math:`I_\text{surf}^{j}(n)` (in W/m :math:`^2`) received by the surface element :math:`\Delta S` at the time step :math:`n` is equal to the power received divided by the surface, either:

.. math:: I_\text{surf}^{j}(n)=\frac{W}{N} \frac{1}{\Delta S}\sum_i^{N_0} \epsilon_i^{j} \cos\theta_i.

The **sound level** :math:`L_\text{surf}^{j}(n)` (in dB) can then be calculated by the following relationship:

.. math::

   \label{L_receiver_surface}
           L_\text{surf}^{j}(n)= 10\log\frac{I_\text{surf}^{j}(n)}{I_0},

where :math:`I_0=10^{-12}` W/m :math:`^2` is the reference intensity.

.. _geo_surface_receiver:

.. figure:: images/SPPS/geo_surface_receiver.png
   :alt: Principle of the calculation of the sound intensity level for a surface receiver.
   :align: center
   :width: 500px

   Principle of the calculation of the sound intensity level for a surface receiver

Calculation of the sound pressure level on a surface receiver
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Equivalent to the calculation of the sound intensity level on a surface receiver, the quadratic sound pressure :math:`P2_\text{surf}^{j}(n)` (in Pa) received by the surface element :math:`\Delta S` at the time step :math:`n` is equal to the product of the sound intensity (without weighting the angle of incidence on the surface) by the characteristic impedance of the air :math:`\rho_0` that is:

.. math:: P2_\text{surf}^{j}(n)=\rho_0\rho_0\, c \frac{W}{N} \frac{1}{\Delta S}\sum_i^{N_0} \epsilon_i^{j}.

The **sound pressure level** :math:`L_\text{SPL,surf}^{j}(n)` (in dB) can then be calculated by the following relationship:

.. math::

   \label{SPL_receiver_surface}
           L_\text{SPL,surf}^{j}(n)= 10\log\frac{P2_\text{surf}^{j}(n)}{p_0^2},

where :math:`p_0=20\times 10^{-6}` Pa is the reference sound pressure.

.. warning::

    Note that the calculation of a sound pressure level for a surface is quite ambiguous. It should not be comparable to grid of punctual receivers on a plane.


Calculation of the overall sound pressure level in the model
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The overall sound intensity :math:`I_\text{global}^{j}(n)` in the model, for the frequency band :math:`j`, is calculated by summing the intensities carried by all the sound particles present :math:`N_n` in the model at the time step :math:`n` (*i.e.* at time :math:`n\delta t`):

.. math:: I_\text{global}^{j}(n)= \frac{W}{N} \frac{1}{V_\text{rec}} \sum_i^{N_n} \epsilon_i^{j}\ell_i.

The **sound pressure level** :math:`SPL_\text{global}^{j}(n)` (in dB) can then be calculated by the following relationship:

.. math::

   \label{SPL_global} SPL_\text{global}^{j}(n)=10\log\left( \frac{P2_\text{global}^{j}(n)}{p_0^2}\right),

where :math:`p_0=20\times 10^{-6}` Pa is the reference sound pressure.


================================================
FILE: Docs/code_SPPS_principle.rst
================================================
General principle
========================

Sound particle concept
------------------------------

In contrast to classical acoustic theory, where the study of the sound field is based on the propagation of a wave in a continuous material medium, the approach used in the **SPPS** code is geometric, and more particularly particulate: (joyce1974). In a field of complex propagation, the sound field is then decomposed into a multitude of elementary particles, called sound particles or phonons, without mutual interaction and carrying an infinitesimal energy and constant over time. These particles propagate at the speed of sound, either in straight line (homogeneous atmosphere), or with curved trajectories (in the presence of a velocity profile, atmospheric turbulence...), between two successive shocks with the obstacles and limits of the propagation medium. In a collision with an obstacle or a boundary of the propagation domain, the particles can be absorbed or reflected in a new direction of propagation. Geometric acoustics thus become a special case of particle dynamics, so that a sound field can be likened to a gas of sound particles. Under these conditions, the distribution of the energy of the sound field is assimilated to the distribution of the sound particles. Since the local density of sound energy is proportional to the local density of phonons, the only difficulty lies in determining the distribution of these sound particles over time. Although analytical approaches may be considered under certain conditions (lepolles2003), we have chosen an all-digital approach here. With the evolution of computing powers, the numerical simulation of a system composed of several hundred thousand particles is no longer a major difficulty.

Sound particles vs. sound rays
------------------------------------

This concept is relatively similar to the traditional methods of sound beam tracing, implemented in most current closed or open environment noise prediction software. Nevertheless, even if in form these two methods are comparable, the major differences lie in the management of the sound energy carried by sound particles and sound rays. For the latter method, each sound ray carries an intensity whose amplitude decreases proportionally with the square of the propagation distance, thus simulating the acoustic radiation of a spherical source (geometric dispersion). On the other hand, in the concept of sound particles, each particle carries an elementary energy :math:`\epsilon`, whose amplitude does not vary according to the propagation distance.

On the other hand, all the physical phenomena occurring during propagation (reflection, absorption, diffusion, atmospheric absorption) are not considered in the same way in the two approaches. In the "sound rays" approach, these phenomena occur in the form of a weighting applied to the sound intensity carried by a ray. For example, when in contact with an absorption coefficient wall :math:`\alpha`, the intensity of the beam after reflection will be weighted by the coefficient :math:`(1-\alpha)`. In the "sound particles" approach, some of these physical phenomena can be considered probabilistically. When in contact with an absorption coefficient wall :math:`\alpha`, the particle could for example have a probability :math:`(1-\alpha)` of being reflected, and a probability :math:`\alpha` of being absorbed. In the latter case, it disappears from the propagation domain.

One of the major advantages of the sound particle concept lies above all in the consideration of diffuse reflections on the walls and diffusion by encumbrances. In sound ray methods, wall reflections are determined by image source methods that allow only specular reflections, perfectly deterministic, and prohibit the consideration of diffuse reflection phenomena. In the particulate approach, and as we will see below, these diffuse reflections are considered in a probabilistic way, the angle of reflection being able to be chosen according to any arbitrary law of reflection. The same applies to the consideration of diffusion by objects distributed in the propagation medium (machines in industrial premises for example). In the sound ray approach, it is necessary to know exactly the shape and position of the object in order to calculate in a deterministic way the angle of reflection of a sound ray on it. In the particle approach, scattering objects can be considered statistically, with no knowledge other than their spatial distribution and average shape, which significantly reduces costs in terms of calculating and defining the field of study. This statistical (or probabilistic) description, which can be generalized to most of the physical phenomena involved in sound propagation, is therefore the main strength of the sound particles approach compared to the "sound rays" approach.


Code principle
----------------

The principle of simulations is therefore based on the tracking of sound particles, carrying an initial energy :math: `\ epsilon`, emitted from one or more sound sources, in a volume chamber :math:` V` totally or partially closed. Each particle is propagated along rectilinear or curved paths, until it collides with a wall or scattering object. At each collision, the sound particle (or part of its energy) can be absorbed, reflected or transmitted, depending on the absorption and transmission coefficient of the wall or object. As the processing of certain physical phenomena can be performed by random number draws, this simulation procedure can therefore be likened to a Monte Carlo method: raw-latex: `\ cite {burns1990}`. The physical phenomena simulated by these draws of random numbers will be all the better respected as the number of random draws will be large, that is to say that the initial number :math: `N` of sound particles will also be very large. Nevertheless, more :math: `N` will be large, longer will be the duration of the simulations. The choice of :math: `N` is therefore a compromise between the computation time and the accuracy of the results, but is also a function of the geometry and acoustic characteristics of the propagation domain. For example, the more the propagation domain will be absorbing (at the walls, scattering objects, atmospheric absorption), the more it will be necessary to consider sound particles to have a satisfactory description of the physical phenomena.

In the current version of the `` SPPS`` code, two calculation modes are proposed:

- **Random Modeling:** In this mode, the energy of the particle is constant. The phenomena of absorption and atmospheric absorption are considered statistically: depending on the values ​​of the atmospheric absorption and the absorption coefficients of the materials, the particles can be made to disappear completely from the propagation domain, or to remain in the domain with the same energy. The other physical phenomena (diffusion by a congestion, diffuse reflection) are also treated statistically. As the number of sound particles decreases over time, the calculation time decreases gradually. Moreover, the density of sound energy at a point of the domain is then proportional to the number of sound particles at the same point.

- **Energetic modeling:** In this mode, the energy of the particle is weighted according to the values ​​of the atmospheric absorption and the absorption coefficients of the materials. The other physical phenomena (diffusion by congestion, diffuse reflection) are also treated randomly. Since in this mode, the number of sound particles is constant, the duration of the numerical simulations is longer than for the first mode. Moreover, the sound energy density at a point of the domain is then proportional to the sum of the energy of the sound particles at this same point.

Spatial meshing
----------------

Unlike conventional calculation codes based on ray and sound beam throws, the **SPPS** code is based on a volumetric mesh of the propagation domain.

**Benefits:**

	- the mesh of the propagation domain allows to optimize the propagation of sound particles in the domain. Indeed, a pre-processing makes it possible to determine for each mesh of the domain its position with respect to the limits of the domain, its position inside or outside a space requirement, as well as general properties, such as the speed of sound in the mesh and the meteorological conditions (*via* the height with respect to the ground for example). The tracking of a sound particle in the domain is therefore accelerated by the knowledge of the properties of the meshes adjacent to the mesh containing the particle at the current time step;

	- the volume mesh allows to realize a surface mesh of the domain boundaries, which can be used to build surface receivers, on any boundary of the domain;

	- the realization of a volumetric mesh requiring that the geometric model be perfectly closed, thus ensuring that no sound particles can disappear from the propagation domain due to an opening (faces of the model not perfectly joined for example).

**Disadvantages:**

	- the realization of the mesh requiring that the geometric model is perfectly closed, this supposes that the model is perfectly constructed. Calculation codes based on sound rays do not have this constraint, since they "allow" a ray to "leave" the domain and propagate to infinity.

Temporal meshing
-----------------

In parallel, the monitoring of sound particles is carried out in constant time steps, and not in continuous time. It is therefore necessary to choose a sufficiently small time step so that the physical phenomena present in the sound emission and acoustic propagation processes can be applied to a given time step.

**Mesh supported by the code SPPS:**

	- tetrahedral mesh;


================================================
FILE: Docs/code_TCR.rst
================================================
Presentation
~~~~~~~~~~~~~~~~~~~~~~~~~~

**TCR is a numerical code based on the Classical Theory or Reverberation.**

- `Visit the offical I-Simpa website`_ for more information about TCR code.

- See the main `characteristics of the code`_ that is embedded in I-Simpa.

.. _Visit the offical I-Simpa website: https://i-simpa.univ-gustave-eiffel.fr/presentation/embedded-codes/tcr/
.. _`characteristics of the code`: code_characteristics.html

The simulation code TCR (from French "Théorie Classique de la Réverbération") is a numerical application of the Classical
Theory of Reverberation as proposed by Sabine. It allows to obtain an evaluation of the diffuse sound field in a single
room on the basis of Sabine's relations for the reverberation time and for the sound level of the reverberated field.

More information can be obtained in the following reference book: Kuttruff, Heinrich. Room Acoustics, CRC Press (Sixth Edition, 2016).


================================================
FILE: Docs/code_characteristics.rst
================================================
Calculation code characteristics
------------------------------------

.. list-table:: Physical phenomena
   :widths: 70 15 15
   :header-rows: 1

   * - Physical phenomena
     - `SPPS code`_
     - `TCR code`_
   * - Direct field
     - ✅
     - ✅
   * - Specular field (specular reflection)
     - ✅
     - ❌
   * - Diffuse field
     - ✅ (using scattering coefficient)
     - ✅ (Sabine, Eyring)
   * - Scattered field (edge scattering)
     - ❌
     - ❌
   * - Surface absorption
     - ✅ (using absorption coefficient)
     - ✅ (using absorption coefficient)
   * - Diffusion by fittings
     - ✅
     - ✅
   * - Atmospheric absorption
     - ✅
     - ✅
   * - Meteorological effects
     - ✅
     - ❌

.. list-table:: Receiver type and characteristics
   :widths: 70 15 15
   :header-rows: 1

   * - Type/characteristics
     - `SPPS code`_
     - `TCR code`_
   * - Punctual receiver
     - ✅
     - ✅
   * - Surface receiver (any face element of the 3D scene)
     - ✅
     - ✅
   * - Surface receiver (any defined plane receivers)
     - ✅
     - ✅

.. list-table:: Sound source type and characteristics
   :widths: 70 15 15
   :header-rows: 1

   * - Type/characteristics
     - `SPPS code`_
     - `TCR code`_
   * - Punctual sound source : omnidirectionnal
     - ✅
     - ✅
   * - Punctual sound source : complex directivity
     - ✅
     - ❌
   * - Surface sound source
     - ❌
     - ❌
   * - Line sound source
     - as a line of punctual sources
     - as a line of punctual sources

.. list-table:: Acoustical parameters
   :widths: 70 15 15
   :header-rows: 1

   * - Type/characteristics
     - `SPPS code`_
     - `TCR code`_
   * - Sound level
     - ✅ (dB, dBA)
     - ✅ (Sabine, Eyring, Direct field)
   * - Lateral Sound level
     - ✅ (cos, cos²)
     - ❌
   * - Clarity
     - ✅ (C50, C80, user defined)
     - ❌
   * - Definition
     - ✅ (D50, user defined)
     - ❌
   * - Ts
     - ✅
     - ❌
   * -  RT
     - ✅ (RT15, RT30, user defined)
     - ✅ (RT Sabine, RT Eyring)
   * - EDT
     - ✅
     - ✅
   * - ST
     - ✅
     - ❌
   * - LF
     - ✅ (LF80, user defined)
     - ❌
   * - LFC
     - ✅ (LFC80, user defined)
     - ❌
   * - LG
     - ❌
     - ❌
   * - G
     - ❌
     - ❌

.. list-table:: Graphical representations
   :widths: 70 15 15
   :header-rows: 1

   * - Type/characteristics
     - `SPPS code`_
     - `TCR code`_
   * - Echogramm
     - ✅
     - ❌
   * - Spectrum
     - ✅ (total, per sound source)
     - ❌
   * - Sound level map (on surface receivers) : instantaneous
     - ✅
     - ❌
   * - Sound level map (on surface receivers) : cumulative
     - ✅
     - ❌
   * - Sound level map (on surface receivers) : cumulated
     - ✅
     - ✅
   * - Acoustical parameters map (on surface receivers)
     - ✅
     - ❌
   * - Schroeder curves
     - ✅ (data to display)
     - ❌
   * - Intensity
     - ✅ (animation)
     - ❌

.. _`TCR code`: code_TCR.html
.. _`SPPS code`: code_SPPS.html


================================================
FILE: Docs/code_configuration_SPPS.rst
================================================
Using SPPS within I-Simpa
~~~~~~~~~~~~~~~~~~~~~~~~~~

SPPS is already embedded in I-Simpa. Follow the next instructions to run a calculation with the SPPS code in I-Simpa.

**Double left click** on the TCR calculation code in I-Simpa to display all calculation paramaters:

- `Frequency bands`_ for the selection of the frequency band to be used for the calculation

- `Meshing`_ for the meshing configuration

- `SPPS Calculation parameters`_ for the calculation parameters

.. _`Meshing`: code_configuration_frequency_bands.html
.. _`Frequency bands`: code_configuration_meshing.html

**Right click** on the selected calculation code to display all possible actions:

- Run calculation

- Job list


.. include:: code_configuration_frequency_bands.rst

.. include:: code_configuration_meshing.rst

SPPS Calculation parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- 'Active calculation of atmospheric absorption'
	Enables calculation of atmospheric absorption.

- 'Active calculation of diffusion by fitting objects'
	Enables calculation of calculation of diffusion by fitting objects.

	.. important::

		If fitting zones are enabled, by checking this option, it disables the calculation of all fitting zones. If you uncheck this option, the individual configuration of each fitting zone is preserved.

- 'Active calculation of direct field only'
	Enables calculation of direct field only. There is no calculation of the reverberant field.

	.. tip::

		This can be useful if you want to realize a first calculation, as a reference, of the direct field at receivers. The second calculation (direct and reverberant fields) can thus be calculated and compared to the direct field (first calculation).

- 'Active calculation transmission'
	Enables calculation of transmission through walls.

- 'Calculation method'
	Selects the calculation method.

		+ 'Random'
			Select the Random method.

		+ 'Energetic'
			Select the Energetic method.

- 'Echogram per source'
	Check to calculation an echogram for each sound source, for a given receiver. If uncheck, a global echogram is calculated by summing all source contributions.

- 'Export surface receivers for each frequency band'
	Check to export the surface receiver results, for each frequency band. If uncheck, only the global value is exported.

- 'Limit value of the particle extinction: ratio 10^n'
	For the 'Energetic' mode only. It defines a limit value of the particle energy. If the decrease of the particle energy is less than this value (*i.e.* the particle energy is very low), the particle is removed from the domain. For example, if n=60, it means that all particles whose energy will decreases to 60dB, will be removed.

- 'Number of sound particles per source'
	Defines the number of sound particles that are generated by the source.

	.. warning::

		The computational time depends on the number of particles. If you increase the total number of particles, you drastically increase the computaional time.

- 'Number of sound particles per source (display)'
	Defines the number of particles that are used for the particle animation.

	.. note::

		Most of time, you need to consider only few hundreds or thousands particles for the animation. Incerasing this number, will decrease the memory resources.

- 'Random initialization number'
	Initialize the random number series. If you select a number that is different from '0', the random number series will always be the same. The starting number of the random number series will depend on the number you will consider for this parameter.

	.. warning::

		In a multithread simulation, I-Simpa/SPPS can not control the generation of random numbers. It means that this paremeter will have no effect. Multithread simulation occurs when several frequency bands are considered in the simulation. To avoid multithreading, consider only one frequency band calculation.

- 'Receiver radius (m)'
	Defines the receiver radius (in m).

- 'Simulation length (s)'
	Defines the duration (in s) of the simulation.

- 'Surface receiver export'
	Select the kind of results that is exported.

		+ 'Soundmap: intensity'
			Intensity level (in dB).

		+ 'Soundmap: SPL'
			Sound pressure level (in dB).

- 'Time step (s)'
	Time step (in s) for the calculation.

Computational time optimization
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The computationnal time depends mainly of the **Number of sound particles per source**. Thus, in the SPPS code, each sound particle is followed, at each 'Time step' during its propagation inside the 3D domain, experiencing absorption, reflection, diffusion... and so on, during the 'Simulation length' and/or untill the particles disapears when its energy is to small.

Considering a small number of sound particles may not produced relevant results to proceed an interesting acouctic analazis of the 3D model. Thus, it is necessary to consider a *large* number of sound particles. Assigning the good value for *large* is difficult and depends mainly on the scene size and the absorbent nature of the scene (surface absorption and volume absorption).

Few recommandations to evaluate the computationnal time:

- the number of sound particles defined in SPPS ('Number of sound particles per source' parameter) is defined for **each sound source**. Considering *N* sound particles per source and *M* sound sources will generate *N x M* sound particles in the domain;
- one calculation is done for **each frequency band**: considering *F* frequency bands will be equivalent to a calculation with *F x N* sound particles for one source (or *F x N x M* for *M* sources). Note that, by default, the computation is paralleleized on the processor core, for each frequency band (a frequency band for a given core). So the increase of computional time with the nimber of frequency band is not linear;
- in the **'Energetic' mode**, each sound particle is 'alive' during its propagation untill its energy is below a ratio of the initial energy (see '‘'Limit value of the particle extinction: ratio 10^n' parameter). **Increasing** *n* will keep the sound particles longer in the domain, which increases the computational time;
- in the **'Random' mode**, each physical phenomena (absorption, diffusion) is applied by considering probabilistic approaches. Using this mode, the computational time is drastically decreased, but the quality of the results is aslo decrease. It is suggested to consider the 'Random' mode at the initial step of the study, and then to change to the 'Energetic' mode in order to obtain the final result.

SPPS Results
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

All the results are displayed in the `Results tab`_, following a specific `Tree structure`_.
The content of the tree structure depends of the elements defined in the `Scene tab`_, and of additionnal processes execute on the result files (such as for creating room acoustics parameters).

.. _`Results tab`: project_window.html#results-tab
.. _`Scene tab`: project_window.html#scene-tab

Comments:

- All folders and files in the tree results can be renamed. A default name is created at the end of the calculation process.
- Some folders may be repeated several times (for example, as many times as (AMTA) there are Punctual receivers)

Tree structure
"""""""""""""""""""""""

	❙--- 📁 SPPS [Root folder]

		❙--- 📁 Date_folder [folder; AMTA Calculations]

			❙--- 📁 Intensity animation [folder]

				❙--- 📁 Frequency folder [folder; AMTA Frequencies]

					❙--- 📄 Intensity [file]

			❙--- 📁 Punctual receivers [folder]

				❙--- 📁 Punctual receiver name [folder; AMTA Punctual receivers]

					❙--- 📄 Advanced sound level [file]

					❙--- 📄 Punctual receiver intensity [file]

					❙--- 📄 Acoustics parameters [file; see]

					❙--- 📄 Advanced acoustics parameters [file]

					❙--- 📄 Schroeder curves  [file]

					❙--- 📄 Sound level [file]

					❙--- 📄 Sound level per source [file]

			❙--- 📁 Surface receivers [folder]

				❙--- 📁 Frequency [folder; AMTA Frequencies]

					❙--- 📄 Sound level [file]

				❙--- 📁 Global [folder]

					❙--- 📄 Sound level [file]

			❙--- 📄 SPPS particle statistics [file]

			❙--- 📄 Total energy [file]

			❙--- 📄 config [file]

			❙--- 📄 projet_config [file]

Intensity
""""""""""""""""""""""""""

Advanced sound level
""""""""""""""""""""""""""

In addition to classical room `Acoustics parameters`_, some `Advanced acoustics parameters`_ can also be calculated. The calculation of this advanced room acoustics parameters needs specific calculation of sound levels at a punctual receiver.

This Advanced sound level `.gap` file display the temporal evolution of the impulse response, for each frequency band, as a data table, weihgted by :math:`\cos \theta` (LFC and LG) and :math:`\cos^2 \theta` (LF and LG).

Punctual receiver intensity
""""""""""""""""""""""""""""""""

Acoustics parameters
""""""""""""""""""""""""""

Given the nature of the Sound level `.recp` file (*i.e.* an echogram), the contextual menu that is associated to this Sound level `.recp` file allows to calculate several room acoustic parameters:

- Sound Pressure Level (SPL) in dB
- Sound Pressure Level (SPL) in dB(A)
- Clarity C (in dB)
- Definition D (in %)
- Central Time Ts (in ms)
- Reverberation time RT (in s)
- Early decay time EDT (in s)
- Stage Support ST (in dB)

Several parameters can be given by the user in order to calculate user-values of some room acoustics parameters:

- Clarity: fix the value of the temporal limit of integration, usually 50 ms
- Definition: fix the value of the temporal limit of integration, usually 50 ms
- Reverberation time: fix the value of the sound level limit of integration, usually 30dB

.. tip::
	Multiple calculations are allowed for each paremeter, by using the semicolon ';' between parameters.

After the calculation parameters, two files are created in the corresponding folder:

- 'Acoustic parameters'
	This file provides access to the room acoustics parameters in the form of a data table.

		- The parameters are given for each frequency band of interest.
		- When allowed, the **Global** value (*i.e.* the sum of all frequency bands) is calculated and displayed at the bottom of each column.
		- When allowed, the **Average** value (*i.e.* the mean value on all frequency bands) is calculated and displayed at the bottom of each column.

Advanced acoustics parameters
"""""""""""""""""""""""""""""""""

In addition to classical room `Acoustics parameters`_, some *advanced* parameters are also calculated, and displayed in the `Advanced sound level` file.

The contextual menu that is associated to  sound level' file allows to calculate several room acoustic parameters:

- Early lateral energy fraction LFC (in %)
- Early lateral energy fraction LF (in %)
- Early lateral energy LF (in dB)
- Strength G (in dB)

Data display:

- The **Global** value (*i.e.* the sum of all frequency bands) is calculated and displayed at the bottom of each column.
- The **Total** value (*i.e.* the sum of all time step) is calculated and displayed at the end of each row.

Several parameters can be given by the user in order to calculate user-values of advanced parameters:

- LF: fix the value of the temporal limit of integration, usually 80 ms
- LFC: fix the value of the temporal limit of integration, usually 80 ms

.. tip::
	Multiple calculations are allowed for each paremeter, by using the semicolon ';' between parameters.


Schroeder curves
""""""""""""""""""""""""""

	It displays the temporal evolution of the Schroeder's curves :cite:`Schroeder_1965`, for each frequency band, as a data table.

.. tip::
	User can create charts for representing data from the data table. See `charts creation`_

.. _`charts creation`: create_charts.html

Sound level (punctual receier)
"""""""""""""""""""""""""""""""""""

Double left click on a Sound level `.recp` file open a new winodw with three tabs

-  'Sound Level SPL (dB)' tab
		It contains the temporal evolution of the quantity, for each frequency band, as a data table.

			- This tab is opened by default.
			- The values are represented in sound pressure levels (SPL).
			- The **Global** value (*i.e.* the sum of all frequency bands) is calculated and displayed at the bottom of each column.
			- The **Total** value (*i.e.* the sum of all time step) is calculated and displayed at the end of each row.

- 'Sound Level SPL (dB)' tab
		It provides a graphic display of the **Global** value.

			- The temporal evolution of the **Global** value is displayed, as an echogram.
			- The cumulative quantity of the **Global** value is displayed, according to the Schroeder's backward integration :cite:`Schroeder_1965`.

- 'Spectrum' tab
		It displays a spectrum at the punctual receiver.

Double right click on a Sound level `.recp` file open a contextual menu that allows to calculate `Acoustics parameters`_.

Sound level per source
""""""""""""""""""""""""""

This file contains the sound level and the spectrum per sound source. Double left click on a `.recps` file open a new winodw with two tabs:

-  'Sound Level per source, SPL (dB)' tab
		It contains the sound level per source and f each frequency band, as a data table.

			- This tab is opened by default.
			- The values are represented in sound pressure levels (SPL).
			- The **Global** value (*i.e.* the sum of all frequency bands) is calculated and displayed at the bottom of each column.
			- The **Total** value (*i.e.* the sum of all time step) is calculated and displayed at the end of each row.

- 'Spectrum' tab
		It provides a graphic display of the spectrum contribution  for each sound source.


Sound level (surface receiver)
""""""""""""""""""""""""""""""""""""""""

A Surface sound level `.csbin` file contains the temporal evolution of a quantity that represents an acoustic intensity on a surface.

Depending of the calculation parameters, one can obtain, for each surface receiver, by default, on **Global** value (in the 'Global' folder) and, in addition, the result for each frequency band in a corresponding folder.

A right click on a surface receiver file opens the contextual menu, with specific actions:

- 'Acoustic parameters'
	Allows to compute relevant room acoustics parameters on the surface. Depending of the selection, it creates additional files within the corresponding folder.

		- Clarity C (in dB)
		- Definition D (in %)
		- Central Time Ts (in ms)
		- Reverberation time RT (in s)
		- Early decay time EDT (in s)
		- Stage Support ST (in dB)

- 'Load animation'
	It allows to represent the spatial variation of the indicators that is selected. If the indicators contains some time dependent value, it can displayed an animation. On can interact on the animation with the `'Simulation' toolbar`_.

		- 'Instantaneous value'
			Show the value of the given indicator at each time step.

		- 'Cumulative instantaneous value'
			Show the value of the given indicator at each time step, by cumulating all past steps.

		- 'Total value'
			Show the total value of the given indicator. No animation.

.. _`'Simulation' toolbar`: toolbar_simulation.html


================================================
FILE: Docs/code_configuration_TCR.rst
================================================
Using TCR within I-Simpa
~~~~~~~~~~~~~~~~~~~~~~~~~~

TCR is already embedded in I-Simpa. Follow the next instructions to run a calculation with the TCR code in I-Simpa.

**Double left click** on the TCR calculation code in I-Simpa to display all calculation parameters:

- `Meshing`_, for the meshing configuration

- `TCR Calculation parameters`_  for the calculation parameters

.. _`Meshing`: code_configuration_frequency_bands.html

**Right click** on the selected calculation code to display all possible actions:

- Run calculation

- Job list

.. include:: code_configuration_meshing.rst

TCR Calculation parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- 'Active calculation of atmospheric absorption'
	Enables calculation of atmospheric absorption.

- 'Export surface receivers for each frequency band'
	Check to export the surface receiver results, for each frequency band. If uncheck, only the global value is exported.


================================================
FILE: Docs/code_configuration_frequency_bands.rst
================================================
Frequency bands
^^^^^^^^^^^^^^^^^^

This allows to define the frequency band that will be used for the calculation. This can be done:

- by *hand*, by checking/unchecking the frequency to be considered;

- *automatically* ('Automatic selection'), by using the contextual menu on the element 'Frequency band' of the chossen code:

	+ 'Unselect all'
		Uncheck all frequency bands.
	
	+ 'Select all'
		Check all frequency bands.
		
	+ 'Octave'
		Check third ocave bands that are centred on the corresponding octave bands.
		
		* 'All'
			All octave bands on the whole frequency range
			
		* 'Building/Road'
			All octave bands between 125Hz and 4000Hz.
			
	+ 'Third octaves'
		Check the third octave bands, considering.
	
		* 'All'
			All thrid octave bands on the whole frequency range.
			
		* 'Building/Road'
			All octave bands between 100Hz and 5000Hz.

================================================
FILE: Docs/code_configuration_job.rst
================================================
Job list
~~~~~~~~~~~~~~~~~~~~~~~~~~

Instead of running the calculation, manually one after the other, you can create a list of calculation and, thus, run all calculations at once.

.. important::

	To use a job list, you have to create a specific project for each job. If you keep the same project, but if you change only some parameters, you will repeat exactly the same calculation.

- 'Add calculation in the job list'
	Add the calculation of the given project in the job list.

- 'Clear job list'
	Clear the job list.

- 'Run job list'
	Run the job list.

- 'Show job list'
	Show the job list in the tab 'Messages' of the 'Console'.

================================================
FILE: Docs/code_configuration_meshing.rst
================================================
Meshing
^^^^^^^^^^^^^^^^^^

Some calculation codes may require a meshing of the domain (SPPS for example). I-Simpa used the `TetGen meshing code (A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator)`_. See the documentation for more information.

Within I-Simpa, TetGen can be paramatrized:

- 'Test mesh topology'
	Check/uncheck for activate the debug mode of TetGen (debug mode).

	.. warning::

		With the debug mode, the meshing is not realized.

-  'Additional parameters'
		Add parameters to the TetGen default parameters.

-  'Radius/Edge ratio'
		Defines the ratio between the radius of the sphere that would contain a mesh and the lenght of the mesh. This parameter could be useful in order to avoid long meshes.

-  'Scene correction before meshing'
		Check/uncheck for trying to repair the 3D scene if possible.

-  'User-defined paramters'
		Defines new parameters by replacing default parameters.

-  'Surface receiver constraint'.
		Check/uncheck for using a given value of the mesh surface 'Surface receiver constraint (m²)'.

-  'Surface receiver constraint (m²)'
		Maximun accepted value of the mesh surface (m²) for a surface receiver. The value can be modified only if the 'Surface receiver constraint' parameter is checked.

-  'Volume constraint'
		Check/uncheck for using a given maximum value of the mesh volume 'Volume constraint (m3)'.

-  'Volume constraint (m3)'
		Maximun accepted value of a mesh volume (m3). The value can be modified only if the 'Volume constraint' parameter is checked.


.. _`TetGen meshing code (A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator)`: http://wias-berlin.de/software/tetgen/


================================================
FILE: Docs/code_configuration_run.rst
================================================
Run calculation
~~~~~~~~~~~~~~~~~~~~~~~~~~

Starts the calculation with the selected calculation code.

================================================
FILE: Docs/conf.py
================================================
# -*- coding: utf-8 -*-
#
# I-Simpa documentation build configuration file, created by
# sphinx-quickstart on Mon Aug 22 13:43:57 2016.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))

# -- General configuration ------------------------------------------------

# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.doctest',
    'sphinx.ext.intersphinx',
    'sphinx.ext.coverage',
    'sphinx.ext.mathjax',
    'sphinxcontrib.bibtex',
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['ytemplates']
mathjax_path = 'MathJax-2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML-full.js'

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'

# The encoding of source files.
#
# source_encoding = 'utf-8-sig'

# The master toctree document.
master_doc = 'index'

# General information about the project.
project = u'I-Simpa'
copyright = u'2022, Université Gustave Eiffel'
author = u'Picaut J., Fortin N.'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = u'1.3'
# The full version, including alpha/beta/rc tags.
release = u'1.3.4'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None

# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#
# today = ''
#
# Else, today_fmt is used as the format for a strftime call.
#
# today_fmt = '%B %d, %Y'

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = []

# The reST default role (used for this markup: `text`) to use for all
# documents.
#
# default_role = None

# If true, '()' will be appended to :func: etc. cross-reference text.
#
# add_function_parentheses = True

# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#
# add_module_names = True

# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#
# show_authors = False

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'

# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []

# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False

# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False


# -- Options for HTML output ----------------------------------------------

# The theme to use for HTML and HTML Help pages.  See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['ystatic']

# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#
# html_extra_path = []

# If not None, a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
# The empty string is equivalent to '%b %d, %Y'.
#
html_last_updated_fmt = ''

# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#
# html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
#
# html_sidebars = {}

# Additional templates that should be rendered to pages, maps page names to
# template names.
#
# html_additional_pages = {}

# If false, no module index is generated.
#
# html_domain_indices = True

# If false, no index is generated.
#
# html_use_index = True

# If true, the index is split into individual pages for each letter.
#
# html_split_index = False

# If true, links to the reST sources are added to the pages.
#
# html_show_sourcelink = True

# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#
# html_show_sphinx = True

# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#
# html_show_copyright = True

# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it.  The value of this option must be the
# base URL from which the finished HTML is served.
#
# html_use_opensearch = ''

# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None

# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
#
# html_search_language = 'en'

# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
#
# html_search_options = {'type': 'default'}

# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#
# html_search_scorer = 'scorer.js'

# Output file base name for HTML help builder.
htmlhelp_basename = 'I-Simpadoc'

# -- Options for LaTeX output ---------------------------------------------

latex_elements = {
     # The paper size ('letterpaper' or 'a4paper').
     #
     # 'papersize': 'letterpaper',

     # The font size ('10pt', '11pt' or '12pt').
     #
     # 'pointsize': '10pt',

     # Additional stuff for the LaTeX preamble.
     #
     # 'preamble': '',

     # Latex figure (float) alignment
     #
     # 'figure_align': 'htbp',
}

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
#  author, documentclass [howto, manual, or own class]).
latex_documents = [
    (master_doc, 'I-Simpa.tex', u'I-Simpa Documentation',
     u'Picaut J.', 'manual'),
]

# The name of an image file (relative to this directory) to place at the top of
# the title page.
#
# latex_logo = None

# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#
# latex_use_parts = False

# If true, show page references after internal links.
#
# latex_show_pagerefs = False

# If true, show URL addresses after external links.
#
# latex_show_urls = False

# Documents to append as an appendix to all manuals.
#
# latex_appendices = []

# It false, will not define \strong, \code, 	itleref, \crossref ... but only
# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
# packages.
#
# latex_keep_old_macro_names = True

# If false, no module index is generated.
#
# latex_domain_indices = True


# -- Options for manual page output ---------------------------------------

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
    (master_doc, 'i-simpa', u'I-Simpa Documentation',
     [author], 1)
]

# If true, show URL addresses after external links.
#
# man_show_urls = False


# -- Options for Texinfo output -------------------------------------------

# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
#  dir menu entry, description, category)
texinfo_documents = [
    (master_doc, 'I-Simpa', u'I-Simpa Documentation',
     author, 'I-Simpa', 'One line description of project.',
     'Miscellaneous'),
]

# Documents to append as an appendix to all manuals.
#
# texinfo_appendices = []

# If false, no module index is generated.
#
# texinfo_domain_indices = True

# How to display URL addresses: 'footnote', 'no', or 'inline'.
#
# texinfo_show_urls = 'footnote'

# If true, do not generate a @detailmenu in the "Top" node's menu.
#
# texinfo_no_detailmenu = False


# -- Options for Epub output ----------------------------------------------

# Bibliographic Dublin Core info.
epub_title = project
epub_author = author
epub_publisher = author
epub_copyright = copyright

# The basename for the epub file. It defaults to the project name.
# epub_basename = project

# The HTML theme for the epub output. Since the default themes are not
# optimized for small screen space, using the same theme for HTML and epub
# output is usually not wise. This defaults to 'epub', a theme designed to save
# visual space.
#
# epub_theme = 'epub'

# The language of the text. It defaults to the language option
# or 'en' if the language is not set.
#
# epub_language = ''

# The scheme of the identifier. Typical schemes are ISBN or URL.
# epub_scheme = ''

# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''

# A unique identification for the text.
#
# epub_uid = ''

# A tuple containing the cover image and cover page html template filenames.
#
# epub_cover = ()

# A sequence of (type, uri, title) tuples for the guide element of content.opf.
#
# epub_guide = ()

# HTML files that should be inserted before the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#
# epub_pre_files = []

# HTML files that should be inserted after the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#
# epub_post_files = []

# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']

# The depth of the table of contents in toc.ncx.
#
# epub_tocdepth = 3

# Allow duplicate toc entries.
#
# epub_tocdup = True

# Choose between 'default' and 'includehidden'.
#
# epub_tocscope = 'default'

# Fix unsupported image types using the Pillow.
#
# epub_fix_images = False

# Scale large images.
#
# epub_max_image_width = 0

# How to display URL addresses: 'footnote', 'no', or 'inline'.
#
# epub_show_urls = 'inline'

# If false, no index is generated.
#
# epub_use_index = True


# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {'https://docs.python.org/': None}


================================================
FILE: Docs/console_window.rst
================================================
'Console' window
================================

The 'Console' window contains two tabs:

- the 'Message' tab displays messages for the user, with a color code:

	+ Information messages (black) according to the operations performed by the user
	
	+ Warning messages (red): operations to be performed by the user

	+ Information messages (blue) from internal or external programs (computer codes, a correction tool...)
		
	.. note ::

		All messages are time stamped.

	.. note ::

		For the meaning of the messages from external programs, refer to the documentation of the corresponding program.

	.. note ::

		The information in the tab 'Message' can be saved in a text format using the 'Console/Export to file' option of the 'Windows' menu.

	.. note ::

		The console can be reset using the 'Console/Delete windows' option of the 'Windows' menu.

-	the 'Python' tab allows you to run Python scripts, both to perform treatments on data from I-Simpa or to develop new features. Refers to the scripting examples for the developement of scripts in I-Simpa and to the `Python documentation`_.

.. _`Python documentation`: http://docs.python.org/tutorial/


================================================
FILE: Docs/create_charts.rst
================================================
Creating charts
++++++++++++++++

Most values represented as tables in a 'Properties' window can be displayed in a chart form, configurable by the user. The procedure consists of
selecting cells in a table of data, then, to click with the right mouse button on the corresponding selection and to specify options representation:

'Tab name'
	Name of the tab containing the created a chart.

'Name of X axis'
	Name of the *x*-axis.

'Name of X axis'
	Name of the *y*-axis.

'Data alignment'
	Choose the orientation of

'Text label for X'
	Display labels of the *x*-axis in a 'text mode' using a linear space, or in 'value mode' using the real *x* value.

'Default Style'
	Curves representation.


.. note::
	The choice of colors (for curves, fills, dots...) in the representation of graphics is random.

.. note::
	The labels of the data series (in tables) are automatically considered in charts.

Chart Options
++++++++++++++++

Once the chart is created, several actions are possible, using the contextual menu on the chart.

'Original Zoom'
	Reset to the initla display. Use the mouse (button left) to zoom in/out.

'Export'
	  - 'Export to image file': export the chart as an image file (PNG, JPG, BMP).
	  - 'Export to clipboard': user can paste the chart in antoher application.

'Show/Hide curves'
	Select the curves to be displayed or 'Show'/'Hide' all curves.

'Display parameters'
	Configure all the chart properties.


================================================
FILE: Docs/define_position.rst
================================================
Define a position using the pointer on the 3D view
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Many elements of the tree 'Data' require to define a 'Position' (x,y,z) in the 3D geometry. Data can be defined:

- by filling the corresponding cells (x, y and z) in the corresponding 'Properties' window;
- by using the pointer. In this last case, user has to point the 'Position' element with the pointer in the tree:
	* **Right click** on the 'Position' element;
	* **Select** the 'Define in the 3D view' option in the contextual menu;
	* Then, in the 3D view, users point a position on a visible face; this will affect the values (x,y,z) to the 'Position' element. Users can then adjust values in the corresponding cell of the spreadsheet in the 'Properties' window.


================================================
FILE: Docs/element_properties_sound_level_results.rst
================================================
Define the properties of a sound map
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

To modifiy the representation of a sound map, **Right click** on the corresponding file name in the 'Surface receiver' result folder, in the 'Results' tab of the 'Project' windows, and **Select** 'Properties' to display the corresponding 'Properties' tab. Then, **Change** the property values, as wanted:

-  **'Display back'**: Display the sound level map on the back of the face element
-  **'Display front'**: Display the sound level map on the front of the face element
-  **'Face opacity'**: Opacity of the map: value between 0 (100% transparent) and 1 (opaque)
-  **'Iso level list'**: Values list, in dB, with a comma as separator for displaying ISO contour line ('50;40;30' for example)
-  **'Maximum value'**: Maximum value in dB for the iso-contour
-  **'Minimum value'**: Minimum value in dB for the iso-contour
-  **'Show iso-curves'**: Select option for displaying the iso-contour
-  **'Smooth colors'**: Option for increasing graphical quality of the sound man_pages
-  **'Smooth level'**: Option for 'Smooth colors'

.. image:: images/addition_illustrations/soundmap_properties.png
	:align: center
	:width: 400px


================================================
FILE: Docs/errors_messages.rst
================================================
I-Simpa errors and messages
================================

'Tetrahedron file is empty, the calculation can't be done !'
------------------------------------------------------------------

Description
~~~~~~~~~~~~~~~~~~

This errors occurs when the meshing process fails. The meshing process is required for specific numerical code within I-Simpa, particularly using the SPPS code. Most of time, the problem is that the 3D scene that is used for the meshing process, contains several errors such as holes, intersecting faces...

Solution
~~~~~~~~~~~~~~~~~~

The 3D scene must be created and imported with a great attention in order to avoid such problems.
See `our recommandation for creating and importing a 3D scene`_

.. _`our recommandation for creating and importing a 3D scene`: import_file_recommandations.html


================================================
FILE: Docs/file_csbin.rst
================================================
Surface receiver file file `.csbin`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


================================================
FILE: Docs/file_gabe.rst
================================================
Tabulated data file `.gabe`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

================================================
FILE: Docs/file_gap.rst
================================================
Punctual receiver file `.gap`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


================================================
FILE: Docs/file_pbin.rst
================================================
Animated data file `.pbin`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

================================================
FILE: Docs/file_recp.rst
================================================
Punctual Receiver data file `.recp`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

		This file contains the temporal evolution, by frequency band, of a given quantity that is homogeneous to instantaneous sound squared pressure (:math:`p^2`). Most of time, it should correspond to a punctual eceiver at the point. Typically, this type of file can represent an impulse response (RI). The actions associated with I-Simpa arise directly from the file format.

		.. important::
			The operations performed by the interface I-Simpa with this file type make sense only if the data in the file are equivalent to an instantaneous squared sound pressure (:math:`p^2`).


================================================
FILE: Docs/file_recps.rst
================================================
Sound level per source `.recps`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


================================================
FILE: Docs/file_rpi.rst
================================================
Animated intensity file `.rpi`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

================================================
FILE: Docs/freecad_create_room.rst
================================================
Create a room with FreeCAD
-------------------------------------

FreeCAD is a free and open source parametric 3D CAD software.

The particularity of FreeCAD is the guarantee of export compatibility with I-Simpa. This tutorial covers the creation of a set of parts connected by corridors.

The first step is the creation of a new project.

Then select the "Part Design" workbench.

Create the 2D skech of the floor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Z is the model height. So we will create a XY sketch

Create body
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================
FILE: Docs/glossary.rst
================================================
Glossary
========

.. glossary::

	absorption coefficient
		Absorption coefficient of an object or a material. The value of the absorption coefficient is a real number between 0. (no absorption, *i.e.* perfect reflection) and 1 (total absorption, *i.e.* no reflection).

	scattering coefficient
		The scattering coefficient is used in room acoustics software to model the surface diffusivity, such as room wall. When this coefficient is ste to 1, it means that surfaces are 100% diffuse (i.e. generate diffuse reflection only), while, when this coefficient is set to 0, sound reflection are perfectly specular.

	mean free path
		Mean distance between two 
Download .txt
gitextract_46o2u985/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── custom.md
│   │   └── feature_request.md
│   ├── pull_request_template.md
│   └── workflows/
│       ├── CI_main.yml
│       ├── actions/
│       │   └── windows/
│       │       └── getCcache/
│       │           └── action.yml
│       ├── flatpak.yml
│       ├── sub_buildLinux.yml
│       ├── sub_buildMacOS.yml
│       ├── sub_buildWindows.yml
│       ├── sub_prepare.yml
│       └── sub_wrapup.yml
├── .gitignore
├── .readthedocs.yml
├── .tx/
│   └── config
├── CHANGELOG.md
├── CMakeLists.txt
├── DESCRIPTION.txt
├── Docs/
│   ├── Building.md
│   ├── I_Simpa_overview.rst
│   ├── I_Simpa_standard.rst
│   ├── License.txt
│   ├── _Footer.md
│   ├── _Sidebar.md
│   ├── bibliography.bib
│   ├── code_SPPS.rst
│   ├── code_SPPS_Validation.rst
│   ├── code_SPPS_modelling.rst
│   ├── code_SPPS_principle.rst
│   ├── code_TCR.rst
│   ├── code_characteristics.rst
│   ├── code_configuration_SPPS.rst
│   ├── code_configuration_TCR.rst
│   ├── code_configuration_frequency_bands.rst
│   ├── code_configuration_job.rst
│   ├── code_configuration_meshing.rst
│   ├── code_configuration_run.rst
│   ├── conf.py
│   ├── console_window.rst
│   ├── create_charts.rst
│   ├── define_position.rst
│   ├── element_properties_sound_level_results.rst
│   ├── errors_messages.rst
│   ├── file_csbin.rst
│   ├── file_gabe.rst
│   ├── file_gap.rst
│   ├── file_pbin.rst
│   ├── file_recp.rst
│   ├── file_recps.rst
│   ├── file_rpi.rst
│   ├── freecad_create_room.rst
│   ├── glossary.rst
│   ├── import_file_recommandations.rst
│   ├── import_options.rst
│   ├── index.rst
│   ├── main_windows.rst
│   ├── manipulate_sources_receivers.rst
│   ├── menu_edition.rst
│   ├── menu_file.rst
│   ├── menu_help.rst
│   ├── menu_simulation.rst
│   ├── menu_view.rst
│   ├── menu_windows.rst
│   ├── menus.rst
│   ├── presentation.rst
│   ├── project_database.rst
│   ├── project_window.rst
│   ├── properties_window.rst
│   ├── references.rst
│   ├── requirements.txt
│   ├── room_acoustics_parameters.rst
│   ├── setup.rst
│   ├── surface_selection.rst
│   ├── tab_calculation.rst
│   ├── tab_results.rst
│   ├── tab_scene.rst
│   ├── toolbar_meshing.rst
│   ├── toolbar_project.rst
│   ├── toolbar_selection.rst
│   ├── toolbar_simulation.rst
│   ├── toolbar_view_camera.rst
│   ├── toolbars.rst
│   ├── tutorial_Elmia_hall.rst
│   ├── tutorial_industrial_hall.rst
│   ├── tutorial_teaching_room.rst
│   ├── using_directivity.rst
│   ├── using_spectrum.rst
│   ├── validations/
│   │   ├── validation_atmospheric_absorption.rst
│   │   ├── validation_clarity_calculation.rst
│   │   └── validation_notice.rst
│   └── ystatic/
│       └── MathJax-2.7.5/
│           ├── MathJax.js
│           ├── config/
│           │   ├── AM_CHTML-full.js
│           │   ├── AM_CHTML.js
│           │   ├── AM_HTMLorMML-full.js
│           │   ├── AM_HTMLorMML.js
│           │   ├── AM_SVG-full.js
│           │   ├── AM_SVG.js
│           │   ├── Accessible-full.js
│           │   ├── Accessible.js
│           │   ├── MML_CHTML-full.js
│           │   ├── MML_CHTML.js
│           │   ├── MML_HTMLorMML-full.js
│           │   ├── MML_HTMLorMML.js
│           │   ├── MML_SVG-full.js
│           │   ├── MML_SVG.js
│           │   ├── MMLorHTML.js
│           │   ├── Safe.js
│           │   ├── TeX-AMS-MML_HTMLorMML-full.js
│           │   ├── TeX-AMS-MML_HTMLorMML.js
│           │   ├── TeX-AMS-MML_SVG-full.js
│           │   ├── TeX-AMS-MML_SVG.js
│           │   ├── TeX-AMS_CHTML-full.js
│           │   ├── TeX-AMS_CHTML.js
│           │   ├── TeX-AMS_HTML-full.js
│           │   ├── TeX-AMS_HTML.js
│           │   ├── TeX-AMS_SVG-full.js
│           │   ├── TeX-AMS_SVG.js
│           │   ├── TeX-MML-AM_CHTML-full.js
│           │   ├── TeX-MML-AM_CHTML.js
│           │   ├── TeX-MML-AM_HTMLorMML-full.js
│           │   ├── TeX-MML-AM_HTMLorMML.js
│           │   ├── TeX-MML-AM_SVG-full.js
│           │   ├── TeX-MML-AM_SVG.js
│           │   ├── default.js
│           │   └── local/
│           │       └── local.js
│           ├── extensions/
│           │   ├── AssistiveMML.js
│           │   ├── CHTML-preview.js
│           │   ├── FontWarnings.js
│           │   ├── HTML-CSS/
│           │   │   └── handle-floats.js
│           │   ├── HelpDialog.js
│           │   ├── MatchWebFonts.js
│           │   ├── MathEvents.js
│           │   ├── MathML/
│           │   │   ├── content-mathml.js
│           │   │   └── mml3.js
│           │   ├── MathMenu.js
│           │   ├── MathZoom.js
│           │   ├── Safe.js
│           │   ├── TeX/
│           │   │   ├── AMScd.js
│           │   │   ├── AMSmath.js
│           │   │   ├── AMSsymbols.js
│           │   │   ├── HTML.js
│           │   │   ├── action.js
│           │   │   ├── autobold.js
│           │   │   ├── autoload-all.js
│           │   │   ├── bbox.js
│           │   │   ├── begingroup.js
│           │   │   ├── boldsymbol.js
│           │   │   ├── cancel.js
│           │   │   ├── color.js
│           │   │   ├── enclose.js
│           │   │   ├── extpfeil.js
│           │   │   ├── mathchoice.js
│           │   │   ├── mediawiki-texvc.js
│           │   │   ├── mhchem.js
│           │   │   ├── mhchem3/
│           │   │   │   └── mhchem.js
│           │   │   ├── newcommand.js
│           │   │   ├── noErrors.js
│           │   │   ├── noUndefined.js
│           │   │   ├── unicode.js
│           │   │   └── verb.js
│           │   ├── a11y/
│           │   │   ├── accessibility-menu.js
│           │   │   ├── auto-collapse.js
│           │   │   ├── collapsible.js
│           │   │   ├── explorer.js
│           │   │   ├── invalid_keypress.ogg
│           │   │   ├── mathjax-sre.js
│           │   │   ├── mathmaps/
│           │   │   │   ├── en/
│           │   │   │   │   ├── functions/
│           │   │   │   │   │   ├── algebra.js
│           │   │   │   │   │   ├── elementary.js
│           │   │   │   │   │   ├── hyperbolic.js
│           │   │   │   │   │   └── trigonometry.js
│           │   │   │   │   ├── symbols/
│           │   │   │   │   │   ├── greek-capital.js
│           │   │   │   │   │   ├── greek-mathfonts-bold.js
│           │   │   │   │   │   ├── greek-mathfonts-italic.js
│           │   │   │   │   │   ├── greek-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── greek-scripts.js
│           │   │   │   │   │   ├── greek-small.js
│           │   │   │   │   │   ├── greek-symbols.js
│           │   │   │   │   │   ├── hebrew_letters.js
│           │   │   │   │   │   ├── latin-lower-double-accent.js
│           │   │   │   │   │   ├── latin-lower-normal.js
│           │   │   │   │   │   ├── latin-lower-phonetic.js
│           │   │   │   │   │   ├── latin-lower-single-accent.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-script.js
│           │   │   │   │   │   ├── latin-mathfonts-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-double-struck.js
│           │   │   │   │   │   ├── latin-mathfonts-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-monospace.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif.js
│           │   │   │   │   │   ├── latin-mathfonts-script.js
│           │   │   │   │   │   ├── latin-rest.js
│           │   │   │   │   │   ├── latin-upper-double-accent.js
│           │   │   │   │   │   ├── latin-upper-normal.js
│           │   │   │   │   │   ├── latin-upper-single-accent.js
│           │   │   │   │   │   ├── math_angles.js
│           │   │   │   │   │   ├── math_arrows.js
│           │   │   │   │   │   ├── math_characters.js
│           │   │   │   │   │   ├── math_delimiters.js
│           │   │   │   │   │   ├── math_digits.js
│           │   │   │   │   │   ├── math_geometry.js
│           │   │   │   │   │   ├── math_harpoons.js
│           │   │   │   │   │   ├── math_non_characters.js
│           │   │   │   │   │   ├── math_symbols.js
│           │   │   │   │   │   ├── math_whitespace.js
│           │   │   │   │   │   └── other_stars.js
│           │   │   │   │   └── units/
│           │   │   │   │       ├── energy.js
│           │   │   │   │       ├── length.js
│           │   │   │   │       ├── memory.js
│           │   │   │   │       ├── other.js
│           │   │   │   │       ├── speed.js
│           │   │   │   │       ├── temperature.js
│           │   │   │   │       ├── time.js
│           │   │   │   │       ├── volume.js
│           │   │   │   │       └── weight.js
│           │   │   │   ├── es/
│           │   │   │   │   ├── functions/
│           │   │   │   │   │   ├── algebra.js
│           │   │   │   │   │   ├── elementary.js
│           │   │   │   │   │   ├── hyperbolic.js
│           │   │   │   │   │   └── trigonometry.js
│           │   │   │   │   ├── symbols/
│           │   │   │   │   │   ├── greek-capital.js
│           │   │   │   │   │   ├── greek-mathfonts-bold.js
│           │   │   │   │   │   ├── greek-mathfonts-italic.js
│           │   │   │   │   │   ├── greek-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── greek-scripts.js
│           │   │   │   │   │   ├── greek-small.js
│           │   │   │   │   │   ├── greek-symbols.js
│           │   │   │   │   │   ├── hebrew_letters.js
│           │   │   │   │   │   ├── latin-lower-double-accent.js
│           │   │   │   │   │   ├── latin-lower-normal.js
│           │   │   │   │   │   ├── latin-lower-phonetic.js
│           │   │   │   │   │   ├── latin-lower-single-accent.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-bold-script.js
│           │   │   │   │   │   ├── latin-mathfonts-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-double-struck.js
│           │   │   │   │   │   ├── latin-mathfonts-fraktur.js
│           │   │   │   │   │   ├── latin-mathfonts-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-monospace.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-bold.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif-italic.js
│           │   │   │   │   │   ├── latin-mathfonts-sans-serif.js
│           │   │   │   │   │   ├── latin-mathfonts-script.js
│           │   │   │   │   │   ├── latin-rest.js
│           │   │   │   │   │   ├── latin-upper-double-accent.js
│           │   │   │   │   │   ├── latin-upper-normal.js
│           │   │   │   │   │   ├── latin-upper-single-accent.js
│           │   │   │   │   │   ├── math_angles.js
│           │   │   │   │   │   ├── math_arrows.js
│           │   │   │   │   │   ├── math_characters.js
│           │   │   │   │   │   ├── math_delimiters.js
│           │   │   │   │   │   ├── math_digits.js
│           │   │   │   │   │   ├── math_geometry.js
│           │   │   │   │   │   ├── math_harpoons.js
│           │   │   │   │   │   ├── math_non_characters.js
│           │   │   │   │   │   ├── math_symbols.js
│           │   │   │   │   │   ├── math_whitespace.js
│           │   │   │   │   │   └── other_stars.js
│           │   │   │   │   └── units/
│           │   │   │   │       ├── energy.js
│           │   │   │   │       ├── length.js
│           │   │   │   │       ├── memory.js
│           │   │   │   │       ├── other.js
│           │   │   │   │       ├── speed.js
│           │   │   │   │       ├── temperature.js
│           │   │   │   │       ├── time.js
│           │   │   │   │       ├── volume.js
│           │   │   │   │       └── weight.js
│           │   │   │   └── mathmaps_ie.js
│           │   │   ├── semantic-enrich.js
│           │   │   └── wgxpath.install.js
│           │   ├── asciimath2jax.js
│           │   ├── fast-preview.js
│           │   ├── jsMath2jax.js
│           │   ├── mml2jax.js
│           │   ├── tex2jax.js
│           │   └── toMathML.js
│           ├── jax/
│           │   ├── element/
│           │   │   └── mml/
│           │   │       ├── jax.js
│           │   │       └── optable/
│           │   │           ├── Arrows.js
│           │   │           ├── BasicLatin.js
│           │   │           ├── CombDiacritMarks.js
│           │   │           ├── CombDiactForSymbols.js
│           │   │           ├── Dingbats.js
│           │   │           ├── GeneralPunctuation.js
│           │   │           ├── GeometricShapes.js
│           │   │           ├── GreekAndCoptic.js
│           │   │           ├── Latin1Supplement.js
│           │   │           ├── LetterlikeSymbols.js
│           │   │           ├── MathOperators.js
│           │   │           ├── MiscMathSymbolsA.js
│           │   │           ├── MiscMathSymbolsB.js
│           │   │           ├── MiscSymbolsAndArrows.js
│           │   │           ├── MiscTechnical.js
│           │   │           ├── SpacingModLetters.js
│           │   │           ├── SuppMathOperators.js
│           │   │           ├── SupplementalArrowsA.js
│           │   │           └── SupplementalArrowsB.js
│           │   ├── input/
│           │   │   ├── AsciiMath/
│           │   │   │   ├── config.js
│           │   │   │   └── jax.js
│           │   │   ├── MathML/
│           │   │   │   ├── config.js
│           │   │   │   ├── entities/
│           │   │   │   │   ├── a.js
│           │   │   │   │   ├── b.js
│           │   │   │   │   ├── c.js
│           │   │   │   │   ├── d.js
│           │   │   │   │   ├── e.js
│           │   │   │   │   ├── f.js
│           │   │   │   │   ├── fr.js
│           │   │   │   │   ├── g.js
│           │   │   │   │   ├── h.js
│           │   │   │   │   ├── i.js
│           │   │   │   │   ├── j.js
│           │   │   │   │   ├── k.js
│           │   │   │   │   ├── l.js
│           │   │   │   │   ├── m.js
│           │   │   │   │   ├── n.js
│           │   │   │   │   ├── o.js
│           │   │   │   │   ├── opf.js
│           │   │   │   │   ├── p.js
│           │   │   │   │   ├── q.js
│           │   │   │   │   ├── r.js
│           │   │   │   │   ├── s.js
│           │   │   │   │   ├── scr.js
│           │   │   │   │   ├── t.js
│           │   │   │   │   ├── u.js
│           │   │   │   │   ├── v.js
│           │   │   │   │   ├── w.js
│           │   │   │   │   ├── x.js
│           │   │   │   │   ├── y.js
│           │   │   │   │   └── z.js
│           │   │   │   └── jax.js
│           │   │   └── TeX/
│           │   │       ├── config.js
│           │   │       └── jax.js
│           │   └── output/
│           │       ├── CommonHTML/
│           │       │   ├── autoload/
│           │       │   │   ├── annotation-xml.js
│           │       │   │   ├── maction.js
│           │       │   │   ├── menclose.js
│           │       │   │   ├── mglyph.js
│           │       │   │   ├── mmultiscripts.js
│           │       │   │   ├── ms.js
│           │       │   │   ├── mtable.js
│           │       │   │   └── multiline.js
│           │       │   ├── config.js
│           │       │   ├── fonts/
│           │       │   │   └── TeX/
│           │       │   │       ├── AMS-Regular.js
│           │       │   │       ├── Caligraphic-Bold.js
│           │       │   │       ├── Fraktur-Bold.js
│           │       │   │       ├── Fraktur-Regular.js
│           │       │   │       ├── Main-Bold.js
│           │       │   │       ├── Math-BoldItalic.js
│           │       │   │       ├── SansSerif-Bold.js
│           │       │   │       ├── SansSerif-Italic.js
│           │       │   │       ├── SansSerif-Regular.js
│           │       │   │       ├── Script-Regular.js
│           │       │   │       ├── Typewriter-Regular.js
│           │       │   │       ├── fontdata-extra.js
│           │       │   │       └── fontdata.js
│           │       │   └── jax.js
│           │       ├── HTML-CSS/
│           │       │   ├── autoload/
│           │       │   │   ├── annotation-xml.js
│           │       │   │   ├── maction.js
│           │       │   │   ├── menclose.js
│           │       │   │   ├── mglyph.js
│           │       │   │   ├── mmultiscripts.js
│           │       │   │   ├── ms.js
│           │       │   │   ├── mtable.js
│           │       │   │   └── multiline.js
│           │       │   ├── config.js
│           │       │   ├── fonts/
│           │       │   │   ├── Asana-Math/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Gyre-Pagella/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Gyre-Termes/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Latin-Modern/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size6/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size7/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── Neo-Euler/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── STIX/
│           │       │   │   │   ├── General/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── Arrows.js
│           │       │   │   │   │   │   ├── BBBold.js
│           │       │   │   │   │   │   ├── BoldFraktur.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiacritMarks.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GeometricShapes.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekBold.js
│           │       │   │   │   │   │   ├── GreekSSBold.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LatinExtendedD.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathBold.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSBold.js
│           │       │   │   │   │   │   ├── MiscMathSymbolsA.js
│           │       │   │   │   │   │   ├── MiscMathSymbolsB.js
│           │       │   │   │   │   │   ├── MiscSymbols.js
│           │       │   │   │   │   │   ├── MiscTechnical.js
│           │       │   │   │   │   │   ├── NumberForms.js
│           │       │   │   │   │   │   ├── PhoneticExtensions.js
│           │       │   │   │   │   │   ├── SpacingModLetters.js
│           │       │   │   │   │   │   ├── SuperAndSubscripts.js
│           │       │   │   │   │   │   └── SuppMathOperators.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── BasicLatin.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekBoldItalic.js
│           │       │   │   │   │   │   ├── GreekSSBoldItalic.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathBoldItalic.js
│           │       │   │   │   │   │   ├── MathBoldScript.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSItalicBold.js
│           │       │   │   │   │   │   └── SpacingModLetters.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   ├── AlphaPresentForms.js
│           │       │   │   │   │   │   ├── BoxDrawing.js
│           │       │   │   │   │   │   ├── CombDiactForSymbols.js
│           │       │   │   │   │   │   ├── ControlPictures.js
│           │       │   │   │   │   │   ├── CurrencySymbols.js
│           │       │   │   │   │   │   ├── Cyrillic.js
│           │       │   │   │   │   │   ├── EnclosedAlphanum.js
│           │       │   │   │   │   │   ├── GeneralPunctuation.js
│           │       │   │   │   │   │   ├── GreekAndCoptic.js
│           │       │   │   │   │   │   ├── GreekItalic.js
│           │       │   │   │   │   │   ├── IPAExtensions.js
│           │       │   │   │   │   │   ├── Latin1Supplement.js
│           │       │   │   │   │   │   ├── LatinExtendedA.js
│           │       │   │   │   │   │   ├── LatinExtendedAdditional.js
│           │       │   │   │   │   │   ├── LatinExtendedB.js
│           │       │   │   │   │   │   ├── LetterlikeSymbols.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   ├── MathItalic.js
│           │       │   │   │   │   │   ├── MathOperators.js
│           │       │   │   │   │   │   ├── MathSSItalic.js
│           │       │   │   │   │   │   ├── MathScript.js
│           │       │   │   │   │   │   ├── SpacingModLetters.js
│           │       │   │   │   │   │   └── ij.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── AlphaPresentForms.js
│           │       │   │   │   │       ├── Arrows.js
│           │       │   │   │   │       ├── BBBold.js
│           │       │   │   │   │       ├── BlockElements.js
│           │       │   │   │   │       ├── BoldFraktur.js
│           │       │   │   │   │       ├── BoxDrawing.js
│           │       │   │   │   │       ├── CJK.js
│           │       │   │   │   │       ├── CombDiacritMarks.js
│           │       │   │   │   │       ├── CombDiactForSymbols.js
│           │       │   │   │   │       ├── ControlPictures.js
│           │       │   │   │   │       ├── CurrencySymbols.js
│           │       │   │   │   │       ├── Cyrillic.js
│           │       │   │   │   │       ├── Dingbats.js
│           │       │   │   │   │       ├── EnclosedAlphanum.js
│           │       │   │   │   │       ├── Fraktur.js
│           │       │   │   │   │       ├── GeneralPunctuation.js
│           │       │   │   │   │       ├── GeometricShapes.js
│           │       │   │   │   │       ├── GreekAndCoptic.js
│           │       │   │   │   │       ├── GreekBold.js
│           │       │   │   │   │       ├── GreekBoldItalic.js
│           │       │   │   │   │       ├── GreekItalic.js
│           │       │   │   │   │       ├── GreekSSBold.js
│           │       │   │   │   │       ├── GreekSSBoldItalic.js
│           │       │   │   │   │       ├── Hiragana.js
│           │       │   │   │   │       ├── IPAExtensions.js
│           │       │   │   │   │       ├── Latin1Supplement.js
│           │       │   │   │   │       ├── LatinExtendedA.js
│           │       │   │   │   │       ├── LatinExtendedAdditional.js
│           │       │   │   │   │       ├── LatinExtendedB.js
│           │       │   │   │   │       ├── LatinExtendedD.js
│           │       │   │   │   │       ├── LetterlikeSymbols.js
│           │       │   │   │   │       ├── Main.js
│           │       │   │   │   │       ├── MathBold.js
│           │       │   │   │   │       ├── MathBoldItalic.js
│           │       │   │   │   │       ├── MathBoldScript.js
│           │       │   │   │   │       ├── MathItalic.js
│           │       │   │   │   │       ├── MathOperators.js
│           │       │   │   │   │       ├── MathSS.js
│           │       │   │   │   │       ├── MathSSBold.js
│           │       │   │   │   │       ├── MathSSItalic.js
│           │       │   │   │   │       ├── MathSSItalicBold.js
│           │       │   │   │   │       ├── MathScript.js
│           │       │   │   │   │       ├── MathTT.js
│           │       │   │   │   │       ├── MiscMathSymbolsA.js
│           │       │   │   │   │       ├── MiscMathSymbolsB.js
│           │       │   │   │   │       ├── MiscSymbols.js
│           │       │   │   │   │       ├── MiscSymbolsAndArrows.js
│           │       │   │   │   │       ├── MiscTechnical.js
│           │       │   │   │   │       ├── NumberForms.js
│           │       │   │   │   │       ├── PhoneticExtensions.js
│           │       │   │   │   │       ├── SpacingModLetters.js
│           │       │   │   │   │       ├── Specials.js
│           │       │   │   │   │       ├── SuperAndSubscripts.js
│           │       │   │   │   │       ├── SuppMathOperators.js
│           │       │   │   │   │       ├── SupplementalArrowsA.js
│           │       │   │   │   │       ├── SupplementalArrowsB.js
│           │       │   │   │   │       └── ij.js
│           │       │   │   │   ├── IntegralsD/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsSm/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUp/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUpD/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── IntegralsUpSm/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── All.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── NonUnicode/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   ├── Main.js
│           │       │   │   │   │   │   └── PrivateUse.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       ├── Main.js
│           │       │   │   │   │       └── PrivateUse.js
│           │       │   │   │   ├── SizeFiveSym/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeFourSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeOneSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeThreeSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SizeTwoSym/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   ├── All.js
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       ├── All.js
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-1.0.js
│           │       │   │   │   ├── fontdata-beta.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   ├── STIX-Web/
│           │       │   │   │   ├── Alphabets/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Arrows/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── DoubleStruck/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Fraktur/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Latin/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Main/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Marks/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Misc/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Monospace/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Normal/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Italic/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Operators/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── SansSerif/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Script/
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Shapes/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size1/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size2/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size3/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size4/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Size5/
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Symbols/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── Variants/
│           │       │   │   │   │   ├── Bold/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── BoldItalic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   ├── Italic/
│           │       │   │   │   │   │   └── Main.js
│           │       │   │   │   │   └── Regular/
│           │       │   │   │   │       └── Main.js
│           │       │   │   │   ├── fontdata-extra.js
│           │       │   │   │   └── fontdata.js
│           │       │   │   └── TeX/
│           │       │   │       ├── AMS/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── Arrows.js
│           │       │   │       │       ├── BBBold.js
│           │       │   │       │       ├── BoxDrawing.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Dingbats.js
│           │       │   │       │       ├── EnclosedAlphanum.js
│           │       │   │       │       ├── GeneralPunctuation.js
│           │       │   │       │       ├── GeometricShapes.js
│           │       │   │       │       ├── GreekAndCoptic.js
│           │       │   │       │       ├── Latin1Supplement.js
│           │       │   │       │       ├── LatinExtendedA.js
│           │       │   │       │       ├── LetterlikeSymbols.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── MathOperators.js
│           │       │   │       │       ├── MiscMathSymbolsB.js
│           │       │   │       │       ├── MiscSymbols.js
│           │       │   │       │       ├── MiscTechnical.js
│           │       │   │       │       ├── PUA.js
│           │       │   │       │       ├── SpacingModLetters.js
│           │       │   │       │       └── SuppMathOperators.js
│           │       │   │       ├── Caligraphic/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Fraktur/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   ├── Other.js
│           │       │   │       │   │   └── PUA.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── Other.js
│           │       │   │       │       └── PUA.js
│           │       │   │       ├── Greek/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   ├── BoldItalic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Main/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── Arrows.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── CombDiactForSymbols.js
│           │       │   │       │   │   ├── GeneralPunctuation.js
│           │       │   │       │   │   ├── GeometricShapes.js
│           │       │   │       │   │   ├── Latin1Supplement.js
│           │       │   │       │   │   ├── LatinExtendedA.js
│           │       │   │       │   │   ├── LatinExtendedB.js
│           │       │   │       │   │   ├── LetterlikeSymbols.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   ├── MathOperators.js
│           │       │   │       │   │   ├── MiscMathSymbolsA.js
│           │       │   │       │   │   ├── MiscSymbols.js
│           │       │   │       │   │   ├── MiscTechnical.js
│           │       │   │       │   │   ├── SpacingModLetters.js
│           │       │   │       │   │   ├── SuppMathOperators.js
│           │       │   │       │   │   └── SupplementalArrowsA.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── GeneralPunctuation.js
│           │       │   │       │   │   ├── Latin1Supplement.js
│           │       │   │       │   │   ├── LetterlikeSymbols.js
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── GeometricShapes.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       ├── MiscSymbols.js
│           │       │   │       │       └── SpacingModLetters.js
│           │       │   │       ├── Math/
│           │       │   │       │   ├── BoldItalic/
│           │       │   │       │   │   └── Main.js
│           │       │   │       │   └── Italic/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── SansSerif/
│           │       │   │       │   ├── Bold/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   └── Other.js
│           │       │   │       │   ├── Italic/
│           │       │   │       │   │   ├── BasicLatin.js
│           │       │   │       │   │   ├── CombDiacritMarks.js
│           │       │   │       │   │   ├── Main.js
│           │       │   │       │   │   └── Other.js
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── Script/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── Size1/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size2/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size3/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Size4/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── Typewriter/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── BasicLatin.js
│           │       │   │       │       ├── CombDiacritMarks.js
│           │       │   │       │       ├── Main.js
│           │       │   │       │       └── Other.js
│           │       │   │       ├── WinChrome/
│           │       │   │       │   └── Regular/
│           │       │   │       │       └── Main.js
│           │       │   │       ├── WinIE6/
│           │       │   │       │   └── Regular/
│           │       │   │       │       ├── AMS.js
│           │       │   │       │       ├── Bold.js
│           │       │   │       │       └── Main.js
│           │       │   │       ├── fontdata-extra.js
│           │       │   │       └── fontdata.js
│           │       │   ├── imageFonts.js
│           │       │   └── jax.js
│           │       ├── NativeMML/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       ├── PlainSource/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       ├── PreviewHTML/
│           │       │   ├── config.js
│           │       │   └── jax.js
│           │       └── SVG/
│           │           ├── autoload/
│           │           │   ├── annotation-xml.js
│           │           │   ├── maction.js
│           │           │   ├── menclose.js
│           │           │   ├── mglyph.js
│           │           │   ├── mmultiscripts.js
│           │           │   ├── ms.js
│           │           │   ├── mtable.js
│           │           │   └── multiline.js
│           │           ├── config.js
│           │           ├── fonts/
│           │           │   ├── Asana-Math/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Gyre-Pagella/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Gyre-Termes/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Latin-Modern/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size6/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size7/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── Neo-Euler/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── NonUnicode/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   ├── STIX-Web/
│           │           │   │   ├── Alphabets/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Arrows/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── DoubleStruck/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Fraktur/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Latin/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Main/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Marks/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Misc/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Monospace/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Normal/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Italic/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Operators/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── SansSerif/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Script/
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Shapes/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size1/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size2/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size3/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size4/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Size5/
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Symbols/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── Variants/
│           │           │   │   │   ├── Bold/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── BoldItalic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   ├── Italic/
│           │           │   │   │   │   └── Main.js
│           │           │   │   │   └── Regular/
│           │           │   │   │       └── Main.js
│           │           │   │   ├── fontdata-extra.js
│           │           │   │   └── fontdata.js
│           │           │   └── TeX/
│           │           │       ├── AMS/
│           │           │       │   └── Regular/
│           │           │       │       ├── Arrows.js
│           │           │       │       ├── BoxDrawing.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Dingbats.js
│           │           │       │       ├── EnclosedAlphanum.js
│           │           │       │       ├── GeneralPunctuation.js
│           │           │       │       ├── GeometricShapes.js
│           │           │       │       ├── GreekAndCoptic.js
│           │           │       │       ├── Latin1Supplement.js
│           │           │       │       ├── LatinExtendedA.js
│           │           │       │       ├── LetterlikeSymbols.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── MathOperators.js
│           │           │       │       ├── MiscMathSymbolsB.js
│           │           │       │       ├── MiscSymbols.js
│           │           │       │       ├── MiscTechnical.js
│           │           │       │       ├── PUA.js
│           │           │       │       ├── SpacingModLetters.js
│           │           │       │       └── SuppMathOperators.js
│           │           │       ├── Caligraphic/
│           │           │       │   ├── Bold/
│           │           │       │   │   └── Main.js
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Fraktur/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   ├── Other.js
│           │           │       │   │   └── PUA.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── Other.js
│           │           │       │       └── PUA.js
│           │           │       ├── Main/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── Arrows.js
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── CombDiactForSymbols.js
│           │           │       │   │   ├── GeneralPunctuation.js
│           │           │       │   │   ├── GeometricShapes.js
│           │           │       │   │   ├── GreekAndCoptic.js
│           │           │       │   │   ├── Latin1Supplement.js
│           │           │       │   │   ├── LatinExtendedA.js
│           │           │       │   │   ├── LatinExtendedB.js
│           │           │       │   │   ├── LetterlikeSymbols.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   ├── MathOperators.js
│           │           │       │   │   ├── MiscMathSymbolsA.js
│           │           │       │   │   ├── MiscSymbols.js
│           │           │       │   │   ├── MiscTechnical.js
│           │           │       │   │   ├── SpacingModLetters.js
│           │           │       │   │   ├── SuppMathOperators.js
│           │           │       │   │   └── SupplementalArrowsA.js
│           │           │       │   ├── Italic/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── GeneralPunctuation.js
│           │           │       │   │   ├── GreekAndCoptic.js
│           │           │       │   │   ├── LatinExtendedA.js
│           │           │       │   │   ├── LatinExtendedB.js
│           │           │       │   │   ├── LetterlikeSymbols.js
│           │           │       │   │   └── Main.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── GeometricShapes.js
│           │           │       │       ├── GreekAndCoptic.js
│           │           │       │       ├── LatinExtendedA.js
│           │           │       │       ├── LatinExtendedB.js
│           │           │       │       ├── LetterlikeSymbols.js
│           │           │       │       ├── Main.js
│           │           │       │       ├── MiscSymbols.js
│           │           │       │       ├── SpacingModLetters.js
│           │           │       │       └── SuppMathOperators.js
│           │           │       ├── Math/
│           │           │       │   ├── BoldItalic/
│           │           │       │   │   └── Main.js
│           │           │       │   └── Italic/
│           │           │       │       └── Main.js
│           │           │       ├── SansSerif/
│           │           │       │   ├── Bold/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   └── Other.js
│           │           │       │   ├── Italic/
│           │           │       │   │   ├── BasicLatin.js
│           │           │       │   │   ├── CombDiacritMarks.js
│           │           │       │   │   ├── Main.js
│           │           │       │   │   └── Other.js
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Main.js
│           │           │       │       └── Other.js
│           │           │       ├── Script/
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       └── Main.js
│           │           │       ├── Size1/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size2/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size3/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Size4/
│           │           │       │   └── Regular/
│           │           │       │       └── Main.js
│           │           │       ├── Typewriter/
│           │           │       │   └── Regular/
│           │           │       │       ├── BasicLatin.js
│           │           │       │       ├── CombDiacritMarks.js
│           │           │       │       ├── Main.js
│           │           │       │       └── Other.js
│           │           │       ├── fontdata-extra.js
│           │           │       └── fontdata.js
│           │           └── jax.js
│           ├── latest.js
│           └── localization/
│               ├── ar/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ar.js
│               ├── ast/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ast.js
│               ├── bcc/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── bcc.js
│               ├── bg/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── bg.js
│               ├── br/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── br.js
│               ├── ca/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ca.js
│               ├── cdo/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cdo.js
│               ├── ce/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ce.js
│               ├── cs/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cs.js
│               ├── cy/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── cy.js
│               ├── da/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── da.js
│               ├── de/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── de.js
│               ├── diq/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── diq.js
│               ├── en/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── en.js
│               ├── eo/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── eo.js
│               ├── es/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── es.js
│               ├── fa/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fa.js
│               ├── fi/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fi.js
│               ├── fr/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── fr.js
│               ├── gl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── gl.js
│               ├── he/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── he.js
│               ├── ia/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ia.js
│               ├── it/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── it.js
│               ├── ja/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ja.js
│               ├── kn/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── kn.js
│               ├── ko/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ko.js
│               ├── lb/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lb.js
│               ├── lki/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lki.js
│               ├── lt/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── lt.js
│               ├── mk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── mk.js
│               ├── nl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── nl.js
│               ├── oc/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── oc.js
│               ├── pl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pl.js
│               ├── pt/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pt.js
│               ├── pt-br/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── pt-br.js
│               ├── qqq/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── qqq.js
│               ├── ru/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── ru.js
│               ├── scn/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── scn.js
│               ├── sco/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sco.js
│               ├── sk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sk.js
│               ├── sl/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sl.js
│               ├── sv/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── sv.js
│               ├── th/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── th.js
│               ├── tr/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── tr.js
│               ├── uk/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── uk.js
│               ├── vi/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── vi.js
│               ├── zh-hans/
│               │   ├── FontWarnings.js
│               │   ├── HTML-CSS.js
│               │   ├── HelpDialog.js
│               │   ├── MathML.js
│               │   ├── MathMenu.js
│               │   ├── TeX.js
│               │   └── zh-hans.js
│               └── zh-hant/
│                   ├── FontWarnings.js
│                   ├── HTML-CSS.js
│                   ├── HelpDialog.js
│                   ├── MathML.js
│                   ├── MathMenu.js
│                   ├── TeX.js
│                   └── zh-hant.js
├── LICENSE.md
├── README.md
├── cmake/
│   ├── CPM.cmake
│   └── SetupBoost.cmake
├── currentRelease/
│   ├── ExperimentalCore/
│   │   └── md_octave/
│   │       ├── README.txt
│   │       ├── bounded_priority_queue.py
│   │       ├── build_recsurf.py
│   │       ├── coreConfig.py
│   │       ├── kdtree.py
│   │       ├── md_octave.py
│   │       ├── sauve_recponct_results.py
│   │       ├── sauve_recsurf_results.py
│   │       ├── script/
│   │       │   ├── AbsorptionConstructionMatrix.m
│   │       │   ├── Calcul_insta.m
│   │       │   ├── Coef_Att_Atmos.m
│   │       │   ├── Euler_implicite.m
│   │       │   ├── Input_parameters.m
│   │       │   ├── Surfaces_Salle.m
│   │       │   ├── TransmissionConstructionMatrix.m
│   │       │   ├── VolumeSalle.m
│   │       │   ├── VolumeVC.m
│   │       │   ├── VolumeVCDOF.m
│   │       │   ├── boundary_faces.m
│   │       │   ├── changem.m
│   │       │   ├── integVC_cst.m
│   │       │   ├── laplacienblocks2.m
│   │       │   ├── line3d.m
│   │       │   ├── mainDiffusion.m
│   │       │   ├── matrice_transmission.m
│   │       │   └── volumeTetra.m
│   │       ├── sound_level_layer.py
│   │       └── xmlreader.py
│   └── ExperimentalScript/
│       ├── density_report_recp_tool/
│       │   ├── __init__.py
│       │   └── __ui_startup__.py
│       ├── intensity_all_report_recp_tool/
│       │   ├── __init__.py
│       │   ├── __ui_startup__.py
│       │   └── todo.txt
│       └── md_octave/
│           ├── __init__.py
│           ├── __project_loading__.py
│           ├── icon/
│           │   └── Waves0.xcf
│           └── locale/
│               ├── en_US/
│               │   └── LC_MESSAGES/
│               │       └── messages.po
│               └── fr_FR/
│                   └── LC_MESSAGES/
│                       └── messages.po
├── make_flatpak.sh
├── org.noise_planet.i-simpa.appdata.xml
├── org.noise_planet.i-simpa.desktop
├── org.noise_planet.i-simpa.yml
└── src/
    ├── SystemScript/
    │   ├── new_element_witness/
    │   │   └── __init__.py
    │   └── uilocale/
    │       └── __init__.py
    ├── VolumetricMeshRepair/
    │   ├── CMakeLists.txt
    │   ├── adaptative_mesh_guide.cpp
    │   ├── adaptative_mesh_guide.hpp
    │   ├── main_remesh.cpp
    │   ├── main_remesh.hpp
    │   ├── manager/
    │   │   ├── smart_ptr.h
    │   │   └── smart_ptr.inl
    │   ├── mathlib.h
    │   ├── point_feeder.cpp
    │   ├── point_feeder.hpp
    │   ├── scalar_field_creator.cpp
    │   ├── scalar_field_creator.hpp
    │   ├── smart_macro.h
    │   ├── sortVols.py
    │   ├── spacial_discretisation.cpp
    │   ├── spacial_discretisation.hpp
    │   ├── spatial_discretization.cpp
    │   ├── spatial_discretization.hpp
    │   ├── tools/
    │   │   ├── intersection_algo.h
    │   │   ├── intersection_home.h
    │   │   ├── intersection_tri.cpp
    │   │   └── intersection_tri.h
    │   ├── triang_cubic_meshing.cpp
    │   ├── triang_cubic_meshing.hpp
    │   ├── triang_marching_cube.cpp
    │   ├── triang_marching_cube.hpp
    │   ├── triang_marching_tetra.cpp
    │   ├── triang_marching_tetra.hpp
    │   ├── triangle_feeder.cpp
    │   ├── triangle_feeder.hpp
    │   ├── triangulator.cpp
    │   └── triangulator.hpp
    ├── ctr/
    │   ├── CMakeLists.txt
    │   ├── TC_CalculationCore.cpp
    │   ├── TC_CalculationCore.h
    │   ├── ctrVersion.h.in
    │   ├── data_manager/
    │   │   ├── core_configuration.cpp
    │   │   └── core_configuration.h
    │   ├── doc_analyseCore/
    │   │   └── tc_analyse.odt
    │   ├── input_output/
    │   │   ├── reportmanager.cpp
    │   │   └── reportmanager.h
    │   ├── main_tc.cpp
    │   └── tcTypes.h
    ├── isimpa/
    │   ├── 3dengine/
    │   │   ├── ArcBall.cpp
    │   │   ├── ArcBall.h
    │   │   ├── Camera.cpp
    │   │   ├── Camera.h
    │   │   ├── Core/
    │   │   │   ├── 3ds.cpp
    │   │   │   ├── 3ds.h
    │   │   │   ├── Animator.cpp
    │   │   │   ├── Animator.hpp
    │   │   │   ├── Asc.cpp
    │   │   │   ├── Asc.h
    │   │   │   ├── Material.cpp
    │   │   │   ├── Material.h
    │   │   │   ├── Mathlib.h
    │   │   │   ├── Model3D.cpp
    │   │   │   ├── Model3D.h
    │   │   │   ├── Nff.cpp
    │   │   │   ├── Nff.h
    │   │   │   ├── Objet3D.cpp
    │   │   │   ├── Objet3D.h
    │   │   │   ├── Objet3D_maillage.cpp
    │   │   │   ├── Particules.cpp
    │   │   │   ├── Particules.h
    │   │   │   ├── Recepteurs_ponctuel_intensity.cpp
    │   │   │   ├── Recepteurs_ponctuel_intensity.hpp
    │   │   │   ├── Recepteurs_surfacique.cpp
    │   │   │   ├── Recepteurs_surfacique.h
    │   │   │   ├── Texture.cpp
    │   │   │   ├── Texture.h
    │   │   │   ├── bin.cpp
    │   │   │   ├── bin.h
    │   │   │   ├── mesh.cpp
    │   │   │   ├── mesh.h
    │   │   │   ├── stl.cpp
    │   │   │   ├── stl.hpp
    │   │   │   ├── var.cpp
    │   │   │   └── var.h
    │   │   ├── GlBitmapSurface.cpp
    │   │   ├── GlBitmapSurface.h
    │   │   ├── OpenGLApp.cpp
    │   │   ├── OpenGLApp.h
    │   │   ├── OpenGlViewer.cpp
    │   │   ├── OpenGlViewer.h
    │   │   ├── legendFonts.cpp
    │   │   ├── legendFonts.h
    │   │   ├── legendObject.cpp
    │   │   ├── legendObject.h
    │   │   ├── temporaire/
    │   │   │   └── collision.h
    │   │   └── tools/
    │   │       ├── extruder.cpp
    │   │       ├── extruder.h
    │   │       ├── intersection_seeker.cpp
    │   │       ├── intersection_seeker.h
    │   │       ├── opengl_test.cpp
    │   │       ├── opengl_test.hpp
    │   │       ├── recepteursurf_difference.cpp
    │   │       ├── recepteursurf_difference.hpp
    │   │       ├── tesselator.cpp
    │   │       └── tesselator.h
    │   ├── CMakeLists.txt
    │   ├── ConvertUTF.c
    │   ├── ConvertUTF.h
    │   ├── GL/
    │   │   └── opengl_inc.h
    │   ├── IHM/
    │   │   ├── AboutDialog.cpp
    │   │   ├── AboutDialog.hpp
    │   │   ├── ComboTreeCtrl.cpp
    │   │   ├── ComboTreeCtrl.h
    │   │   ├── DataWindow.cpp
    │   │   ├── DataWindow.h
    │   │   ├── DialogDiagramCreator.cpp
    │   │   ├── DialogDiagramCreator.h
    │   │   ├── GabeDataGrid.cpp
    │   │   ├── GabeDataGrid.hpp
    │   │   ├── MainPropGrid.cpp
    │   │   ├── MainPropGrid.h
    │   │   ├── PropGrid.cpp
    │   │   ├── PropGrid.h
    │   │   ├── ProprieteFrame.cpp
    │   │   ├── ProprieteFrame.h
    │   │   ├── ProprieteFrame_grid.cpp
    │   │   ├── ProprieteFrame_grid.h
    │   │   ├── ProprieteFrame_rendu.cpp
    │   │   ├── ProprieteFrame_rendu.h
    │   │   ├── RecepteurSOperationDialog.cpp
    │   │   ├── RecepteurSOperationDialog.h
    │   │   ├── WizardRemeshModel.cpp
    │   │   ├── WizardRemeshModel.hpp
    │   │   ├── base64.cpp
    │   │   ├── base64.h
    │   │   ├── customItem/
    │   │   │   ├── uimenuitem.cpp
    │   │   │   └── uimenuitem.hpp
    │   │   ├── customRenderer/
    │   │   │   ├── gridcellgabefloatrenderer.cpp
    │   │   │   └── gridcellgabefloatrenderer.hpp
    │   │   ├── customdialog/
    │   │   │   ├── customdlg.cpp
    │   │   │   └── customdlg.h
    │   │   ├── foldpaneltree.cpp
    │   │   ├── foldpaneltree.h
    │   │   ├── languageSelection.cpp
    │   │   ├── languageSelection.hpp
    │   │   ├── loadingSceneDialog.cpp
    │   │   ├── loadingSceneDialog.hpp
    │   │   ├── pyConsole.cpp
    │   │   ├── pyConsole.hpp
    │   │   ├── simpleGraph.cpp
    │   │   ├── simpleGraph.h
    │   │   ├── simpleGraphArrays.h
    │   │   ├── simpleGraphDialogs.cpp
    │   │   ├── simpleGraphDialogs.h
    │   │   ├── simpleGraphEnumerators.cpp
    │   │   ├── simpleGraphEnumerators.h
    │   │   ├── simpleGraphManager.cpp
    │   │   ├── simpleGraphManager.h
    │   │   ├── uiTreeCtrl.cpp
    │   │   └── uiTreeCtrl.h
    │   ├── Important_progression.odt
    │   ├── NotesPourUtilisateurs.odt
    │   ├── UtfConverter.cpp
    │   ├── UtfConverter.h
    │   ├── data_manager/
    │   │   ├── appconfig.cpp
    │   │   ├── appconfig.h
    │   │   ├── appconfig_version.cpp.in
    │   │   ├── customEditor/
    │   │   │   ├── wxGridCellColorEditor.cpp
    │   │   │   ├── wxGridCellColorEditor.h
    │   │   │   ├── wxGridCellFileEditor.cpp
    │   │   │   ├── wxGridCellFileEditor.h
    │   │   │   ├── wxGridCellFontEditor.cpp
    │   │   │   ├── wxGridCellFontEditor.h
    │   │   │   ├── wxGridCellTreeEditor.cpp
    │   │   │   └── wxGridCellTreeEditor.h
    │   │   ├── drawable_element.cpp
    │   │   ├── drawable_element.h
    │   │   ├── e_data.h
    │   │   ├── e_data_bool.h
    │   │   ├── e_data_bool_bfreqchoice.h
    │   │   ├── e_data_color.h
    │   │   ├── e_data_entier.h
    │   │   ├── e_data_file.h
    │   │   ├── e_data_float.h
    │   │   ├── e_data_font.h
    │   │   ├── e_data_list.h
    │   │   ├── e_data_row.h
    │   │   ├── e_data_row_bandefreq.h
    │   │   ├── e_data_row_ext_bandefreq.h
    │   │   ├── e_data_row_materiau.h
    │   │   ├── e_data_text.h
    │   │   ├── e_data_tree.h
    │   │   ├── e_position.h
    │   │   ├── element.cpp
    │   │   ├── element.h
    │   │   ├── generic_element/
    │   │   │   ├── e_directivity.cpp
    │   │   │   ├── e_directivity.h
    │   │   │   ├── e_directivity_app.h
    │   │   │   ├── e_directivity_user.h
    │   │   │   ├── e_gammeabsorption.cpp
    │   │   │   ├── e_gammeabsorption.h
    │   │   │   ├── e_gammefrequence.cpp
    │   │   │   ├── e_gammefrequence.h
    │   │   │   ├── e_gammefrequence_app.h
    │   │   │   ├── e_gammefrequence_user.h
    │   │   │   ├── e_materiau.cpp
    │   │   │   ├── e_materiau.h
    │   │   │   ├── e_materiau_app.h
    │   │   │   ├── e_materiau_user.h
    │   │   │   ├── e_property_freq.cpp
    │   │   │   └── e_property_freq.h
    │   │   ├── grpInfo/
    │   │   │   ├── data_group_info.cpp
    │   │   │   └── data_group_info.h
    │   │   ├── logger_tetgen_debug.hpp
    │   │   ├── projet.cpp
    │   │   ├── projet.h
    │   │   ├── projet_calculation.cpp
    │   │   ├── projet_maillage.cpp
    │   │   ├── projet_python.cpp
    │   │   ├── projet_remesh.cpp
    │   │   ├── projet_undo_redo.cpp
    │   │   ├── python_interface/
    │   │   │   ├── boost_python_header.cpp
    │   │   │   ├── boost_python_header.h
    │   │   │   ├── instanceManager.cpp
    │   │   │   ├── instanceManager.hpp
    │   │   │   ├── py_ui_module/
    │   │   │   │   ├── Application.cpp
    │   │   │   │   ├── Application.hpp
    │   │   │   │   ├── e_pyext.cpp
    │   │   │   │   ├── e_pyext.hpp
    │   │   │   │   ├── element_file_pywrap.cpp
    │   │   │   │   ├── element_file_pywrap.hpp
    │   │   │   │   ├── element_pywrap.cpp
    │   │   │   │   ├── element_pywrap.hpp
    │   │   │   │   ├── generate_enum_def.py
    │   │   │   │   ├── samples/
    │   │   │   │   │   ├── __init__.py
    │   │   │   │   │   ├── __project_loading__.py
    │   │   │   │   │   └── add_data_sample.py
    │   │   │   │   └── uictrl_doxygen.py
    │   │   │   ├── python_command.h
    │   │   │   ├── pythonshell.cpp
    │   │   │   ├── pythonshell.hpp
    │   │   │   ├── pythonstdioredirect.cpp
    │   │   │   └── pythonstdioredirect.hpp
    │   │   ├── tree_core/
    │   │   │   ├── e_core.h
    │   │   │   ├── e_core_core.h
    │   │   │   ├── e_core_core_bfreqselection.h
    │   │   │   ├── e_core_core_config.h
    │   │   │   ├── e_core_core_tetconf.h
    │   │   │   ├── e_core_sppscore.h
    │   │   │   ├── e_core_tccore.h
    │   │   │   └── e_core_tlmcore.h
    │   │   ├── tree_rapport/
    │   │   │   ├── e_report.h
    │   │   │   ├── e_report_file.cpp
    │   │   │   ├── e_report_file.h
    │   │   │   ├── e_report_folder.h
    │   │   │   ├── e_report_gabe.cpp
    │   │   │   ├── e_report_gabe.h
    │   │   │   ├── e_report_gabe_gap.cpp
    │   │   │   ├── e_report_gabe_gap.h
    │   │   │   ├── e_report_gabe_recp.cpp
    │   │   │   ├── e_report_gabe_recp.h
    │   │   │   ├── e_report_gabe_recps.cpp
    │   │   │   ├── e_report_gabe_recps.h
    │   │   │   ├── e_report_partvisualisation.h
    │   │   │   ├── e_report_recepteurssvisualisation.h
    │   │   │   ├── e_report_rpi.h
    │   │   │   ├── e_report_unknown_file.cpp
    │   │   │   └── e_report_unknown_file.h
    │   │   ├── tree_scene/
    │   │   │   ├── e_scene.cpp
    │   │   │   ├── e_scene.h
    │   │   │   ├── e_scene_bdd.h
    │   │   │   ├── e_scene_bdd_directivities.h
    │   │   │   ├── e_scene_bdd_directivities_app.h
    │   │   │   ├── e_scene_bdd_directivities_user.h
    │   │   │   ├── e_scene_bdd_materiaux.h
    │   │   │   ├── e_scene_bdd_materiaux_app.h
    │   │   │   ├── e_scene_bdd_materiaux_app_group.h
    │   │   │   ├── e_scene_bdd_materiaux_app_materiau.h
    │   │   │   ├── e_scene_bdd_materiaux_propmateriau.h
    │   │   │   ├── e_scene_bdd_materiaux_rendermateriau.h
    │   │   │   ├── e_scene_bdd_materiaux_user.h
    │   │   │   ├── e_scene_bdd_materiaux_user_group.h
    │   │   │   ├── e_scene_bdd_materiaux_user_materiau.h
    │   │   │   ├── e_scene_bdd_spectrums.h
    │   │   │   ├── e_scene_bdd_spectrums_app.h
    │   │   │   ├── e_scene_bdd_spectrums_user.h
    │   │   │   ├── e_scene_donnees.h
    │   │   │   ├── e_scene_encombrements.h
    │   │   │   ├── e_scene_encombrements_encombrement_cuboide.h
    │   │   │   ├── e_scene_encombrements_encombrement_model.h
    │   │   │   ├── e_scene_encombrements_encombrement_proprietes.h
    │   │   │   ├── e_scene_encombrements_encombrement_rendu.h
    │   │   │   ├── e_scene_groupesurfaces.h
    │   │   │   ├── e_scene_groupesurfaces_groupe.cpp
    │   │   │   ├── e_scene_groupesurfaces_groupe.h
    │   │   │   ├── e_scene_groupesurfaces_groupe_vertex.h
    │   │   │   ├── e_scene_projet.h
    │   │   │   ├── e_scene_projet_configuration.h
    │   │   │   ├── e_scene_projet_environnement.h
    │   │   │   ├── e_scene_projet_informations.h
    │   │   │   ├── e_scene_projet_rendu.h
    │   │   │   ├── e_scene_projet_rendu_origine.h
    │   │   │   ├── e_scene_projet_userconfiguration.h
    │   │   │   ├── e_scene_recepteursp.h
    │   │   │   ├── e_scene_recepteursp_recepteur.h
    │   │   │   ├── e_scene_recepteursp_recepteur_proprietes.h
    │   │   │   ├── e_scene_recepteursp_recepteur_rendu.h
    │   │   │   ├── e_scene_recepteurss.h
    │   │   │   ├── e_scene_recepteurss_recepteur.h
    │   │   │   ├── e_scene_recepteurss_recepteur_proprietes.h
    │   │   │   ├── e_scene_recepteurss_recepteur_rendu.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe_proprietes.h
    │   │   │   ├── e_scene_recepteurss_recepteurcoupe_rendu.h
    │   │   │   ├── e_scene_sources.h
    │   │   │   ├── e_scene_sources_source.h
    │   │   │   ├── e_scene_sources_source_properties.h
    │   │   │   ├── e_scene_sources_source_rendu.h
    │   │   │   ├── e_scene_volumes.cpp
    │   │   │   ├── e_scene_volumes.h
    │   │   │   ├── e_scene_volumes_volume.h
    │   │   │   ├── e_scene_volumes_volume_proprietes.h
    │   │   │   └── e_scene_volumes_volume_rendu.h
    │   │   └── tree_userpref/
    │   │       ├── e_userprefitem.hpp
    │   │       ├── e_userprefitemisotemplate.hpp
    │   │       └── e_userprefnode.hpp
    │   ├── doxDoc/
    │   │   ├── addelementDoc.h
    │   │   ├── compenants/
    │   │   │   ├── addelementDoc.h
    │   │   │   ├── doxygenDoc.h
    │   │   │   ├── temp.txt
    │   │   │   └── translationDoc.h
    │   │   ├── demos/
    │   │   │   ├── demo_doxygen.h
    │   │   │   ├── demo_translation_1.h
    │   │   │   ├── demos_add_element.h
    │   │   │   ├── demos_add_element_drawable.h
    │   │   │   ├── demos_add_element_parent.h
    │   │   │   └── demos_add_element_withprop.h
    │   │   ├── doxygenDoc.h
    │   │   ├── mainDoc.h
    │   │   ├── ref/
    │   │   │   └── VisualCPPGuide.mht
    │   │   └── translationDoc.h
    │   ├── first_header_include.hpp
    │   ├── lang/
    │   │   ├── fr.po
    │   │   ├── pl.po
    │   │   ├── pt_BR.po
    │   │   └── zh_CN.po
    │   ├── last_cpp_include.hpp
    │   ├── main/
    │   │   ├── i_simpa_main.cpp
    │   │   └── i_simpa_main.h
    │   ├── manager/
    │   │   ├── alphanum.hpp
    │   │   ├── bigfilereader.cpp
    │   │   ├── bigfilereader.h
    │   │   ├── boollocker.h
    │   │   ├── generic_typedef.h
    │   │   ├── interf_logger.hpp
    │   │   ├── lifetimeWitness.hpp
    │   │   ├── modelRetriever.cpp
    │   │   ├── modelRetriever.hpp
    │   │   ├── processManager.cpp
    │   │   ├── processManager.h
    │   │   ├── sppsString.cpp
    │   │   ├── stringParser.h
    │   │   └── stringTools.h
    │   ├── nc_curves.cpp
    │   ├── readme.txt
    │   └── resources/
    │       ├── Bitmaps/
    │       │   ├── Sources_icones.txt
    │       │   ├── flags/
    │       │   │   └── readme.txt
    │       │   └── iso/
    │       │       ├── Coldfire.gpl
    │       │       ├── Firecode.gpl
    │       │       ├── NF S 31-130.gpl
    │       │       ├── RYBG.gpl
    │       │       ├── jet.gpl
    │       │       ├── jet25.gpl
    │       │       ├── makerrvb.py
    │       │       └── rvb.gpl
    │       ├── Directivities/
    │       │   ├── speaker-test1.txt
    │       │   ├── speaker-test2.txt
    │       │   └── speaker-test3.txt
    │       ├── License.rtf
    │       ├── SystemScript/
    │       │   ├── check_version/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_started__.py
    │       │   │   └── locale/
    │       │   │       └── fr.po
    │       │   ├── graphy/
    │       │   │   ├── __init__.py
    │       │   │   ├── all_tests.py
    │       │   │   ├── backends/
    │       │   │   │   ├── __init__.py
    │       │   │   │   └── google_chart_api/
    │       │   │   │       ├── __init__.py
    │       │   │   │       ├── bar_chart_test.py
    │       │   │   │       ├── base_encoder_test.py
    │       │   │   │       ├── encoders.py
    │       │   │   │       ├── line_chart_test.py
    │       │   │   │       ├── pie_chart_test.py
    │       │   │   │       ├── util.py
    │       │   │   │       └── util_test.py
    │       │   │   ├── bar_chart.py
    │       │   │   ├── bar_chart_test.py
    │       │   │   ├── common.py
    │       │   │   ├── common_test.py
    │       │   │   ├── formatters.py
    │       │   │   ├── formatters_test.py
    │       │   │   ├── graphy_test.py
    │       │   │   ├── line_chart.py
    │       │   │   ├── line_chart_test.py
    │       │   │   ├── pie_chart.py
    │       │   │   ├── pie_chart_test.py
    │       │   │   └── util.py
    │       │   ├── job_tool/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── moveto_vertex/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── new_element_witness/
    │       │   │   └── __init__.py
    │       │   ├── preceiv_sourceTracker/
    │       │   │   ├── __init__.py
    │       │   │   ├── __project_loading__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── recp_res_tool/
    │       │   │   ├── __init__.py
    │       │   │   └── __ui_startup__.py
    │       │   ├── recp_tool/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   ├── sample/
    │       │   │   ├── __ui_startup__.py
    │       │   │   ├── parttocsv.py
    │       │   │   ├── test_groups.py
    │       │   │   └── test_part_io.py
    │       │   ├── source_tools/
    │       │   │   ├── __init__.py
    │       │   │   ├── __ui_startup__.py
    │       │   │   └── locale/
    │       │   │       ├── es.po
    │       │   │       ├── fr.po
    │       │   │       ├── pl.po
    │       │   │       ├── pt_BR.po
    │       │   │       └── zh_CN.po
    │       │   └── uilocale/
    │       │       └── __init__.py
    │       ├── UserScript/
    │       │   └── readme.txt
    │       ├── appconst.xml
    │       ├── doc/
    │       │   ├── tutorial/
    │       │   │   ├── Round_Robin_3/
    │       │   │   │   ├── readme.txt
    │       │   │   │   ├── results_p3_public.xls
    │       │   │   │   └── studio_coordinates_p3.xls
    │       │   │   ├── script_tutorial/
    │       │   │   │   ├── ReadSurfReceiver.py
    │       │   │   │   ├── SppsReportSample/
    │       │   │   │   │   ├── __init__.py
    │       │   │   │   │   ├── __ui_startup__.py
    │       │   │   │   │   ├── besttick.py
    │       │   │   │   │   ├── buildhtmlreport.py
    │       │   │   │   │   ├── encode.js
    │       │   │   │   │   ├── locale/
    │       │   │   │   │   │   ├── en_US/
    │       │   │   │   │   │   │   └── LC_MESSAGES/
    │       │   │   │   │   │   │       └── messages.po
    │       │   │   │   │   │   └── fr_FR/
    │       │   │   │   │   │       └── LC_MESSAGES/
    │       │   │   │   │   │           └── messages.po
    │       │   │   │   │   ├── recsurf_report_stats.py
    │       │   │   │   │   ├── ressource/
    │       │   │   │   │   │   ├── Read Me.txt
    │       │   │   │   │   │   ├── script.js
    │       │   │   │   │   │   └── style.css
    │       │   │   │   │   ├── settings.py
    │       │   │   │   │   └── testlocale.py
    │       │   │   │   ├── recp_res_norm/
    │       │   │   │   │   ├── __init__.py
    │       │   │   │   │   ├── __ui_startup__.py
    │       │   │   │   │   └── locale/
    │       │   │   │   │       └── fr_FR/
    │       │   │   │   │           └── LC_MESSAGES/
    │       │   │   │   │               └── messages.po
    │       │   │   │   └── user_core/
    │       │   │   │       ├── __init_.py
    │       │   │   │       └── locale/
    │       │   │   │           └── fr_FR/
    │       │   │   │               └── LC_MESSAGES/
    │       │   │   │                   └── messages.po
    │       │   │   ├── tutorial 1/
    │       │   │   │   └── tutorial_1.proj
    │       │   │   ├── tutorial 2/
    │       │   │   │   ├── Auswertung_Phase_II.xls
    │       │   │   │   ├── elmia.ply
    │       │   │   │   ├── elmia_coordinates.xls
    │       │   │   │   ├── material_catt - Copie.txt
    │       │   │   │   ├── material_catt.txt
    │       │   │   │   ├── readme.txt
    │       │   │   │   └── tutorial_2.proj
    │       │   │   └── tutorial 3/
    │       │   │       ├── Industrial.proj
    │       │   │       ├── Industrial_hall.ply
    │       │   │       └── tutorial_3.proj
    │       │   └── validation/
    │       │       ├── atmospheric_absorption/
    │       │       │   ├── Validation_atmospheric_absorption.proj
    │       │       │   ├── Validation_atmospheric_absorption.xlsx
    │       │       │   └── ~$Validation_atmospheric_absorption_diffuse_quasi_cubic_room_January_2018.xlsx
    │       │       └── clarity_calculation/
    │       │           ├── Clarity_room_1000_m3.proj
    │       │           ├── Clarity_room_12000_m3.proj
    │       │           ├── Clarity_room_125_m3.proj
    │       │           ├── Clarity_room_504_m3.proj
    │       │           ├── Clarity_room_8000_m3.proj
    │       │           ├── Clarity_validation.xlsx
    │       │           └── ~$Clarity_validation.xlsx
    │       ├── isimpa.desktop
    │       ├── isimpa.icns
    │       ├── license.html
    │       └── license_fichiers/
    │           ├── colorschememapping.xml
    │           ├── filelist.xml
    │           └── themedata.thmx
    ├── lib_interface/
    │   ├── CMakeLists.txt
    │   ├── Core/
    │   │   ├── Model3D.h
    │   │   ├── mathlib.cpp
    │   │   └── mathlib.h
    │   ├── coreString.cpp
    │   ├── coreString.h
    │   ├── coreTypes.cpp
    │   ├── coreTypes.h
    │   ├── coreinitialisation.cpp
    │   ├── coreinitialisation.h
    │   ├── data_manager/
    │   │   ├── base_core_configuration.cpp
    │   │   ├── base_core_configuration.h
    │   │   └── data_calculation/
    │   │       ├── Celerite_du_son.cpp
    │   │       ├── Coef_Att_Atmos.cpp
    │   │       ├── Masse_volumique_air.cpp
    │   │       └── calculsPropagation.h
    │   ├── input_output/
    │   │   ├── baseReportManager.cpp
    │   │   ├── baseReportManager.h
    │   │   ├── bin.cpp
    │   │   ├── bin.h
    │   │   ├── cxml.cpp
    │   │   ├── cxml.h
    │   │   ├── directivity/
    │   │   │   ├── directivityBalloon.cpp
    │   │   │   ├── directivityBalloon.h
    │   │   │   ├── directivityParser.cpp
    │   │   │   └── directivityParser.h
    │   │   ├── exportRecepteurSurf/
    │   │   │   ├── rsbin.cpp
    │   │   │   ├── rsbin.h
    │   │   │   ├── std_rsbin.cpp
    │   │   │   └── std_rsbin.hpp
    │   │   ├── gabe/
    │   │   │   ├── gabe.cpp
    │   │   │   ├── gabe.h
    │   │   │   ├── stdgabe.cpp
    │   │   │   └── stdgabe.h
    │   │   ├── gpl_io.cpp
    │   │   ├── gpl_io.hpp
    │   │   ├── importExportMaillage/
    │   │   │   ├── m_report_bin.cpp
    │   │   │   ├── m_report_bin.h
    │   │   │   ├── mbin.cpp
    │   │   │   └── mbin.h
    │   │   ├── part_binary.h
    │   │   ├── particles/
    │   │   │   ├── part_binary.h
    │   │   │   ├── part_io.cpp
    │   │   │   └── part_io.hpp
    │   │   ├── ply/
    │   │   │   ├── rply.cpp
    │   │   │   ├── rply.hpp
    │   │   │   ├── rply_interface.cpp
    │   │   │   ├── rply_interface.hpp
    │   │   │   ├── rplyfile.hpp
    │   │   │   └── triangulate.cpp.future
    │   │   ├── poly/
    │   │   │   ├── poly.cpp
    │   │   │   └── poly.h
    │   │   ├── progressionInfo.h
    │   │   ├── pugixml/
    │   │   │   ├── .codecov.yml
    │   │   │   ├── .gitignore
    │   │   │   ├── .travis.yml
    │   │   │   ├── CMakeLists.txt
    │   │   │   ├── README.md
    │   │   │   ├── appveyor.yml
    │   │   │   ├── contrib/
    │   │   │   │   └── foreach.hpp
    │   │   │   ├── docs/
    │   │   │   │   ├── config.adoc
    │   │   │   │   ├── manual.adoc
    │   │   │   │   ├── manual.html
    │   │   │   │   ├── quickstart.adoc
    │   │   │   │   ├── quickstart.html
    │   │   │   │   └── samples/
    │   │   │   │       ├── character.xml
    │   │   │   │       ├── custom_memory_management.cpp
    │   │   │   │       ├── include.cpp
    │   │   │   │       ├── load_error_handling.cpp
    │   │   │   │       ├── load_file.cpp
    │   │   │   │       ├── load_memory.cpp
    │   │   │   │       ├── load_options.cpp
    │   │   │   │       ├── load_stream.cpp
    │   │   │   │       ├── modify_add.cpp
    │   │   │   │       ├── modify_base.cpp
    │   │   │   │       ├── modify_remove.cpp
    │   │   │   │       ├── save_custom_writer.cpp
    │   │   │   │       ├── save_declaration.cpp
    │   │   │   │       ├── save_file.cpp
    │   │   │   │       ├── save_options.cpp
    │   │   │   │       ├── save_stream.cpp
    │   │   │   │       ├── save_subtree.cpp
    │   │   │   │       ├── text.cpp
    │   │   │   │       ├── transitions.xml
    │   │   │   │       ├── traverse_base.cpp
    │   │   │   │       ├── traverse_iter.cpp
    │   │   │   │       ├── traverse_predicate.cpp
    │   │   │   │       ├── traverse_rangefor.cpp
    │   │   │   │       ├── traverse_walker.cpp
    │   │   │   │       ├── tree.xml
    │   │   │   │       ├── weekly-shift_jis.xml
    │   │   │   │       ├── weekly-utf-16.xml
    │   │   │   │       ├── weekly-utf-8.xml
    │   │   │   │       ├── xgconsole.xml
    │   │   │   │       ├── xpath_error.cpp
    │   │   │   │       ├── xpath_query.cpp
    │   │   │   │       ├── xpath_select.cpp
    │   │   │   │       └── xpath_variables.cpp
    │   │   │   ├── readme.txt
    │   │   │   ├── scripts/
    │   │   │   │   ├── cocoapods_push.sh
    │   │   │   │   ├── nuget.autopkg
    │   │   │   │   ├── nuget_build.bat
    │   │   │   │   ├── premake4.lua
    │   │   │   │   ├── pugixml.pc.in
    │   │   │   │   ├── pugixml.podspec
    │   │   │   │   ├── pugixml.xcodeproj/
    │   │   │   │   │   └── project.pbxproj
    │   │   │   │   ├── pugixml_airplay.mkf
    │   │   │   │   ├── pugixml_codeblocks.cbp
    │   │   │   │   ├── pugixml_codelite.project
    │   │   │   │   ├── pugixml_vs2005.vcproj
    │   │   │   │   ├── pugixml_vs2005_static.vcproj
    │   │   │   │   ├── pugixml_vs2008.vcproj
    │   │   │   │   ├── pugixml_vs2008_static.vcproj
    │   │   │   │   ├── pugixml_vs2010.vcxproj
    │   │   │   │   ├── pugixml_vs2010_static.vcxproj
    │   │   │   │   ├── pugixml_vs2013.vcxproj
    │   │   │   │   ├── pugixml_vs2013_static.vcxproj
    │   │   │   │   └── pugixml_vs2015.vcxproj
    │   │   │   ├── src/
    │   │   │   │   ├── pugiconfig.hpp
    │   │   │   │   ├── pugixml.cpp
    │   │   │   │   └── pugixml.hpp
    │   │   │   └── tests/
    │   │   │       ├── allocator.cpp
    │   │   │       ├── allocator.hpp
    │   │   │       ├── archive.py
    │   │   │       ├── autotest-appveyor.ps1
    │   │   │       ├── common.hpp
    │   │   │       ├── data/
    │   │   │       │   ├── empty.xml
    │   │   │       │   ├── large.xml
    │   │   │       │   ├── latintest_latin1.xml
    │   │   │       │   ├── latintest_utf8.xml
    │   │   │       │   ├── multiline.xml
    │   │   │       │   ├── small.xml
    │   │   │       │   ├── truncation.xml
    │   │   │       │   ├── utftest_utf16_be.xml
    │   │   │       │   ├── utftest_utf16_be_bom.xml
    │   │   │       │   ├── utftest_utf16_be_clean.xml
    │   │   │       │   ├── utftest_utf16_be_nodecl.xml
    │   │   │       │   ├── utftest_utf16_le.xml
    │   │   │       │   ├── utftest_utf16_le_bom.xml
    │   │   │       │   ├── utftest_utf16_le_clean.xml
    │   │   │       │   ├── utftest_utf16_le_nodecl.xml
    │   │   │       │   ├── utftest_utf32_be.xml
    │   │   │       │   ├── utftest_utf32_be_bom.xml
    │   │   │       │   ├── utftest_utf32_be_clean.xml
    │   │   │       │   ├── utftest_utf32_be_nodecl.xml
    │   │   │       │   ├── utftest_utf32_le.xml
    │   │   │       │   ├── utftest_utf32_le_bom.xml
    │   │   │       │   ├── utftest_utf32_le_clean.xml
    │   │   │       │   ├── utftest_utf32_le_nodecl.xml
    │   │   │       │   ├── utftest_utf8.xml
    │   │   │       │   ├── utftest_utf8_bom.xml
    │   │   │       │   ├── utftest_utf8_clean.xml
    │   │   │       │   ├── utftest_utf8_nodecl.xml
    │   │   │       │   └── тест.xml
    │   │   │       ├── data_fuzz_parse/
    │   │   │       │   ├── basic.xml
    │   │   │       │   ├── doctype.xml
    │   │   │       │   ├── refs.xml
    │   │   │       │   ├── types.xml
    │   │   │       │   ├── utf16.xml
    │   │   │       │   └── utf32.xml
    │   │   │       ├── fuzz_parse.cpp
    │   │   │       ├── helpers.hpp
    │   │   │       ├── main.cpp
    │   │   │       ├── test.cpp
    │   │   │       ├── test.hpp
    │   │   │       ├── test_document.cpp
    │   │   │       ├── test_dom_modify.cpp
    │   │   │       ├── test_dom_text.cpp
    │   │   │       ├── test_dom_traverse.cpp
    │   │   │       ├── test_header_guard.cpp
    │   │   │       ├── test_header_iosfwd_1.cpp
    │   │   │       ├── test_header_iosfwd_2.cpp
    │   │   │       ├── test_header_iostream_1.cpp
    │   │   │       ├── test_header_iostream_2.cpp
    │   │   │       ├── test_header_only_1.cpp
    │   │   │       ├── test_header_only_2.cpp
    │   │   │       ├── test_header_string_1.cpp
    │   │   │       ├── test_header_string_2.cpp
    │   │   │       ├── test_header_string_iostream.cpp
    │   │   │       ├── test_memory.cpp
    │   │   │       ├── test_parse.cpp
    │   │   │       ├── test_parse_doctype.cpp
    │   │   │       ├── test_unicode.cpp
    │   │   │       ├── test_version.cpp
    │   │   │       ├── test_write.cpp
    │   │   │       ├── test_xpath.cpp
    │   │   │       ├── test_xpath_api.cpp
    │   │   │       ├── test_xpath_functions.cpp
    │   │   │       ├── test_xpath_operators.cpp
    │   │   │       ├── test_xpath_parse.cpp
    │   │   │       ├── test_xpath_paths.cpp
    │   │   │       ├── test_xpath_paths_abbrev_w3c.cpp
    │   │   │       ├── test_xpath_paths_w3c.cpp
    │   │   │       ├── test_xpath_variables.cpp
    │   │   │       ├── test_xpath_xalan_1.cpp
    │   │   │       ├── test_xpath_xalan_2.cpp
    │   │   │       ├── test_xpath_xalan_3.cpp
    │   │   │       ├── test_xpath_xalan_4.cpp
    │   │   │       ├── test_xpath_xalan_5.cpp
    │   │   │       ├── writer_string.cpp
    │   │   │       └── writer_string.hpp
    │   │   ├── utf8/
    │   │   │   ├── checked.h
    │   │   │   ├── core.h
    │   │   │   └── unchecked.h
    │   │   └── utf8.h
    │   ├── manager/
    │   │   ├── smart_ptr.h
    │   │   └── smart_ptr.inl
    │   ├── std_tools.cpp
    │   ├── std_tools.hpp
    │   ├── tests/
    │   │   ├── balloon_test.cpp
    │   │   ├── cube.cbin
    │   │   ├── cube_mesh.mbin
    │   │   ├── io_test.cpp
    │   │   ├── rs_cut.csbin
    │   │   ├── speaker-test1.txt
    │   │   ├── speaker-test2.txt
    │   │   └── test_import1.poly
    │   └── tools/
    │       ├── collision.h
    │       ├── octree44.cpp
    │       ├── octree44.hpp
    │       ├── octree44_cylinderElement.cpp
    │       ├── octree44_cylinderElement.hpp
    │       ├── octree44_dotElement.cpp
    │       ├── octree44_dotElement.hpp
    │       ├── octree44_segmentElement.cpp
    │       ├── octree44_segmentElement.hpp
    │       ├── octree44_sphereElement.cpp
    │       ├── octree44_sphereElement.hpp
    │       ├── octree44_triangleElement.cpp
    │       ├── octree44_triangleElement.hpp
    │       ├── surf_merging.cpp
    │       ├── surf_merging.hpp
    │       ├── vol_identifier.cpp
    │       ├── vol_identifier.hpp
    │       ├── vol_splitter.cpp
    │       └── vol_splitter.hpp
    ├── preprocess/
    │   ├── CMakeLists.txt
    │   ├── Preprocess.cpp
    │   ├── computations.cpp
    │   ├── computations.hpp
    │   └── tools/
    │       ├── intersection_algo.h
    │       ├── intersection_home.h
    │       ├── intersection_tri.cpp
    │       └── intersection_tri.h
    ├── python_bindings/
    │   ├── CMakeLists.txt
    │   ├── __init__.py
    │   ├── docs/
    │   │   └── libsimpa_docs.h
    │   ├── doxygen.py
    │   ├── generate_code.py
    │   ├── libsimpa.i
    │   ├── named_tuple.py
    │   ├── samples/
    │   │   ├── ReadParticlesFiles.py
    │   │   ├── WriteParticlesFiles.py
    │   │   ├── spps_conversion_resultats.py
    │   │   ├── spps_maillage.py
    │   │   └── spps_model.py
    │   └── tests/
    │       ├── check_retrocompat.py
    │       ├── check_retrocompat_gabe.py
    │       ├── check_retrocompat_mesh.py
    │       ├── check_retrocompat_recsurf.py
    │       ├── mesh.cbin
    │       ├── model_io.py
    │       ├── retrocompat_test.gabe
    │       ├── rs_cut.csbin
    │       ├── test_math.py
    │       └── tetramesh.mbin
    ├── readme.txt
    ├── spps/
    │   ├── CMakeLists.txt
    │   ├── CalculationCore.cpp
    │   ├── CalculationCore.h
    │   ├── data_manager/
    │   │   ├── core_configuration.cpp
    │   │   └── core_configuration.h
    │   ├── input_output/
    │   │   ├── reportmanager.cpp
    │   │   └── reportmanager.h
    │   ├── sppsInitialisation.cpp
    │   ├── sppsInitialisation.h
    │   ├── sppsNantes.cpp
    │   ├── sppsTypes.cpp
    │   ├── sppsTypes.h
    │   ├── sppsVersion.h.in
    │   ├── tests/
    │   │   ├── config.xml
    │   │   ├── speaker-test3.txt
    │   │   └── spps_core_test.cpp
    │   └── tools/
    │       ├── dotdistribution.cpp
    │       ├── dotdistribution.h
    │       └── dotreflection.h
    └── tetgen/
        ├── CMakeLists.txt
        ├── LICENSE
        ├── README
        ├── predicates.cxx
        ├── tetgen.cxx
        └── tetgen.h
Download .txt
Showing preview only (322K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3687 symbols across 513 files)

FILE: Docs/ystatic/MathJax-2.7.5/extensions/MathML/content-mathml.js
  function addDiff (line 1600) | function addDiff(n,degree) {

FILE: Docs/ystatic/MathJax-2.7.5/extensions/TeX/mhchem3/mhchem.js
  function assertNever (line 1677) | function assertNever(a) {}
  function assertString (line 1679) | function assertString(a) {}

FILE: Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathjax-sre.js
  function c (line 52) | function c(){}
  function a (line 60) | function a(a,b){d?c[a]=!0:b()?c[a]=!1:d=c[a]=!0}
  function b (line 60) | function b(a){try{return!!eval(a)}catch(g){return!1}}
  function c (line 64) | function c(){d&&(goog.global.setTimeout(d,0),d=null)}
  function b (line 77) | function b(a,b){b?d.write('<script type="module" crossorigin>'+b+"\x3c/s...
  function c (line 77) | function c(a,b){var c=d.createElement("script");c.defer=!0;c.async=!1;c....
  function b (line 79) | function b(){e.contents_=
  function c (line 80) | function c(){b();if(e.contents_){f&&a.setModuleState(e.path,goog.ModuleT...
  function d (line 80) | function d(){var a=goog.global.document,b=goog.Dependency.registerCallba...

FILE: Docs/ystatic/MathJax-2.7.5/extensions/a11y/wgxpath.install.js
  function aa (line 2) | function aa(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array...
  function l (line 3) | function l(a){return"string"==typeof a}
  function ba (line 3) | function ba(a,b,c){return a.call.apply(a.bind,arguments)}
  function ca (line 3) | function ca(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Arra...
  function da (line 4) | function da(a,b,c){da=Function.prototype.bind&&-1!=Function.prototype.bi...
  function ea (line 4) | function ea(a,b){var c=Array.prototype.slice.call(arguments,1);return fu...
  function m (line 5) | function m(a){var b=n;function c(){}c.prototype=b.prototype;a.G=b.protot...
  function q (line 30) | function q(a,b){return-1!=a.indexOf(b)}
  function ga (line 30) | function ga(a,b){return a<b?-1:a>b?1:0}
  function ka (line 32) | function ka(a,b){var c;a:{c=a.length;for(var d=l(a)?a.split(""):a,e=0;e<...
  function la (line 32) | function la(a){return Array.prototype.concat.apply(Array.prototype,argum...
  function ma (line 32) | function ma(a,b,c){return 2>=arguments.length?Array.prototype.slice.call...
  function ta (line 32) | function ta(){var a=k.document;return a?a.documentMode:void 0}
  function za (line 34) | function za(a){if(!ya[a]){for(var b=0,c=fa(String(ua)).split("."),d=fa(S...
  function x (line 35) | function x(a,b,c,d){this.a=a;this.nodeName=c;this.nodeValue=d;this.nodeT...
  function Da (line 35) | function Da(a,b){var c=Ca&&"href"==b.nodeName?a.getAttribute(b.nodeName,...
  function z (line 35) | function z(a){var b=null,c=a.nodeType;1==c&&(b=a.textContent,b=void 0==b...
  function A (line 36) | function A(a,b,c){if(null===b)return!0;try{if(!a.getAttribute)return!1}c...
  function B (line 36) | function B(a,b,c,d,e){return(w?Ea:Fa).call(null,a,b,l(c)?c:null,l(d)?d:n...
  function Ea (line 37) | function Ea(a,b,c,d,e){if(a instanceof E||8==a.b||c&&null===a.b){var f=b...
  function Fa (line 38) | function Fa(a,b,c,d,e){b.getElementsByName&&d&&"name"==c&&!v?(b=b.getEle...
  function Ia (line 39) | function Ia(a,b,c,d,e){var f;if((a instanceof E||8==a.b||c&&null===a.b)&...
  function Ja (line 39) | function Ja(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)A(b,c,d)&&a....
  function Ha (line 40) | function Ha(a,b,c,d,e){for(b=b.firstChild;b;b=b.nextSibling)A(b,c,d)&&a....
  function Ga (line 40) | function Ga(a){if(a instanceof G){if(8==a.b)return"!";if(null===a.b)retu...
  function Ka (line 40) | function Ka(a,b){if(!a||!b)return!1;if(a.contains&&1==b.nodeType)return ...
  function La (line 41) | function La(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a....
  function Na (line 42) | function Na(a,b){var c=a.parentNode;if(c==b)return-1;for(var d=b;d.paren...
  function Ma (line 42) | function Ma(a,b){for(var c=b;c=c.previousSibling;)if(c==a)return-1;retur...
  function C (line 42) | function C(){this.b=this.a=null;this.l=0}
  function Oa (line 42) | function Oa(a){this.node=a;this.a=this.b=null}
  function Pa (line 42) | function Pa(a,b){if(!a.a)return b;if(!b.a)return a;for(var c=a.a,d=b.a,e...
  function Qa (line 42) | function Qa(a,b){var c=new Oa(b);c.a=a.a;a.b?a.a.b=c:a.a=a.b=c;a.a=c;a.l++}
  function F (line 43) | function F(a,b){var c=new Oa(b);c.b=a.b;a.a?a.b.a=c:a.a=a.b=c;a.b=c;a.l++}
  function Ra (line 43) | function Ra(a){return(a=a.a)?a.node:null}
  function Sa (line 43) | function Sa(a){return(a=Ra(a))?z(a):""}
  function H (line 43) | function H(a,b){return new Ta(a,!!b)}
  function Ta (line 43) | function Ta(a,b){this.f=a;this.b=(this.c=b)?a.b:a.a;this.a=null}
  function I (line 43) | function I(a){var b=a.b;if(null==b)return null;var c=a.a=b;a.b=a.c?b.b:b...
  function n (line 43) | function n(a){this.i=a;this.b=this.g=!1;this.f=null}
  function J (line 43) | function J(a){return"\n  "+a.toString().split("\n").join("\n  ")}
  function Ua (line 43) | function Ua(a,b){a.g=b}
  function Va (line 43) | function Va(a,b){a.b=b}
  function K (line 43) | function K(a,b){var c=a.a(b);return c instanceof C?+Sa(c):+c}
  function L (line 43) | function L(a,b){var c=a.a(b);return c instanceof C?Sa(c):""+c}
  function M (line 43) | function M(a,b){var c=a.a(b);return c instanceof C?!!c.l:!!c}
  function N (line 43) | function N(a,b,c){n.call(this,a.i);this.c=a;this.h=b;this.o=c;this.g=b.g...
  function O (line 44) | function O(a,b,c,d,e){b=b.a(d);c=c.a(d);var f;if(b instanceof C&&c insta...
  function Xa (line 45) | function Xa(a,b,c,d){this.a=a;this.w=b;this.i=c;this.m=d}
  function P (line 46) | function P(a,b,c,d){if(Ya.hasOwnProperty(a))throw Error("Binary operator...
  function Q (line 47) | function Q(a,b,c){this.a=a;this.b=b||1;this.f=c||1}
  function Za (line 47) | function Za(a,b){if(b.a.length&&4!=a.i)throw Error("Primary expression m...
  function ab (line 47) | function ab(a,b){if(b.length<a.A)throw Error("Function "+a.j+" expects a...
  function bb (line 48) | function bb(a,b,c,d,e,f,g,h,p){this.j=a;this.i=b;this.g=c;this.D=d;this....
  function R (line 49) | function R(a,b,c,d,e,f,g,h){if(cb.hasOwnProperty(a))throw Error("Functio...
  function c (line 50) | function c(a){if(w){var b=e.all[a];if(b){if(b.nodeType&&a==b.id)return b...
  function G (line 54) | function G(a,b){this.h=a;this.c=void 0!==b?b:null;this.b=null;switch(a){...
  function db (line 54) | function db(a){return"comment"==a||"text"==a||"processing-instruction"==...
  function eb (line 55) | function eb(a){this.b=a;this.a=0}
  function fb (line 55) | function fb(a){a=a.match(gb);for(var b=0;b<a.length;b++)hb.test(a[b])&&a...
  function S (line 55) | function S(a,b){return a.b[a.a+(b||0)]}
  function T (line 55) | function T(a){return a.b[a.a++]}
  function ib (line 55) | function ib(a){return a.b.length<=a.a}
  function jb (line 55) | function jb(a){n.call(this,3);this.c=a.substring(1,a.length-1)}
  function E (line 55) | function E(a,b){this.j=a.toLowerCase();var c;c="*"==this.j?"*":"http://w...
  function kb (line 56) | function kb(a,b){n.call(this,a.i);this.h=a;this.c=b;this.g=a.g;this.b=a....
  function mb (line 56) | function mb(){n.call(this,4)}
  function nb (line 56) | function nb(){n.call(this,4)}
  function ob (line 57) | function ob(a){return"/"==a||"//"==a}
  function rb (line 58) | function rb(a){n.call(this,4);this.c=a;Ua(this,ja(this.c,function(a){ret...
  function sb (line 58) | function sb(a,b){this.a=a;this.b=!!b}
  function $a (line 59) | function $a(a,b,c){for(c=c||0;c<a.a.length;c++)for(var d=a.a[c],e=H(b),f...
  function U (line 60) | function U(a,b,c,d){n.call(this,4);this.c=a;this.o=b;this.h=c||new sb([]...
  function vb (line 62) | function vb(a,b,c,d){this.j=a;this.f=b;this.a=c;this.b=d}
  function V (line 62) | function V(a,b,c,d){if(wb.hasOwnProperty(a))throw Error("Axis already cr...
  function zb (line 67) | function zb(a){n.call(this,1);this.c=a;this.g=a.g;this.b=a.b}
  function Ab (line 67) | function Ab(a){n.call(this,1);this.c=a}
  function Bb (line 67) | function Bb(a,b){this.a=a;this.b=b}
  function Cb (line 67) | function Cb(a){for(var b,c=[];;){W(a,"Missing right hand side of binary ...
  function W (line 67) | function W(a,b){if(ib(a.a))throw Error(b);}
  function Eb (line 67) | function Eb(a,b){var c=T(a.a);if(c!=b)throw Error("Bad token, expected: ...
  function Fb (line 68) | function Fb(a){a=T(a.a);if(")"!=a)throw Error("Bad token: "+a);}
  function Gb (line 68) | function Gb(a){a=T(a.a);if(2>a.length)throw Error("Unclosed literal stri...
  function Hb (line 69) | function Hb(a){var b,c=[],d;if(ob(S(a.a))){b=T(a.a);d=S(a.a);if("/"==b&&...
  function Ib (line 71) | function Ib(a,b){var c,d,e;if("/"!=b&&"//"!=b)throw Error('Step op shoul...
  function Jb (line 73) | function Jb(a){for(var b=[];"["==S(a.a);){T(a.a);W(a,"Missing predicate ...
  function Db (line 73) | function Db(a){if("-"==S(a.a))return T(a.a),new zb(Db(a));var b=Hb(a);if...
  function Kb (line 73) | function Kb(a){switch(a.nodeType){case 1:return ea(Lb,a);case 9:return K...
  function Mb (line 73) | function Mb(){return null}
  function Lb (line 73) | function Lb(a,b){if(a.prefix==b)return a.namespaceURI||"http://www.w3.or...
  function Nb (line 73) | function Nb(a,b){if(!a.length)throw Error("Empty XPath expression.");var...
  function Y (line 74) | function Y(a,b){if(0==b)if(a instanceof C)b=4;else if("string"==typeof a...
  function Ob (line 76) | function Ob(a){this.lookupNamespaceURI=Kb(a)}
  function Pb (line 77) | function Pb(a,b){var c=a||k,d=c.Document&&c.Document.prototype||c.docume...

FILE: Docs/ystatic/MathJax-2.7.5/jax/input/AsciiMath/jax.js
  function createElementXHTML (line 362) | function createElementXHTML(t) {
  function AMcreateElementMathML (line 369) | function AMcreateElementMathML(t) {
  function createMmlNode (line 374) | function createMmlNode(t,frag) {
  function newcommand (line 382) | function newcommand(oldstr,newstr) {
  function newsymbol (line 387) | function newsymbol(symbolobj) {
  function compareNames (line 682) | function compareNames(s1,s2) {
  function initSymbols (line 689) | function initSymbols() {
  function refreshSymbols (line 702) | function refreshSymbols(){
  function define (line 708) | function define(oldstr,newstr) {
  function AMremoveCharsAndBlanks (line 713) | function AMremoveCharsAndBlanks(str,n) {
  function position (line 723) | function position(arr, str, n) {
  function AMgetSymbol (line 740) | function AMgetSymbol(str) {
  function AMremoveBrackets (line 801) | function AMremoveBrackets(node) {
  function AMparseSexpr (line 827) | function AMparseSexpr(str) { //parses str and returns [node,tailstr]
  function AMparseIexpr (line 1022) | function AMparseIexpr(str) {
  function AMparseExpr (line 1075) | function AMparseExpr(str,rightbracket) {
  function parseMath (line 1184) | function parseMath(str,latex) {

FILE: Docs/ystatic/MathJax-2.7.5/latest.js
  function Error (line 48) | function Error(message) {
  function getScript (line 52) | function getScript() {
  function getCDN (line 64) | function getCDN(script) {
  function getVersion (line 71) | function getVersion() {
  function setVersion (line 76) | function setVersion(version) {
  function getXMLHttpRequest (line 85) | function getXMLHttpRequest() {
  function loadMathJax (line 93) | function loadMathJax(url) {
  function loadDefaultMathJax (line 106) | function loadDefaultMathJax() {
  function getLatestMathJax (line 115) | function getLatestMathJax(cdn,config,unpacked) {

FILE: currentRelease/ExperimentalCore/md_octave/bounded_priority_queue.py
  class BoundedPriorityQueue (line 10) | class BoundedPriorityQueue:
    method __init__ (line 13) | def __init__(self, k):
    method items (line 17) | def items(self):
    method parent (line 20) | def parent(self, index):
    method left_child (line 26) | def left_child(self, index):
    method right_child (line 29) | def right_child(self, index):
    method max_heapify (line 32) | def max_heapify(self, index):
    method _dist (line 52) | def _dist(self, index):
    method propagate_up (line 56) | def propagate_up(self, index):
    method add (line 62) | def add(self, obj):
    method heap_append (line 85) | def heap_append(self, obj):
    method max (line 91) | def max(self):
    method size (line 95) | def size(self):
    method extract_max (line 98) | def extract_max(self):

FILE: currentRelease/ExperimentalCore/md_octave/build_recsurf.py
  function to_vec3 (line 12) | def to_vec3(vec):
  class rsurf (line 19) | class rsurf(object):
    method __init__ (line 24) | def __init__(self, index, label):
    method GetSquaresCenter (line 34) | def GetSquaresCenter(self):
  function GetRecepteurSurfList (line 45) | def GetRecepteurSurfList(coreconf, scene, mesh):

FILE: currentRelease/ExperimentalCore/md_octave/coreConfig.py
  class SourceElement (line 14) | class SourceElement:
    method __init__ (line 15) | def __init__(self):
    method __init__ (line 18) | def __init__(self,node, db):
  class material (line 23) | class material(dict):
    method __init__ (line 29) | def __init__(self,idmat_comsol,idmat_xml,nbfreq):
  class coreConfig (line 39) | class coreConfig(object):
    method __init__ (line 43) | def __init__(self,xmlfilepath):
    method load_freqlst (line 122) | def load_freqlst(self,freqenumnode):
    method load_sources (line 142) | def load_sources(self,nodesources):
    method load_fittings (line 153) | def load_fittings(self):
    method load_materials (line 160) | def load_materials(self):
    method __getitem__ (line 187) | def __getitem__(self,item_name):
    method __len__ (line 191) | def __len__(self):
    method __contains__ (line 195) | def __contains__(self,val):

FILE: currentRelease/ExperimentalCore/md_octave/kdtree.py
  class Node (line 25) | class Node(object):
    method __init__ (line 31) | def __init__(self, data=None, left=None, right=None):
    method is_leaf (line 38) | def is_leaf(self):
    method preorder (line 51) | def preorder(self):
    method inorder (line 68) | def inorder(self):
    method postorder (line 85) | def postorder(self):
    method children (line 103) | def children(self):
    method set_child (line 126) | def set_child(self, index, child):
    method height (line 137) | def height(self):
    method get_child_pos (line 156) | def get_child_pos(self, child):
    method __repr__ (line 167) | def __repr__(self):
    method __nonzero__ (line 172) | def __nonzero__(self):
    method __eq__ (line 177) | def __eq__(self, other):
    method __hash__ (line 183) | def __hash__(self):
  function require_axis (line 187) | def require_axis(f):
  class KDNode (line 203) | class KDNode(Node):
    method __init__ (line 207) | def __init__(self, data=None, left=None, right=None, axis=None,
    method add (line 224) | def add(self, point):
    method create_subnode (line 257) | def create_subnode(self, data):
    method find_replacement (line 267) | def find_replacement(self):
    method should_remove (line 281) | def should_remove(self, point, node):
    method remove (line 290) | def remove(self, point, node=None):
    method _remove (line 327) | def _remove(self, point):
    method is_balanced (line 359) | def is_balanced(self):
    method rebalance (line 374) | def rebalance(self):
    method axis_dist (line 382) | def axis_dist(self, point, axis):
    method dist (line 390) | def dist(self, point):
    method search_knn (line 399) | def search_knn(self, point, k, dist=None):
    method _search_node (line 431) | def _search_node(self, point, k, results, get_dist, counter):
    method search_nn (line 478) | def search_nn(self, point, dist=None):
    method _search_nn_dist (line 495) | def _search_nn_dist(self, point, dist, results, get_dist):
    method search_nn_dist (line 517) | def search_nn_dist(self, point, distance, best=None):
    method is_valid (line 534) | def is_valid(self):
    method extreme_child (line 551) | def extreme_child(self, sel_func, axis):
  function create (line 576) | def create(point_list=None, dimensions=None, axis=0, sel_axis=None):
  function check_dimensionality (line 614) | def check_dimensionality(point_list, dimensions=None):
  function level_order (line 624) | def level_order(tree, include_all=False):
  function visualize (line 644) | def visualize(tree, max_level=100, node_width=10, left_padding=5):

FILE: currentRelease/ExperimentalCore/md_octave/md_octave.py
  function which (line 50) | def which(program):
  function process_face (line 67) | def process_face(tetraface, modelImport, sharedVertices, fileOut):
  function runTC (line 82) | def runTC(xmlPathTc, coreconf):
  function __init__ (line 226) | def __init__(self, idrs, faceid, x, y, z):
  function __iter__ (line 235) | def __iter__(self):
  function __len__ (line 238) | def __len__(self):
  function __getitem__ (line 241) | def __getitem__(self, item):
  function __str__ (line 244) | def __str__(self):
  class ReceiverPunctual (line 248) | class ReceiverPunctual:
    method __init__ (line 249) | def __init__(self, idrp, x, y, z):
    method __iter__ (line 255) | def __iter__(self):
    method __len__ (line 258) | def __len__(self):
    method __getitem__ (line 261) | def __getitem__(self, item):
    method __str__ (line 264) | def __str__(self):
  function to_vec3 (line 267) | def to_vec3(vec):
  function to_array (line 270) | def to_array(vec):
  function square_dist (line 273) | def square_dist(v1, v2):
  function schroeder_to_impulse (line 277) | def schroeder_to_impulse(schroeder):
  function process_output_files (line 282) | def process_output_files(outfolder, coreconf, import_data, resultsModifi...
  function get_a_coefficients (line 392) | def get_a_coefficients(p, p1, p2, p3, p4):
  function GetNumStepBySource (line 409) | def GetNumStepBySource(pos, coreconf):
  function write_config_file (line 421) | def write_config_file(coreConf, outputdir):
  function main (line 436) | def main(call_octave=True):

FILE: currentRelease/ExperimentalCore/md_octave/sauve_recponct_results.py
  function MakeFolderIfNeeded (line 10) | def MakeFolderIfNeeded(path):
  function labeling (line 23) | def labeling(cell):
  function powertwo (line 27) | def powertwo(cell):
  function SauveRecepteurPonctResults (line 32) | def SauveRecepteurPonctResults(coreconf, encoding=sys.getfilesystemencod...

FILE: currentRelease/ExperimentalCore/md_octave/sauve_recsurf_results.py
  function MakeFolderIfNeeded (line 9) | def MakeFolderIfNeeded(path):
  function SauveRecepteurSurfResults (line 22) | def SauveRecepteurSurfResults(coreconf):

FILE: currentRelease/ExperimentalCore/md_octave/sound_level_layer.py
  class SoundLevelLayer (line 5) | class SoundLevelLayer(object):
    method __init__ (line 9) | def __init__(self):
    method LoadData (line 12) | def LoadData(self,folderdirect,coreconf,ls):

FILE: currentRelease/ExperimentalCore/md_octave/xmlreader.py
  function cmpFuncInt (line 15) | def cmpFuncInt(self,right):
  function cmpFuncStr (line 20) | def cmpFuncStr(self,right):
  class XmlNode (line 32) | class XmlNode(dict):
    method __init__ (line 33) | def __init__(self,xmlnode):
    method getproperty (line 52) | def getproperty(self, propertyname, default=""):
    method addnode (line 56) | def addnode(self, name, value):
    method setAttribute (line 62) | def setAttribute(self, name, value):
    method hasproperty (line 70) | def hasproperty(self,propertyname):
    method getpropertyfloat (line 76) | def getpropertyfloat(self,propertyname, default="0"):
    method getpropertyint (line 86) | def getpropertyint(self, propertyname, default="0"):
    method __repr__ (line 93) | def __repr__(self):
    method SortChildsByProperty (line 101) | def SortChildsByProperty(self,childsname,propertynamesort,ispropertyin...
    method lstnodesenum (line 114) | def lstnodesenum(self,ind):
    method __getitem__ (line 126) | def __getitem__(self,ind):
  function readXmlFile (line 133) | def readXmlFile(xmlfilepath):
  function writeXmlFile (line 138) | def writeXmlFile(rootNode, xmlfilepath):

FILE: currentRelease/ExperimentalScript/density_report_recp_tool/__init__.py
  function extractReceiverPositionFromXml (line 13) | def extractReceiverPositionFromXml(xmlFilePath):
  function GetMixedLevel (line 35) | def GetMixedLevel(folderwxid):
  function SaveLevel (line 89) | def SaveLevel(tab, path):
  function dofusion (line 105) | def dofusion(folderwxid, path):
  class manager (line 113) | class manager:
    method __init__ (line 114) | def __init__(self):
    method getmenu (line 117) | def getmenu(self, typeel, idel, menu):
    method OnDFusion (line 127) | def OnDFusion(self, idel):

FILE: currentRelease/ExperimentalScript/intensity_all_report_recp_tool/__init__.py
  function extractReceiverPositionFromXml (line 8) | def extractReceiverPositionFromXml(xmlFilePath):
  function GetMixedLevel (line 29) | def GetMixedLevel(folderwxid):
  function SaveLevel (line 81) | def SaveLevel(tab,path):
  function dofusion (line 95) | def dofusion(folderwxid, path):
  class manager (line 103) | class manager:
    method __init__ (line 104) | def __init__(self):
    method getmenu (line 106) | def getmenu(self,typeel,idel,menu):
    method OnDFusion (line 115) | def OnDFusion(self,idel):

FILE: currentRelease/ExperimentalScript/md_octave/__init__.py
  class MD_Octave (line 6) | class MD_Octave(ui.element):
    method __init__ (line 10) | def __init__(self,idel):
    method gettreelabel (line 37) | def gettreelabel(self):
    method geticonpath (line 42) | def geticonpath(self,state_open):

FILE: currentRelease/ExperimentalScript/md_octave/__project_loading__.py
  function inject_md_core (line 3) | def inject_md_core():

FILE: src/SystemScript/new_element_witness/__init__.py
  class ElementWatcher (line 9) | class ElementWatcher:
    method __init__ (line 10) | def __init__(self,elementToWatch,func):
    method OnUpdate (line 17) | def OnUpdate(self,elid):
  function LinkElementCreationWithFunction (line 28) | def LinkElementCreationWithFunction(element,func):

FILE: src/SystemScript/uilocale/__init__.py
  function dummy_notranslation (line 4) | def dummy_notranslation(msg):
  function InstallUiModule (line 8) | def InstallUiModule(pathname,language):

FILE: src/VolumetricMeshRepair/adaptative_mesh_guide.cpp
  type Triangulators (line 35) | namespace Triangulators
    type ClosestPointResult_t (line 92) | struct ClosestPointResult_t
    function ClosestSortPredicate (line 97) | bool ClosestSortPredicate(const Candidate_t& left,const Candidate_t& r...

FILE: src/VolumetricMeshRepair/adaptative_mesh_guide.hpp
  type Triangulators (line 44) | namespace Triangulators
    class AdaptativeMeshGuide (line 48) | class AdaptativeMeshGuide
      type AdaptativeMeshGuideData_t (line 51) | struct AdaptativeMeshGuideData_t
    type tri_t (line 86) | struct tri_t
      method tri_t (line 88) | tri_t(const vec3& _A,const vec3& _B,const vec3& _C)
      method tri_t (line 91) | tri_t(){}
    type AdaptativeMeshGuide::AdaptativeMeshGuideData_t (line 102) | struct AdaptativeMeshGuide::AdaptativeMeshGuideData_t
      method AdaptativeMeshGuideData_t (line 104) | AdaptativeMeshGuideData_t()

FILE: src/VolumetricMeshRepair/main_remesh.cpp
  function decimal (line 48) | inline decimal GetRandValue()
  function Range (line 52) | inline int Range(const int& from,const int& to)
  function PrintUsage (line 81) | void PrintUsage(int argc, char* argv[])
  type VolumeSelectionInfo_t (line 99) | struct VolumeSelectionInfo_t
    method VolumeSelectionInfo_t (line 101) | VolumeSelectionInfo_t()
    type FILTER (line 104) | enum FILTER
  function MainRemesh (line 115) | int MainRemesh(int argc, char* argv[])
  function main (line 353) | int main(int argc, char* argv[])

FILE: src/VolumetricMeshRepair/mathlib.h
  function namespace (line 42) | namespace core_mathlib
  function class (line 167) | class vec3 {
  function vec3 (line 180) | const vec3 operator*(float _f) const { return vec3(this->x * _f,this->y ...
  function vec3 (line 181) | const vec3 operator/(float _f) const {
  function cross (line 221) | void cross(const vec3 &v2) {
  function dot (line 228) | float dot(const vec3 &v) const { return ((this->x*v.x) + (this->y*v.y) +...
  function compare (line 230) | bool compare(const vec3 &_v,float epsi=EPSILON) { return (fabs(this->x -...
  function angle (line 231) | float angle(const vec3 &v)  const { // retourne l'angle en radians entre...
  function vec3 (line 237) | vec3 closestPointOnLine(const vec3 &vA, const vec3 &vB) { return (((vB-v...
  function vec3 (line 239) | vec3 closestPointOnSegment(const vec3 &vA, const vec3 &vB) {
  function projectionOnLine (line 246) | float projectionOnLine(const vec3 &vA, const vec3 &vB) {
  function vec3 (line 251) | vec3 lerp(vec3 &u, vec3 &v, float factor) { return ((u * (1 - factor)) +...
  function distance (line 256) | double distance(const vec3& a_vector) const
  function vec3 (line 275) | vec3 Rotation(vec3 &n,const float &angle)
  function Cross (line 295) | inline void Cross(const vec3 &v1,const vec3 &v2,vec3 &vout) {
  function vec3 (line 300) | inline vec3 Cross_r(const vec3 &v1,const vec3 &v2) {
  function vec2 (line 303) | inline vec2::vec2(const vec3 &_v) {
  function Vector (line 309) | inline void Vector(const vec3 &vp1, const vec3 &vp2,vec3 &vout) {
  function vec3 (line 315) | inline vec3 Vector_r(const vec3 &vp1, const vec3 &vp2)
  function Determinant (line 322) | inline float Determinant(const vec3 &vp1, const vec3 &vp2, const vec3 &v...
  function vec3 (line 337) | inline vec3 FaceNormal(const vec3 &vp1, const vec3 &vp2, const vec3 &vp3)
  function class (line 348) | class vec4 {
  function operator (line 358) | int operator!=(const vec4 &_v) { return !(*this == _v); }
  function vec4 (line 361) | const vec4 operator*(float _f) const { return vec4(this->x * _f,this->y ...
  function vec4 (line 362) | const vec4 operator/(float _f) const {
  function vec3 (line 418) | inline vec3::vec3(const vec4 &_v) {
  function vec2 (line 428) | inline vec2::vec2(const vec4 &_v) {
  function colinear (line 432) | inline bool colinear( const vec3& A, const vec3& B, const vec3& C, const...
  function class (line 449) | class ivec2 {
  function operator (line 457) | int operator!=(const ivec2 &iv) { return !(*this == iv); }
  function ivec2 (line 461) | const ivec2 operator/(long _i) const { return ivec2(this->a / _i,this->b...
  function operator (line 474) | operator const long*() const { return this->i; }
  function set (line 478) | void set(long _a,long _b) { this->a = _a; this->b = _b; }
  function reset (line 479) | void reset(void) { this->a = this->b = 0; }
  function swap (line 480) | void swap(ivec2 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 481) | void swap(ivec2 *iv) { this->swap(*iv); }
  function class (line 500) | class ivec3 {
  function ivec3 (line 514) | const ivec3 operator/(long _i) const { return ivec3(this->a / _i,this->b...
  function operator (line 528) | operator const long*() const { return this->i; }
  function set (line 532) | void set(long _a,long _b,long _c) { this->a = _a; this->b = _b; this->c ...
  function set (line 533) | void set(int tab[3]) { this->a = tab[0]; this->b = tab[1]; this->c = tab...
  function reset (line 534) | void reset(void) { this->a = this->b = this->c = 0; }
  function swap (line 535) | void swap(ivec3 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 536) | void swap(ivec3 *iv) { this->swap(*iv); }
  function class (line 556) | class ivec4 {
  function operator (line 566) | int operator!=(const ivec4 &iv) { return !(*this == iv); }
  function ivec4 (line 570) | const ivec4 operator/(long _i) const { return ivec4(this->a / _i,this->b...
  function operator (line 584) | operator const long*() const { return this->i; }
  function set (line 588) | void set(long _a,long _b,long _c,long _d) { this->a = _a; this->b = _b; ...
  function reset (line 589) | void reset(void) { this->a = this->b = this->c = this->d = 0; }
  function swap (line 590) | void swap(ivec4 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 591) | void swap(ivec4 *iv) { this->swap(*iv); }
  function ivec3 (line 601) | inline ivec3::ivec3(const ivec4 &iv) {
  function CalcTetraVolume (line 612) | inline float CalcTetraVolume(vec3 A,vec3 B,vec3 C,vec3 D)
  function vec3 (line 622) | inline vec3 GetGTriangle(const vec3& A,const vec3& B,const vec3& C)
  function vec3 (line 628) | inline vec3 GetGTetra(const vec3& A,const vec3& B,const vec3& C,const ve...
  function GetAireTriangle (line 632) | inline float GetAireTriangle(const vec3& a,const vec3& b,const vec3& c)
  function DotInTetra (line 667) | static bool DotInTetra(const vec3& dotTest,const vec3& v1,const vec3& v2...
  function LineLineIntersect (line 684) | inline int LineLineIntersect(
  function ClosestDistanceBetweenDotAndTriangle (line 742) | inline float ClosestDistanceBetweenDotAndTriangle(

FILE: src/VolumetricMeshRepair/scalar_field_creator.cpp
  type ScalarFieldBuilders (line 37) | namespace ScalarFieldBuilders
    function At (line 40) | inline SpatialDiscretization::cell_id_t At(const SpatialDiscretization...
    function vec3 (line 52) | vec3 CellIdToCenterCoordinate( const ivec3& cell_id, const decimal& ce...
    function decimal (line 109) | decimal ScalarFieldCreator::GetVolumeValue(const SpatialDiscretization...
    function sortFunc (line 158) | int sortFunc(const listValue_t& left,const listValue_t& right)
    function ivec3 (line 303) | ivec3 ScalarFieldCreator::GetFirstCellByWeight(const SpatialDiscretiza...
    function ivec3 (line 329) | ivec3 ScalarFieldCreator::GetCellIdByCoord(const vec3& position)
    function vec3 (line 420) | vec3 ScalarFieldCreator::GetCenterCellCoordinates( const ivec3& cell_i...

FILE: src/VolumetricMeshRepair/scalar_field_creator.hpp
  type ScalarFieldBuilders (line 35) | namespace ScalarFieldBuilders
    class ScalarFieldCreator (line 44) | class ScalarFieldCreator
      type mainVolumeConstruction_t (line 50) | struct mainVolumeConstruction_t

FILE: src/VolumetricMeshRepair/spacial_discretisation.cpp
  function GetRandValue (line 41) | inline float GetRandValue()
  function Range (line 45) | inline int Range(const int& from,const int& to)
  function TestAlgo (line 56) | void TestAlgo()
  function main (line 99) | int main(int argc, char* argv[])

FILE: src/VolumetricMeshRepair/spacial_discretisation.hpp
  class Cell (line 35) | class Cell
    method Cell (line 42) | Cell() : cellData(0),Size(0) {}
    method Cell (line 43) | Cell(const cell_id_t& _DomainSize ) : cellData(_DomainSize),Size(_Doma...
    method SetCellSize (line 47) | void SetCellSize( const cell_id_t& cellSize) { this->Size = cellSize; }
    method SetNextCell (line 48) | void SetNextCell( boost::shared_ptr<Cell>& _nextCell)
    method Count (line 53) | void Count( unsigned int& cnt)
    method cellData_t (line 64) | const cellData_t& operator [](const cell_id_t& id) const
    method cellData_t (line 86) | cellData_t& at( const cell_id_t& id, const cell_id_t& domainSize)
  class CellArray (line 136) | class CellArray
    method CellArray (line 142) | CellArray() : Size(0) {}
    method CellArray (line 143) | CellArray(const cell_id_t& _DomainSize ) : cellData(boost::shared_arra...
    method SetCellSize (line 151) | void SetCellSize( const cell_id_t& cellSize) {
    method Count (line 158) | void Count( unsigned int& cnt)
    method cellData_t (line 166) | const cellData_t& operator [](const cell_id_t& id) const
    method cellData_t (line 174) | cellData_t& at( const cell_id_t& id, const cell_id_t& domainSize)
  class CellData (line 183) | class CellData
    method CellData (line 186) | CellData(  const cell_id_t& domainSize ) {}
    method Count (line 188) | void Count( unsigned int& cnt)
  function CellData (line 199) | inline CellData& FindOrCreateCell(xcell_t& cellArray,const cell_id_t& do...
    method CellData (line 186) | CellData(  const cell_id_t& domainSize ) {}
    method Count (line 188) | void Count( unsigned int& cnt)
  function CellData (line 205) | inline CellData& FindOrCreateCell(xcell_t& cellArray,const cell_id_t& do...
    method CellData (line 186) | CellData(  const cell_id_t& domainSize ) {}
    method Count (line 188) | void Count( unsigned int& cnt)

FILE: src/VolumetricMeshRepair/spatial_discretization.hpp
  type SpatialDiscretization (line 37) | namespace SpatialDiscretization
    type domainInformation_t (line 41) | struct domainInformation_t
      method domainInformation_t (line 43) | domainInformation_t() :domainSize(0),weight(0){}
      method domainInformation_t (line 44) | domainInformation_t(const cell_id_t& matrixSize,const weight_t& defa...
    class Cell (line 56) | class Cell
      method Cell (line 63) | Cell() : cellData(0),Size(0) {}
      method Cell (line 64) | Cell(const domainInformation_t& _DomainInformation ) : cellData(_Dom...
      method Cell (line 65) | Cell(const domainInformation_t& _DomainInformation, const cell_id_t&...
      method InsertCellAfter (line 68) | void InsertCellAfter( const cell_id_t& nextCellSize, const cellData_...
      method DeleteNextCell (line 74) | void DeleteNextCell()
      method Resize (line 79) | void Resize( const cell_id_t& cellSize,const domainInformation_t& _D...
      method SetNextCell (line 84) | void SetNextCell( const PTR<Cell>& _nextCell)
      method Count (line 89) | void Count( unsigned int& cnt)
      method Next (line 101) | bool Next(Cell** _nextCell)
      method cell_id_t (line 109) | const cell_id_t& GetSize()
      method cellData_t (line 116) | cellData_t& GetData()
      method cellData_t (line 123) | const cellData_t& operator [](const cell_id_t& id) const
      method IsNextCell (line 140) | bool IsNextCell()
      method SetData (line 149) | void SetData(const cellData_t& newData)
      method SetData (line 157) | void SetData(const cell_id_t& id, const domainInformation_t& domainI...
    class CellArray (line 244) | class CellArray
      method CellArray (line 250) | CellArray() : Size(0) {}
      method CellArray (line 251) | CellArray(const domainInformation_t& _DomainInformation ) : cellData...
      method Resize (line 259) | void Resize( const cell_id_t& cellSize,const domainInformation_t& _D...
      method Count (line 266) | void Count( unsigned int& cnt)
      method cellData_t (line 274) | cellData_t& operator [](const cell_id_t& id)
      method cellData_t (line 282) | cellData_t& at( const cell_id_t& id, const domainInformation_t& doma...

FILE: src/VolumetricMeshRepair/tools/intersection_algo.h
  function coplanar_tri_tri (line 192) | int coplanar_tri_tri(const float N[3],const float V0[3],const float V1[3...
  function tri_tri_intersect (line 242) | int tri_tri_intersect(const float V0[3],const float V1[3],const float V2...
  function NoDivTriTriIsect (line 373) | int NoDivTriTriIsect(float V0[3],float V1[3],float V2[3],
  function isect2 (line 496) | inline void isect2(const float VTX0[3],const float VTX1[3],const float V...
  function compute_intervals_isectline (line 527) | inline int compute_intervals_isectline(const float VERT0[3],const float ...
  function else (line 572) | else if(D0D2>0.0f)                                    \
  function else (line 582) | else if(D1!=0.0f)                                     \
  function else (line 586) | else if(D2!=0.0f)                                     \
  function tri_tri_intersect_with_isectline (line 598) | int tri_tri_intersect_with_isectline(const float V0[3],const float V1[3]...

FILE: src/VolumetricMeshRepair/tools/intersection_tri.cpp
  type CollisionAlgo (line 31) | namespace CollisionAlgo
    function IntersectionVecTri (line 33) | bool IntersectionVecTri(const vec3& origin, const vec3& dest,const vec...
    function IntersectionTriTri (line 52) | bool IntersectionTriTri(const vec3& a, const vec3& b, const vec3& c, c...

FILE: src/VolumetricMeshRepair/tools/intersection_tri.h
  function namespace (line 33) | namespace CollisionAlgo

FILE: src/VolumetricMeshRepair/triang_cubic_meshing.cpp
  type Triangulators (line 33) | namespace Triangulators
    type weigh_parameters_t (line 35) | struct weigh_parameters_t
    function IsOutside (line 39) | inline bool IsOutside( const SpatialDiscretization::weight_t& weightVa...

FILE: src/VolumetricMeshRepair/triang_cubic_meshing.hpp
  type Triangulators (line 33) | namespace Triangulators
    class CubicTriangulator (line 35) | class CubicTriangulator : public BaseTriangulator
      method CubicTriangulator (line 38) | CubicTriangulator():BaseTriangulator() {}

FILE: src/VolumetricMeshRepair/triang_marching_cube.cpp
  type PolygoniseAlgo (line 30) | namespace PolygoniseAlgo
    function vec3 (line 50) | vec3 VertexInterp(const decimal& isolevel,const vec3& p1,const vec3& p...
    function Polygonise (line 369) | int Polygonise(const GRIDCELL& grid,const decimal& isolevel,TRIANGLE *...
  type Triangulators (line 449) | namespace Triangulators
    type weigh_parameters_t (line 451) | struct weigh_parameters_t
    function decimal (line 455) | inline decimal WeightEvaluation( const SpatialDiscretization::weight_t...
    function VariationWithinFourZ (line 462) | bool VariationWithinFourZ( const ivec2& zeroCell, ScalarFieldBuilders:...

FILE: src/VolumetricMeshRepair/triang_marching_cube.hpp
  type Triangulators (line 33) | namespace Triangulators
    class MarchingCubeTriangulator (line 35) | class MarchingCubeTriangulator : public BaseTriangulator
      method MarchingCubeTriangulator (line 38) | MarchingCubeTriangulator():BaseTriangulator() {}

FILE: src/VolumetricMeshRepair/triang_marching_tetra.cpp
  type PolygoniseAlgo (line 30) | namespace PolygoniseAlgo
    function XYZ (line 50) | XYZ VertexInterp(const decimal& isolevel,XYZ& p1,XYZ& p2,const decimal...
    function PolygoniseTri (line 101) | int PolygoniseTri(GRIDCELL g,decimal iso,
  type Triangulators (line 189) | namespace Triangulators

FILE: src/VolumetricMeshRepair/triang_marching_tetra.hpp
  type Triangulators (line 33) | namespace Triangulators
    class MarchingTetraTriangulator (line 35) | class MarchingTetraTriangulator : BaseTriangulator
      method MarchingTetraTriangulator (line 38) | MarchingTetraTriangulator():BaseTriangulator() {}

FILE: src/VolumetricMeshRepair/triangle_feeder.cpp
  function GetRangeIntersectedBoundingCubeByTri (line 54) | void GetRangeIntersectedBoundingCubeByTri(const SpatialDiscretization::c...
  type ScalarFieldBuilders (line 66) | namespace ScalarFieldBuilders

FILE: src/VolumetricMeshRepair/triangle_feeder.hpp
  type ScalarFieldBuilders (line 34) | namespace ScalarFieldBuilders
    class TriangleScalarFieldCreator (line 38) | class TriangleScalarFieldCreator : public ScalarFieldCreator

FILE: src/VolumetricMeshRepair/triangulator.cpp
  type Triangulators (line 36) | namespace Triangulators
    type MergeVerticesOperationObjects_t (line 50) | struct MergeVerticesOperationObjects_t
      method MergeVerticesOperationObjects_t (line 52) | MergeVerticesOperationObjects_t():verticesCount(0) {}
      method clear (line 56) | void clear()
    function hash_combine (line 65) | inline void hash_combine(std::size_t& seed, const T& v)
    function GetVectorHash (line 71) | std::size_t GetVectorHash(const vec3& vecToHash)
    function FindOrCreateVertices (line 78) | inline std::size_t FindOrCreateVertices(const vec3& vert, MergeVertice...
    function ProcessEdgeCollapse (line 143) | void ProcessEdgeCollapse(std::vector<std::list<std::size_t> >& vertice...
    function decimal (line 194) | decimal GetTriangleQuality(const vec3& A,const vec3& B,const vec3& C)
    function IsInterestingEdgeCollapse (line 206) | bool IsInterestingEdgeCollapse(const std::vector<vec3>& vertices,const...
    function MakeEdgeCollapseListByQuality (line 255) | void MakeEdgeCollapseListByQuality(const std::vector<ivec3>& faces,con...
    function GetTriNeigh (line 386) | void GetTriNeigh(const std::vector<std::list<std::size_t> > &verticeTo...
    function InVec (line 399) | bool InVec(const int& iTest,const ivec3& Vtest)

FILE: src/VolumetricMeshRepair/triangulator.hpp
  type Triangulators (line 40) | namespace Triangulators
    type MergeVerticesOperationObjects_t (line 42) | struct MergeVerticesOperationObjects_t
    class BaseTriangulator (line 43) | class BaseTriangulator
      method SetQualityConstraint (line 70) | void SetQualityConstraint(const decimal& _quality_constraint) { qual...
      method SetMergeQualityConstraint (line 71) | void SetMergeQualityConstraint(const decimal& _merge_quality_constra...
      method SetVerbose (line 72) | void SetVerbose(bool _verbose=true) { verbose=_verbose; }

FILE: src/ctr/TC_CalculationCore.cpp
  function isTransparent (line 11) | bool isTransparent(const t_cFace& faceInfo)
  function decimal (line 87) | decimal CalculationCore::Get_A_Sabine ( entier idFreq )
  function decimal (line 104) | decimal CalculationCore::Get_A_Eyring ( entier idFreq )
  function decimal (line 135) | decimal CalculationCore::Get_TR_( decimal A, entier idFreq )
  function decimal (line 142) | decimal CalculationCore::Get_L_lin( decimal A, entier idFreq )
  function decimal (line 156) | decimal CalculationCore::Get_L( decimal L_lin )
  function decimal (line 160) | decimal CalculationCore::Get_Champ_Direct_Lin( entier idFreq, vec3 posit...
  function decimal (line 181) | decimal CalculationCore::Get_Recepteur_P_Direct( decimal  Champ_Direct_L...
  function decimal (line 185) | decimal CalculationCore::Get_Recepteur_P_Champ_Total ( decimal  Champ_Di...
  function decimal (line 189) | decimal CalculationCore::Get_Recepteur_S_Direct( decimal  Champ_Direct_L...
  function decimal (line 194) | decimal CalculationCore::Get_Recepteur_S_Champ_Total ( decimal  Champ_Di...
  function decimal (line 199) | decimal CalculationCore::Get_Volume_Scene( )

FILE: src/ctr/TC_CalculationCore.h
  function class (line 18) | class CalculationCore

FILE: src/ctr/data_manager/core_configuration.h
  function class (line 17) | class Core_Configuration : public Base_Core_Configuration

FILE: src/ctr/input_output/reportmanager.h
  function class (line 17) | class ReportManager : public BaseReportManager

FILE: src/ctr/main_tc.cpp
  type t_ToolBox (line 13) | struct t_ToolBox
  function MainProcess (line 23) | int MainProcess(int argc, char* argv[])
  function main (line 160) | int main(int argc, char* argv[])

FILE: src/ctr/tcTypes.h
  type MODE_CALCUL (line 12) | enum MODE_CALCUL
  type t_calculation_property (line 20) | struct  t_calculation_property
  type t_calculation_mode (line 31) | struct  t_calculation_mode
  function class (line 39) | class t_mainData
  type t_calculationParameters (line 60) | struct t_calculationParameters
  type t_rp_calculation_property (line 69) | struct t_rp_calculation_property
  type t_rp_freq (line 77) | struct t_rp_freq
  function class (line 88) | class t_TC_RecepteurPonctuel

FILE: src/isimpa/3dengine/ArcBall.h
  type Tuple2fT (line 37) | typedef union Tuple2f_t
  type Tuple3fT (line 47) | typedef union Tuple3f_t
  type Tuple4fT (line 57) | typedef union Tuple4f_t
  type Matrix3fT (line 67) | typedef union Matrix3f_t
  type Matrix4fT (line 85) | typedef union Matrix4f_t
  function Point2fAdd (line 132) | inline
  function Point2fSub (line 145) | inline
  function Vector3fCross (line 159) | inline
  function Vector3fDot (line 181) | inline
  function Vector3fLengthSquared (line 195) | inline
  function Vector3fLength (line 209) | inline
  function Matrix3fSetZero (line 217) | inline
  function Matrix3fSetIdentity (line 228) | inline
  function Matrix3fSetRotationFromQuat4f (line 245) | inline
  function Matrix3fMulMatrix3f (line 274) | inline
  function Matrix4fSetRotationScaleFromMatrix4f (line 298) | inline
  function Matrix4fSVD (line 315) | inline
  function Matrix4fSetRotationScaleFromMatrix3f (line 396) | inline
  function Matrix4fMulRotationScale (line 406) | inline
  function Matrix4fSetRotationFromMatrix3f (line 426) | inline
  function class (line 441) | class ArcBall_t

FILE: src/isimpa/3dengine/Camera.h
  function class (line 54) | class CameraControler

FILE: src/isimpa/3dengine/Core/3ds.cpp
  type format3DS (line 32) | namespace format3DS

FILE: src/isimpa/3dengine/Core/3ds.h
  function namespace (line 45) | namespace format3DS
  function class (line 138) | class CLoad3DS

FILE: src/isimpa/3dengine/Core/Animator.cpp
  function wxString (line 72) | wxString Animator::GetRendererLabel()
  function wxString (line 76) | const wxString& Animator::GetRendererName()

FILE: src/isimpa/3dengine/Core/Animator.hpp
  class Animator (line 52) | class Animator

FILE: src/isimpa/3dengine/Core/Asc.cpp
  type formatASC (line 31) | namespace formatASC

FILE: src/isimpa/3dengine/Core/Asc.h
  function namespace (line 41) | namespace formatASC

FILE: src/isimpa/3dengine/Core/Material.h
  type SMaterial (line 47) | struct SMaterial
  function class (line 67) | class CMaterial

FILE: src/isimpa/3dengine/Core/Mathlib.h
  function class (line 40) | class coordsOperation
  function GetRandValue (line 76) | inline float GetRandValue()

FILE: src/isimpa/3dengine/Core/Model3D.h
  function class (line 47) | class t_faceIndex {
  function Set (line 58) | void Set(long _face,long _group) { f=_face;g=_group; }
  function Set (line 59) | void Set(const t_faceIndex *_faceIndex) { f=_faceIndex->f;g=_faceIndex->...
  function Set (line 60) | void Set(const t_faceIndex &_faceIndex) { f=_faceIndex.f;g=_faceIndex.g;}
  function IsOk (line 61) | bool IsOk() { if(f ==-1 || g==-1) return false; else return true; }
  type triangleFace (line 70) | struct triangleFace {
  type tetraface (line 79) | struct tetraface
  type tetrahedre (line 89) | struct tetrahedre
  type t_cutPlane (line 101) | struct t_cutPlane{

FILE: src/isimpa/3dengine/Core/Nff.cpp
  type formatNFF (line 32) | namespace formatNFF

FILE: src/isimpa/3dengine/Core/Nff.h
  function namespace (line 43) | namespace formatNFF

FILE: src/isimpa/3dengine/Core/Objet3D.cpp
  function DrawBox (line 66) | void DrawBox(const vec3& center,const float& halfsize)
  function GLfloat (line 107) | static GLfloat Max(GLfloat a, GLfloat b)
  function GLfloat (line 114) | static GLfloat Abs(GLfloat f)
  function t_faceIndex (line 120) | t_faceIndex GetSideFace(t_faceIndex currentFace,ivec2 side, const std::v...
  function SetDiffSideValue (line 137) | void SetDiffSideValue( SFace3D* CurrentFace, SFace3D* Neighboor, int sid...
  function t_faceIndex (line 312) | t_faceIndex CObjet3D::FindFaceGroupWithFaceIndex(long face)
  function AppendCoplanarFace (line 1397) | void AppendCoplanarFace( const float& coplanarEpsilon, std::vector<vec3>...
  function t_faceIndex (line 1497) | t_faceIndex CObjet3D::SelectVertex(float x,float y, float z)
  function SFace3D (line 1622) | const SFace3D& CObjet3D::GetFace(t_faceIndex faceid)

FILE: src/isimpa/3dengine/Core/Objet3D.h
  function class (line 66) | class CObjet3D

FILE: src/isimpa/3dengine/Core/Objet3D_maillage.cpp
  function Contains (line 43) | inline bool Contains(long& index, ivec3& rightIndex)
  function Vec3Contains (line 48) | bool Vec3Contains(ivec3& leftIndex, ivec3& rightIndex)
  function LoadNodeFile (line 54) | bool LoadNodeFile(vec4 UnitizeVar, vec3** tabNodes, unsigned long& nodes...
  function LoadEleFile (line 117) | bool LoadEleFile(tetrahedre** tabTetra, unsigned long& tabTetraSize, wxS...
  type t_sommet (line 197) | struct t_sommet
  function LoadFaceListe (line 202) | bool LoadFaceListe(std::vector<ivec3>& tabFace, wxString faceFilePath)
  function LoadFaceListeWithMarkers (line 251) | bool LoadFaceListeWithMarkers(std::vector<ivec4>& tabFace, const std::st...
  function LoadFaceFile (line 308) | bool LoadFaceFile(tetrahedre** tabTetra, unsigned long& tabTetraSize, wx...
  function LoadNeighFile (line 396) | bool LoadNeighFile(tetrahedre** tabTetra, unsigned long& tabTetraSize, w...

FILE: src/isimpa/3dengine/Core/Particules.cpp
  function wxString (line 61) | wxString ParticulesControler::GetRendererLabel()

FILE: src/isimpa/3dengine/Core/Particules.h
  function class (line 57) | class ParticulesControler : public Animator
  type t_p_legends (line 167) | struct t_p_legends

FILE: src/isimpa/3dengine/Core/Recepteurs_ponctuel_intensity.cpp
  function wxString (line 49) | wxString RecepteursPControler::GetRendererLabel()

FILE: src/isimpa/3dengine/Core/Recepteurs_ponctuel_intensity.hpp
  class RecepteursPControler (line 49) | class RecepteursPControler : public Animator
    type t_p_legends (line 53) | struct t_p_legends
      method t_p_legends (line 57) | t_p_legends()
    type RecepteurPData_t (line 63) | struct RecepteurPData_t
      method RecepteurPData_t (line 65) | RecepteurPData_t(){ this->min=0;this->max=0;}

FILE: src/isimpa/3dengine/Core/Recepteurs_surfacique.cpp
  type RecepteurSUpdater (line 47) | struct RecepteurSUpdater : public t_baseEvtCatcher
    method RecepteurSUpdater (line 49) | RecepteurSUpdater(Element* _rsPrefItem,RecepteursSControler* _recepteu...
    method OnModified (line 54) | virtual void OnModified(const int& elid)
  function wxString (line 74) | wxString RecepteursSControler::GetRendererLabel()
  function wxFloat32 (line 154) | wxFloat32 RecepteursSControler::ComputeBestIsoInterval(wxFloat32 vmin, w...
  function vec4 (line 559) | vec4 RecepteursSControler::GetColor(const float& val)

FILE: src/isimpa/3dengine/Core/Recepteurs_surfacique.h
  function class (line 49) | class RecepteursSControler : public Animator
  type t_nodeS (line 149) | struct t_nodeS
  type t_isocurves (line 156) | struct t_isocurves
  type t_recepteurS (line 161) | struct t_recepteurS
  type t_rs_legends (line 168) | struct t_rs_legends
  type const_size_legend (line 181) | enum const_size_legend

FILE: src/isimpa/3dengine/Core/Texture.h
  type TextureInfo (line 48) | struct TextureInfo

FILE: src/isimpa/3dengine/Core/bin.cpp
  type formatBIN (line 35) | namespace formatBIN
    function binaryColor (line 276) | binaryColor CformatBIN::GetColorFromVector(vec4 colorInfo)
    function vec4 (line 282) | vec4 CformatBIN::GetVectorFromColor(binaryColor colorInfo)

FILE: src/isimpa/3dengine/Core/bin.h
  function namespace (line 44) | namespace formatBIN

FILE: src/isimpa/3dengine/Core/mesh.cpp
  type formatMESH (line 33) | namespace formatMESH

FILE: src/isimpa/3dengine/Core/mesh.h
  function namespace (line 43) | namespace formatMESH

FILE: src/isimpa/3dengine/Core/stl.cpp
  type formatSTL (line 34) | namespace formatSTL
    function equal_strings (line 135) | int equal_strings(char *s1, char *s2)
    function ToInt (line 150) | int ToInt(const char* charArray)
    function ToFloat (line 155) | float ToFloat(const char* charArray)
    type words_destroyer (line 182) | struct words_destroyer
      method words_destroyer (line 184) | words_destroyer(char **_words):words(_words){}

FILE: src/isimpa/3dengine/Core/stl.hpp
  type formatSTL (line 39) | namespace formatSTL
    type t_face (line 45) | struct t_face
      method t_face (line 47) | t_face()
      method t_face (line 49) | t_face(const ivec3& sommets)
    type t_model (line 59) | struct t_model
    class CStl (line 69) | class CStl

FILE: src/isimpa/3dengine/Core/var.cpp
  type formatVAR (line 32) | namespace formatVAR

FILE: src/isimpa/3dengine/Core/var.h
  function namespace (line 42) | namespace formatVAR

FILE: src/isimpa/3dengine/GlBitmapSurface.cpp
  type legendRendering (line 42) | namespace legendRendering
    type Edge (line 44) | enum Edge

FILE: src/isimpa/3dengine/GlBitmapSurface.h
  function namespace (line 46) | namespace legendRendering

FILE: src/isimpa/3dengine/OpenGLApp.cpp
  function CameraControler (line 132) | CameraControler* OpenGLApp::GetUserCam(void)
  function t_faceIndex (line 276) | t_faceIndex OpenGLApp::SelectVertex(unsigned int x, unsigned int y) //re...
  function vec3 (line 307) | vec3 OpenGLApp::SelectPosition(unsigned int x, unsigned int y)

FILE: src/isimpa/3dengine/OpenGLApp.h
  type AnimatorManager (line 47) | struct AnimatorManager
  type smart_ptr (line 65) | typedef smart_ptr<AnimatorManager> ptAnimatorManager;
  type std (line 66) | typedef std::list<ptAnimatorManager>::iterator AnimatorManagerIterator;
  type t_renderMode (line 80) | enum t_renderMode
  function IsObjetLoaded (line 165) | bool IsObjetLoaded(void) {return m_IsObjetLoaded;}
  function GetRotX (line 167) | float GetRotX(void) {return m_Rot.x;}
  function GetRotY (line 168) | float GetRotY(void) {return m_Rot.y;}
  function GetRotZ (line 169) | float GetRotZ(void) {return m_Rot.z;}
  function GetTransX (line 171) | float GetTransX(void) {return m_Trans.x;}
  function GetTransY (line 172) | float GetTransY(void) {return m_Trans.y;}
  function GetTransZ (line 173) | float GetTransZ(void) {return m_Trans.z;}
  function GetFocalX (line 175) | float GetFocalX(void) {return m_Focal.x;}
  function GetFocalY (line 176) | float GetFocalY(void) {return m_Focal.y;}
  function GetFocalZ (line 177) | float GetFocalZ(void) {return m_Focal.z;}

FILE: src/isimpa/3dengine/OpenGlViewer.cpp
  function CheckGLError (line 52) | static void CheckGLError()
  function wxSize (line 258) | wxSize GetDPIScaledSize(wxWindow* window)

FILE: src/isimpa/3dengine/OpenGlViewer.h
  function class (line 48) | class OpenGlViewer: public wxGLCanvas

FILE: src/isimpa/3dengine/legendFonts.cpp
  type legendRendering (line 35) | namespace legendRendering
    function wxSize (line 144) | wxSize legendText::GetTextSize(const wxString& text)

FILE: src/isimpa/3dengine/legendFonts.h
  function namespace (line 42) | namespace legendRendering

FILE: src/isimpa/3dengine/legendObject.cpp
  type legendRendering (line 33) | namespace legendRendering
    function FGL_BYTE (line 96) | FGL_BYTE* legendObject::GetRawData()
    function legendCfg (line 100) | const legendCfg& legendObject::GetCfg()

FILE: src/isimpa/3dengine/legendObject.h
  function namespace (line 37) | namespace legendRendering

FILE: src/isimpa/3dengine/temporaire/collision.h
  function namespace (line 32) | namespace collision_manager

FILE: src/isimpa/3dengine/tools/extruder.cpp
  type ui_tools (line 32) | namespace ui_tools

FILE: src/isimpa/3dengine/tools/extruder.h
  function namespace (line 40) | namespace ui_tools

FILE: src/isimpa/3dengine/tools/intersection_seeker.cpp
  type ui_tools (line 39) | namespace ui_tools
    function t_faceIndex (line 169) | t_faceIndex IntersectionSeeker::GetSingleCollision( vec3 position )

FILE: src/isimpa/3dengine/tools/intersection_seeker.h
  function namespace (line 43) | namespace ui_tools

FILE: src/isimpa/3dengine/tools/opengl_test.cpp
  type gltest (line 33) | namespace gltest
    function gltIsExtSupported (line 38) | int gltIsExtSupported(const char *extension)

FILE: src/isimpa/3dengine/tools/opengl_test.hpp
  type gltest (line 32) | namespace gltest

FILE: src/isimpa/3dengine/tools/recepteursurf_difference.hpp
  class RecepteurSurfAttenuationComputation (line 48) | class RecepteurSurfAttenuationComputation
    type t_rs_face (line 56) | struct t_rs_face
    type t_r_surfprocess (line 60) | struct t_r_surfprocess
    type t_process_data (line 64) | struct t_process_data

FILE: src/isimpa/ConvertUTF.c
  function ConversionResult (line 62) | ConversionResult ConvertUTF32toUTF16 (
  function ConversionResult (line 111) | ConversionResult ConvertUTF16toUTF32 (
  function ConversionResult (line 215) | ConversionResult ConvertUTF16toUTF8 (
  function Boolean (line 296) | static Boolean isLegalUTF8(const UTF8 *source, int length) {
  function Boolean (line 327) | Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
  function ConversionResult (line 337) | ConversionResult ConvertUTF8toUTF16 (
  function ConversionResult (line 410) | ConversionResult ConvertUTF32toUTF8 (
  function ConversionResult (line 463) | ConversionResult ConvertUTF8toUTF32 (

FILE: src/isimpa/ConvertUTF.h
  type UTF32 (line 92) | typedef unsigned long	UTF32;
  type UTF16 (line 93) | typedef unsigned short	UTF16;
  type UTF8 (line 94) | typedef unsigned char	UTF8;
  type Boolean (line 95) | typedef unsigned char	Boolean;
  type ConversionResult (line 104) | typedef enum {
  type ConversionFlags (line 111) | typedef enum {

FILE: src/isimpa/IHM/AboutDialog.hpp
  class AboutDialog (line 44) | class AboutDialog: public wxPropertySheetDialog

FILE: src/isimpa/IHM/ComboTreeCtrl.cpp
  function wxSize (line 60) | wxSize ComboTreeCtrl::GetAdjustedSize( int minWidth,
  function wxWindow (line 67) | wxWindow *ComboTreeCtrl::GetControl() { return this; }
  function Element (line 69) | Element* ComboTreeCtrl::GetElementSelection() const
  function wxTreeItemId (line 80) | wxTreeItemId ComboTreeCtrl::Associate(const wxTreeItemId& newElId,Elemen...
  function wxString (line 123) | wxString ComboTreeCtrl::GetStringValue() const

FILE: src/isimpa/IHM/ComboTreeCtrl.h
  type cont_El (line 88) | struct cont_El

FILE: src/isimpa/IHM/DataWindow.h
  function class (line 46) | class DataWindow : public wxAuiNotebook

FILE: src/isimpa/IHM/DialogDiagramCreator.cpp
  type ID_PANEL_CONTROL (line 45) | enum ID_PANEL_CONTROL
  function FillComboBox (line 55) | void FillComboBox( wxComboBox* lstBox, sgSpace::StyleArray* dataSrc )
  function wxCheckBox (line 62) | wxCheckBox* GetCheckBox( wxWindow* containerWin, ID_PANEL_CONTROL contro...
  function wxRadioBox (line 66) | wxRadioBox* GetRadioBox( wxWindow* containerWin, ID_PANEL_CONTROL contro...
  function wxTextCtrl (line 70) | wxTextCtrl* GetTextCtrl( wxWindow* containerWin, ID_PANEL_CONTROL contro...
  function wxComboBox (line 75) | wxComboBox* GetComboBox( wxWindow* containerWin, ID_PANEL_CONTROL contro...
  function wxPanel (line 139) | wxPanel* BuildGraphSheetDialog::CreateMainSettingsPage(wxWindow* parent)

FILE: src/isimpa/IHM/DialogDiagramCreator.h
  function class (line 42) | class BuildGraphSheetDialog : public wxPropertySheetDialog

FILE: src/isimpa/IHM/GabeDataGrid.hpp
  class wxGridMixedTable (line 54) | class wxGridMixedTable : public wxGridStringTable
  class GabeDataGrid (line 85) | class GabeDataGrid: public PropGrid
    type GABE_EVENT_MENU (line 89) | enum GABE_EVENT_MENU

FILE: src/isimpa/IHM/MainPropGrid.cpp
  function GridSortPredicate (line 45) | bool GridSortPredicate(Element* lEl,Element* rEl)
  type MainPropGridWitness (line 50) | struct MainPropGridWitness : public t_outsideOperator
    method MainPropGridWitness (line 52) | MainPropGridWitness(MainPropGrid* _propertygrid,const int& _xmlId)
  function wxTreeItemId (line 224) | wxTreeItemId MainPropGrid::GetTreeIdElementOpen()

FILE: src/isimpa/IHM/MainPropGrid.h
  function class (line 52) | class MainPropGrid: public PropGrid

FILE: src/isimpa/IHM/PropGrid.cpp
  function PropGridSplitString (line 53) | void PropGridSplitString(wxString src,wxString delimiter,wxArrayString& ...

FILE: src/isimpa/IHM/PropGrid.h
  type EVENT_MENU (line 52) | enum EVENT_MENU
  type t_selection (line 60) | struct t_selection

FILE: src/isimpa/IHM/RecepteurSOperationDialog.cpp
  function E_Report_File (line 126) | E_Report_File* PanelReferenceSelection::GetSelectedReportFile()
  function wxWizardPage (line 322) | wxWizardPage* PageOtherRecepeurSurfSelection::GetNext() const

FILE: src/isimpa/IHM/RecepteurSOperationDialog.h
  function class (line 48) | class RecepteurSelectionWizard : public wxWizard
  type WIZARDCTRL (line 91) | enum WIZARDCTRL
  type WIZARDRSCTRL (line 103) | enum WIZARDRSCTRL
  type WIZARDRSCTRL (line 128) | enum WIZARDRSCTRL

FILE: src/isimpa/IHM/WizardRemeshModel.cpp
  type ModelReconstructionUI (line 55) | namespace ModelReconstructionUI
    function wxControl (line 76) | wxControl* PageOneQualityParameters::AddCtrl(wxControl* newCtrl,const ...
    function wxWizardPage (line 264) | wxWizardPage* PageTwoVolumeSelection::GetNext() const

FILE: src/isimpa/IHM/WizardRemeshModel.hpp
  type ReconstructionUserPreferences_t (line 48) | struct ReconstructionUserPreferences_t
    method ReconstructionUserPreferences_t (line 50) | ReconstructionUserPreferences_t()
    type TRIANGULATION_METHOD (line 60) | enum TRIANGULATION_METHOD
    type ADAPTATIVE_MESH_METHOD (line 66) | enum ADAPTATIVE_MESH_METHOD
    type MESH_SIMPLIFICATION_METHOD (line 72) | enum MESH_SIMPLIFICATION_METHOD
  class ModelReconstructionManagerBase (line 85) | class ModelReconstructionManagerBase
  function wxWizardPage (line 108) | wxWizardPage *GetFirstPage() { return m_page1; }
  function ModelReconstructionManagerBase (line 109) | ModelReconstructionManagerBase* GetModelReconstructionManager() { return...
  type WIZARD_CTRL (line 132) | enum WIZARD_CTRL
  class PageTwoVolumeSelection (line 149) | class PageTwoVolumeSelection : public wxWizardPageSimple
    type WIZARD_CTRL (line 160) | enum WIZARD_CTRL

FILE: src/isimpa/IHM/base64.cpp
  function wxString (line 23) | wxString wxBase64::Encode(const wxUint8* pData, size_t len)
  function wxString (line 72) | wxString wxBase64::Decode(const wxString& data)

FILE: src/isimpa/IHM/base64.h
  function class (line 24) | class wxBase64

FILE: src/isimpa/IHM/customItem/uimenuitem.cpp
  function wxString (line 43) | wxString wxUiMenuItem::GetBitmapPath()

FILE: src/isimpa/IHM/customItem/uimenuitem.hpp
  class wxUiMenuItem (line 26) | class wxUiMenuItem : public wxMenuItem

FILE: src/isimpa/IHM/customRenderer/gridcellgabefloatrenderer.cpp
  function wxGridCellRenderer (line 46) | wxGridCellRenderer *wxGridCellGabeFloatRenderer::Clone() const
  function wxString (line 53) | wxString wxGridCellGabeFloatRenderer::GetString(const wxGrid& grid, int ...
  function wxSize (line 114) | wxSize wxGridCellGabeFloatRenderer::GetBestSize(wxGrid& grid,

FILE: src/isimpa/IHM/customRenderer/gridcellgabefloatrenderer.hpp
  class wxGridCellGabeFloatRenderer (line 34) | class wxGridCellGabeFloatRenderer : public wxGridCellStringRenderer
    method GetPrecision (line 40) | int GetPrecision() const { return m_precision; }
    method SetPrecision (line 41) | void SetPrecision(int precision)

FILE: src/isimpa/IHM/customdialog/customdlg.h
  function class (line 51) | class wxCustomEntryDialog : public wxDialog

FILE: src/isimpa/IHM/languageSelection.cpp
  type WindowLanguageSelectorId (line 45) | enum WindowLanguageSelectorId {
  class wxDirList (line 49) | class wxDirList : public wxDirTraverser {
    method wxDirList (line 51) | wxDirList(std::vector<wxString> &_folderlst) : folderlst(_folderlst) {
    method wxDirTraverseResult (line 54) | virtual wxDirTraverseResult OnFile(const wxString &filename) {
    method wxDirTraverseResult (line 58) | virtual wxDirTraverseResult OnDir(const wxString &dirname) {

FILE: src/isimpa/IHM/languageSelection.hpp
  class LanguageSelector (line 35) | class LanguageSelector  : public wxDialog

FILE: src/isimpa/IHM/loadingSceneDialog.cpp
  type SL_CTRLS_ID (line 62) | enum SL_CTRLS_ID
  function wxString (line 207) | wxString sceneLoadOptionDialog::GetMeshParameters()

FILE: src/isimpa/IHM/loadingSceneDialog.hpp
  class sceneLoadOptionDialog (line 46) | class sceneLoadOptionDialog : public wxDialog

FILE: src/isimpa/IHM/pyConsole.hpp
  class PyConsole (line 41) | class PyConsole : public wxPanel
    method wxTextCtrl (line 56) | wxTextCtrl* GetOutputControl() { return m_outputCtrl; }

FILE: src/isimpa/IHM/simpleGraph.cpp
  type sgSpace (line 47) | namespace sgSpace
    function wxFloat32 (line 49) | wxFloat32 ComputeBestTickInterval(wxFloat32 vmin, wxFloat32 vmax)
    function GetRandValue (line 91) | inline float GetRandValue()
    function isInside (line 95) | inline bool isInside(const wxRealPoint& areaMin, const wxRealPoint& ar...
    function isIntersect (line 99) | inline bool isIntersect(const wxRect& areaOne, const wxRect& areaTwo)
    function isIntersect (line 103) | inline bool isIntersect(const wxRealPoint& areaOneD, const wxRealPoint...
    function wxRealPoint (line 107) | wxRealPoint GetPointCoordAfterRotation(const wxRealPoint& BasePoint, c...
    function GetRotatedTextCorners (line 115) | void GetRotatedTextCorners(wxSize baseTextSize, wxFloat32 rotationDegr...
    function wxSize (line 130) | wxSize GetRotatedTextExtent(wxSize baseTextSize, wxFloat32 rotationDeg...
    function wxString (line 142) | wxString EscapeDelimiters(const wxString& s)
    function wxString (line 165) | wxString RetrieveDelimiters(const wxString& s)
    function wxInt64 (line 172) | wxInt64 ToInt(const wxString& sval)
    function ToFloat (line 178) | bool ToFloat(const wxString& sval, wxFloat32* floatVal)
    function SplitString (line 191) | void SplitString(const wxString& src, const wxString& delimiter, wxArr...
    function wxString (line 229) | wxString SG_El_Params::Serialize()
    function wxFont (line 310) | const wxFont& SG_El_Params::GetFont()
    function wxFloat32 (line 329) | wxFloat32 SG_El_Params::GetTextRotation()
    function wxPen (line 333) | const wxPen& SG_El_Params::GetPen()
    function wxBrush (line 338) | const wxBrush& SG_El_Params::GetBrush()
    function DRAWING_METHOD (line 343) | DRAWING_METHOD SG_El_Params::GetDrawingMethod()
    function DRAWING_MARKER (line 368) | DRAWING_MARKER SG_El_Params::GetDrawingMarker()
    function wxColour (line 389) | const wxColour& SG_El_Params::GetTextForeGroundColor()
    function wxColour (line 393) | const wxColour& SG_El_Params::GetTextBackGroundColor()
    function wxInt32 (line 435) | const wxInt32& SG_Params::GetCfg(I_PARAM indice)
    function wxFloat32 (line 444) | const wxFloat32& SG_Params::GetCfg(F_PARAM indice)
    function wxSize (line 484) | wxSize SG_Element::GetBestSize() const
    function wxString (line 496) | wxString  SG_Element::GetLabel() const
    function wxInt32 (line 539) | wxInt32 SG_Element_Data::GetSize()
    function wxFloat32 (line 556) | wxFloat32 SG_Element_Data::PushStringValue(const wxString& xx, const w...
    function wxSize (line 621) | wxSize SG_Element_Axis::GetBestSize() const
    function wxString (line 631) | wxString SG_Element_Axis::GetTextValue(const wxFloat32& realValue, boo...
    function wxString (line 685) | wxString SG_Element_Axis::GetLabel() const
    function wxString (line 823) | wxString SG_Element_Axis_Labeled::GetTextValue(const wxFloat32& realVa...
    function SG_Params (line 875) | SG_Params* SG_Renderer::GetMainStyle()
    function wxSize (line 880) | wxSize SG_Renderer::GetTextDeviceSize(const wxString& textString)
    function wxSize (line 1220) | wxSize SG_Renderer::GetDeviceSize()
    function wxFloat32 (line 1224) | wxFloat32  SG_Renderer::GetXOffset()
    function wxFloat32 (line 1228) | wxFloat32  SG_Renderer::GetYOffset()
    function wxPoint (line 1232) | wxPoint SG_Renderer::LogicalToDeviceCoord(wxFloat32 xx, wxFloat32 yy)
    function wxRealPoint (line 1240) | wxRealPoint SG_Renderer::DeviceToLogicalCoord(wxInt32 xx, wxInt32 yy)
    function wxSize (line 1486) | wxSize SG_Area::DoGetBestSize() const
    function LEGEND_PLACEMENT (line 1540) | LEGEND_PLACEMENT  SG_Legend::GetLegendPlacement() const {
    function wxSize (line 1554) | wxSize SG_Legend::DoGetBestSize() const
    function wxInt32 (line 1687) | wxInt32 simpleGraph::AddDrawingElement(SG_Element* drawingEl)
    function wxSizer (line 1712) | wxSizer* simpleGraph::GetSizer(LEGEND_PLACEMENT whereToInsert)
    function SG_Element (line 1776) | SG_Element* simpleGraph::GetDrawingElement(wxInt32 indexEl)

FILE: src/isimpa/IHM/simpleGraph.h
  type I_PARAM (line 67) | enum I_PARAM
  type B_PARAM (line 83) | enum B_PARAM
  type F_PARAM (line 95) | enum F_PARAM
  type AREA_TYPE (line 111) | enum AREA_TYPE
  type DRAWING_METHOD (line 121) | enum DRAWING_METHOD
  type DRAWING_MARKER (line 139) | enum DRAWING_MARKER
  type LEGEND_PLACEMENT (line 151) | enum LEGEND_PLACEMENT
  function class (line 162) | class SG_Params
  function class (line 226) | class SG_El_Params
  function class (line 363) | class SG_Renderer
  function virtual (line 465) | virtual ~SG_Element(){}
  function virtual (line 500) | virtual wxSize GetBestSize() const;
  function class (line 560) | class SG_Element_List : public SG_Element_Data
  function virtual (line 588) | virtual wxSize GetBestSize() const;
  function wxSize (line 678) | wxSize DoGetBestSize() const override;

FILE: src/isimpa/IHM/simpleGraphArrays.h
  function namespace (line 37) | namespace sgSpace

FILE: src/isimpa/IHM/simpleGraphDialogs.cpp
  type t_CurrentModification (line 55) | struct t_CurrentModification
    method t_CurrentModification (line 57) | t_CurrentModification( wxInt32 _elIndex,SG_El_Params _elStyle,const wx...
  type MAIN_PROPERTY_TYPE (line 68) | enum MAIN_PROPERTY_TYPE
  type MAIN_PROPERTY_GRID_ELEMENT (line 77) | struct MAIN_PROPERTY_GRID_ELEMENT
    method MAIN_PROPERTY_GRID_ELEMENT (line 79) | MAIN_PROPERTY_GRID_ELEMENT(MAIN_PROPERTY_TYPE _propertyType,wxInt32 _p...
  type ID_CURVE_CONTROL (line 88) | enum ID_CURVE_CONTROL
  class SG_SampleArea (line 114) | class SG_SampleArea : public wxControl
    method SG_SampleArea (line 117) | SG_SampleArea(wxWindow *parent,SG_PropertySheetDialog* _mainParent, wx...
    method wxSize (line 136) | wxSize DoGetBestSize() const
    method RefreshDrawingArea (line 140) | void RefreshDrawingArea()
    method OnPaint (line 159) | void OnPaint( wxPaintEvent &event )
    method FillComboBox (line 187) | void FillComboBox( wxComboBox* lstBox, StyleArray* dataSrc )
    method wxComboBox (line 196) | wxComboBox* GetComboBox( wxWindow* containerWin, ID_CURVE_CONTROL cont...
    method wxCheckBox (line 200) | wxCheckBox* GetCheckBox( wxWindow* containerWin, ID_CURVE_CONTROL cont...
    method wxSpinCtrl (line 204) | wxSpinCtrl* GetSpinCtrl( wxWindow* containerWin, ID_CURVE_CONTROL cont...
    method wxTextCtrl (line 208) | wxTextCtrl* GetTextCtrl( wxWindow* containerWin, ID_CURVE_CONTROL cont...
    method SG_SampleArea (line 212) | SG_SampleArea* GetStaticBox( wxWindow* containerWin, ID_CURVE_CONTROL ...
    method SortByPropertyLabels (line 241) | int SortByPropertyLabels(MAIN_PROPERTY_GRID_ELEMENT **first, MAIN_PROP...
    method wxPanel (line 504) | wxPanel* SG_PropertySheetDialog::CreateGeneralSettingsPage(wxWindow* p...
    method wxPanel (line 668) | wxPanel* SG_PropertySheetDialog::CreateCurvesSettingsPage(wxWindow* pa...

FILE: src/isimpa/IHM/simpleGraphDialogs.h
  function namespace (line 41) | namespace sgSpace

FILE: src/isimpa/IHM/simpleGraphEnumerators.cpp
  type sgSpace (line 34) | namespace sgSpace
    function wxString (line 49) | const wxString& SG_EnumeratorFiller::FindStringWithIndex( StyleArray* ...

FILE: src/isimpa/IHM/simpleGraphEnumerators.h
  function namespace (line 36) | namespace sgSpace

FILE: src/isimpa/IHM/simpleGraphManager.cpp
  type sgSpace (line 39) | namespace sgSpace
    function wxBitmap (line 97) | wxBitmap MainSimpleGraphWindow::GetAreaBitmap()

FILE: src/isimpa/IHM/simpleGraphManager.h
  function namespace (line 44) | namespace sgSpace

FILE: src/isimpa/IHM/uiTreeCtrl.cpp
  class ElementLinkWithTree (line 56) | class ElementLinkWithTree : public wxTreeItemData
    method ElementLinkWithTree (line 59) | ElementLinkWithTree()
    method ElementLinkWithTree (line 64) | ElementLinkWithTree(Element* ellink)
    method SetElement (line 69) | void SetElement(Element* ellink)
    method Element (line 73) | Element* GetElement()
  type UiTreeWitness (line 85) | struct UiTreeWitness : public t_outsideOperator
    method UiTreeWitness (line 87) | UiTreeWitness(uiTreeCtrl* _treectrl,smart_ptr<bool>& _alive,const wxTr...
  function wxTreeItemId (line 589) | wxTreeItemId uiTreeCtrl::GetSelection() const
  function wxInt32 (line 755) | wxInt32 uiTreeCtrl::GetXmlId(const wxTreeItemId& itemId)
  function Element (line 767) | Element* uiTreeCtrl::GetElement(const wxTreeItemId& itemId)

FILE: src/isimpa/IHM/uiTreeCtrl.h
  function class (line 54) | class uiTreeCtrl : public wxTreeCtrl

FILE: src/isimpa/UtfConverter.cpp
  type UtfConverter (line 32) | namespace UtfConverter
    function FromUtf8 (line 34) | std::wstring FromUtf8(const std::string& utf8string)
    function ToUtf8 (line 82) | std::string ToUtf8(const std::wstring& widestring)

FILE: src/isimpa/UtfConverter.h
  function namespace (line 42) | namespace UtfConverter

FILE: src/isimpa/data_manager/appconfig.cpp
  function wxXmlNode (line 253) | wxXmlNode* ApplicationConfiguration::GetAppSpectreNode()
  function wxFileConfig (line 266) | wxFileConfig* ApplicationConfiguration::GetFileConfig()
  function vec3 (line 291) | vec3 ApplicationConfiguration::GetVecParam(VECPARAM_ELEMENT param)
  function Element (line 323) | Element* ApplicationConfiguration::GetRootScene()
  function E_GammeFrequence (line 345) | E_GammeFrequence* ApplicationConfiguration::GetSpectrum(int idSpectre,El...
  function E_Materiau (line 448) | E_Materiau* ApplicationConfiguration::GetMateriau(int idMateriau)
  function wxXmlNode (line 499) | wxXmlNode* ApplicationConfiguration::GetAppMateriauNode()
  function E_Directivity (line 547) | E_Directivity* ApplicationConfiguration::GetDirectivity(int idDirectivity)
  function wxString (line 613) | wxString ApplicationConfiguration::getResourcesFolder() {
  function wxString (line 622) | wxString ApplicationConfiguration::getApplicationFolder() {
  function wxXmlNode (line 643) | wxXmlNode* ApplicationConfiguration::GetAppDirectivityNode()

FILE: src/isimpa/data_manager/appconfig.h
  function class (line 74) | class ApplicationConfiguration
  type tab_HashElement (line 125) | struct tab_HashElement
  type t_vec_param (line 143) | struct t_vec_param{
  type t_App_Info (line 218) | struct t_App_Info
  type t_GLOBAL_VAR (line 233) | struct t_GLOBAL_VAR
  type t_lstSpec (line 303) | struct t_lstSpec{
  type t_lstMat (line 376) | struct t_lstMat{
  type t_lstDirectiv (line 458) | struct t_lstDirectiv {

FILE: src/isimpa/data_manager/customEditor/wxGridCellColorEditor.h
  function class (line 48) | class wxGridCellColorEditor : public wxGridCellTextEditor

FILE: src/isimpa/data_manager/customEditor/wxGridCellFileEditor.h
  function class (line 50) | class wxGridCellFileEditor : public wxGridCellTextEditor

FILE: src/isimpa/data_manager/customEditor/wxGridCellFontEditor.h
  function class (line 46) | class wxGridCellFontEditor : public wxGridCellTextEditor

FILE: src/isimpa/data_manager/customEditor/wxGridCellTreeEditor.cpp
  function Element (line 95) | Element* wxGridCellTreeEditor::GetSelection()
  function wxGridCellEditor (line 120) | wxGridCellEditor *wxGridCellTreeEditor::Clone() const
  function ComboTreeCtrl (line 145) | ComboTreeCtrl* wxGridCellTreeEditor::GetTree()
  function wxString (line 157) | wxString wxGridCellTreeEditor::GetValue() const

FILE: src/isimpa/data_manager/customEditor/wxGridCellTreeEditor.h
  function class (line 49) | class wxGridCellTreeEditor : public wxGridCellEditor

FILE: src/isimpa/data_manager/drawable_element.h
  function class (line 51) | class E_Drawable: public Element

FILE: src/isimpa/data_manager/e_data.h
  function class (line 48) | class E_Data: public Element
  function virtual (line 175) | virtual wxString GetPropertyLabel()
  function virtual (line 183) | virtual void SetPropertyLabel(const wxString& label) {
  function FillWxTree (line 191) | void FillWxTree(wxTreeCtrl* treeToFeed,const wxTreeItemId& parentId)
  function SetXmlCoreVisibility (line 267) | void SetXmlCoreVisibility(bool newMode)
  function wxXmlNode (line 276) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 282) | wxXmlNode* SaveXMLDocWithoutChildren(wxXmlNode* NoeudParent)
  function wxXmlNode (line 289) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/e_data_bool.h
  function class (line 42) | class E_Data_Bool: public E_Data
  function LinkMenu (line 76) | void LinkMenu(wxMenuItem* _linkedMenuEl)
  function wxXmlNode (line 102) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function SetValue (line 124) | void SetValue(bool newValue)
  function wxXmlNode (line 135) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function GetValue (line 152) | bool GetValue()
  function SetValue (line 161) | void SetValue(wxString newValue)
  function wxString (line 166) | wxString BoolToString(bool val)
  function StringToBool (line 175) | bool StringToBool(wxString sval)

FILE: src/isimpa/data_manager/e_data_bool_bfreqchoice.h
  function class (line 42) | class E_Data_Bool_Bfreq: public E_Data_Bool

FILE: src/isimpa/data_manager/e_data_color.h
  function class (line 45) | class E_Data_Color: public E_Data
  function wxXmlNode (line 86) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function vec3 (line 117) | vec3 GetValue()
  function SetValue (line 121) | void SetValue(const wxColor& newColor)

FILE: src/isimpa/data_manager/e_data_entier.h
  function class (line 44) | class E_Data_Integer: public E_Data
  function SetMaxValue (line 100) | void SetMaxValue(int _maxValue)
  function SetMinValue (line 106) | void SetMinValue(int _minValue)
  function wxXmlNode (line 139) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 158) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function SetValue (line 167) | void SetValue(wxString newValue)
  function SetValue (line 181) | void SetValue(int newValue)
  function GetValue (line 189) | int GetValue()
  function SetGridValue (line 223) | void SetGridValue(wxGrid* gridCtrl, int row, int col)

FILE: src/isimpa/data_manager/e_data_file.h
  function class (line 47) | class E_Data_File : public E_Data
  function wxXmlNode (line 93) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function SetValue (line 109) | void SetValue(const wxString& newFilePath)
  function wxFileName (line 133) | wxFileName GetFile() {

FILE: src/isimpa/data_manager/e_data_float.h
  function class (line 43) | class E_Data_Float: public E_Data
  function wxXmlNode (line 103) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 159) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function SetValue (line 187) | void SetValue(float nvval)
  function GetValue (line 201) | float GetValue()
  function SetGridValue (line 244) | void SetGridValue(wxGrid* gridCtrl, int row, int col)

FILE: src/isimpa/data_manager/e_data_font.h
  function class (line 45) | class E_Data_Font: public E_Data
  function wxXmlNode (line 75) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxFont (line 97) | const wxFont& GetValue()
  function SetValue (line 101) | void SetValue(const wxFont&newVal)

FILE: src/isimpa/data_manager/e_data_list.h
  function class (line 44) | class E_Data_List: public E_Data
  function SetItemLabel (line 110) | void SetItemLabel(int itemId, const wxString& newLabel) {
  function AppendItem (line 125) | void AppendItem(const wxString& itemLabel,const int& itemId)
  function wxXmlNode (line 133) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 142) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function GetChoice (line 194) | int GetChoice()

FILE: src/isimpa/data_manager/e_data_row.h
  function class (line 45) | class E_Data_Row: public E_Data
  function wxXmlNode (line 174) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/e_data_row_bandefreq.h
  function class (line 49) | class E_Data_Row_BandeFreq: public E_Data_Row
  function virtual (line 92) | virtual void SetPonderationState( bool doPonderation )
  function wxXmlNode (line 101) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function PonderationFromDb (line 126) | void PonderationFromDb()
  function PonderationFromDbA (line 131) | void PonderationFromDbA()

FILE: src/isimpa/data_manager/e_data_row_ext_bandefreq.h
  function class (line 46) | class E_Data_Row_ExtBandeFreq: public E_Data_Row_BandeFreq
  function virtual (line 80) | virtual void SetPonderationState( bool doPonderation )
  function ComputeAttenuation (line 109) | void ComputeAttenuation()
  function ComputeAttenuated (line 114) | void ComputeAttenuated()

FILE: src/isimpa/data_manager/e_data_row_materiau.h
  function class (line 49) | class E_Data_Row_Materiau: public E_Data_Row
  function wxXmlNode (line 98) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/e_data_text.h
  function class (line 42) | class E_Data_Text: public E_Data
  function wxXmlNode (line 88) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function SetValue (line 100) | void SetValue(wxString newValue)
  function wxXmlNode (line 108) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxString (line 122) | wxString GetValue()

FILE: src/isimpa/data_manager/e_data_tree.h
  function class (line 47) | class E_Data_Tree: public E_Data
  function Element (line 100) | Element* GetChoice()
  function SetValue (line 109) | void SetValue(Element* NewChoice)

FILE: src/isimpa/data_manager/e_position.h
  function class (line 52) | class E_Position: public E_Data
  function FillWxTree (line 94) | void FillWxTree(wxTreeCtrl* treeToFeed,const wxTreeItemId& parentId)
  function OnRightClic (line 102) | void OnRightClic(wxMenu* leMenu)
  function wxString (line 107) | wxString GetColTitle(int col)
  function SetPosValue (line 115) | void SetPosValue(vec3 newPos)
  function vec3 (line 128) | vec3 GetPosValue()
  function wxXmlNode (line 133) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 142) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function Modified (line 148) | void Modified(Element* eModif)

FILE: src/isimpa/data_manager/element.cpp
  function ElementSortPredicate (line 55) | bool ElementSortPredicate(Element* lEl,Element* rEl)
  function SortChildrensByProperty (line 64) | void SortChildrensByProperty(wxXmlNode* node,const wxString& propertyName)
  function wxXmlNode (line 275) | wxXmlNode* Element::SeekParentNodeToThisNode(wxXmlNode* noeudParent)
  function Element (line 323) | Element* Element::GetElementByType(ELEMENT_TYPE typeElement)
  function Element (line 348) | Element* Element::GetElementByLibelle(wxString libelle)
  function Element (line 377) | Element* Element::GetElementByXMLId(int _xmlId)
  function Element (line 392) | Element* Element::GetElementByTreeId(wxTreeItemId idElement)
  function wxInt32 (line 549) | wxInt32 Element::GetXmlId( ) const
  function wxString (line 553) | const wxString Element::GetElementNameForOrder() const
  function wxXmlNode (line 600) | wxXmlNode* Element::GenericSaveXmlDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 635) | wxXmlNode* Element::SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 646) | wxXmlNode* Element::SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 660) | wxXmlNode* Element::ExportToXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 681) | wxXmlNode* Element::SaveXMLDocWithoutChildren(wxXmlNode* NoeudParent)
  function Element (line 846) | Element* Element::AppendFilsByType(ELEMENT_TYPE etypefils,const wxString...
  function Element (line 850) | Element* Element::AppendFils(Element* filsToAppend,bool appendToTree)
  function wxXmlNode (line 869) | wxXmlNode* Element::renameAttribute(wxXmlNode* root, const std::vector<w...
  function wxMenuItem (line 891) | wxMenuItem* Element::GetMenuItem(wxMenu* parent,int id,const wxString& l...
  function wxMenuItem (line 908) | wxMenuItem* Element::GetMenuItem(wxMenu* parent,int id,const wxString& l...
  function wxString (line 983) | wxString Element::GetColTitle(int col)
  function wxString (line 1173) | wxString Element::GetStringConfig(wxString name)
  function wxFont (line 1189) | wxFont Element::GetFontConfig(const wxString& name)
  function wxFileName (line 1205) | wxFileName Element::GetFileConfig(wxString name)
  function vec3 (line 1221) | vec3 Element::GetColorConfig(wxString name)
  function vec3 (line 1333) | vec3 Element::GetPositionConfig(wxString name)
  function Element (line 1366) | Element* Element::GetElementParent()
  function Element (line 1371) | Element* Element::AppendPropertyText(wxString propertyName,wxString prop...
  function Element (line 1384) | Element* Element::AppendPropertyPosition(wxString propertyName,wxString ...
  function Element (line 1395) | Element* Element::AppendPropertyList(wxString propertyName,wxString prop...
  function Element (line 1416) | Element* Element::AppendPropertyColor(wxString propertyName,wxString pro...
  function Element (line 1425) | Element* Element::AppendPropertyFile(wxString propertyName, wxString pro...
  function Element (line 1434) | Element* Element::AppendPropertyInteger(wxString propertyName,wxString p...
  function Element (line 1450) | Element* Element::AppendPropertyDecimal(wxString propertyName,wxString p...
  function Element (line 1468) | Element* Element::AppendPropertyBool(wxString propertyName,wxString prop...
  function Element (line 1483) | Element* Element::AppendPropertyFont(wxString propertyName,wxString prop...

FILE: src/isimpa/data_manager/element.h
  function class (line 59) | class Element {

FILE: src/isimpa/data_manager/generic_element/e_directivity.cpp
  function wxFileName (line 126) | wxFileName E_Directivity::GetAssociatedFile()
  function wxXmlNode (line 141) | wxXmlNode* E_Directivity::SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 146) | wxXmlNode* E_Directivity::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_directivity.h
  function class (line 43) | class E_Directivity : public Element

FILE: src/isimpa/data_manager/generic_element/e_directivity_app.h
  function class (line 44) | class E_Directivity_App : public E_Directivity

FILE: src/isimpa/data_manager/generic_element/e_directivity_user.h
  function class (line 44) | class E_Directivity_User : public E_Directivity
  function OnBeginLabelEdit (line 60) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 65) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function virtual (line 74) | virtual wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_gammeabsorption.cpp
  function wxXmlNode (line 77) | wxXmlNode *E_GammeAbsorption::SaveXMLCoreDoc(wxXmlNode *NoeudParent) {
  function wxXmlNode (line 129) | wxXmlNode *E_GammeAbsorption::SaveXMLDoc(wxXmlNode *NoeudParent) {

FILE: src/isimpa/data_manager/generic_element/e_gammeabsorption.h
  function class (line 48) | class E_GammeAbsorption: public Element

FILE: src/isimpa/data_manager/generic_element/e_gammefrequence.cpp
  function wxFloat32 (line 96) | wxFloat32 E_GammeFrequence::GetGlobalLevel( const wxString& typeDb)
  function wxXmlNode (line 172) | wxXmlNode* E_GammeFrequence::SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 177) | wxXmlNode* E_GammeFrequence::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_gammefrequence.h
  function class (line 49) | class E_GammeFrequence: public Element

FILE: src/isimpa/data_manager/generic_element/e_gammefrequence_app.h
  function class (line 44) | class E_GammeFrequence_App: public E_GammeFrequence

FILE: src/isimpa/data_manager/generic_element/e_gammefrequence_user.h
  function class (line 45) | class E_GammeFrequence_User  : public E_GammeFrequence
  function InitProp (line 65) | void InitProp()
  function OnBeginLabelEdit (line 72) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 77) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function virtual (line 85) | virtual wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_materiau.cpp
  function wxXmlNode (line 105) | wxXmlNode* E_Materiau::SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 116) | wxXmlNode* E_Materiau::SaveXMLCoreDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_materiau.h
  function class (line 47) | class E_Materiau: public Element

FILE: src/isimpa/data_manager/generic_element/e_materiau_app.h
  function class (line 49) | class E_Materiau_App: public E_Materiau

FILE: src/isimpa/data_manager/generic_element/e_materiau_user.h
  function class (line 49) | class E_Materiau_User: public E_Materiau

FILE: src/isimpa/data_manager/generic_element/e_property_freq.cpp
  function orderSpectrumsRows (line 36) | bool orderSpectrumsRows(Element* lSp,Element* rSp)
  function wxXmlNode (line 223) | wxXmlNode* E_Property_Freq::SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 274) | wxXmlNode* E_Property_Freq::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/generic_element/e_property_freq.h
  function class (line 44) | class E_Property_Freq: public Element

FILE: src/isimpa/data_manager/grpInfo/data_group_info.cpp
  type formatGRPINFO (line 34) | namespace formatGRPINFO

FILE: src/isimpa/data_manager/grpInfo/data_group_info.h
  function namespace (line 40) | namespace formatGRPINFO
  function class (line 81) | class DGIBIN

FILE: src/isimpa/data_manager/logger_tetgen_debug.hpp
  class TetgenDebugLogger (line 40) | class TetgenDebugLogger : public InterfLogger
    method TetgenDebugLogger (line 47) | TetgenDebugLogger()
    method LogMessage (line 53) | virtual void LogMessage(const wxString& mess)
    method LogError (line 72) | virtual void LogError(const wxString& mess)
    method LogWarning (line 76) | virtual void LogWarning(const wxString& mess)

FILE: src/isimpa/data_manager/projet.cpp
  function OnElementRootUpdate (line 78) | void OnElementRootUpdate( Element* updEl)
  type SceneUpdater (line 87) | struct SceneUpdater : public t_baseEvtCatcher
    method SceneUpdater (line 89) | SceneUpdater(Element* _render3DPrefItem,CObjet3D& _objToUpdate,OpenGlV...
    method OnModified (line 98) | virtual void OnModified(const int& elid)
  type AnimationUpdater (line 124) | struct AnimationUpdater : public t_baseEvtCatcher
    method AnimationUpdater (line 126) | AnimationUpdater(Element* _animationPrefItem)
    method OnModified (line 131) | virtual void OnModified(const int& elid)
  type IsoPaletteUpdater (line 141) | struct IsoPaletteUpdater : public t_baseEvtCatcher
    method IsoPaletteUpdater (line 143) | IsoPaletteUpdater(Element* _IsoSelectionItem,RecepteursSControler* _rs...
    method UpdateIsoFile (line 149) | void UpdateIsoFile()
    method UpdateIsoLineColor (line 154) | void UpdateIsoLineColor()
    method OnModified (line 160) | virtual void OnModified(const int& elid)
  type AnimatorUserPreferenceUpdater (line 181) | struct AnimatorUserPreferenceUpdater : public t_baseEvtCatcher
    method AnimatorUserPreferenceUpdater (line 183) | AnimatorUserPreferenceUpdater(Element* _userpreferenceItem,Animator* _...
    method UpdateTextForeColor (line 190) | void UpdateTextForeColor()
    method UpdateTextBackColor (line 196) | void UpdateTextBackColor()
    method UpdateTextFont (line 205) | void UpdateTextFont()
    method OnModified (line 211) | virtual void OnModified(const int& elid)
  type ParticleAnimatorUpdater (line 236) | struct ParticleAnimatorUpdater : public t_baseEvtCatcher
    method ParticleAnimatorUpdater (line 238) | ParticleAnimatorUpdater(Element* _ParticleUserPreferenceItem,Particule...
    method UpdateParticleColor (line 243) | void UpdateParticleColor()
    method OnModified (line 249) | virtual void OnModified(const int& elid)
  function wxString (line 270) | wxString GetFittedString(const wxProgressDialog& progDialog,const wxStri...
  function wxString (line 592) | wxString ProjectManager::GetCurrentFolder() {
  function Element (line 901) | Element* ProjectManager::OnMenuNewEncombrement(Element* elementSelected,...

FILE: src/isimpa/data_manager/projet.h
  function namespace (line 71) | namespace uictrl
  function class (line 87) | class ProjectManager{

FILE: src/isimpa/data_manager/projet_calculation.cpp
  function wxFloat32 (line 42) | wxFloat32 to_deciBel(const wxFloat32& wjVal)
  function wxFloat32 (line 46) | wxFloat32 to_deciBelP0(const wxFloat32& wjVal)
  function wxFloat32 (line 50) | wxFloat32 to_deciBelRsurf(const wxFloat32& wjVal)
  function is_file_exist (line 55) | bool is_file_exist(const char *fileName)
  function GetNCCurve (line 61) | std::vector<wxFloat32> GetNCCurve(wxFloat32 NCidx,const std::vector<wxIn...
  function MakeSchroederArray (line 68) | void MakeSchroederArray(const std::vector<std::vector<wxFloat32> >& srcA...
  type SUM_OPERATION (line 87) | enum SUM_OPERATION
  function wxFloat32 (line 95) | wxFloat32 GetSumLimit(wxInt32 idBandeFreq,wxFloat32 fromTime,wxFloat32 t...
  type LinearRegressionResult (line 120) | struct LinearRegressionResult
    method LinearRegressionResult (line 122) | LinearRegressionResult(	wxFloat32 _a,wxFloat32 _b):a(_a),b(_b){}
  function wxFloat32 (line 127) | wxFloat32 GetTimeDecay(wxFloat32 fromdB, const std::vector<wxFloat32>& t...
  function GetTimeRange (line 143) | void GetTimeRange( wxFloat32 fromdB,wxFloat32 todB, wxFloat32* timeDeb, ...
  function LinearRegressionResult (line 175) | LinearRegressionResult ComputeLinearRegression( wxInt32 idBandeFreq,wxFl...
    method LinearRegressionResult (line 122) | LinearRegressionResult(	wxFloat32 _a,wxFloat32 _b):a(_a),b(_b){}

FILE: src/isimpa/data_manager/projet_python.cpp
  function SendPythonCommand (line 43) | void SendPythonCommand(const wxString& cmd)
  function ins_pyelement (line 47) | bool ins_pyelement(boost::python::object& py_el,const wxInt32& wxid, con...
  function RunPyManagedMenu (line 56) | bool RunPyManagedMenu(const int& elementType,const int& elementId, wxMen...
  function GetFormulaEvaluation (line 60) | bool GetFormulaEvaluation(const wxString& formula,double& evalResult)
  function PythonShell (line 192) | PythonShell* ProjectManager::GetPythonShell()
  function GetFormulaEvaluation (line 204) | bool GetFormulaEvaluation(const wxString& formula,double& evalResult)
  function SendPythonCommand (line 208) | void SendPythonCommand(const wxString& cmd)
  function RunPyManagedMenu (line 212) | bool RunPyManagedMenu(const int& elementType,const int& elementId, wxMen...
  function PythonShell (line 258) | PythonShell* ProjectManager::GetPythonShell()

FILE: src/isimpa/data_manager/projet_remesh.cpp
  type ModelReconstructionUI (line 35) | namespace ModelReconstructionUI
    class ModelReconstructionManager (line 37) | class ModelReconstructionManager : public ModelReconstructionManagerBase
      method wxString (line 45) | wxString GetVolumeInfoFileName()
      method wxString (line 49) | wxString GetArgFromPreferences(const ReconstructionUserPreferences_t...
      method ModelReconstructionManager (line 85) | ModelReconstructionManager()
      method SetModelSourceFilePath (line 88) | void SetModelSourceFilePath(const wxString& filePath)
      method GetAvaibleVolumes (line 95) | virtual bool GetAvaibleVolumes(const ReconstructionUserPreferences_t...
      method wxString (line 140) | wxString GetFinalModelFilePath()
      method FinalizeModelReconstruction (line 148) | virtual void FinalizeModelReconstruction()
      method SetParameters (line 152) | virtual void SetParameters(const ReconstructionUserPreferences_t& pr...
      method MakeModel (line 156) | void MakeModel(const ReconstructionUserPreferences_t& preferences)

FILE: src/isimpa/data_manager/python_interface/boost_python_header.cpp
  function translator (line 36) | void translator(elementException const& x) {
  function ThrowPyException (line 39) | void ThrowPyException(const std::wstring& _msg)
  function ThrowPyException (line 43) | void ThrowPyException(const char* _msg)
  function hasattr (line 49) | bool hasattr(const boost::python::object& obj, std::wstring const &attrN...
  function hasattr (line 53) | bool hasattr(const boost::python::object& obj, std::string const &attrNa...
  function GetPythonArraySize (line 56) | int GetPythonArraySize(const boost::python::object& pyArr)
  function registerexcept (line 63) | void registerexcept()
  function impl_templates (line 68) | void impl_templates()
  function wxString (line 91) | wxString extract_wxstring(const boost::python::object& from)

FILE: src/isimpa/data_manager/python_interface/boost_python_header.h
  function exception (line 60) | struct elementException : std::exception

FILE: src/isimpa/data_manager/python_interface/instanceManager.hpp
  type OBJECT_REF_TYPE (line 42) | enum OBJECT_REF_TYPE
  class InstanceManager (line 56) | class InstanceManager
    type t_HashObjectArray (line 59) | struct t_HashObjectArray

FILE: src/isimpa/data_manager/python_interface/py_ui_module/Application.cpp
  function export_application_class (line 61) | void export_application_class() {
  function ProjectManager (line 146) | ProjectManager *GetManager() {
  class pyeventlocker (line 159) | class pyeventlocker {
    method pyeventlocker (line 161) | pyeventlocker(bool *_marker)
  type uictrl (line 174) | namespace uictrl {
    function uiTreeCtrl (line 482) | uiTreeCtrl *application::GetTreeFromElement(const wxTreeItemId &treeIt...

FILE: src/isimpa/data_manager/python_interface/py_ui_module/Application.hpp
  class Element (line 44) | class Element
  type uictrl (line 52) | namespace uictrl
    class application (line 59) | class application

FILE: src/isimpa/data_manager/python_interface/py_ui_module/e_pyext.cpp
  function Element (line 45) | Element* SwitchNewElement(const Element::ELEMENT_TYPE& baseType,Element*...
  function Element (line 71) | Element* New_E_Python_Extension( const Element::ELEMENT_TYPE& baseType,E...
  function Element (line 77) | Element* New_E_Python_Extension( const Element::ELEMENT_TYPE& baseType,E...
  function Element (line 81) | Element* New_E_Python_Extension( Element* parent,wxXmlNode* noeudCourant)
  function GetPythonExtBaseType (line 90) | Element::ELEMENT_TYPE GetPythonExtBaseType( Element* pythonEl)

FILE: src/isimpa/data_manager/python_interface/py_ui_module/e_pyext.hpp
  class callFromSelflocker (line 54) | class callFromSelflocker
    method callFromSelflocker (line 57) | callFromSelflocker(bool* _marker)
  class E_Python_Extension (line 88) | class E_Python_Extension : public ElementBase
    method E_Python_Extension (line 99) | E_Python_Extension(Element* parent,const Element::ELEMENT_TYPE& _baseT...
    method GetBaseElementId (line 116) | Element::ELEMENT_TYPE GetBaseElementId()
    method wxXmlNode (line 120) | virtual wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
    method OnRightClic (line 133) | virtual void OnRightClic(wxMenu* leMenu)
    method wxString (line 147) | virtual wxString GetTreeLabel() const
    method DrawItem (line 158) | virtual void DrawItem( vec4 unitizeValue )
    method FillWxTree (line 167) | virtual void FillWxTree(wxTreeCtrl* treeToFeed,const wxTreeItemId& par...
  function GetPyObj (line 252) | bp::object GetPyObj()
  function Modified (line 257) | virtual void Modified(Element* elementUpdated)

FILE: src/isimpa/data_manager/python_interface/py_ui_module/element_file_pywrap.cpp
  function export_project_class_pyfilelement (line 42) | void export_project_class_pyfilelement()
  function E_Report_File (line 49) | E_Report_File* GetFileElement(const wxInt32& xmlId)
  type uictrl (line 69) | namespace uictrl

FILE: src/isimpa/data_manager/python_interface/py_ui_module/element_file_pywrap.hpp
  type uictrl (line 37) | namespace uictrl
    class e_file (line 43) | class e_file : public element

FILE: src/isimpa/data_manager/python_interface/py_ui_module/element_pywrap.cpp
  function GetListItems (line 44) | void GetListItems(boost::python::list &pymenu, wxMenu &menu) {
  function GetMenuItems (line 83) | boost::python::list GetMenuItems(wxMenu *menuToFill) {
  function export_project_class (line 165) | void export_project_class() {
  function Element (line 276) | Element *GetElement(const wxInt32 &xmlId) {
  type uictrl (line 286) | namespace uictrl {
    function wxInt32 (line 293) | wxInt32 element::getindice() const {
    type LinkBetweenElementUpdateEventAndPythonScript (line 662) | struct LinkBetweenElementUpdateEventAndPythonScript : public t_baseEvt...
      method LinkBetweenElementUpdateEventAndPythonScript (line 663) | LinkBetweenElementUpdateEventAndPythonScript(boost::python::object _...
      method OnModified (line 667) | virtual void OnModified(const int &elid) {
    type LinkBetweenElementAppendChildEventAndPythonScript (line 681) | struct LinkBetweenElementAppendChildEventAndPythonScript : public t_ba...
      method LinkBetweenElementAppendChildEventAndPythonScript (line 682) | LinkBetweenElementAppendChildEventAndPythonScript(boost::python::obj...
      method OnNewChildElement (line 686) | virtual void OnNewChildElement(const int &childType, const int &pare...

FILE: src/isimpa/data_manager/python_interface/py_ui_module/element_pywrap.hpp
  type uictrl (line 43) | namespace uictrl
    class element (line 54) | class element : public boost::noncopyable
      method wxInt32 (line 483) | wxInt32 getid() { return xmlId; }

FILE: src/isimpa/data_manager/python_interface/py_ui_module/generate_enum_def.py
  function GetFirstOccurance (line 102) | def GetFirstOccurance(line, endlinearr):
  function GetComment (line 113) | def GetComment(ligne):
  function GetDoxyDefEvtEnum (line 117) | def GetDoxyDefEvtEnum(eventText):
  function GetDoxyDefTypeEnum (line 127) | def GetDoxyDefTypeEnum(eventText):
  function GetDoxyDefGraphEnum (line 137) | def GetDoxyDefGraphEnum(eventText):
  function GetDefEvtEnum (line 147) | def GetDefEvtEnum(eventText):
  function GetDefTypeEnum (line 157) | def GetDefTypeEnum(eventText):
  function GetDefGraphEnum (line 167) | def GetDefGraphEnum(eventText):

FILE: src/isimpa/data_manager/python_interface/py_ui_module/samples/__init__.py
  class manager (line 36) | class manager:
    method __init__ (line 40) | def __init__(self):
    method set_grp_src_activation (line 46) | def set_grp_src_activation(self,idgrp,newstate):
    method enable_grp_sources (line 51) | def enable_grp_sources(self,idgrp):
    method disable_grp_sources (line 56) | def disable_grp_sources(self,idgrp):
    method getmenu (line 61) | def getmenu(self,typeel,idel,menu):

FILE: src/isimpa/data_manager/python_interface/py_ui_module/samples/add_data_sample.py
  class mdf (line 35) | class mdf(uictrl.element):
    method __init__ (line 39) | def __init__(self,idel):

FILE: src/isimpa/data_manager/python_interface/pythonshell.cpp
  function export_stdioclass (line 44) | void export_stdioclass()
  function BOOST_PYTHON_MODULE (line 48) | BOOST_PYTHON_MODULE(uictrl){
  function wxString (line 110) | wxString PythonShell::GetStr(const wxString& strPos)

FILE: src/isimpa/data_manager/python_interface/pythonshell.hpp
  class PythonShell (line 45) | class PythonShell

FILE: src/isimpa/data_manager/python_interface/pythonstdioredirect.hpp
  class PythonStdIoRedirect (line 41) | class PythonStdIoRedirect {

FILE: src/isimpa/data_manager/tree_core/e_core.h
  function class (line 44) | class E_Core: public Element
  function BindUpdateEvent (line 99) | void BindUpdateEvent(void (*_pointeurFonctionEvent)(Element*))
  function wxXmlNode (line 105) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_core/e_core_core.h
  function class (line 44) | class E_Core_Core: public Element
  function wxXmlNode (line 98) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function OnRightClic (line 113) | void OnRightClic(wxMenu* leMenu)
  function virtual (line 119) | virtual wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_core/e_core_core_bfreqselection.h
  function class (line 44) | class E_Core_Core_Bfreqselection: public Element
  function wxXmlNode (line 84) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function SetPreselection (line 90) | void SetPreselection( Element::IDEVENT preselectionMode)
  function OnRightClic (line 126) | void OnRightClic(wxMenu* leMenu)
  function wxXmlNode (line 143) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_core/e_core_core_config.h
  function class (line 45) | class E_Core_Core_Configuration: public Element
  function wxXmlNode (line 61) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function InitProperties (line 70) | void InitProperties()

FILE: src/isimpa/data_manager/tree_core/e_core_core_tetconf.h
  function class (line 42) | class E_Core_Core_Conf_Mailleur: public Element
  function wxXmlNode (line 63) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 67) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function InitProperties (line 97) | void InitProperties()

FILE: src/isimpa/data_manager/tree_core/e_core_sppscore.h
  type COMPUTATION_METHOD (line 38) | enum COMPUTATION_METHOD
  function class (line 47) | class E_Core_Spps: public E_Core_Core
  function wxXmlNode (line 174) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function Modified (line 180) | void Modified(Element* eModif)
  function wxXmlNode (line 212) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_core/e_core_tccore.h
  function class (line 43) | class E_Core_Tc: public E_Core_Core
  function wxXmlNode (line 101) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_core/e_core_tlmcore.h
  function class (line 43) | class E_Core_Tlm: public E_Core_Core
  function wxXmlNode (line 70) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report.h
  function class (line 41) | class E_Report: public Element
  function BindUpdateEvent (line 96) | void BindUpdateEvent(void (*_pointeurFonctionEvent)(Element*))
  function RefreshReportFolder (line 104) | void RefreshReportFolder()
  function wxXmlNode (line 122) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_file.cpp
  function isFileNameValid (line 43) | bool isFileNameValid(const wxString& fileName)
  function GetAllFolderItems (line 65) | void GetAllFolderItems(wxString rootFolder,wxArrayString& folderDir)
  function FuncDeleteFolder (line 82) | bool FuncDeleteFolder( wxString folderToDelete )
  function wxXmlNode (line 417) | wxXmlNode* E_Report_File::SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 424) | wxXmlNode* E_Report_File::SaveXMLDocWithoutChildren(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_file.h
  function class (line 42) | class E_Report_File: public Element

FILE: src/isimpa/data_manager/tree_rapport/e_report_folder.h
  function class (line 44) | class E_Report_Folder: public E_Report_File
  function OnRightClic (line 81) | void OnRightClic(wxMenu* leMenu)
  function wxXmlNode (line 86) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function OpenFolder (line 92) | void OpenFolder()

FILE: src/isimpa/data_manager/tree_rapport/e_report_gabe.cpp
  function wxXmlNode (line 45) | wxXmlNode* E_Report_Gabe::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_gabe.h
  function class (line 45) | class E_Report_Gabe: public E_Report_File

FILE: src/isimpa/data_manager/tree_rapport/e_report_gabe_gap.h
  function class (line 44) | class E_Report_Gabe_Gap: public E_Report_Gabe

FILE: src/isimpa/data_manager/tree_rapport/e_report_gabe_recp.h
  function class (line 44) | class E_Report_Gabe_Recp: public E_Report_Gabe

FILE: src/isimpa/data_manager/tree_rapport/e_report_gabe_recps.h
  function class (line 44) | class E_Report_Gabe_Recps: public E_Report_Gabe

FILE: src/isimpa/data_manager/tree_rapport/e_report_partvisualisation.h
  function class (line 45) | class E_Report_ParticulesVisualisation: public E_Report_File
  function OnRightClic (line 78) | void OnRightClic( wxMenu* leMenu )
  function wxXmlNode (line 89) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_recepteurssvisualisation.h
  function class (line 45) | class E_Report_RecepteurSurfaciqueVisualisation: public E_Report_File
  function AppendCurvesParameters (line 137) | void AppendCurvesParameters()
  function virtual (line 144) | virtual bool IsFittingWithThisType( const ELEMENT_TYPE& typeTest )
  function OnRightClic (line 165) | void OnRightClic( wxMenu* leMenu )
  function wxXmlNode (line 201) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_rpi.h
  function class (line 42) | class E_Report_ReceiverPonctualIntensity: public E_Report_File
  function OnRightClic (line 70) | void OnRightClic( wxMenu* leMenu )
  function wxXmlNode (line 76) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_unknown_file.cpp
  function wxXmlNode (line 49) | wxXmlNode* E_Report_Unknown::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_rapport/e_report_unknown_file.h
  function class (line 44) | class E_Report_Unknown: public E_Report_File

FILE: src/isimpa/data_manager/tree_scene/e_scene.cpp
  function wxXmlNode (line 102) | wxXmlNode* E_Scene::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene.h
  function class (line 40) | class E_Scene: public Element

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd.h
  function class (line 42) | class E_Scene_Bdd: public Element
  function wxXmlNode (line 91) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_directivities.h
  function class (line 41) | class E_Scene_Bdd_Directivities : public Element
  function wxXmlNode (line 81) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 86) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_directivities_app.h
  function class (line 40) | class E_Scene_Bdd_Directivities_Application : public Element
  function wxXmlNode (line 78) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_directivities_user.h
  function class (line 41) | class E_Scene_Bdd_Directivities_User : public Element
  function InsertChildrens (line 68) | bool InsertChildrens(wxXmlNode* currentChild)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux.h
  function class (line 41) | class E_Scene_Bdd_Materiaux: public Element
  function wxXmlNode (line 83) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 91) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_app.h
  function class (line 41) | class E_Scene_Bdd_Materiaux_Application: public Element
  function wxXmlNode (line 88) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_app_group.h
  function class (line 39) | class E_Scene_Bdd_Materiaux_App_Group: public Element

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_app_materiau.h
  function class (line 46) | class E_Scene_Bdd_Materiaux_App_Materiau: public Element

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_propmateriau.h
  function class (line 42) | class E_Scene_Bdd_Materiaux_PropertyMaterial: public Element
  function wxXmlNode (line 82) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_rendermateriau.h
  function class (line 42) | class E_Scene_Bdd_Materiaux_RenderMaterial: public Element
  function wxXmlNode (line 61) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_user.h
  function class (line 39) | class E_Scene_Bdd_Materiaux_User: public Element
  function InsertChildrens (line 63) | bool InsertChildrens( wxXmlNode* currentChild )
  function OnPaste (line 91) | void OnPaste(wxXmlNode* nodeElement)
  function EndDrag (line 110) | void EndDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree,std::vector<Element...
  function OnRightClic (line 139) | void OnRightClic(wxMenu* leMenu)
  function E_Scene_Bdd_Materiaux_User_Materiau (line 154) | E_Scene_Bdd_Materiaux_User_Materiau* AppendUserMateriau()
  function wxXmlNode (line 161) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_user_group.h
  function class (line 41) | class E_Scene_Bdd_Materiaux_User_Group: public Element
  function OnPaste (line 135) | void OnPaste(wxXmlNode* nodeElement) override
  function OnEndLabelEdit (line 154) | void OnEndLabelEdit(wxTreeEvent& treeEvent) override
  function OnBeginLabelEdit (line 162) | void OnBeginLabelEdit(wxTreeEvent& treeEvent) override
  function OnRightClic (line 192) | void OnRightClic(wxMenu* leMenu)
  function wxXmlNode (line 199) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function BeginDrag (line 206) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)
  function EndDrag (line 211) | void EndDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree,std::vector<Element...

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_materiaux_user_materiau.h
  function class (line 47) | class E_Scene_Bdd_Materiaux_User_Materiau: public Element
  function wxXmlNode (line 96) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent) override
  function BeginDrag (line 116) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)
  function OnBeginLabelEdit (line 121) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 126) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function wxXmlNode (line 134) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function UpdateGenPropValue (line 177) | bool UpdateGenPropValue(wxString prop,wxString newVal)
  function UpdateDiffusionValue (line 204) | bool UpdateDiffusionValue(int freq,float newVal)
  function UpdateDescriptionValue (line 213) | bool UpdateDescriptionValue(wxString newVal)
  function UpdateReferenceValue (line 222) | bool UpdateReferenceValue(wxString newVal)
  function Modified (line 229) | void Modified(Element* eModif)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_spectrums.h
  function class (line 41) | class E_Scene_Bdd_Spectrums: public Element
  function wxXmlNode (line 83) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 87) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_spectrums_app.h
  function class (line 42) | class E_Scene_Bdd_Spectrums_Application: public Element
  function wxXmlNode (line 82) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_bdd_spectrums_user.h
  function class (line 39) | class E_Scene_Bdd_Spectrums_User: public Element
  function OnRightClic (line 67) | void OnRightClic(wxMenu* leMenu)
  function InsertChildrens (line 75) | bool InsertChildrens(wxXmlNode* currentChild)
  function OnPaste (line 96) | void OnPaste(wxXmlNode* nodeElement)
  function wxXmlNode (line 122) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_donnees.h
  function class (line 52) | class E_Scene_Donnees: public Element
  function wxXmlNode (line 119) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_encombrements.h
  function class (line 40) | class E_Scene_Encombrements: public Element
  function OnRightClic (line 104) | void OnRightClic(wxMenu* leMenu)
  function wxXmlNode (line 115) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 122) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_encombrements_encombrement_cuboide.h
  function class (line 46) | class E_Scene_Encombrements_Encombrement_Cuboide: public E_Drawable

FILE: src/isimpa/data_manager/tree_scene/e_scene_encombrements_encombrement_model.h
  function class (line 46) | class E_Scene_Encombrements_Encombrement_Model: public E_Drawable

FILE: src/isimpa/data_manager/tree_scene/e_scene_encombrements_encombrement_proprietes.h
  function class (line 46) | class E_Scene_Encombrements_Encombrement_Proprietes: public Element
  function wxXmlNode (line 87) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function Modified (line 95) | void Modified(Element* eModif)

FILE: src/isimpa/data_manager/tree_scene/e_scene_encombrements_encombrement_rendu.h
  function class (line 42) | class E_Scene_Encombrements_Encombrement_Rendu: public Element
  function wxXmlNode (line 85) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 90) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_groupesurfaces.h
  function class (line 40) | class E_Scene_Groupesurfaces: public Element
  function DeleteElementByTreeId (line 96) | bool DeleteElementByTreeId(wxTreeItemId idElement)
  function wxXmlNode (line 123) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function wxTreeItemId (line 137) | wxTreeItemId GetIdElementByFaceAndGroup(long face,long group)
  function ClearEmptyGroup (line 159) | void ClearEmptyGroup()
  function GetMaterialsLink (line 183) | void GetMaterialsLink( std::vector<std::vector<ApplicationConfiguration:...
  function OnRightClic (line 196) | void OnRightClic(wxMenu* leMenu)

FILE: src/isimpa/data_manager/tree_scene/e_scene_groupesurfaces_groupe.cpp
  function wxXmlNode (line 332) | wxXmlNode* E_Scene_Groupesurfaces_Groupe::SaveXMLDoc(wxXmlNode* NoeudPar...
  function wxTreeItemId (line 590) | wxTreeItemId E_Scene_Groupesurfaces_Groupe::GetIdElementByFaceAndGroup(l...

FILE: src/isimpa/data_manager/tree_scene/e_scene_groupesurfaces_groupe.h
  function class (line 46) | class E_Scene_Groupesurfaces_Groupe: public E_Drawable

FILE: src/isimpa/data_manager/tree_scene/e_scene_groupesurfaces_groupe_vertex.h
  function class (line 42) | class E_Scene_Groupesurfaces_Groupe_Vertex: public Element

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet.h
  function class (line 51) | class E_Scene_Projet: public Element
  function wxXmlNode (line 109) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_configuration.h
  function class (line 38) | class E_Scene_Configuration: public Element
  function InitProperties (line 59) | void InitProperties()
  function FillWxTree (line 67) | void FillWxTree(wxTreeCtrl* treeToFeed,const wxTreeItemId& parentId)
  function wxXmlNode (line 72) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_environnement.h
  function class (line 41) | class E_Scene_Projet_Environnement: public Element
  function Modified (line 196) | void Modified(Element* eModif)
  function wxXmlNode (line 216) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 221) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_informations.h
  function class (line 39) | class E_Scene_Projet_Information: public Element
  function AppendNewProperties (line 62) | void AppendNewProperties()
  function InitProperties (line 71) | void InitProperties()
  function InitProp (line 85) | void InitProp()
  function wxXmlNode (line 101) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_rendu.h
  function class (line 40) | class E_Scene_Rendu: public Element
  function wxXmlNode (line 81) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_rendu_origine.h
  function class (line 43) | class E_Scene_Rendu_Origine: public E_Drawable
  function DrawPlan (line 88) | void DrawPlan( vec4 unitizeValue,vec3 pas,vec3 extremitea,vec3 extremite...
  function DrawItem (line 97) | void DrawItem( vec4 unitizeValue )
  function wxXmlNode (line 198) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_projet_userconfiguration.h
  function class (line 44) | class E_Scene_UserConfiguration: public Element
  function wxXmlNode (line 74) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteursp.h
  function class (line 39) | class E_Scene_Recepteursp: public Element
  function OnRightClic (line 189) | void OnRightClic(wxMenu* leMenu)
  function wxXmlNode (line 197) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function BeginDrag (line 205) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)
  function EndDrag (line 213) | void EndDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree,std::vector<Element...

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteursp_recepteur.h
  function class (line 48) | class E_Scene_Recepteursp_Recepteur: public E_Drawable
  function wxXmlNode (line 109) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function DrawItem (line 147) | void DrawItem( vec4 unitizeValue )
  function OnBeginLabelEdit (line 180) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 185) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function Modified (line 195) | void Modified(Element* eModif)
  function wxXmlNode (line 220) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function BeginDrag (line 227) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteursp_recepteur_proprietes.h
  function class (line 40) | class E_Scene_Recepteursp_Recepteur_Proprietes: public Element
  function wxXmlNode (line 78) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteursp_recepteur_rendu.h
  function class (line 40) | class E_Scene_Recepteursp_Recepteur_Rendu: public Element
  function wxXmlNode (line 68) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss.h
  function class (line 42) | class E_Scene_Recepteurss: public Element
  function InsertChildrens (line 81) | bool InsertChildrens( wxXmlNode* currentChild )
  function wxXmlNode (line 126) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function OnRightClic (line 133) | void OnRightClic(wxMenu* leMenu)
  function OnPaste (line 140) | void OnPaste(wxXmlNode* nodeElement)
  function wxXmlNode (line 158) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteur.h
  function class (line 46) | class E_Scene_Recepteurss_Recepteur: public E_Drawable
  function DrawItem (line 112) | void DrawItem( vec4 unitizeValue )
  function wxXmlNode (line 117) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function OnBeginLabelEdit (line 126) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 131) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function wxXmlNode (line 141) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteur_proprietes.h
  function class (line 40) | class E_Scene_Recepteurss_Recepteur_Proprietes: public Element
  function wxXmlNode (line 74) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteur_rendu.h
  function class (line 40) | class E_Scene_Recepteurss_Recepteur_Rendu: public Element
  function wxXmlNode (line 57) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteurcoupe.h
  function class (line 46) | class E_Scene_Recepteurss_RecepteurCoupe: public E_Drawable
  function DrawPlan (line 122) | void DrawPlan( vec4 unitizeValue,vec3 pas,vec3 extremitea,vec3 extremite...
  function DrawItem (line 131) | void DrawItem( vec4 unitizeValue )
  function wxXmlNode (line 196) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function OnBeginLabelEdit (line 221) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 226) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function wxXmlNode (line 236) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteurcoupe_proprietes.h
  function class (line 40) | class E_Scene_Recepteurss_RecepteurCoupe_Proprietes: public Element
  function wxXmlNode (line 74) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_recepteurss_recepteurcoupe_rendu.h
  function class (line 40) | class E_Scene_Recepteurss_RecepteurCoupe_Rendu: public Element
  function wxXmlNode (line 63) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_sources.h
  function class (line 42) | class E_Scene_Sources: public Element
  function BeginDrag (line 102) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)
  function OnBeginLabelEdit (line 109) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 115) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function EndDrag (line 124) | void EndDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree,std::vector<Element...
  function InsertChildrens (line 138) | bool InsertChildrens( wxXmlNode* currentChild )
  function OnPaste (line 176) | void OnPaste(wxXmlNode* nodeElement)
  function wxXmlNode (line 192) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function OnRightClic (line 218) | void OnRightClic(wxMenu* leMenu)
  function SetUserGroup (line 226) | void SetUserGroup()
  function wxXmlNode (line 230) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_sources_source.h
  function class (line 44) | class E_Scene_Sources_Source: public E_Drawable
  function wxXmlNode (line 103) | wxXmlNode* SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function DrawItem (line 142) | void DrawItem( vec4 unitizeValue )
  function BeginDrag (line 179) | void BeginDrag(wxTreeEvent& treeEvent,wxTreeCtrl* tree)
  function OnBeginLabelEdit (line 183) | void OnBeginLabelEdit(wxTreeEvent& treeEvent)
  function OnEndLabelEdit (line 188) | void OnEndLabelEdit(wxTreeEvent& treeEvent)
  function wxXmlNode (line 198) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_sources_source_properties.h
  function class (line 43) | class E_Scene_Sources_Source_Properties: public Element
  function wxXmlNode (line 145) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
  function Modified (line 151) | void Modified(Element* eModif)

FILE: src/isimpa/data_manager/tree_scene/e_scene_sources_source_rendu.h
  function class (line 40) | class E_Scene_Sources_Source_Rendu: public Element
  function wxXmlNode (line 68) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_volumes.cpp
  function Element (line 70) | Element* E_Scene_Volumes::AppendFilsByType(ELEMENT_TYPE etypefils,const ...
  function wxXmlNode (line 79) | wxXmlNode* E_Scene_Volumes::SaveXMLCoreDoc(wxXmlNode* NoeudParent)
  function wxXmlNode (line 86) | wxXmlNode* E_Scene_Volumes::SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_volumes.h
  function class (line 39) | class E_Scene_Volumes: public Element

FILE: src/isimpa/data_manager/tree_scene/e_scene_volumes_volume.h
  function class (line 43) | class E_Scene_Volumes_Volume: public E_Drawable

FILE: src/isimpa/data_manager/tree_scene/e_scene_volumes_volume_proprietes.h
  function class (line 39) | class E_Scene_Volumes_Volume_Proprietes: public Element
  function wxXmlNode (line 71) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_scene/e_scene_volumes_volume_rendu.h
  function class (line 39) | class E_Scene_Volumes_Volume_Rendu: public Element
  function wxXmlNode (line 58) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_userpref/e_userprefitem.hpp
  class E_UserPreferenceItem (line 42) | class E_UserPreferenceItem: public Element
    method E_UserPreferenceItem (line 45) | E_UserPreferenceItem(Element* parent,wxString Nom, wxXmlNode* nodeElem...
    method E_UserPreferenceItem (line 51) | E_UserPreferenceItem(Element* parent,wxString Nom,ELEMENT_TYPE _type ,...
    method wxXmlNode (line 57) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/data_manager/tree_userpref/e_userprefitemisotemplate.hpp
  class E_UserPreferenceItemIsoTemplate (line 46) | class E_UserPreferenceItemIsoTemplate: public E_UserPreferenceItem
    method E_UserPreferenceItemIsoTemplate (line 52) | E_UserPreferenceItemIsoTemplate(Element* parent,wxString Nom, wxXmlNod...
    method IsContainsProperties (line 61) | virtual bool IsContainsProperties()
    method InitProp (line 65) | virtual void InitProp()
    method wxXmlNode (line 105) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)
    method Modified (line 111) | virtual void Modified(Element* eModif)

FILE: src/isimpa/data_manager/tree_userpref/e_userprefnode.hpp
  class E_UserPreferenceNode (line 44) | class E_UserPreferenceNode: public Element
    method E_UserPreferenceNode (line 47) | E_UserPreferenceNode(Element* parent,wxString Nom, wxXmlNode* nodeElem...
    method E_UserPreferenceNode (line 56) | E_UserPreferenceNode(Element* parent,wxString Nom,ELEMENT_TYPE _type ,...
    method AppendSons (line 63) | void AppendSons(wxXmlNode* nodeElement)
    method Element (line 92) | virtual Element* AppendFilsByType(ELEMENT_TYPE etypefils,const wxStrin...
    method wxXmlNode (line 107) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/doxDoc/demos/demo_doxygen.h
  function class (line 55) | class wxCustomEntryDialog : public wxDialog

FILE: src/isimpa/doxDoc/demos/demo_translation_1.h
  function main (line 29) | void main()

FILE: src/isimpa/doxDoc/demos/demos_add_element.h
  function class (line 41) | class E_Scene_Projet_Demo: public Element

FILE: src/isimpa/doxDoc/demos/demos_add_element_drawable.h
  function class (line 41) | class E_Scene_Projet_Demo: public E_Drawable
  function DrawItem (line 59) | void DrawItem( vec4 unitizeValue )
  function wxXmlNode (line 68) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/doxDoc/demos/demos_add_element_parent.h
  function class (line 32) | class E_Scene_Projet: public Element

FILE: src/isimpa/doxDoc/demos/demos_add_element_withprop.h
  function class (line 41) | class E_Scene_Projet_Demo: public Element
  function wxXmlNode (line 59) | wxXmlNode* SaveXMLDoc(wxXmlNode* NoeudParent)

FILE: src/isimpa/main/i_simpa_main.cpp
  function OnSelectVertex (line 126) | OnSelectVertex PARAM_BOUND_ON_SELECT_FACES
  function OnSelectPosition (line 131) | void OnSelectPosition(const vec3 position)
  function OnSceneElementEvent (line 137) | void OnSceneElementEvent(wxCommandEvent& eventElement)
  function OnReportElementEvent (line 141) | void OnReportElementEvent(wxCommandEvent& eventElement)
  function OnCoreElementEvent (line 145) | void OnCoreElementEvent(wxCommandEvent& eventElement)
  function OnUserConfigElementEvent (line 149) | void OnUserConfigElementEvent(wxCommandEvent& eventElement)
  function wxString (line 977) | wxString MainUiFrame::AskApplicationDataDir(wxString defaultApplicationD...

FILE: src/isimpa/main/i_simpa_main.h
  function class (line 54) | class MainUiFrame : public wxFrame
  function class (line 336) | class CustomLog : public wxLog
  function class (line 397) | class ISimpaApp : public wxApp
  function OnInit (line 430) | bool OnInit()
  function virtual (line 562) | virtual void OnEventLoopEnter( wxEventLoopBase *  loop)
  function OnKeyDown (line 574) | void OnKeyDown(wxKeyEvent& kEvent)
  function OnKeyUp (line 590) | void OnKeyUp(wxKeyEvent& kEvent)
  function OnFileDrop (line 605) | void OnFileDrop(wxDropFilesEvent& dropEvent)

FILE: src/isimpa/manager/alphanum.hpp
  type doj (line 53) | namespace doj
    function alphanum_isdigit (line 65) | bool alphanum_isdigit(int c)
    function alphanum_isdigit (line 74) | bool alphanum_isdigit(const char c)
    function alphanum_impl (line 95) | int alphanum_impl(const char *l, const char *r)
    function alphanum_comp (line 184) | int alphanum_comp(const lT& left, const rT& right)
    function alphanum_comp (line 223) | int alphanum_comp(char* l, char* r)
    function alphanum_comp (line 233) | int alphanum_comp(const char* l, const char* r)
    function alphanum_comp (line 243) | int alphanum_comp(char* l, const char* r)
    function alphanum_comp (line 253) | int alphanum_comp(const char* l, char* r)
    function alphanum_comp (line 263) | int alphanum_comp(const std::string& l, char* r)
    function alphanum_comp (line 272) | int alphanum_comp(char* l, const std::string& r)
    function alphanum_comp (line 281) | int alphanum_comp(const std::string& l, const char* r)
    function alphanum_comp (line 290) | int alphanum_comp(const char* l, const std::string& r)
    type alphanum_less (line 307) | struct alphanum_less : public std::binary_function<Ty, Ty, bool>
  function main (line 324) | int main()

FILE: src/isimpa/manager/bigfilereader.cpp
  function wxString (line 108) | wxString BigFileReader::GetLine()

FILE: src/isimpa/manager/bigfilereader.h
  function class (line 47) | class BigFileReader

FILE: src/isimpa/manager/boollocker.h
  function class (line 33) | class BoolLocker
  function Release (line 45) | void Release()

FILE: src/isimpa/manager/interf_logger.hpp
  class InterfLogger (line 37) | class InterfLogger

FILE: src/isimpa/manager/lifetimeWitness.hpp
  type t_outsideOperator (line 39) | struct t_outsideOperator
  type t_baseEvtCatcher (line 44) | struct t_baseEvtCatcher
    method OnModified (line 46) | virtual void OnModified(const int& elid){}
    method OnNewChildElement (line 47) | virtual void OnNewChildElement(const int& childType,const int& parenti...

FILE: src/isimpa/manager/modelRetriever.cpp
  class DotTriangleTest (line 36) | class DotTriangleTest
    method DotTriangleTest (line 40) | DotTriangleTest(octreeTool::coordPrecision _dot[3],octreeTool::spaceEl...
    method CheckCandidate (line 47) | bool CheckCandidate(const octreeTool::elementSize& staticCandidateIndex)
    method dotIsInGroup (line 74) | bool dotIsInGroup(float& distance)

FILE: src/isimpa/manager/modelRetriever.hpp
  class ModelRetriever (line 46) | class ModelRetriever
    type groupe_octree (line 50) | struct groupe_octree
      method groupe_octree (line 52) | groupe_octree()

FILE: src/isimpa/manager/processManager.cpp
  function uiRunExe (line 156) | bool uiRunExe(wxFrame* parent,const wxString& path,const wxString& label...

FILE: src/isimpa/manager/processManager.h
  function class (line 42) | class processManager : public wxProcess

FILE: src/isimpa/manager/sppsString.cpp
  function float_t (line 38) | float_t Convertor::ToFloat( const wxString& sval )
  function float_t (line 43) | float_t Convertor::ToFloat(const std::string& sval) {
  function SplitString (line 69) | void SplitString(wxString src,wxString delimiter,wxArrayString& dst)
  function SplitString (line 77) | void SplitString(wxString src,wxString delimiter,std::vector<wxFloat32>&...
  type lconv (line 123) | struct lconv
  type lconv (line 124) | struct lconv

FILE: src/isimpa/manager/stringParser.h
  function class (line 53) | class stringParser

FILE: src/isimpa/manager/stringTools.h
  function string (line 50) | string toString( T value )
  function string (line 63) | string Concatenate( T valuel, U valuer )
  function class (line 92) | class Convertor{

FILE: src/isimpa/nc_curves.cpp
  class nc_curves (line 43) | class nc_curves
    method nc_curves (line 48) | nc_curves(){

FILE: src/isimpa/resources/Bitmaps/iso/makerrvb.py
  function bluefilter (line 2) | def bluefilter(val):
  function zeroifneg (line 10) | def zeroifneg(val):

FILE: src/isimpa/resources/SystemScript/check_version/__init__.py
  function versionToCode (line 11) | def versionToCode(major, minor, revision):
  function check_version (line 15) | def check_version():

FILE: src/isimpa/resources/SystemScript/graphy/all_tests.py
  function ModuleName (line 23) | def ModuleName(filename, base_dir):
  function FindTestModules (line 33) | def FindTestModules():
  function AllTests (line 45) | def AllTests():

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/__init__.py
  function _GetChartFactory (line 24) | def _GetChartFactory(chart_class, display_class):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/bar_chart_test.py
  class BarChartTest (line 29) | class BarChartTest(base_encoder_test.XYChartTest):
    method GetChart (line 31) | def GetChart(self, *args, **kwargs):
    method AddToChart (line 34) | def AddToChart(self, chart, points, color=None, label=None):
    method testChartType (line 37) | def testChartType(self):
    method testSingleBarCase (line 47) | def testSingleBarCase(self):
    method testHorizontalScaling (line 52) | def testHorizontalScaling(self):
    method testZeroPoint (line 64) | def testZeroPoint(self):
    method testLabelsInCorrectOrder (line 77) | def testLabelsInCorrectOrder(self):
    method testLabelRangeDefaultsToDataScale (line 87) | def testLabelRangeDefaultsToDataScale(self):
    method testCanOverrideChbh (line 97) | def testCanOverrideChbh(self):
    method testDefaultBarChartStyle (line 104) | def testDefaultBarChartStyle(self):
    method testAutoBarSizing (line 115) | def testAutoBarSizing(self):
    method testAutoBarSpacing (line 133) | def testAutoBarSpacing(self):
    method testFractionalAutoBarSpacing (line 143) | def testFractionalAutoBarSpacing(self):
    method testStackedDataScaling (line 162) | def testStackedDataScaling(self):
    method testNegativeBars (line 179) | def testNegativeBars(self):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/base_encoder_test.py
  class TestEncoder (line 27) | class TestEncoder(encoders.BaseChartEncoder):
    method _GetType (line 29) | def _GetType(self, chart):
    method _GetDependentAxis (line 32) | def _GetDependentAxis(self, chart):
  class TestChart (line 36) | class TestChart(common.BaseChart):
    method __init__ (line 39) | def __init__(self, points=None):
    method AddData (line 44) | def AddData(self, points, color=None, label=None):
  class BaseChartTest (line 51) | class BaseChartTest(graphy_test.GraphyTest):
    method ExpectAxes (line 54) | def ExpectAxes(self, labels, positions):
    method GetChart (line 59) | def GetChart(self, *args, **kwargs):
    method AddToChart (line 67) | def AddToChart(self, chart, points, color=None, label=None):
    method setUp (line 74) | def setUp(self):
    method testImgAndUrlUseSameUrl (line 77) | def testImgAndUrlUseSameUrl(self):
    method testImgUsesHtmlEntitiesInUrl (line 82) | def testImgUsesHtmlEntitiesInUrl(self):
    method testParamsAreStrings (line 87) | def testParamsAreStrings(self):
    method testExtraParamsOverideDefaults (line 92) | def testExtraParamsOverideDefaults(self):
    method testExtraParamsCanUseLongNames (line 97) | def testExtraParamsCanUseLongNames(self):
    method testExtraParamsCanUseNewNames (line 101) | def testExtraParamsCanUseNewNames(self):
    method testEmptyParamsDropped (line 109) | def testEmptyParamsDropped(self):
    method testSizes (line 114) | def testSizes(self):
    method testChartType (line 122) | def testChartType(self):
    method testChartSizeConvertedToInt (line 125) | def testChartSizeConvertedToInt(self):
    method testUrlBase (line 129) | def testUrlBase(self):
    method testEnhancedEncoder (line 141) | def testEnhancedEncoder(self):
    method testUrlsEscaped (line 145) | def testUrlsEscaped(self):
    method testUrls_DefaultIsWithoutHtmlEntities (line 151) | def testUrls_DefaultIsWithoutHtmlEntities(self):
    method testUrls_HtmlEntities (line 158) | def testUrls_HtmlEntities(self):
    method testUrls_NoEscapeWithHtmlEntities (line 166) | def testUrls_NoEscapeWithHtmlEntities(self):
    method testUrls_NoHtmlEntities (line 175) | def testUrls_NoHtmlEntities(self):
    method testCanRemoveDefaultFormatters (line 183) | def testCanRemoveDefaultFormatters(self):
    method testFormattersWorkOnCopy (line 193) | def testFormattersWorkOnCopy(self):
  class XYChartTest (line 217) | class XYChartTest(BaseChartTest):
    method testImgAndUrlUseSameUrl (line 223) | def testImgAndUrlUseSameUrl(self):
    method testAddSeries (line 235) | def testAddSeries(self):
    method testAddSeriesReturnsValue (line 245) | def testAddSeriesReturnsValue(self):
    method testFlatSeries (line 252) | def testFlatSeries(self):
    method testEmptyPointsStillCreatesSeries (line 265) | def testEmptyPointsStillCreatesSeries(self):
    method testEmptySeriesDroppedFromParams (line 278) | def testEmptySeriesDroppedFromParams(self):
    method testDataSeriesCorrectlyConverted (line 293) | def testDataSeriesCorrectlyConverted(self):
    method testSeriesColors (line 309) | def testSeriesColors(self):
    method testSeriesCaption_NoCaptions (line 314) | def testSeriesCaption_NoCaptions(self):
    method testSeriesCaption_SomeCaptions (line 319) | def testSeriesCaption_SomeCaptions(self):
    method testThatZeroIsPreservedInCaptions (line 325) | def testThatZeroIsPreservedInCaptions(self):
    method testSeriesCaption_AllCaptions (line 334) | def testSeriesCaption_AllCaptions(self):
    method testDefaultColorsApplied (line 340) | def testDefaultColorsApplied(self):
    method testShowingAxes (line 345) | def testShowingAxes(self):
    method testAxisRanges (line 357) | def testAxisRanges(self):
    method testAxisLabels (line 368) | def testAxisLabels(self):
    method testGridBottomAxis (line 379) | def testGridBottomAxis(self):
    method testGridFloatingPoint (line 387) | def testGridFloatingPoint(self):
    method testGridLeftAxis (line 396) | def testGridLeftAxis(self):
    method testLabelGridBottomAxis (line 402) | def testLabelGridBottomAxis(self):
    method testLabelGridLeftAxis (line 411) | def testLabelGridLeftAxis(self):
    method testLabelGridBothAxes (line 420) | def testLabelGridBothAxes(self):
    method testDefaultDataScalingNotPersistant (line 432) | def testDefaultDataScalingNotPersistant(self):
    method FakeScale (line 444) | def FakeScale(self, data, old_min, old_max, new_min, new_max):
    method testDefaultDataScaling (line 449) | def testDefaultDataScaling(self):
    method testDefaultDataScalingAvoidsCropping (line 463) | def testDefaultDataScalingAvoidsCropping(self):
    method testExplicitDataScaling (line 477) | def testExplicitDataScaling(self):
    method testImplicitMinValue (line 492) | def testImplicitMinValue(self):
    method testImplicitMaxValue (line 507) | def testImplicitMaxValue(self):
    method testNoneCanAppearInData (line 522) | def testNoneCanAppearInData(self):
    method testResolveLabelCollision (line 531) | def testResolveLabelCollision(self):
    method testAdjustSingleLabelDoesNothing (line 564) | def testAdjustSingleLabelDoesNothing(self):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/encoders.py
  class BaseChartEncoder (line 25) | class BaseChartEncoder(object):
    method __init__ (line 44) | def __init__(self, chart):
    method Url (line 54) | def Url(self, width, height, use_html_entities=False):
    method Img (line 67) | def Img(self, width, height):
    method _GetType (line 73) | def _GetType(self, chart):
    method _GetFormatters (line 77) | def _GetFormatters(self):
    method _Params (line 90) | def _Params(self, chart):
    method _GetSizeParams (line 106) | def _GetSizeParams(self, chart):
    method _GetExtraParams (line 110) | def _GetExtraParams(self, chart):
    method _GetDataSeriesParams (line 114) | def _GetDataSeriesParams(self, chart):
    method _GetColors (line 134) | def _GetColors(self, chart):
    method _GetDataEncoder (line 143) | def _GetDataEncoder(self, chart):
    method _GetLegendParams (line 149) | def _GetLegendParams(self, chart):
    method _GetAxisLabelsAndPositions (line 155) | def _GetAxisLabelsAndPositions(self, axis, chart):
    method _GetAxisParams (line 159) | def _GetAxisParams(self, chart):
    method _GetGridParams (line 192) | def _GetGridParams(self, chart):
  class LineChartEncoder (line 213) | class LineChartEncoder(BaseChartEncoder):
    method _GetType (line 217) | def _GetType(self, chart):
    method _GetLineStyles (line 220) | def _GetLineStyles(self, chart):
    method _GetFormatters (line 233) | def _GetFormatters(self):
  class SparklineEncoder (line 239) | class SparklineEncoder(LineChartEncoder):
    method _GetType (line 243) | def _GetType(self, chart):
  class BarChartEncoder (line 247) | class BarChartEncoder(BaseChartEncoder):
    method __init__ (line 254) | def __init__(self, chart, style=None):
    method _GetType (line 265) | def _GetType(self, chart):
    method _GetAxisLabelsAndPositions (line 273) | def _GetAxisLabelsAndPositions(self, axis, chart):
    method _GetFormatters (line 282) | def _GetFormatters(self):
    method _ZeroPoint (line 289) | def _ZeroPoint(self, chart):
    method _ApplyBarChartStyle (line 301) | def _ApplyBarChartStyle(self, chart):
    method __GetStyle (line 341) | def __GetStyle(self):
    method __SetStyle (line 345) | def __SetStyle(self, value):
  class PieChartEncoder (line 352) | class PieChartEncoder(BaseChartEncoder):
    method __init__ (line 360) | def __init__(self, chart, is3d=False, angle=None):
    method _GetFormatters (line 372) | def _GetFormatters(self):
    method _GetType (line 378) | def _GetType(self, chart):
    method _GetDataSeriesParams (line 392) | def _GetDataSeriesParams(self, chart):
    method _GetColors (line 413) | def _GetColors(self, chart):
    method _GetAngleParams (line 426) | def _GetAngleParams(self, chart):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/line_chart_test.py
  class LineChartTest (line 28) | class LineChartTest(base_encoder_test.XYChartTest):
    method GetChart (line 30) | def GetChart(self, *args, **kwargs):
    method AddToChart (line 33) | def AddToChart(self, chart, points, color=None, label=None):
    method testChartType (line 36) | def testChartType(self):
    method testMarkers (line 39) | def testMarkers(self):
    method testLinePatterns (line 54) | def testLinePatterns(self):
    method testMultipleAxisLabels (line 59) | def testMultipleAxisLabels(self):
    method testAxisProperties (line 84) | def testAxisProperties(self):
  class SparklineTest (line 114) | class SparklineTest(LineChartTest):
    method GetChart (line 116) | def GetChart(self, *args, **kwargs):
    method testChartType (line 119) | def testChartType(self):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/pie_chart_test.py
  class PieChartTest (line 29) | class PieChartTest(base_encoder_test.BaseChartTest):
    method tearDown (line 31) | def tearDown(self):
    method GetChart (line 35) | def GetChart(self, *args, **kwargs):
    method AddToChart (line 38) | def AddToChart(self, chart, points, color=None, label=None):
    method testCanRemoveDefaultFormatters (line 41) | def testCanRemoveDefaultFormatters(self):
    method testChartType (line 45) | def testChartType(self):
    method testEmptyChart (line 51) | def testEmptyChart(self):
    method testChartCreation (line 56) | def testChartCreation(self):
    method testAddSegment (line 63) | def testAddSegment(self):
    method testAddMultipleSegments (line 70) | def testAddMultipleSegments(self):
    method testMultiplePies (line 84) | def testMultiplePies(self):
    method testMultiplePiesNo3d (line 99) | def testMultiplePiesNo3d(self):
    method testAddSegmentByIndex (line 106) | def testAddSegmentByIndex(self):
    method testSetColors (line 115) | def testSetColors(self):
    method testHugeSegmentSizes (line 124) | def testHugeSegmentSizes(self):
    method testSetSegmentSize (line 131) | def testSetSegmentSize(self):
    method testChartAngle (line 140) | def testChartAngle(self):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/util.py
  class SimpleDataEncoder (line 83) | class SimpleDataEncoder:
    method __init__ (line 89) | def __init__(self):
    method Encode (line 95) | def Encode(self, data):
    method _EncodeItem (line 98) | def _EncodeItem(self, x):
  class EnhancedDataEncoder (line 107) | class EnhancedDataEncoder:
    method __init__ (line 113) | def __init__(self):
    method Encode (line 121) | def Encode(self, data):
    method _EncodeItem (line 124) | def _EncodeItem(self, x):
  function EncodeUrl (line 133) | def EncodeUrl(base, params, escape_url, use_html_entities):
  function ShortenParameterNames (line 150) | def ShortenParameterNames(params):
  function StrJoin (line 165) | def StrJoin(delim, data):
  function JoinLists (line 170) | def JoinLists(**args):
  function EncodeData (line 188) | def EncodeData(chart, series, y_min, y_max, encoder):
  function ScaleData (line 217) | def ScaleData(data, old_min, old_max, new_min, new_max):

FILE: src/isimpa/resources/SystemScript/graphy/backends/google_chart_api/util_test.py
  class SimpleEncoderTest (line 26) | class SimpleEncoderTest(graphy_test.GraphyTest):
    method setUp (line 28) | def setUp(self):
    method testEmpty (line 31) | def testEmpty(self):
    method testSingle (line 34) | def testSingle(self):
    method testFull (line 37) | def testFull(self):
    method testRoundingError (line 41) | def testRoundingError(self):
    method testFloats (line 50) | def testFloats(self):
    method testOutOfRangeDropped (line 55) | def testOutOfRangeDropped(self):
    method testNoneDropped (line 60) | def testNoneDropped(self):
  class EnhandedEncoderTest (line 65) | class EnhandedEncoderTest(graphy_test.GraphyTest):
    method setUp (line 67) | def setUp(self):
    method testEmpty (line 70) | def testEmpty(self):
    method testFull (line 73) | def testFull(self):
    method testOutOfRangeDropped (line 77) | def testOutOfRangeDropped(self):
    method testNoneDropped (line 81) | def testNoneDropped(self):
  class ScaleTest (line 85) | class ScaleTest(graphy_test.GraphyTest):
    method testScaleIntegerData (line 89) | def testScaleIntegerData(self):
    method testScaleDataWithDifferentMinMax (line 106) | def testScaleDataWithDifferentMinMax(self):
    method testScaleFloatingPointData (line 111) | def testScaleFloatingPointData(self):
    method testScaleDataOverRealRange (line 120) | def testScaleDataOverRealRange(self):
    method testScalingLotsOfData (line 124) | def testScalingLotsOfData(self):
  class NameTest (line 131) | class NameTest(graphy_test.GraphyTest):
    method testLongNames (line 135) | def testLongNames(self):
    method testCantUseBothLongAndShortName (line 140) | def testCantUseBothLongAndShortName(self):

FILE: src/isimpa/resources/SystemScript/graphy/bar_chart.py
  class BarsStyle (line 26) | class BarsStyle(object):
    method __init__ (line 32) | def __init__(self, color):
  class BarChartStyle (line 36) | class BarChartStyle(object):
    method __init__ (line 55) | def __init__(self, bar_thickness=None,
  class BarStyle (line 73) | class BarStyle(BarChartStyle):
    method __init__ (line 75) | def __init__(self, *args, **kwargs):
  class BarChart (line 81) | class BarChart(common.BaseChart):
    method __init__ (line 91) | def __init__(self, points=None):
    method AddBars (line 100) | def AddBars(self, points, label=None, color=None):
    method GetDependentAxes (line 120) | def GetDependentAxes(self):
    method GetIndependentAxes (line 129) | def GetIndependentAxes(self):
    method GetDependentAxis (line 138) | def GetDependentAxis(self):
    method GetIndependentAxis (line 145) | def GetIndependentAxis(self):
    method GetMinMaxValues (line 152) | def GetMinMaxValues(self):

FILE: src/isimpa/resources/SystemScript/graphy/bar_chart_test.py
  class BarChartTest (line 27) | class BarChartTest(graphy_test.GraphyTest):
    method setUp (line 29) | def setUp(self):
    method tearDown (line 32) | def tearDown(self):
    method testBarStyleStillExists (line 36) | def testBarStyleStillExists(self):
    method testAddBarArgumentOrder (line 41) | def testAddBarArgumentOrder(self):
    method testGetDependentIndependentAxes (line 54) | def testGetDependentIndependentAxes(self):
    method testDependentIndependentAxis (line 73) | def testDependentIndependentAxis(self):

FILE: src/isimpa/resources/SystemScript/graphy/common.py
  class Marker (line 26) | class Marker(object):
    method __init__ (line 50) | def __init__(self, shape, color, size):
  class _BasicStyle (line 59) | class _BasicStyle(object):
    method __init__ (line 62) | def __init__(self, color):
  class DataSeries (line 66) | class DataSeries(object):
    method __init__ (line 99) | def __init__(self, points, label=None, style=None, markers=None, color...
    method _GetColor (line 124) | def _GetColor(self):
    method _SetColor (line 130) | def _SetColor(self, color):
    method _GetStyle (line 138) | def _GetStyle(self):
    method _SetStyle (line 141) | def _SetStyle(self, style):
  class AxisPosition (line 155) | class AxisPosition(object):
  class Axis (line 170) | class Axis(object):
    method __init__ (line 188) | def __init__(self, axis_min=None, axis_max=None):
  class BaseChart (line 206) | class BaseChart(object):
    method __init__ (line 234) | def __init__(self):
    method AddFormatter (line 253) | def AddFormatter(self, formatter):
    method AddSeries (line 257) | def AddSeries(self, points, color=None, style=None, markers=None,
    method GetDependentAxes (line 270) | def GetDependentAxes(self):
    method GetIndependentAxes (line 276) | def GetIndependentAxes(self):
    method GetDependentAxis (line 282) | def GetDependentAxis(self):
    method GetIndependentAxis (line 288) | def GetIndependentAxis(self):
    method _Clone (line 294) | def _Clone(self):
    method GetFormattedChart (line 312) | def GetFormattedChart(self):
    method GetMinMaxValues (line 321) | def GetMinMaxValues(self):
    method AddAxis (line 338) | def AddAxis(self, position, axis):
    method GetAxis (line 350) | def GetAxis(self, position):
    method SetAxis (line 370) | def SetAxis(self, position, axis):
    method _GetAxes (line 384) | def _GetAxes(self):
    method _GetBottom (line 394) | def _GetBottom(self):
    method _SetBottom (line 397) | def _SetBottom(self, value):
    method _GetLeft (line 403) | def _GetLeft(self):
    method _SetLeft (line 406) | def _SetLeft(self, value):
    method _GetRight (line 412) | def _GetRight(self):
    method _SetRight (line 415) | def _SetRight(self, value):
    method _GetTop (line 421) | def _GetTop(self):
    method _SetTop (line 424) | def _SetTop(self, value):

FILE: src/isimpa/resources/SystemScript/graphy/common_test.py
  class CommonTest (line 26) | class CommonTest(graphy_test.GraphyTest):
    method setUp (line 28) | def setUp(self):
    method tearDown (line 31) | def tearDown(self):
    method testDependentAxis (line 34) | def testDependentAxis(self):
    method testAxisAssignment (line 38) | def testAxisAssignment(self):
    method testAxisConstruction (line 53) | def testAxisConstruction(self):
    method testGetDependentIndependentAxes (line 61) | def testGetDependentIndependentAxes(self):
    method testAddSeries (line 71) | def testAddSeries(self):
    method testDataSeriesStyles (line 83) | def testDataSeriesStyles(self):
    method testDataSeriesArgumentOrder (line 95) | def testDataSeriesArgumentOrder(self):

FILE: src/isimpa/resources/SystemScript/graphy/formatters.py
  function AutoLegend (line 32) | def AutoLegend(chart):
  class AutoColor (line 48) | class AutoColor(object):
    method __init__ (line 55) | def __init__(self):
    method __call__ (line 61) | def __call__(self, chart):
  class AutoScale (line 71) | class AutoScale(object):
    method __init__ (line 87) | def __init__(self, buffer=0.05):
    method __call__ (line 95) | def __call__(self, chart):
  class LabelSeparator (line 119) | class LabelSeparator(object):
    method __init__ (line 125) | def __init__(self, left=None, right=None, bottom=None):
    method __call__ (line 130) | def __call__(self, chart):
    method AdjustLabels (line 135) | def AdjustLabels(self, axis, minimum_label_spacing):
  function InlineLegend (line 172) | def InlineLegend(chart):

FILE: src/isimpa/resources/SystemScript/graphy/formatters_test.py
  class InlineLegendTest (line 25) | class InlineLegendTest(graphy_test.GraphyTest):
    method setUp (line 27) | def setUp(self):
    method testLabelsAdded (line 34) | def testLabelsAdded(self):
    method testLabelPositionedCorrectly (line 37) | def testLabelPositionedCorrectly(self):
    method testRegularLegendSuppressed (line 41) | def testRegularLegendSuppressed(self):
  class AutoScaleTest (line 45) | class AutoScaleTest(graphy_test.GraphyTest):
    method setUp (line 47) | def setUp(self):
    method testNormalCase (line 51) | def testNormalCase(self):
    method testKeepsDataAwayFromEdgesByDefault (line 56) | def testKeepsDataAwayFromEdgesByDefault(self):
    method testDoNothingIfNoData (line 62) | def testDoNothingIfNoData(self):
    method testKeepMinIfSet (line 72) | def testKeepMinIfSet(self):
    method testKeepMaxIfSet (line 78) | def testKeepMaxIfSet(self):
    method testOtherDependentAxesAreAlsoSet (line 84) | def testOtherDependentAxesAreAlsoSet(self):
    method testRightSetsLeft (line 93) | def testRightSetsLeft(self):

FILE: src/isimpa/resources/SystemScript/graphy/graphy_test.py
  class GraphyTest (line 22) | class GraphyTest(unittest.TestCase):
    method assertIn (line 25) | def assertIn(self, a, b, msg=None):
    method assertNotIn (line 31) | def assertNotIn(self, a, b, msg=None):
    method Param (line 37) | def Param(self, param_name, chart=None):
  function main (line 44) | def main():

FILE: src/isimpa/resources/SystemScript/graphy/line_chart.py
  class LineStyle (line 24) | class LineStyle(object):
    method __init__ (line 56) | def __init__(self, width, on, off, color=None):
    method solid (line 64) | def solid(cls):
    method dashed (line 68) | def dashed(cls):
    method dotted (line 72) | def dotted(cls):
    method thick_solid (line 76) | def thick_solid(cls):
    method thick_dashed (line 80) | def thick_dashed(cls):
    method thick_dotted (line 84) | def thick_dotted(cls):
  class LineChart (line 88) | class LineChart(common.BaseChart):
    method __init__ (line 92) | def __init__(self, points=None):
    method AddLine (line 97) | def AddLine(self, points, label=None, color=None,
    method AddSeries (line 124) | def AddSeries(self, points, color=None, style=LineStyle.solid, markers...
  class Sparkline (line 134) | class Sparkline(LineChart):

FILE: src/isimpa/resources/SystemScript/graphy/line_chart_test.py
  class LineChartTest (line 30) | class LineChartTest(graphy_test.GraphyTest):
    method tearDown (line 32) | def tearDown(self):
    method testAddSeries (line 36) | def testAddSeries(self):
    method testAddLineArgumentOrder (line 50) | def testAddLineArgumentOrder(self):
  class LineStyleTest (line 67) | class LineStyleTest(graphy_test.GraphyTest):
    method tearDown (line 69) | def tearDown(self):
    method testPresets (line 72) | def testPresets(self):
    method testLineStyleByValueGivesWarning (line 79) | def testLineStyleByValueGivesWarning(self):

FILE: src/isimpa/resources/SystemScript/graphy/pie_chart.py
  class Segment (line 25) | class Segment(common.DataSeries):
    method __init__ (line 33) | def __init__(self, size, label=None, color=None):
    method _GetSize (line 44) | def _GetSize(self):
    method _SetSize (line 47) | def _SetSize(self, value):
    method _GetColor (line 55) | def _GetColor(self):
    method _SetColor (line 58) | def _SetColor(self, color):
  class PieChart (line 65) | class PieChart(common.BaseChart):
    method __init__ (line 74) | def __init__(self, points=None, labels=None, colors=None):
    method AddPie (line 97) | def AddPie(self, points, labels=None, colors=None):
    method AddSegments (line 122) | def AddSegments(self, points, labels, colors):
    method AddSegment (line 135) | def AddSegment(self, size, label=None, color=None, pie_index=0):
    method AddSeries (line 159) | def AddSeries(self, points, color=None, style=None, markers=None, labe...
    method SetColors (line 171) | def SetColors(self, *colors):

FILE: src/isimpa/resources/SystemScript/graphy/pie_chart_test.py
  class SegmentTest (line 25) | class SegmentTest(graphy_test.GraphyTest):
    method setUp (line 27) | def setUp(self):
    method testSegmentOrder (line 31) | def testSegmentOrder(self):
  class PieChartTest (line 43) | class PieChartTest(graphy_test.GraphyTest):
    method tearDown (line 45) | def tearDown(self):
    method testNegativeSegmentSizes (line 48) | def testNegativeSegmentSizes(self):
    method testAddSegmentOrder (line 57) | def testAddSegmentOrder(self):
    method testAddSegmentsOrder (line 70) | def testAddSegmentsOrder(self):
    method testAddPie (line 82) | def testAddPie(self):
    method testAddSegmentToPie (line 97) | def testAddSegmentToPie(self):

FILE: src/isimpa/resources/SystemScript/graphy/util.py
  function _IsColor (line 1) | def _IsColor(color):

FILE: src/isimpa/resources/SystemScript/job_tool/__init__.py
  function GetCurrentProjectPath (line 10) | def GetCurrentProjectPath():
  class job (line 15) | class job(object):
    method __init__ (line 20) | def __init__(self,params):
    method __init__ (line 23) | def __init__(self,jobname,idel):
    method _jobinit_ (line 26) | def _jobinit_(self,idel):
    method to_str (line 28) | def to_str(self):
    method Execute (line 30) | def Execute(self):
    method from_str (line 32) | def from_str(self,params):
  class job_run (line 38) | class job_run(job):
    method _jobinit_ (line 42) | def _jobinit_(self,idel):
    method to_str (line 44) | def to_str(self):
    method Execute (line 46) | def Execute(self):
    method from_str (line 50) | def from_str(self,params):
  class job_openproject (line 57) | class job_openproject(job):
    method _jobinit_ (line 61) | def _jobinit_(self,idel):
    method to_str (line 63) | def to_str(self):
    method Execute (line 65) | def Execute(self):
    method from_str (line 68) | def from_str(self,params):
  class job_saveproject (line 79) | class job_saveproject(job):
    method _jobinit_ (line 83) | def _jobinit_(self,idel):
    method to_str (line 85) | def to_str(self):
    method Execute (line 87) | def Execute(self):
    method from_str (line 89) | def from_str(self,params):
  class JobManager (line 96) | class JobManager(object):
    method appendjob (line 100) | def appendjob(self,jobname,identifier):
    method __init__ (line 106) | def __init__(self):
    method ExecJobs (line 109) | def ExecJobs(self,idel):
    method AddOpenProjectIfChanges (line 112) | def AddOpenProjectIfChanges(self):
    method AddRun (line 117) | def AddRun(self,idel):
    method ClearJobLst (line 121) | def ClearJobLst(self,idel):
    method ImportJobLst (line 124) | def ImportJobLst(self,idel):
    method ExportJobLst (line 126) | def ExportJobLst(self,idel):
    method PrintJobLst (line 128) | def PrintJobLst(self,idel):
  class manager (line 133) | class manager:
    method __init__ (line 134) | def __init__(self):
    method getmenu (line 140) | def getmenu(self,typeel,idel,menu):

FILE: src/isimpa/resources/SystemScript/moveto_vertex/__init__.py
  class manager (line 10) | class manager:
    method __init__ (line 11) | def __init__(self):
    method getmenu (line 13) | def getmenu(self,typeel,idel,menu):
    method onmovetoothergroup (line 18) | def onmovetoothergroup(self,elid):

FILE: src/isimpa/resources/SystemScript/new_element_witness/__init__.py
  class ElementWatcher (line 9) | class ElementWatcher:
    method __init__ (line 10) | def __init__(self,elementToWatch,func):
    method OnUpdate (line 17) | def OnUpdate(self,elid):
  function LinkElementCreationWithFunction (line 28) | def LinkElementCreationWithFunction(element,func):

FILE: src/isimpa/resources/SystemScript/preceiv_sourceTracker/__init__.py
  class PositionUpdater (line 14) | class PositionUpdater:
    method __init__ (line 19) | def __init__(self,receiverId,isPositionTracker=False):
    method Unlink (line 28) | def Unlink(self):
    method OnSourcePositionChange (line 30) | def OnSourcePositionChange(self,idsourcepos):
    method OnSourceLabelChange (line 45) | def OnSourceLabelChange(self,idsource):
    method UpdateLinker (line 60) | def UpdateLinker(self):
  function LinkSourcePositionWithReceiverPosition (line 86) | def LinkSourcePositionWithReceiverPosition(sourceId,ReceiverId):
  function LinkSourcePositionWithReceiverOrientation (line 104) | def LinkSourcePositionWithReceiverOrientation(sourceId,ReceiverId):
  class managerLinkWithSourcePosition (line 119) | class managerLinkWithSourcePosition:
    method __init__ (line 120) | def __init__(self):
    method UnlinkReceiverDir (line 124) | def UnlinkReceiverDir(self,idel):
    method AskUserToSelectASource (line 130) | def AskUserToSelectASource(self):
    method LinkPositionWithSourcePosition (line 152) | def LinkPositionWithSourcePosition(self,idel):
    method LinkWithSourcePosition (line 157) | def LinkWithSourcePosition(self,idel):
    method getmenu (line 161) | def getmenu(self,typeel,idel,menu):

FILE: src/isimpa/resources/SystemScript/preceiv_sourceTracker/__project_loading__.py
  function CheckPonctTracker (line 5) | def CheckPonctTracker():

FILE: src/isimpa/resources/SystemScript/recp_res_tool/__init__.py
  function GetMixedLevel (line 7) | def GetMixedLevel(folderwxid):
  function SaveLevel (line 39) | def SaveLevel(tab,path):
  function dofusion (line 52) | def dofusion(folderwxid, path):
  class manager (line 58) | class manager:
    method __init__ (line 59) | def __init__(self):
    method getmenu (line 61) | def getmenu(self,typeel,idel,menu):
    method OnFusion (line 70) | def OnFusion(self,idel):

FILE: src/isimpa/resources/SystemScript/recp_tool/__init__.py
  function MakeLineRecp (line 13) | def MakeLineRecp(recpgroupindice,startpoint=[0,0,0],quantity=1,step=[1,0...
  function MakeGridRecp (line 37) | def MakeGridRecp(recpgroupindice,startpoint=[0,0,0],quantityline=1,quant...
  class manager (line 42) | class manager:
    method __init__ (line 43) | def __init__(self):
    method getmenu (line 49) | def getmenu(self,typeel,idel,menu):
    method makeline (line 58) | def makeline(self,idel):
    method align_on_same_point (line 92) | def align_on_same_point(self,idel):
    method rotate (line 110) | def rotate(self,idgrp):
    method translate (line 154) | def translate(self,idgrp):

FILE: src/isimpa/resources/SystemScript/sample/__ui_startup__.py
  function nbsource (line 1) | def nbsource():

FILE: src/isimpa/resources/SystemScript/source_tools/__init__.py
  function MakeLineSrc (line 13) | def MakeLineSrc(srcgroupindice,startpoint=[0,0,0],quantity=1,step=[1,0,0]):
  class manager (line 38) | class manager:
    method __init__ (line 39) | def __init__(self):
    method getmenu (line 45) | def getmenu(self,typeel,idel,menu):
    method makeline (line 56) | def makeline(self,idel):
    method set_grp_src_activation (line 84) | def set_grp_src_activation(self,idgrp,newstate):
    method enable_grp_sources (line 90) | def enable_grp_sources(self,idgrp):
    method disable_grp_sources (line 92) | def disable_grp_sources(self,idgrp):
    method rotate_src (line 94) | def rotate_src(self,idgrp):
    method translate_src (line 144) | def translate_src(self,idgrp):

FILE: src/isimpa/resources/SystemScript/uilocale/__init__.py
  function dummy_notranslation (line 5) | def dummy_notranslation(msg):
  function InstallUiModule (line 9) | def InstallUiModule(pathname,language):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/__init__.py
  function ReplaceNanByZero (line 15) | def ReplaceNanByZero(el):
  function GetPonctualReceiversData (line 23) | def GetPonctualReceiversData(folderwxid):
  function SaveDataToCSV (line 70) | def SaveDataToCSV(pr_data,workingdir):
  function MakeHtmlReport (line 117) | def MakeHtmlReport(folderwxid):
  class manager (line 154) | class manager:
    method __init__ (line 155) | def __init__(self):
    method getmenu (line 157) | def getmenu(self,typeel,idel,menu):
    method OnMakeHtmlReport (line 169) | def OnMakeHtmlReport(self,elid):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/besttick.py
  function frange (line 3) | def frange(limit1, limit2 = None, increment = 1.):
  function GetTicksFromMinMax (line 26) | def GetTicksFromMinMax( vmin, vmax):
  class AxesLabelsCreator (line 48) | class AxesLabelsCreator:
    method __init__ (line 49) | def __init__(self):
    method setmargin (line 52) | def setmargin(self, percentage=5):
    method feed (line 56) | def feed(self, lst):
    method GetTicksLabels (line 63) | def GetTicksLabels(self,label_format="%f"):
    method GetTicksPosition (line 65) | def GetTicksPosition(self):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/buildhtmlreport.py
  function GoogleEncode (line 9) | def GoogleEncode(data):
  function supprime_accent (line 11) | def supprime_accent(ligne):
  function _ (line 36) | def _(msg):
  function strtodigit (line 40) | def strtodigit(strin):
  function SortedDictByKeys (line 50) | def SortedDictByKeys(adict):
  function ReplaceHtmlTags (line 56) | def ReplaceHtmlTags(  webpage_path, replace_dict, outwebpage ):
  function MakePageOne (line 76) | def MakePageOne( tags_dict, pr_data, sr_data ):
  class ReportBuilder (line 205) | class ReportBuilder:
    method __init__ (line 206) | def __init__(self):
    method SetPonctualReceiverData (line 209) | def SetPonctualReceiverData(self, prdata):
    method SetSurfaceReceiverData (line 211) | def SetSurfaceReceiverData(self, rsdata):
    method BuildHtmlCode (line 213) | def BuildHtmlCode(self, html_code_path, outfolderpath, language):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/encode.js
  function encode_utf8 (line 1) | function encode_utf8( s ){

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/recsurf_report_stats.py
  function TodBRsurf (line 16) | def TodBRsurf( wj ):
  function GetMinMaxRs (line 22) | def GetMinMaxRs( rsData, rsindex ):
  function GetDistributionAreaBySoundLevel (line 34) | def GetDistributionAreaBySoundLevel( rsData, rsindex, arr_ticks):
  function BuildSoundLevelDistributionArray (line 50) | def BuildSoundLevelDistributionArray( surfaceReceiverFilePath ):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/SppsReportSample/ressource/script.js
  function xGetElementsByClassName (line 130) | function xGetElementsByClassName(clsName, parentEle, tagName) {
  function GetStyleUrl (line 149) | function GetStyleUrl() {
  function fixPNG (line 171) | function fixPNG(element) {
  function artHasClass (line 191) | function artHasClass(el, cls) {
  function gTranslateFix (line 197) | function gTranslateFix() {
  function Insert_Separators (line 240) | function Insert_Separators() {
  function Menu_IE6Setup (line 262) | function Menu_IE6Setup() {
  function artButtonsSetupJsHover (line 298) | function artButtonsSetupJsHover(className) {

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/recp_res_norm/__init__.py
  function _ (line 7) | def _(msg):
  function MakeSPLNormalGrid (line 22) | def MakeSPLNormalGrid(folderwxid, save_as):
  class manager (line 87) | class manager:
    method __init__ (line 88) | def __init__(self):
    method getmenu (line 92) | def getmenu(self,typeel,idel,menu):
    method OnMakeSPLNormalGrid (line 100) | def OnMakeSPLNormalGrid(self,idel):

FILE: src/isimpa/resources/doc/tutorial/script_tutorial/user_core/__init_.py
  function _ (line 5) | def _(msg):
  class user_core (line 21) | class user_core(ui.element):
    method __init__ (line 25) | def __init__(self,idel):
    method gettreelabel (line 51) | def gettreelabel(self):
    method geticonid (line 56) | def geticonid(self,state_open):
    method modified (line 67) | def modified(self,idelmodified):

FILE: src/lib_interface/Core/Model3D.h
  function class (line 43) | class t_faceIndex {
  function Set (line 53) | void Set(long _face,long _group) { f=_face;g=_group; }
  function Set (line 54) | void Set(const t_faceIndex *_faceIndex) { f=_faceIndex->f;g=_faceIndex->...
  function Set (line 55) | void Set(const t_faceIndex &_faceIndex) { f=_faceIndex.f;g=_faceIndex.g;}
  type triangleFace (line 65) | struct triangleFace {
  type SFace3D (line 74) | struct SFace3D
  type SGroup3D (line 83) | struct SGroup3D

FILE: src/lib_interface/Core/mathlib.h
  function namespace (line 52) | namespace core_mathlib
  type base_vec3 (line 239) | typedef base_vec3<decimal> vec3;
  type base_vec3 (line 240) | typedef base_vec3<double> dvec3;
  function vec3 (line 243) | inline vec3 dvec3_to_vec3(const dvec3 &v1) {
  function dvec3 (line 247) | inline dvec3 vec3_to_dvec3(const vec3 &v1) {
  function class (line 260) | class vec2 {
  function vec2 (line 274) | const vec2 operator*(decimal _f) const { return vec2(this->x * _f,this->...
  function vec2 (line 275) | const vec2 operator/(decimal _f) const {
  function vec2 (line 313) | vec2 closestPointOnSegment(const vec2 &vA, const vec2 &vB) {
  function decimal (line 320) | decimal projectionOnLine(const vec2 &vA, const vec2 &vB) {
  function vec2 (line 325) | vec2 lerp(vec2 &u, vec2 &v, decimal factor) { return ((u * (1 - factor))...
  function decimal (line 326) | decimal angle(void) { return (decimal)atan2(this->y,this->x); }
  function decimal (line 327) | decimal angle(const vec2 &v) { return (decimal)atan2(v.y-this->y,v.x-thi...
  function Cross (line 337) | inline void Cross(const vec3 &v1,const vec3 &v2,vec3 &vout) {
  function vec2 (line 353) | inline vec2::vec2(const vec3 &_v) {
  function Vector (line 360) | void Vector(const  base_vec3<base_t> &vp1, const  base_vec3<base_t> &vp2...
  function decimal (line 375) | inline decimal Determinant(const vec3 &vp1, const vec3 &vp2, const vec3 ...
  function class (line 402) | class vec4 {
  function operator (line 412) | int operator!=(const vec4 &_v) { return !(*this == _v); }
  function vec4 (line 415) | const vec4 operator*(decimal _f) const { return vec4(this->x * _f,this->...
  function vec4 (line 416) | const vec4 operator/(decimal _f) const {
  function vec2 (line 485) | inline vec2::vec2(const vec4 &_v) {
  function colinear (line 491) | bool colinear( const base_vec3<base_t>& A, const base_vec3<base_t>& B, c...
  function class (line 507) | class ivec2 {
  function operator (line 515) | int operator!=(const ivec2 &iv) { return !(*this == iv); }
  function ivec2 (line 519) | const ivec2 operator/(long _i) const { return ivec2(this->a / _i,this->b...
  function operator (line 532) | operator const long*() const { return this->i; }
  function set (line 536) | void set(long _a,long _b) { this->a = _a; this->b = _b; }
  function reset (line 537) | void reset(void) { this->a = this->b = 0; }
  function swap (line 538) | void swap(ivec2 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 539) | void swap(ivec2 *iv) { this->swap(*iv); }
  function class (line 558) | class ivec3 {
  function ivec3 (line 575) | const ivec3 operator/(long _i) const { return ivec3(this->a / _i,this->b...
  function operator (line 589) | operator const long*() const { return this->i; }
  function set (line 591) | void set(long _a,long _b,long _c) { this->a = _a; this->b = _b; this->c ...
  function set (line 592) | void set(int tab[3]) { this->a = tab[0]; this->b = tab[1]; this->c = tab...
  function set (line 593) | void set(int index, const long& value) { i[index] = value; }
  function reset (line 594) | void reset(void) { this->a = this->b = this->c = 0; }
  function swap (line 595) | void swap(ivec3 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 596) | void swap(ivec3 *iv) { this->swap(*iv); }
  function ivec2 (line 600) | ivec2 sideVertices(short idside)
  function class (line 632) | class ivec4 {
  function operator (line 643) | int operator!=(const ivec4 &iv) { return !(*this == iv); }
  function ivec4 (line 647) | const ivec4 operator/(long _i) const { return ivec4(this->a / _i,this->b...
  function operator (line 661) | operator const long*() const { return this->i; }
  function const (line 663) | const long &operator[](int _i) const { return this->i[_i]; }
  function set (line 665) | void set(long _a,long _b,long _c,long _d) { this->a = _a; this->b = _b; ...
  function reset (line 666) | void reset(void) { this->a = this->b = this->c = this->d = 0; }
  function swap (line 667) | void swap(ivec4 &iv) { long tmp=a; a=iv.a; iv.a=tmp; tmp=b; b=iv.b; iv.b...
  function swap (line 668) | void swap(ivec4 *iv) { this->swap(*iv); }
  function ivec3 (line 678) | inline ivec3::ivec3(const ivec4 &iv) {
  function decimal (line 689) | inline decimal CalcTetraVolume(vec3 A,vec3 B,vec3 C,vec3 D)
  function vec3 (line 706) | inline vec3 GetGTetra(const vec3& A,const vec3& B,const vec3& C,const ve...
  function decimal (line 711) | decimal GetAireTriangle(const base_vec3<base_t>& a,const base_vec3<base_...
  function DotInTetra (line 747) | static bool DotInTetra(const vec3& dotTest,const vec3& v1,const vec3& v2...
  function LineLineIntersect (line 764) | inline int LineLineIntersect(
  function decimal (line 827) | inline decimal ClosestDistanceBetweenDotAndTriangle(

FILE: src/lib_interface/coreString.cpp
  function entier (line 53) | entier CoreString::ToInt(const CoreString& strtoconv)
  function decimal (line 57) | decimal CoreString::ToFloat(const CoreString& strtoconv)
  function entier (line 84) | entier CoreString::ToInt() const
  function decimal (line 89) | decimal CoreString::ToFloat() const

FILE: src/lib_interface/coreString.h
  function class (line 53) | class CoreString : public std::string

FILE: src/lib_interface/coreTypes.h
  type t_FreqUsage (line 53) | struct t_FreqUsage
  type t_Source_Freq (line 66) | struct t_Source_Freq
  type t_Bruit_Freq (line 75) | struct t_Bruit_Freq
  type REFLECTION_LAW (line 83) | enum REFLECTION_LAW
  type SOURCE_TYPE (line 96) | enum SOURCE_TYPE
  type DIFFUSION_LAW (line 108) | enum DIFFUSION_LAW
  type t_Material_BFreq (line 118) | struct t_Material_BFreq
  function t_Material (line 131) | struct t_Material
  function class (line 144) | class r_Surf_Face
  function class (line 169) | class r_Surf
  type decimal (line 255) | typedef decimal t_cell;
  type std (line 256) | typedef std::vector<t_cell> t_time_ar;
  type std (line 257) | typedef std::vector<t_time_ar> t_col_ar;
  type std (line 258) | typedef std::vector<t_col_ar> t_row_ar;
  type std (line 259) | typedef std::vector<t_row_ar> t_freq_ar;
  type r_SurfCut (line 263) | struct r_SurfCut
  type t_Encombrement_BFreq (line 323) | struct t_Encombrement_BFreq
  function t_Encombrement (line 333) | struct t_Encombrement
  type t_cFace (line 346) | struct t_cFace
  type t_Tetra_Faces (line 391) | struct t_Tetra_Faces
  function class (line 410) | class t_Recepteur_P
  function class (line 435) | class t_Tetra
  function class (line 476) | class t_TetraMesh
  function t_Source (line 500) | struct t_Source

FILE: src/lib_interface/coreinitialisation.cpp
  function entier_court (line 38) | entier_court GetTetraFaceWithNormal(t_Tetra* volumeTest,const vec3& face...
  function entier (line 48) | entier GetRecepteurSurfacique(entier xmlIdRs,std::vector<r_Surf*>& recep...
  function genprintVec (line 58) | void genprintVec(vec3 inf)
  function InitSourcesTetraLocalisation (line 71) | void InitSourcesTetraLocalisation(t_TetraMesh* tetraMesh,std::vector<t_S...
  function decimal (line 101) | decimal GetHeight( t_TetraMesh* tetraMesh, t_Tetra* currentTetra )
  function InitTetraCelerite (line 133) | void InitTetraCelerite(t_TetraMesh* tetraMesh,Base_Core_Configuration& c...
  function InitEncombrementTetraLocalisation (line 151) | void InitEncombrementTetraLocalisation(t_TetraMesh* tetraMesh,Base_Core_...
  function InitRecepteurPTetraLocalisation (line 178) | void InitRecepteurPTetraLocalisation(t_TetraMesh* tetraMesh,std::vector<...
  function InitCutMapTetraLocalisation (line 215) | void InitCutMapTetraLocalisation(t_TetraMesh* tetraMesh,std::vector<r_Su...
  function InitRecepteurSBfreq (line 243) | void InitRecepteurSBfreq(std::vector<r_Surf*>& recepteursSurfaciques,uen...
  function InitRecepteurSCut (line 253) | void InitRecepteurSCut(std::vector<r_SurfCut*>& recepteursSurfaciques,Ba...
  function InitRecepteurS (line 271) | void InitRecepteurS(t_TetraMesh* tetraModel,std::vector<r_Surf*>& recept...
  function InitRecepteurS (line 342) | void InitRecepteurS(t_Mesh* sceneMesh,std::vector<r_Surf*>& recepteursSu...
  function initMesh (line 387) | bool initMesh(t_Mesh &sceneMesh,CoreString workingDir,CoreString sceneMe...
  function initTetraMesh (line 450) | bool initTetraMesh(CoreString tetraMeshFilePath,t_Mesh &sceneMesh,int nb...
  function reportCompilation (line 473) | void reportCompilation(Base_Core_Configuration& configManager,CoreString...

FILE: src/lib_interface/data_manager/base_core_configuration.cpp
  function t_Material (line 374) | t_Material* Base_Core_Configuration::GetMaterialByOutsideIndex( uentier ...
  function t_Encombrement (line 384) | t_Encombrement* Base_Core_Configuration::GetEncombrementByOutsideIndex( ...

FILE: src/lib_interface/data_manager/base_core_configuration.h
  function class (line 46) | class Base_Core_Configuration

FILE: src/lib_interface/data_manager/data_calculation/Celerite_du_son.cpp
  type CalculsGenerauxThermodynamique (line 40) | namespace CalculsGenerauxThermodynamique

FILE: src/lib_interface/data_manager/data_calculation/Coef_Att_Atmos.cpp
  type CalculsGenerauxThermodynamique (line 45) | namespace CalculsGenerauxThermodynamique

FILE: src/lib_interface/data_manager/data_calculation/Masse_volumique_air.cpp
  type CalculsGenerauxThermodynamique (line 42) | namespace CalculsGenerauxThermodynamique

FILE: src/lib_interface/data_manager/data_calculation/calculsPropagation.h
  function namespace (line 39) | namespace CalculsGenerauxThermodynamique

FILE: src/lib_interface/input_output/baseReportManager.cpp
  function ExportTouteBande (line 35) | void ExportTouteBande(formatRSBIN::t_ExchangeData& mainData,std::vector<...
  function ExportSimpleBande (line 99) | void ExportSimpleBande(formatRSBIN::t_ExchangeData& mainData,std::vector...

FILE: src/lib_interface/input_output/baseReportManager.h
  type CoreString (line 43) | typedef CoreString stringClass;
  function class (line 50) | class BaseReportManager

FILE: src/lib_interface/input_output/bin.cpp
  type formatCoreBIN (line 36) | namespace formatCoreBIN
    type binaryNode (line 53) | struct binaryNode {
    type binaryVertices (line 62) | struct binaryVertices {
    type binaryVertex (line 69) | struct binaryVertex {
    type binaryGroup (line 78) | struct binaryGroup {
      method binaryGroup (line 79) | binaryGroup()
    type binaryFace (line 90) | struct binaryFace {
    type binaryHeader (line 102) | struct binaryHeader{

FILE: src/lib_interface/input_output/bin.h
  function namespace (line 41) | namespace formatCoreBIN
  function ioFace (line 69) | struct ioFace {
  type ioModel (line 91) | struct ioModel {
  function class (line 104) | class CformatBIN

FILE: src/lib_interface/input_output/cxml.cpp
  function NodeSortPredicate (line 6) | bool NodeSortPredicate(CXmlNode* lEl,CXmlNode* rEl)
  function xString (line 34) | xString CXmlNodeProperty::GetName() const
  function xString (line 39) | xString CXmlNodeProperty::GetValue() const
  function xString (line 108) | xString CXmlNode::GetProperty(xString name)  const
  function uentier (line 135) | uentier CXmlNode::CountChildrens()
  function xString (line 166) | xString CXmlNode::GetName() const
  function CXmlNode (line 171) | CXmlNode* CXmlNode::GetChild(xString name)
  function CXmlNode (line 208) | CXmlNode* CXml::GetRoot()

FILE: src/lib_interface/input_output/cxml.h
  type CoreString (line 41) | typedef CoreString xString;
  type t_PropData (line 51) | struct t_PropData
  function xString (line 79) | xString GetName() const;

FILE: src/lib_interface/input_output/directivity/directivityBalloon.cpp
  function vec3 (line 121) | vec3 t_DirectivityBalloon::sphericalToCartesian(double radius, double ph...

FILE: src/lib_interface/input_output/directivity/directivityBalloon.h
  function class (line 38) | class t_DirectivityBalloon

FILE: src/lib_interface/input_output/directivity/directivityParser.h
  function class (line 39) | class DirectivityParser
  function class (line 50) | class xhn_DirectivityParser : public DirectivityParser

FILE: src/lib_interface/input_output/exportRecepteurSurf/rsbin.cpp
  type formatRSBIN (line 34) | namespace formatRSBIN
    type t_FileHeader (line 39) | struct t_FileHeader

FILE: src/lib_interface/input_output/exportRecepteurSurf/rsbin.h
  function namespace (line 42) | namespace formatRSBIN
  type t_ExchangeData (line 147) | struct t_ExchangeData
  function class (line 163) | class RSBIN

FILE: src/lib_interface/input_output/exportRecepteurSurf/std_rsbin.cpp
  type formatRSBIN (line 7) | namespace formatRSBIN
    function vec3 (line 149) | vec3 rsurf_data::GetNodePositionValue(const std::size_t& nodeIndex)  c...
    function ivec3 (line 167) | ivec3 rsurf_data::GetFaceVertices(const std::size_t & rsIndex, const s...
    function t_ExchangeData (line 221) | t_ExchangeData* rsurf_data::GetStruct()
    type t_tri_data (line 245) | struct t_tri_data
      method t_tri_data (line 247) | t_tri_data()
      method t_tri_data (line 252) | t_tri_data(const vec3& A,const vec3& B,const vec3& C,const float& Al...
    type t_iso_contouring_data (line 267) | struct t_iso_contouring_data
      method t_iso_contouring_data (line 269) | t_iso_contouring_data() :maxValue(0),minValue(0) {}
    function GetLvl (line 355) | float GetLvl(const vec3& dot,const vec3& A,const vec3& B,const vec3& C...

FILE: src/lib_interface/input_output/exportRecepteurSurf/std_rsbin.hpp
  type formatRSBIN (line 39) | namespace formatRSBIN
    type t_ExchangeData (line 42) | struct t_ExchangeData
    class rsurf_io (line 44) | class rsurf_io
    type t_iso_contouring_data (line 45) | struct t_iso_contouring_data
    type t_curve (line 46) | struct t_curve
    class rsurf_data (line 57) | class rsurf_data
    class rsurf_io (line 224) | class rsurf_io
    class rsurf_iso_contouring (line 235) | class rsurf_iso_contouring

FILE: src/lib_interface/input_output/gabe/gabe.cpp
  type formatGABE (line 41) | namespace formatGABE
    type t_FileHeader (line 49) | struct t_FileHeader
      method t_FileHeader (line 51) | t_FileHeader():formatVersion(0),t_FileHeader_Length(0),t_ColHeader_L...
    type t_ColHeader (line 59) | struct t_ColHeader
      method t_ColHeader (line 66) | t_ColHeader()
    function GABE_Object (line 161) | GABE_Object* GABE_Data_Float::GetCopy() const
    function GABE_Object (line 190) | GABE_Object* GABE_Data_ShortString::GetCopy() const
    function GABE_Object (line 221) | GABE_Object* GABE_Data_Integer::GetCopy() const
    function GABE_Object (line 300) | GABE_Object* GABE::GetCol(Longb numCol)
    function GABE_Object (line 308) | const GABE_Object* GABE::GetConstCol(Longb numCol) const
    function Longb (line 341) | Longb GABE::GetCols() const
    function GABE_Object (line 349) | GABE_Object* GABE::operator[](int numCol)

FILE: src/lib_interface/input_output/gabe/gabe.h
  function namespace (line 45) | namespace formatGABE
  function virtual (line 155) | virtual ~GABE_Data(){delete[] tabData; }
  function virtual (line 157) | virtual void Set(Longb index,Td data){ assert(index>=0 && index<size);  ...
  function Td (line 158) | Td* GetFirstData () const{ return tabData; }
  function Td (line 162) | Td* operator[](ULongb _i) { return &tabData[_i]; }
  function Td (line 166) | const Td& GetValue(ULongb _i)
  function virtual (line 171) | virtual const char * GetStringEquiv(int numRow){ return (const char *)&t...
  function virtual (line 174) | virtual const char * GetLabel() const{ return GABE_Object::GetLabel();}
  function virtual (line 175) | virtual void SetLabel(const char * _label) { GABE_Object::SetLabel(_labe...
  function virtual (line 184) | virtual LongLongb GetHeaderLength(){ return sizeof(Ts); }
  function virtual (line 185) | virtual char * GetHeaderFirstChar(){ return (char*)&headerData; }
  type t_HeaderFloat (line 204) | struct t_HeaderFloat
  type t_StringShort (line 230) | struct t_StringShort
  function class (line 237) | class GABE_Data_ShortString: public GABE_Data<t_StringShort>
  function class (line 253) | class GABE_Data_Integer: public GABE_Data<Intb>
  function class (line 270) | class GABE

FILE: src/lib_interface/input_output/gabe/stdgabe.cpp
  type gabe_io (line 31) | namespace gabe_io
    function stringarray (line 124) | stringarray Gabe_rw::operator[](size_t indicecol)
    function string (line 137) | string Gabe_rw::GetColTitle(const size_t& indicecol)
    function typearray (line 146) | typearray Gabe_rw::GetTabTypes()

FILE: src/lib_interface/input_output/gabe/stdgabe.h
  function namespace (line 40) | namespace gabe_io

FILE: src/lib_interface/input_output/gpl_io.cpp
  type GPL_IO (line 35) | namespace GPL_IO

FILE: src/lib_interface/input_output/gpl_io.hpp
  type GPL_IO (line 40) | namespace GPL_IO
    class GPL_FileExchange (line 46) | class GPL_FileExchange
      type t_color (line 49) | struct t_color

FILE: src/lib_interface/input_output/importExportMaillage/m_report_bin.cpp
  type formatMRENDERBIN (line 35) | namespace formatMRENDERBIN

FILE: src/lib_interface/input_output/importExportMaillage/m_report_bin.h
  function namespace (line 38) | namespace formatMRENDERBIN

FILE: src/lib_interface/input_output/importExportMaillage/mbin.cpp
  type formatMBIN (line 36) | namespace formatMBIN
    type t_FileHeader (line 43) | struct t_FileHeader
    function trimeshmodel (line 48) | trimeshmodel CMBIN::LoadMesh(const char *strFileName)

FILE: src/lib_interface/input_output/importExportMaillage/mbin.h
  function namespace (line 43) | namespace formatMBIN
  type bintetraface (line 75) | struct bintetraface {
  type bintetrahedre (line 92) | struct bintetrahedre {
  type trimeshmodel (line 113) | struct trimeshmodel
  function class (line 123) | class CMBIN

FILE: src/lib_interface/input_output/part_binary.h
  type binaryFHeader (line 39) | struct binaryFHeader {
  type binaryPHeader (line 52) | struct binaryPHeader {
  type binaryPTimeStep (line 63) | struct binaryPTimeStep {

FILE: src/lib_interface/input_output/particles/part_binary.h
  type binaryFHeader (line 44) | struct binaryFHeader {
  type binaryPHeader (line 57) | struct binaryPHeader {
  type binaryPTimeStep (line 68) | struct binaryPTimeStep {

FILE: src/lib_interface/input_output/particles/part_io.cpp
  type particleio (line 35) | namespace particleio

FILE: src/lib_interface/input_output/particles/part_io.hpp
  type particleio (line 36) | namespace particleio
    class ParticuleIO (line 42) | class ParticuleIO
      type fileInfo_t (line 136) | struct fileInfo_t
      type currentPartInfo_t (line 146) | struct currentPartInfo_t

FILE: src/lib_interface/input_output/ply/rply.cpp
  type e_ply_io_mode_ (line 70) | enum e_ply_io_mode_ {
  type t_ply_argument_ (line 101) | struct t_ply_argument_ {
  type t_ply_property_ (line 121) | struct t_ply_property_ {
  type t_ply_element_ (line 139) | struct t_ply_element_ {
  type t_ply_idriver_ (line 155) | struct t_ply_idriver_ {
  type t_ply_odriver_ (line 164) | struct t_ply_odriver_ {
  type t_ply_ (line 196) | struct t_ply_ {
  function BREFILL (line 311) | static int BREFILL(p_ply ply) {
  function ply_read_header_magic (line 333) | static int ply_read_header_magic(p_ply ply) {
  function p_ply (line 358) | p_ply ply_open(const char *name, p_ply_error_cb error_cb,
  function p_ply (line 375) | p_ply ply_open_from_file(FILE *fp, p_ply_error_cb error_cb,
  function ply_read_header (line 398) | int ply_read_header(p_ply ply) {
  function ply_set_read_cb (line 427) | long ply_set_read_cb(p_ply ply, const char *element_name,
  function ply_read (line 443) | int ply_read(p_ply ply) {
  function p_ply (line 461) | p_ply ply_create(const char *name, e_ply_storage_mode storage_mode,
  function p_ply (line 478) | p_ply ply_create_to_file(FILE *fp, e_ply_storage_mode storage_mode,
  function ply_add_element (line 506) | int ply_add_element(p_ply ply, const char *name, long ninstances) {
  function ply_add_scalar_property (line 521) | int ply_add_scalar_property(p_ply ply, const char *name, e_ply_type type) {
  function ply_add_list_property (line 539) | int ply_add_list_property(p_ply ply, const char *name,
  function ply_add_property (line 565) | int ply_add_property(p_ply ply, const char *name, e_ply_type type,
  function ply_add_comment (line 573) | int ply_add_comment(p_ply ply, const char *comment) {
  function ply_add_obj_info (line 587) | int ply_add_obj_info(p_ply ply, const char *obj_info) {
  function ply_write_header (line 601) | int ply_write_header(p_ply ply) {
  function ply_write (line 640) | int ply_write(p_ply ply, double value) {
  function ply_close (line 692) | int ply_close(p_ply ply) {
  function p_ply_element (line 721) | p_ply_element ply_get_next_element(p_ply ply,
  function ply_get_element_info (line 730) | int ply_get_element_info(p_ply_element element, const char** name,
  function p_ply_property (line 738) | p_ply_property ply_get_next_property(p_ply_element element,
  function ply_get_property_info (line 747) | int ply_get_property_info(p_ply_property property, const char** name,
  function ply_get_argument_element (line 777) | int ply_get_argument_element(p_ply_argument argument,
  function ply_get_argument_property (line 786) | int ply_get_argument_property(p_ply_argument argument,
  function ply_get_argument_user_data (line 796) | int ply_get_argument_user_data(p_ply_argument argument, void **pdata,
  function ply_get_argument_value (line 805) | double ply_get_argument_value(p_ply_argument argument) {
  function ply_get_ply_user_data (line 811) | int ply_get_ply_user_data(p_ply ply, void **pdata, long *idata) {
  function ply_read_list_property (line 822) | static int ply_read_list_property(p_ply ply, p_ply_element element,
  function ply_read_scalar_property (line 864) | static int ply_read_scalar_property(p_ply ply, p_ply_element element,
  function ply_read_property (line 883) | static int ply_read_property(p_ply ply, p_ply_element element,
  function ply_read_element (line 891) | static int ply_read_element(p_ply ply, p_ply_element element,
  function ply_find_string (line 910) | static int ply_find_string(const char *item, const char* const list[]) {
  function p_ply_element (line 918) | static p_ply_element ply_find_element(p_ply ply, const char *name) {
  function p_ply_property (line 931) | static p_ply_property ply_find_property(p_ply_element element,
  function ply_check_word (line 945) | static int ply_check_word(p_ply ply) {
  function ply_read_word (line 957) | static int ply_read_word(p_ply ply) {
  function ply_finish_word (line 999) | static void ply_finish_word(p_ply ply, size_t size) {
  function ply_check_line (line 1006) | static int ply_check_line(p_ply ply) {
  function ply_read_line (line 1014) | static int ply_read_line(p_ply ply) {
  function ply_read_chunk (line 1049) | static int ply_read_chunk(p_ply ply, void *anybuffer, size_t size) {
  function ply_write_chunk (line 1068) | static int ply_write_chunk(p_ply ply, void *anybuffer, size_t size) {
  function ply_write_chunk_reverse (line 1087) | static int ply_write_chunk_reverse(p_ply ply, void *anybuffer, size_t si...
  function ply_read_chunk_reverse (line 1095) | static int ply_read_chunk_reverse(p_ply ply, void *anybuffer, size_t siz...
  function ply_reverse (line 1101) | static void ply_reverse(void *anydata, size_t size) {
  function ply_init (line 1112) | static void ply_init(p_ply ply) {
  function ply_element_init (line 1130) | static void ply_element_init(p_ply_element element) {
  function ply_property_init (line 1137) | static void ply_property_init(p_ply_property property) {
  function p_ply (line 1147) | static p_ply ply_alloc(void) {
  function p_ply_element (line 1169) | static p_ply_element ply_grow_element(p_ply ply) {
  function p_ply_property (line 1181) | static p_ply_property ply_grow_property(p_ply ply, p_ply_element element) {
  function ply_read_header_format (line 1195) | static int ply_read_header_format(p_ply ply) {
  function ply_read_header_comment (line 1211) | static int ply_read_header_comment(p_ply ply) {
  function ply_read_header_obj_info (line 1220) | static int ply_read_header_obj_info(p_ply ply) {
  function ply_read_header_property (line 1229) | static int ply_read_header_property(p_ply ply) {
  function ply_read_header_element (line 1257) | static int ply_read_header_element(p_ply ply) {
  function ply_error_cb (line 1283) | static void ply_error_cb(p_ply ply, const char *message) {
  function ply_ferror (line 1288) | static void ply_ferror(p_ply ply, const char *fmt, ...) {
  function e_ply_storage_mode (line 1297) | static e_ply_storage_mode ply_arch_endian(void) {
  function ply_type_check (line 1304) | static int ply_type_check(void) {
  function oascii_int8 (line 1327) | static int oascii_int8(p_ply ply, double value) {
  function oascii_uint8 (line 1332) | static int oascii_uint8(p_ply ply, double value) {
  function oascii_int16 (line 1337) | static int oascii_int16(p_ply ply, double value) {
  function oascii_uint16 (line 1342) | static int oascii_uint16(p_ply ply, double value) {
  function oascii_int32 (line 1347) | static int oascii_int32(p_ply ply, double value) {
  function oascii_uint32 (line 1352) | static int oascii_uint32(p_ply ply, double value) {
  function oascii_float32 (line 1357) | static int oascii_float32(p_ply ply, double value) {
  function oascii_float64 (line 1367) | static int oascii_float64(p_ply ply, double value) {
  function obinary_int8 (line 1376) | static int obinary_int8(p_ply ply, double value) {
  function obinary_uint8 (line 1382) | static int obinary_uint8(p_ply ply, double value) {
  function obinary_int16 (line 1388) | static int obinary_int16(p_ply ply, double value) {
  function obinary_uint16 (line 1394) | static int obinary_uint16(p_ply ply, double value) {
  function obinary_int32 (line 1400) | static int obinary_int32(p_ply ply, double value) {
  function obinary_uint32 (line 1406) | static int obinary_uint32(p_ply ply, double value) {
  function obinary_float32 (line 1412) | static int obinary_float32(p_ply ply, double value) {
  function obinary_float64 (line 1418) | static int obinary_float64(p_ply ply, double value) {
  function iascii_int8 (line 1425) | static int iascii_int8(p_ply ply, double *value) {
  function iascii_uint8 (line 1433) | static int iascii_uint8(p_ply ply, double *value) {
  function iascii_int16 (line 1441) | static int iascii_int16(p_ply ply, double *value) {
  function iascii_uint16 (line 1449) | static int iascii_uint16(p_ply ply, double *value) {
  function iascii_int32 (line 1457) | static int iascii_int32(p_ply ply, double *value) {
  function iascii_uint32 (line 1465) | static int iascii_uint32(p_ply ply, double *value) {
  function iascii_float32 (line 1473) | static int iascii_float32(p_ply ply, double *value) {
  function iascii_float64 (line 1481) | static int iascii_float64(p_ply ply, double *value) {
  function ibinary_int8 (line 1489) | static int ibinary_int8(p_ply ply, double *value) {
  function ibinary_uint8 (line 1496) | static int ibinary_uint8(p_ply ply, double *value) {
  function ibinary_int16 (line 1503) | static int ibinary_int16(p_ply ply, double *valu
Copy disabled (too large) Download .json
Condensed preview — 2284 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (32,003K chars).
[
  {
    "path": ".gitattributes",
    "chars": 122,
    "preview": "# SCM syntax highlighting & preventing 3-way merges\npixi.lock merge=binary linguist-language=YAML linguist-generated=tru"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 718,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/custom.md",
    "chars": 126,
    "preview": "---\nname: Custom issue template\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 741,
    "preview": "Description of the pull request:\n\n\nIf applicable a reference to a related issue:\n\n\nFor external contributors, this pull "
  },
  {
    "path": ".github/workflows/CI_main.yml",
    "chars": 2718,
    "preview": "# SPDX-License-Identifier: LGPL-2.1-or-later\n# *************************************************************************"
  },
  {
    "path": ".github/workflows/actions/windows/getCcache/action.yml",
    "chars": 3861,
    "preview": "# SPDX-License-Identifier: LGPL-2.1-or-later\n# *************************************************************************"
  },
  {
    "path": ".github/workflows/flatpak.yml",
    "chars": 767,
    "preview": "on:\n  push:\n    branches: [main]\n  pull_request:\n  workflow_dispatch:\nname: CI\njobs:\n  flatpak:\n    name: \"Flatpak\"\n    "
  },
  {
    "path": ".github/workflows/sub_buildLinux.yml",
    "chars": 2722,
    "preview": "name: Build linux\n\non:\n  workflow_call:\n    inputs:\n      artifactBasename:\n        type: string\n        required: true\n"
  },
  {
    "path": ".github/workflows/sub_buildMacOS.yml",
    "chars": 1962,
    "preview": "name: Build MacOS\n\non:\n  workflow_call:\n    inputs:\n      artifactBasename:\n        type: string\n        required: true\n"
  },
  {
    "path": ".github/workflows/sub_buildWindows.yml",
    "chars": 5822,
    "preview": "# ***************************************************************************\n# *   Copyright (c) 2023 0penBrain        "
  },
  {
    "path": ".github/workflows/sub_prepare.yml",
    "chars": 8497,
    "preview": "# SPDX-License-Identifier: LGPL-2.1-or-later\n# *************************************************************************"
  },
  {
    "path": ".github/workflows/sub_wrapup.yml",
    "chars": 5011,
    "preview": "# SPDX-License-Identifier: LGPL-2.1-or-later\n# *************************************************************************"
  },
  {
    "path": ".gitignore",
    "chars": 649,
    "preview": "*.mo\n*.pyd\n*.pyo\n*.bak\n*.7z\n*.hgignore\n*.user\n*.orig\n*.htm\nDebug\nDebug Unix\ncurrentRelease/libisimpa/\ncurrentRelease/doc"
  },
  {
    "path": ".readthedocs.yml",
    "chars": 451,
    "preview": "# .readthedocs.yml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html fo"
  },
  {
    "path": ".tx/config",
    "chars": 1923,
    "preview": "[main]\nhost = https://app.transifex.com\n\n[o:LAE:p:i-simpa:r:i-simpa-en]\nfile_filter            = src/isimpa/lang/<lang>."
  },
  {
    "path": "CHANGELOG.md",
    "chars": 998,
    "preview": "# I-SIMPA 1.3.4 release version - 23 Dec 2020\nChangelog from last officiel release 1.2.3\nChanges in 4,451 files and 807 "
  },
  {
    "path": "CMakeLists.txt",
    "chars": 4223,
    "preview": "# begin basic metadata\n# minimum CMake version required for C++20 support, among other things\ncmake_minimum_required(VER"
  },
  {
    "path": "DESCRIPTION.txt",
    "chars": 1599,
    "preview": "I-Simpa is a graphical user interface (GUI) developed to host three-dimensional numerical codes for the modeling of soun"
  },
  {
    "path": "Docs/Building.md",
    "chars": 5168,
    "preview": "## Building I-Simpa\n\n#### Minimal Hardware requirements\n\n* Processor 1.5 GHz Intel Pentium® or equivalent / higher\n* Gra"
  },
  {
    "path": "Docs/I_Simpa_overview.rst",
    "chars": 6896,
    "preview": "I-Simpa overview\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nI-Simpa alone is **not a calculation software**, but is equivalen"
  },
  {
    "path": "Docs/I_Simpa_standard.rst",
    "chars": 4104,
    "preview": "Standards\n====================\n\nAcoustics\n----------\n\n.. glossary::\n\n   ISO 9613-1\n      ISO 9613-1:1993, Acoustics -- A"
  },
  {
    "path": "Docs/License.txt",
    "chars": 1452,
    "preview": "/* ----------------------------------------------------------------------\n* I-SIMPA (https://i-simpa.univ-gustave-eiffel"
  },
  {
    "path": "Docs/_Footer.md",
    "chars": 395,
    "preview": "| [I-Simpa website](https://i-simpa.univ-gustave-eiffel.fr/) | [Build I-Simpa](https://github.com/Ifsttar/I-Simpa/blob/m"
  },
  {
    "path": "Docs/_Sidebar.md",
    "chars": 1635,
    "preview": "[**Home**](https://github.com/Ifsttar/I-Simpa/wiki)\n\n**Setup**\n* [Install I-Simpa](Installation)\n* [Update I-Simpa](Upda"
  },
  {
    "path": "Docs/bibliography.bib",
    "chars": 7822,
    "preview": "@article{Schroeder_1965,\nauthor = {Schroeder,M. R. },\ntitle = {New Method of Measuring Reverberation Time},\njournal = {T"
  },
  {
    "path": "Docs/code_SPPS.rst",
    "chars": 2284,
    "preview": "Presentation\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n**SPPS is a sound particles-tracing code, based on geometrical, energetical and"
  },
  {
    "path": "Docs/code_SPPS_Validation.rst",
    "chars": 616,
    "preview": "Verification of the SPPS code\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nHere were proposed some validations an"
  },
  {
    "path": "Docs/code_SPPS_modelling.rst",
    "chars": 67132,
    "preview": "Modelling of physical phenomena in SPPS\n===================================================\n\nSound source modelling\n----"
  },
  {
    "path": "Docs/code_SPPS_principle.rst",
    "chars": 9777,
    "preview": "General principle\n========================\n\nSound particle concept\n------------------------------\n\nIn contrast to classi"
  },
  {
    "path": "Docs/code_TCR.rst",
    "chars": 940,
    "preview": "Presentation\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n**TCR is a numerical code based on the Classical Theory or Reverberation.**\n\n- "
  },
  {
    "path": "Docs/code_characteristics.rst",
    "chars": 2939,
    "preview": "Calculation code characteristics\n------------------------------------\n\n.. list-table:: Physical phenomena\n   :widths: 70"
  },
  {
    "path": "Docs/code_configuration_SPPS.rst",
    "chars": 15051,
    "preview": "Using SPPS within I-Simpa\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSPPS is already embedded in I-Simpa. Follow the next instructions "
  },
  {
    "path": "Docs/code_configuration_TCR.rst",
    "chars": 923,
    "preview": "Using TCR within I-Simpa\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTCR is already embedded in I-Simpa. Follow the next instructions to"
  },
  {
    "path": "Docs/code_configuration_frequency_bands.rst",
    "chars": 856,
    "preview": "Frequency bands\n^^^^^^^^^^^^^^^^^^\n\nThis allows to define the frequency band that will be used for the calculation. This"
  },
  {
    "path": "Docs/code_configuration_job.rst",
    "chars": 637,
    "preview": "Job list\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nInstead of running the calculation, manually one after the other, you can create a "
  },
  {
    "path": "Docs/code_configuration_meshing.rst",
    "chars": 1672,
    "preview": "Meshing\n^^^^^^^^^^^^^^^^^^\n\nSome calculation codes may require a meshing of the domain (SPPS for example). I-Simpa used "
  },
  {
    "path": "Docs/code_configuration_run.rst",
    "chars": 102,
    "preview": "Run calculation\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nStarts the calculation with the selected calculation code."
  },
  {
    "path": "Docs/conf.py",
    "chars": 11353,
    "preview": "# -*- coding: utf-8 -*-\n#\n# I-Simpa documentation build configuration file, created by\n# sphinx-quickstart on Mon Aug 22"
  },
  {
    "path": "Docs/console_window.rst",
    "chars": 1156,
    "preview": "'Console' window\n================================\n\nThe 'Console' window contains two tabs:\n\n- the 'Message' tab displays"
  },
  {
    "path": "Docs/create_charts.rst",
    "chars": 1426,
    "preview": "Creating charts\n++++++++++++++++\n\nMost values represented as tables in a 'Properties' window can be displayed in a chart"
  },
  {
    "path": "Docs/define_position.rst",
    "chars": 788,
    "preview": "Define a position using the pointer on the 3D view\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nMan"
  },
  {
    "path": "Docs/element_properties_sound_level_results.rst",
    "chars": 1231,
    "preview": "Define the properties of a sound map\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nTo modifiy the re"
  },
  {
    "path": "Docs/errors_messages.rst",
    "chars": 820,
    "preview": "I-Simpa errors and messages\n================================\n\n'Tetrahedron file is empty, the calculation can't be done "
  },
  {
    "path": "Docs/file_csbin.rst",
    "chars": 81,
    "preview": "Surface receiver file file `.csbin`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
  },
  {
    "path": "Docs/file_gabe.rst",
    "chars": 72,
    "preview": "Tabulated data file `.gabe`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  },
  {
    "path": "Docs/file_gap.rst",
    "chars": 75,
    "preview": "Punctual receiver file `.gap`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
  },
  {
    "path": "Docs/file_pbin.rst",
    "chars": 71,
    "preview": "Animated data file `.pbin`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  },
  {
    "path": "Docs/file_recp.rst",
    "chars": 658,
    "preview": "Punctual Receiver data file `.recp`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\t\tThis file contains the temporal evol"
  },
  {
    "path": "Docs/file_recps.rst",
    "chars": 77,
    "preview": "Sound level per source `.recps`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
  },
  {
    "path": "Docs/file_rpi.rst",
    "chars": 75,
    "preview": "Animated intensity file `.rpi`\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  },
  {
    "path": "Docs/freecad_create_room.rst",
    "chars": 558,
    "preview": "Create a room with FreeCAD\n-------------------------------------\n\nFreeCAD is a free and open source parametric 3D CAD so"
  },
  {
    "path": "Docs/glossary.rst",
    "chars": 1158,
    "preview": "Glossary\n========\n\n.. glossary::\n\n\tabsorption coefficient\n\t\tAbsorption coefficient of an object or a material. The value"
  },
  {
    "path": "Docs/import_file_recommandations.rst",
    "chars": 3181,
    "preview": "Recommendations to import a 3D scene\n-------------------------------------\n\nI-Simpa is very sensitive to the quality of "
  },
  {
    "path": "Docs/import_options.rst",
    "chars": 4413,
    "preview": "Import options\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n'Average model remesh'\n----------------------\n\nAllow to build an approximate model "
  },
  {
    "path": "Docs/index.rst",
    "chars": 3881,
    "preview": ".. I-Simpa documentation master file, created by\n   sphinx-quickstart on Mon Aug 22 13:43:57 2016.\n   You can adapt this"
  },
  {
    "path": "Docs/main_windows.rst",
    "chars": 601,
    "preview": "'Main' window\n==============\n\nThe '3D View' window contains the 3D model of the scene. Depending on the Pointer mode, se"
  },
  {
    "path": "Docs/manipulate_sources_receivers.rst",
    "chars": 2211,
    "preview": "Manipulating sources and receivers\n-------------------------------------\n\nRotate a group of sources/receivers\n~~~~~~~~~~"
  },
  {
    "path": "Docs/menu_edition.rst",
    "chars": 446,
    "preview": ".. warning::\n\tThe 'Undo' and 'Redo' options acts only on action realized in the three 'Project'. By activating the 'Und"
  },
  {
    "path": "Docs/menu_file.rst",
    "chars": 5318,
    "preview": "\n'New project'\n\tCreate a new project (empty project)\n\n'Open project'\n\tOpen an existing project with the I-Simpa file fo"
  },
  {
    "path": "Docs/menu_help.rst",
    "chars": 312,
    "preview": "‘Website’\n\tLink to the I-Simpa website: `i-simpa.ifsttar.fr`_.\n\n‘Online documentation’\n\tLink to the online documentatio"
  },
  {
    "path": "Docs/menu_simulation.rst",
    "chars": 685,
    "preview": "‘Play’\n\tPlay an animation within I-Simpa (see also Toolbar ‘Animation’). This is functional only if compatible data hav"
  },
  {
    "path": "Docs/menu_view.rst",
    "chars": 2551,
    "preview": "This menu proposes several display modes for the 3D view of the geometry.\n\n‘Face’\n~~~~~~\n\n‘Oustide’\n\tShow faces oriente"
  },
  {
    "path": "Docs/menu_windows.rst",
    "chars": 631,
    "preview": "‘Reinitialize interface’\n\tRestore the default configuration of the interface.\n\n‘3D View’\n~~~~~~~~~\n\nDefine the location"
  },
  {
    "path": "Docs/menus.rst",
    "chars": 360,
    "preview": "Menus\n^^^^^\n\nMenu 'File'\n\"\"\"\"\"\"\"\"\"\"\"\n.. include:: menu_file.rst\n\nMenu 'Edition'\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n.. include:: menu_editio"
  },
  {
    "path": "Docs/presentation.rst",
    "chars": 1405,
    "preview": "GUI Presentation\n================\n\nThe graphic user interface (GUI) is composed by the following components:\n\t-  a menu"
  },
  {
    "path": "Docs/project_database.rst",
    "chars": 7092,
    "preview": "Project database\n================\n\nThe Projet database is an element of the 'Projet' tree. This database is composed of "
  },
  {
    "path": "Docs/project_window.rst",
    "chars": 3377,
    "preview": "'Project' window\n================\n\nPresentation\n------------\n\nPrinciple\n~~~~~~~~~~~\n\nThe **'Project'** window allows to"
  },
  {
    "path": "Docs/properties_window.rst",
    "chars": 342,
    "preview": "'Properties' window\n================================\n\nThis windows display the properties of a given  element.\n\nIn order"
  },
  {
    "path": "Docs/references.rst",
    "chars": 77,
    "preview": "References\n====================\n\n.. bibliography:: bibliography.bib\n   :all:\n"
  },
  {
    "path": "Docs/requirements.txt",
    "chars": 28,
    "preview": "sphinxcontrib-bibtex==1.0.0\n"
  },
  {
    "path": "Docs/room_acoustics_parameters.rst",
    "chars": 10196,
    "preview": "Room acoustics parameters\n=========================\n\nThe acoustic quality of an environment, particularly in room acoust"
  },
  {
    "path": "Docs/setup.rst",
    "chars": 1213,
    "preview": "(Un)Setup\n=========\n\nInstallation\n^^^^^^^^^^^^\n\n-  **Download I-Simpa** from the web site https://i-simpa.univ-gustave-e"
  },
  {
    "path": "Docs/surface_selection.rst",
    "chars": 830,
    "preview": "Surface selection\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nTo select one or more face elements on the 3D scene, select the poin"
  },
  {
    "path": "Docs/tab_calculation.rst",
    "chars": 977,
    "preview": "'Calculation' tab\n-----------------\n\nThis tab allows to choose and to define the acoustic calculation. This tab contains"
  },
  {
    "path": "Docs/tab_results.rst",
    "chars": 2373,
    "preview": "'Results' tab\n-------------\n\nThe 'Results' tab contains all results produced by the calculation codes. When a project is"
  },
  {
    "path": "Docs/tab_scene.rst",
    "chars": 19704,
    "preview": "'Scene' tab\n-----------\n\nIn the 'Data' tree of the 'Project' window, user defines all needed information, in a acoustic"
  },
  {
    "path": "Docs/toolbar_meshing.rst",
    "chars": 493,
    "preview": "- |meshing_generate|\tGenerate and display the meshing (open a Dialog box for selecting the meshing parameters from a ca"
  },
  {
    "path": "Docs/toolbar_project.rst",
    "chars": 464,
    "preview": "- |i_create_project| Create new project;\n- |i_new_project| Open new project;\n- |i_save_project| Save the project with t"
  },
  {
    "path": "Docs/toolbar_selection.rst",
    "chars": 814,
    "preview": "-  |3D_mode_camera|\tMode ‘Camera’: see `menu ‘View’`_;\n-  |3D_mode_faceselect|\tMode ‘Face selection’: enable the face s"
  },
  {
    "path": "Docs/toolbar_simulation.rst",
    "chars": 785,
    "preview": "- |simulation_reward|\tReward to the last time step;\n- |simulation_play|\tPlay from the current time step;\n- |simulation_"
  },
  {
    "path": "Docs/toolbar_view_camera.rst",
    "chars": 708,
    "preview": "- 3D display:\n\t- |3D_view_faces|\t3D with faces (interior);\n\t- |3D_view_lines|\t3D without faces, all lines;\n\t- |3D_view_"
  },
  {
    "path": "Docs/toolbars.rst",
    "chars": 396,
    "preview": "Toolbars\n^^^^^^^^\n\nToolbar 'Project'\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n.. include:: toolbar_project.rst\n\nToolbar 'View/Camera'\n\"\"\"\"\"\"\"\""
  },
  {
    "path": "Docs/tutorial_Elmia_hall.rst",
    "chars": 11050,
    "preview": "Study of the Elmia hall\n------------------------\n\n.. image:: images/Tutorial/Screenshot_4_tutorial_2.PNG\n\t:align: right\n"
  },
  {
    "path": "Docs/tutorial_industrial_hall.rst",
    "chars": 18641,
    "preview": "Study of an industrial room\n----------------------------\n\nIn this example, we are interested in the case of an industria"
  },
  {
    "path": "Docs/tutorial_teaching_room.rst",
    "chars": 10553,
    "preview": "Study of a teaching room\n------------------------\n\n.. image:: images/Tutorial/Screenshot_tutorial_1.PNG\n\t:align: right\n\t"
  },
  {
    "path": "Docs/using_directivity.rst",
    "chars": 103,
    "preview": "Using directivity\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\nThis feature is experimental and is not documented."
  },
  {
    "path": "Docs/using_spectrum.rst",
    "chars": 4794,
    "preview": "Define and use spectrum\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n .. important::\n\tIt is extremely important that users experime"
  },
  {
    "path": "Docs/validations/validation_atmospheric_absorption.rst",
    "chars": 2618,
    "preview": ".. warning:: Paid attention to the limitations of this validation. `Goto this page`_\n\n.. _`Goto this page`: validation_n"
  },
  {
    "path": "Docs/validations/validation_clarity_calculation.rst",
    "chars": 4502,
    "preview": ".. warning:: Paid attention to the limitations of this validation. `Goto this page`_\n\n.. _`Goto this page`: validation_n"
  },
  {
    "path": "Docs/validations/validation_notice.rst",
    "chars": 1339,
    "preview": ".. warning::\n\n  The following results present comparisons between numerical simulations carried out with I-Simpa and 're"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/MathJax.js",
    "chars": 127212,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_CHTML-full.js",
    "chars": 751,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_CHTML-full.js\n *  \n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_CHTML.js",
    "chars": 741,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_CHTML.js\n *  \n *  Copy"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_HTMLorMML-full.js",
    "chars": 804,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_HTMLorMML-full.js\n *  "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_HTMLorMML.js",
    "chars": 794,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_HTMLorMML.js\n *  \n *  "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_SVG-full.js",
    "chars": 740,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_SVG-full.js\n *  \n *  C"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/AM_SVG.js",
    "chars": 730,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/AM_SVG.js\n *  \n *  Copyri"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/Accessible-full.js",
    "chars": 1054,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/Accessible-full.js\n *  \n "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/Accessible.js",
    "chars": 1044,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/Accessible.js\n *  \n *  Co"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_CHTML-full.js",
    "chars": 744,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_CHTML-full.js\n *  \n *"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_CHTML.js",
    "chars": 734,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_CHTML.js\n *  \n *  Cop"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_HTMLorMML-full.js",
    "chars": 797,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_HTMLorMML-full.js\n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_HTMLorMML.js",
    "chars": 787,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_HTMLorMML.js\n *  \n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_SVG-full.js",
    "chars": 733,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_SVG-full.js\n *  \n *  "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MML_SVG.js",
    "chars": 723,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/MML_SVG.js\n *  \n *  Copyr"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/MMLorHTML.js",
    "chars": 3761,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/Safe.js",
    "chars": 1383,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS-MML_HTMLorMML-full.js",
    "chars": 914,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS-MML_HTMLorMML-ful"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS-MML_HTMLorMML.js",
    "chars": 904,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS-MML_HTMLorMML.js\n"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS-MML_SVG-full.js",
    "chars": 850,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS-MML_SVG-full.js\n "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS-MML_SVG.js",
    "chars": 840,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS-MML_SVG.js\n *  \n "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_CHTML-full.js",
    "chars": 825,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_CHTML-full.js\n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_CHTML.js",
    "chars": 815,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_CHTML.js\n *  \n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_HTML-full.js",
    "chars": 821,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_HTML-full.js\n *  "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_HTML.js",
    "chars": 811,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_HTML.js\n *  \n *  "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_SVG-full.js",
    "chars": 814,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_SVG-full.js\n *  \n"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-AMS_SVG.js",
    "chars": 804,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-AMS_SVG.js\n *  \n *  C"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_CHTML-full.js",
    "chars": 896,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_CHTML-full.js\n"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_CHTML.js",
    "chars": 886,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_CHTML.js\n *  \n"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_HTMLorMML-full.js",
    "chars": 949,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_HTMLorMML-full"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_HTMLorMML.js",
    "chars": 939,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_HTMLorMML.js\n "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_SVG-full.js",
    "chars": 885,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_SVG-full.js\n *"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/TeX-MML-AM_SVG.js",
    "chars": 875,
    "preview": "/*************************************************************\n *\n *  /MathJax/unpacked/config/TeX-MML-AM_SVG.js\n *  \n *"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/default.js",
    "chars": 42923,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/config/local/local.js",
    "chars": 1491,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/AssistiveMML.js",
    "chars": 6014,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/CHTML-preview.js",
    "chars": 1157,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/FontWarnings.js",
    "chars": 12611,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/HTML-CSS/handle-floats.js",
    "chars": 1699,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/HelpDialog.js",
    "chars": 8409,
    "preview": "/*************************************************************\n *\n *  MathJax/extensions/HelpDialog.js\n *  \n *  Implemen"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MatchWebFonts.js",
    "chars": 11991,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MathEvents.js",
    "chars": 22300,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MathML/content-mathml.js",
    "chars": 64283,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MathML/mml3.js",
    "chars": 33276,
    "preview": "/*************************************************************\n *\n *  MathJax/extensions/MathML/mml3.js\n *\n *  This file"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MathMenu.js",
    "chars": 63614,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/MathZoom.js",
    "chars": 14860,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/Safe.js",
    "chars": 12829,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/AMScd.js",
    "chars": 5346,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/AMSmath.js",
    "chars": 24431,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/AMSsymbols.js",
    "chars": 13177,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/HTML.js",
    "chars": 2985,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/action.js",
    "chars": 2747,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/autobold.js",
    "chars": 1795,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/autoload-all.js",
    "chars": 3118,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/bbox.js",
    "chars": 4071,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/begingroup.js",
    "chars": 9462,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/boldsymbol.js",
    "chars": 2609,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/cancel.js",
    "chars": 3648,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/color.js",
    "chars": 8725,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/enclose.js",
    "chars": 3048,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/extpfeil.js",
    "chars": 3333,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/mathchoice.js",
    "chars": 4162,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/mediawiki-texvc.js",
    "chars": 5180,
    "preview": "/*************************************************************\n *\n *  MathJax/extensions/TeX/mediawiki-texvc.js\n *  \n * "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/mhchem.js",
    "chars": 16083,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/mhchem3/mhchem.js",
    "chars": 69557,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/newcommand.js",
    "chars": 9582,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/noErrors.js",
    "chars": 13483,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/noUndefined.js",
    "chars": 2436,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/unicode.js",
    "chars": 6587,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/TeX/verb.js",
    "chars": 2068,
    "preview": "/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/**********"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/accessibility-menu.js",
    "chars": 2841,
    "preview": "!function(a,b){var c,d,e=a.config.menuSettings,f=Function.prototype.bind?function(a,b){return a.bind(b)}:function(a,b){r"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/auto-collapse.js",
    "chars": 8030,
    "preview": "!function(a){var b=a.config.menuSettings,c={},d=MathJax.Ajax.config.path;d.a11y||(d.a11y=a.config.root+\"/extensions/a11y"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/collapsible.js",
    "chars": 10382,
    "preview": "!function(a){var b,c=a.config.menuSettings,d={},e=\"data-semantic-complexity\",f=MathJax.Ajax.config.path;f.a11y||(f.a11y="
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/explorer.js",
    "chars": 14016,
    "preview": "MathJax.Hub.Register.StartupHook(\"Sre Ready\",function(){var a,b,c=MathJax.Hub.config.menuSettings,d={};MathJax.Hub.Regis"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathjax-sre.js",
    "chars": 485762,
    "preview": "// Copyright 2014-2018 Volker Sorge\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/functions/algebra.js",
    "chars": 638,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Algebra\",\"mappings\":{\"default\":{\"default\":\"degree\"}},\"key\":\"deg\",\"names\":[\"deg\"]},{\"catego"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/functions/elementary.js",
    "chars": 2774,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Elementary\",\"mappings\":{\"default\":{\"default\":\"logarithm\",\"alternative\":\"logarithm function"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/functions/hyperbolic.js",
    "chars": 2228,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Hyperbolic\",\"mappings\":{\"default\":{\"default\":\"hyperbolic cosine function\",\"short\":\"hyperbo"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/functions/trigonometry.js",
    "chars": 1920,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Trigonometric\",\"mappings\":{\"default\":{\"default\":\"cosine function\",\"short\":\"cosine\"}},\"key\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-capital.js",
    "chars": 3671,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0391\",\"mappings\":{\"default\":{\"default\":\"greek capital letter alpha\",\"short\":\"ca"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-bold.js",
    "chars": 8610,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"mathematical bold capital alpha\",\"alternative\":\"bold"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-italic.js",
    "chars": 8952,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"mathematical italic capital alpha\",\"alternative\":\"it"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-mathfonts-sans-serif-bold.js",
    "chars": 10491,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"mathematical sans serif bold capital alpha\",\"alterna"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-scripts.js",
    "chars": 2133,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"1D26\",\"mappings\":{\"default\":{\"default\":\"greek letter small capital gamma\",\"alte"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-small.js",
    "chars": 2755,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"03B1\",\"mappings\":{\"default\":{\"default\":\"greek small letter alpha\",\"short\":\"alph"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/greek-symbols.js",
    "chars": 6344,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"greek beta symbol\",\"alternative\":\"greek small letter"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/hebrew_letters.js",
    "chars": 574,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lo\",\"mappings\":{\"default\":{\"default\":\"alef symbol\",\"alternative\":\"first transfinite cardin"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-lower-double-accent.js",
    "chars": 10968,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"01D6\",\"mappings\":{\"default\":{\"default\":\"latin small letter u with diaeresis and"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-lower-normal.js",
    "chars": 5530,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"0061\",\"mappings\":{\"default\":{\"default\":\"latin small letter a\",\"short\":\"a\"}}},{\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-lower-phonetic.js",
    "chars": 31239,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00F8\",\"mappings\":{\"default\":{\"default\":\"latin small letter o with stroke\",\"alte"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-lower-single-accent.js",
    "chars": 54823,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"key\":\"00E0\",\"mappings\":{\"default\":{\"default\":\"latin small letter a with grave\",\"alter"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold-fraktur.js",
    "chars": 7376,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold fraktur capital a\",\"short\":\"bold fraktur cap a\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold-script.js",
    "chars": 7246,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold script capital a\",\"short\":\"bold script cap a\"},"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-bold.js",
    "chars": 6336,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"bold capital a\",\"short\":\"bold cap a\"},\"mathspeak\":{\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-double-struck.js",
    "chars": 7499,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"double struck capital a\",\"short\":\"double struck cap "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-fraktur.js",
    "chars": 6721,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"fraktur capital a\",\"short\":\"fraktur cap a\"},\"mathspe"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-italic.js",
    "chars": 6635,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"italic capital a\",\"short\":\"italic cap a\"},\"mathspeak"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-monospace.js",
    "chars": 6986,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"monospace capital a\",\"short\":\"monospace cap a\"},\"mat"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif-bold.js",
    "chars": 7766,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"sans serif bold capital a\",\"short\":\"sans serif bold "
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif-italic.js",
    "chars": 8026,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"sans serif italic capital a\",\"short\":\"sans serif ita"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-sans-serif.js",
    "chars": 7116,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"sans serif capital a\",\"short\":\"sans serif cap a\"},\"m"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-mathfonts-script.js",
    "chars": 6585,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"mappings\":{\"default\":{\"default\":\"script capital a\",\"short\":\"script cap a\"},\"mathspeak"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-rest.js",
    "chars": 37660,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Mn\",\"key\":\"0363\",\"mappings\":{\"default\":{\"default\":\"combining latin small letter a\",\"short\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-upper-double-accent.js",
    "chars": 14059,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"01D5\",\"mappings\":{\"default\":{\"default\":\"latin capital letter u with diaeresis a"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-upper-normal.js",
    "chars": 8598,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"0041\",\"mappings\":{\"default\":{\"default\":\"latin capital letter a\",\"short\":\"cap a\""
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/latin-upper-single-accent.js",
    "chars": 57533,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Lu\",\"key\":\"00C0\",\"mappings\":{\"default\":{\"default\":\"latin capital letter a with grave\",\"alt"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/math_angles.js",
    "chars": 2582,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"right angle with arc\"}},\"key\":\"22BE\"},{\"category\":\"S"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/math_arrows.js",
    "chars": 60254,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Sm\",\"mappings\":{\"default\":{\"default\":\"leftwards arrow\",\"short\":\"left arrow\"},\"mathspeak\":{"
  },
  {
    "path": "Docs/ystatic/MathJax-2.7.5/extensions/a11y/mathmaps/en/symbols/math_characters.js",
    "chars": 1938,
    "preview": "[{\"locale\":\"en\"},{\"category\":\"Ll\",\"mappings\":{\"default\":{\"default\":\"script small l\",\"short\":\"script l\"}},\"key\":\"2113\"},{"
  }
]

// ... and 2084 more files (download for full content)

About this extraction

This page contains the full source code of the Ifsttar/I-Simpa GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2284 files (29.1 MB), approximately 7.8M tokens, and a symbol index with 3687 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!