class: titlepage numbers .title[ Advanced Scientific Programming ] .subtitle[ `PSA` - N. Dubray - ENSIIE - 2018 ] .wauto[ ```C++ #include
#include "solver.h" static PyObject * calc_system(PyObject *self, PyObject *args) { const char *string; int val; if (!PyArg_ParseTuple(args, "s", &string)) return NULL; Solver s(string); val = s.getVal(); return Py_BuildValue("i", val); } ``` ] .footnote[ [:book:](../index.html) ] --- layout: true class: animated fadeIn middle numbers .footnote[ `PSA` - N. Dubray - ENSIIE - 2018 - [:book:](../index.html) ] --- # These slides .hcenter.w20[] .block.hcenter.w100[ * You can **freely** download, modify and use these slides. * Do not hesitate to make some **pull requests** if you want to share your modifications. * Repository: [https://github.com/dubrayn/dubrayn.github.io](https://github.com/dubrayn/dubrayn.github.io). * Online slides: [http://dubrayn.github.io](http://dubrayn.github.io). ] .vspace[] .block.hcenter.w100[ To view these slides **locally** with `chromium-browser`: ```shell $ chromium-browser --allow-file-access-from-files index.html ``` ] .vspace[] .block.hcenter.w100[ To view these slides **locally** with `firefox`: 1. go to `about:config`, 2. search for the `origin_policy` pattern, 3. set the property `security.fileuri.strict_origin_policy` to `false`. ] --- # Author ## N. Dubray - [`noel.dubray@gmail.com`](mailto:noel.dubray@gmail.com) * *job:* researcher at the CEA (french alternative energies and atomic energy commission) * *field:* theoretical nuclear physics * *research subject:* microscopic description of the fission process * *skills:* scientist / developer / HPC user / sysadmin .hcenter.shadow.w50[] .hcenter[Example of a simulated fissioning nucleus] --- # Courses / project ## Schedule .hcenter[ | Time | 04/13 | 04/27 | 05/04 | 05/18 | 05/25 | 06/01 | |:-------------:|:-------------:|:-------------:|:----------------------:|:-------------:|:-------------:|:----------------------:| | 9:00 - 10:45 | **Course #0** | **Course #2** | **Course #4** | **Course #5** | **Course #7** | **Course #9** | | 11:00 - 12:45 | Project | Project | Project | Project | Project | Project | | 14:00 - 15:45 | **Course #1** | **Course #3** | .redb[Presentation #0] | **Course #6** | **Course #8** | .redb[Presentation #1] | | 16:00 - 17:45 | Project | Project | .redb[Presentation #0] | Project | Project | .redb[Presentation #1] | ] .vspace[] .noflex[ .rightf.w30[ .hcenter[] .hcenter[[source: xkcd](https://xkcd.com/365)] ] ## Presentations * slides [~20min] + discussion / questions [~10min] * .redb[presentation #0: weight 1.0] (mid-project) * .redb[presentation #1: weight 2.0] (final) .vspace[] ## Teamwork * 2 students per team * **mandatory** `git` use ] --- # Content .hcenter.w85.row[ .w42[ ## 1. project presentation * TD-Schrödinger equation * special cases * Finite Difference Method ## 2. programming techniques * `python` bindings * `python` and `C` * `swig` * errors / exceptions * in `C++` * in `python` * with `swig` * threads / OpenMP * MPI master / slaves model .hcenter[:arrow_right: **mid-project presentation**] ] .w42[ ## 3. live monitoring * `JSON` * with a database * socket / named pipe * `REST API` ## 4. restart mechanism ## 5. data persistence * `JSON` * `pickle` * `MPI-IO` * MongoDB ## 6. data visualization * `VTK` * Paraview .hcenter[:arrow_right: **final presentation**] ] ]