3
0
mirror of https://github.com/triqs/dft_tools synced 2024-06-30 00:44:34 +02:00
dft_tools/c++/plovasp/atm/dos_tetra3d.hpp
Oleg E. Peil 911f127789 Ported C-style 'dos_tetra' to C++
In order to wrap the ATM routines by Python using TRIQS wrapping
tools it is necessary to modify the interface to 'dos_tetra3d'.
The major changes involved replacing direct NumPy arrays with
TRIQS arrays which can be converted to Python arrays using library
tools.

Also, some small changes were necessary to port the functions
from C99 complex numbers to C++ style.

CMakeList is added to automatize building of the ATM library.
2016-03-09 18:55:15 +01:00

47 lines
1.8 KiB
C++

/*******************************************************************************
*
* This file is part of the ATM library.
*
* Copyright (C) 2010 by O. E. Peil
*
* TRIQS is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* TRIQS. If not, see <http://www.gnu.org/licenses/>.
*
*******************************************************************************/
#pragma once
#include <triqs/arrays.hpp>
using triqs::arrays::array;
using triqs::arrays::array_view;
/// DOS of a band by analytical tetrahedron method
///
/// Returns corner weights for all tetrahedra for a given band and real energy.
array_view<double, 2>
dos_tetra_weights_3d(array_view<double, 1> eigk, /// Band energies for each k-point
double en, /// Energy at which DOS weights are to be calculated
array_view<long, 2> itt /// Tetrahedra defined by k-point indices
);
//array<double, 2>
//dos_tetra_weights_3d(array<double, 1> eigk, /// Band energies for each k-point
// double e, /// Energy at which DOS weights are to be calculated
// array<long, 2> itt /// Tetrahedra defined by k-point indices
//);
int dos_corner_weights(double en, double *eigs, int *inds, double *ci);
int dos_tet_weights(double en, double *eigs, int *inds, double *ct);
int dos_reorder(double en, double *e, int *inds);