# 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:
├── 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?