psim
1.0
Generalized 2D phonon transport using a Monte Carlo method
|
Generalized 2D phonon transport using a Monte Carlo method
The program is designed to simulate phonon transport in nanostructures using a Monte Carlo method, aiming to better understand such structures' thermal properties. To speed up computations, the program uses C++17 parallelism features, including parallel algorithms and execution policies.
The Monte Carlo method simulates phonon transport by modelling the movement of individual phonons through the nanostructure. The program tracks the path of each phonon, as well as the amount of energy it carries. It uses this information to calculate the thermal conductivity and temperature of the nanostructure.
The program is intended for researchers and engineers working in nanotechnology and can be customized to simulate various types of nanostructures with different material properties.
.json
file generated in Python..json
files can be provided as input.The software has no dependencies or third-party requirements, although you may need TBB if your compiler does not support C++17 parallel algorithms and execution policy. CMake 3.21+ is required.
See tests for working OS/compiler combinations.
If you have all the necessary dependencies, you can run make release
in the directory containing the makefile
. The executable can then be found here: build/psim/Release/psim.out
.
On Debian/Ubuntu, these can be installed by running the following commands:
Then navigate to the directory containing makefile
and run the command:
In the python_sim
folder, there are 3 .py
files. Running these files should produce the .json
files in the .json
folder. These are the files you can pass into the psim program. For example, if you put the .json
files in the same directory as the psim executable, then you can run all five simulations using the command:
Some pre-built configurations can be found at psim_python\psim\pre_builts.py
. This can give an idea of how to construct your systems, but this can be a complicated process depending on the intricacies of your desired configuration.
The table below outlines the data found in the output files.
Quantity | Description |
---|---|
temp | Temperature |
temp std | Standard deviation of the temperature |
x-flux | Phonon flux in the x-direction |
x-flux std | Standard deviation of the phonon flux in x |
y-flux | Phonon flux in the y-direction |
y-flux std | Standard deviation of the phonon flux in y |
The first line contains details about the run. The remaining lines follow the format:
| temp | temp std | x-flux | x-flux std | y-flux | y-flux std | | -— | -----— | ---— | -------— | ---— | -------— |
Each entry corresponds to the associated sensor in the .json file. That is, the first entry corresponds with the first sensor, etc.
The first line contains details about the run. The remaining lines follow the format:
| simulation step | | ------------— |
| number of sensors or number of measurements that follow this line | | --------------------------------------------------------------— |
| temp | temp std | x-flux | x-flux std | y-flux | y-flux std | | -— | -----— | ---— | -------— | ---— | -------— |
This pattern is repeated to give chronological snapshots of the system and these can be strung together to see the system evolution.
In the visualization process, the original JSON file is combined with the output file to generate plots. Typically, the initial temperature and values specified in the JSON file are replaced by the corresponding values from the simulation results file. Linear systems can be handled more simply, as can be seen in plotly_plotter.py
.
The following visualizations can be built using the code in matplotlib_plotter.py
. The code to create these visualizations can be found in the corresponding demo files. The plotly_plotter.py
file generates interactive HTML
plots, but it is only helpful for simple linear systems.
surface.cpp
.[1]: D. Lacroix, K. Joulain, and D. Lemonnier, “Monte Carlo transient phonon transport in silicon and germanium at nanoscales,” Physical Review B, vol. 72, no. 6, p. 064305, 2005.
[2]: J.-P. M. Péraud and N. G. Hadjiconstantinou, “Efficient simulation of multidimensional phonon transport using energy-based variance-reduced Monte Carlo formulations,” Physical Review B, vol. 84, no. 20, p. 205331, 2011.
[3]: J.-P. M. Péraud and N. G. Hadjiconstantinou, “An alternative approach to efficient simulation of micro/nanoscale phonon transport,” Applied Physics Letters, vol. 101, no. 15, p. 153114, 2012.
[4]: A. J. Minnich, G. Chen, S. Mansoor, and B. Yilbas, “Quasiballistic heat transfer studied using the frequency-dependent Boltzmann transport equation,” Physical Review B, vol. 84, no. 23, p. 235207, 2011.
[5]: Y.-C. Hua and B.-Y. Cao, “Study of phononic thermal transport across nanostructured interfaces using phonon Monte Carlo method,” International Journal of Heat and Mass Transfer, vol. 154, p. 119762, 2020.