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.


Messages - qiuweicheng

Pages: [1] 2 3
1
Hi, In the ATK basic set, we can only see the set of density cutoff, but we can not set the energy cutoff due to the plane wave expansion approximate.  How can we set the  parameter of this  energy cutoff ?

2
Hi, I can't accurately adjust the size of axis in fatband picture by ATK 2017. We can just adjust the size of fatband picture using the Zoom tool.  Why the adjustable axis tool can't be used by ATK 2017? See the attachments.
It becomes more inconvenient for us to  adjust picture by ATK 2017 compared with that by ATK 2016.

3
Thank you very much.
But, the  Projection(atoms=[Boron], l_quantum_numbers=[0, 1, 2])) is still used by the projection of spin=spin_sum, not the projection of spin=spin_up. and the results of projections=[p3,p1] is the sum of p3 and p1. see the attachments.
By the way,I want to calculate the ProjectOnOrbitalsByElement projections  used by the projection of spin=spin_up. How to solve it?
I write this py file according to the manual http://docs.quantumwise.com/manuals/Types/Projection/Projection.html#NL.Analysis.Projection.Projection

# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
path = u'C:/Users/ThinkPad/.vnl/graphene-MD/band-Gr-BN.hdf5'
configuration = nlread(path, object_id='BulkConfiguration_0')[0]
# -------------------------------------------------------------
# Fat Bandstructure
#-------------------------------------------------------------
p1 = ProjectOnOrbitalsByElement
p3 = Projection(spin=Spin.Up)
fat_bandstructure = FatBandstructure(
    configuration= configuration,
    route=['G', 'K', 'M'],
    points_per_segment=200,
    bands_above_fermi_level=All,   
    projections=p1*p3, # a list of the projections defined above
)
nlsave('band-Gr-BN.hdf5', fat_bandstructure)

But, it is error:
Traceback (most recent call last):
  File "band-Gr-BN.py", line 17, in <module>
    projections=p1*p3, # a list of the projections defined above
  File "zipdir\NL\Analysis\FatBandstructure.py", line 122, in __init__
  File "zipdir\NL\Analysis\FatBandstructure.py", line 563, in setAndCheckProjections
  File "zipdir\NL\Analysis\ProjectionGenerator.py", line 271, in generate
AttributeError: 'Projection' object has no attribute 'generate'


4
# -*- coding: utf-8 -*-
# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
path = u'C:/Users/ThinkPad/.vnl/graphene-MD/band-Gr-BN.hdf5'
configuration = nlread(path, object_id='BulkConfiguration_0')[0]
# -------------------------------------------------------------
# Fat Bandstructure
#-------------------------------------------------------------
fat_bandstructure = FatBandstructure(
    configuration= configuration,
    route=['G', 'K', 'M'],
    points_per_segment=200,
    bands_above_fermi_level=All, 
    p3 = Projection(spin=Spin.Up),
    p1 = Projection(atoms=[Boron], l_quantum_numbers=[0, 1, 2])+Projection(atoms=[Carbon], l_quantum_numbers=[0, 1, 2])+Projection(atoms=[Nitrogen], l_quantum_numbers=[0, 1, 2]), 
    projections=p3*p1,
)
nlsave('band-Gr-BN.hdf5', fat_bandstructure)

Tt is also error:
NameError: name 'p3' is not defined

5
thank you for your reply.
I  set py command according to the the manual:
    p3 = Projection(spin=Spin.Up),
    p1 = Projection(atoms=[Boron], l_quantum_number=[0, 1, 2])+Projection(atoms=[Carbon], l_quantum_number=[0, 1, 2])+Projection       (atoms=[Nitrogen], l_quantum_number=[0, 1, 2]),
    projections=p1*p3,
but, it is error:
TypeError: __init__() got an unexpected keyword argument 'l_quantum_number'

and then, i set the py command like this
projections=Projection(ProjectOnOrbitalsByElement, spin=Spin.Up)
but, it is also  error:
TypeError: __init__() got multiple values for keyword argument 'spin'

and then, i set the py command like this
projections=ProjectOnOrbitalsByElement*Projection(spin=Spin.Up),
but, it is also  error:
AttributeError: 'Projection' object has no attribute 'generate'

So, how can I make spin=Spin.Up and ProjectOnOrbitalsByElement projections at the same time? please help me

