Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - yqxie

Pages: [1]
1
Dear quantumwise staff,
 
           I'd like to know how to get the thermal conductance of electrons for different temperature by using a script.

Thanks

2
Dear Quantumwise staff,
      I got some problems and need your help . Thanks.
      I have a nanoribbon of 42 atoms to calculate the phonon bandstructures, and run it on a cluster, with each node of 16 cores.  I assigned the job to 3 nodes, 2 MPI processes in each node (since there are two sockets pernode).   I found this is much faster than the way to assign 16 MPI processes per nodes using total 3 nodes when the atk doing calculations such as dynamics matrix calculations. This should be attributed to the OpenMP multithreading which is very efficient in matrix operations and FFT solver. 
After all the calculations for dynamics matrix have been done (takes 2days and 5 hours), the atk continues to calculate phonon bandstrucutre. However, I found it seems to take a very long time to calculate the bandstructure.  For this job (of 42 atoms, repeat=(1,1,3) ), the calculation wasn't finished for more than 2 days.  I thought that in the calculation of the bandstructures the atk is parallelized on k points, so in this case the OpenMP no longer takes effect (I found the CPU is always around 100% occupied, indicating no multithreads). Thus, I should use more MPI processes in the calculation of bandstructure. However, as only 3*2=6 MPI process was assigned, it will take a long time to finish the calculations. Am I right? 
If this is true, I have to stop the job once the calculations of dynamics matrix were finished, (which was indicated by the lines like “ Phonon: Calculating forces for displacement 126 / 126”), and then use the checkpoint file to resume the calculation of bandstructure using more MPI processes.  So there is the second questions, how to restart a phonon calculation?  I tried to revise the script and comment the line “#bulk_configuration.update()”, and add two new lines “bulk_configuration = nlread("./checkpoint2.nc")[0]”, “bulk_configuration.update(force_restart=True)”. In the checkpoint file, there are total 42*3=126 atoms now as was repeated by 3 times. I can make sure the numbers of atoms in VNL.
But I found that atk didn’t calculate the bandstructures, instead it repeated the cell further (now it has totally 126*3=378 atoms), and calculate the dynamics matrix once more, as I found in the output file such lines like “ Phonon: Calculating forces for displacement 1 / 378”.
So, firstly, do I have to use two different parallelization strategies in phonon calculations for a large system of many atoms? I mean using OpenMP (less MPI processes pernode) in calculation of the force constant matrix (dynamic matrix), while using more MPI processes in bandstructure calculations?
Secondly, how to restart a phonon calculation?
Thanks very much.

3
 Hello,
In electronic transport calculation, the kpoints in Z axis  (transport direction) is usually very large, .e.g. 50 or 100.   Thus, I was wondering in phonon transport calculation for a device how to set kpoints in transport direction.  The original cells (left, right leads and center region) will be repeated for the Dynamical Matrix calculation.  Does this mean that I only need to set the kpoints to be very small in x, y and z directions (e.g, k_point_sampling=(3, 3, 1)) at the begining of the input script?   And, we do not need to set as many kpoints as in the case of electronic transport calculation?
      I knew the method to reduce the kpoints for a phonon bandstructure calculations for a bulk system or a periodical system,  as mentioned in the tutorial on the phonon transport of a graphene nanoribbon. 

     Any suggestions? Thanks !

4
 Dear all,
         I got a problem, when the Equivalent Bulk calculation finished, it gives the following information:

File "Scf_NiCoCo.py", line 118, in ?
    twoprobe_method
ATKError: inverse(DZMatrix const &) : Could not LU factorize!

As has been discussed, this may be related to the configuration of the system, but I cannot find the error with the configuration. I post the script below for help.
         Here is a "two-probe" system. The left and reight Electrodes are of the same FCC(111) Cobalt buck of 3 layers, the  Scattering regeion is 2-layer FCC(111) Cobalt surface + 1 Co adatom+ 36-atoms Nickel pyramidical tip+  1 Co adatom + 2-layer FCC(111) Cobalt surface".
        The script for the configuration, and the SCF calucation is given below.
 
File1, for construct the two-probe system


from ATK.TwoProbe import *
from numpy import *
path = '.'

# Li chain lattice constant
a = 3.52
d0 = a/1.414213562
b = 3.52
GRID_X = 2.44948974278*a/4.0
GRID_Y = 1.414213562373095*a/2.00
GRID_Z = 1.732050807568877*a/3.00


N_left=48
N_right=48
N_scatt=102
N_tip=36

# Construct the electrode unit cell
unit_cell = [ [4*GRID_X, 0.0, 0.0 ],
    [0.0, 4*GRID_Y, 0.0 ],
    [0.0, 0.0, 3*GRID_Z ] ] * Angstrom
unit_cell2 = [ [4*GRID_X, 0.0, 0.0 ],
    [0.0, 4*GRID_Y, 0.0 ],
    [0.0, 0.0, 3*GRID_Z ] ] * Angstrom
   
   
# Define the left electrode, the FCC Co(111) surf
 
electrode_left=array([
   [  2.8741,  1.2445,  0.0000],
   [  2.8741,  3.7335,  0.0000],
   [  2.8741,  6.2225,  0.0000],
   [  2.8741,  8.7116,  0.0000],
   [  5.0296,  0.0000,  0.0000],
   [  5.0296,  2.4890,  0.0000],
   [  5.0296,  4.9780,  0.0000],
   [  5.0296,  7.4670,  0.0000],
   [  7.1852,  1.2445,  0.0000],
   [  7.1852,  3.7335,  0.0000],
   [  7.1852,  6.2225,  0.0000],
   [  7.1852,  8.7116,  0.0000],
   [  0.7185,  0.0000,  0.0000],
   [  0.7185,  2.4890,  0.0000],
   [  0.7185,  4.9780,  0.0000],
   [  0.7185,  7.4670,  0.0000],
   [  0.0000,  1.2445,  2.0323],
   [  0.0000,  3.7335,  2.0323],
   [  0.0000,  6.2225,  2.0323],
   [  0.0000,  8.7116,  2.0323],
   [  2.1556,  0.0000,  2.0323],
   [  2.1556,  2.4890,  2.0323],
   [  2.1556,  4.9780,  2.0323],
   [  2.1556,  7.4670,  2.0323],
   [  4.3111,  1.2445,  2.0323],
   [  4.3111,  3.7335,  2.0323],
   [  4.3111,  6.2225,  2.0323],
   [  4.3111,  8.7116,  2.0323],
   [  6.4667,  0.0000,  2.0323],
   [  6.4667,  2.4890,  2.0323],
   [  6.4667,  4.9780,  2.0323],
   [  6.4667,  7.4670,  2.0323],
   [  1.4370,  1.2445,  4.0645],
   [  1.4370,  3.7335,  4.0645],
   [  1.4370,  6.2225,  4.0645],
   [  1.4370,  8.7116,  4.0645],
   [  3.5926,  0.0000,  4.0645],
   [  3.5926,  2.4890,  4.0645],
   [  3.5926,  4.9780,  4.0645],
   [  3.5926,  7.4670,  4.0645],
   [  5.7481,  1.2445,  4.0645],
   [  5.7481,  3.7335,  4.0645],
   [  5.7481,  6.2225,  4.0645],
   [  5.7481,  8.7116,  4.0645],
   [  7.9037,  0.0000,  4.0645],
   [  7.9037,  2.4890,  4.0645],
   [  7.9037,  4.9780,  4.0645],
   [  7.9037,  7.4670,  4.0645],
   ]
   )
   
 
electrode_CoSub = PeriodicAtomConfiguration(
    super_cell_vectors=unit_cell,
    elements=N_left*[Cobalt],
    cartesian_coordinates=electrode_left*Angstrom
    )
# define the Co(001) sub-------------
eles=electrode_CoSub.elements()
print '\n','='*10, eles[1]
print '\n','='*10, eles[2]

