├── .gitignore ├── COPYING.LESSER.txt ├── COPYING.txt ├── Data ├── AM15G.txt ├── Biblio_info_to_cite.txt ├── nk_Ag.txt ├── nk_Air.txt ├── nk_Al.txt ├── nk_Au.txt ├── nk_BCP.txt ├── nk_C60_1.txt ├── nk_C60_2.txt ├── nk_Ca.txt ├── nk_CuSCN.txt ├── nk_DPO.txt ├── nk_IDIC.txt ├── nk_IDTBR.txt ├── nk_IT2Cl.txt ├── nk_IT4F.txt ├── nk_ITIC.txt ├── nk_ITICinCB.txt ├── nk_ITM.txt ├── nk_ITO.txt ├── nk_MAPI.txt ├── nk_MAPI_2.txt ├── nk_MoOx35nm.txt ├── nk_MoOx5nm.txt ├── nk_P3HT.txt ├── nk_P3HTPCBM_BHJ.txt ├── nk_PBDTTPDPC70BM.txt ├── nk_PBDTTPDalone.txt ├── nk_PC70BM.txt ├── nk_PCBM.txt ├── nk_PCE10PC60BM.txt ├── nk_PEDOT.txt ├── nk_PS.txt ├── nk_PSAnneal.txt ├── nk_PTAA.txt ├── nk_SFPDI2.txt ├── nk_SiO2.txt ├── nk_TaTm.txt ├── nk_TaTmdopedF6TCNNQ.txt ├── nk_TiO2.txt ├── nk_Y6.txt ├── nk_ZnONP.txt ├── nk_ZnOnano.txt ├── nk_aSi.txt ├── nk_aZnO.txt ├── nk_glass.txt └── nk_peroTripleCat.txt ├── Docs ├── Developer_guidelines.md ├── Manual.pdf └── change_log.txt ├── README.md ├── SimSS ├── L1_parameters.txt ├── L2_parameters.txt ├── L3_parameters.txt ├── simss.pas └── simulation_setup.txt ├── Tests ├── run_tests.py ├── test_1 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── test1.dat │ └── test_1_result.png ├── test_10 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ └── test_10_result.png ├── test_11 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ ├── test_11_result.png │ └── traps.txt ├── test_12 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ ├── test_12_result.png │ └── traps.txt ├── test_13 │ ├── L1_parameters.txt │ ├── L2_parameters.txt │ ├── L3_parameters.txt │ ├── simulation_setup.txt │ ├── test13.dat │ └── test_13_result.png ├── test_14 │ ├── L1_parameters.txt │ ├── L2_parameters.txt │ ├── L3_parameters.txt │ ├── simulation_setup.txt │ └── tVG.txt ├── test_2 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── test2.dat │ └── test_2_result.png ├── test_3 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── test3.dat │ └── test_3_result.png ├── test_4 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── test4.dat │ └── test_4_result.png ├── test_5 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── test5.dat │ └── test_5_result.png ├── test_6 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ ├── test6.dat │ └── test_6_result.png ├── test_7 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ └── test_7_result.png ├── test_8 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ └── test_8_result.png ├── test_9 │ ├── L1_parameters.txt │ ├── simulation_setup.txt │ ├── tVG.txt │ ├── test9.dat │ └── test_9_result.png ├── test_units │ ├── Data.py │ ├── SIMsalabim.py │ ├── aux_functions.py │ └── plot_settings.py └── tests.md ├── Units ├── DDRoutines.pas ├── DDTypesAndConstants.pas ├── InputOutputUtils.pp ├── NumericalUtils.pp ├── TransferMatrix.pas └── TypesAndConstants.pp └── ZimT ├── L1_parameters.txt ├── L2_parameters.txt ├── L3_parameters.txt ├── simulation_setup.txt ├── tVG.txt └── zimt.pas /.gitignore: -------------------------------------------------------------------------------- 1 | # Exclude all files without an extension (Linux binaries) 2 | * 3 | !/**/ 4 | !*.* 5 | 6 | # Exclude all .exe files (Windows binaries) 7 | *.exe 8 | 9 | # Exclude all fpc-related files 10 | *.ppu 11 | *.o 12 | 13 | # Exclude all log files 14 | log*.txt 15 | scPars*.txt 16 | 17 | # Exclude SIMsalabim output 18 | *.dat 19 | 20 | # Re-include all dat files in Tests (we want them in the repository) 21 | !/Tests/**/*.dat 22 | 23 | # Some people use Origin, to make their lives easier we ignore origin projects 24 | *.opj 25 | 26 | # Ignore python cache 27 | **/__pycache__ 28 | -------------------------------------------------------------------------------- /Data/Biblio_info_to_cite.txt: -------------------------------------------------------------------------------- 1 | Reference list for the nk values: 2 | 3 | 4 | ############################## 5 | 6 | Ref for: 7 | 'nk_ZnO','nk_PCE10PC60BM','nk_PC70BM','nk_PBDTTPDalone','nk_MoOx35nm' 8 | 'nk_MoOx5nm','nk_aZnO','nk_ZnOnano' 9 | 10 | cite: 11 | Gao, Y. , Le Corre, V. M., Ga�tis, A. , Neophytou, M. , Hamid, M. A., Takanabe, K. and Beaujuge, P. M. 12 | (2016), Homo-Tandem Polymer Solar Cells with VOC >1.8 V for Efficient PV-Driven Water Splitting. Adv. Mater., 28: 3366-3373. 13 | doi:10.1002/adma.201504633 14 | 15 | 16 | ############################## 17 | 18 | Ref for: 19 | 'nk_BCP' 20 | cite: 21 | Z.T. Liu, C.Y. Kwong, C.H. Cheung, A.B. Djuri�ic, Y. Chan, P.C. Chui, 22 | The characterization of the optical functions of BCP and CBP thin films by spectroscopic ellipsometry, 23 | Synthetic Metals, Volume 150, Issue 2, 2005, Pages 159-163, 24 | https://doi.org/10.1016/j.synthmet.2005.02.001. 25 | 26 | 27 | ############################## 28 | 29 | Ref for: 30 | 'nk_MAPITejas' 31 | cite: 32 | T. S. Sherkar, C. Momblona, L. Gil-Escrig, H. J. Bolink, L. J. A. Koster, Adv. Energy Mater. 2017, 7, 1602432. https://doi.org/10.1002/aenm.201602432 33 | 34 | Ref for: 35 | 'nk_TaTm','nk_TaTmdopedF6TCNNQ','nk_C60_2','nk_MAPI' 36 | 37 | cite: 38 | Recombination in Perovskite Solar Cells: Significance of Grain Boundaries, Interface Traps, and Defect Ions 39 | Tejas S. Sherkar, Cristina Momblona, Lid�n Gil-Escrig, Jorge �vila, Michele Sessolo, Henk J. Bolink, and L. Jan Anton Koster 40 | ACS Energy Letters 2017 2 (5), 1214-1222 41 | DOI: 10.1021/acsenergylett.7b00236 42 | 43 | ############################## 44 | 45 | Ref for: 46 | 'nk_TiO2' 47 | cite: 48 | An electron beam evaporated TiO2 layer for high efficiency planar perovskite solar cells on flexible polyethylene terephthalate substrates 49 | Weiming Qiu,*ab Ulrich W. Paetzold,ad Robert Gehlhaar,a Vladimir Smirnov,d Hans-Gerd Boyen,g Jeffrey G. Tait,a Bert Conings,g Weimin Zhang,e Christian B. Nielsen,e Iain McCulloch,f Ludo Froyen,b Paul Heremans*ac and David Cheynsa 50 | J. Mater. Chem. A, 2015,3, 22824-22829 51 | 10.1039/C5TA07515G 52 | 53 | 54 | ############################## 55 | Ref for: 56 | 'IDTBR','ITICinCB','IT2Cl','Y6','IDTBR','SF-PDI2','ITIC','IDIC','IT4F','ITM','DPO','CuSCN' 57 | 58 | Nature Communications volume 11, Article number: 5220 (2020) 59 | https://doi.org/10.1038/s41467-020-19029-9 60 | 61 | ############################## 62 | ref for: 63 | 64 | 'nk_peroTripleCat','nk_C60_1','nk_PTAA' 65 | 66 | ACS Appl. Energy Mater. 2019, 2, 9, 6280–6287 67 | https://doi.org/10.1021/acsaem.9b00856 68 | -------------------------------------------------------------------------------- /Docs/Developer_guidelines.md: -------------------------------------------------------------------------------- 1 | # SIMsalabim project: Developer Instructions 2 | 3 | All input that can help us make SIMsalabim better and more useful for users is welcome. This document contains instructions for what to do if you would like to contribute to or tinker around with the code. 4 | 5 | ## Filing Issues 6 | If anything is unclear or you have any feature requests, you can file an 'Issue' in the Issues section on GitHub. Please don't hesitate to do this, as it might be of help for other user or us as maintainers as well. If you have a question we can provide help in the issues section so that future users can use if for reference. 7 | 8 | If you have any feature requests, we would first need to discuss the how and why in detail, which we would also do in the issues section. We will decide on a plan of action on a per case basis, but expect to make many of the code changes ourselves. 9 | 10 | In case of bug reports we will need the exact configuration of the 'device_parameters.txt' file as many appendant bugs can be traced back to settings that result in an unphysical device. Including that, along with the terminal output (including version of the program used), will help us dial in on the problem quickly. 11 | 12 | 13 | ## Overall structure 14 | - ZimT and SimSS share much of the same code, so try to put new code in the units, not in ZimT or SimSS 15 | - Routines, types and constants that are specific to drift-diffusion modelling should go in DDRoutines or DDTypesAndConstants. These units should have the same version number as the ZimT/SimSS codes. 16 | - Somewhat generic routines, types and constants should go into units TypesAndConstants, InputOutputUtils, and NumericalUtils. As yet, these units do not have a version number. 17 | - Exit Codes are defined in unit TypesAndConstants. 18 | - Input parameters and parameters that are directly derived from those input parameters (like Booleans based on a 0,1 input) are stored in par (='parameters') of type TInputParameters. The order of the fields within this record (integers, reals, etc are grouped) should follow the order of the variables in the file device_parameters.txt. Note: some parameters are limited to either SimSS or ZimT. However, we do not make use of the possibility of introducing a variant part in these records as this led to unexpected behaviour. For example, when a field is only defined (through the variant part) to ZimT, it was still availalbe in SimSS and no warning or exception was given when using that part of the record (with an undefined value!). 19 | - Other variables that remain do not change throughout the simulation are stored in stv (='static variables') of type TStaticVars. 20 | 21 | ## General remarks on changing the code 22 | - Make sure you understand what is permitted—and what is not—under the GLPL licence. 23 | - Describe changes in file change_log.txt: Briefly describe the changes to the code, but this is not the main point (as one can easily figure them out using a difference viewer). More importantly, motivate and/or explain why the change was made. 24 | - Run the tests as outlined in the folder 'Tests'. These are just a few tests to assess the basic functionality so additional testing is required. 25 | - Magic numbers used in the code are, mostly, listed as constants in DDTypesAndConstants. Here we also indicate where—in which routine—the magic number is used and what it does. 26 | -Try to limit local variables in and parameters passed to subroutines to 32K as this is the limit of some processors. 27 | 28 | ## Notation within the codes 29 | - Use Linux line-endings 30 | - Add ample comments to the code, using curly brackets {}. Describe *why* rather than *what* when formulating comments. 31 | - Naming of variables that represent a physics unit: snake-case where multiple sub- and superscripts are separated by an underscore, for example: E_t_bulk 32 | - Naming of other variables: lower camel-case, i.e. camel-case where the first word is always lowercase, for example: bulkTrapType 33 | - Naming of procedures and function: pascal case combined with snake-case: Calc_Elec_Mob, for example 34 | - FPC/Pascal key words fully capitalized: IF ... THEN ... ELSE 35 | - Indentation width: 4 36 | 37 | ## Parameters 38 | - Physical units: SI only, except for work functions (eV). Work functions are given as the distance to vacuum so they are positive. 39 | - Device parameters: try to keep the same order for ZimT and SimSS. Every parameter should have a unit (if any) and a short description. After reading the parameters, they should be checked (to some extent) whether they make sense (logical, physical) in Check_Parameters. 40 | -------------------------------------------------------------------------------- /Docs/Manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Docs/Manual.pdf -------------------------------------------------------------------------------- /SimSS/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 25E-9 * m, device length/thickness 8 | eps_r = 5 * relative dielectric constant 9 | E_c = 4 * eV, conduction band edge 10 | E_v = 5.9 * eV, valence band edge 11 | N_c = 5E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-6 * m^2/Vs, zero field mobility 17 | mu_p = 1E-9 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_C60_1.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /SimSS/L2_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 500E-9 * m, device length/thickness 8 | eps_r = 24 * relative dielectric constant 9 | E_c = 3.9 * eV, conduction band edge 10 | E_v = 5.53 * eV, valence band edge 11 | N_c = 2.2E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-4 * m^2/Vs, zero field mobility 17 | mu_p = 1E-4 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 1E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 3E21 * m^-3, concentration of negative ions 35 | N_cation = 3E21 * m^-3, concentration of positive ions 36 | mu_anion = 5E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 7E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_MAPI.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 1E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 5E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /SimSS/L3_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 10E-9 * m, device length/thickness 8 | eps_r = 3 * relative dielectric constant 9 | E_c = 2.25 * eV, conduction band edge 10 | E_v = 5.4 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-9 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_PTAA.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0E18 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_1/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 2E-7 * m, device length/thickness 8 | eps_r = 22 * relative dielectric constant 9 | E_c = 2 * eV, conduction band edge 10 | E_v = 6 * eV, valence band edge 11 | N_c = 2.2E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 0.0001 * m^2/Vs, zero field mobility 17 | mu_p = 0.0001 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1E27 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_1/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** SimSS Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 4 * eV, work function left electrode, or 'sfb' 15 | W_R = 4 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | G_frac = 1 * fraction of Gmax used in solar cell 26 | genProfile = none * name of file generation profile (or 'none' or 'calc') 27 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 28 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 29 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 30 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 31 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 32 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 33 | lambda_min = 3.5E-7 * m, lower bound wavelength 34 | lambda_max = 8E-7 * m, upper bound wavelength 35 | 36 | **Numerical Parameters************************************************************** 37 | NP = 1000 * integer, number of grid points, must be at least 5 per layer. 38 | tolPois = 0.001 * V, abs. tolerance of iterative Poisson solver 39 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 40 | maxItPois = 10000 * max. number it. Poisson loop 41 | maxItSS = 10000 * max. number it. main loop 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 10 * determines shape of exp. grid, increase grad for smaller h[1] 50 | 51 | **Voltage range of simulation******************************************************* 52 | Vdist = 2 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) 53 | preCond = 0 * pre-conditioning, yes(1)/no(0) 54 | Vpre = 0 * V, pre-conditioned voltage 55 | fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). 56 | Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep 57 | Vmin = 0.001 * V 58 | Vmax = 5 * V 59 | Vstep = 0.1 * V 60 | Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be 61 | * slightly larger than Vmax or slightly lower than Vmin 62 | NJV = 50 * number of JV points in logarithmic distribution 63 | untilVoc = 0 * if 1 then SimSS will stop at Voc 64 | 65 | **User interface******************************************************************** 66 | timeout = -1 * s, max run time, use negative value for unlimited run time. 67 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 68 | autoTidy = 1 * if 1, then the program will always tidy up this file 69 | useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it 70 | expJV = expJV.csv * name of file with experimental JV characteristics 71 | fitMode = lin * lin or log: use J or log(J) in calc. of fit error 72 | fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error 73 | JVFile = JV.dat * name of the file with simulated JV characteristics 74 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 75 | limitDigits = 1 * if 1, then number of digits in output is limited 76 | outputRatio = 100 * Output to varFile every outputRatio voltages 77 | scParsFile = scPars.dat * name of file with solar cell parameters 78 | logFile = log.txt * name of log file 79 | -------------------------------------------------------------------------------- /Tests/test_1/test1.dat: -------------------------------------------------------------------------------- 1 | Vext Jext JSandH 2 | 1E-3 0.209933 0.210009 3 | 0.00119 0.249809 0.249875 4 | 0.001416 0.297228 0.297307 5 | 0.001684 0.353647 0.353741 6 | 0.002004 0.420771 0.420883 7 | 0.002385 0.500629 0.500762 8 | 0.002837 0.595633 0.595791 9 | 0.003376 0.708648 0.708836 10 | 0.004017 0.843077 0.8433 11 | 0.00478 1.002955 1.00322 12 | 0.005687 1.193066 1.193381 13 | 0.006767 1.419069 1.419444 14 | 0.008051 1.687641 1.688087 15 | 0.00958 2.006638 2.007167 16 | 0.011399 2.385249 2.385876 17 | 0.013562 2.834152 2.834896 18 | 0.016137 3.365626 3.366506 19 | 0.019201 3.993576 3.994614 20 | 0.022846 4.733392 4.734613 21 | 0.027183 5.601517 5.602945 22 | 0.032343 6.614539 6.6162 23 | 0.038483 7.787577 7.78949 24 | 0.045789 9.131671 9.13385 25 | 0.054482 10.650031 10.652475 26 | 0.064825 12.333276 12.335965 27 | 0.077131 14.154559 14.15745 28 | 0.091774 16.066505 16.069536 29 | 0.109196 18.002802 18.005899 30 | 0.129926 19.886712 19.889805 31 | 0.154592 21.645738 21.648779 32 | 0.18394 23.227068 23.230037 33 | 0.218859 24.606217 24.60912 34 | 0.260408 25.784941 25.787804 35 | 0.309844 26.781545 26.784397 36 | 0.368665 27.620461 27.623335 37 | 0.438653 28.325715 28.328636 38 | 0.521928 28.918443 28.921428 39 | 0.621012 29.416581 29.419641 40 | 0.738906 29.835224 29.838363 41 | 0.879181 30.18706 30.190277 42 | 1.046086 30.48275 30.486042 43 | 1.244677 30.731257 30.734617 44 | 1.480968 30.939927 30.943532 45 | 1.762118 31.11538 31.119114 46 | 2.096641 31.262847 31.266682 47 | 2.494671 31.386777 31.390704 48 | 2.968264 31.490924 31.494939 49 | 3.531764 31.578432 31.582543 50 | 4.20224 31.651953 31.656169 51 | 5 31.713668 31.718048 52 | -------------------------------------------------------------------------------- /Tests/test_1/test_1_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_1/test_1_result.png -------------------------------------------------------------------------------- /Tests/test_10/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 30E-9 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1 * m^2/Vs, zero field mobility 17 | mu_p = 1 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1e5 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1e5 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 1e14 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 3.55 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 3.47e-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 0 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e28 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.00001 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 0 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 5.02E-15 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.5 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_10/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | l2 = L1_parameters.txt * parameter file for layer 2 12 | l3 = L1_parameters.txt * parameter file for layer 3 13 | l4 = L1_parameters.txt * parameter file for layer 4 14 | l5 = L1_parameters.txt * parameter file for layer 5 15 | l6 = L1_parameters.txt * parameter file for layer 6 16 | l7 = L1_parameters.txt * parameter file for layer 7 17 | l8 = L1_parameters.txt * parameter file for layer 8 18 | l9 = L1_parameters.txt * parameter file for layer 9 19 | l10 = L1_parameters.txt * parameter file for layer 10 20 | 21 | **Contacts************************************************************************** 22 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 23 | W_L = 3.6 * eV, work function left electrode, or 'sfb' 24 | W_R = 4.4 * eV, work function right electrode, or 'sfb' 25 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 26 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 27 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 28 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 29 | * nb: use negative values if Sn/pR/L should be infinite 30 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 31 | R_series = 0 * Ohms m2, series resistance. 32 | 33 | **Optics**************************************************************************** 34 | genProfile = none * name of file generation profile (or 'none' or 'calc') 35 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 36 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 37 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 38 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 39 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 40 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 41 | lambda_min = 3.5E-7 * m, lower bound wavelength 42 | lambda_max = 8E-7 * m, upper bound wavelength 43 | 44 | **Numerical Parameters************************************************************** 45 | NP = 100 * integer, number of grid points, must be at least 5 per layer. 46 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 47 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 48 | maxItPois = 300 * max. number it. Poisson loop 49 | maxItSS = 1000 * max. number it. main loop 50 | maxItTrans = 300 * max. number it. transient solver 51 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 52 | tolDens = 1E-8 * relative tolerance of density solver 53 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 54 | minAcc = 0.05 * >0, min. acceleration parameter 55 | maxAcc = 0.95 * <2, max. acceleration parameter 56 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 57 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 58 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 59 | tolVint = 1E-10 * V, tolerance internal voltage (Vint) 60 | 61 | **User interface******************************************************************** 62 | timeout = -1 * s, max run time, use negative value for unlimited run time. 63 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 64 | autoTidy = 1 * if 1, then the program will always tidy up this file 65 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 66 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 67 | tJFile = tj.dat * name of file with (t, V, G, J, range) 68 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 69 | limitDigits = 1 * if 1, then number of digits in output is limited 70 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 71 | logFile = log.txt * name of log file 72 | -------------------------------------------------------------------------------- /Tests/test_10/test_10_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_10/test_10_result.png -------------------------------------------------------------------------------- /Tests/test_11/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E25 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-6 * m^2/Vs, zero field mobility 17 | mu_p = 1E-6 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4 * eV, energy level of traps at interface 28 | intTrapFile = traps.txt * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-8 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 0 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e28 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.00001 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 1E15 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-8 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 0 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4 * eV, energy level of all traps 59 | bulkTrapFile = traps.txt * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_11/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3.5 * eV, work function left electrode, or 'sfb' 15 | W_R = 4.5 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | genProfile = none * name of file generation profile (or 'none' or 'calc') 26 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 27 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 28 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 29 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 30 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 31 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 32 | lambda_min = 3.5E-7 * m, lower bound wavelength 33 | lambda_max = 8E-7 * m, upper bound wavelength 34 | 35 | **Numerical Parameters************************************************************** 36 | NP = 100 * integer, number of grid points, must be at least 5 per layer. 37 | tolPois = 1E-8 * V, abs. tolerance of iterative Poisson solver 38 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 39 | maxItPois = 300 * max. number it. Poisson loop 40 | maxItSS = 1000 * max. number it. main loop 41 | maxItTrans = 300 * max. number it. transient solver 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | tolVint = 1E-10 * V, tolerance internal voltage (Vint) 51 | 52 | **User interface******************************************************************** 53 | timeout = -1 * s, max run time, use negative value for unlimited run time. 54 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 55 | autoTidy = 1 * if 1, then the program will always tidy up this file 56 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 57 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 58 | tJFile = tj.dat * name of file with (t, V, G, J, range) 59 | varFile = var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 60 | limitDigits = 1 * if 1, then number of digits in output is limited 61 | outputRatio = 10 * Output J to screen and variables to varFile every outputRatio timesteps 62 | logFile = log.txt * name of log file 63 | -------------------------------------------------------------------------------- /Tests/test_11/tVG.txt: -------------------------------------------------------------------------------- 1 | t Vext G_frac 2 | 0 -2 1 3 | 1.047615753e-08 -2 0 4 | 1.321941148e-08 -2 0 5 | 1.668100537e-08 -2 0 6 | 2.104904145e-08 -2 0 7 | 2.656087783e-08 -2 0 8 | 3.351602651e-08 -2 0 9 | 4.229242874e-08 -2 0 10 | 5.336699231e-08 -2 0 11 | 6.734150658e-08 -2 0 12 | 8.497534359e-08 -2 0 13 | 1.072267222e-07 -2 0 14 | 1.353047775e-07 -2 0 15 | 1.707352647e-07 -2 0 16 | 2.154434690e-07 -2 0 17 | 2.718588243e-07 -2 0 18 | 3.430469286e-07 -2 0 19 | 4.328761281e-07 -2 0 20 | 5.462277218e-07 -2 0 21 | 6.892612104e-07 -2 0 22 | 8.697490026e-07 -2 0 23 | 1.097498765e-06 -2 0 24 | 1.384886371e-06 -2 0 25 | 1.747528400e-06 -2 0 26 | 2.205130740e-06 -2 0 27 | 2.782559402e-06 -2 0 28 | 3.511191734e-06 -2 0 29 | 4.430621458e-06 -2 0 30 | 5.590810183e-06 -2 0 31 | 7.054802311e-06 -2 0 32 | 8.902150854e-06 -2 0 33 | 1.123324033e-05 -2 0 34 | 1.417474163e-05 -2 0 35 | 1.788649529e-05 -2 0 36 | 2.257019720e-05 -2 0 37 | 2.848035868e-05 -2 0 38 | 3.593813664e-05 -2 0 39 | 4.534878508e-05 -2 0 40 | 5.722367659e-05 -2 0 41 | 7.220809018e-05 -2 0 42 | 9.111627561e-05 -2 0 43 | 1.149756995e-04 -2 0 44 | 1.450828778e-04 -2 0 45 | 1.830738280e-04 -2 0 46 | 2.310129700e-04 -2 0 47 | 2.915053063e-04 -2 0 48 | 3.678379772e-04 -2 0 49 | 4.641588834e-04 -2 0 50 | 5.857020818e-04 -2 0 51 | 7.390722034e-04 -2 0 52 | 9.326033469e-04 -2 0 53 | 1.176811952e-03 -2 0 54 | 1.484968262e-03 -2 0 55 | 1.873817423e-03 -2 0 56 | 2.364489413e-03 -2 0 57 | 2.983647240e-03 -2 0 58 | 3.764935807e-03 -2 0 59 | 4.750810162e-03 -2 0 60 | 5.994842503e-03 -2 0 61 | 7.564633276e-03 -2 0 62 | 9.545484567e-03 -2 0 63 | 1.204503540e-02 -2 0 64 | 1.519911083e-02 -2 0 65 | 1.917910262e-02 -2 0 66 | 2.420128265e-02 -2 0 67 | 3.053855509e-02 -2 0 68 | 3.853528594e-02 -2 0 69 | 4.862601580e-02 -2 0 70 | 6.135907273e-02 -2 0 71 | 7.742636827e-02 -2 0 72 | 9.770099573e-02 -2 0 73 | 1.232846739e-01 -2 0 74 | 1.555676144e-01 -2 0 75 | 1.963040650e-01 -2 0 76 | 2.477076356e-01 -2 0 77 | 3.125715850e-01 -2 0 78 | 3.944206059e-01 -2 0 79 | 4.977023564e-01 -2 0 80 | 6.280291442e-01 -2 0 81 | 7.924828984e-01 -2 0 82 | 1.000000000e+00 -2 0 83 | -------------------------------------------------------------------------------- /Tests/test_11/test_11_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_11/test_11_result.png -------------------------------------------------------------------------------- /Tests/test_11/traps.txt: -------------------------------------------------------------------------------- 1 | E Ntrap 2 | 3.025 4.012548936e+14 3 | 3.076 2.401964964e+14 4 | 3.128 1.437984602e+14 5 | 3.179 8.6042074e+13 6 | 3.23 5.15222e+13 7 | 3.282 3.084118892e+13 8 | 3.333 1.846040426e+13 9 | 3.384 1.10515119e+13 10 | 3.436 6615450480000 11 | 3.487 3959481070000 12 | 3.538 2370536422000 13 | 3.589 1418921388000 14 | 3.641 849085856000 15 | 3.692 508421069600 16 | 3.743 304341635400 17 | 3.795 182182499200 18 | 3.846 109072497400 19 | 3.897 65278627400 20 | 3.949 39074436480 21 | 4 23391078800 22 | -------------------------------------------------------------------------------- /Tests/test_12/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 30E-9 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1e-6 * m^2/Vs, zero field mobility 17 | mu_p = 1e-6 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1e3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1e3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 1e14 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 3.55 * eV, energy level of traps at interface 28 | intTrapFile = traps.txt * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 0 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 3e-11 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e28 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.00001 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 0 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 5.02E-15 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.5 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_12/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | l2 = L1_parameters.txt * parameter file for layer 2 12 | l3 = L1_parameters.txt * parameter file for layer 3 13 | l4 = L1_parameters.txt * parameter file for layer 4 14 | l5 = L1_parameters.txt * parameter file for layer 5 15 | l6 = L1_parameters.txt * parameter file for layer 6 16 | l7 = L1_parameters.txt * parameter file for layer 7 17 | l8 = L1_parameters.txt * parameter file for layer 8 18 | l9 = L1_parameters.txt * parameter file for layer 9 19 | l10 = L1_parameters.txt * parameter file for layer 10 20 | 21 | **Contacts************************************************************************** 22 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 23 | W_L = 3.5 * eV, work function left electrode, or 'sfb' 24 | W_R = 4.5 * eV, work function right electrode, or 'sfb' 25 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 26 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 27 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 28 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 29 | * nb: use negative values if Sn/pR/L should be infinite 30 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 31 | R_series = 0 * Ohms m2, series resistance. 32 | 33 | **Optics**************************************************************************** 34 | genProfile = none * name of file generation profile (or 'none' or 'calc') 35 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 36 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 37 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 38 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 39 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 40 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 41 | lambda_min = 3.5E-7 * m, lower bound wavelength 42 | lambda_max = 8E-7 * m, upper bound wavelength 43 | 44 | **Numerical Parameters************************************************************** 45 | NP = 100 * integer, number of grid points, must be at least 5 per layer. 46 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 47 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 48 | maxItPois = 300 * max. number it. Poisson loop 49 | maxItSS = 1000 * max. number it. main loop 50 | maxItTrans = 300 * max. number it. transient solver 51 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 52 | tolDens = 1E-8 * relative tolerance of density solver 53 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 54 | minAcc = 0.05 * >0, min. acceleration parameter 55 | maxAcc = 0.95 * <2, max. acceleration parameter 56 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 57 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 58 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 59 | tolVint = 1E-10 * V, tolerance internal voltage (Vint) 60 | 61 | **User interface******************************************************************** 62 | timeout = -1 * s, max run time, use negative value for unlimited run time. 63 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 64 | autoTidy = 1 * if 1, then the program will always tidy up this file 65 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 66 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 67 | tJFile = tj.dat * name of file with (t, V, G, J, range) 68 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 69 | limitDigits = 1 * if 1, then number of digits in output is limited 70 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 71 | logFile = log.txt * name of log file 72 | -------------------------------------------------------------------------------- /Tests/test_12/tVG.txt: -------------------------------------------------------------------------------- 1 | t Vext G_frac 2 | 0 -2 1 3 | 1.047615753e-08 -2 0 4 | 1.321941148e-08 -2 0 5 | 1.668100537e-08 -2 0 6 | 2.104904145e-08 -2 0 7 | 2.656087783e-08 -2 0 8 | 3.351602651e-08 -2 0 9 | 4.229242874e-08 -2 0 10 | 5.336699231e-08 -2 0 11 | 6.734150658e-08 -2 0 12 | 8.497534359e-08 -2 0 13 | 1.072267222e-07 -2 0 14 | 1.353047775e-07 -2 0 15 | 1.707352647e-07 -2 0 16 | 2.154434690e-07 -2 0 17 | 2.718588243e-07 -2 0 18 | 3.430469286e-07 -2 0 19 | 4.328761281e-07 -2 0 20 | 5.462277218e-07 -2 0 21 | 6.892612104e-07 -2 0 22 | 8.697490026e-07 -2 0 23 | 1.097498765e-06 -2 0 24 | 1.384886371e-06 -2 0 25 | 1.747528400e-06 -2 0 26 | 2.205130740e-06 -2 0 27 | 2.782559402e-06 -2 0 28 | 3.511191734e-06 -2 0 29 | 4.430621458e-06 -2 0 30 | 5.590810183e-06 -2 0 31 | 7.054802311e-06 -2 0 32 | 8.902150854e-06 -2 0 33 | 1.123324033e-05 -2 0 34 | 1.417474163e-05 -2 0 35 | 1.788649529e-05 -2 0 36 | 2.257019720e-05 -2 0 37 | 2.848035868e-05 -2 0 38 | 3.593813664e-05 -2 0 39 | 4.534878508e-05 -2 0 40 | 5.722367659e-05 -2 0 41 | 7.220809018e-05 -2 0 42 | 9.111627561e-05 -2 0 43 | 1.149756995e-04 -2 0 44 | 1.450828778e-04 -2 0 45 | 1.830738280e-04 -2 0 46 | 2.310129700e-04 -2 0 47 | 2.915053063e-04 -2 0 48 | 3.678379772e-04 -2 0 49 | 4.641588834e-04 -2 0 50 | 5.857020818e-04 -2 0 51 | 7.390722034e-04 -2 0 52 | 9.326033469e-04 -2 0 53 | 1.176811952e-03 -2 0 54 | 1.484968262e-03 -2 0 55 | 1.873817423e-03 -2 0 56 | 2.364489413e-03 -2 0 57 | 2.983647240e-03 -2 0 58 | 3.764935807e-03 -2 0 59 | 4.750810162e-03 -2 0 60 | 5.994842503e-03 -2 0 61 | 7.564633276e-03 -2 0 62 | 9.545484567e-03 -2 0 63 | 64 | -------------------------------------------------------------------------------- /Tests/test_12/test_12_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_12/test_12_result.png -------------------------------------------------------------------------------- /Tests/test_12/traps.txt: -------------------------------------------------------------------------------- 1 | E Ntraps 2 | 4.982 7788000000.000001 3 | 4.947 4662000000.0 4 | 4.911 2791000000.0 5 | 4.875 1670000000.0 6 | 4.839 1000000000.0 7 | 4.803 598600000.0 8 | 4.767 358300000.0 9 | 4.731 214500000.0 10 | 4.695 128400000.0 11 | 4.659 76850000.0 12 | 4.623 46010000.0 13 | 4.587 27540000.0 14 | 4.551 16480000.0 15 | 4.516 9868000.0 16 | 4.48 5907000.0 17 | 4.444 3535999.9999999995 18 | 4.408 2117000.0 19 | 4.372 1267000.0 20 | 4.336 758400.0 21 | 4.3 454000.0 22 | -------------------------------------------------------------------------------- /Tests/test_13/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 3E-8 * m, device length/thickness 8 | eps_r = 5 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5.5 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-6 * m^2/Vs, zero field mobility 17 | mu_p = 1E-6 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation= 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 9.0625E27 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_PEDOT.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_13/L2_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 2.4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E25 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 0.0001 * m^2/Vs, zero field mobility 17 | mu_p = 0.0001 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0.0001 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation= 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 9.0625E27 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 4.42E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_13/L3_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 3E-8 * m, device length/thickness 8 | eps_r = 3.5 * relative dielectric constant 9 | E_c = 2.5 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1.5E-8 * m^2/Vs, zero field mobility 17 | mu_p = 1.5E-8 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation= 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 9.0625E27 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_Ca.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_13/test_13_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_13/test_13_result.png -------------------------------------------------------------------------------- /Tests/test_14/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 25E-9 * m, device length/thickness 8 | eps_r = 5 * relative dielectric constant 9 | E_c = 4 * eV, conduction band edge 10 | E_v = 5.9 * eV, valence band edge 11 | N_c = 5E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-6 * m^2/Vs, zero field mobility 17 | mu_p = 1E-9 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_C60_1.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 0E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_14/L2_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 500E-9 * m, device length/thickness 8 | eps_r = 24 * relative dielectric constant 9 | E_c = 3.9 * eV, conduction band edge 10 | E_v = 5.53 * eV, valence band edge 11 | N_c = 2.2E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-4 * m^2/Vs, zero field mobility 17 | mu_p = 1E-4 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 1E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 1E21 * m^-3, concentration of negative ions 35 | N_cation = 1E21 * m^-3, concentration of positive ions 36 | mu_anion = 5E-12 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 5E-12 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_MAPI.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 1E21 * m^-3, trap density (in bulk) 56 | C_n_bulk = 5E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 5E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_14/L3_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 10E-9 * m, device length/thickness 8 | eps_r = 3 * relative dielectric constant 9 | E_c = 2.25 * eV, conduction band edge 10 | E_v = 5.4 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-9 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_PTAA.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 0E18 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_14/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | l2 = L2_parameters.txt * parameter file for layer 2 12 | l3 = L3_parameters.txt * parameter file for layer 3 13 | 14 | **Contacts************************************************************************** 15 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 16 | W_L = 4.0 * eV, work function left electrode (= cathode), or 'sfb' 17 | W_R = 5.4 * eV, work function right electrode (= cathode), or 'sfb' 18 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 19 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 20 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 21 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 22 | * nb: use negative values if Sn/pR/L should be infinite 23 | R_shunt = -5E3 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 24 | R_series = 0 * Ohms m2, series resistance. 25 | 26 | **Optics**************************************************************************** 27 | genProfile = calc * name of file generation profile (or 'none' or 'calc') 28 | L_TCO = 50E-9 * m, thickness of the TCO. Set to 0 if layer is not used 29 | L_BE = 101E-9 * m, thickness of back electrode, must be >0 30 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 31 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 32 | nkBE = ../Data/nk_Au.txt * name of file with n,k values of back electrode 33 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 34 | lambda_min = 3.5E-7 * m, lower bound wavelength 35 | lambda_max = 8E-7 * m, upper bound wavelength 36 | 37 | **Numerical Parameters************************************************************** 38 | NP = 400 * integer, number of grid points, must be at least 5 per layer. 39 | tolPois = 1E-6 * V, abs. tolerance of iterative Poisson solver 40 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 41 | maxItPois = 2000 * max. number it. Poisson loop 42 | maxItSS = 2000 * max. number it. main loop 43 | maxItTrans = 2000 * max. number it. transient solver 44 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 45 | tolDens = 1E-6 * relative tolerance of density solver 46 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 47 | minAcc = 0.01 * >0, min. acceleration parameter 48 | maxAcc = 0.04 * <2, max. acceleration parameter 49 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 50 | failureMode = 2 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 51 | grad = 2 * determines shape of exp. grid, increase grad for smaller h[1] 52 | tolVint = 1E-8 * V, tolerance internal voltage (Vint) 53 | 54 | **User interface******************************************************************** 55 | timeout = 300 * s, max run time, use negative value for unlimited run time. 56 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 57 | autoTidy = 1 * if 1, then the program will always tidy up this file 58 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 59 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 60 | tJFile = tj.dat * name of file with (t, V, G, J, range) 61 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 62 | limitDigits = 1 * if 1, then number of digits in output is limited 63 | outputRatio = 1 * Output to varFile every outputRatio voltages 64 | logFile = log.txt * name of log file 65 | -------------------------------------------------------------------------------- /Tests/test_14/tVG.txt: -------------------------------------------------------------------------------- 1 | t Vext G_frac 2 | 0 0 1 3 | -------------------------------------------------------------------------------- /Tests/test_2/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 2E-7 * m, device length/thickness 8 | eps_r = 22 * relative dielectric constant 9 | E_c = 2 * eV, conduction band edge 10 | E_v = 6 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 1 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0.0001 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_2/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** SimSS Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 2 * eV, work function left electrode, or 'sfb' 15 | W_R = 2 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | G_frac = 1 * fraction of Gmax used in solar cell 26 | genProfile = none * name of file generation profile (or 'none' or 'calc') 27 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 28 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 29 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 30 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 31 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 32 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 33 | lambda_min = 3.5E-7 * m, lower bound wavelength 34 | lambda_max = 8E-7 * m, upper bound wavelength 35 | 36 | **Numerical Parameters************************************************************** 37 | NP = 200 * integer, number of grid points, must be at least 5 per layer. 38 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 39 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 40 | maxItPois = 10000 * max. number it. Poisson loop 41 | maxItSS = 10000 * max. number it. main loop 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | 51 | **Voltage range of simulation******************************************************* 52 | Vdist = 2 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) 53 | preCond = 0 * pre-conditioning, yes(1)/no(0) 54 | Vpre = 0 * V, pre-conditioned voltage 55 | fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). 56 | Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep 57 | Vmin = 0.01 * V 58 | Vmax = 100 * V 59 | Vstep = 0.1 * V 60 | Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be 61 | * slightly larger than Vmax or slightly lower than Vmin 62 | NJV = 50 * number of JV points in logarithmic distribution 63 | untilVoc = 0 * if 1 then SimSS will stop at Voc 64 | 65 | **User interface******************************************************************** 66 | timeout = -1 * s, max run time, use negative value for unlimited run time. 67 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 68 | autoTidy = 1 * if 1, then the program will always tidy up this file 69 | useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it 70 | expJV = expJV.csv * name of file with experimental JV characteristics 71 | fitMode = lin * lin or log: use J or log(J) in calc. of fit error 72 | fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error 73 | JVFile = JV.dat * name of the file with simulated JV characteristics 74 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 75 | limitDigits = 1 * if 1, then number of digits in output is limited 76 | outputRatio = 100 * Output to varFile every outputRatio voltages 77 | scParsFile = scPars.dat * name of file with solar cell parameters 78 | logFile = log.txt * name of log file 79 | -------------------------------------------------------------------------------- /Tests/test_2/test2.dat: -------------------------------------------------------------------------------- 1 | Vext Jext Murgatroyd 2 | 0.01 25.495859 0.279307 3 | 0.012068 30.780344 0.407567 4 | 0.014563 37.165682 0.594841 5 | 0.017575 44.88671 0.868351 6 | 0.02121 54.229807 1.267918 7 | 0.025595 65.551204 1.851817 8 | 0.030888 79.287991 2.705376 9 | 0.037276 95.997905 3.953588 10 | 0.044984 116.389465 5.779668 11 | 0.054287 141.364569 8.452333 12 | 0.065513 172.1086 12.365979 13 | 0.07906 210.196222 18.0999 14 | 0.09541 257.755901 26.505678 15 | 0.11514 317.696242 38.836303 16 | 0.13895 393.991179 56.937236 17 | 0.167683 492.142574 83.529517 18 | 0.202359 619.865169 122.630008 19 | 0.244205 787.699951 180.176272 20 | 0.294705 1010.703172 264.957608 21 | 0.355648 1309.579631 390.005198 22 | 0.429193 1713.779991 574.672628 23 | 0.517947 2265.089267 847.757601 24 | 0.625055 3023.228922 1252.19888 25 | 0.754312 4074.618628 1852.164725 26 | 0.910298 5542.814442 2743.785594 27 | 1.098541 7608.807314 4071.462666 28 | 1.325711 10538.490299 6052.744926 29 | 1.599859 14719.965819 9016.436146 30 | 1.930698 20734.749956 13461.233321 31 | 2.329952 29440.116153 20146.403249 32 | 2.811769 42114.241172 30232.749525 33 | 3.393222 60731.654866 45503.02451 34 | 4.094915 88217.568054 68708.703924 35 | 4.941713 129085.646481 104119.231464 36 | 5.963623 190287.633444 158398.246427 37 | 7.196857 282621.999439 242012.358761 38 | 8.685114 423014.976244 371515.151616 39 | 10.481131 637931.656866 573283.595807 40 | 12.648552 969589.267122 889689.795626 41 | 15.26418 1.4853E6 1.389402E6 42 | 18.4207 2.297659E6 2.184767E6 43 | 22.229965 3.583867E6 3.461506E6 44 | 26.826958 5.645752E6 5.530077E6 45 | 32.374575 8.984761E6 8.915766E6 46 | 39.069399 1.445358E7 1.451904E7 47 | 47.148664 2.353278E7 2.39055E7 48 | 56.89866 3.87634E7 3.983909E7 49 | 68.664885 6.482609E7 6.728065E7 50 | 82.864277 1.100703E8 1.152945E8 51 | 100 1.899569E8 2.007657E8 52 | -------------------------------------------------------------------------------- /Tests/test_2/test_2_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_2/test_2_result.png -------------------------------------------------------------------------------- /Tests/test_3/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 2E-7 * m, device length/thickness 8 | eps_r = 22 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 4 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 1 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0.0001 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 3.5 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 3.5 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_3/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** SimSS Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3 * eV, work function left electrode, or 'sfb' 15 | W_R = 4 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | G_frac = 1 * fraction of Gmax used in solar cell 26 | genProfile = none * name of file generation profile (or 'none' or 'calc') 27 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 28 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 29 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 30 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 31 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 32 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 33 | lambda_min = 3.5E-7 * m, lower bound wavelength 34 | lambda_max = 8E-7 * m, upper bound wavelength 35 | 36 | **Numerical Parameters************************************************************** 37 | NP = 200 * integer, number of grid points, must be at least 5 per layer. 38 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 39 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 40 | maxItPois = 10000 * max. number it. Poisson loop 41 | maxItSS = 100000 * max. number it. main loop 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-5 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 1 * >0, min. acceleration parameter 46 | maxAcc = 1 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | 51 | **Voltage range of simulation******************************************************* 52 | Vdist = 1 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) 53 | preCond = 0 * pre-conditioning, yes(1)/no(0) 54 | Vpre = 0 * V, pre-conditioned voltage 55 | fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). 56 | Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep 57 | Vmin = 1 * V 58 | Vmax = 50 * V 59 | Vstep = 1 * V 60 | Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be 61 | * slightly larger than Vmax or slightly lower than Vmin 62 | NJV = 50 * number of JV points in logarithmic distribution 63 | untilVoc = 0 * if 1 then SimSS will stop at Voc 64 | 65 | **User interface******************************************************************** 66 | timeout = -1 * s, max run time, use negative value for unlimited run time. 67 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 68 | autoTidy = 1 * if 1, then the program will always tidy up this file 69 | useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it 70 | expJV = expJV.csv * name of file with experimental JV characteristics 71 | fitMode = lin * lin or log: use J or log(J) in calc. of fit error 72 | fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error 73 | JVFile = JV.dat * name of the file with simulated JV characteristics 74 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 75 | limitDigits = 1 * if 1, then number of digits in output is limited 76 | outputRatio = 100 * Output to varFile every outputRatio voltages 77 | scParsFile = scPars.dat * name of file with solar cell parameters 78 | logFile = log.txt * name of log file 79 | -------------------------------------------------------------------------------- /Tests/test_3/test3.dat: -------------------------------------------------------------------------------- 1 | Vext Jext JRosenLampert 2 | 1 78561.09937 830104 3 | 2 2.383443E6 3.320416E6 4 | 3 8.441202E6 7.470936E6 5 | 4 1.893409E7 1.328166E7 6 | 5 3.443288E7 2.07526E7 7 | 6 5.427254E7 2.988374E7 8 | 7 7.741829E7 4.06751E7 9 | 8 1.003802E8 5.312666E7 10 | 9 1.258155E8 6.723842E7 11 | 10 1.530719E8 8.30104E7 12 | 11 1.821276E8 1.004426E8 13 | 12 2.127154E8 1.19535E8 14 | 13 2.450268E8 1.402876E8 15 | 14 2.78454E8 1.627004E8 16 | 15 3.13137E8 1.867734E8 17 | 16 3.490164E8 2.125066E8 18 | 17 3.860587E8 2.399001E8 19 | 18 4.242309E8 2.689537E8 20 | 19 4.635117E8 2.996675E8 21 | 20 5.038863E8 3.320416E8 22 | 21 5.453449E8 3.660759E8 23 | 22 5.87866E8 4.017703E8 24 | 23 6.31474E8 4.39125E8 25 | 24 6.761581E8 4.781399E8 26 | 25 7.219209E8 5.18815E8 27 | 26 7.687666E8 5.611503E8 28 | 27 8.16701E8 6.051458E8 29 | 28 8.657306E8 6.508015E8 30 | 29 9.158633E8 6.981175E8 31 | 30 9.671074E8 7.470936E8 32 | 31 1.019472E9 7.977299E8 33 | 32 1.072968E9 8.500265E8 34 | 33 1.124533E9 9.039833E8 35 | 34 1.180282E9 9.596002E8 36 | 35 1.237143E9 1.016877E9 37 | 36 1.295186E9 1.075815E9 38 | 37 1.354421E9 1.136412E9 39 | 38 1.41486E9 1.19867E9 40 | 39 1.476515E9 1.262588E9 41 | 40 1.539401E9 1.328166E9 42 | 41 1.603528E9 1.395405E9 43 | 42 1.668909E9 1.464303E9 44 | 43 1.742077E9 1.534862E9 45 | 44 1.810309E9 1.607081E9 46 | 45 1.879632E9 1.680961E9 47 | 46 1.950251E9 1.7565E9 48 | 47 2.022189E9 1.8337E9 49 | 48 2.095457E9 1.91256E9 50 | 49 2.170072E9 1.99308E9 51 | 50 2.246046E9 2.07526E9 52 | -------------------------------------------------------------------------------- /Tests/test_3/test_3_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_3/test_3_result.png -------------------------------------------------------------------------------- /Tests/test_4/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 2E-7 * m, device length/thickness 8 | eps_r = 22 * relative dielectric constant 9 | E_c = 2 * eV, conduction band edge 10 | E_v = 6 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0.0001 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_4/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** SimSS Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 2 * eV, work function left electrode, or 'sfb' 15 | W_R = 2 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | G_frac = 1 * fraction of Gmax used in solar cell 26 | genProfile = none * name of file generation profile (or 'none' or 'calc') 27 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 28 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 29 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 30 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 31 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 32 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 33 | lambda_min = 3.5E-7 * m, lower bound wavelength 34 | lambda_max = 8E-7 * m, upper bound wavelength 35 | 36 | **Numerical Parameters************************************************************** 37 | NP = 200 * integer, number of grid points, must be at least 5 per layer. 38 | tolPois = 1E-8 * V, abs. tolerance of iterative Poisson solver 39 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 40 | maxItPois = 10000 * max. number it. Poisson loop 41 | maxItSS = 10000 * max. number it. main loop 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | 51 | **Voltage range of simulation******************************************************* 52 | Vdist = 2 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) 53 | preCond = 0 * pre-conditioning, yes(1)/no(0) 54 | Vpre = 0 * V, pre-conditioned voltage 55 | fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). 56 | Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep 57 | Vmin = 0.01 * V 58 | Vmax = 100 * V 59 | Vstep = 0.1 * V 60 | Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be 61 | * slightly larger than Vmax or slightly lower than Vmin 62 | NJV = 50 * number of JV points in logarithmic distribution 63 | untilVoc = 0 * if 1 then SimSS will stop at Voc 64 | 65 | **User interface******************************************************************** 66 | timeout = -1 * s, max run time, use negative value for unlimited run time. 67 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 68 | autoTidy = 1 * if 1, then the program will always tidy up this file 69 | useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it 70 | expJV = expJV.csv * name of file with experimental JV characteristics 71 | fitMode = lin * lin or log: use J or log(J) in calc. of fit error 72 | fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error 73 | JVFile = JV.dat * name of the file with simulated JV characteristics 74 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 75 | limitDigits = 1 * if 1, then number of digits in output is limited 76 | outputRatio = 100 * Output to varFile every outputRatio voltages 77 | scParsFile = scPars.dat * name of file with solar cell parameters 78 | logFile = log.txt * name of log file 79 | -------------------------------------------------------------------------------- /Tests/test_4/test4.dat: -------------------------------------------------------------------------------- 1 | Vext Jext JME JMG 2 | 0.01 23.944689 24.433 0.2738 3 | 0.012068 28.903263 29.485565 0.398748 4 | 0.014563 34.892308 35.582962 0.580716 5 | 0.017575 42.128181 42.941257 0.845725 6 | 0.02121 50.875887 51.821193 1.231671 7 | 0.025595 61.460183 62.537434 1.793742 8 | 0.030888 74.280911 75.469716 2.612313 9 | 0.037276 89.834879 91.076297 3.804439 10 | 0.044984 108.74956 109.910205 5.540588 11 | 0.054287 131.820468 132.638827 8.069028 12 | 0.065513 160.082912 160.06756 11.751316 13 | 0.07906 194.899422 193.168354 17.114011 14 | 0.09541 238.09067 233.114148 24.923964 15 | 0.11514 292.130594 281.320438 36.297977 16 | 0.13895 360.401117 339.495434 52.862504 17 | 0.167683 447.544056 409.700591 76.986227 18 | 0.202359 559.934365 494.423659 112.118774 19 | 0.244205 706.330319 596.666833 163.284006 20 | 0.294705 898.775091 720.053142 237.798414 21 | 0.355648 1153.901253 868.954833 346.317358 22 | 0.429193 1494.7765 1048.648298 504.358758 23 | 0.517947 1953.54707 1265.501048 734.522109 24 | 0.625055 2575.202404 1527.197352 1069.720155 25 | 0.754312 3422.960178 1843.010525 1557.885319 26 | 0.910298 4585.990795 2224.131538 2268.823912 27 | 1.098541 6190.432431 2684.065572 3304.19825 28 | 1.325711 8415.293725 3239.11058 4812.064091 29 | 1.599859 11515.300523 3908.93481 7008.042212 30 | 1.930698 15853.895976 4717.273761 10206.151606 31 | 2.329952 21950.702774 5692.771259 14863.713353 32 | 2.811769 30550.360263 6869.99446 21646.746311 33 | 3.393222 42722.004194 8290.658755 31525.206034 34 | 4.094915 60003.400143 10005.105972 45911.68581 35 | 4.941713 84609.755375 12074.088256 66863.413729 36 | 5.963623 119737.445013 14570.920849 97376.430784 37 | 7.196857 170004.621635 17584.080048 141814.016717 38 | 8.685114 242089.457463 21220.338395 206530.627334 39 | 10.481131 345661.473278 25608.548207 300780.564674 40 | 12.648552 494729.595284 30904.207514 438041.317431 41 | 15.26418 709606.888777 37294.970192 637940.805723 42 | 18.4207 1.019755E6 45007.295561 929064.121148 43 | 22.229965 1.467973E6 54314.473058 1.353041E6 44 | 26.826958 2.116271E6 65546.306366 1.970499E6 45 | 32.374575 3.054831E6 79100.800144 2.869734E6 46 | 39.069399 4.414581E6 95458.263482 4.179332E6 47 | 47.148664 6.385734E6 115198.329858 6.086564E6 48 | 56.89866 9.244557E6 139020.496687 8.864159E6 49 | 68.664885 1.339232E7 167768.9123 1.29093E7 50 | 82.864277 1.941173E7 202462.288692 1.880045E7 51 | 100 2.814836E7 244330 2.738E7 52 | -------------------------------------------------------------------------------- /Tests/test_4/test_4_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_4/test_4_result.png -------------------------------------------------------------------------------- /Tests/test_5/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 1E-6 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E25 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 0.0001 * m^2/Vs, zero field mobility 17 | mu_p = 0.0001 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0.0001 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-14 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-14 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-18 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 4.42E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-13 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-13 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_5/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** SimSS Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3 * eV, work function left electrode, or 'sfb' 15 | W_R = 3 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | G_frac = 1 * fraction of Gmax used in solar cell 26 | genProfile = none * name of file generation profile (or 'none' or 'calc') 27 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 28 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 29 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 30 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 31 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 32 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 33 | lambda_min = 3.5E-7 * m, lower bound wavelength 34 | lambda_max = 8E-7 * m, upper bound wavelength 35 | 36 | **Numerical Parameters************************************************************** 37 | NP = 1000 * integer, number of grid points, must be at least 5 per layer. 38 | tolPois = 0.00001 * V, abs. tolerance of iterative Poisson solver 39 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 40 | maxItPois = 1000 * max. number it. Poisson loop 41 | maxItSS = 1000 * max. number it. main loop 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 1 * >0, min. acceleration parameter 46 | maxAcc = 1.9 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | 51 | **Voltage range of simulation******************************************************* 52 | Vdist = 2 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) 53 | preCond = 0 * pre-conditioning, yes(1)/no(0) 54 | Vpre = 0 * V, pre-conditioned voltage 55 | fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). 56 | Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep 57 | Vmin = 0.01 * V 58 | Vmax = 100 * V 59 | Vstep = 0.1 * V 60 | Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be 61 | * slightly larger than Vmax or slightly lower than Vmin 62 | NJV = 100 * number of JV points in logarithmic distribution 63 | untilVoc = 0 * if 1 then SimSS will stop at Voc 64 | 65 | **User interface******************************************************************** 66 | timeout = -1 * s, max run time, use negative value for unlimited run time. 67 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 68 | autoTidy = 1 * if 1, then the program will always tidy up this file 69 | useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it 70 | expJV = expJV.csv * name of file with experimental JV characteristics 71 | fitMode = lin * lin or log: use J or log(J) in calc. of fit error 72 | fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error 73 | JVFile = JV.dat * name of the file with simulated JV characteristics 74 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 75 | limitDigits = 1 * if 1, then number of digits in output is limited 76 | outputRatio = 100 * Output to varFile every outputRatio voltages 77 | scParsFile = scPars.dat * name of file with solar cell parameters 78 | logFile = log.txt * name of log file 79 | -------------------------------------------------------------------------------- /Tests/test_5/test5.dat: -------------------------------------------------------------------------------- 1 | Vext JextTraps JextREF 2 | 0.01 0.416849 35.429463 3 | 0.010975 0.45794 38.887964 4 | 0.012045 0.503182 42.684848 5 | 0.013219 0.553027 46.853642 6 | 0.014508 0.607983 51.431161 7 | 0.015923 0.668633 56.457981 8 | 0.017475 0.735637 61.978867 9 | 0.019179 0.809761 68.043257 10 | 0.021049 0.891886 74.705808 11 | 0.023101 0.98303 82.027033 12 | 0.025354 1.084435 90.074042 13 | 0.027826 1.197528 98.921391 14 | 0.030539 1.324035 108.652096 15 | 0.033516 1.466043 119.358817 16 | 0.036784 1.626092 131.145268 17 | 0.04037 1.807339 144.127897 18 | 0.044306 2.013682 158.437505 19 | 0.048626 2.250026 174.222178 20 | 0.053367 2.522586 191.65207 21 | 0.05857 2.839277 210.918189 22 | 0.064281 3.21037 232.240395 23 | 0.070548 3.649154 255.871441 24 | 0.077426 4.173019 282.10215 25 | 0.084975 4.804901 311.272238 26 | 0.09326 5.575301 343.773483 27 | 0.102353 6.52491 380.06337 28 | 0.112332 7.708694 420.675919 29 | 0.123285 9.200837 466.235404 30 | 0.135305 11.102517 517.472016 31 | 0.148497 13.551895 575.240201 32 | 0.162975 16.73876 640.538823 33 | 0.178865 20.923705 714.53969 34 | 0.196304 26.464839 798.612357 35 | 0.215443 33.853449 894.355136 36 | 0.236449 43.759186 1003.642588 37 | 0.259502 57.088128 1128.6704 38 | 0.284804 75.053999 1272.009447 39 | 0.312572 99.259149 1436.691923 40 | 0.343047 131.788015 1626.256644 41 | 0.376494 175.310817 1844.878598 42 | 0.413201 233.190896 2097.477197 43 | 0.453488 309.606234 2389.850365 44 | 0.497702 409.689205 2728.867059 45 | 0.546228 539.682299 3122.647728 46 | 0.599484 707.135831 3581.124664 47 | 0.657933 921.155189 4114.514136 48 | 0.722081 1192.688726 4737.269074 49 | 0.792483 1534.908968 5465.024006 50 | 0.869749 1963.646423 6316.677018 51 | 0.954548 2497.940476 7314.679709 52 | 1.047616 3160.691878 8485.739125 53 | 1.149757 3979.492631 9861.085964 54 | 1.261857 4987.464383 11479.418961 55 | 1.384886 6224.438839 13384.723852 56 | 1.519911 7738.448126 15631.086745 57 | 1.668101 9587.234772 18281.873803 58 | 1.830738 11840.153909 21414.360556 59 | 2.009233 14580.815533 25118.479168 60 | 2.205131 17910.451923 29503.395224 61 | 2.420128 21948.449819 34698.963133 62 | 2.656088 26840.776774 40859.738958 63 | 2.915053 32761.90822 48175.956898 64 | 3.199267 39922.386718 56861.456857 65 | 3.511192 48573.801518 67185.565269 66 | 3.853529 59019.20903 79466.115427 67 | 4.229243 71624.873461 94083.461767 68 | 4.641589 86827.403456 111492.524995 69 | 5.094138 105157.688391 132237.725659 70 | 5.59081 127237.916042 156977.37929 71 | 6.135907 153826.974806 186480.255569 72 | 6.734151 185849.712649 221698.109494 73 | 7.390722 224413.047901 263742.101446 74 | 8.111308 270874.427257 314012.849378 75 | 8.902151 326778.796641 374122.412982 76 | 9.7701 394068.242387 446060.885752 77 | 10.722672 475048.299953 532106.773382 78 | 11.76812 572491.616174 635107.655242 79 | 12.915497 689731.534389 758445.55814 80 | 14.174742 830777.197237 906181.343849 81 | 15.556761 1.000502E6 1.083193E6 82 | 17.073526 1.204606E6 1.295405E6 83 | 18.738174 1.45024E6 1.549812E6 84 | 20.565123 1.745689E6 1.854953E6 85 | 22.570197 2.101051E6 2.221027E6 86 | 24.770764 2.52864E6 2.660294E6 87 | 27.185882 3.043023E6 3.187493E6 88 | 29.836472 3.661917E6 3.820452E6 89 | 32.745492 4.406429E6 4.580395E6 90 | 35.938137 5.302181E6 5.493084E6 91 | 39.442061 6.37989E6 6.58938E6 92 | 43.287613 7.676671E6 7.892963E6 93 | 47.508102 9.23694E6 9.48923E6 94 | 52.140083 1.111442E7 1.139127E7 95 | 57.223677 1.33738E7 1.367762E7 96 | 62.802914 1.60925E7 1.642613E7 97 | 68.926121 1.936462E7 1.973051E7 98 | 75.646333 2.330226E7 2.37038E7 99 | 83.021757 2.558984E7 2.599749E7 100 | 91.116276 2.985509E7 3.02808E7 101 | 100 3.544634E7 3.591057E7 102 | -------------------------------------------------------------------------------- /Tests/test_5/test_5_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_5/test_5_result.png -------------------------------------------------------------------------------- /Tests/test_6/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 2.5E25 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-8 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.25 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e28 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.25 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_6/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3 * eV, work function left electrode, or 'sfb' 15 | W_R = 5 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0.0565 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | genProfile = none * name of file generation profile (or 'none' or 'calc') 26 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 27 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 28 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 29 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 30 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 31 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 32 | lambda_min = 3.5E-7 * m, lower bound wavelength 33 | lambda_max = 8E-7 * m, upper bound wavelength 34 | 35 | **Numerical Parameters************************************************************** 36 | NP = 400 * integer, number of grid points, must be at least 5 per layer. 37 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 38 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 39 | maxItPois = 300 * max. number it. Poisson loop 40 | maxItSS = 1000 * max. number it. main loop 41 | maxItTrans = 300 * max. number it. transient solver 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 10 * determines shape of exp. grid, increase grad for smaller h[1] 50 | tolVint = 1E-6 * V, tolerance internal voltage (Vint) 51 | 52 | **User interface******************************************************************** 53 | timeout = -1 * s, max run time, use negative value for unlimited run time. 54 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 55 | autoTidy = 1 * if 1, then the program will always tidy up this file 56 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 57 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 58 | tJFile = tj.dat * name of file with (t, V, G, J, range) 59 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 60 | limitDigits = 1 * if 1, then number of digits in output is limited 61 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 62 | logFile = log.txt * name of log file 63 | -------------------------------------------------------------------------------- /Tests/test_6/tVG.txt: -------------------------------------------------------------------------------- 1 | t Vext G_frac comments 2 | 0 oc 0.0001 3 | 0 oc 0.0003 4 | 0 oc 0.001 5 | 0 oc 0.003 6 | 0 oc 0.01 7 | 0 oc 0.03 8 | 0 oc 0.1 9 | 0 oc 0.3 10 | 0 oc 1 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Tests/test_6/test6.dat: -------------------------------------------------------------------------------- 1 | Gehp Jphoto VocZimT analytical 2 | 1E24 0.064028 1.375285 1.375245 3 | 3E24 0.192083 1.403668 1.403653 4 | 1E25 0.640275 1.434759 1.434785 5 | 3E25 1.920826 1.463108 1.463193 6 | 1E26 6.402754 1.494136 1.494325 7 | 3E26 19.208261 1.522411 1.522733 8 | 1E27 64.027537 1.55333 1.553866 9 | 3E27 192.082611 1.581476 1.582274 10 | 1E28 640.27537 1.612204 1.613406 11 | -------------------------------------------------------------------------------- /Tests/test_6/test_6_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_6/test_6_result.png -------------------------------------------------------------------------------- /Tests/test_7/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 2 * eV, conduction band edge 10 | E_v = 6 * eV, valence band edge 11 | N_c = 2.5E20 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-8 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.25 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.25 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_7/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 4 * eV, work function left electrode, or 'sfb' 15 | W_R = 4 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0.0565 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | genProfile = none * name of file generation profile (or 'none' or 'calc') 26 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 27 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 28 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 29 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 30 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 31 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 32 | lambda_min = 3.5E-7 * m, lower bound wavelength 33 | lambda_max = 8E-7 * m, upper bound wavelength 34 | 35 | **Numerical Parameters************************************************************** 36 | NP = 400 * integer, number of grid points, must be at least 5 per layer. 37 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 38 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 39 | maxItPois = 300 * max. number it. Poisson loop 40 | maxItSS = 1000 * max. number it. main loop 41 | maxItTrans = 300 * max. number it. transient solver 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | tolVint = 1E-6 * V, tolerance internal voltage (Vint) 51 | 52 | **User interface******************************************************************** 53 | timeout = -1 * s, max run time, use negative value for unlimited run time. 54 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 55 | autoTidy = 1 * if 1, then the program will always tidy up this file 56 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 57 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 58 | tJFile = tj.dat * name of file with (t, V, G, J, range) 59 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 60 | limitDigits = 1 * if 1, then number of digits in output is limited 61 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 62 | logFile = log.txt * name of log file 63 | -------------------------------------------------------------------------------- /Tests/test_7/tVG.txt: -------------------------------------------------------------------------------- 1 | we are going to simulate an RC circuit 2 | 3 | t Vext G_frac 4 | 0 0 0 5 | 1E-7 1.0 0 6 | 3E-7 1.0 0 7 | 1E-6 1.0 0 8 | 1.5E-6 1.0 0 9 | 2E-6 1.0 0 10 | 2.5E-6 1.0 0 11 | 3E-6 1.0 0 12 | 3.5E-6 1.0 0 13 | 4E-6 1.0 0 14 | 4.5E-6 1.0 0 15 | 5E-6 1.0 0 16 | 5.5E-6 1.0 0 17 | 6E-6 1.0 0 18 | 6.5E-6 1.0 0 19 | 7E-6 1.0 0 20 | 7.5E-6 1.0 0 21 | 8E-6 1.0 0 22 | 8.5E-6 1.0 0 23 | 9E-6 1.0 0 24 | 9.5E-6 1.0 0 25 | 1E-5 1.0 0 26 | 1.1e-5 1.0 0 27 | 1.2e-5 1.0 0 28 | 1.3e-5 1.0 0 29 | 1.4e-5 1.0 0 30 | 1.5e-5 1.0 0 31 | 1.6e-5 1.0 0 32 | 1.7e-5 1.0 0 33 | 1.8e-5 1.0 0 34 | 1.9e-5 1.0 0 35 | 2.0e-5 1.0 0 36 | 37 | -------------------------------------------------------------------------------- /Tests/test_7/test_7_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_7/test_7_result.png -------------------------------------------------------------------------------- /Tests/test_8/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 2.5E25 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-7 * m^2/Vs, zero field mobility 17 | mu_p = 1E-8 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.25 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e26 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.1 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 0 * m^-3, trap density (in bulk) 56 | C_n_bulk = 1E-12 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 1E-12 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.25 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_8/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3 * eV, work function left electrode, or 'sfb' 15 | W_R = 5 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = 1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = 1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0.0565 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | genProfile = none * name of file generation profile (or 'none' or 'calc') 26 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 27 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 28 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 29 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 30 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 31 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 32 | lambda_min = 3.5E-7 * m, lower bound wavelength 33 | lambda_max = 8E-7 * m, upper bound wavelength 34 | 35 | **Numerical Parameters************************************************************** 36 | NP = 200 * integer, number of grid points, must be at least 5 per layer. 37 | tolPois = 0.0001 * V, abs. tolerance of iterative Poisson solver 38 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 39 | maxItPois = 300 * max. number it. Poisson loop 40 | maxItSS = 1000 * max. number it. main loop 41 | maxItTrans = 300 * max. number it. transient solver 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | tolVint = 1E-10 * V, tolerance internal voltage (Vint) 51 | 52 | **User interface******************************************************************** 53 | timeout = -1 * s, max run time, use negative value for unlimited run time. 54 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 55 | autoTidy = 1 * if 1, then the program will always tidy up this file 56 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 57 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 58 | tJFile = tj.dat * name of file with (t, V, G, J, range) 59 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 60 | limitDigits = 1 * if 1, then number of digits in output is limited 61 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 62 | logFile = log.txt * name of log file 63 | -------------------------------------------------------------------------------- /Tests/test_8/test_8_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_8/test_8_result.png -------------------------------------------------------------------------------- /Tests/test_9/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General************************************************************************** 7 | L = 4E-7 * m, device length/thickness 8 | eps_r = 4 * relative dielectric constant 9 | E_c = 3 * eV, conduction band edge 10 | E_v = 5 * eV, valence band edge 11 | N_c = 1E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1 * m^2/Vs, zero field mobility 17 | mu_p = 1 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity of electrons, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity of holes, to layer to the right 26 | N_t_int = 0 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 3.5 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 5.017E-15 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 0 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0 * m^-3, concentration of negative ions 35 | N_cation = 0 * m^-3, concentration of positive ions 36 | mu_anion = 1E-13 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-13 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 1e28 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_P3HTPCBM_BHJ.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1.1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-20 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 0.00001 * Langevin recombination prefactor 52 | useLangevin = 1 * (1) use Langevin to calc. recombination or not (<>1, k_direct is used) 53 | 54 | **Bulk trapping************************************************************************** 55 | N_t_bulk = 1E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 5.017e-15 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 0 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 3.5 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides EtrapBulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /Tests/test_9/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an '*'. Use '**' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 300 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | 12 | **Contacts************************************************************************** 13 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 14 | W_L = 3.6 * eV, work function left electrode, or 'sfb' 15 | W_R = 4.4 * eV, work function right electrode, or 'sfb' 16 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 17 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 18 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 19 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 20 | * nb: use negative values if Sn/pR/L should be infinite 21 | R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 22 | R_series = 0 * Ohms m2, series resistance. 23 | 24 | **Optics**************************************************************************** 25 | genProfile = none * name of file generation profile (or 'none' or 'calc') 26 | L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used 27 | L_BE = 2E-7 * m, thickness of back electrode, must be >0 28 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 29 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 30 | nkBE = ../Data/nk_Al.txt * name of file with n,k values of back electrode 31 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 32 | lambda_min = 3.5E-7 * m, lower bound wavelength 33 | lambda_max = 8E-7 * m, upper bound wavelength 34 | 35 | **Numerical Parameters************************************************************** 36 | NP = 100 * integer, number of grid points, must be at least 5 per layer. 37 | tolPois = 1e-8 * V, abs. tolerance of iterative Poisson solver 38 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 39 | maxItPois = 300 * max. number it. Poisson loop 40 | maxItSS = 1000 * max. number it. main loop 41 | maxItTrans = 300 * max. number it. transient solver 42 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 43 | tolDens = 1E-8 * relative tolerance of density solver 44 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 45 | minAcc = 0.05 * >0, min. acceleration parameter 46 | maxAcc = 0.95 * <2, max. acceleration parameter 47 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 48 | failureMode = 0 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 49 | grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] 50 | tolVint = 1E-10 * V, tolerance internal voltage (Vint) 51 | 52 | **User interface******************************************************************** 53 | timeout = -1 * s, max run time, use negative value for unlimited run time. 54 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 55 | autoTidy = 1 * if 1, then the program will always tidy up this file 56 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 57 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 58 | tJFile = tj.dat * name of file with (t, V, G, J, range) 59 | varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. 60 | limitDigits = 1 * if 1, then number of digits in output is limited 61 | outputRatio = 1 * Output J to screen and variables to varFile every outputRatio timesteps 62 | logFile = log.txt * name of log file 63 | -------------------------------------------------------------------------------- /Tests/test_9/test_9_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kostergroup/SIMsalabim/c3160d963b97a6a7541e08965c6d1f5525e68701/Tests/test_9/test_9_result.png -------------------------------------------------------------------------------- /Tests/test_units/Data.py: -------------------------------------------------------------------------------- 1 | import sys 2 | try: 3 | import numpy as np 4 | except ModuleNotFoundError: 5 | print('Error loading required Python packages, this script requires: Numpy, Scipy, Pandas, and Matplotlib.\nSee tests.md for details.') 6 | sys.exit(1) 7 | 8 | 9 | class Data: 10 | def __init__(self, x_arr, y_arr): 11 | self.x = np.array(x_arr) 12 | self.y = np.array(y_arr) 13 | self.log_x = np.log10(abs(x_arr)) 14 | self.log_y = np.log10(abs(y_arr)) 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Tests/test_units/SIMsalabim.py: -------------------------------------------------------------------------------- 1 | """ 2 | This class runs simsalabim, taking command line arguments as dictionary. 3 | It then runs simsalabim and saves the output in dictionary format without 4 | creating output files in order to save my ssd (to my knowledge). 5 | 6 | Created by: Marten Koopmans 7 | """ 8 | import subprocess 9 | import copy 10 | import os 11 | import sys 12 | 13 | try: 14 | import pandas as pd 15 | except ModuleNotFoundError: 16 | print('Error loading required Python packages, this script requires: Numpy, Scipy, Pandas, and Matplotlib.\nSee tests.md for details.') 17 | sys.exit(1) 18 | 19 | class SIMsalabim(): 20 | """Runs simsalabim from input dictionary, gathers output and returns 21 | the output in a dictionary.""" 22 | def __init__(self, inp_dict=None, file_nr=0, include_scpars=True, include_tj=True, include_var=True, include_jv=True, code_name='SimSS', work_dir='../SimSS', output_sub_folder='.temp', show_term_output=False): 23 | self.input_dic = inp_dict 24 | self.code_name = code_name 25 | self.set_work_dir(work_dir, output_sub_folder) 26 | self.work_dir = os.path.normpath(work_dir) 27 | self.windows = not (os.name == 'posix') 28 | self.show_term_output = show_term_output 29 | self.output_file_ext = str(file_nr) + '_file.dat' 30 | self.output_dic = {} 31 | self.out_fil_nam = {} 32 | 33 | if code_name == 'SimSS' or code_name == 'SIMsalabim': 34 | if include_jv == True: 35 | self.output_dic['jv'] = None 36 | self.out_fil_nam['-JVFile'] = output_sub_folder +'/JV' + str(file_nr) + '_file.dat' 37 | 38 | if include_scpars == True: 39 | self.output_dic['scpars'] = None 40 | self.out_fil_nam['-scParsFile'] = output_sub_folder + '/SCpars' + str(file_nr) + '_file.dat' 41 | 42 | if code_name == 'ZimT': 43 | if include_tj == True: 44 | self.output_dic['tj'] = None 45 | self.out_fil_nam['-tJFile'] = output_sub_folder + '/tj' + str(file_nr) + '_file.dat' 46 | 47 | if include_var == True: 48 | self.output_dic['var'] = None 49 | self.out_fil_nam['-varFile'] = output_sub_folder +'/var' + str(file_nr) + '_file.dat' 50 | 51 | self.make_command_list() 52 | 53 | 54 | def set_input_dic(self, input_dictionary): 55 | """feed an input dictionary to the simulation.""" 56 | self.input_dic = input_dictionary 57 | 58 | 59 | def make_command_list(self): 60 | """Makes the command list to run SIMsalabim.""" 61 | if self.windows: 62 | executable = self.code_name.lower() + '.exe' 63 | else: 64 | executable = './' + self.code_name.lower() 65 | command_list = [executable] 66 | if self.input_dic: 67 | for input_par in self.input_dic: 68 | command_list.append('-' + input_par) 69 | command_list.append(str(self.input_dic[input_par])) 70 | 71 | # add the object specefik output file names to the cmd list. 72 | for command in self.out_fil_nam: 73 | command_list.append(command) 74 | command_list.append(os.path.normpath(self.out_fil_nam[command])) 75 | 76 | self.cmd_list = command_list 77 | 78 | 79 | def compile_code(self): 80 | if self.show_term_output == True: 81 | output_direct = None 82 | else: 83 | output_direct = subprocess.DEVNULL 84 | try: 85 | subprocess.check_call(['fpc', self.code_name.lower()], encoding='utf8', stdout=output_direct, cwd=self.work_dir, shell=self.windows) 86 | except subprocess.CalledProcessError: 87 | print(self.work_dir) 88 | print('Code \'{}\' failed to compile!'.format(self.code_name)) 89 | sys.exit(1) 90 | 91 | 92 | 93 | def run(self): 94 | """runs simulation...""" 95 | output = None 96 | try: 97 | output = subprocess.run(self.cmd_list, encoding='utf8', capture_output=True, cwd=self.work_dir, shell=self.windows) 98 | return(output) 99 | except subprocess.CalledProcessError as err: 100 | print('{} exited with non-zero status.'.format(self.code_name)) 101 | 102 | def set_work_dir(self, working_directory, output_subdir): 103 | work_path = os.path.dirname(working_directory) 104 | if not os.path.exists(work_path): 105 | raise EOFError('SIMsalabim path does not exist: \'{}\''.format(working_directory)) 106 | 107 | self.work_dir = os.path.normpath(working_directory) 108 | sub_path = os.path.join(working_directory, output_subdir) 109 | if not os.path.exists(sub_path): 110 | os.makedirs(sub_path) 111 | 112 | 113 | def return_out_dic(self): 114 | """Return the output (files) of SIMsalabim in dictionary form.""" 115 | for file in self.out_fil_nam: 116 | try: 117 | file_path = os.path.join(self.work_dir, self.out_fil_nam[file]) 118 | 119 | with open(file_path) as out_fil: 120 | dic_entry = file[1:].split('File')[0].lower() 121 | 122 | data = pd.read_csv(out_fil, sep=r'\s+') 123 | if data.empty: 124 | data = None 125 | self.output_dic[dic_entry] = data 126 | 127 | except FileNotFoundError: 128 | pass 129 | return copy.deepcopy(self.output_dic) 130 | 131 | 132 | def run_return_output(self): 133 | """This is the function to run a SIMsalabim simulation and return the output to outside the object.""" 134 | self.make_command_list() 135 | self.run_simsalabim() 136 | return self.return_out_dic() 137 | -------------------------------------------------------------------------------- /Tests/test_units/plot_settings.py: -------------------------------------------------------------------------------- 1 | import sys 2 | try: 3 | import matplotlib as mpl 4 | import matplotlib.pyplot as plt 5 | except ModuleNotFoundError: 6 | print('Error loading required Python packages, this script requires: Numpy, Scipy, Pandas, and Matplotlib.\nSee tests.md for details.') 7 | sys.exit(1) 8 | 9 | fig_size_cm = [10, 7] 10 | mpl.rcParams['savefig.dpi'] = 600 11 | 12 | font_weight = 'normal' #'bold' 13 | fs_small = 6 14 | fs_medium = 7 15 | fs_large = 9 16 | 17 | tick_padding = 3.4 18 | line_thickness = 0.7# default = 1.1 19 | 20 | def get_line_thickness(): 21 | return line_thickness 22 | # print(plt.rcParams.keys()) 23 | def cm2inch(value_cm): 24 | return value_cm / 2.54 25 | 26 | #plt.rc('savefig', orientation='landscape', format='pdf') 27 | plt.rc('figure', figsize=[cm2inch(fig_size_cm[0]), cm2inch(fig_size_cm[1])]) #a4 size 28 | plt.rc('font', weight=font_weight, size=fs_medium) # controls default text sizes 29 | 30 | plt.rc('axes', linewidth=line_thickness, titlesize=fs_large) # fontsize of the axes title 31 | plt.rc('axes', labelweight=font_weight, labelsize=fs_medium) # fontsize of the x and y labels 32 | plt.rc('xtick', top=True, bottom=True, direction='in', labelsize=fs_small) # fontsize of the tick labels 33 | plt.rc('xtick.major', pad=tick_padding, size=line_thickness * 4, width=line_thickness) 34 | plt.rc('xtick.minor', pad=tick_padding, size=line_thickness * 2.5, width=line_thickness) 35 | plt.rc('ytick', left=True, right=True, direction='in', labelsize=fs_small) # fontsize of the tick labels 36 | plt.rc('ytick.major', pad=tick_padding, size=line_thickness * 4, width=line_thickness) 37 | plt.rc('ytick.minor', pad=tick_padding, size=line_thickness * 2.5, width=line_thickness) 38 | plt.rc('legend', fontsize=fs_small) # legend fontsize 39 | plt.rc('figure', titlesize=fs_large) # fontsize of the figure title 40 | plt.rc('lines', markersize=4*line_thickness, linewidth=line_thickness*1.5) 41 | -------------------------------------------------------------------------------- /Units/TypesAndConstants.pp: -------------------------------------------------------------------------------- 1 | unit TypesAndConstants; 2 | {provides the types and constants used by SIMsalabim} 3 | 4 | { 5 | SIMsalabim: a 1D drift-diffusion simulator 6 | Copyright (c) 2020, 2021, 2022, 2023, 2024, 2025, S. Heester, Dr T.S. Sherkar, V.M. Le Corre, Dr M. Koopmans, 7 | F. Wobben, and Prof. Dr. L.J.A. Koster, University of Groningen 8 | This source file is part of the SIMsalabim project. 9 | 10 | This program is free software: you can redistribute it and/or modify 11 | it under the terms of the GNU Lesser General Public License as published by 12 | the Free Software Foundation, either version 3 of the License, or 13 | (at your option) any later version. 14 | 15 | This program is distributed in the hope that it will be useful, 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | GNU General Public License for more details. 19 | 20 | You should have received a copy of the GNU General Public License and 21 | the GNU Lesser General Public License along with this program. 22 | 23 | 24 | The SIMsalabim project can be found on Github at https://github.com/kostergroup/SIMsalabim 25 | email: l.j.a.koster@rug.nl 26 | surface mail: 27 | L.J.A. Koster 28 | Zernike Institute for Advanced Materials 29 | Nijenborgh 4, 9747 AG Groningen, the Netherlands 30 | } 31 | 32 | {$MODE OBJFPC} {force OBJFPC mode} 33 | 34 | interface 35 | 36 | uses Ucomplex; 37 | 38 | const 39 | Max_NP = 1000; {max number of grid points except contacts} 40 | 41 | {exit codes:} 42 | EC_Warning = 3; 43 | EC_DevParCorrupt = 90; 44 | EC_InvalidInput = 91; 45 | EC_InvalidCLInput = 92; 46 | EC_NumericalFailure = 93; 47 | EC_ConverenceFailedHalt = 94; 48 | EC_ConverenceFailedNotHalt = 95; 49 | EC_FileNotFound = 96; 50 | EC_TimeOut = 97; 51 | EC_ProgrammingError = 99; 52 | 53 | 54 | type myReal = EXTENDED; 55 | {note: you can put myReal = single, double, or extended. However, extended may not be available in which case the compiler 56 | will simply take double. The size of the real type is saved in the log file, so you can check} 57 | vector = ARRAY[0..Max_NP + 1] OF myReal; 58 | ShortIntVector = ARRAY[0..Max_NP + 1] OF ShortInt; 59 | Row = ARRAY OF myReal; 60 | Table = ARRAY OF ARRAY OF myReal; {used to store mob_tab, table with elec. mob. as a function of F and n} 61 | MathFunc = FUNCTION(x : myReal) : myReal; 62 | MathFuncValues = FUNCTION(x : myReal; vals : Row) : myReal; 63 | intArray = ARRAY OF INTEGER; 64 | StringArray = ARRAY OF STRING; 65 | ComplexMatrix = ARRAY OF ARRAY OF COMPLEX; 66 | 67 | implementation 68 | 69 | begin 70 | 71 | end. 72 | -------------------------------------------------------------------------------- /ZimT/L1_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 25E-9 * m, device length/thickness 8 | eps_r = 5 * relative dielectric constant 9 | E_c = 4 * eV, conduction band edge 10 | E_v = 5.9 * eV, valence band edge 11 | N_c = 5E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-6 * m^2/Vs, zero field mobility 17 | mu_p = 1E-9 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_C60_1.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 0E20 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /ZimT/L2_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 500E-9 * m, device length/thickness 8 | eps_r = 24 * relative dielectric constant 9 | E_c = 3.9 * eV, conduction band edge 10 | E_v = 5.53 * eV, valence band edge 11 | N_c = 2.2E24 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-4 * m^2/Vs, zero field mobility 17 | mu_p = 1E-4 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 1E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 1E21 * m^-3, concentration of negative ions 35 | N_cation = 1E21 * m^-3, concentration of positive ions 36 | mu_anion = 5E-12 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 5E-12 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_MAPI.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 1E21 * m^-3, trap density (in bulk) 56 | C_n_bulk = 5E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 5E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /ZimT/L3_parameters.txt: -------------------------------------------------------------------------------- 1 | ** SIMsalabim Layer parameters: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | L = 10E-9 * m, device length/thickness 8 | eps_r = 3 * relative dielectric constant 9 | E_c = 2.25 * eV, conduction band edge 10 | E_v = 5.4 * eV, valence band edge 11 | N_c = 1E26 * m^-3, DOS of conduction and valence bands 12 | N_D = 0 * m^-3, ionised n-doping 13 | N_A = 0 * m^-3, ionised p-doping 14 | 15 | **Mobilities************************************************************************ 16 | mu_n = 1E-9 * m^2/Vs, zero field mobility 17 | mu_p = 1E-7 * m^2/Vs, zero field mobility 18 | mobnDep = 0 * 0 : const. mob, 1 : field-dependent 19 | mobpDep = 0 * 0 : const. mob, 1 : field-dependent 20 | gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 21 | gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form 22 | 23 | **Interface-layer-to-right********************************************************** 24 | nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right 25 | nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right 26 | N_t_int = 4E12 * m^-2, trap density at interface with layer to the right 27 | E_t_int = 4.7 * eV, energy level of traps at interface 28 | intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int 29 | intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor 30 | C_n_int = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 31 | C_p_int = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 32 | 33 | **Ions****************************************************************************** 34 | N_anion = 0E21 * m^-3, concentration of negative ions 35 | N_cation = 0E21 * m^-3, concentration of positive ions 36 | mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) 37 | mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) 38 | ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) 39 | 40 | **Generation and recombination****************************************************** 41 | G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer 42 | layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) 43 | nkLayer = ../Data/nk_PTAA.txt * name of file with n,k values of this layer 44 | fieldDepG = 0 * field dependent generation yes (1) or no (0) 45 | P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers 46 | a = 1E-9 * m, charge separation distance, Braun model used 47 | thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian 48 | * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian 49 | k_f = 1E6 * 1/s, decay rate 50 | k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate 51 | preLangevin = 1 * Langevin recombination prefactor 52 | useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) 53 | 54 | **Bulk trapping********************************************************************* 55 | N_t_bulk = 0E18 * m^-3, trap density (in bulk) 56 | C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) 57 | C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) 58 | E_t_bulk = 4.7 * eV, energy level of all traps 59 | bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk 60 | bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor 61 | -------------------------------------------------------------------------------- /ZimT/simulation_setup.txt: -------------------------------------------------------------------------------- 1 | ** ZimT Simulation Setup: 2 | ** Don't change the order of the parameters, comments can be added anywhere, 3 | ** but only after an ''. Use '' if you want your comment to be left-justified. 4 | ** version: 5.24 5 | 6 | **General*************************************************************************** 7 | T = 295 * K, absolute temperature 8 | 9 | **Layers**************************************************************************** 10 | l1 = L1_parameters.txt * parameter file for layer 1, mandatory 11 | l2 = L2_parameters.txt * parameter file for layer 2 12 | l3 = L3_parameters.txt * parameter file for layer 3 13 | 14 | **Contacts************************************************************************** 15 | leftElec = -1 * left electrode is the cathode (-1) or the anode (1) 16 | W_L = 4.0 * eV, work function left electrode (= cathode), or 'sfb' 17 | W_R = 5.4 * eV, work function right electrode (= cathode), or 'sfb' 18 | S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode 19 | S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode 20 | S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode 21 | S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode 22 | * nb: use negative values if Sn/pR/L should be infinite 23 | R_shunt = -5E3 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt 24 | R_series = 0 * Ohms m2, series resistance. 25 | 26 | **Optics**************************************************************************** 27 | genProfile = calc * name of file generation profile (or 'none' or 'calc') 28 | L_TCO = 50E-9 * m, thickness of the TCO. Set to 0 if layer is not used 29 | L_BE = 101E-9 * m, thickness of back electrode, must be >0 30 | nkSubstrate = ../Data/nk_SiO2.txt * name of file with n,k values of substrate 31 | nkTCO = ../Data/nk_ITO.txt * name of file with n,k values of TCO 32 | nkBE = ../Data/nk_Au.txt * name of file with n,k values of back electrode 33 | spectrum = ../Data/AM15G.txt * name of file that contains the spectrum 34 | lambda_min = 3.5E-7 * m, lower bound wavelength 35 | lambda_max = 8E-7 * m, upper bound wavelength 36 | 37 | **Numerical Parameters************************************************************** 38 | NP = 400 * integer, number of grid points, must be at least 5 per layer. 39 | tolPois = 1E-6 * V, abs. tolerance of iterative Poisson solver 40 | maxDelV = 10 * maximum change (in Vt) of the potential per loop 41 | maxItPois = 2000 * max. number it. Poisson loop 42 | maxItSS = 2000 * max. number it. main loop 43 | maxItTrans = 2000 * max. number it. transient solver 44 | currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression 45 | tolDens = 1E-6 * relative tolerance of density solver 46 | couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations 47 | minAcc = 0.01 * >0, min. acceleration parameter 48 | maxAcc = 0.04 * <2, max. acceleration parameter 49 | ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities 50 | failureMode = 2 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip 51 | grad = 2 * determines shape of exp. grid, increase grad for smaller h[1] 52 | tolVint = 1E-8 * V, tolerance internal voltage (Vint) 53 | 54 | **User interface******************************************************************** 55 | timeout = 300 * s, max run time, use negative value for unlimited run time. 56 | pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) 57 | autoTidy = 1 * if 1, then the program will always tidy up this file 58 | autoStop = 0 * stop ZimT if change of system stops changing, yes(1) or no (<>1). 59 | tVGFile = tVG.txt * name of file that specifies time t, voltage V and gen. rate G 60 | tJFile = tj.dat * name of file with (t, V, G, J, range) 61 | varFile = Var.dat * name of the file with (x,V,n,p,Jn,etc) or none for no file. 62 | limitDigits = 1 * if 1, then number of digits in output is limited 63 | outputRatio = 1 * Output to varFile every outputRatio voltages 64 | logFile = log.txt * name of log file 65 | -------------------------------------------------------------------------------- /ZimT/tVG.txt: -------------------------------------------------------------------------------- 1 | t Vext G_frac 2 | 0.0000000000000000E+000 0.0000000000000000E+000 1.0000000000000000E+000 3 | 9.9999999999999995E-007 1.0000000000000000E-002 1.0000000000000000E+000 4 | 1.9999999999999999E-006 1.0000000000000000E-002 1.0000000000000000E+000 5 | 3.0000000000000001E-006 1.0000000000000000E-002 1.0000000000000000E+000 6 | 3.9999999999999998E-006 1.0000000000000000E-002 1.0000000000000000E+000 7 | 4.9999999999999996E-006 1.0000000000000000E-002 1.0000000000000000E+000 8 | 5.9999999999999993E-006 1.0000000000000000E-002 1.0000000000000000E+000 9 | 6.9999999999999990E-006 1.0000000000000000E-002 1.0000000000000000E+000 10 | 7.9999999999999996E-006 1.0000000000000000E-002 1.0000000000000000E+000 11 | 9.0000000000000002E-006 1.0000000000000000E-002 1.0000000000000000E+000 12 | 1.0000000000000001E-005 1.0000000000000000E-002 1.0000000000000000E+000 13 | --------------------------------------------------------------------------------