|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include "gtest/gtest.h"#include "source_io/module_parameter/parameter.h"#include "source_base/inverse_matrix.h"#include "source_base/module_external/lapack_connector.h"#include "source_pw/module_pwdft/structure_factor.h"#include "source_psi/psi.h"#include "source_hamilt/hamilt.h"#include "source_pw/module_pwdft/hamilt_pw.h"#include "../diago_cg.h"#include "../diago_iter_assist.h"#include "diago_mock.h"#include "mpi.h"#include "source_basis/module_pw/test/test_tool.h"#include <complex>#include <random>#include <ATen/core/tensor_map.h>Classes | |
| class | DiagoCGPrepare |
| class | DiagoCGFloatTest |
Macros | |
| #define | private public |
Functions | |
| void | lapackEigen (int &npw, std::vector< std::complex< float > > &hm, float *e, bool outtime=false) |
| TEST_P (DiagoCGFloatTest, RandomHamilt) | |
| INSTANTIATE_TEST_SUITE_P (VerifyCG, DiagoCGFloatTest, ::testing::Values(DiagoCGPrepare(10, 200, 0, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 200, 6, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 400, 8, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 600, 8, true, 1e-6, 300, 1e-0))) | |
| TEST (DiagoCGFloatTest, Hamilt) | |
| TEST (DiagoCGFloatTest, readH) | |
| int | main (int argc, char **argv) |
| #define private public |
| INSTANTIATE_TEST_SUITE_P | ( | VerifyCG | , |
| DiagoCGFloatTest | , | ||
| ::testing::Values(DiagoCGPrepare(10, 200, 0, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 200, 6, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 400, 8, true, 1e-6, 300, 1e-0), DiagoCGPrepare(10, 600, 8, true, 1e-6, 300, 1e-0)) | |||
| ) |
| void lapackEigen | ( | int & | npw, |
| std::vector< std::complex< float > > & | hm, | ||
| float * | e, | ||
| bool | outtime = false |
||
| ) |
Class Diago_CG is an approach for eigenvalue problems This unittest test the function Diago_CG::diag() for FPTYPE=float, Device=cpu with different examples.
Note: The test is passed when the eignvalues are closed to these calculated by LAPACK. It is used together with a header file diago_mock.h. The default Hermite matrix generated here is real symmetric, one can add an imaginary part by changing two commented out lines in diago_mock.h.
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
| TEST | ( | DiagoCGFloatTest | , |
| Hamilt | |||
| ) |
| TEST | ( | DiagoCGFloatTest | , |
| readH | |||
| ) |
| TEST_P | ( | DiagoCGFloatTest | , |
| RandomHamilt | |||
| ) |