1 2import testing 3from testing import value_eq,object_eq,text_eq 4 5 6def test_import(): 7 from pwscf_analyzer import PwscfAnalyzer 8#end def test_import 9 10 11 12def test_empty_init(): 13 from pwscf_analyzer import PwscfAnalyzer 14 15 PwscfAnalyzer() 16#end def test_empty_init 17 18 19 20def test_analyze(): 21 import os 22 from numpy import array,ndarray 23 from generic import obj 24 from pwscf_analyzer import PwscfAnalyzer 25 26 tpath = testing.setup_unit_test_output_directory( 27 test = 'pwscf_analyzer', 28 subtest = 'test_analyze', 29 file_sets = ['scf_output','relax_output','nscf_output'], 30 ) 31 32 scf_path = os.path.join(tpath,'scf_output') 33 relax_path = os.path.join(tpath,'relax_output') 34 nscf_path = os.path.join(tpath,'nscf_output') 35 36 # scf w/o actual analysis 37 pa = PwscfAnalyzer(scf_path,'scf.in','scf.out') 38 39 del pa.abspath 40 del pa.path 41 42 pa_ref = obj( 43 infile_name = 'scf.in', 44 outfile_name = 'scf.out', 45 pw2c_outfile_name = None, 46 info = obj( 47 md_only = False, 48 warn = False, 49 xml = False, 50 ), 51 input = obj( 52 atomic_positions = obj( 53 atoms = ['C','C','C','C','C','C','C','C','C','C','C','C','C','C','C'], 54 positions = array( 55 [[-0.08993686, -0.08993686, -0.08993686], 56 [ 3.46309801, 3.46309801, -0.08993686], 57 [ 5.05974172, 5.05974172, 1.70077347], 58 [-0.08993686, 3.46309801, 3.46309801], 59 [ 1.70077347, 5.05974172, 5.05974172], 60 [ 3.37014984, 6.7493336 , 3.37014983], 61 [ 5.05974172, 8.41870996, 5.05974172], 62 [ 3.46309801, -0.08993686, 3.46309801], 63 [ 5.05974172, 1.70077347, 5.05974172], 64 [ 6.7493336 , 3.37014984, 3.37014984], 65 [ 8.41870996, 5.05974172, 5.05974172], 66 [ 3.37014984, 3.37014984, 6.7493336 ], 67 [ 5.05974172, 5.05974172, 8.41870996], 68 [ 6.7493336 , 6.7493336 , 6.7493336 ], 69 [ 8.43290286, 8.43290286, 8.43290286]],dtype=float), 70 specifier = 'bohr', 71 ), 72 atomic_species = obj( 73 atoms = ['C'], 74 specifier = '', 75 masses = obj( 76 C = 12.011, 77 ), 78 pseudopotentials = obj( 79 C = 'C.BFD.upf', 80 ), 81 ), 82 cell_parameters = obj( 83 specifier = 'bohr', 84 vectors = array( 85 [[ 6.74632229, 6.74632229, 0. ], 86 [-0. , 6.74632229, 6.74632229], 87 [ 6.74632229, -0. , 6.74632229]],dtype=float), 88 ), 89 control = obj( 90 calculation = 'scf', 91 outdir = 'pwscf_output', 92 prefix = 'pwscf', 93 pseudo_dir = './', 94 verbosity = 'high', 95 tstress = True, 96 tprnfor = True, 97 ), 98 electrons = obj( 99 conv_thr = 1e-07, 100 ), 101 k_points = obj( 102 grid = array([2.,2.,2.],dtype=float), 103 shift = array([0.,0.,0.],dtype=float), 104 specifier = 'automatic', 105 ), 106 system = obj( 107 ecutwfc = 75.0, 108 ibrav = 0, 109 input_dft = 'lda', 110 nat = 15, 111 nspin = 1, 112 ntyp = 1, 113 tot_charge = 0.0, 114 ), 115 ), 116 ) 117 118 assert(object_eq(pa.to_obj(),pa_ref)) 119 120 input_read = pa.input.copy() 121 122 # scf w/ full analysis 123 pa = PwscfAnalyzer(scf_path,'scf.in','scf.out',analyze=True) 124 125 assert(object_eq(pa.input,input_read)) 126 127 del pa.input 128 del pa.abspath 129 del pa.path 130 131 # Note: band read is failing for spin unpolarized case. 132 # Test needed for spin polarized case w/ bands, then fix unpolarized. 133 pa_ref = obj( 134 E = -170.11048381, 135 Ef = 0.0, 136 cputime = 0.001175, 137 energies = array([-170.11048381],dtype=float), 138 fermi_energies = array([],dtype=float), 139 forces = array( 140 [[[-0.01852018, -0.01852018, -0.01852018], 141 [ 0.01852018, 0.01852018, -0.01852018], 142 [ 0. , 0. , -0.00189264], 143 [-0.01852018, 0.01852018, 0.01852018], 144 [-0.00189264, -0. , 0. ], 145 [ 0.00046488, -0.00046488, 0.00046488], 146 [-0. , 0.00189264, 0. ], 147 [ 0.01852018, -0.01852018, 0.01852018], 148 [ 0. , -0.00189264, -0. ], 149 [-0.00046488, 0.00046488, 0.00046488], 150 [ 0.00189264, 0. , 0. ], 151 [ 0.00046488, 0.00046488, -0.00046488], 152 [ 0. , -0. , 0.00189264], 153 [-0.00046488, -0.00046488, -0.00046488], 154 [-0. , 0. , 0. ]]],dtype=float), 155 infile_name = 'scf.in', 156 kpoints_cart = array( 157 [[ 0. , 0. , 0. ], 158 [-0.3535534, 0.3535534, -0.3535534], 159 [ 0. , 0. , -0.7071068]],dtype=float), 160 kpoints_unit = array([[ 0., 0. , 0. ], 161 [ 0., 0. , -0.5], 162 [ 0., -0.5, -0.5]],dtype=float), 163 kweights = array([0.25,1., 0.75],dtype=float), 164 max_forces = array([0.03207789],dtype=float), 165 outfile_name = 'scf.out', 166 pressure = -170.96, 167 pw2c_outfile_name = None, 168 stress = [[-0.00116217, 0.0, 0.0, -170.96, 0.0, 0.0], 169 [ 0.0, -0.00116217, -0.0, 0.0, -170.96, -0.0], 170 [ 0.0, 0.0, -0.00116217, 0.0, 0.0, -170.96]], 171 tot_forces = array([0.064343],dtype=float), 172 volume = 614.0889, 173 walltime = 0.00164444444444, 174 info = obj( 175 md_only = False, 176 warn = False, 177 xml = False, 178 ), 179 md_data = obj( 180 kinetic_energy = array([-170.96],dtype=float), 181 potential_energy = array([0.84951619],dtype=float), 182 pressure = array([-170.96],dtype=float), 183 temperature = array([0.],dtype=float), 184 time = array([0.],dtype=float), 185 total_energy = array([-170.11048381],dtype=float), 186 ), 187 md_stats = obj( 188 kinetic_energy = (-170.96, 0.0), 189 potential_energy = (0.8495161900000028, 0.0), 190 pressure = (-170.96, 0.0), 191 temperature = (0.0, 0.0), 192 time = (0.0, 0.0), 193 total_energy = (-170.11048381, 0.0), 194 ), 195 ) 196 197 assert(object_eq(pa.to_obj(),pa_ref)) 198 199 200 # relax w/ full analysis 201 pa = PwscfAnalyzer(relax_path,'relax.in','relax.out',analyze=True) 202 203 del pa.input 204 del pa.abspath 205 del pa.path 206 207 pa_ref = obj( 208 E = -168.41267772, 209 Ef = 0.0, 210 cputime = 0.00186111111111, 211 energies = array([-168.38623938,-168.40640935,-168.41263281,-168.41267772],dtype=float), 212 fermi_energies = array([],dtype=float), 213 forces = array( 214 [[[-4.625982e-02, -4.625982e-02, -4.625982e-02], 215 [ 4.625982e-02, 4.625982e-02, -4.625982e-02], 216 [ 0.000000e+00, 0.000000e+00, 2.650527e-02], 217 [-4.625982e-02, 4.625982e-02, 4.625982e-02], 218 [ 2.650527e-02, 0.000000e+00, 0.000000e+00], 219 [-2.041270e-03, 2.041270e-03, -2.041270e-03], 220 [ 0.000000e+00, -2.650527e-02, 0.000000e+00], 221 [ 4.625982e-02, -4.625982e-02, 4.625982e-02], 222 [ 0.000000e+00, 2.650527e-02, 0.000000e+00], 223 [ 2.041270e-03, -2.041270e-03, -2.041270e-03], 224 [-2.650527e-02, -0.000000e+00, 0.000000e+00], 225 [-2.041270e-03, -2.041270e-03, 2.041270e-03], 226 [ 0.000000e+00, 0.000000e+00, -2.650527e-02], 227 [ 2.041270e-03, 2.041270e-03, 2.041270e-03], 228 [ 0.000000e+00, 0.000000e+00, 0.000000e+00]], 229 [[-2.192410e-02, -2.192410e-02, -2.192410e-02], 230 [ 2.192410e-02, 2.192410e-02, -2.192410e-02], 231 [ 0.000000e+00, 0.000000e+00, -1.131570e-02], 232 [-2.192410e-02, 2.192410e-02, 2.192410e-02], 233 [-1.131570e-02, 0.000000e+00, 0.000000e+00], 234 [ 1.693610e-03, -1.693610e-03, 1.693610e-03], 235 [ 0.000000e+00, 1.131570e-02, 0.000000e+00], 236 [ 2.192410e-02, -2.192410e-02, 2.192410e-02], 237 [ 0.000000e+00, -1.131570e-02, 0.000000e+00], 238 [-1.693610e-03, 1.693610e-03, 1.693610e-03], 239 [ 1.131570e-02, -0.000000e+00, 0.000000e+00], 240 [ 1.693610e-03, 1.693610e-03, -1.693610e-03], 241 [-0.000000e+00, 0.000000e+00, 1.131570e-02], 242 [-1.693610e-03, -1.693610e-03, -1.693610e-03], 243 [ 0.000000e+00, 0.000000e+00, 0.000000e+00]], 244 [[ 5.327200e-04, 5.327200e-04, 5.327200e-04], 245 [-5.327200e-04, -5.327200e-04, 5.327200e-04], 246 [ 0.000000e+00, 0.000000e+00, -1.372200e-03], 247 [ 5.327200e-04, -5.327200e-04, -5.327200e-04], 248 [-1.372200e-03, -0.000000e+00, 0.000000e+00], 249 [-3.131240e-03, 3.131240e-03, -3.131240e-03], 250 [ 0.000000e+00, 1.372200e-03, -0.000000e+00], 251 [-5.327200e-04, 5.327200e-04, -5.327200e-04], 252 [-0.000000e+00, -1.372200e-03, 0.000000e+00], 253 [ 3.131240e-03, -3.131240e-03, -3.131240e-03], 254 [ 1.372200e-03, 0.000000e+00, -0.000000e+00], 255 [-3.131240e-03, -3.131240e-03, 3.131240e-03], 256 [ 0.000000e+00, 0.000000e+00, 1.372200e-03], 257 [ 3.131240e-03, 3.131240e-03, 3.131240e-03], 258 [ 0.000000e+00, 0.000000e+00, 0.000000e+00]], 259 [[ 6.653000e-05, 6.653000e-05, 6.653000e-05], 260 [-6.653000e-05, -6.653000e-05, 6.653000e-05], 261 [ 0.000000e+00, 0.000000e+00, -4.582100e-04], 262 [ 6.653000e-05, -6.653000e-05, -6.653000e-05], 263 [-4.582100e-04, 0.000000e+00, 0.000000e+00], 264 [ 8.294900e-04, -8.294900e-04, 8.294900e-04], 265 [ 0.000000e+00, 4.582100e-04, 0.000000e+00], 266 [-6.653000e-05, 6.653000e-05, -6.653000e-05], 267 [ 0.000000e+00, -4.582100e-04, 0.000000e+00], 268 [-8.294900e-04, 8.294900e-04, 8.294900e-04], 269 [ 4.582100e-04, 0.000000e+00, -0.000000e+00], 270 [ 8.294900e-04, 8.294900e-04, -8.294900e-04], 271 [ 0.000000e+00, 0.000000e+00, 4.582100e-04], 272 [-8.294900e-04, -8.294900e-04, -8.294900e-04], 273 [ 0.000000e+00, 0.000000e+00, 0.000000e+00]]],dtype=float), 274 infile_name = 'relax.in', 275 max_forces = array([0.08012436,0.03797366,0.00542347,0.00143672],dtype=float), 276 outfile_name = 'relax.out', 277 pressure = 0.0, 278 pw2c_outfile_name = None, 279 stress = [], 280 tot_forces = array([],dtype=float), 281 volume = 614.0889, 282 walltime = 0.00251388888889, 283 info = obj( 284 md_only = False, 285 warn = False, 286 xml = False, 287 ), 288 structures = obj({ 289 0 : obj( 290 atoms = ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'], 291 positions = array( 292 [[-0.04625982, -0.04625982, -0.04625982], 293 [ 3.41942097, 3.41942097, -0.04625982], 294 [ 5.05974172, 5.05974172, 1.71308584], 295 [-0.04625982, 3.41942097, 3.41942097], 296 [ 1.71308584, 5.05974172, 5.05974172], 297 [ 3.37111988, 6.74836356, 3.37111987], 298 [ 5.05974172, 8.40639759, 5.05974172], 299 [ 3.41942097, -0.04625982, 3.41942097], 300 [ 5.05974172, 1.71308584, 5.05974172], 301 [ 6.74836356, 3.37111988, 3.37111988], 302 [ 8.40639759, 5.05974172, 5.05974172], 303 [ 3.37111988, 3.37111988, 6.74836356], 304 [ 5.05974172, 5.05974172, 8.40639759], 305 [ 6.74836356, 6.74836356, 6.74836356], 306 [ 8.43290286, 8.43290286, 8.43290286]], 307 dtype=float), 308 ), 309 1 : obj( 310 atoms = ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'], 311 positions = array( 312 [[-0.09055704, -0.09055704, -0.09055704], 313 [ 3.46371819, 3.46371819, -0.09055704], 314 [ 5.05974172, 5.05974172, 1.70201536], 315 [-0.09055704, 3.46371819, 3.46371819], 316 [ 1.70201536, 5.05974172, 5.05974172], 317 [ 3.37322753, 6.74625591, 3.37322752], 318 [ 5.05974172, 8.41746807, 5.05974172], 319 [ 3.46371819, -0.09055704, 3.46371819], 320 [ 5.05974172, 1.70201536, 5.05974172], 321 [ 6.74625591, 3.37322753, 3.37322753], 322 [ 8.41746807, 5.05974172, 5.05974172], 323 [ 3.37322753, 3.37322753, 6.74625591], 324 [ 5.05974172, 5.05974172, 8.41746807], 325 [ 6.74625591, 6.74625591, 6.74625591], 326 [ 8.43290286, 8.43290286, 8.43290286]], 327 dtype=float), 328 ), 329 2 : obj( 330 atoms = ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'], 331 positions = array( 332 [[-0.08993686, -0.08993686, -0.08993686], 333 [ 3.46309801, 3.46309801, -0.08993686], 334 [ 5.05974172, 5.05974172, 1.70077347], 335 [-0.08993686, 3.46309801, 3.46309801], 336 [ 1.70077347, 5.05974172, 5.05974172], 337 [ 3.37014984, 6.7493336 , 3.37014983], 338 [ 5.05974172, 8.41870996, 5.05974172], 339 [ 3.46309801, -0.08993686, 3.46309801], 340 [ 5.05974172, 1.70077347, 5.05974172], 341 [ 6.7493336 , 3.37014984, 3.37014984], 342 [ 8.41870996, 5.05974172, 5.05974172], 343 [ 3.37014984, 3.37014984, 6.7493336 ], 344 [ 5.05974172, 5.05974172, 8.41870996], 345 [ 6.7493336 , 6.7493336 , 6.7493336 ], 346 [ 8.43290286, 8.43290286, 8.43290286]], 347 dtype=float), 348 ), 349 3 : obj( 350 atoms = ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'], 351 positions = array( 352 [[-0.08993686, -0.08993686, -0.08993686], 353 [ 3.46309801, 3.46309801, -0.08993686], 354 [ 5.05974172, 5.05974172, 1.70077347], 355 [-0.08993686, 3.46309801, 3.46309801], 356 [ 1.70077347, 5.05974172, 5.05974172], 357 [ 3.37014984, 6.7493336 , 3.37014983], 358 [ 5.05974172, 8.41870996, 5.05974172], 359 [ 3.46309801, -0.08993686, 3.46309801], 360 [ 5.05974172, 1.70077347, 5.05974172], 361 [ 6.7493336 , 3.37014984, 3.37014984], 362 [ 8.41870996, 5.05974172, 5.05974172], 363 [ 3.37014984, 3.37014984, 6.7493336 ], 364 [ 5.05974172, 5.05974172, 8.41870996], 365 [ 6.7493336 , 6.7493336 , 6.7493336 ], 366 [ 8.43290286, 8.43290286, 8.43290286]], 367 dtype=float), 368 ), 369 }), 370 ) 371 372 assert(object_eq(pa.to_obj(),pa_ref)) 373 374 375 # nscf w/o actual analysis 376 pa = PwscfAnalyzer(nscf_path,'nscf.in','nscf.out') 377 378 del pa.abspath 379 del pa.path 380 381 pa_ref = obj( 382 infile_name = 'nscf.in', 383 outfile_name = 'nscf.out', 384 pw2c_outfile_name = None, 385 info = obj( 386 md_only = False, 387 warn = False, 388 xml = False, 389 ), 390 input = obj( 391 atomic_positions = obj( 392 atoms = ['Sr', 'Co', 'O', 'O', 'O'], 393 positions = array( 394 [[ 0. , 0. , 0. ], 395 [ 0. , -1.06131318, 6.18578654], 396 [ 0. , -3.62354986, 3.62354986], 397 [-2.56223668, 0.75046175, 4.37401161], 398 [ 2.56223668, 0.75046175, 4.37401161]],dtype=float), 399 specifier = 'alat', 400 ), 401 atomic_species = obj( 402 atoms = ['Co', 'O', 'Sr'], 403 specifier = '', 404 masses = obj( 405 Co = 58.933, 406 O = 15.999, 407 Sr = 87.956, 408 ), 409 pseudopotentials = obj( 410 Co = 'Co.opt.upf', 411 O = 'O.opt.upf', 412 Sr = 'Sr.opt.upf', 413 ), 414 ), 415 cell_parameters = obj( 416 specifier = 'alat', 417 vectors = array( 418 [[-5.12447336, -3.62354986, 3.62354986], 419 [ 5.12447336, -3.62354986, 3.62354986], 420 [ 0. , 5.12447336, 5.12447336]],dtype=float), 421 ), 422 control = obj( 423 calculation = 'nscf', 424 outdir = 'pwscf_output', 425 prefix = 'pwscf', 426 pseudo_dir = './', 427 tprnfor = True, 428 tstress = True, 429 verbosity = 'high', 430 wf_collect = True, 431 ), 432 electrons = obj( 433 conv_thr = 1e-08, 434 electron_maxstep = 1000, 435 mixing_beta = 0.15, 436 mixing_mode = 'local-TF', 437 ), 438 k_points = obj( 439 kpoints = array( 440 [[ 0. , 0. , 0. ], 441 [-0. , 0.5, -0. ], 442 [ 0.5, 0.5, -0. ], 443 [ 0.5, 0.5, 0.5]],dtype=float), 444 nkpoints = 4, 445 specifier = 'crystal', 446 weights = array([1., 1., 1., 1.],dtype=float), 447 ), 448 system = obj( 449 degauss = 0.001, 450 ecutrho = 1750.0, 451 ecutwfc = 350.0, 452 ibrav = 0, 453 input_dft = 'lda', 454 lda_plus_u = True, 455 nat = 5, 456 nbnd = 30, 457 nosym = True, 458 nspin = 2, 459 ntyp = 3, 460 occupations = 'smearing', 461 smearing = 'fermi-dirac', 462 tot_charge = 0.0, 463 celldm = obj({ 464 1 : 1.0, 465 }), 466 hubbard_u = obj({ 467 1 : 1.0, 468 }), 469 starting_magnetization = obj({ 470 1 : 1.0, 471 }), 472 ), 473 ), 474 ) 475 476 assert(object_eq(pa.to_obj(),pa_ref)) 477 478 input_read = pa.input.copy() 479 480 # nscf w/ analysis 481 pa = PwscfAnalyzer(nscf_path,'nscf.in','nscf.out',analyze=True) 482 483 assert(object_eq(pa.input,input_read)) 484 485 del pa.input 486 del pa.abspath 487 del pa.path 488 489 pa_ref = obj( 490 E = 0.0, 491 Ef = 10.1198, 492 cputime = 0.076025, 493 energies = array([],dtype=float), 494 fermi_energies = array([10.1198],dtype=float), 495 infile_name = 'nscf.in', 496 kpoints_cart = array( 497 [[ 0. , 0. , 0. ], 498 [ 0.0487855, -0.0344966, 0.0344966], 499 [ 0. , -0.0689931, 0.0689931], 500 [ 0. , -0.0202076, 0.1177786]],dtype=float), 501 kpoints_unit = array( 502 [[0. , 0. , 0. ], 503 [0. , 0.5, 0. ], 504 [0.5, 0.5, 0. ], 505 [0.5, 0.5, 0.5]],dtype=float), 506 kweights = array([0.0041667, 0.0041667, 0.0041667, 0.0041667],dtype=float), 507 outfile_name = 'nscf.out', 508 pressure = 0.0, 509 pw2c_outfile_name = None, 510 stress = [], 511 volume = 380.621, 512 walltime = 0.09731666666666666, 513 info = obj( 514 md_only = False, 515 warn = False, 516 xml = False, 517 ), 518 bands = obj( 519 electronic_structure = 'insulating', 520 vbm = obj( 521 band_number = 24, 522 energy = 10.1131, 523 index = 1, 524 kpoint_2pi_alat = array([ 0.0487855, -0.0344966, 0.0344966],dtype=float), 525 kpoint_rel = array([0., 0.5, 0. ],dtype=float), 526 pol = 'up', 527 ), 528 cbm = obj( 529 band_number = 23, 530 energy = 10.159, 531 index = 0, 532 kpoint_2pi_alat = array([0., 0., 0.],dtype=float), 533 kpoint_rel = array([0., 0., 0.],dtype=float), 534 pol = 'down', 535 ), 536 direct_gap = obj( 537 energy = 0.5689999999999991, 538 index = 2, 539 kpoint_2pi_alat = array([ 0., -0.0689931, 0.0689931],dtype=float), 540 kpoint_rel = array([0.5, 0.5, 0. ],dtype=float), 541 pol = ['up', 'down'], 542 ), 543 indirect_gap = obj( 544 energy = 0.046, 545 kpoints = obj( 546 cbm = obj( 547 band_number = 23, 548 energy = 10.159, 549 index = 0, 550 kpoint_2pi_alat = array([0., 0., 0.],dtype=float), 551 kpoint_rel = array([0., 0., 0.],dtype=float), 552 pol = 'down', 553 ), 554 vbm = obj( 555 band_number = 24, 556 energy = 10.1131, 557 index = 1, 558 kpoint_2pi_alat = array([ 0.0487855, -0.0344966, 0.0344966],dtype=float), 559 kpoint_rel = array([0., 0.5, 0. ],dtype=float), 560 pol = 'up', 561 ), 562 ), 563 ), 564 up = obj({ 565 0 : obj( 566 eigs = array( 567 [-86.6481, -50.4218, -50.4218, -50.4218, -22.2273, -8.1615, -6.5642, -6.5642, 568 -4.3768, -4.3768, -4.3768, 5.6456, 5.6456, 5.6456, 6.1126, 6.1126, 569 6.1126, 7.3099, 7.3099, 8.4104, 8.4104, 8.4104, 9.1291, 9.1291, 570 9.1291, 15.3662, 15.3662, 16.3166, 18.0967, 18.0967],dtype=float), 571 index = 0, 572 kpoint_2pi_alat = array([0., 0., 0.],dtype=float), 573 kpoint_rel = array([0., 0., 0.],dtype=float), 574 occs = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 575 1., 1., 1., 1., 1., 1., 1., 1., 1., 576 1., 0., 0., 0., 0., 0.],dtype=float), 577 pol = 'up', 578 ), 579 1 : obj( 580 eigs = array( 581 [-86.6481, -50.4228, -50.4217, -50.4217, -22.1938, -8.2033, -6.8047, -6.5167, 582 -4.2982, -4.2982, -3.7851, 3.4922, 5.4009, 5.4009, 5.684 , 5.684 , 583 6.1333, 7.0502, 7.3176, 7.5721, 8.602 , 8.602 , 9.1755, 9.1755, 584 10.1131, 17.3214, 17.5708, 18.3183, 19.7307, 19.7307],dtype=float), 585 index = 1, 586 kpoint_2pi_alat = array([ 0.0487855, -0.0344966, 0.0344966],dtype=float), 587 kpoint_rel = array([0., 0.5, 0. ],dtype=float), 588 occs = array( 589 [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 590 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 591 1., 1., 1., 1., 0.6219, 0., 0., 0., 0., 0.],dtype=float), 592 pol = 'up', 593 ), 594 2 : obj( 595 eigs = array( 596 [-86.6481, -50.4227, -50.4227, -50.4216, -22.1654, -7.1894, -7.1894, -7.1664, 597 -4.2194, -4.0301, -4.0301, 3.275 , 3.6075, 4.0541, 5.1708, 5.1708, 598 6.5471, 8.0257, 8.0257, 8.2978, 8.5616, 8.8243, 8.8243, 9.5042, 599 12.3636, 18.1392, 18.3196, 19.7474, 19.7474, 20.6336],dtype=float), 600 index = 2, 601 kpoint_2pi_alat = array([ 0., -0.0689931, 0.0689931],dtype=float), 602 kpoint_rel = array([0.5, 0.5, 0. ],dtype=float), 603 occs = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 604 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 605 0., 0., 0., 0., 0., 0.],dtype=float), 606 pol = 'up', 607 ), 608 3 : obj( 609 eigs = array( 610 [-86.6481, -50.4226, -50.4226, -50.4226, -22.1402, -6.7619, -6.7619, -6.7619, 611 -4.7105, -4.7105, -4.7105, 3.0227, 3.618 , 3.618 , 4.709 , 4.709 , 612 4.709 , 8.8386, 8.8386, 8.8386, 9.5927, 9.5927, 9.5927, 12.3737, 613 12.3737, 17.0409, 17.0409, 17.0409, 20.0775, 20.0775],dtype=float), 614 index = 3, 615 kpoint_2pi_alat = array([ 0., -0.0202076, 0.1177786],dtype=float), 616 kpoint_rel = array([0.5, 0.5, 0.5],dtype=float), 617 occs = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 618 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 619 0., 0., 0., 0., 0., 0.],dtype=float), 620 pol = 'up', 621 ), 622 }), 623 down = obj({ 624 0 : obj( 625 eigs = array( 626 [-83.7428, -47.627 , -47.627 , -47.627 , -22.2142, -7.8414, -6.1549, -6.1549, 627 -4.359 , -4.359 , -4.359 , 5.9202, 5.9202, 5.9202, 8.7802, 8.7802, 628 8.7802, 8.8094, 8.8094, 8.8094, 9.4806, 9.4806, 9.4806, 10.159 , 629 10.159 , 15.4284, 15.4284, 16.4943, 18.2226, 18.2226],dtype=float), 630 index = 0, 631 kpoint_2pi_alat = array([0., 0., 0.],dtype=float), 632 kpoint_rel = array([0., 0., 0.],dtype=float), 633 occs = array( 634 [1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1., 635 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 0.053, 636 0.053, 0. , 0. , 0. , 0. , 0. ],dtype=float), 637 pol = 'down', 638 ), 639 1 : obj( 640 eigs = array( 641 [-83.7428, -47.6283, -47.6269, -47.6269, -22.1812, -7.915 , -6.4635, -6.1049, 642 -4.2816, -4.2816, -3.7107, 4.6303, 5.9542, 5.9542, 7.0588, 7.0588, 643 7.3901, 7.9093, 8.8232, 8.9427, 8.9427, 10.1687, 10.6939, 10.6939, 644 12.1453, 17.4719, 17.6798, 18.3438, 19.8424, 19.8424],dtype=float), 645 index = 1, 646 kpoint_2pi_alat = array([ 0.0487855, -0.0344966, 0.0344966],dtype=float), 647 kpoint_rel = array([0., 0.5, 0. ],dtype=float), 648 occs = array( 649 [1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1., 650 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1., 651 1. , 0.0268, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],dtype=float), 652 pol = 'down', 653 ), 654 2 : obj( 655 eigs = array( 656 [-83.7428, -47.6282, -47.6282, -47.6268, -22.1532, -6.905 , -6.905 , -6.7976, 657 -4.2063, -3.9506, -3.9506, 4.0076, 4.9912, 5.0889, 6.6171, 6.6171, 658 6.7985, 8.3962, 8.3962, 9.935 , 10.504 , 10.5336, 10.5336, 10.984 , 659 14.1185, 18.2049, 18.4398, 19.8756, 19.8756, 20.6738],dtype=float), 660 index = 2, 661 kpoint_2pi_alat = array([ 0. , -0.0689931, 0.0689931],dtype=float), 662 kpoint_rel = array([0.5, 0.5, 0. ],dtype=float), 663 occs = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 664 0., 0., 0., 0., 0., 0.],dtype=float), 665 pol = 'down', 666 ), 667 3 : obj( 668 eigs = array( 669 [-83.7428, -47.6281, -47.6281, -47.6281, -22.1282, -6.418 , -6.418 , -6.418 , 670 -4.6851, -4.6851, -4.6851, 3.2996, 5.1034, 5.1034, 5.9255, 5.9255, 671 5.9255, 10.0318, 10.0318, 10.0318, 10.8041, 10.8041, 10.8041, 14.1246, 672 14.1246, 17.1249, 17.1249, 17.1249, 20.1029, 20.1029],dtype=float), 673 index = 3, 674 kpoint_2pi_alat = array([ 0., -0.0202076, 0.1177786],dtype=float), 675 kpoint_rel = array([0.5, 0.5, 0.5],dtype=float), 676 occs = array( 677 [1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 1. , 678 1. , 1. , 1. , 1. , 1. , 1. , 1. , 0.9985, 0.9985, 0.9985, 679 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],dtype=float), 680 pol = 'down', 681 ), 682 }), 683 ), 684 ) 685 686 assert(object_eq(pa.to_obj(),pa_ref)) 687 688#end def test_analyze 689 690 691 692