Run a shape optimization ============================== To run a shape optimization, you have to write a configurations file with the optimization (number of iterations, costs to use...) The launcher script --------------------- Stellacode contain a python script called **launcher** in the root of Stellacode. It takes a config name as argument and run a simulation. :: python launcher.py path_to_config_file The script will save the following 1. The config file given (under the name *config.ini*) 2. A log file (*log.txt*) 3. The intermediate results at the rate given in the config file (a new file each time) 4. The final result (*result*) .. warning:: the repository *tmp/* has to be created before launching the script Plot and compares the results ------------------------------ You can use the notebook *show_simu.ipynb* in the root folder of Stellacode to extract all the simulation folder generated by the execution of *launcher.py*. It provides plot examples and a latex array comparison. Customize on your cluster ------------------------------- In order to ensure a reasonnable Parallelization, Stellacode uses `Dask `_ (only for the most costly part, it would be great to use it for everything). We refer to the `Dask documentation `_ for further details. .. warning:: Several layers of parallelization takes place in Stellacode: - **Dask** will parallelize the *Task graph* generated (which increase for smaller chunks) - **Numpy** parallelize all linear algebra computations. As a consequence, it is important to limit numpy cores usage (for a single thread). For example if numpy uses MKL, you can use the following line **before** importing numpy. :: os.environ["MKL_NUM_THREADS"] = "4" # export MKL_NUM_THREADS=6