) in ATK and it worked as expected. However, I adapted the code to calculate the Bloch state velocity in silicene but the script gives "v = 0.00e+00 m/s". I'll be happy if you could say what I'm doing wrong in my code:
| |
| vector_a = [10.0, 0.0, 0.0]*Angstrom |
| vector_b = [0.0, 27.52, 0.0]*Angstrom |
| vector_c = [0.0, 0.0, 3.79319126858]*Angstrom |
| lattice = UnitCell(vector_a, vector_b, vector_c) |
| |
| |
| elements = [Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, Silicon, |
| Silicon, Silicon, Silicon, Hydrogen, Hydrogen] |
| |
| |
| fractional_coordinates = [[ 0.485470918896, 0.182646995637, 0. ], |
| [ 0.548086613279, 0.21992408583 , 0.5 ], |
| [ 0.496179292117, 0.300404683423, 0.5 ], |
| [ 0.551593763211, 0.340364254506, 0. ], |
| [ 0.494273148721, 0.420353418505, 0. ], |
| [ 0.549308621502, 0.460381450687, 0.5 ], |
| [ 0.494925490948, 0.540461848335, 0.5 ], |
| [ 0.552265117634, 0.579881857971, 0. ], |
| [ 0.492744063004, 0.659628645016, 0. ], |
| [ 0.542868494137, 0.699147125462, 0.5 ], |
| [ 0.503460722888, 0.751973737953, 0.5 ], |
| [ 0.508748721009, 0.128517272588, 0. ]] |
| |
| |
| bulk_configuration = BulkConfiguration( |
| bravais_lattice=lattice, |
| elements=elements, |
| fractional_coordinates=fractional_coordinates |
| ) |
| |
| numerical_accuracy_parameters = NumericalAccuracyParameters( |
| interaction_max_range=10.0*Angstrom, |
| k_point_sampling=(10, 10, 10), |
| ) |
| |
| calculator = LCAOCalculator( |
| numerical_accuracy_parameters=numerical_accuracy_parameters, |
| ) |
| bulk_configuration.setCalculator(calculator) |
| nlprint(bulk_configuration) |
| bulk_configuration.update() |
| |
| |
| k = [1./3, 1./3, 0 ] |
| |
| |
| velocity = calculateVelocity(bulk_configuration, kpoint=k, spin=Spin.Up, band_indices=[3]) |
| |
| velocity = velocity[0][0][0] |
| |
| |
| print 'Fermi velocity of silicene:' |
| print 'v = %.2e m/s' %abs(velocity.inUnitsOf(Meter/Second)) |