# Electrode right, the Co(111) surf with a Co adatom Body Bulk---------
electrode_right=array([
   [  2.8741,  1.2445,  0.0000],
   [  2.8741,  3.7335,  0.0000],
   [  2.8741,  6.2225,  0.0000],
   [  2.8741,  8.7116,  0.0000],
   [  5.0296,  0.0000,  0.0000],
   [  5.0296,  2.4890,  0.0000],
   [  5.0296,  4.9780,  0.0000],
   [  5.0296,  7.4670,  0.0000],
   [  7.1852,  1.2445,  0.0000],
   [  7.1852,  3.7335,  0.0000],
   [  7.1852,  6.2225,  0.0000],
   [  7.1852,  8.7116,  0.0000],
   [  0.7185,  0.0000,  0.0000],
   [  0.7185,  2.4890,  0.0000],
   [  0.7185,  4.9780,  0.0000],
   [  0.7185,  7.4670,  0.0000],
   [  0.0000,  1.2445,  2.0323],
   [  0.0000,  3.7335,  2.0323],
   [  0.0000,  6.2225,  2.0323],
   [  0.0000,  8.7116,  2.0323],
   [  2.1556,  0.0000,  2.0323],
   [  2.1556,  2.4890,  2.0323],
   [  2.1556,  4.9780,  2.0323],
   [  2.1556,  7.4670,  2.0323],
   [  4.3111,  1.2445,  2.0323],
   [  4.3111,  3.7335,  2.0323],
   [  4.3111,  6.2225,  2.0323],
   [  4.3111,  8.7116,  2.0323],
   [  6.4667,  0.0000,  2.0323],
   [  6.4667,  2.4890,  2.0323],
   [  6.4667,  4.9780,  2.0323],
   [  6.4667,  7.4670,  2.0323],
   [  1.4370,  1.2445,  4.0645],
   [  1.4370,  3.7335,  4.0645],
   [  1.4370,  6.2225,  4.0645],
   [  1.4370,  8.7116,  4.0645],
   [  3.5926,  0.0000,  4.0645],
   [  3.5926,  2.4890,  4.0645],
   [  3.5926,  4.9780,  4.0645],
   [  3.5926,  7.4670,  4.0645],
   [  5.7481,  1.2445,  4.0645],
   [  5.7481,  3.7335,  4.0645],
   [  5.7481,  6.2225,  4.0645],
   [  5.7481,  8.7116,  4.0645],
   [  7.9037,  0.0000,  4.0645],
   [  7.9037,  2.4890,  4.0645],
   [  7.9037,  4.9780,  4.0645],
   [  7.9037,  7.4670,  4.0645],
   ]
   )     

#displace the Z coordinate of the electrode
 
electrode_right = electrode_right+[0,0,0]
 
electrode_NiBulk = PeriodicAtomConfiguration(
    super_cell_vectors=unit_cell2,
    elements=N_right*[Cobalt],
    cartesian_coordinates=electrode_right*Angstrom
    )

# Setup the two-probe scattering region
# The atoms in the central region

elements = 33*[Cobalt]+N_tip*[Nickel]+33*[Cobalt]

