@@ -522,32 +522,12 @@ def eval_orbs_ked_positive_definite(self, points):
522
522
orb_ked : np.ndarray(K_orb, N)
523
523
orbitals kinetic energy density values at a set of grid points (N).
524
524
"""
525
- phi_matrix = np .zeros ((len (points ), len (self .orbitals )))
526
- for index , orbital in enumerate (self .orbitals ):
527
- exps , number = self .orbitals_exp [orbital [1 ]], self .basis_numbers [orbital [1 ]]
528
- slater = AtomicDensity .slater_orbital (exps , number , points )
529
- # derivative
530
- deriv_pref = (number .T - 1.0 ) - exps .T * np .reshape (points , (points .shape [0 ], 1 ))
531
- deriv = deriv_pref * slater
532
- phi_matrix [:, index ] = np .dot (deriv , self .orbitals_coeff [orbital ]).ravel ()
533
-
534
- angular = [] # Angular numbers are l(l + 1)
535
- for index , orbital in enumerate (self .orbitals ):
536
- if "S" in orbital :
537
- angular .append (0.0 )
538
- elif "P" in orbital :
539
- angular .append (2.0 )
540
- elif "D" in orbital :
541
- angular .append (6.0 )
542
- elif "F" in orbital :
543
- angular .append (12.0 )
544
525
545
526
orb_occs = self .orbitals_occupation
546
- orbs_ked = phi_matrix ** 2.0 * orb_occs .ravel () / 2.0
547
- # Add other term
548
- molecular = self .phi_matrix (points ) ** 2.0 * np .array (angular )
549
- orbs_ked += molecular * orb_occs .ravel () / 2.0
550
- return orbs_ked .T
527
+ # 1/2 factor by normalization factor 1/4pi
528
+ ked_factor = 0.5 / (4 * np .pi )
529
+ ked_orbs = self .phi_matrix (points , deriv = 1 ) ** 2 * self .orbitals_occupation .ravel ()
530
+ return ked_factor * ked_orbs
551
531
552
532
def eval_ked_positive_definite (self , points ):
553
533
r"""
@@ -570,32 +550,8 @@ def eval_ked_positive_definite(self, points):
570
550
571
551
"""
572
552
573
- phi_matrix = np .zeros ((len (points ), len (self .orbitals )))
574
- for index , orbital in enumerate (self .orbitals ):
575
- exps , number = self .orbitals_exp [orbital [1 ]], self .basis_numbers [orbital [1 ]]
576
- slater = AtomicDensity .slater_orbital (exps , number , points )
577
- # derivative
578
- deriv_pref = (number .T - 1.0 ) - exps .T * np .reshape (points , (points .shape [0 ], 1 ))
579
- deriv = deriv_pref * slater
580
- phi_matrix [:, index ] = np .dot (deriv , self .orbitals_coeff [orbital ]).ravel ()
581
-
582
- angular = [] # Angular numbers are l(l + 1)
583
- for index , orbital in enumerate (self .orbitals ):
584
- if "S" in orbital :
585
- angular .append (0.0 )
586
- elif "P" in orbital :
587
- angular .append (2.0 )
588
- elif "D" in orbital :
589
- angular .append (6.0 )
590
- elif "F" in orbital :
591
- angular .append (12.0 )
592
-
593
- orb_occs = self .orbitals_occupation
594
- energy = np .dot (phi_matrix ** 2.0 , orb_occs ).ravel () / 2.0
595
- # Add other term
596
- molecular = self .phi_matrix (points ) ** 2.0 * np .array (angular )
597
- energy += np .dot (molecular , orb_occs ).ravel () / 2.0
598
- return energy
553
+ orbs_ked = self .eval_orbs_ked_positive_definite (points )
554
+ return np .sum (orbs_ked , axis = 0 )
599
555
600
556
def eval_radial_d_density (self , points ):
601
557
r"""
0 commit comments