3434from libra_py import units
3535from libra_py import scan
3636from libra_py import regexlib as rgl
37+ from libra_py import data_conv
3738
3839import libra_py .packages .cp2k .methods as CP2K_methods
3940import libra_py .workflows .nbra .mapping2 as mapping2
41+ import libra_py .workflows .nbra .mapping3 as mapping3
4042import libra_py .workflows .nbra .step3 as step3
4143
4244
@@ -516,6 +518,7 @@ def mopac_compute_adi(q, params, full_id):
516518 mopac_jobid = params [itraj ]["mopac_jobid" ] = F"timestep_{ timestep } _traj_{ itraj } "
517519 mopac_input_prefix = params [itraj ]["mopac_input_prefix" ]
518520 mopac_output_prefix = params [itraj ]["mopac_output_prefix" ]
521+ active_space = params [itraj ]["active_space" ]
519522 dt = params [itraj ]["dt" ]
520523 do_Lowdin = params [itraj ]["do_Lowdin" ]
521524
@@ -594,13 +597,26 @@ def mopac_compute_adi(q, params, full_id):
594597 ci_ovlp_curr = None
595598 if do_Lowdin :
596599 ident_curr = U_curr .T () * S_curr .real () * U_curr
597- ovlp_sd_curr = mapping2 .ovlp_mat_arb (configs_curr , configs_curr , ident_curr , False ).real ()
600+ # The original (older) approach
601+ #ovlp_sd_curr = mapping2.ovlp_mat_arb(configs_curr, configs_curr, ident_curr, False).real()
602+
603+ # The new way:
604+ # I don't like this way - we need to fix it later
605+ ident_curr = data_conv .MATRIX2nparray (ident_curr ).real # MATRIX -> real np array
606+ ovlp_sd_curr = mapping3 .ovlp_mat_arb (configs_curr , configs_curr , ident_curr , active_space ) # do the calculations
607+ ovlp_sd_curr = data_conv .nparray2MATRIX ( ovlp_sd_curr ) # real np array -> MATRIX
608+
598609 ovlp_sd_curr .scale (- 1 , 0 , sqt2 )
599610 ovlp_sd_curr .scale (0 , - 1 , sqt2 )
600611 ovlp_sd_curr .scale (0 , 0 , 0.5 )
601612
602613 ident_prev = U_prev .T () * S_prev .real () * U_prev
603- ovlp_sd_prev = mapping2 .ovlp_mat_arb (configs_prev , configs_prev , ident_prev , False ).real ()
614+ #ovlp_sd_prev = mapping2.ovlp_mat_arb(configs_prev, configs_prev, ident_prev, False).real()
615+
616+ ident_prev = data_conv .MATRIX2nparray (ident_prev ).real # MATRIX -> real np array
617+ ovlp_sd_prev = mapping3 .ovlp_mat_arb (configs_prev , configs_prev , ident_prev , active_space ) # do the calculations
618+ ovlp_sd_prev = data_conv .nparray2MATRIX ( ovlp_sd_prev ) # complex np array -> CMATRIX
619+
604620 ovlp_sd_prev .scale (- 1 , 0 , sqt2 )
605621 ovlp_sd_prev .scale (0 , - 1 , sqt2 )
606622 ovlp_sd_prev .scale (0 , 0 , 0.5 )
@@ -620,14 +636,25 @@ def mopac_compute_adi(q, params, full_id):
620636 ci_ovlp_curr = U_curr .T () * ovlp_ci_curr .real () * U_curr
621637 else :
622638 S_curr = MO_curr .T () * MO_curr
623- ovlp_sd_curr = mapping2 .ovlp_mat_arb (configs_curr , configs_curr , S_curr , False ).real ()
639+ #ovlp_sd_curr = mapping2.ovlp_mat_arb(configs_curr, configs_curr, S_curr, False).real()
640+
641+ S_curr = data_conv .MATRIX2nparray (S_curr ).real # MATRIX -> real np array
642+ ovlp_sd_curr = mapping3 .ovlp_mat_arb (configs_curr , configs_curr , S_curr , active_space ) # do the calculations
643+ ovlp_sd_curr = data_conv .nparray2MATRIX ( ovlp_sd_curr ) # complex np array -> MATRIX
644+
624645 ovlp_sd_curr .scale (- 1 , 0 , sqt2 )
625646 ovlp_sd_curr .scale (0 , - 1 , sqt2 )
626647 ovlp_sd_curr .scale (0 , 0 , 0.5 )
627648 ci_ovlp_curr = CI_curr .T () * ovlp_sd_curr * CI_curr
628649
629650 # Time-overlap in the SD basis
630- time_ovlp_sd = mapping2 .ovlp_mat_arb (configs_prev , configs_curr , mo_st , False ).real ()
651+ #time_ovlp_sd = mapping2.ovlp_mat_arb(configs_prev, configs_curr, mo_st, False).real()
652+
653+ mo_st = data_conv .MATRIX2nparray (mo_st ).real # MATRIX -> real np array
654+ time_ovlp_sd = mapping3 .ovlp_mat_arb (configs_prev , configs_curr , mo_st , active_space ) # do the calculations
655+ time_ovlp_sd = data_conv .nparray2MATRIX ( time_ovlp_sd ) # complex np array -> MATRIX
656+
657+
631658 # Scaling to account for SAC prefactors:
632659 time_ovlp_sd .scale (- 1 , 0 , sqt2 )
633660 time_ovlp_sd .scale (0 , - 1 , sqt2 )
0 commit comments