Added a simple Python example.
This commit is contained in:
		
							parent
							
								
									2a5bfba3da
								
							
						
					
					
						commit
						b6a1e2bb04
					
				|  | @ -0,0 +1,72 @@ | |||
| #!/usr/bin/env python | ||||
| # coding: utf-8 | ||||
| # | ||||
| # Copyright © 2022 - Rennes Physics Institute | ||||
| # | ||||
| # This file is part of MsSpec-DFM. | ||||
| # | ||||
| # MsSpec-DFM 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. | ||||
| # MsSpec-DFM 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 MsSpec-DFM.  If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Source file  : src/python/msspec_dfm/version.py | ||||
| # Last modified: Fri, 25 Feb 2022 17:27:32 +0100 | ||||
| # Committed by : Sylvain Tricot <sylvain.tricot@univ-rennes1.fr> 1645806435 +0100 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| # This example shows how to compute the plasmon dispersion for | ||||
| # different values of electron densities | ||||
| 
 | ||||
| # Import section | ||||
| from matplotlib import pyplot as plt | ||||
| import numpy as np | ||||
| 
 | ||||
| from msspec_dfm import compute | ||||
| 
 | ||||
| 
 | ||||
| # Electron densities (electrons/cm**3) | ||||
| densities = np.array([1e17, 1e18, 1e20, 1e23]) | ||||
| # Bohr radius (cm) | ||||
| a0 = 0.529e-8 | ||||
| # Temperature | ||||
| T = 300 | ||||
| 
 | ||||
| # Loop over density values | ||||
| for d in densities: | ||||
|     # The density is controlled by the 'RS' parameter, so | ||||
|     # compute the corresponding averaged radius (in Bohr units) | ||||
|     rs = ( (1/d) / ((4/3) * np.pi) ) ** (1/3) / a0 | ||||
|     # Some output printing | ||||
|     print("Computing {} for RS={}".format(plot_type, rs)) | ||||
|     # Here is the actual call to calculate | ||||
|     data = compute(N_Q=100, RS=rs, T=T) | ||||
|     # 'data' is a dict, each key is the name of an output file (without extansion). | ||||
|     # The value is the array of output values. The size of this array depends on | ||||
|     # the number of points chosen and on the kind of output file. | ||||
| 
 | ||||
|     # Reading data | ||||
|     X, Y = data['plas_disp'].T | ||||
|     # Plotting | ||||
|     plt.plot(X, Y, label=r'density={:.2e} $e/cm^3$'.format(d)) | ||||
| 
 | ||||
| # Plot setup | ||||
| plt.xlabel(r'$q/k_F$') | ||||
| plt.ylabel(r'$E/E_F$') | ||||
| plt.title('Plasmon Energy [T = {:.1f}K]'.format(T)) | ||||
| plt.grid(True) | ||||
| plt.legend() | ||||
| # Pops up the graph window | ||||
| plt.show() | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue