From 796ca1c9a43b61ecede858da7bf51ef16fb53236 Mon Sep 17 00:00:00 2001 From: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:08:33 +0800 Subject: [PATCH 1/7] Feature: Autoset a finite magmon if STRU does not specify a finite one (#3453) * Autoset a finite magmon if STRU does not specify a finite one for nspin=4||npsin=4 calculations * fix 207_NO_KP_OHS_SPIN4 * fix 140_PW_15_SO * move AutoSet after ntype-cycle * modify stru.md * change result.ref of 207_NO_KP_OHS_SPIN4 --- docs/advanced/input_files/stru.md | 94 +++++++++++++++---- source/module_cell/read_atoms.cpp | 47 +++++++++- tests/integrate/140_PW_15_SO/result.ref | 6 +- .../207_NO_KP_OHS_SPIN4/data-1-H.ref | 52 +++++----- .../207_NO_KP_OHS_SPIN4/data-1-S.ref | 52 +++++----- .../data-HR-sparse_SPIN0.csr.ref | 2 +- .../integrate/207_NO_KP_OHS_SPIN4/result.ref | 6 +- 7 files changed, 178 insertions(+), 81 deletions(-) diff --git a/docs/advanced/input_files/stru.md b/docs/advanced/input_files/stru.md index 85cb5e8a17..193653237a 100644 --- a/docs/advanced/input_files/stru.md +++ b/docs/advanced/input_files/stru.md @@ -4,6 +4,13 @@ - [no latname](#no-latname) - [latname fcc](#latname-fcc) - [Structure of the file](#structure-of-the-file) + - [ATOMIC_SPECIES](#ATOMIC_SPECIES) + - [NUMERICAL_ORBITAL](#NUMERICAL_ORBITAL) + - [LATTICE_CONSTANT](#LATTICE_CONSTANT) + - [LATTICE_VECTORS](#LATTICE_VECTORS) + - [LATTICE_PARAMETERS](#LATTICE_PARAMETERS) + - [ATOMIC_POSITIONS](#ATOMIC_POSITIONS) + - [More Key Words](#More-Key-Words) ## Examples @@ -70,7 +77,7 @@ The `STRU` file contains several sections, and each section must start with a ke `ATOMIC_SPECIES`, `NUMERICAL_ORBITAL`, or `LATTICE_CONSTANT`, etc. to signify what type of information that comes below. -- ATOMIC_SPECIES +### ATOMIC_SPECIES This section provides information about the type of chemical elements contained the unit cell. Each line defines one type of element. The user should specify the name, the mass, and the pseudopotential file used for each element. The mass of the elment is only used in molecular dynamics simulations. For electronic-structure calculations, the actual mass value isn’t important. In the above example, we see information is provided for the element `Si`: @@ -92,7 +99,8 @@ information that comes below. 2. [SG15-ONCV](http://quantum-simulation.org/potentials/sg15_oncv/upf/). 3. [DOJO](http://www.pseudo-dojo.org/). 4. [BLPS](https://github.com/PrincetonUniversity/BLPSLibrary). -- NUMERICAL_ORBITAL + +### NUMERICAL_ORBITAL Numerical atomic orbitals are only needed for `LCAO` calculations. Thus this section will be neglected in calcultions with plane wave basis. In the above example, numerical atomic orbitals is specified for the element `Si`: @@ -102,13 +110,13 @@ information that comes below. ‘Si_gga_8au_60Ry_2s2p1d.orb’ is name of the numerical orbital file. Again here the path is not specified, which means that this file is located in the work directory. Numerical atomic orbitals may be downloaded from the [official website](http://abacus.ustc.edu.cn/pseudo/list.htm). -- LATTICE_CONSTANT +### LATTICE_CONSTANT The lattice constant of the system in unit of Bohr. -- LATTICE_VECTORS +### LATTICE_VECTORS The lattice vectors of the unit cell. It is a 3by3 matrix written in 3 lines. Please note that *the lattice vectors given here are scaled by the lattice constant*. This section must be removed if the type Bravais lattice is specified using the input parameter `latname`. (See [input parameters](input-main.md#latname).) -- LATTICE_PARAMETERS +### LATTICE_PARAMETERS This section is only relevant when `latname` (see [input parameters](input-main.md#latname)) is used to specify the Bravais lattice type. The example above is a fcc lattice, where no additional information except the lattice constant is required to determine the geometry of the lattice. @@ -216,7 +224,7 @@ information that comes below. v3 = (y*n, y*(l-n*m/sqrt(1-m^2)), y*fac) ``` where $fac=\frac{\sqrt{1+2*m*n*l-m^2 -n^2 -l^2 }}{\sqrt{1-m^2}}$ -- ATOMIC_POSITIONS +### ATOMIC_POSITIONS This section specifies the positions and other information of individual atoms. @@ -235,20 +243,66 @@ information that comes below. The last two lines in this example are the coordinates of atomic positions. There are three numbers in each line, which specifies the atomic positions, following by other parameters marked by keywords. - Several other parameters could be defined after the atom position using key word : +### More Key Words + + Several other parameters could be defined after the atom position using key words : - `m` or NO key word: three numbers, which take value in 0 or 1, control how the atom move in geometry relaxation calculations. In example below, the numbers `0 0 0` following the coordinates of the first atom means this atom are *not allowed* to move in all three directions, and the numbers `1 1 1` following the coordinates of the second atom means this atom *can* move in all three directions. - `v` or `vel` or `velocity`: set the three components of initial velocity of atoms in geometry relaxation calculations(e. g. `v 1.0 1.0 1.0`). - - `mag` or `magmom` : set the start magnetization for each atom. In colinear case only one number should be given. In non-colinear case one have two choice:either set one number for the norm of magnetization here and specify two polar angle later(e. g. see below), or set three number for the xyz commponent of magnetization here (e. g. `mag 0.0 0.0 1.0`). Note that if this parameter is set, the initial magnetic moment setting in the second line will be invalid. - - `angle1`: in non-colinear case, specify the angle between c-axis and real spin, in angle measure instead of radian measure - - `angle2`: in non-colinear case, specify angle between a-axis and real spin in projection in ab-plane , in angle measure instead of radian measure - - e.g.: - - ``` - Fe - 1.0 - 2 - 0.0 0.0 0.0 m 0 0 0 mag 1.0 angle1 90 angle2 0 - 0.5 0.5 0.5 m 1 1 1 mag 1.0 angle1 90 angle2 180 - ``` + - `mag` or `magmom` : set the start magnetization for each atom. In colinear case only one number should be given. In non-colinear case one have two choice:either set one number for the norm of magnetization here and specify two polar angle later(e. g. see below), or set three number for the xyz commponent of magnetization here (e. g. `mag 0.0 0.0 1.0`). Note that if this parameter is set, the initial magnetic moment setting in the second line will be overrided. + - `angle1`: in non-colinear case, specify the angle between c-axis and real spin, in angle measure instead of radian measure + - `angle2`: in non-colinear case, specify angle between a-axis and real spin in projection in ab-plane , in angle measure instead of radian measure + + e.g.: + + ``` + Fe + 1.0 + 2 + 0.0 0.0 0.0 m 0 0 0 mag 1.0 angle1 90 angle2 0 + 0.5 0.5 0.5 m 1 1 1 mag 1.0 angle1 90 angle2 180 + ``` + + - Default: If users do not specalize a finite magnetic moment for all atoms in a magnetic calculations (`nspin==2 || nspin == 4`), e.g.: + ``` + Fe + 0.0 + 2 + 0.0 0.0 0.0 m 0 0 0 + 0.5 0.5 0.5 m 1 1 1 + + O + 0.0 + 2 + 0.0 0.0 0.0 m 0 0 0 + 0.5 0.5 0.5 m 1 1 1 + ``` + For `nspin==2`, we will autoset atomic magmon is `1.0`: + ``` + Fe + 1.0 + 2 + 0.0 0.0 0.0 m 0 0 0 + 0.5 0.5 0.5 m 1 1 1 + + Fe + 1.0 + 2 + 0.0 0.0 0.0 m 0 0 0 + 0.5 0.5 0.5 m 1 1 1 + ``` + For `nspin==4`, we will autoset atomic magmon as follow: + ``` + Fe + 0.0 + 2 + 0.0 0.0 0.0 m 0 0 0 mag 1 1 1 + 0.5 0.5 0.5 m 1 1 1 mag 1 1 1 + + O + 0.0 + 2 + 0.0 0.0 0.0 m 0 0 0 mag 1 1 1 + 0.5 0.5 0.5 m 1 1 1 mag 1 1 1 + ``` + However, this autoset will not be vaild once `STRU` specalize a finite magnetic for any single atom. \ No newline at end of file diff --git a/source/module_cell/read_atoms.cpp b/source/module_cell/read_atoms.cpp index 5c40b4850c..dc517bccd7 100644 --- a/source/module_cell/read_atoms.cpp +++ b/source/module_cell/read_atoms.cpp @@ -709,7 +709,6 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn ModuleBase::GlobalFunc::OUT(ofs_running, ss.str(),atoms[it].mag[ia]); } } - if(Coordinate=="Direct") { @@ -804,7 +803,51 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn magnet.start_magnetization[it] = 0.0; } } // end for ntype - } // end scan_begin + // Start Autoset magnetization + // defaultly set a finite magnetization if magnetization is not specified + int autoset_mag = 1; + for (int it = 0;it < ntype; it++) + { + for (int ia = 0;ia < this->atoms[it].na; ia++) + { + if(std::abs(atoms[it].mag[ia]) > 1e-5) + { + autoset_mag = 0; + break; + } + } + } + if (autoset_mag) + { + if(GlobalV::NSPIN==4) + { + for (int it = 0;it < ntype; it++) + { + for (int ia = 0;ia < this->atoms[it].na; ia++) + { + atoms[it].m_loc_[ia].x = 1.0; + atoms[it].m_loc_[ia].y = 1.0; + atoms[it].m_loc_[ia].z = 1.0; + atoms[it].mag[ia] = sqrt(pow(atoms[it].m_loc_[ia].x,2)+pow(atoms[it].m_loc_[ia].y,2)+pow(atoms[it].m_loc_[ia].z,2)); + ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0, 1.0, 1.0); + } + } + } + else if(GlobalV::NSPIN==2) + { + for (int it = 0;it < ntype; it++) + { + for (int ia = 0;ia < this->atoms[it].na; ia++) + { + atoms[it].mag[ia] = 1.0; + atoms[it].m_loc_[ia].x = atoms[it].mag[ia]; + ModuleBase::GlobalFunc::OUT(ofs_running,"Autoset magnetism for this atom", 1.0); + } + } + } + } + // End Autoset magnetization + } // end scan_begin //check if any atom can move in MD if(!this->if_atoms_can_move() && GlobalV::CALCULATION=="md" && GlobalV::ESOLVER_TYPE!="tddft") diff --git a/tests/integrate/140_PW_15_SO/result.ref b/tests/integrate/140_PW_15_SO/result.ref index 843397d5b3..5bb6acd1ff 100644 --- a/tests/integrate/140_PW_15_SO/result.ref +++ b/tests/integrate/140_PW_15_SO/result.ref @@ -1,6 +1,6 @@ -etotref -1940.236685076045 -etotperatomref -970.1183425380 +etotref -1940.700224652469 +etotperatomref -970.3501123262 pointgroupref T_d spacegroupref T_d nksibzref 1 -totaltimeref 2.4329 +totaltimeref 5.49 diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref index 73146a3322..a7b392c661 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref @@ -1,26 +1,26 @@ -26 (-0.977768,0) (0,0) (0.0260386,0) (0,0) (1.52689e-16,0) (0,0) (3.69781e-17,0) (0,0) (4.9787e-16,0) (0,0) (1.09157e-16,0) (0,0) (2.41059e-16,0) (0,0) (1.42007e-16,0) (0,0) (-2.34059e-16,0) (0,0) (-7.64268e-17,0) (0,0) (-5.54798e-17,0) (0,0) (-3.97143e-16,0) (0,0) (4.84659e-16,0) (0,0) - (-0.977768,0) (0,0) (0.0260386,0) (0,0) (1.52689e-16,0) (0,0) (3.69781e-17,0) (0,0) (4.9787e-16,0) (0,0) (1.09157e-16,0) (0,0) (2.41059e-16,0) (0,0) (1.42007e-16,0) (0,0) (-2.34059e-16,0) (0,0) (-7.64268e-17,0) (0,0) (-5.54798e-17,0) (0,0) (-3.97143e-16,0) (0,0) (4.84659e-16,0) - (0.599514,0) (0,0) (4.48199e-17,0) (0,0) (-8.05833e-17,0) (0,0) (5.71036e-16,0) (0,0) (1.52923e-16,0) (0,0) (3.28513e-17,0) (0,0) (3.29706e-16,0) (0,0) (-6.46456e-17,0) (0,0) (-6.54344e-17,0) (0,0) (-1.41455e-17,0) (0,0) (-1.75966e-16,0) (0,0) (2.5926e-17,0) (0,0) - (0.599514,0) (0,0) (4.48199e-17,0) (0,0) (-8.05833e-17,0) (0,0) (5.71036e-16,0) (0,0) (1.52923e-16,0) (0,0) (3.28513e-17,0) (0,0) (3.29706e-16,0) (0,0) (-6.46456e-17,0) (0,0) (-6.54344e-17,0) (0,0) (-1.41455e-17,0) (0,0) (-1.75966e-16,0) (0,0) (2.5926e-17,0) - (-0.348876,0) (0,0) (3.79943e-17,0) (0,0) (3.47418e-17,0) (0,0) (0.0796737,0) (0,0) (-2.75005e-17,0) (0,0) (-6.87055e-17,0) (0,0) (8.25603e-17,0) (0,0) (1.59483e-16,0) (0,0) (-7.93382e-17,0) (0,0) (-4.15221e-17,0) (0,0) (-3.47871e-17,0) (0,0) - (-0.348876,0) (0,0) (3.79943e-17,0) (0,0) (3.47418e-17,0) (0,0) (0.0796737,0) (0,0) (-2.75005e-17,0) (0,0) (-6.87055e-17,0) (0,0) (8.25603e-17,0) (0,0) (1.59483e-16,0) (0,0) (-7.93382e-17,0) (0,0) (-4.15221e-17,0) (0,0) (-3.47871e-17,0) - (-0.348876,0) (0,0) (-1.60099e-16,0) (0,0) (-1.34119e-17,0) (0,0) (0.0796737,0) (0,0) (-1.33262e-16,0) (0,0) (1.03717e-16,0) (0,0) (-6.69515e-18,0) (0,0) (-4.17271e-17,0) (0,0) (1.36596e-16,0) (0,0) (-2.17559e-16,0) (0,0) - (-0.348876,0) (0,0) (-1.60099e-16,0) (0,0) (-1.34119e-17,0) (0,0) (0.0796737,0) (0,0) (-1.33262e-16,0) (0,0) (1.03717e-16,0) (0,0) (-6.69515e-18,0) (0,0) (-4.17271e-17,0) (0,0) (1.36596e-16,0) (0,0) (-2.17559e-16,0) - (-0.348876,0) (0,0) (-4.09489e-17,0) (0,0) (-2.22397e-17,0) (0,0) (0.0796737,0) (0,0) (1.0045e-16,0) (0,0) (-2.09114e-17,0) (0,0) (-8.32239e-17,0) (0,0) (7.99308e-16,0) (0,0) (-9.46068e-17,0) (0,0) - (-0.348876,0) (0,0) (-4.09489e-17,0) (0,0) (-2.22397e-17,0) (0,0) (0.0796737,0) (0,0) (1.0045e-16,0) (0,0) (-2.09114e-17,0) (0,0) (-8.32239e-17,0) (0,0) (7.99308e-16,0) (0,0) (-9.46068e-17,0) - (0.949625,0) (0,0) (-4.43899e-17,0) (0,0) (-1.13814e-16,0) (0,0) (1.54616e-16,0) (0,0) (3.5284e-16,0) (0,0) (-1.58334e-16,0) (0,0) (-1.98309e-17,0) (0,0) (1.05417e-17,0) (0,0) - (0.949625,0) (0,0) (-4.43899e-17,0) (0,0) (-1.13814e-16,0) (0,0) (1.54616e-16,0) (0,0) (3.5284e-16,0) (0,0) (-1.58334e-16,0) (0,0) (-1.98309e-17,0) (0,0) (1.05417e-17,0) - (0.949625,0) (0,0) (-1.72876e-16,0) (0,0) (1.01454e-16,0) (0,0) (-2.25977e-17,0) (0,0) (4.47031e-18,0) (0,0) (-3.39518e-16,0) (0,0) (9.92858e-17,0) (0,0) - (0.949625,0) (0,0) (-1.72876e-16,0) (0,0) (1.01454e-16,0) (0,0) (-2.25977e-17,0) (0,0) (4.47031e-18,0) (0,0) (-3.39518e-16,0) (0,0) (9.92858e-17,0) - (0.949625,0) (0,0) (1.19533e-17,0) (0,0) (-7.456e-18,0) (0,0) (-3.13838e-17,0) (0,0) (1.81712e-16,0) (0,0) (1.26337e-16,0) (0,0) - (0.949625,0) (0,0) (1.19533e-17,0) (0,0) (-7.456e-18,0) (0,0) (-3.13838e-17,0) (0,0) (1.81712e-16,0) (0,0) (1.26337e-16,0) - (1.69647,0) (0,0) (2.4458e-17,0) (0,0) (2.55026e-18,0) (0,0) (-1.63443e-17,0) (0,0) (3.95666e-17,0) (0,0) - (1.69647,0) (0,0) (2.4458e-17,0) (0,0) (2.55026e-18,0) (0,0) (-1.63443e-17,0) (0,0) (3.95666e-17,0) - (1.6968,0) (0,0) (-1.5321e-16,0) (0,0) (3.10594e-18,0) (0,0) (2.105e-17,0) (0,0) - (1.6968,0) (0,0) (-1.5321e-16,0) (0,0) (3.10594e-18,0) (0,0) (2.105e-17,0) - (1.6968,0) (0,0) (7.03381e-18,0) (0,0) (-4.86794e-17,0) (0,0) - (1.6968,0) (0,0) (7.03381e-18,0) (0,0) (-4.86794e-17,0) - (1.69647,0) (0,0) (-8.34836e-17,0) (0,0) - (1.69647,0) (0,0) (-8.34836e-17,0) - (1.6968,0) (0,0) - (1.6968,0) +26 (-1.04983e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (7.32143e-03,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.77636e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.35735e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (4.93797e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-6.66134e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.36995e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.37494e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.49800e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.28994e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.64581e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.22874e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.61628e-16,0.00000e+00) (0.00000e+00,0.00000e+00) + (-8.30678e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (6.27107e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.33227e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.83386e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (4.41504e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-8.88178e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.01495e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.55430e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.77556e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.54677e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.69583e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.80360e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.43594e-16,0.00000e+00) + (5.68439e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.44169e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (1.03393e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (2.31830e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.22125e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (5.19812e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.00668e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.63678e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.03232e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.91746e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.32251e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.31438e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (6.65870e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.60822e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (9.93143e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.34023e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (7.21645e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.08005e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.03830e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.49800e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.03106e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.38525e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.20683e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.48402e-17,0.00000e+00) + (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.78878e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.57279e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (5.52233e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.32843e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.62809e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (6.20411e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.21302e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.95480e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-8.40826e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.09129e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (6.07195e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.71428e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.35983e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (4.48000e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.46486e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.23087e-17,0.00000e+00) + (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.69269e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.51408e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (1.08873e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.46251e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.01725e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.84992e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.18236e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.82338e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.08120e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (8.83717e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (9.76977e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.16323e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.92058e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.26757e-17,0.00000e+00) + (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (1.60104e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.23619e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (4.98403e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.97380e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.27725e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.68643e-16,0.00000e+00) (0.00000e+00,0.00000e+00) + (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (1.25271e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.01383e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (5.69296e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.20652e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.42751e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.94396e-16,0.00000e+00) + (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.20372e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (3.15693e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.41559e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.15610e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.04720e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.99124e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (2.17033e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (2.68347e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.15433e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.13230e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.50021e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.47211e-17,0.00000e+00) + (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (9.15792e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (6.27584e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.66533e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.03440e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.16391e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.20918e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.45753e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (6.38690e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.11022e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.42915e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.19165e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.72492e-17,0.00000e+00) + (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.07343e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.29705e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.66533e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.76244e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.04204e-16,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.17633e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.77870e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.86183e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.20425e-16,0.00000e+00) + (1.63832e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.25363e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.80465e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.01983e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.87552e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.81226e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.49139e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.03262e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.00558e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.43831e-17,0.00000e+00) + (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (3.25137e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.34556e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.31664e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.81311e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (3.08296e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.23597e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.30228e-17,0.00000e+00) + (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.40179e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (8.25406e-16,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.81311e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.27444e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (7.73565e-16,0.00000e+00) + (1.63832e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (9.45072e-17,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.81226e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (8.88586e-17,0.00000e+00) + (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.81311e+00,0.00000e+00) diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref index 3d3ba3482c..25aba5a92d 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref @@ -1,26 +1,26 @@ -26 (1,0) (0,0) (6.88546e-15,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (6.88546e-15,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (-1.54389e-14,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) (0,0) - (1,0) (0,0) (0,0) - (1,0) (0,0) - (1,0) +26 (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (6.88546e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (6.88546e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) + (1.00000e+00,0.00000e+00) diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/data-HR-sparse_SPIN0.csr.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/data-HR-sparse_SPIN0.csr.ref index 62b047803f..6ecaf8e1d0 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/data-HR-sparse_SPIN0.csr.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/data-HR-sparse_SPIN0.csr.ref @@ -2,6 +2,6 @@ STEP: 0 Matrix Dimension of H(R): 26 Matrix number of H(R): 1 0 0 0 42 - (-9.77768381e-01,0.00000000e+00) (2.60385755e-02,0.00000000e+00) (-9.77768381e-01,0.00000000e+00) (2.60385755e-02,0.00000000e+00) (2.60385755e-02,0.00000000e+00) (5.99513707e-01,0.00000000e+00) (2.60385755e-02,0.00000000e+00) (5.99513707e-01,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (-3.48875823e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (7.96737013e-02,0.00000000e+00) (9.49624513e-01,0.00000000e+00) (1.69647134e+00,0.00000000e+00) (1.69647134e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) (1.69647134e+00,0.00000000e+00) (1.69647134e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) (1.69679644e+00,0.00000000e+00) + (-1.04982955e+00,0.00000000e+00) (7.32143243e-03,0.00000000e+00) (-8.30677731e-01,0.00000000e+00) (6.27107181e-02,0.00000000e+00) (7.32143243e-03,0.00000000e+00) (5.68438617e-01,0.00000000e+00) (6.27107181e-02,0.00000000e+00) (6.65870172e-01,0.00000000e+00) (-4.21502271e-01,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (-2.00195327e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (-4.21502271e-01,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (-2.00195327e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (-4.21502271e-01,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (-2.00195327e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (8.94484515e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (1.06712272e+00,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (8.94484515e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (1.06712272e+00,0.00000000e+00) (5.00031210e-02,0.00000000e+00) (8.94484515e-01,0.00000000e+00) (1.42407942e-01,0.00000000e+00) (1.06712272e+00,0.00000000e+00) (1.63832203e+00,0.00000000e+00) (1.81226042e+00,0.00000000e+00) (1.63894284e+00,0.00000000e+00) (1.81310832e+00,0.00000000e+00) (1.63894284e+00,0.00000000e+00) (1.81310832e+00,0.00000000e+00) (1.63832203e+00,0.00000000e+00) (1.81226042e+00,0.00000000e+00) (1.63894284e+00,0.00000000e+00) (1.81310832e+00,0.00000000e+00) 0 2 1 3 0 2 1 3 4 10 5 11 6 12 7 13 8 14 9 15 4 10 5 11 6 12 7 13 8 14 9 15 16 17 18 19 20 21 22 23 24 25 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 33 34 35 36 37 38 39 40 41 42 diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/result.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/result.ref index 73e06aef64..7ecb90aeeb 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/result.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/result.ref @@ -1,7 +1,7 @@ -etotref -145.7915076086667 -etotperatomref -145.7915076087 +etotref -147.1491473781199 +etotperatomref -147.1491473781 CompareH_pass 0 CompareS_pass 0 CompareSR_pass 0 ComparerR_pass 0 -totaltimeref 1.5738 +totaltimeref 4.94 From cf2a5bb92ed7be9a7b1ae0ee8f23bba49abff74c Mon Sep 17 00:00:00 2001 From: cyFortneu <33978601+maki49@users.noreply.github.com> Date: Wed, 10 Jan 2024 13:49:41 +0800 Subject: [PATCH 2/7] k-lattice is only valid for MP (#3442) --- source/module_cell/klist.cpp | 62 ++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/source/module_cell/klist.cpp b/source/module_cell/klist.cpp index 78bee98226..52bc42440d 100644 --- a/source/module_cell/klist.cpp +++ b/source/module_cell/klist.cpp @@ -588,10 +588,16 @@ void K_Vectors::ibz_kpoint(const ModuleSymmetry::Symmetry &symm, bool use_symm,s ModuleBase::Vector3 gb1(ucell.G.e11, ucell.G.e12, ucell.G.e13); ModuleBase::Vector3 gb2(ucell.G.e21, ucell.G.e22, ucell.G.e23); ModuleBase::Vector3 gb3(ucell.G.e31, ucell.G.e32, ucell.G.e33); - ModuleBase::Vector3 gk1(gb1.x / nmp[0], gb1.y / nmp[0], gb1.z / nmp[0]); - ModuleBase::Vector3 gk2(gb2.x / nmp[1], gb2.y / nmp[1], gb2.z / nmp[1]); - ModuleBase::Vector3 gk3(gb3.x / nmp[2], gb3.y / nmp[2], gb3.z / nmp[2]); - ModuleBase::Matrix3 gk(gk1.x, gk1.y, gk1.z, gk2.x, gk2.y, gk2.z, gk3.x, gk3.y, gk3.z); + ModuleBase::Vector3 gk1, gk2, gk3; + ModuleBase::Matrix3 gk; + if (this->is_mp) + { + gk1 = ModuleBase::Vector3(gb1.x / nmp[0], gb1.y / nmp[0], gb1.z / nmp[0]); + gk2 = ModuleBase::Vector3(gb2.x / nmp[1], gb2.y / nmp[1], gb2.z / nmp[1]); + gk3 = ModuleBase::Vector3(gb3.x / nmp[2], gb3.y / nmp[2], gb3.z / nmp[2]); + gk = ModuleBase::Matrix3(gk1.x, gk1.y, gk1.z, gk2.x, gk2.y, gk2.z, gk3.x, gk3.y, gk3.z); + } + //=============================================== // search in all space group operations @@ -646,13 +652,14 @@ void K_Vectors::ibz_kpoint(const ModuleSymmetry::Symmetry &symm, bool use_symm,s match = false; return; } - - symm.lattice_type(gk1, gk2, gk3, gk01, gk02, gk03, bk_const, bk0_const, bkbrav, bkbrav_name, ucell.atoms, false, nullptr); - GlobalV::ofs_running<<"(for k-lattice: )"<is_mp) + { + symm.lattice_type(gk1, gk2, gk3, gk01, gk02, gk03, bk_const, bk0_const, bkbrav, bkbrav_name, ucell.atoms, false, nullptr); + GlobalV::ofs_running << "(for k-lattice: )" << std::endl; + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "BRAVAIS TYPE", bkbrav); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "BRAVAIS LATTICE NAME", bkbrav_name); + ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "ibrav", bkbrav); + } // point-group analysis of reciprocal lattice ModuleBase::Matrix3 bsymop[48]; int bnop = 0; @@ -709,11 +716,11 @@ void K_Vectors::ibz_kpoint(const ModuleSymmetry::Symmetry &symm, bool use_symm,s } // convert kgmatrix to k-lattice - ModuleBase::Matrix3* kkmatrix = new ModuleBase::Matrix3 [nrotkm]; - symm.gmatrix_convert(kgmatrix.data(), kkmatrix, nrotkm, ucell.G, gk); + ModuleBase::Matrix3* kkmatrix = new ModuleBase::Matrix3[nrotkm]; + if (this->is_mp)symm.gmatrix_convert(kgmatrix.data(), kkmatrix, nrotkm, ucell.G, gk); // direct coordinates of k-points in k-lattice std::vector> kvec_d_k(nkstot); - for (int i=0;iis_mp) for (int i = 0;i < nkstot;++i) kvec_d_k[i] = kvec_d[i] * ucell.G * gk.Inverse(); // use operation : kgmatrix to find // the new set kvec_d : ir_kpt @@ -775,20 +782,19 @@ void K_Vectors::ibz_kpoint(const ModuleSymmetry::Symmetry &symm, bool use_symm,s kvec_rot = kvec_d[i] * kgmatrix[j]; //wrong for total energy, but correct for nonlocal force. //kvec_rot = kgmatrix[j] * kvec_d[i]; //correct for total energy, but wrong for nonlocal force. restrict_kpt(kvec_rot); - - kvec_rot_k = kvec_d_k[i] * kkmatrix[j]; //k-lattice rotation - kvec_rot_k = kvec_rot_k * gk * ucell.G.Inverse(); //convert to recip lattice - restrict_kpt(kvec_rot_k); - - assert(symm.equal(kvec_rot.x, kvec_rot_k.x)); - assert(symm.equal(kvec_rot.y, kvec_rot_k.y)); - assert(symm.equal(kvec_rot.z, kvec_rot_k.z)); - // std::cout << "\n kvec_rot (in recip) = " << kvec_rot.x << " " << kvec_rot.y << " " << kvec_rot.z; - // std::cout << "\n kvec_rot(k to recip)= " << kvec_rot_k.x << " " << kvec_rot_k.y << " " << kvec_rot_k.z; - kvec_rot_k = kvec_rot_k * ucell.G * gk.Inverse(); //convert back to k-latice - -// std::cout << "\n kvec_rot = " << kvec_rot.x << " " << kvec_rot.y << " " << kvec_rot.z; - + if (this->is_mp) + { + kvec_rot_k = kvec_d_k[i] * kkmatrix[j]; //k-lattice rotation + kvec_rot_k = kvec_rot_k * gk * ucell.G.Inverse(); //convert to recip lattice + restrict_kpt(kvec_rot_k); + + assert(symm.equal(kvec_rot.x, kvec_rot_k.x)); + assert(symm.equal(kvec_rot.y, kvec_rot_k.y)); + assert(symm.equal(kvec_rot.z, kvec_rot_k.z)); + // std::cout << "\n kvec_rot (in recip) = " << kvec_rot.x << " " << kvec_rot.y << " " << kvec_rot.z; + // std::cout << "\n kvec_rot(k to recip)= " << kvec_rot_k.x << " " << kvec_rot_k.y << " " << kvec_rot_k.z; + kvec_rot_k = kvec_rot_k * ucell.G * gk.Inverse(); //convert back to k-latice + } for (int k=0; k< this->nkstot_ibz; ++k) { if ( symm.equal(kvec_rot.x, this->kvec_d_ibz[k].x) && From 3ac28ab5d912b3723952c547e6909967f1dd3be3 Mon Sep 17 00:00:00 2001 From: kirk0830 <67682086+kirk0830@users.noreply.github.com> Date: Wed, 10 Jan 2024 13:58:31 +0800 Subject: [PATCH 3/7] Feature: support list input parse and multiple values for `bessel_nao_rcut` (#3454) * support list input of bessel_nao_rcut * use type_trais to do type conversion * turn to use std::transform to iterate vector instead of loop one-by-one --- source/module_esolver/esolver_ks_pw.cpp | 23 +++- source/module_io/input.cpp | 33 +++++- source/module_io/input.h | 16 ++- source/module_io/test/input_test.cpp | 133 +++++++++++++++++++++++ source/module_io/test/support/INPUT_list | 13 +++ 5 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 source/module_io/test/support/INPUT_list diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index b1a32282f6..294f1636f7 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -1065,7 +1065,28 @@ void ESolver_KS_PW::postprocess() if (winput::out_spillage <= 2) { Numerical_Basis numerical_basis; - numerical_basis.output_overlap(this->psi[0], this->sf, this->kv, this->pw_wfc); + if(INPUT.bessel_nao_rcuts.size() == 1) + { + numerical_basis.output_overlap(this->psi[0], this->sf, this->kv, this->pw_wfc); + } + else + { + for(int i = 0; i < INPUT.bessel_nao_rcuts.size(); i++) + { + if(GlobalV::MY_RANK == 0) {std::cout << "update value: bessel_nao_rcut <- " << std::fixed << INPUT.bessel_nao_rcuts[i] << " a.u." << std::endl;} + INPUT.bessel_nao_rcut = INPUT.bessel_nao_rcuts[i]; + numerical_basis.output_overlap(this->psi[0], this->sf, this->kv, this->pw_wfc); + std::string old_fname_header = winput::spillage_outdir + "/" + "orb_matrix."; + std::string new_fname_header = winput::spillage_outdir + "/" + "orb_matrix_rcut" + std::to_string(int(INPUT.bessel_nao_rcut)) + "deriv"; + for(int derivative_order = 0; derivative_order <= 1; derivative_order++) + { + // rename generated files + std::string old_fname = old_fname_header + std::to_string(derivative_order) + ".dat"; + std::string new_fname = new_fname_header + std::to_string(derivative_order) + ".dat"; + std::rename(old_fname.c_str(), new_fname.c_str()); + } + } + } ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "BASIS OVERLAP (Q and S) GENERATION."); } } diff --git a/source/module_io/input.cpp b/source/module_io/input.cpp index be8e87a011..f5c93034b3 100644 --- a/source/module_io/input.cpp +++ b/source/module_io/input.cpp @@ -2203,7 +2203,9 @@ bool Input::Read(const std::string& fn) } else if (strcmp("bessel_nao_rcut", word) == 0) { - read_value(ifs, bessel_nao_rcut); + //read_value(ifs, bessel_nao_rcut); + read_value2stdvector(ifs, bessel_nao_rcuts); + bessel_nao_rcut = bessel_nao_rcuts[0]; // also compatible with old input file } else if (strcmp("bessel_nao_tolerence", word) == 0) { @@ -3563,6 +3565,12 @@ void Input::Bcast() Parallel_Common::bcast_bool(bessel_nao_smooth); Parallel_Common::bcast_double(bessel_nao_sigma); Parallel_Common::bcast_string(bessel_nao_ecut); + /* newly support vector/list input of bessel_nao_rcut */ + int nrcut = bessel_nao_rcuts.size(); + Parallel_Common::bcast_int(nrcut); + if (GlobalV::MY_RANK != 0) bessel_nao_rcuts.resize(nrcut); + Parallel_Common::bcast_double(bessel_nao_rcuts.data(), nrcut); + /* end */ Parallel_Common::bcast_double(bessel_nao_rcut); Parallel_Common::bcast_double(bessel_nao_tolerence); Parallel_Common::bcast_int(bessel_descriptor_lmax); @@ -4223,6 +4231,29 @@ void Input::strtolower(char* sa, char* sb) sb[len] = '\0'; } +template +void Input::read_value2stdvector(std::ifstream& ifs, std::vector& var) +{ + // reset var + var.clear(); var.shrink_to_fit(); + std::string line; + std::getline(ifs, line); // read the whole rest of line + line = (line.find('#') == std::string::npos) ? line : line.substr(0, line.find('#')); // remove comments + std::vector tmp; + std::string::size_type start = 0, end = 0; + while ((start = line.find_first_not_of(" \t\n", end)) != std::string::npos) // find the first not of delimiters but not reaches the end + { + end = line.find_first_of(" \t\n", start); // find the first of delimiters starting from start pos + tmp.push_back(line.substr(start, end - start)); // push back the substring + } + var.resize(tmp.size()); + // capture "this"'s member function cast_string and iterate from tmp.begin() to tmp.end(), transform to var.begin() + std::transform(tmp.begin(), tmp.end(), var.begin(), [this](const std::string& s) { return cast_string(s); }); +} +template void Input::read_value2stdvector(std::ifstream& ifs, std::vector& var); +template void Input::read_value2stdvector(std::ifstream& ifs, std::vector& var); +template void Input::read_value2stdvector(std::ifstream& ifs, std::vector& var); + // Conut how many types of atoms are listed in STRU int Input::count_ntype(const std::string& fn) { diff --git a/source/module_io/input.h b/source/module_io/input.h index 46ceddcb8e..b796976417 100644 --- a/source/module_io/input.h +++ b/source/module_io/input.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "module_base/vector3.h" #include "module_md/md_para.h" @@ -546,6 +547,7 @@ class Input double bessel_nao_sigma; // spherical bessel smearing_sigma std::string bessel_nao_ecut; // energy cutoff for spherical bessel functions(Ry) double bessel_nao_rcut; // radial cutoff for spherical bessel functions(a.u.) + std::vector bessel_nao_rcuts; double bessel_nao_tolerence; // tolerence for spherical bessel root // the following are used when generating jle.orb int bessel_descriptor_lmax; // lmax used in descriptor @@ -628,7 +630,7 @@ class Input { ifs >> var; std::string line; - getline(ifs, line); + getline(ifs, line); // read the rest of the line, directly discard it. return; } void read_kspacing(std::ifstream &ifs) @@ -658,6 +660,18 @@ class Input // << std::endl; }; + /* I hope this function would be more and more useful if want to support + vector/list of input */ + template + void read_value2stdvector(std::ifstream& ifs, std::vector& var); + template + typename std::enable_if::value, T>::type cast_string(const std::string& str) { return std::stod(str); } + template + typename std::enable_if::value, T>::type cast_string(const std::string& str) { return std::stoi(str); } + template + typename std::enable_if::value, T>::type cast_string(const std::string& str) { return (str == "true" || str == "1"); } + template + typename std::enable_if::value, T>::type cast_string(const std::string& str) { return str; } void strtolower(char *sa, char *sb); void read_bool(std::ifstream &ifs, bool &var); }; diff --git a/source/module_io/test/input_test.cpp b/source/module_io/test/input_test.cpp index 9c3c2b42a6..50c8ff1475 100644 --- a/source/module_io/test/input_test.cpp +++ b/source/module_io/test/input_test.cpp @@ -1646,7 +1646,140 @@ TEST_F(InputTest, Check) */ } +bool strcmp_inbuilt(const std::string& str1, const std::string& str2) +{ + if(str1.size() != str2.size()) + return false; + for(int i=0; i value; + while(!ifs.eof()) + { + ifs >> word; + if(strcmp_inbuilt(word, "bessel_nao_rcut_case0")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 1); + EXPECT_EQ(value[0], 7); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case1")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 1); + EXPECT_EQ(value[0], 7); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case2")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 1); + EXPECT_EQ(value[0], 7); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case3")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 1); + EXPECT_EQ(value[0], 7); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case4")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 1); + EXPECT_EQ(value[0], 7); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case5")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 4); + EXPECT_EQ(value[0], 7); + EXPECT_EQ(value[1], 8); + EXPECT_EQ(value[2], 9); + EXPECT_EQ(value[3], 10); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case6")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 4); + EXPECT_EQ(value[0], 7); + EXPECT_EQ(value[1], 8); + EXPECT_EQ(value[2], 9); + EXPECT_EQ(value[3], 10); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case7")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 4); + EXPECT_EQ(value[0], 7); + EXPECT_EQ(value[1], 8); + EXPECT_EQ(value[2], 9); + EXPECT_EQ(value[3], 10); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case8")) + { + value.clear(); value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, value); + EXPECT_EQ(value.size(), 4); + EXPECT_EQ(value[0], 7); + EXPECT_EQ(value[1], 8); + EXPECT_EQ(value[2], 9); + EXPECT_EQ(value[3], 10); + } + std::vector str_value; + if(strcmp_inbuilt(word, "bessel_nao_rcut_case9")) + { + str_value.clear(); str_value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, str_value); + EXPECT_EQ(str_value.size(), 1); + EXPECT_EQ(str_value[0], "string1"); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case10")) + { + str_value.clear(); str_value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, str_value); + EXPECT_EQ(str_value.size(), 4); + EXPECT_EQ(str_value[0], "string1"); + EXPECT_EQ(str_value[1], "string2"); + EXPECT_EQ(str_value[2], "string3"); + EXPECT_EQ(str_value[3], "string4"); + } + std::vector double_value; + if(strcmp_inbuilt(word, "bessel_nao_rcut_case11")) + { + double_value.clear(); double_value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, double_value); + EXPECT_EQ(double_value.size(), 1); + EXPECT_EQ(double_value[0], 1.23456789); + } + if(strcmp_inbuilt(word, "bessel_nao_rcut_case12")) + { + double_value.clear(); double_value.shrink_to_fit(); + INPUT.read_value2stdvector(ifs, double_value); + EXPECT_EQ(double_value.size(), 4); + EXPECT_EQ(double_value[0], -1.23456789); + EXPECT_EQ(double_value[1], 2.3456789); + EXPECT_EQ(double_value[2], -3.456789); + EXPECT_EQ(double_value[3], 4.56789); + } + } +} #undef private diff --git a/source/module_io/test/support/INPUT_list b/source/module_io/test/support/INPUT_list new file mode 100644 index 0000000000..a1efcb8e1a --- /dev/null +++ b/source/module_io/test/support/INPUT_list @@ -0,0 +1,13 @@ +bessel_nao_rcut_case0 7 +bessel_nao_rcut_case1 7# case0: test whitespace, 1 value, 1 space between key and value, no comment, 0 space after value: w1100, case1: w1110 +bessel_nao_rcut_case2 7 # w1111 +bessel_nao_rcut_case3 7# t1110 +bessel_nao_rcut_case4 7 # t1111 +bessel_nao_rcut_case5 7 8 9 10# s4110 +bessel_nao_rcut_case6 7 8 9 10 # s4111 +bessel_nao_rcut_case7 7 8 9 10# t4t10 +bessel_nao_rcut_case8 7 8 9 10 # t4t11 +bessel_nao_rcut_case9 string1 # something +bessel_nao_rcut_case10 string1 string2 string3 string4 +bessel_nao_rcut_case11 1.23456789 +bessel_nao_rcut_case12 -1.23456789 2.3456789 -3.456789 4.56789 \ No newline at end of file From 6f93cfd38d5ba36a284c4e19daac533b38c2abbe Mon Sep 17 00:00:00 2001 From: kirk0830 <67682086+kirk0830@users.noreply.github.com> Date: Thu, 11 Jan 2024 10:21:17 +0800 Subject: [PATCH 4/7] Feature: support QO can be installed like `python setup.py install` and use as `import abacus2qo` (#3463) * correct example of qo and its warnning information, set autoset for qo on symmetry * pack-up QO to a python-package for easy use --- source/module_io/input.cpp | 1 + source/module_io/to_qo.cpp | 2 +- tools/qo/README.md | 14 +++++++++- tools/qo/{source => abacus2qo}/__init__.py | 0 .../components/__init__.py | 0 .../components/basis_filter.py | 0 .../components/calculator.py | 2 +- .../components/data_container.py | 0 .../components/data_manager.py | 12 ++++----- .../components/driver.py | 6 ++--- .../components/safe_guard.py | 0 .../{source => abacus2qo}/tools/__init__.py | 0 .../tools/basic_functions.py | 0 .../tools/hamiltonian.py | 2 +- .../qo/{source => abacus2qo}/tools/kpoints.py | 0 .../qo/{source => abacus2qo}/tools/qo_ovlp.py | 2 +- .../tools/wavefunction.py | 0 tools/qo/examples/INPUT | 5 ++-- tools/qo/examples/STRU | 24 ++++++++--------- tools/qo/main.py | 4 +-- tools/qo/setup.py | 26 +++++++++++++++++++ 21 files changed, 69 insertions(+), 31 deletions(-) rename tools/qo/{source => abacus2qo}/__init__.py (100%) rename tools/qo/{source => abacus2qo}/components/__init__.py (100%) rename tools/qo/{source => abacus2qo}/components/basis_filter.py (100%) rename tools/qo/{source => abacus2qo}/components/calculator.py (97%) rename tools/qo/{source => abacus2qo}/components/data_container.py (100%) rename tools/qo/{source => abacus2qo}/components/data_manager.py (95%) rename tools/qo/{source => abacus2qo}/components/driver.py (96%) rename tools/qo/{source => abacus2qo}/components/safe_guard.py (100%) rename tools/qo/{source => abacus2qo}/tools/__init__.py (100%) rename tools/qo/{source => abacus2qo}/tools/basic_functions.py (100%) rename tools/qo/{source => abacus2qo}/tools/hamiltonian.py (94%) rename tools/qo/{source => abacus2qo}/tools/kpoints.py (100%) rename tools/qo/{source => abacus2qo}/tools/qo_ovlp.py (92%) rename tools/qo/{source => abacus2qo}/tools/wavefunction.py (100%) create mode 100644 tools/qo/setup.py diff --git a/source/module_io/input.cpp b/source/module_io/input.cpp index f5c93034b3..9ee0a43b8e 100644 --- a/source/module_io/input.cpp +++ b/source/module_io/input.cpp @@ -3070,6 +3070,7 @@ void Input::Default_2(void) // jiyy add 2019-08-04 { out_mat_hs = true; // print H(k) and S(k) out_wfc_lcao = 1; // print wave function in lcao basis in kspace + symmetry = "-1"; // disable kpoint reduce } // set nspin with noncolin diff --git a/source/module_io/to_qo.cpp b/source/module_io/to_qo.cpp index 90d4f92618..f35e078159 100644 --- a/source/module_io/to_qo.cpp +++ b/source/module_io/to_qo.cpp @@ -299,7 +299,7 @@ void toQO::calculate() << "! Warning: number of kpoints is less than number of supercells, " << std::endl << "! this will cause information loss when transform matrix R -> k. " << std::endl << "! The further conversion k -> R cannot recover full information." << std::endl - << "! Number of kpoints after irreducible transformation: " << nkpts_ << std::endl + << "! Number of kpoints: " << nkpts_ << std::endl << "! Number of supercells: " << nR_ << std::endl << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; } diff --git a/tools/qo/README.md b/tools/qo/README.md index 8863a84842..f3962e1d8c 100644 --- a/tools/qo/README.md +++ b/tools/qo/README.md @@ -10,7 +10,18 @@ ## Installation -This code runs like scripts, so no need to install. +This code runs like scripts, you can also install this by: +```bash +python3 setup.py install +``` +, then you can use it like a package: +```python +import abacus2qo +``` +If you would like to change code and run it, you can also install it by: +```bash +python3 setup.py develop +``` ## Usage @@ -62,6 +73,7 @@ This code runs like scripts, so no need to install. ]) ``` `HRs` and `SRs` are list of `numpy.ndarray`, so it is convinient to use `numpy.save` to save them. + You can also find a file `QO_supercells.dat` in `OUT.${suffix}/`, which contains the information of supercell. You can use it as a reference to construct `Rs`. 4. run it! ## Formulation info diff --git a/tools/qo/source/__init__.py b/tools/qo/abacus2qo/__init__.py similarity index 100% rename from tools/qo/source/__init__.py rename to tools/qo/abacus2qo/__init__.py diff --git a/tools/qo/source/components/__init__.py b/tools/qo/abacus2qo/components/__init__.py similarity index 100% rename from tools/qo/source/components/__init__.py rename to tools/qo/abacus2qo/components/__init__.py diff --git a/tools/qo/source/components/basis_filter.py b/tools/qo/abacus2qo/components/basis_filter.py similarity index 100% rename from tools/qo/source/components/basis_filter.py rename to tools/qo/abacus2qo/components/basis_filter.py diff --git a/tools/qo/source/components/calculator.py b/tools/qo/abacus2qo/components/calculator.py similarity index 97% rename from tools/qo/source/components/calculator.py rename to tools/qo/abacus2qo/components/calculator.py index 0cb694e45f..6f5003e872 100644 --- a/tools/qo/source/components/calculator.py +++ b/tools/qo/abacus2qo/components/calculator.py @@ -1,6 +1,6 @@ import numpy as np import scipy.linalg as la -import source.components.safe_guard as sg +import abacus2qo.components.safe_guard as sg class toQO_Calculator: """python-end the Quasiatomic orbital (QO) analysis diff --git a/tools/qo/source/components/data_container.py b/tools/qo/abacus2qo/components/data_container.py similarity index 100% rename from tools/qo/source/components/data_container.py rename to tools/qo/abacus2qo/components/data_container.py diff --git a/tools/qo/source/components/data_manager.py b/tools/qo/abacus2qo/components/data_manager.py similarity index 95% rename from tools/qo/source/components/data_manager.py rename to tools/qo/abacus2qo/components/data_manager.py index 7531cbd5a5..2b8089ad66 100644 --- a/tools/qo/source/components/data_manager.py +++ b/tools/qo/abacus2qo/components/data_manager.py @@ -1,10 +1,10 @@ import numpy as np -import source.components.data_container as dc -import source.tools.hamiltonian as ham -import source.tools.wavefunction as wf -import source.tools.qo_ovlp as qov -import source.tools.kpoints as kpt -import source.components.safe_guard as sg +import abacus2qo.components.data_container as dc +import abacus2qo.tools.hamiltonian as ham +import abacus2qo.tools.wavefunction as wf +import abacus2qo.tools.qo_ovlp as qov +import abacus2qo.tools.kpoints as kpt +import abacus2qo.components.safe_guard as sg from scipy.linalg import eigh class toQO_DataManager: diff --git a/tools/qo/source/components/driver.py b/tools/qo/abacus2qo/components/driver.py similarity index 96% rename from tools/qo/source/components/driver.py rename to tools/qo/abacus2qo/components/driver.py index 06e87448ce..6efd2c26c0 100644 --- a/tools/qo/source/components/driver.py +++ b/tools/qo/abacus2qo/components/driver.py @@ -1,6 +1,6 @@ -import source.components.data_manager as dm -import source.components.basis_filter as bf -import source.components.calculator as cal +import abacus2qo.components.data_manager as dm +import abacus2qo.components.basis_filter as bf +import abacus2qo.components.calculator as cal """ 1. filter out all irrelevant AOs from overlap matrix of AO in NAO representation ? maybe AO can also be normalized here? diff --git a/tools/qo/source/components/safe_guard.py b/tools/qo/abacus2qo/components/safe_guard.py similarity index 100% rename from tools/qo/source/components/safe_guard.py rename to tools/qo/abacus2qo/components/safe_guard.py diff --git a/tools/qo/source/tools/__init__.py b/tools/qo/abacus2qo/tools/__init__.py similarity index 100% rename from tools/qo/source/tools/__init__.py rename to tools/qo/abacus2qo/tools/__init__.py diff --git a/tools/qo/source/tools/basic_functions.py b/tools/qo/abacus2qo/tools/basic_functions.py similarity index 100% rename from tools/qo/source/tools/basic_functions.py rename to tools/qo/abacus2qo/tools/basic_functions.py diff --git a/tools/qo/source/tools/hamiltonian.py b/tools/qo/abacus2qo/tools/hamiltonian.py similarity index 94% rename from tools/qo/source/tools/hamiltonian.py rename to tools/qo/abacus2qo/tools/hamiltonian.py index bd7a6467ce..acc33a8366 100644 --- a/tools/qo/source/tools/hamiltonian.py +++ b/tools/qo/abacus2qo/tools/hamiltonian.py @@ -1,5 +1,5 @@ import numpy as np -from source.tools.basic_functions import make_complex +from abacus2qo.tools.basic_functions import make_complex def recover_from_upper_triangle(matrix: list) -> np.ndarray: """recover full matrix from upper-right triangle diff --git a/tools/qo/source/tools/kpoints.py b/tools/qo/abacus2qo/tools/kpoints.py similarity index 100% rename from tools/qo/source/tools/kpoints.py rename to tools/qo/abacus2qo/tools/kpoints.py diff --git a/tools/qo/source/tools/qo_ovlp.py b/tools/qo/abacus2qo/tools/qo_ovlp.py similarity index 92% rename from tools/qo/source/tools/qo_ovlp.py rename to tools/qo/abacus2qo/tools/qo_ovlp.py index 7b666b6deb..547897c864 100644 --- a/tools/qo/source/tools/qo_ovlp.py +++ b/tools/qo/abacus2qo/tools/qo_ovlp.py @@ -1,5 +1,5 @@ import numpy as np -from source.tools.basic_functions import make_complex +from abacus2qo.tools.basic_functions import make_complex def parse(nkpts: int, path = "./") -> tuple[list, list]: """read QO overlap matrix S(k) from file diff --git a/tools/qo/source/tools/wavefunction.py b/tools/qo/abacus2qo/tools/wavefunction.py similarity index 100% rename from tools/qo/source/tools/wavefunction.py rename to tools/qo/abacus2qo/tools/wavefunction.py diff --git a/tools/qo/examples/INPUT b/tools/qo/examples/INPUT index 0887ece829..f86fca2cb0 100644 --- a/tools/qo/examples/INPUT +++ b/tools/qo/examples/INPUT @@ -1,6 +1,6 @@ INPUT_PARAMETERS -pseudo_dir ../../PP_ORB -orbital_dir ../../PP_ORB +pseudo_dir ../../../tests/PP_ORB +orbital_dir ../../../tests/PP_ORB ecutwfc 50 scf_nmax 100 @@ -11,4 +11,3 @@ qo_switch 1 # turn on QO analysis output qo_basis pswfc # use pseudowavefunction read from pseudopotentials qo_screening_coeff 0.5 # controls the shrink of AO basis, larger value means tighter basis qo_thr 1e-6 # controls the accuracy of QO basis -symmetry -1 # to ensure matrix elements of symmetry kpoints can be cancelled diff --git a/tools/qo/examples/STRU b/tools/qo/examples/STRU index f81078d405..37805fca79 100644 --- a/tools/qo/examples/STRU +++ b/tools/qo/examples/STRU @@ -1,23 +1,23 @@ #This test is from example/scf/lcao_Si but change to Pseudopotential with pswfc ATOMIC_SPECIES -Si 1.000 Sn_dojo_nsoc.upf #MUST USE PSEUDOPOTENTIAL WITH PSWFC! +Sn 1.000 Sn_dojo_nsoc.upf #MUST USE PSEUDOPOTENTIAL WITH PSWFC! NUMERICAL_ORBITAL -./Sn_dojo_6au.orb +Sn_dojo_6au.orb LATTICE_CONSTANT -10.2 #Lattice constant +1.889726877 LATTICE_VECTORS -0.5 0.5 0.0 #Lattice vector 1 -0.5 0.0 0.5 #Lattice vector 2 -0.0 0.5 0.5 #Lattice vector 3 + 4.64567349 0.00000000 0.00000000 + 2.32283620 4.02327092 0.00000000 + 2.32283597 1.34109040 3.79317605 ATOMIC_POSITIONS -Cartesian #Cartesian(Unit is LATTICE_CONSTANT) -Si #Name of element -0.0 #Magnetic for this element. -2 #Number of atoms -0.00 0.00 0.00 0 0 0 #x,y,z, move_x, move_y, move_z -0.25 0.25 0.25 1 1 1 +Direct +Sn +0.00 +2 + 0.87500000 0.87500000 0.87500000 m 1 1 1 + 0.12500000 0.12500000 0.12500000 m 1 1 1 diff --git a/tools/qo/main.py b/tools/qo/main.py index f20ddaa253..8162daa55d 100644 --- a/tools/qo/main.py +++ b/tools/qo/main.py @@ -15,12 +15,12 @@ qo_screening_coeff 0.5 # controls the exponential decay-manner of AO ``` """ -import source.components.driver as driver +import abacus2qo.components.driver as driver import numpy as np if __name__ == "__main__": # example of QO - path = "./tests/integrate/220_NO_KP_QO/OUT.ABACUS" + path = "./examples/OUT.ABACUS/" # fully non-reduced kpoints nkpts = 125 # band range to reproduce diff --git a/tools/qo/setup.py b/tools/qo/setup.py new file mode 100644 index 0000000000..53dd047d5b --- /dev/null +++ b/tools/qo/setup.py @@ -0,0 +1,26 @@ +import pathlib +import setuptools + + +here = pathlib.Path(__file__).parent.resolve() +readme = (here / 'README.md').read_text(encoding='utf-8') + +# did not include torch and pyscf here +install_requires=["scipy", "numpy"] + +setuptools.setup( + name="abacus2qo", + author="Yike HUANG", + author_email="huangyk@aici.ac.cn", + description="Quasiatomic Orbital (QO) analysis", + long_description=readme, + long_description_content_type="text/markdown", + packages=setuptools.find_packages(include=['abacus2qo', 'abacus2qo.*']), + classifiers=[ + 'Development Status :: 3 - Alpha', + "Programming Language :: Python :: 3.7", + ], + install_requires=install_requires, + python_requires=">=3.7", + version="0.0.2" +) \ No newline at end of file From 894fb9dc17ec3c68bf04d26ed198b8e18521b3f1 Mon Sep 17 00:00:00 2001 From: kirk0830 <67682086+kirk0830@users.noreply.github.com> Date: Thu, 11 Jan 2024 10:40:32 +0800 Subject: [PATCH 5/7] Feature: support precision control for `out_mat_hs` keyword and default value set to `8` (#3468) * update functionality and doc * change one integerated test parameter and reference values --- docs/advanced/input_files/input-main.md | 6 +-- source/module_esolver/esolver_ks_lcao.cpp | 30 +++++++++-- .../module_esolver/esolver_ks_lcao_tddft.cpp | 12 +++-- .../hamilt_lcaodft/FORCE_gamma.cpp | 4 +- .../hamilt_lcaodft/FORCE_k.cpp | 4 +- .../operator_lcao/operator_lcao.cpp | 2 +- source/module_hsolver/hsolver_lcao.cpp | 2 +- source/module_hsolver/hsolver_lcao.h | 2 +- source/module_io/input.cpp | 9 ++-- source/module_io/input.h | 2 +- source/module_io/parameter_pool.cpp | 2 +- .../module_io/test/for_testing_input_conv.h | 4 +- source/module_io/test/input_conv_test.cpp | 4 +- source/module_io/test/input_test.cpp | 4 +- source/module_io/test/input_test_para.cpp | 2 +- source/module_io/write_HS.h | 1 + source/module_io/write_HS.hpp | 9 ++-- source/module_io/write_Vxc.hpp | 2 +- source/module_io/write_input.cpp | 2 +- tests/integrate/207_NO_KP_OH/INPUT | 2 +- tests/integrate/207_NO_KP_OH2/INPUT | 2 +- tests/integrate/207_NO_KP_OHS_SPIN4/INPUT | 2 +- .../207_NO_KP_OHS_SPIN4/data-1-H.ref | 52 +++++++++---------- .../207_NO_KP_OHS_SPIN4/data-1-S.ref | 52 +++++++++---------- tests/integrate/307_NO_GO_OH/INPUT | 2 +- 25 files changed, 122 insertions(+), 93 deletions(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 46da3473ae..e9debb3632 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -1538,10 +1538,10 @@ These variables are used to control the output of properties. ### out_mat_hs -- **Type**: Boolean +- **Type**: Boolean Integer(optional) - **Availability**: Numerical atomic orbital basis -- **Description**: Whether to print the upper triangular part of the Hamiltonian matrices (in Ry) and overlap matrices for each k point into files in the directory `OUT.${suffix}`. For more information, please refer to [hs_matrix.md](../elec_properties/hs_matrix.md#out_mat_hs). Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). -- **Default**: False +- **Description**: Whether to print the upper triangular part of the Hamiltonian matrices (in Ry) and overlap matrices for each k point into files in the directory `OUT.${suffix}`. The second number controls precision. For more information, please refer to [hs_matrix.md](../elec_properties/hs_matrix.md#out_mat_hs). Also controled by [out_interval](#out_interval) and [out_app_flag](#out_app_flag). +- **Default**: False 8 ### out_mat_r diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index fe28324be5..8fdc9217fd 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -676,13 +676,13 @@ namespace ModuleESolver // print Hamiltonian and Overlap matrix if (this->conv_elec) { - if (!GlobalV::GAMMA_ONLY_LOCAL && hsolver::HSolverLCAO::out_mat_hs) + if (!GlobalV::GAMMA_ONLY_LOCAL && hsolver::HSolverLCAO::out_mat_hs[0]) { this->UHM.GK.renew(true); } for (int ik = 0; ik < this->kv.nks; ++ik) { - if (hsolver::HSolverLCAO::out_mat_hs) + if (hsolver::HSolverLCAO::out_mat_hs[0]) { this->p_hamilt->updateHk(ik); } @@ -692,10 +692,30 @@ namespace ModuleESolver { hamilt::MatrixBlock h_mat, s_mat; this->p_hamilt->matrix(h_mat, s_mat); - if (hsolver::HSolverLCAO::out_mat_hs) + if (hsolver::HSolverLCAO::out_mat_hs[0]) { - ModuleIO::save_mat(istep, h_mat.p, GlobalV::NLOCAL, bit, 1, GlobalV::out_app_flag, "H", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); - ModuleIO::save_mat(istep, s_mat.p, GlobalV::NLOCAL, bit, 1, GlobalV::out_app_flag, "S", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); + ModuleIO::save_mat(istep, + h_mat.p, + GlobalV::NLOCAL, + bit, + hsolver::HSolverLCAO::out_mat_hs[1], + 1, + GlobalV::out_app_flag, + "H", + "data-" + std::to_string(ik), + *this->LOWF.ParaV, + GlobalV::DRANK); + ModuleIO::save_mat(istep, + s_mat.p, + GlobalV::NLOCAL, + bit, + hsolver::HSolverLCAO::out_mat_hs[1], + 1, + GlobalV::out_app_flag, + "S", + "data-" + std::to_string(ik), + *this->LOWF.ParaV, + GlobalV::DRANK); } } } diff --git a/source/module_esolver/esolver_ks_lcao_tddft.cpp b/source/module_esolver/esolver_ks_lcao_tddft.cpp index 4f99c016e6..8bfe57c574 100644 --- a/source/module_esolver/esolver_ks_lcao_tddft.cpp +++ b/source/module_esolver/esolver_ks_lcao_tddft.cpp @@ -248,7 +248,7 @@ void ESolver_KS_LCAO_TDDFT::updatepot(const int istep, const int iter) } for (int ik = 0; ik < kv.nks; ++ik) { - if (hsolver::HSolverLCAO>::out_mat_hs) + if (hsolver::HSolverLCAO>::out_mat_hs[0]) { this->p_hamilt->updateHk(ik); } @@ -258,10 +258,14 @@ void ESolver_KS_LCAO_TDDFT::updatepot(const int istep, const int iter) { hamilt::MatrixBlock> h_mat, s_mat; this->p_hamilt->matrix(h_mat, s_mat); - if (hsolver::HSolverLCAO>::out_mat_hs) + if (hsolver::HSolverLCAO>::out_mat_hs[0]) { - ModuleIO::save_mat(istep, h_mat.p, GlobalV::NLOCAL, bit, 1, GlobalV::out_app_flag, "H", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); - ModuleIO::save_mat(istep, h_mat.p, GlobalV::NLOCAL, bit, 1, GlobalV::out_app_flag, "S", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); + ModuleIO::save_mat(istep, h_mat.p, GlobalV::NLOCAL, bit, + hsolver::HSolverLCAO>::out_mat_hs[1], + 1, GlobalV::out_app_flag, "H", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); + ModuleIO::save_mat(istep, h_mat.p, GlobalV::NLOCAL, bit, + hsolver::HSolverLCAO>::out_mat_hs[1], + 1, GlobalV::out_app_flag, "S", "data-" + std::to_string(ik), *this->LOWF.ParaV, GlobalV::DRANK); } } } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp index f1ba3c8b69..1db8883136 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp @@ -210,8 +210,8 @@ void Force_LCAO_gamma::allocate_gamma(const Parallel_Orbitals& pv) this->UHM->genH .build_ST_new('S', cal_deri, GlobalC::ucell, this->UHM->genH.LM->Sloc.data(), INPUT.cal_syns, INPUT.dmax); bool bit = false; // LiuXh, 2017-03-21 - ModuleIO::save_mat(0, this->UHM->genH.LM->Hloc.data(), GlobalV::NLOCAL, bit, 0, GlobalV::out_app_flag, "H", "data-" + std::to_string(0), *this->ParaV, GlobalV::DRANK); - ModuleIO::save_mat(0, this->UHM->genH.LM->Sloc.data(), GlobalV::NLOCAL, bit, 0, GlobalV::out_app_flag, "S", "data-" + std::to_string(0), *this->ParaV, GlobalV::DRANK); + ModuleIO::save_mat(0, this->UHM->genH.LM->Hloc.data(), GlobalV::NLOCAL, bit, GlobalV::out_ndigits, 0, GlobalV::out_app_flag, "H", "data-" + std::to_string(0), *this->ParaV, GlobalV::DRANK); + ModuleIO::save_mat(0, this->UHM->genH.LM->Sloc.data(), GlobalV::NLOCAL, bit, GlobalV::out_ndigits, 0, GlobalV::out_app_flag, "S", "data-" + std::to_string(0), *this->ParaV, GlobalV::DRANK); } ModuleBase::timer::tick("Force_LCAO_gamma", "allocate_gamma"); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp index 3767105b22..918d4c5346 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp @@ -243,8 +243,8 @@ void Force_LCAO_k::allocate_k(const Parallel_Orbitals& pv, this->UHM->genH.LM->zeros_HSk('S'); this->UHM->genH.LM->folding_fixedH(ik, kvec_d, 1); bool bit = false; // LiuXh, 2017-03-21 - ModuleIO::save_mat(0, this->UHM->genH.LM->Hloc2.data(), GlobalV::NLOCAL, bit, 0, GlobalV::out_app_flag, "H", "data-" + std::to_string(ik), *this->ParaV, GlobalV::DRANK); - ModuleIO::save_mat(0, this->UHM->genH.LM->Sloc2.data(), GlobalV::NLOCAL, bit, 0, GlobalV::out_app_flag, "S", "data-" + std::to_string(ik), *this->ParaV, GlobalV::DRANK); + ModuleIO::save_mat(0, this->UHM->genH.LM->Hloc2.data(), GlobalV::NLOCAL, bit, GlobalV::out_ndigits, 0, GlobalV::out_app_flag, "H", "data-" + std::to_string(ik), *this->ParaV, GlobalV::DRANK); + ModuleIO::save_mat(0, this->UHM->genH.LM->Sloc2.data(), GlobalV::NLOCAL, bit, GlobalV::out_ndigits, 0, GlobalV::out_app_flag, "S", "data-" + std::to_string(ik), *this->ParaV, GlobalV::DRANK); } } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.cpp index 10d10ba099..a9d4d1c4e5 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.cpp @@ -16,7 +16,7 @@ void OperatorLCAO::get_hs_pointers() { ModuleBase::timer::tick("OperatorLCAO", "get_hs_pointers"); this->hmatrix_k = this->LM->Hloc.data(); - if ((this->new_e_iteration && ik == 0) || hsolver::HSolverLCAO::out_mat_hs) + if ((this->new_e_iteration && ik == 0) || hsolver::HSolverLCAO::out_mat_hs[0]) { if (this->smatrix_k == nullptr) { diff --git a/source/module_hsolver/hsolver_lcao.cpp b/source/module_hsolver/hsolver_lcao.cpp index 83a9fed4e1..e5dbb5ffd9 100644 --- a/source/module_hsolver/hsolver_lcao.cpp +++ b/source/module_hsolver/hsolver_lcao.cpp @@ -143,7 +143,7 @@ void HSolverLCAO::solveTemplate(hamilt::Hamilt* pHamilt, ModuleBase::timer::tick("HSolverLCAO", "solve"); } template -int HSolverLCAO::out_mat_hs = 0; +std::vector HSolverLCAO::out_mat_hs = {0, 8}; template int HSolverLCAO::out_mat_hsR = 0; template diff --git a/source/module_hsolver/hsolver_lcao.h b/source/module_hsolver/hsolver_lcao.h index 5a70259001..0d6435c0a0 100644 --- a/source/module_hsolver/hsolver_lcao.h +++ b/source/module_hsolver/hsolver_lcao.h @@ -25,7 +25,7 @@ namespace hsolver void solve(hamilt::Hamilt* pHamilt, psi::Psi& psi, elecstate::ElecState* pes, const std::string method_in, const bool skip_charge) override; - static int out_mat_hs; // mohan add 2010-09-02 + static std::vector out_mat_hs; // mohan add 2010-09-02 static int out_mat_hsR; // LiuXh add 2019-07-16 static int out_mat_t; static int out_mat_dh; diff --git a/source/module_io/input.cpp b/source/module_io/input.cpp index 9ee0a43b8e..ece1bfbf5c 100644 --- a/source/module_io/input.cpp +++ b/source/module_io/input.cpp @@ -338,7 +338,7 @@ void Input::Default(void) out_dos = 0; out_band = 0; out_proj_band = 0; - out_mat_hs = 0; + out_mat_hs = {0, 8}; out_mat_xc = 0; cal_syns = 0; dmax = 0.01; @@ -1386,7 +1386,8 @@ bool Input::Read(const std::string& fn) else if (strcmp("out_mat_hs", word) == 0) { - read_bool(ifs, out_mat_hs); + read_value2stdvector(ifs, out_mat_hs); + if(out_mat_hs.size() == 1) out_mat_hs.push_back(8); } // LiuXh add 2019-07-15 else if (strcmp("out_mat_hs2", word) == 0) @@ -3068,7 +3069,7 @@ void Input::Default_2(void) // jiyy add 2019-08-04 if(qo_switch) { - out_mat_hs = true; // print H(k) and S(k) + out_mat_hs[0] = 1; // print H(k) and S(k) out_wfc_lcao = 1; // print wave function in lcao basis in kspace symmetry = "-1"; // disable kpoint reduce } @@ -3306,7 +3307,7 @@ void Input::Bcast() Parallel_Common::bcast_int(out_dos); Parallel_Common::bcast_bool(out_band); Parallel_Common::bcast_bool(out_proj_band); - Parallel_Common::bcast_bool(out_mat_hs); + Parallel_Common::bcast_int(out_mat_hs.data(), 2); Parallel_Common::bcast_bool(out_mat_hs2); // LiuXh add 2019-07-15 Parallel_Common::bcast_bool(out_mat_t); Parallel_Common::bcast_bool(out_mat_dh); diff --git a/source/module_io/input.h b/source/module_io/input.h index b796976417..66927af591 100644 --- a/source/module_io/input.h +++ b/source/module_io/input.h @@ -265,7 +265,7 @@ class Input int out_dos; // dos calculation. mohan add 20090909 bool out_band; // band calculation pengfei 2014-10-13 bool out_proj_band; // projected band structure calculation jiyy add 2022-05-11 - bool out_mat_hs; // output H matrix and S matrix in local basis. + std::vector out_mat_hs; // output H matrix and S matrix in local basis. bool out_mat_xc; // output exchange-correlation matrix in KS-orbital representation. bool cal_syns; // calculate asynchronous S matrix to output double dmax; // maximum displacement of all atoms in one step (bohr) diff --git a/source/module_io/parameter_pool.cpp b/source/module_io/parameter_pool.cpp index d66fba4996..906b9b57d8 100644 --- a/source/module_io/parameter_pool.cpp +++ b/source/module_io/parameter_pool.cpp @@ -925,7 +925,7 @@ bool input_parameters_set(std::map input_parameters } else if (input_parameters.count("out_mat_hs") != 0) { - INPUT.out_mat_hs = *static_cast(input_parameters["out_mat_hs"].get()); + INPUT.out_mat_hs = *static_cast*>(input_parameters["out_mat_hs"].get()); } else if (input_parameters.count("out_mat_xc") != 0) { diff --git a/source/module_io/test/for_testing_input_conv.h b/source/module_io/test/for_testing_input_conv.h index b444732606..13b507e2c8 100644 --- a/source/module_io/test/for_testing_input_conv.h +++ b/source/module_io/test/for_testing_input_conv.h @@ -42,9 +42,9 @@ template<> bool elecstate::ElecStateLCAO>::need_psi_grid = 1; // template<> -int hsolver::HSolverLCAO::out_mat_hs = 0; +std::vector hsolver::HSolverLCAO::out_mat_hs = {0, 8}; template<> -int hsolver::HSolverLCAO>::out_mat_hs = 0; +std::vector hsolver::HSolverLCAO>::out_mat_hs = {0, 8}; template<> int hsolver::HSolverLCAO::out_mat_hsR = 0; template<> diff --git a/source/module_io/test/input_conv_test.cpp b/source/module_io/test/input_conv_test.cpp index 7c1e4b18a8..f0d7e43f68 100644 --- a/source/module_io/test/input_conv_test.cpp +++ b/source/module_io/test/input_conv_test.cpp @@ -145,8 +145,8 @@ TEST_F(InputConvTest, Conv) EXPECT_EQ(GlobalV::out_bandgap, false); EXPECT_EQ(Local_Orbital_Charge::out_dm,false); EXPECT_EQ(Local_Orbital_Charge::out_dm1,false); - EXPECT_EQ(hsolver::HSolverLCAO::out_mat_hs, false); - EXPECT_EQ(hsolver::HSolverLCAO>::out_mat_hs, false); + EXPECT_EQ(hsolver::HSolverLCAO::out_mat_hs[0], false); + EXPECT_EQ(hsolver::HSolverLCAO>::out_mat_hs[0], false); EXPECT_EQ(hsolver::HSolverLCAO::out_mat_hsR, false); EXPECT_EQ(hsolver::HSolverLCAO>::out_mat_hsR, false); EXPECT_EQ(hsolver::HSolverLCAO::out_mat_t, false); diff --git a/source/module_io/test/input_test.cpp b/source/module_io/test/input_test.cpp index 50c8ff1475..02a5a19e10 100644 --- a/source/module_io/test/input_test.cpp +++ b/source/module_io/test/input_test.cpp @@ -178,7 +178,7 @@ TEST_F(InputTest, Default) EXPECT_EQ(INPUT.out_dos,0); EXPECT_EQ(INPUT.out_band,0); EXPECT_EQ(INPUT.out_proj_band,0); - EXPECT_EQ(INPUT.out_mat_hs,0); + EXPECT_EQ(INPUT.out_mat_hs[0],0); EXPECT_EQ(INPUT.out_mat_hs2,0); EXPECT_EQ(INPUT.out_mat_xc, 0); EXPECT_EQ(INPUT.out_interval,1); @@ -541,7 +541,7 @@ TEST_F(InputTest, Read) EXPECT_EQ(INPUT.out_dos,0); EXPECT_EQ(INPUT.out_band,0); EXPECT_EQ(INPUT.out_proj_band,0); - EXPECT_EQ(INPUT.out_mat_hs,0); + EXPECT_EQ(INPUT.out_mat_hs[0],0); EXPECT_EQ(INPUT.out_mat_hs2,0); EXPECT_EQ(INPUT.out_mat_xc, 0); EXPECT_EQ(INPUT.out_interval,1); diff --git a/source/module_io/test/input_test_para.cpp b/source/module_io/test/input_test_para.cpp index 18a3d99472..444fa1b05a 100644 --- a/source/module_io/test/input_test_para.cpp +++ b/source/module_io/test/input_test_para.cpp @@ -182,7 +182,7 @@ TEST_F(InputParaTest, Bcast) EXPECT_EQ(INPUT.out_dos, 0); EXPECT_EQ(INPUT.out_band, 0); EXPECT_EQ(INPUT.out_proj_band, 0); - EXPECT_EQ(INPUT.out_mat_hs, 0); + EXPECT_EQ(INPUT.out_mat_hs[0], 0); EXPECT_EQ(INPUT.out_mat_hs2, 0); EXPECT_EQ(INPUT.out_mat_xc, 0); EXPECT_EQ(INPUT.out_interval, 1); diff --git a/source/module_io/write_HS.h b/source/module_io/write_HS.h index 93365a48bf..31eace2cff 100644 --- a/source/module_io/write_HS.h +++ b/source/module_io/write_HS.h @@ -25,6 +25,7 @@ namespace ModuleIO const T* mat, const int dim, const bool bit, + const int precision, const bool tri, const bool app, const std::string label, diff --git a/source/module_io/write_HS.hpp b/source/module_io/write_HS.hpp index 7ab6c1f02c..d6845114e4 100644 --- a/source/module_io/write_HS.hpp +++ b/source/module_io/write_HS.hpp @@ -4,7 +4,7 @@ #include "module_base/timer.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" - +#include "module_base/formatter_physfmt.h" /* void ModuleIO::save_HS_ccf(const int &iter, const int &Hnnz, const int *colptr_H, const int *rowind_H, @@ -89,6 +89,7 @@ void ModuleIO::save_mat(const int istep, const T* mat, const int dim, const bool bit, + const int precision, const bool tri, const bool app, const std::string label, @@ -102,6 +103,8 @@ void ModuleIO::save_mat(const int istep, std::stringstream ss; + formatter::PhysicalFmt physfmt; + physfmt.adjust_formatter_flexible(precision, -1, true); if (bit)ss << GlobalV::global_out_dir << file_name + "-" + label + "-bit"; else { @@ -227,7 +230,7 @@ void ModuleIO::save_mat(const int istep, if (drank == 0) { - for (int j = (tri ? i : 0); j < dim; j++) g << " " << line[tri ? j - i : j]; + for (int j = (tri ? i : 0); j < dim; j++) g << " " << physfmt.get_p_formatter()->format(line[tri ? j - i : j]); g << std::endl; } delete[] line; @@ -247,7 +250,7 @@ void ModuleIO::save_mat(const int istep, { for (int j = (tri ? i : 0); j < dim; j++) { - g << " " << mat[i * dim + j]; + g << " " << physfmt.get_p_formatter()->format(mat[i * dim + j]); } g << std::endl; } diff --git a/source/module_io/write_Vxc.hpp b/source/module_io/write_Vxc.hpp index c150825ce1..baa24ceef3 100644 --- a/source/module_io/write_Vxc.hpp +++ b/source/module_io/write_Vxc.hpp @@ -189,7 +189,7 @@ namespace ModuleIO std::vector vxc_k_mo = cVc(vxc_k_ao.data(), &psi(ik, 0, 0), nbasis, nbands, *pv, p2d); // write ModuleIO::save_mat(-1, vxc_k_mo.data(), nbands, - false/*binary*/, true/*triangle*/, false/*append*/, + false/*binary*/, GlobalV::out_ndigits, true/*triangle*/, false/*append*/, "Vxc", "k-" + std::to_string(ik), p2d, drank); // ======test======= // total_energy += all_band_energy(ik, vxc_k_mo, p2d, wg); diff --git a/source/module_io/write_input.cpp b/source/module_io/write_input.cpp index db7315e7a7..5c0fc4cada 100644 --- a/source/module_io/write_input.cpp +++ b/source/module_io/write_input.cpp @@ -222,7 +222,7 @@ ModuleBase::GlobalFunc::OUTP(ofs, "out_bandgap", out_bandgap, "if true, print ou ModuleBase::GlobalFunc::OUTP(ofs, "lcao_dk", lcao_dk, "delta k for 1D integration in LCAO"); ModuleBase::GlobalFunc::OUTP(ofs, "lcao_dr", lcao_dr, "delta r for 1D integration in LCAO"); ModuleBase::GlobalFunc::OUTP(ofs, "lcao_rmax", lcao_rmax, "max R for 1D two-center integration table"); - ModuleBase::GlobalFunc::OUTP(ofs, "out_mat_hs", out_mat_hs, "output H and S matrix"); + ModuleBase::GlobalFunc::OUTP(ofs, "out_mat_hs", out_mat_hs[0], "output H and S matrix"); ModuleBase::GlobalFunc::OUTP(ofs, "out_mat_hs2", out_mat_hs2, "output H(R) and S(R) matrix"); ModuleBase::GlobalFunc::OUTP(ofs, "out_mat_dh", out_mat_dh, "output of derivative of H(R) matrix"); ModuleBase::GlobalFunc::OUTP(ofs, "out_mat_xc", out_mat_xc, "output exchange-correlation matrix in KS-orbital representation"); diff --git a/tests/integrate/207_NO_KP_OH/INPUT b/tests/integrate/207_NO_KP_OH/INPUT index d9807f93d2..d87a5dc40a 100644 --- a/tests/integrate/207_NO_KP_OH/INPUT +++ b/tests/integrate/207_NO_KP_OH/INPUT @@ -25,6 +25,6 @@ smearing_sigma 0.002 mixing_type broyden mixing_beta 0.7 -out_mat_hs 1 +out_mat_hs 1 5 ks_solver scalapack_gvx out_ndigits 5 \ No newline at end of file diff --git a/tests/integrate/207_NO_KP_OH2/INPUT b/tests/integrate/207_NO_KP_OH2/INPUT index 6b2e88b08d..538b7bd007 100644 --- a/tests/integrate/207_NO_KP_OH2/INPUT +++ b/tests/integrate/207_NO_KP_OH2/INPUT @@ -26,5 +26,5 @@ mixing_type broyden mixing_beta 0.7 mixing_gg0 0.0 -out_mat_hs2 1 +out_mat_hs2 1 5 ks_solver scalapack_gvx diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/INPUT b/tests/integrate/207_NO_KP_OHS_SPIN4/INPUT index f8cff44544..dfa5c5a45f 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/INPUT +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/INPUT @@ -25,7 +25,7 @@ mixing_type plain mixing_beta 0.7 mixing_gg0 0.0 -out_mat_hs 1 +out_mat_hs 1 10 out_mat_hs2 1 out_mat_r 1 out_ndigits 5 \ No newline at end of file diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref index a7b392c661..e3da7f3095 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-H.ref @@ -1,26 +1,26 @@ -26 (-1.04983e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (7.32143e-03,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.77636e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.35735e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (4.93797e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-6.66134e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.36995e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.37494e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.49800e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.28994e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.64581e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.22874e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.61628e-16,0.00000e+00) (0.00000e+00,0.00000e+00) - (-8.30678e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (6.27107e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.33227e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.83386e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (4.41504e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-8.88178e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.01495e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.55430e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.77556e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.54677e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.69583e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.80360e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.43594e-16,0.00000e+00) - (5.68439e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.44169e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (1.03393e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (2.31830e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.22125e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (5.19812e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.00668e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.63678e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.03232e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.91746e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.32251e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.31438e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (6.65870e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.60822e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (9.93143e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.34023e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (7.21645e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.08005e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.03830e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.49800e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.03106e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.38525e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.20683e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.48402e-17,0.00000e+00) - (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.78878e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.57279e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (5.52233e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.32843e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.62809e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (6.20411e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.21302e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.95480e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-8.40826e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.09129e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (6.07195e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.71428e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.35983e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (4.48000e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.46486e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.23087e-17,0.00000e+00) - (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.69269e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.51408e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (1.08873e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.46251e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.01725e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.84992e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (3.18236e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.82338e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.08120e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (8.83717e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (9.76977e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.16323e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-9.92058e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (2.26757e-17,0.00000e+00) - (-4.21502e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (1.60104e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.23619e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.00031e-02,0.00000e+00) (0.00000e+00,0.00000e+00) (4.98403e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.97380e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.27725e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.68643e-16,0.00000e+00) (0.00000e+00,0.00000e+00) - (-2.00195e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (1.25271e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.01383e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.42408e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (5.69296e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.20652e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.42751e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.94396e-16,0.00000e+00) - (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (2.20372e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (3.15693e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.41559e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.15610e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.04720e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.99124e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (2.17033e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (2.68347e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.55112e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.15433e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.13230e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (1.50021e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (5.47211e-17,0.00000e+00) - (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (9.15792e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (6.27584e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.66533e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.03440e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.16391e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.20918e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.45753e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (6.38690e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.11022e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.42915e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.19165e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (-7.72492e-17,0.00000e+00) - (8.94485e-01,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.07343e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.29705e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (1.66533e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.76244e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.04204e-16,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.06712e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-4.17633e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (4.77870e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.22045e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.86183e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (6.20425e-16,0.00000e+00) - (1.63832e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.25363e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.80465e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.01983e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.87552e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.81226e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.49139e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (9.03262e-18,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.00558e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.43831e-17,0.00000e+00) - (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (3.25137e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.34556e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.31664e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.81311e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (3.08296e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (2.23597e-16,0.00000e+00) (0.00000e+00,0.00000e+00) (5.30228e-17,0.00000e+00) - (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-2.40179e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (8.25406e-16,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.81311e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-3.27444e-17,0.00000e+00) (0.00000e+00,0.00000e+00) (7.73565e-16,0.00000e+00) - (1.63832e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (9.45072e-17,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.81226e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (8.88586e-17,0.00000e+00) - (1.63894e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.81311e+00,0.00000e+00) +26 (-1.0498295478e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.3214324318e-03,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.6324723277e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0742074686e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5563472949e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.9878474313e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.2735593670e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.4172147560e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0019970121e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.7164473895e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.5066093626e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (-8.3067773120e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.2710718058e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.6613381478e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.3681125921e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.6782463368e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.4613376138e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0594796265e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.7184478547e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.7565453862e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1129250214e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.5650803412e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3481701075e-16,0.0000000000e+00) + (5.6843861718e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.5511151231e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.8605324055e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8589011259e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.8496355839e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.1238398486e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8041124150e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4971525491e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (9.7987027581e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.5893394367e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.6111817205e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (6.6587017216e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.1062266354e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3900089579e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.0884262509e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.3266726847e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3306698075e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6575837664e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8041124150e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6574765592e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0305457299e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1254068839e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.9934494580e-17,0.0000000000e+00) + (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.1664357523e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.8131464492e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.9593658114e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0524833020e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.5001812871e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5562800900e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0361447469e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.3742475007e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.9813281229e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.8051659095e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.5273819053e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.9766660115e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.2164496601e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.9708305073e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.3545598527e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.2957816908e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1455170843e-17,0.0000000000e+00) + (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3771359381e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.8722484728e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.0105136710e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.1780916069e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.7715611724e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-3.7119811262e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6837318018e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.2179493897e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3616223935e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.6131439912e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.0283266041e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.6199985207e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.8817841970e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.4988561338e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.7711762604e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.1099240946e-16,0.0000000000e+00) + (-4.2150227105e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4971492226e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (9.7195779421e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0003121038e-02,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.4340850862e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7959701984e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.5511151231e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7137355436e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.9155362615e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (-2.0019532684e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.2743735532e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.7201018612e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.4240794246e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.1024176302e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.0659671503e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.6613381478e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6696511734e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.7669307131e-16,0.0000000000e+00) + (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.7436406803e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.5899701467e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.8702862084e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3794650604e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (4.1319998416e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.6704607404e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.4265696847e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.3338441216e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.0419091002e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.4393913508e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (5.0715967890e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.6866905500e-17,0.0000000000e+00) + (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.3998641593e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.6538744058e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.6653345369e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.4822239789e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6551790467e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7863438289e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.7852596818e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-7.8885801557e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.1102230246e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.4631953493e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.6680306460e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6453134098e-16,0.0000000000e+00) + (8.9448451541e-01,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (8.7841454541e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.0905712056e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.6653345369e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.2247626783e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.6104025206e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0671227230e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.6645862028e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.1393036401e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2204460493e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.4889701975e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (7.8927822207e-16,0.0000000000e+00) + (1.6383220324e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.3907562231e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-9.1068443356e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.0538889854e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.0283515545e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.8122604198e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-6.1825866509e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-8.2745080004e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.9687742426e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.5746133514e-17,0.0000000000e+00) + (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.0387293342e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.3007712378e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-5.2844067480e-18,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.8131083153e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-2.2350682012e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4383787301e-16,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-4.6553300870e-18,0.0000000000e+00) + (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (1.8566170146e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (3.5449683857e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.8131083153e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (2.2978947892e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.4802594023e-17,0.0000000000e+00) + (1.6383220324e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.7214871045e-17,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.8122604198e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5871671860e-17,0.0000000000e+00) + (1.6389428374e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.8131083153e+00,0.0000000000e+00) diff --git a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref index 25aba5a92d..aead9cb666 100644 --- a/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref +++ b/tests/integrate/207_NO_KP_OHS_SPIN4/data-1-S.ref @@ -1,26 +1,26 @@ -26 (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (6.88546e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (6.88546e-15,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (-1.54389e-14,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) (0.00000e+00,0.00000e+00) - (1.00000e+00,0.00000e+00) +26 (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8854584276e-15,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (6.8854584276e-15,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (-1.5438920649e-14,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) (0.0000000000e+00,0.0000000000e+00) + (1.0000000000e+00,0.0000000000e+00) diff --git a/tests/integrate/307_NO_GO_OH/INPUT b/tests/integrate/307_NO_GO_OH/INPUT index 4f9658d62b..0446a0c709 100644 --- a/tests/integrate/307_NO_GO_OH/INPUT +++ b/tests/integrate/307_NO_GO_OH/INPUT @@ -22,7 +22,7 @@ basis_type lcao smearing_method gauss smearing_sigma 0.002 -out_mat_hs 1 +out_mat_hs 1 5 out_ndigits 5 #Parameters (5.Mixing) mixing_type broyden From fe6d8c8136af9492984e1926251bcd9395eaee95 Mon Sep 17 00:00:00 2001 From: Chun Cai Date: Thu, 11 Jan 2024 10:44:53 +0800 Subject: [PATCH 6/7] Docs: Add instructions on using conda as build env (#3466) Co-authored-by: dingzhaohan --- cmake/FindIntelMKL.cmake | 2 +- docs/advanced/install.md | 10 ++++----- docs/quick_start/easy_install.md | 35 +++++++++++++++++++++++++++----- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/cmake/FindIntelMKL.cmake b/cmake/FindIntelMKL.cmake index b9e71b30cd..6e3a25bfa4 100644 --- a/cmake/FindIntelMKL.cmake +++ b/cmake/FindIntelMKL.cmake @@ -6,7 +6,7 @@ # MKL_FOUND - True if mkl found. # -find_path(MKL_INCLUDE_DIR mkl_dfti.h HINTS ${MKLROOT}/include) +find_path(MKL_INCLUDE_DIR mkl_service.h HINTS ${MKLROOT}/include) find_library(MKL_INTEL NAMES mkl_intel_lp64 HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) find_library(MKL_INTEL_THREAD NAMES mkl_intel_thread HINTS ${MKLROOT}/lib ${MKLROOT}/lib/intel64) diff --git a/docs/advanced/install.md b/docs/advanced/install.md index ff33900406..e929fac34c 100644 --- a/docs/advanced/install.md +++ b/docs/advanced/install.md @@ -55,7 +55,7 @@ The new EXX implementation depends on two external libraries: These two libraries are added as submodules in the [deps](https://github.com/deepmodeling/abacus-develop/tree/develop/deps) folder. Set `-DENABLE_LIBRI=ON` to build with these two libraries. -If you prefer using manually downloaded libraries, provide `-DLIBRI_DIR=${path to your LibRI folder} -DLIBCOMM_DIR=${path to your LibComm folder}`. +If you prefer using manually downloaded libraries, provide `-DLIBRI_DIR=${path to your LibRI folder} -DLIBCOMM_DIR=${path to your LibComm folder}`. ## Build Unit Tests @@ -85,7 +85,7 @@ cmake -B build -DUSE_CUDA=1 -DCMAKE_CUDA_COMPILER=${path to cuda toolkit}/bin/nv > Note: This flag is **enabled by default**. It will get better performance than the standard implementation on `gcc` and `clang`. But it **will be disabled** when using `Intel Compiler` since the math functions will get wrong results and the performance is also unexpectly poor. -To build math functions from source code, instead of using c++ standard implementation, define `USE_ABACUS_LIBM` flag. +To build math functions from source code, instead of using c++ standard implementation, define `USE_ABACUS_LIBM` flag. Currently supported math functions: `sin`, `cos`, `sincos`, `exp`, `cexp` @@ -136,7 +136,7 @@ CEREAL_DIR = /usr/local/include/cereal ##------------------- FOR GNU COMPILER ------------------------------ ## FFTW_DIR should contain lib/libfftw3.a. -## OPENBLAS_LIB_DIR should contain libopenblas.a. +## OPENBLAS_LIB_DIR should contain libopenblas.a. ## SCALAPACK_LIB_DIR should contain libscalapack.a ## All three above will only be used when CXX=mpicxx or g++ ## ELPA_DIR should contain an include folder and lib/libelpa.a @@ -270,8 +270,8 @@ directly. > `deepmd_c`/`deepmd_cc` and `tensorflow_cc` libraries would be called according to `DeePMD_DIR` and `TensorFlow_DIR`, which is showed in detail in [this page](https://github.com/deepmodeling/deepmd-kit/blob/master/doc/inference/cxx.md). -### Add LibRI and LibComm Support -To use new EXX, you need two libraries: [LibRI](https://github.com/abacusmodeling/LibRI) and [LibComm](https://github.com/abacusmodeling/LibComm) and need to define `LIBRI_DIR` and `LIBCOMM_DIR` in the file `Makefile.vars` or use +### Add LibRI Support +To use new EXX, you need two libraries: [LibRI](https://github.com/abacusmodeling/LibRI) and [LibComm](https://github.com/abacusmodeling/LibComm) and need to define `LIBRI_DIR` and `LIBCOMM_DIR` in the file `Makefile.vars` or use ```makefile make LIBRI_DIR=/public/software/LibRI LIBCOMM_DIR=/public/software/LibComm ``` diff --git a/docs/quick_start/easy_install.md b/docs/quick_start/easy_install.md index 31f948b977..957b9d3262 100644 --- a/docs/quick_start/easy_install.md +++ b/docs/quick_start/easy_install.md @@ -41,10 +41,10 @@ Please refer to our [guide](https://github.com/deepmodeling/abacus-develop/wiki/ ## Install requirements by toolchain -We offer a set of [toolchain](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain) +We offer a set of [toolchain](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain) scripts to compile and install all the requirements -automatically and suitable for machine characteristic in an online or offline way. -The toolchain can be downloaded with ABACUS repo, which is easily used and can +automatically and suitable for machine characteristic in an online or offline way. +The toolchain can be downloaded with ABACUS repo, which is easily used and can have a convenient installation under HPC environment in both `GNU` or `Intel-oneAPI` toolchain. Sometimes, ABACUS by toolchain installation may have highly efficient performance. A Tutorial for using this toolchain can be accessed in [bohrium-notebook](https://nb.bohrium.dp.tech/detail/5215742477) @@ -197,7 +197,7 @@ We also support [Gitpod](https://www.gitpod.io/): [Open in Gitpod](https://gitpo ## Install by conda -Conda is a package management system with a separated environment, not requiring system privileges. A pre-built ABACUS binary with all requirements is available at [conda-forge](https://anaconda.org/conda-forge/abacus). Conda will install the GPU-accelerated version of ABACUS if a valid GPU driver is present. +Conda is a package management system with a separated environment, not requiring system privileges. A pre-built ABACUS binary with all requirements is available at [conda-forge](https://anaconda.org/conda-forge/abacus). It supports advanced features including Libxc, LibRI, and DeePKS. Conda will install the GPU-supported version of ABACUS if a valid GPU driver is present. Please refer to [the advanced installation guide](../advanced/install.md) for more details. ```bash # Install @@ -212,6 +212,31 @@ OMP_NUM_THREADS=1 mpirun -n 4 abacus conda update -n abacus_env abacus -c conda-forge ``` -For more details on building a conda package of ABACUS, please refer to the [conda recipe file](https://github.com/deepmodeling/abacus-develop/blob/develop/conda/meta.yaml). +> If OpenBLAS gives warning about OpenMP threads, please install conda package `openblas=*=openmp*` or `blas=*=mkl`. See [switching BLAS implementation in conda](https://conda-forge.org/docs/maintainer/knowledge_base.html#switching-blas-implementation). + +> ABACUS supports `OpenMPI` and `MPICH` variant. Install `mpich` or `openmpi` package to switch MPI library if required. + +For more details on building a conda package of ABACUS locally, please refer to the [conda recipe file](https://github.com/deepmodeling/abacus-develop/blob/develop/conda/meta.yaml). > Note: The [deepmodeling conda channel](https://anaconda.org/deepmodeling/abacus) offers historical versions of ABACUS. + +### Developing with conda + +It is possible to build ABACUS from source based on the conda environment. + +```bash +conda create -n abacus_env abacus -c conda-forge +conda activate abacus_env +export CMAKE_PREFIX_PATH=$CONDA_PREFIX:$CMAKE_PREFIX_PATH + +# By default OpenBLAS is used; run `conda install "blas=*=mkl" mkl_fft -c conda-forge` to switch implementation. +export MKLROOT=$CONDA_PREFIX # If Intel MKL is required. + +export CMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'`:$CMAKE_PREFIX_PATH # If DEEPKS support is required; +# usually expands to `$CONDA_PREFIX/lib/python3.1/site-packages/torch/share/cmake` +``` + +And, follow the instructions in [Build and Install](#build-and-install) part above withou manually setting paths to dependencies. +See [the advanced installation guide](../advanced/install.md) for more features. +Make sure the environment variables are set before running `cmake`. +Possible command: `cmake -B build -DENABLE_DEEPKS=ON -DENABLE_LIBXC=ON -DENABLE_LIBRI=ON`. From 71a023bda1703e39e84e2666e830095a713e55aa Mon Sep 17 00:00:00 2001 From: cyFortneu <33978601+maki49@users.noreply.github.com> Date: Thu, 11 Jan 2024 10:56:28 +0800 Subject: [PATCH 7/7] support custom HexxR to OperatorEXX (#3470) --- .../operator_lcao/op_exx_lcao.cpp | 4 ++-- .../operator_lcao/op_exx_lcao.h | 24 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.cpp index d7af2691d5..2d4b3aaab4 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.cpp @@ -33,7 +33,7 @@ void OperatorEXX>::contributeHk(int ik) kv, ik, GlobalC::exx_info.info_global.hybrid_alpha, - *this->LM->Hexxd, + this->Hexxd == nullptr ? *this->LM->Hexxd : *this->Hexxd, *this->LM->ParaV, *this->hK); else @@ -41,7 +41,7 @@ void OperatorEXX>::contributeHk(int ik) kv, ik, GlobalC::exx_info.info_global.hybrid_alpha, - *this->LM->Hexxc, + this->Hexxc == nullptr ? *this->LM->Hexxc : *this->Hexxc, *this->LM->ParaV, *this->hK); } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.h b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.h index af6783c57e..eb81825b87 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.h @@ -3,7 +3,8 @@ #include "module_base/timer.h" #include "module_cell/klist.h" #include "operator_lcao.h" - +#ifdef __EXX +#include namespace hamilt { @@ -20,12 +21,15 @@ class OperatorEXX : public T template class OperatorEXX> : public OperatorLCAO { - public: + using TAC = std::pair>; +public: OperatorEXX>(LCAO_Matrix* LM_in, - hamilt::HContainer* hR_in, - std::vector* hK_in, - const K_Vectors& kv_in) - : kv(kv_in), OperatorLCAO(LM_in, kv_in.kvec_d, hR_in, hK_in) + hamilt::HContainer* hR_in, + std::vector* hK_in, + const K_Vectors& kv_in, + std::vector>>>* Hexxd_in = nullptr, + std::vector>>>>* Hexxc_in = nullptr) + : kv(kv_in), Hexxd(Hexxd_in), Hexxc(Hexxc_in), OperatorLCAO(LM_in, kv_in.kvec_d, hR_in, hK_in) { this->cal_type = lcao_exx; } @@ -36,10 +40,14 @@ class OperatorEXX> : public OperatorLCAO private: - bool HR_fixed_done = false; + bool HR_fixed_done = false; + + std::vector>>>* Hexxd = nullptr; + std::vector>>>>* Hexxc = nullptr; - const K_Vectors& kv; + const K_Vectors& kv; }; } // namespace hamilt +#endif #endif \ No newline at end of file