position2 = array([
   [  2.8741,  1.2445,  6.0968],
   [  2.8741,  3.7335,  6.0968],
   [  2.8741,  6.2225,  6.0968],
   [  2.8741,  8.7116,  6.0968],
   [  5.0296,  0.0000,  6.0968],
   [  5.0296,  2.4890,  6.0968],
   [  5.0296,  4.9780,  6.0968],
   [  5.0296,  7.4670,  6.0968],
   [  7.1852,  1.2445,  6.0968],
   [  7.1852,  3.7335,  6.0968],
   [  7.1852,  6.2225,  6.0968],
   [  7.1852,  8.7116,  6.0968],
   [  0.7185,  0.0000,  6.0968],
   [  0.7185,  2.4890,  6.0968],
   [  0.7185,  4.9780,  6.0968],
   [  0.7185,  7.4670,  6.0968],
   [  0.0000,  1.2445,  8.1291],
   [  0.0000,  3.7335,  8.1291],
   [  0.0000,  6.2225,  8.1291],
   [  0.0000,  8.7116,  8.1291],
   [  2.1556,  0.0000,  8.1291],
   [  2.1556,  2.4890,  8.1291],
   [  2.1556,  4.9780,  8.1291],
   [  2.1556,  7.4670,  8.1291],
   [  4.3111,  1.2445,  8.1291],
   [  4.3111,  3.7335,  8.1291],
   [  4.3111,  6.2225,  8.1291],
   [  4.3111,  8.7116,  8.1291],
   [  6.4667,  0.0000,  8.1291],
   [  6.4667,  2.4890,  8.1291],
   [  6.4667,  4.9780,  8.1291],
   [  6.4667,  7.4670,  8.1291],
   [  3.5926,  4.9780, 10.1614],
   [  3.5926,  4.9780, 16.1614],
   [  2.8741,  3.7335, 18.1936],
   [  2.8741,  6.2225, 18.1936],
   [  5.0296,  4.9780, 18.1936],
   [  2.1556,  2.4890, 20.2259],
   [  2.1556,  4.9780, 20.2259],
   [  2.1556,  7.4670, 20.2259],
   [  4.3111,  3.7335, 20.2259],
   [  4.3111,  6.2225, 20.2259],
   [  6.4667,  4.9780, 20.2259],
   [  1.4370,  1.2445, 22.2582],
   [  1.4370,  3.7335, 22.2582],
   [  1.4370,  6.2225, 22.2582],
   [  3.5926,  2.4890, 22.2582],
   [  3.5926,  4.9780, 22.2582],
   [  3.5926,  7.4670, 22.2582],
   [  5.7481,  3.7335, 22.2582],
   [  5.7481,  6.2225, 22.2582],
   [  0.7185,  2.4890, 24.2905],
   [  0.7185,  4.9780, 24.2905],
   [  2.8741,  1.2445, 24.2905],
   [  2.8741,  3.7335, 24.2905],
   [  2.8741,  6.2225, 24.2905],
   [  5.0296,  2.4890, 24.2905],
   [  5.0296,  4.9780, 24.2905],
   [  5.0296,  7.4670, 24.2905],
   [  0.0000,  3.7335, 26.3227],
   [  2.1556,  2.4890, 26.3227],
   [  2.1556,  4.9780, 26.3227],
   [  4.3111,  1.2445, 26.3227],
   [  4.3111,  3.7335, 26.3227],
   [  4.3111,  6.2225, 26.3227],
   [  1.4370,  3.7335, 28.3550],
   [  3.5926,  2.4890, 28.3550],
   [  3.5926,  4.9780, 28.3550],
   [  2.8741,  3.7335, 30.3873],
   [  2.8741,  3.7335, 36.3873],
   [  0.0000,  1.2445, 38.4195],
   [  0.0000,  3.7335, 38.4195],
   [  0.0000,  6.2225, 38.4195],
   [  0.0000,  8.7116, 38.4195],
   [  2.1556,  0.0000, 38.4195],
   [  2.1556,  2.4890, 38.4195],
   [  2.1556,  4.9780, 38.4195],
   [  2.1556,  7.4670, 38.4195],
   [  4.3111,  1.2445, 38.4195],
   [  4.3111,  3.7335, 38.4195],
   [  4.3111,  6.2225, 38.4195],
   [  4.3111,  8.7116, 38.4195],
   [  6.4667,  0.0000, 38.4195],
   [  6.4667,  2.4890, 38.4195],
   [  6.4667,  4.9780, 38.4195],
   [  6.4667,  7.4670, 38.4195],
   [  1.4370,  1.2445, 40.4518],
   [  1.4370,  3.7335, 40.4518],
   [  1.4370,  6.2225, 40.4518],
   [  1.4370,  8.7116, 40.4518],
   [  3.5926,  0.0000, 40.4518],
   [  3.5926,  2.4890, 40.4518],
   [  3.5926,  4.9780, 40.4518],
   [  3.5926,  7.4670, 40.4518],
   [  5.7481,  1.2445, 40.4518],
   [  5.7481,  3.7335, 40.4518],
   [  5.7481,  6.2225, 40.4518],
   [  5.7481,  8.7116, 40.4518],
   [  7.9037,  0.0000, 40.4518],
   [  7.9037,  2.4890, 40.4518],
   [  7.9037,  4.9780, 40.4518],
   [  7.9037,  7.4670, 40.4518],
   ] 
   )
# Combine electrode and scattering region
# into a two-probe system
#displace the Z coordinate of the electrode
   
two_probe = TwoProbeConfiguration(
    electrodes = (electrode_CoSub,electrode_NiBulk),
    scattering_region_elements = elements,
    scattering_region_cartesian_coordinates = position2* Angstrom,
    equivalent_atoms= [(0,0),(19,74)]
    )
   
print
   
## Export the two-probe system to VNL file.
#vnl_file = VNLFile("F:\data\ATK\NiCoCoCu(111)\Scf\4.8\NiCoCo.vnl")
#vnl_file.addToSample(two_probe, "F:\data\ATK\NiCoCoCu(111)\Scf\4.8\NiCoCo")
   
   
vnl_file = VNLFile("./NiCoCo.vnl")
vnl_file.addToSample(two_probe, "./NiCoCo")

=====================================

file2 for SCF calculation

from ATK.TwoProbe import *                                             

# -- Parameters --------------------------------                       
NumCoLeft=3*4*4
NumCo1Cent=4*4*2+1
NumCo2Cent=4*4*2+1
NumNiCent=36
NumNiRight=3*4*4
parallel_spin = True                                                   
# ----------------------------------------------                       
scf_kpoints = (3,3,100)                                                 
mesh_cutoff = 150.*Rydberg                                             
xc = GGA.PBE                                                           
temperature = 1000.*Kelvin                                             
tolerance = 1e-5                                                       
basis_set_parameters = [                                               
#    basisSetParameters(SingleZetaPolarized,element = Copper),                 
    basisSetParameters(SingleZetaPolarized,element = Cobalt),                 
    basisSetParameters(SingleZetaPolarized,element = Nickel)           
    ]                                                               
           
