Can Amset be used for 2D materials?

I am trying to calculate scattering rates for 2D materials, but I am getting some error. Can Amset be used to calculate the scattering rates for 2D materials?

Error

 Using orbital projections to approximate wavefunction overlap. This
   can result in inaccurate results. I hope you know what you are 
  doing.

  
                 █████╗ ███╗   ███╗███████╗███████╗████████╗
                ██╔══██╗████╗ ████║██╔════╝██╔════╝╚══██╔══╝
                ███████║██╔████╔██║███████╗█████╗     ██║
                ██╔══██║██║╚██╔╝██║╚════██║██╔══╝     ██║
                ██║  ██║██║ ╚═╝ ██║███████║███████╗   ██║
                ╚═╝  ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝   ╚═╝
  
                                                    v0.2.2
  
      A. Ganose, J. Park, A. Faghaninia, R. Woods-Robinson,
      A. Jain, in prep.
  
  
  amset starting on 29 Jan 2021 at 15:22

  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SETTINGS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Run parameters:
    ├── scattering_type: ['ADP']
    ├── doping: [6.e+18]
    ├── temperatures: [110 200 350 500 600 700 800]
    ├── soc: False
    ├── interpolation_factor: 5
    ├── wavefunction_coefficients: wavefunction.h5
    ├── use_projections: ['True']
    ├── static_dielectric: 
    │   [[ 11.12   0.00   0.00]
    │    [  0.00  11.12   0.00]
    │    [  0.00   0.00  11.12]]
    ├── elastic_constant: 
    │   [[   5.0    0.0    0.0    0.0    0.0    0.0]
    │    [   0.0    5.0    0.0    0.0    0.0    0.0]
    │    [   0.0    0.0    5.0    0.0    0.0    0.0]
    │    [   0.0    0.0    0.0    2.5    0.0    0.0]
    │    [   0.0    0.0    0.0    0.0    2.5    0.0]
    │    [   0.0    0.0    0.0    0.0    0.0    2.5]]
    ├── deformation_potential: (10, 14)
    ├── acceptor_charge: 1
    ├── donor_charge: 1
    ├── energy_cutoff: 1.5
    ├── fd_tol: 0.05
    ├── dos_estep: 0.01
    ├── symprec: 0.01
    ├── nworkers: -1
    ├── calculate_mobility: True
    ├── separate_mobility: True
    ├── mobility_rates_only: False
    ├── file_format: json
    ├── write_input: False
    ├── write_mesh: False
    ├── print_log: True
    └── write_log: True

  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STRUCTURE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Structure information:
    ├── formula: MoS₂
    ├── # sites: 6
    └── space group: P6₃/mmc

  Lattice:
    ├── a, b, c [Å]: 3.19, 3.19, 13.98
    └── α, β, γ [°]: 90, 90, 120

  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~ BAND STRUCTURE ~~~~~~~~~~~~~~~~~~~~~~~~~

  Input band structure information:
    ├── # bands: 60
    ├── # k-points: 96
    ├── Fermi level: 3.999 eV
    ├── spin polarized: False
    └── metallic: False

  Band gap:
    ├── indirect band gap: 1.315 eV
    ├── direct band gap: 1.669 eV
    └── direct k-point: [0.32, 0.32, 0.00]

  Valence band maximum:
    ├── energy: 3.999 eV
    ├── k-point: [0.00, 0.00, 0.00]
    └── band indices: 18

  Conduction band minimum:
    ├── energy: 5.314 eV
    ├── k-point: [0.32, 0.32, 0.00]
    └── band indices: 19

  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~ INTERPOLATION ~~~~~~~~~~~~~~~~~~~~~~~~~~

  Getting band interpolation coefficients
    └── time: 0.8721 s

  Interpolation parameters:
    ├── k-point mesh: 51x51x9
    └── energy cutoff: 1.5 eV

  Interpolating spin-up bands 15-26
    └── time: 0.1570 s

  Generating tetrahedron mesh vertices
    └── time: 0.1830 s

  Initializing tetrahedron band structure
    └── time: 1.0516 s

  Initializing momentum relaxation time factor calculator

  Desymmetrizing k-point mesh

  
    ERROR: amset exiting on 29 Jan 2021 at 15:22
  Traceback (most recent call last):
    File "GaAs03.py", line 32, in <module>
      amset_data = runner.run()
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/core/run.py", line 67, in run
      multiprocess=True,
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/memory_profiler.py", line 343, in memory_usage
      returned = f(*args, **kw)
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/core/run.py", line 110, in _run_wrapper
      amset_data, interpolation_time = self._do_interpolation()
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/core/run.py", line 213, in _do_interpolation
      symprec=self.settings["symprec"],
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/interpolation/projections.py", line 42, in 
  from_band_structure
      structure, kpoints, symprec=symprec, return_mapping=True, 
  time_reversal=True
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/electronic_structure/symmetry.py", line 103, in 
  expand_kpoints
      mesh = get_mesh_from_kpoint_diff(kpoints)
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/amset/electronic_structure/kpoints.py", line 171, in 
  get_mesh_from_kpoint_diff
      nz = 1 / np.min(np.diff(np.unique(kpoints[:, 2])))
    File "<__array_function__ internals>", line 6, in amin
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/numpy/core/fromnumeric.py", line 2831, in amin
      keepdims=keepdims, initial=initial, where=where)
    File "/home/user/miniconda3/lib/python3.7/site-
  packages/numpy/core/fromnumeric.py", line 87, in _wrapreduction
      return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
  ValueError: zero-size array to reduction operation minimum which

Hi,

The AMSET version you are using (v0.2.2) is very old, the latest is v0.4.8. I think upgrading to a more recent version will fix that error.

There are some issues with 2D materials still, i.e, the carrier concentrations and k-point mesh integration are performed for a 3D structure. In the future I will improve the support for 2D materials.

Best,
Alex

1 Like

Can Amset be used for 2D materials now? For example,How to deal with the bulk modulus for 3D and 2D materail?