6
Hi,
In the set of atomic orbital projection fatband, we can't distinguish the bands between spin up electron and spin down electron.
I try to solve this probelm.
I save the result of   atomic orbital projection fatband in 1.py file.
In the scatter line,  the data like this:
# Scatter
x = numpy.array([ 0.            ,  0.003333333333,  0.006666666667,  0.01          ,
                  0.013333333333,  0.016666666667,  0.02          ,  0.023333333333,
                  0.026666666667,  0.03          , .............,  1.0,
                   0.            ,  0.003333333333,  0.006666666667,  0.01          ,
                  0.013333333333,  0.016666666667,  0.02          ,  0.023333333333,
                  0.026666666667,  0.03          , .............,  1.0,
                    ..................................
 The band of spin up electron is list Followed by  the band of spin up electron .
The question:
How do I  distinguish  the datas between the spin up and spin down? or deal with this scatter line?
Could you give me the  relevant py file? or the relevant python commands?

7
Thank you for your reply. But, you set the device_configuration = nlread('BN-AP-0.3.nc', DeviceConfiguration)[-1]? I think it  should be device_configuration = nlread('BN-AP-0.3.nc', DeviceConfiguration)[0]
Or what is the difference between ('BN-AP-0.3.nc', DeviceConfiguration)[-1] and ('BN-AP-0.3.nc', DeviceConfiguration)[0]?

8
In the first py file, we set the calculator = device_configuration.calculator() by using the calculator of ('BN-AP-0.3.nc', DeviceConfiguration)
The calculator is set the same with that of  ('BN-AP-0.3.nc', DeviceConfiguration).
Is this  py command  "calculator = device_configuration.calculator() " set right?
by the way , the calculator set in the second py file is also copyed from the BN-AP-0.3.py.
Except from the bias, are there any difference in the device calculation set between two py files?

9
But, as my py file shown, I have used my 0.8 V converged solution as an initial state for the higher bias voltage calculation. I don't know why ? I use the ATK 2012 and 2016.
initial_spin = InitialSpin(scaled_spins=[1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0])
old_calculation = nlread('BN-0.8V.nc', DeviceConfiguration)[0]
device_configuration.setCalculator(
    calculator,
    initial_spin=initial_spin,
    initial_state=old_calculation,
)

10
Yes, I know this tutorials by using  use the Initial State in the VNL to start the calculation from a converged solution (old calculation).  that's completely consistent with the second py file.
and the first py file also uses  use the Initial State in the VNL to start the calculation from a converged solution.
But, in the calculation, the calculation is  convergence by using the first py file.
however, the  calculation is  not convergence by using the second py file.
So, I want to verify that the first py file  are correct?
Why the situation of convergence is different?



11
By the way. The length of the actual electrode and related electrode extension have been much enlarged
In the Device Algorithm settings, We consider using Neutral Atom instead of Equivalent Bulk for initial density.
But, the device is still not convergence. What can I do next?
The longer  the length of the actual electrode and related electrode extension , the Better?

12
We can do the calculation using the  existing result (BN-AP-0.3.nc).
But, There are two ways to use existing results.
The question is:
The first way is right?

13
I checked the ElectroStaticDifferencePotential  for the device under bias 0.9V.
The voltage curve is not right.  I have add the length of Electrode extension layer from 9 layers to 13 layers, but the voltage curve was still not convergence. The  ElectroStaticDifferencePotential  for the device under bias 0.8V is convergence. See the attachments.
How we solve this problem of  ElectroStaticDifferencePotential  for the device under bias>0.9V ?

14
I get two py files:
The first: the set calculator is the same with that of BN-AP-0.3.nc
device_configuration = nlread('BN-AP-0.3.nc', DeviceConfiguration)[0]
calculator = device_configuration.calculator()
bias = 0.5*Volt
# -------------------------------------------------------------
# Initial State
# -------------------------------------------------------------
initial_spin = InitialSpin(scaled_spins=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0])
calculator=calculator(
     electrode_voltages=(bias/2, -bias/2))
device_configuration.setCalculator(
     calculator(),
     initial_spin=initial_spin,
     initial_state=device_configuration
     )
device_configuration.update()
nlsave('BN-AP-%.1f.nc' % bias.inUnitsOf(Volt), device_configuration)
# Calculate the transmission
t = TransmissionSpectrum(
    configuration= device_configuration,
    energies = numpy.linspace(-2,2,201)*eV,
    kpoints=MonkhorstPackGrid(30,30),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1e-06*eV,
    self_energy_calculator=RecursionSelfEnergy(),
     ) 
nlsave('BN-AP-%.1f.nc' % bias.inUnitsOf(Volt), t)
nlprint(t)
nlprint("%8.6e %8.6e %8.6e" %(t.bias(), t.current(), t.bias()/t.current())+'\n'),
 
The second: I put BN-AP-0.3.nc into the scripter, and change the initial set.
......
......
#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = LCAOCalculator(
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=left_electrode_numerical_accuracy_parameters,
    poisson_solver=left_electrode_poisson_solver,
    )

right_electrode_calculator = LCAOCalculator(
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=right_electrode_numerical_accuracy_parameters,
    poisson_solver=right_electrode_poisson_solver,
    )

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=device_numerical_accuracy_parameters,
    electrode_calculators=
        [left_electrode_calculator, right_electrode_calculator],
    electrode_voltages=( 0.2*Volt, -0.2*Volt)
    )

device_configuration.setCalculator(calculator)

# -------------------------------------------------------------
# Initial State
# -------------------------------------------------------------
initial_spin = InitialSpin(scaled_spins=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0])
old_calculation = nlread('BN-AP-0.3.nc', DeviceConfiguration)[0]
device_configuration.setCalculator(
    calculator,
    initial_spin=initial_spin,
    initial_state=old_calculation,
)
device_configuration.update()
nlsave('BN-AP-0.4.nc', device_configuration)
nlprint(device_configuration)

My question:
1. The set calculator is the same with that of BN-AP-0.3.nc. Are there any difference between two py files?
2. Are there any command problem with the first py file?

15
Thank you for your reply.  Our py file is in the attachments.
1. I just do this by using the results of lower-bias convergence. But it is also not convergence.
2. The length of Ni electrode is short ? or The length of Ni layers in the scattering region is short?
If it is the length of Ni layers in the scattering region. I have also made change for this, but it is also not  convergence.
3. Why using Neutral Atom instead of Equivalent Bulk for initial density? and how can I set py command for this.

Pages: [1] 2 3