# ----------------------------------------------                       
diagonal_mixing_parameter = 0.05                                       
history_steps = 10                                                     
max_steps = 400                                                         
integral_lower_bound = 3.*Rydberg                                     
circle_points = 30 
real_axis_point_density = 0.005*electronVolt
                                                   
# ----------------------------------------------                       
path = '.' # For parallel, set to absolute path, like '/home/user/FeMgO'
vnl_filename = "NiCoCo.vnl"                                           
verbosity = 10                                                         
checkpoint_filename = "NiCoCoCheck.nc"                                         
# ----------------------------------------------                       

vnl_file = VNLFile(path+'/'+vnl_filename)   
NiCoSys = vnl_file.readAtomicConfigurations()   
twoprobe_configuration = NiCoSys[NiCoSys.keys()[0]]


# Initial spins                                               
left_electrode_initial_scaled_spin = [ 0.52,]*NumCoLeft
central_region_initial_scaled_spin =[ 0.52,]*NumCo1Cent+[ 0.32,]*NumNiCent+[ 0.52,]*NumCo2Cent
right_electrode_initial_scaled_spin = [0.32,]*NumNiRight

# Define electrode parameters
left_electrode_parameters = ElectrodeParameters(
   brillouin_zone_integration_parameters = brillouinZoneIntegrationParameters(scf_kpoints),
   electron_density_parameters = electronDensityParameters(
      mesh_cutoff = mesh_cutoff,
      initial_scaled_spin = left_electrode_initial_scaled_spin
      ),
   iteration_mixing_parameters = iterationMixingParameters(
      diagonal_mixing_parameter = diagonal_mixing_parameter,
      history_steps = history_steps
      ),
   iteration_control_parameters = iterationControlParameters(
      tolerance = tolerance,
      max_steps = max_steps
      ),
   eigenstate_occupation_parameters = eigenstateOccupationParameters(
      temperature = temperature
      )
   )
   
right_electrode_parameters = ElectrodeParameters(                                         
   brillouin_zone_integration_parameters = brillouinZoneIntegrationParameters(scf_kpoints),
   electron_density_parameters = electronDensityParameters(                               
      mesh_cutoff = mesh_cutoff,                                                             
      initial_scaled_spin = right_electrode_initial_scaled_spin                               
      ),                                                                                     
   iteration_mixing_parameters = iterationMixingParameters(                               
      diagonal_mixing_parameter = diagonal_mixing_parameter,                                 
      history_steps = history_steps                                                           
      ),                                                                                     
   iteration_control_parameters = iterationControlParameters(                             
      tolerance = tolerance,                                                                 
      max_steps = max_steps                                                                   
      ),                                                                                     
   eigenstate_occupation_parameters = eigenstateOccupationParameters(                     
      temperature = temperature                                                               
   )                                                                                       
)

# Define two-probe method                                                                                                                                           
twoprobe_method = TwoProbeMethod(                                             
   electrode_parameters = (left_electrode_parameters,right_electrode_parameters),
   exchange_correlation_type = xc,                                               
   basis_set_parameters = basis_set_parameters,                                 
   electron_density_parameters = electronDensityParameters(                     
      mesh_cutoff = mesh_cutoff,                                                   
      initial_scaled_spin = central_region_initial_scaled_spin                     
      ),                                                                           
   iteration_mixing_parameters = iterationMixingParameters(                     
      diagonal_mixing_parameter = diagonal_mixing_parameter,                       
      history_steps = history_steps                                                 
      ),                                                                           
   iteration_control_parameters = iterationControlParameters(                   
      tolerance = tolerance,                                                       
      max_steps = max_steps                                                         
      ),                                                                           
   energy_contour_integral_parameters = energyContourIntegralParameters(         
      integral_lower_bound = integral_lower_bound,                                 
      circle_points = circle_points, 
      real_axis_point_density = real_axis_point_density
      ),                                                                           
   algorithm_parameters = twoProbeAlgorithmParameters(                           
#      initial_density_type = InitialDensityType.NeutralAtom                         
      )   
   ) 
   
import ATK                                                                                                                                   
ATK.setVerbosityLevel(verbosity)                               
ATK.setCheckpointFilename(checkpoint_filename)                 
self_consistent_calculation = executeSelfConsistentCalculation(
   twoprobe_configuration,                                       
   twoprobe_method                                               
   )                                                             

Thanks for any suggestions!


Pages: [1]