Author Topic: Question about Transistor Calculation and input file  (Read 3268 times)

0 Members and 1 Guest are viewing this topic.

Offline sulee

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: kr
  • Reputation: 0
    • View Profile
Dear Quantumwise,

I am trying to calculate current at fixed drain bias (1.8V) and changing gate bias from 0.0 V to 7.0 V.
And I wan to read Self-consistent calculation result from previous step whenever gate bias is changed.
So, I prepared input files.
But, it seems that the "zero drain bias calculation" is executed at every gate bias calculation step.

1. Please look at my input files, and please let me know what is wrong.
2. When I use LDA or GGA, I got follow message, I don't know the reason.
    The computed multigrid residual is greater than the required accuracy.
3. I am wondering my models are correct, size and thickness of metallic and dielectric regions.
4. My system has 51 k-points. So, when I use 72core system,  some cores are idle.
    How can I use all cores?

I would really appreciate if you can help us.

Sincerely yours,

Sang Uck Lee

Followings are gate bias calculation part.

#----------------------------------------
# FET Calculation
#----------------------------------------
kpoint_grid = MonkhorstPackGrid()

name ='A9_SE'

gate_voltage_list=numpy.linspace(0.0,7.0,15)*Volt
for gatev in gate_voltage_list:

    # Add metallic region                                                                                                                                                     
    metallic_region_0 = BoxRegion(
        gatev,
        xmin = 0.0*Angstrom, xmax = 23.0*Angstrom,
        ymin = 0.0*Angstrom, ymax = 1.0*Angstrom,
        zmin = 4.318*Angstrom, zmax = 38.861*Angstrom,
        )

    metallic_regions = [metallic_region_0]
    central_region.setMetallicRegions(metallic_regions)

    # Add dielectric region                                                                                                                                                                                                                                                                         
    dielectric_region_0 = BoxRegion(
        4.0,
        xmin = 0.0*Angstrom, xmax = 23.0*Angstrom,
        ymin = 1.0*Angstrom, ymax = 7.16*Angstrom,
        zmin = 4.318*Angstrom, zmax = 38.861*Angstrom,
        )

    dielectric_regions = [dielectric_region_0]
    central_region.setDielectricRegions(dielectric_regions)
   
    device_configuration = DeviceConfiguration(
        central_region,
        [left_electrode, right_electrode]
        )

    device_configuration.setCalculator(calculator)
    nlprint(device_configuration)
    device_configuration.update()
    nlsave(name+"G.nc", device_configuration)
   
    # -------------------------------------------------------------
    # IV Curve
    # -------------------------------------------------------------
    # Set new calculator with modified electrode voltages on the configuration                                                     \         

    # use the self consistent state of the old calculation as starting input.                                                      \         

    device_configuration.setCalculator(calculator(electrode_voltages=(0.9,-0.9)*Volt),
                                       initial_state=device_configuration)


    transmission_spectrum = TransmissionSpectrum(
        configuration=device_configuration,
        energies=numpy.linspace(-2,2,401)*eV,
        kpoints=kpoint_grid,
        energy_zero_parameter=AverageFermiLevel,
        infinitesimal=1e-06*eV,
        self_energy_calculator=RecursionSelfEnergy(),
        )
    i_all=transmission_spectrum.current()
    nlprint(i_all)
   
    device_configuration.update()

    nlsave(name+"_%g.nc" % gatev.inUnitsOf(Volt), device_configuration, object_id='dev'+str(gatev))
    nlsave(name+"_%g.nc" % gatev.inUnitsOf(Volt), transmission_spectrum.current(), object_id='current'+str(gatev))
    nlsave(name+"_%g.nc" % gatev.inUnitsOf(Volt), transmission_spectrum, object_id='trans'+str(gatev))

    nlsave(name+"G.nc", transmission_spectrum.current(), object_id='current'+str(gatev))
    nlsave(name+"G.nc", transmission_spectrum, object_id='trans'+str(gatev))
    nlprint(transmission_spectrum)
    nlprint(transmission_spectrum.current())
« Last Edit: April 27, 2018, 16:08 by sulee »

Offline Petr Khomyakov

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 1290
  • Country: dk
  • Reputation: 25
    • View Profile
Re: Question about Transistor Calculation and input file
« Reply #1 on: April 28, 2018, 00:44 »
Please take a look at the 'Performing a gate scan' section in the tutorial at https://docs.quantumwise.com/tutorials/inas_p-i-n_junction/inas_p-i-n_junction.html.