#include <getopt.h>#include <stdio.h>#include <math.h>#include <stdlib.h>#include <memory.h>#include <string.h>#include <time.h>#include "headers/included_files.h"Go to the source code of this file.
Defines | |
| #define | MAXNUMELEMENTS 100000 |
| #define | MAXNUMNODES 10000 |
| #define | NPMAX 5000000 |
| #define | READ 0 |
| #define | WRITE 1 |
| #define | NO 0 |
| #define | YES 1 |
| #define | POINT3D 0 |
| #define | VTK 1 |
| #define | MESH 2 |
| #define | ALL 100 |
| #define | NOAMTIA 13 |
| #define | SIO2 -1 |
| #define | SILICON 0 |
| #define | GAAS 1 |
| #define | GERMANIUM 2 |
| #define | INSB 3 |
| #define | ALSB 4 |
| #define | ALXINXSB 5 |
| #define | ALXIN1XSB 6 |
| #define | ALAS 7 |
| #define | ALP 8 |
| #define | GAP 9 |
| #define | GASB 10 |
| #define | INAS 11 |
| #define | INP 12 |
| #define | NOCONTACT -1 |
| #define | INSULATOR 0 |
| #define | OHMIC 1 |
| #define | SCHOTTKY 2 |
| #define | CONTACT 3 |
| #define | DIME 2003 |
Functions | |
| int | main (int argc, char *argv[]) |
Variables | |
| double | EPSR [NOAMTIA+1] |
| double | EPF [NOAMTIA+1] |
| double | alphaK [NOAMTIA+1][4] |
| double | EMIN [NOAMTIA+1][4] |
| double | HWO [NOAMTIA+1][6] |
| double | DTK [NOAMTIA+1][6] |
| double | ZF [NOAMTIA+1][6] |
| double | RHO [NOAMTIA+1] |
| double | DA [NOAMTIA+1] |
| double | UL [NOAMTIA+1] |
| double | EG [NOAMTIA+1] |
| double | PII [NOAMTIA+1] |
| double | ETH [NOAMTIA+1] |
| const double | epslon0 = 8.854187817e-3 |
| const double | EPSR_SiO2 = 3.9 |
| double | VIC [MAXNUMNODES+1] |
| const double | thresh = 1.e-16 |
| const double | EPS = 1.e-16 |
| const double | TINY = 1.e-16 |
| double | base_geo [4][4] |
| double | base_ref [4][4] |
| double | d_base_geo [3][4] |
| double | d_base_ref [3][4] |
| int | Ng |
| int | Ne |
| int | nf = 4 |
| int | dim = 3 |
| int | i_front [MAXNUMNODES+1] |
| int | i_dom [MAXNUMELEMENTS+1] |
| int | noeud_geo [4][MAXNUMELEMENTS+1] |
| double | coord [3][MAXNUMNODES+1] |
| double | poids_K [4][MAXNUMELEMENTS+1] |
| double | inv_jac_K [3][3][MAXNUMELEMENTS+1] |
| double | d_base_K [3][4][MAXNUMELEMENTS+1] |
| int | vois [4][MAXNUMELEMENTS+1] |
| double | b [MAXNUMNODES+1] |
| double | V [MAXNUMNODES+1] |
| double | Vi [MAXNUMNODES+1] |
| double | Ex [MAXNUMNODES+1] |
| double | Ey [MAXNUMNODES+1] |
| double | Ez [MAXNUMNODES+1] |
| int | ija [100 *MAXNUMELEMENTS+1] |
| double | sa [100 *MAXNUMELEMENTS+1] |
| int | lg = 4 |
| double | xi [3][4] |
| double | omega [4] |
| int | itol |
| int | itmax |
| int | Quantum_Flag |
| double | tol |
| double | p [MAXNUMNODES+2] |
| double | pp [MAXNUMNODES+2] |
| double | r [MAXNUMNODES+2] |
| double | rr [MAXNUMNODES+2] |
| double | z [MAXNUMNODES+2] |
| double | zz [MAXNUMNODES+2] |
| time_t | binarytime |
| tm * | nowtm |
| time_t | fbinarytime |
| tm * | fnowtm |
| int | EL |
| int | number_of_steps |
| int | it |
| int | NOVALLEY [NOAMTIA+1] |
| int | ISEED |
| int | NP1 |
| int | INUM |
| int | IV |
| int | NOELEC [MAXNUMELEMENTS+1] |
| int | MEAN |
| double * | NA |
| double * | ND |
| double | DT |
| double | TS |
| double | KX |
| double | KY |
| double | KZ |
| double | TF |
| double | DDMAX |
| double * | EPP |
| double | L [4] |
| double | BKTQ |
| double | QH |
| double | TL |
| double | CIMP |
| double | QD2 |
| double | MSTAR [NOAMTIA+1][6] |
| double * | VOLUME |
| double | TEMPO |
| double | SWK [NOAMTIA+1][3][15][DIME+1] |
| double | AF [NOAMTIA+1][3] |
| double | EC [NOAMTIA+1][3] |
| double | HM [NOAMTIA+1][3] |
| double | GM [NOAMTIA+1] |
| double | SMH [NOAMTIA+1][3] |
| double | HHM [NOAMTIA+1][3] |
| double * | XVEL |
| double * | YVEL |
| double * | ZVEL |
| double * | ENEL |
| int | err |
| int | every_num_steps |
| int | NHTFLAG |
| int | POISSONUPDATEFLAG |
| int | SAVEPARTICLESFLAG |
| int | SAVEPARTICLESFORMAT |
| int | SAVEFIELDSFLAG |
| int | SAVEFIELDSFORMAT |
| int | NPMAX0 |
| int | WINX |
| int | WINY |
| double | up |
| double | down |
| int | IIFLAG |
| char | MESHNAME [256] |
| double | XVAL [NOAMTIA+1] |
| FILE * | fp |
| option | longopts [] |
| static char * | progname |
|
|
Definition at line 95 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 82 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 96 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 92 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 94 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 93 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 108 of file aeneas.c. Referenced by assemble_rhs_B(). |
|
|
Definition at line 112 of file aeneas.c. Referenced by montecarlo_setup(), and scat(). |
|
|
Definition at line 89 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 97 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 98 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 90 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 99 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 100 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 91 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 105 of file aeneas.c. Referenced by assemble_rhs_B(), main(), and read_input_file(). |
|
|
|
|
|
|
|
|
Definition at line 81 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 75 of file aeneas.c. Referenced by assemble_rhs_B(), main(), montecarlo_setup(), and read_input_file(). |
|
|
Definition at line 85 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 104 of file aeneas.c. Referenced by read_input_file(). |
|
|
Definition at line 67 of file aeneas.c. Referenced by device_setup(), and ensemble_montecarlo(). |
|
|
Definition at line 106 of file aeneas.c. Referenced by assemble_matrix_A(), assemble_rhs_B(), drift(), ensemble_montecarlo(), main(), read_input_file(), and update_potential(). |
|
|
Definition at line 79 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 71 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 107 of file aeneas.c. Referenced by assemble_matrix_A(), assemble_rhs_B(), drift(), main(), read_input_file(), and update_potential(). |
|
|
Definition at line 88 of file aeneas.c. Referenced by impact(), main(), and read_input_file(). |
|
|
Definition at line 87 of file aeneas.c. Referenced by assemble_matrix_A(), creation(), device_setup(), drift(), electron_density(), ensemble_montecarlo(), read_input_file(), save_particles_Point3D_format(), and scat(). |
|
|
Definition at line 80 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 72 of file aeneas.c. Referenced by main(), and read_input_file(). |
|
|
Definition at line 76 of file aeneas.c. Referenced by main(), montecarlo_setup(), and read_input_file(). |
|
||||||||||||
|
Definition at line 295 of file aeneas.c. References ALAS, ALL, ALP, alphaK, ALSB, ALXIN1XSB, ALXINXSB, assemble_matrix_A(), assemble_rhs_B(), binarytime, Bohm_potential(), DA, def_base_all(), def_d_base_all(), def_global_weights_all(), define_d_base_K(), define_inverse_jacobian(), device_setup(), DT, DTK, EG, electric_field(), electron_density(), electron_velocity(), EMIN, ensemble_montecarlo(), EPF, EPSR, err, ETH, every_num_steps, fbinarytime, fnowtm, fp, GAAS, GAP, GASB, GERMANIUM, HWO, i_front, INAS, initial_usefull_calculations(), initialize_GAUSS(), INP, INSB, INSULATOR, ISEED, it, itmax, itol, longopts, MEAN, MESH, montecarlo_setup(), MSTAR, Ne, neighbourhood_table(), Ng, NHTFLAG, NO, NOAMTIA, noeud_geo, NOVALLEY, nowtm, number_of_steps, OHMIC, PII, POINT3D, poisson3D(), POISSONUPDATEFLAG, printf(), progname, Quantum_Flag, READ, read_input_file(), read_neighbourhood_table(), RHO, save_BB(), save_particles_mesh_format(), save_particles_Point3D_format(), save_VTK(), SAVEFIELDSFLAG, SAVEFIELDSFORMAT, SAVEPARTICLESFLAG, SAVEPARTICLESFORMAT, SCHOTTKY, SILICON, TEMPO, TF, TL, tol, UL, V, Vi, vois, VTK, WRITE, XVAL, YES, z, and ZF. 00296 { 00297 int index; 00298 int optc; 00299 int h = 0, v = 0, lose = 0, z = 0; 00300 00301 progname = argv[0]; 00302 00303 while ((optc = getopt_long (argc, argv, "hv", longopts, (int *) 0)) 00304 != EOF) 00305 switch (optc) 00306 { 00307 case 'v': 00308 v = 1; 00309 break; 00310 case 'h': 00311 h = 1; 00312 break; 00313 default: 00314 lose = 1; 00315 break; 00316 } 00317 00318 if (optind == argc - 1) 00319 z = 1; 00320 else if (lose || optind < argc) 00321 { 00322 /* Print error message and exit. */ 00323 if (optind < argc) 00324 printf("Too many arguments\n"); 00325 printf("Try `%s --help' for more information.\n",progname); 00326 exit(1); 00327 } 00328 00329 /* `help' should come first. If `help' is requested, ignore the other 00330 options. */ 00331 if (h) 00332 { 00333 /* Print help info and exit. */ 00334 /* TRANSLATORS: --help output 1 00335 no-wrap */ 00336 printf("\ 00337 Aeneas, the GNU 3D simulator for III-V semiconductor devices.\n"); 00338 printf ("\n"); 00339 /* TRANSLATORS: --help output 2 00340 no-wrap */ 00341 printf ("\ 00342 Usage: %s [OPTION] file...\n",progname); 00343 00344 printf ("\n"); 00345 /* TRANSLATORS: --help output 3 : options 1/2 00346 no-wrap */ 00347 printf("\ 00348 -h, --help display this help and exit\n\ 00349 -v, --version display version information and exit\n"); 00350 00351 printf ("\n"); 00352 /* TRANSLATORS: --help output 5 (end) 00353 TRANSLATORS, please don't forget to add the contact address for 00354 your translation! 00355 no-wrap */ 00356 printf ("\ 00357 Report bugs to sellier@dmi.unict.it or aeneas@southnovel.eu\n"); 00358 00359 exit (0); 00360 } 00361 00362 if (v) 00363 { 00364 /* Print version number. */ 00365 printf("aeneas - GNU aeneas 1.1\n"); 00366 /* xgettext: no-wrap */ 00367 printf("\n"); 00368 printf("\ 00369 Copyright (C) %s Sellier Jean Michel.\n\ 00370 There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\ 00371 PARTICULAR PURPOSE.\n\ 00372 You may redistribute copies of GNU %s under the terms\n\ 00373 of the GNU General Public License.\n\ 00374 For more information about these matters, see the file named COPYING.\n", 00375 "2007","Aeneas"); 00376 exit (0); 00377 } 00378 else if (z){ 00379 // In case of filename specified 00380 // ============================= 00381 fp=fopen(argv[1],"r"); // here we open th input file... 00382 // File Control, just in case the file does not exist... 00383 if(fp==NULL){ 00384 printf("%s: fatal error in opening the input file %s\n", 00385 progname,argv[1]); 00386 exit(EXIT_FAILURE); 00387 } 00388 00389 // ========================= 00390 00391 // creation of the output directories 00392 printf("\ntrying to create the output directories.\n"); 00393 err = system("mkdir e_density"); 00394 err = system("mkdir e_density/BB_mesh_format"); 00395 err = system("mkdir e_density/VTK_format"); 00396 err = system("mkdir e_velocity"); 00397 err = system("mkdir e_velocity/xvel_BB_mesh_format"); 00398 err = system("mkdir e_velocity/yvel_BB_mesh_format"); 00399 err = system("mkdir e_velocity/zvel_BB_mesh_format"); 00400 err = system("mkdir e_velocity/VTK_format"); 00401 err = system("mkdir e_energy"); 00402 err = system("mkdir e_energy/BB_mesh_format"); 00403 err = system("mkdir e_energy/VTK_format"); 00404 err = system("mkdir E"); 00405 err = system("mkdir E/Ex_BB_mesh_format"); 00406 err = system("mkdir E/Ey_BB_mesh_format"); 00407 err = system("mkdir E/Ez_BB_mesh_format"); 00408 err = system("mkdir E/VTK_format"); 00409 err = system("mkdir e_current"); 00410 err = system("mkdir e_current/e_current_x_BB_mesh_format"); 00411 err = system("mkdir e_current/e_current_y_BB_mesh_format"); 00412 err = system("mkdir e_current/e_current_z_BB_mesh_format"); 00413 err = system("mkdir e_current/VTK_format"); 00414 err = system("mkdir potential"); 00415 err = system("mkdir potential/BB_mesh_format"); 00416 err = system("mkdir potential/VTK_format"); 00417 err = system("mkdir particles"); 00418 err = system("mkdir particles/position_mesh_format"); 00419 err = system("mkdir particles/position_Point3D_format"); 00420 err = system("mkdir particles/energy_Point3D_format"); 00421 err = system("mkdir particles/potential_Point3D_format"); 00422 00423 // Printing of the initial runtime 00424 // =============================== 00425 binarytime=time(NULL); 00426 nowtm=localtime(&binarytime); 00427 printf("\n\nSimulation started : %s\n",asctime(nowtm)); 00428 00429 00430 // initial value for random number generator 00431 ISEED = 38467.; 00432 00433 // Open the input file and check if it exists 00434 // If the input file does not exist then the code stops. 00435 // printf("\n\nLoading the input mesh file...\n"); 00436 // if(1) load_mesh(); // this row has to be putted before everything calculation!!! 00437 // if(0) load_mshV1(); // this subroutine is recommended only for GMSH experts 00438 // warning : the user has to be very experienced in GMSH 00439 00440 // *************************** 00441 // HERE WE READ THE INPUT FILE 00442 // *************************** 00443 read_input_file(); 00444 00445 // closure of the user specified input file 00446 fclose(fp); 00447 00448 // If no error has occured then print a nice message :) 00449 printf("Mesh input file correctly processed...\n\n"); 00450 00451 // ============================== 00452 // ============================== 00453 // ======================== 00454 // Material constants here! 00455 // ======================== 00456 // Silicon electrons in the X-valley 00457 // Germanium electrons in the X-valley 00458 // All the other semiconductor compounds have electrons in the Gamma- and L-valley 00459 // definition of the number of valley for every material 00460 NOVALLEY[SILICON]=1; 00461 NOVALLEY[GAAS]=2; 00462 NOVALLEY[GERMANIUM]=1; 00463 NOVALLEY[INSB]=2; 00464 NOVALLEY[ALSB]=2; 00465 NOVALLEY[ALAS]=2; 00466 NOVALLEY[ALP]=2; 00467 NOVALLEY[GAP]=2; 00468 NOVALLEY[GASB]=2; 00469 NOVALLEY[INAS]=2; 00470 NOVALLEY[INP]=2; 00471 NOVALLEY[ALXINXSB]=2; 00472 NOVALLEY[ALXIN1XSB]=2; 00473 // Relative dielectric constant for Silicon 00474 EPSR[SILICON]=11.7; 00475 // Relative dielectric constant for Germanium 00476 EPSR[GERMANIUM]=16.2; 00477 // Relative dielectric constant for InSb 00478 EPSR[INSB]=17.65; 00479 // Relative dieletric constant for GaAs 00480 EPSR[GAAS]=12.90; 00481 // Relative dieletric constant for AlSb 00482 EPSR[ALSB]=12.04; 00483 // Relative dieletric constant for AlAs 00484 EPSR[ALAS]=10.06; 00485 // Relative dieletric constant for AlP 00486 EPSR[ALP]=9.80; 00487 // Relative dieletric constant for GaP 00488 EPSR[GAP]=11.10; 00489 // Relative dieletric constant for GaSb 00490 EPSR[GASB]=15.69; 00491 // Relative dieletric constant for InAs 00492 EPSR[INAS]=15.15; 00493 // Relative dieletric constant for InP 00494 EPSR[INP]=12.61; 00495 // Relative dieletric constant for Al_x In_x Sb 00496 EPSR[ALXINXSB]=XVAL[ALXINXSB]*EPSR[ALSB]+XVAL[ALXINXSB]*EPSR[INSB]; 00497 // Relative dieletric constant for Al_x In_(1-x) Sb 00498 EPSR[ALXIN1XSB]=XVAL[ALXIN1XSB]*EPSR[ALSB]+(1.-XVAL[ALXIN1XSB])*EPSR[INSB]; 00499 // InSb high frequency dieletric constant 00500 EPF[INSB]=15.68; 00501 // GaAs high frequency dieletric constant 00502 EPF[GAAS]=10.92; 00503 // AlSb high frequency dieletric constant 00504 EPF[ALSB]=9.88; 00505 // AlAs high frequency dieletric constant 00506 EPF[ALAS]=8.16; 00507 // AlP high frequency dieletric constant 00508 EPF[ALP]=7.54; 00509 // GaP high frequency dieletric constant 00510 EPF[GAP]=9.08; 00511 // GaSb high frequency dieletric constant 00512 EPF[GASB]=14.44; 00513 // InAs high frequency dieletric constant 00514 EPF[INAS]=12.75; 00515 // InP high frequency dieletric constant 00516 EPF[INP]=9.61; 00517 // Al_x In_x Sb high frequency dieletric constant 00518 EPF[ALXINXSB]=XVAL[ALXINXSB]*(EPF[ALSB]+EPF[INSB]); 00519 // Al_x In_(1-x) Sb high frequency dieletric constant 00520 EPF[ALXIN1XSB]=XVAL[ALXIN1XSB]*EPF[ALSB]+(1.-XVAL[ALXIN1XSB])*EPF[INSB]; 00521 for(index=0;index<NOAMTIA;index++){ 00522 int i; 00523 for(i=0;i<6;i++){ 00524 HWO[index][i]=0.; 00525 DTK[index][i]=0.; 00526 ZF[index][i]=0.; 00527 } 00528 } 00529 // Silicon optical phonon scattering energy (eV) 00530 HWO[SILICON][0]=0.0120; 00531 HWO[SILICON][1]=0.0185; 00532 HWO[SILICON][2]=0.0190; 00533 HWO[SILICON][3]=0.0474; 00534 HWO[SILICON][4]=0.0612; 00535 HWO[SILICON][5]=0.0590; 00536 // Germanium optical phonon scattering energy (eV) 00537 HWO[GERMANIUM][0]=0.09; 00538 // InSb optical phonon scattering energy (eV) 00539 HWO[INSB][0]=0.0282; 00540 // GaAs optical phonon scattering energy (eV) 00541 HWO[GAAS][0]=0.03536; 00542 // AlSb optical phonon scattering energy (eV) 00543 HWO[ALSB][0]=0.0360; 00544 // AlAs optical phonon scattering energy (eV) 00545 HWO[ALAS][0]=0.05009; 00546 // AlP optical phonon scattering energy (eV) 00547 HWO[ALP][0]=0.06212; 00548 // GaP optical phonon scattering energy (eV) 00549 HWO[GAP][0]=0.04523; 00550 // GaSb optical phonon scattering energy (eV) 00551 HWO[GASB][0]=0.02529; 00552 // InAs optical phonon scattering energy (eV) 00553 HWO[INAS][0]=0.03008; 00554 // InP optical phonon scattering energy (eV) 00555 HWO[INP][0]=0.04240; 00556 // Al_x In_x Sb optical phonon scattering energy (eV) 00557 HWO[ALXINXSB][0]=XVAL[ALXINXSB]*(HWO[ALSB][0]+HWO[INSB][0]); 00558 // Al_x In_(1-x) Sb optical phonon scattering energy (eV) 00559 HWO[ALXIN1XSB][0]=XVAL[ALXIN1XSB]*HWO[ALSB][0]+(1.-XVAL[ALXIN1XSB])*HWO[INSB][0]; 00560 // Silicon optical coupling constants (eV/m) 00561 DTK[SILICON][0]=0.05e11; 00562 DTK[SILICON][1]=0.08e11; 00563 DTK[SILICON][2]=0.03e11; 00564 DTK[SILICON][3]=0.20e11; 00565 DTK[SILICON][4]=1.14e11; 00566 DTK[SILICON][5]=0.20e11; 00567 // Germanium optical coupling constants (eV/m) 00568 DTK[GERMANIUM][0]=1.889e11; 00569 // InSb optical coupling constants (eV/m) 00570 DTK[INSB][0]=0.47e11; 00571 // GaAs optical coupling constant (eV/m) 00572 DTK[GAAS][0]=1.11e11; 00573 // AlSb optical coupling constants (eV/m) 00574 DTK[ALSB][0]=0.55e11; 00575 // AlAs optical coupling constants (eV/m) 00576 DTK[ALAS][0]=3.0e11; 00577 // AlP optical coupling constants (eV/m) 00578 DTK[ALP][0]=0.95e11; 00579 // GaP optical coupling constants (eV/m) 00580 DTK[GAP][0]=5.33e11; 00581 // GaSb optical coupling constants (eV/m) 00582 DTK[GASB][0]=0.94e11; 00583 // InAs optical coupling constants (eV/m) 00584 DTK[INAS][0]=3.59e11; 00585 // InP optical coupling constants (eV/m) 00586 DTK[INP][0]=2.46e11; 00587 // Al_x In_x Sb optical coupling constants (eV/m) 00588 DTK[ALXINXSB][0]=XVAL[ALXINXSB]*(DTK[ALSB][0]+DTK[INSB][0]); 00589 // Al_x In_(1-x) Sb optical coupling constants (eV/m) 00590 DTK[ALXIN1XSB][0]=XVAL[ALXIN1XSB]*DTK[ALSB][0]+(1.-XVAL[ALXIN1XSB])*DTK[INSB][0]; 00591 // Silicon optical phonon Z-factor 00592 ZF[SILICON][0]=1.; 00593 ZF[SILICON][1]=1.; 00594 ZF[SILICON][2]=4.; 00595 ZF[SILICON][3]=4.; 00596 ZF[SILICON][4]=1.; 00597 ZF[SILICON][5]=4.; 00598 // Germanium optical phonon Z-factor 00599 ZF[GERMANIUM][0]=1.; 00600 // InSb optical phonon Z-factor 00601 ZF[INSB][0]=1.; 00602 // AlSb optical phonon Z-factor 00603 ZF[ALSB][0]=1.; 00604 // optical phonon Z-factor 00605 ZF[ALAS][0]=1.; 00606 // optical phonon Z-factor 00607 ZF[ALP][0]=1.; 00608 // optical phonon Z-factor 00609 ZF[GAP][0]=1.; 00610 // optical phonon Z-factor 00611 ZF[GASB][0]=1.; 00612 // optical phonon Z-factor 00613 ZF[INAS][0]=1.; 00614 // optical phonon Z-factor 00615 ZF[INP][0]=1.; 00616 // Al_x In_x Sb optical phonon Z-factor 00617 ZF[ALXINXSB][0]=XVAL[ALXINXSB]*(ZF[ALSB][0]+ZF[INSB][0]); 00618 // Al_x In_(1-x) Sb optical phonon Z-factor 00619 ZF[ALXIN1XSB][0]=XVAL[ALXIN1XSB]*ZF[ALSB][0]+(1.-XVAL[ALXIN1XSB])*ZF[INSB][0]; 00620 // Silicon Crystal Density (Kg/m^3) 00621 RHO[SILICON]=2330.; 00622 // Germanium Crystal Density (Kg/m^3) 00623 RHO[GERMANIUM]=5320.; 00624 // InSb Crystal Density (Kg/m^3) 00625 RHO[INSB]=5790.; 00626 // GaAs Crystal Density (Kg/m^3) 00627 RHO[GAAS]=5360.; 00628 // AlSb Crystal Density (Kg/m^3) 00629 RHO[ALSB]=4288.; 00630 // AlAs Crystal Density (Kg/m^3) 00631 RHO[ALAS]=5650.; 00632 // AlP Crystal Density (Kg/m^3) 00633 RHO[ALP]=7410.; 00634 // GaP Crystal Density (Kg/m^3) 00635 RHO[GAP]=5850.; 00636 // GaSb Crystal Density (Kg/m^3) 00637 RHO[GASB]=3970.; 00638 // InAs Crystal Density (Kg/m^3) 00639 RHO[INAS]=4280.; 00640 // InP Crystal Density (Kg/m^3) 00641 RHO[INP]=5130.; 00642 // Al_x In_x Sb Crystal Density (Kg/m^3) 00643 RHO[ALXINXSB]=XVAL[ALXINXSB]*(RHO[ALSB]+RHO[INSB]); 00644 // Al_x In_(1-x) Sb Crystal Density (Kg/m^3) 00645 RHO[ALXIN1XSB]=XVAL[ALXIN1XSB]*RHO[ALSB]+(1.-XVAL[ALXIN1XSB])*RHO[INSB]; 00646 // Silicon acoustic deformation potential (Joule) 00647 DA[SILICON]=9.*1.60217733e-19; 00648 // Germanium acoustic deformation potential (Joule) 00649 DA[GERMANIUM]=9.*1.60217733e-19; 00650 // InSb acoustic deformation potential (Joule) 00651 DA[INSB]=5.96*1.60217733e-19; 00652 // GaAs acoustic deformation potential (Joule) 00653 DA[GAAS]=7.*1.60217733e-19; 00654 // AlSb acoustic deformation potential (Joule) 00655 DA[ALSB]=4.6*1.60217733e-19; 00656 // acoustic deformation potential (Joule) 00657 DA[ALAS]=9.3*1.60217733e-19; 00658 // acoustic deformation potential (Joule) 00659 DA[ALP]=9.3*1.60217733e-19; 00660 // acoustic deformation potential (Joule) 00661 DA[GAP]=7.4*1.60217733e-19; 00662 // acoustic deformation potential (Joule) 00663 DA[GASB]=9.*1.60217733e-19; 00664 // acoustic deformation potential (Joule) 00665 DA[INAS]=8.2*1.60217733e-19; 00666 // acoustic deformation potential (Joule) 00667 DA[INP]=6.2*1.60217733e-19; 00668 // Al_x In_x Sb acoustic deformation potential (Joule) 00669 DA[ALXINXSB]=XVAL[ALXINXSB]*(DA[ALSB]+DA[INSB]); 00670 // Al_x In_(1-x) Sb acoustic deformation potential (Joule) 00671 DA[ALXIN1XSB]=XVAL[ALXIN1XSB]*DA[ALSB]+(1.-XVAL[ALXIN1XSB])*DA[INSB]; 00672 // Silicon longitudinal sound velocity (m/sec) 00673 UL[SILICON]=9040.; 00674 // Germanium longitudinal sound velocity (m/sec) 00675 UL[GERMANIUM]=5400.; 00676 // InSb longitudinal sound velocity (m/sec) 00677 UL[INSB]=4060.; 00678 // GaAs longitudinal sound velocity (m/sec) 00679 UL[GAAS]=5240.; 00680 // AlSb longitudinal sound velocity (m/sec) 00681 UL[ALSB]=4600.; 00682 // longitudinal sound velocity (m/sec) 00683 UL[ALAS]=5650.; 00684 // longitudinal sound velocity (m/sec) 00685 UL[ALP]=7410.; 00686 // longitudinal sound velocity (m/sec) 00687 UL[GAP]=5850.; 00688 // longitudinal sound velocity (m/sec) 00689 UL[GASB]=3970.; 00690 // longitudinal sound velocity (m/sec) 00691 UL[INAS]=4280.; 00692 // longitudinal sound velocity (m/sec) 00693 UL[INP]=5130.; 00694 // Al_x In_x Sb longitudinal sound velocity (m/sec) 00695 UL[ALXINXSB]=XVAL[ALXINXSB]*(UL[ALSB]+UL[INSB]); 00696 // Al_x In_(1-x) Sb longitudinal sound velocity (m/sec) 00697 UL[ALXIN1XSB]=XVAL[ALXIN1XSB]*UL[ALSB]+(1.-XVAL[ALXIN1XSB])*UL[INSB]; 00698 // Silicon energy gap 00699 EG[SILICON]=1.21-3.333e-4*TL; 00700 printf("EG[SILICON] = %g\n",EG[SILICON]); 00701 // Germanium energy gap 00702 EG[GERMANIUM]=0.747-3.587e-4*TL; 00703 printf("EG[GERMANIUM] = %g\n",EG[GERMANIUM]); 00704 // InSb energy gap 00705 EG[INSB]=0.2446-2.153e-4*TL;//0.174;??? 00706 printf("EG[INSB] = %g\n",EG[INSB]); 00707 // GaAs energy gap 00708 EG[GAAS]=1.54-4.036e-4*TL;//0.32;??? 00709 printf("EG[GAAS] = %g\n",EG[GAAS]); 00710 // AlSb energy gap 00711 EG[ALSB]=1.696-2.20e-4*TL; 00712 printf("EG[ALSB] = %g\n",EG[ALSB]); 00713 // energy gap 00714 EG[ALAS]=2.314-3.0e-4*TL; 00715 // energy gap 00716 EG[ALP]=2.51-3.333e-4*TL; 00717 // energy gap 00718 EG[GAP]=2.35-2.667e-4*TL; 00719 // energy gap 00720 EG[GASB]=0.81-3.667e-4*TL; 00721 // energy gap 00722 EG[INAS]=0.434-2.601e-4*TL; 00723 // energy gap 00724 EG[INP]=1.445-3.296e-4*TL; 00725 // Al_x In_x Sb energy gap 00726 EG[ALXINXSB]=XVAL[ALXINXSB]*(EG[ALSB]+EG[INSB]); 00727 printf("EG[ALxINxSB] = %g\n",EG[ALXINXSB]); 00728 // Al_x In_(1-x) Sb energy gap 00729 EG[ALXIN1XSB]=XVAL[ALXIN1XSB]*EG[ALSB]+(1.-XVAL[ALXIN1XSB])*EG[INSB]; 00730 printf("EG[ALxIN(1-x)SB] = %g\n",EG[ALXIN1XSB]); 00731 printf("\n"); 00732 // Silicon energy minimum 00733 EMIN[SILICON][1]=0.0; 00734 // Germanium energy minimum 00735 EMIN[GERMANIUM][1]=0.173; 00736 // InSb energy minimum of GAMMA-valley 00737 EMIN[INSB][1]=0.0; 00738 // InSb energy minimum 0f L-valley 00739 EMIN[INSB][2]=1.038; 00740 // GaAs energy minimum of GAMMA-valley 00741 EMIN[GAAS][1]=0.0; 00742 // GaAs energy minimum of L-valley (eV) 00743 EMIN[GAAS][2]=0.323; 00744 // AlSb energy minimum of GAMMA-valley 00745 EMIN[ALSB][1]=0.507; 00746 // AlSb energy minimum 0f L-valley 00747 EMIN[ALSB][2]=0.292; 00748 // energy minimum of GAMMA-valley 00749 EMIN[ALAS][1]=0.767; 00750 // energy minimum 0f L-valley 00751 EMIN[ALAS][2]=0.332; 00752 // energy minimum of GAMMA-valley 00753 EMIN[ALP][1]=1.237; 00754 // energy minimum 0f L-valley 00755 EMIN[ALP][2]=0.824; 00756 // energy minimum of GAMMA-valley 00757 EMIN[GAP][1]=0.496; 00758 // energy minimum 0f L-valley 00759 EMIN[GAP][2]=0.415; 00760 // energy minimum of GAMMA-valley 00761 EMIN[GASB][1]=0.0; 00762 // energy minimum 0f L-valley 00763 EMIN[GASB][2]=0.217; 00764 // energy minimum of GAMMA-valley 00765 EMIN[INAS][1]=0.0; 00766 // energy minimum 0f L-valley 00767 EMIN[INAS][2]=1.078; 00768 // energy minimum of GAMMA-valley 00769 EMIN[INP][1]=0.0; 00770 // energ |