doc: dev: Complete Architecture section.

setup.py
Pierre-Antoine Rouby 2023-09-27 15:55:45 +02:00
parent ab2e307e3d
commit d20cdfc47f
2 changed files with 79 additions and 8 deletions

View File

@ -73,7 +73,7 @@ https://doc.qt.io/qt-5/model-view-programming.html (last access
[fn:org] The org-mode website: https://orgmode.org/ (last access
2023-09-15)
* TODO Architecture
* Architecture
Pamhyr2's architecture is based on Qt Model/View, see Figure
[[graph-architecture]]. It is made up of several different components: the
@ -672,7 +672,30 @@ data has changed.
# Update function code...
#+end_src
** TODO Solver
** Solver
The Pamhyr2 architecture allow to define multiple solver. A solver is
define by a:
- type
- name
- description,
- path
- command line pattern
- (optional) input formater path
- (optional) input formater command line
- (optional) output formater path
- (optional) output formater command line
Let see Figure [[graph-multi-solver]], the application can implement
different solver type, this solver type implement the code for export
study to solver input format, and read the solver output to study
results. There exists a generic solver with a generic input and output
format, the type could be use to use a solver not implemented in
Pamhyr2, but this solver must can read/write input and output generic
format or use external script. There is possible to define different
solver with the same type, for example two differents version of the
same solver. Finaly, with input and output formater is possible to
execute a code on distant computer, for example, over ssh.
#+name: graph-multi-solver
#+header: :results drawer
@ -782,6 +805,16 @@ data has changed.
}
#+end_src
Let see Figure [[graph-pipeline]] the temporal order of action to run a
solver and get results:
- (1) Write solver input file(s) using the study data
- (2) Run the solver
- (2.1) The solver read the input file(s)
- (2.2) The solver compute results and write it to solver output
file(s)
- (3) Pamhyr2 create a Reuslts
- (3.1) The Pamhyr2 solver class read solver output file(s) and
complete Results with readed data
#+name: graph-pipeline
#+header: :results drawer
@ -811,8 +844,8 @@ data has changed.
subgraph cluster1{
label="File System";
style=dashed;
in[label="Solver input files",shape=note];
out[label="Solver output files",shape=note];
in[label="Solver input file(s)",shape=note,fillcolor=white];
out[label="Solver output file(s)",shape=note,fillcolor=white];
bin[label="Solver binary",shape=note];
}
@ -827,6 +860,10 @@ data has changed.
}
#+end_src
In case of generic solver (or a solver with input and output formater)
the temporal order of action is prensented in Figure
[[graph-pipeline-generic]].
#+name: graph-pipeline-generic
#+header: :results drawer
#+header: :exports results
@ -858,8 +895,8 @@ data has changed.
gin[label="Generic input file", shape=note,fillcolor=white];
ibin[label="Input formater", shape=note];
in[label="Solver input files",shape=note,fillcolor=white];
out[label="Solver output files",shape=note,fillcolor=white];
in[label="Solver input file(s)",shape=note,fillcolor=white];
out[label="Solver output file(s)",shape=note,fillcolor=white];
gout[label="Generic results file",shape=note,fillcolor=white];
obin[label="Output formater", shape=note];
bin[label="Solver binary",shape=note];
@ -894,8 +931,40 @@ data has changed.
}
#+end_src
** TODO Unit tests
** TODO The debug mode
To implement a Solver in Pamhyr2, there exists a abstract class
=Solver.AbstractSolver=. A class who herits this class, must implement
different methods:
- =export=: Export the study to solver input file(s)
- =input_param=: Return the solver input parameter(s) as string
- =log_file=: Return the solver log file name as string
- =results=: Read the solver output file(s) and return a
=Model.Results= object.
** Unit tests
The unit tests is actually not implemented in Pamhyr2, it is a *work
in progress*.
** The debug mode
To activate an deactivate the Pamhyr2 debug mode you can open the
configuration window and type "Ctrl+G" or run Pamhyr2 with command
line:
#+begin_src shell
./Pamhyr2 debug
#+end_src
This mode add some log and add two action in main window menu:
"About/Debug" open a window with Python Repl in current Python
environement, and "About/Debug SQLite" who open the application
SQLiteBrowser (if installed) on current Study to explore the study
data base file.
#+NAME: debug-repl
#+ATTR_LATEX: :width 16cm
#+CAPTION: Pamhyr2 debug Python REPL
[[./images/python-debug-repl.png]]
* TODO Build the project
The project uses gitlab-ci runners to build packages, but it is possible
@ -942,6 +1011,8 @@ winetricks installed.
[fn:nsis] The NSIS web site: https://sourceforge.net/projects/nsis/
** TODO Setup the CI environment
*** Linux
*** Windows (Wine)
* Documentation files
This document and the user documentation are org files. This text file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB