@@ -685,10 +685,11 @@ int main(int argc, char *argv[])
685
685
cout2 << " New max bond dimension of rho:" << maxLinkDim (C.rho ) << " \n " ;
686
686
cout2.flush ();
687
687
}
688
+ const bool b_force_rho_trace = param.boolval (" b_force_rho_trace" );
688
689
689
690
Cplx tr = C.trace_rho ();
690
691
cout2 << " Tr{rho}: " << tr;
691
- if (std::abs (tr - 1 ) > TRACE_RHO_DIV_THRESHOLD)
692
+ if (( std::abs (tr - 1 ) > TRACE_RHO_DIV_THRESHOLD) && b_force_rho_trace )
692
693
{
693
694
cout2 << " , normalizing." ;
694
695
C.rho /= tr;
@@ -911,7 +912,7 @@ int main(int argc, char *argv[])
911
912
if (std::abs (z) < _2_N)
912
913
cout2 << " \t\t Note: " << " Tr{rho} = " << z << " encountered during collapse projectors, "
913
914
<< " this is smaller than 2^(-N)!" ;
914
- C.rho /= z;
915
+ // C.rho /= z;
915
916
}
916
917
if (i_coll == 0 )
917
918
rho_c = MPS (C.rho );
@@ -927,14 +928,13 @@ int main(int argc, char *argv[])
927
928
cout2 << " \t\t Note: this is smaller than 2^(-N)!"
928
929
<< " \n " ;
929
930
// TODO: This is a somewhat arbitrary threshold for the warning.
930
- C.rho /= z;
931
+ // C.rho /= z;
931
932
auto t_collapse_end = steady_clock::now ();
932
933
duration_ms = duration_cast<milliseconds>(t_collapse_end - t_collapse_start);
933
934
cout2 << " Collapse evaluation terminated. Duration: " << duration_ms.count () / 1000 . << " s\n " ;
934
935
}
935
936
936
937
char buf[100 ];
937
- const bool b_force_rho_trace = param.boolval (" b_force_rho_trace" );
938
938
const long force_rho_hermitian_step = param.longval (" force_rho_hermitian_step" );
939
939
const long force_rho_hermitian_gates = param.longval (" force_rho_hermitian_gates" );
940
940
const bool b_quiet = param.boolval (" b_quiet" );
0 commit comments