If the dimensionality of the problems under investigation is growing (particularly so for density matrix description in LvNE simulations), efficient methods for dimension reduction become mandatory. Instead of empirical truncation of the state space, we implemented here the method of balanced truncation, established as a powerful technique for the control of linear systems. This procedure is based on states identified as being simultaneously easily controllable and observable and on restricting the dynamics to the subspace spanned by such states.
As we have already demonstrated for some test cases, the procedure can greatly reduce the number of equations to be solved without notably changing the overall response of the system to the external control fields, see [1].
The MATLAB function qm_balance.m can be found here
Note that qm_balance.m works only with objects of the main classes given in the following table:
class name | description |
---|---|
ket | state vecors, in eigen/energy representation |
rho | density matrices, in eigen/energy representation |
As input this function requires matrices A,B,N,C,D along with vectors xi, xe which are typically generated using our function qm_abncd. These data are read from input data file ket_0.mat or rho_0.mat for TDSE or LvNE simulations, respectively,.
As output this function produces transformed matrices A,B,N,C,D along with vectors xi, xe etc which are saved as output data file ket_bal_0.mat or rho_bal_0.mat for TDSE or LvNE simulations, respectively. These matrices/vectors can then be truncated by running our function qm_truncate ...
For more details on the balancing transformation, see this page of our WavePacket central wiki.
Two options for stabilizing A-matrix: EVS and SSU
Two options for solving generalized Lyapunov equations: by iterative method or by biconjugate gradient method
Two options for performing the balancing transform: SRBT and MRMR
Note that function qm_init should be run previously in order to initialize all variables in use. Of particular interest are the following structures:
Wiki: Reference.Classes.Main
Wiki: Reference.Classes.ket_rho
Wiki: Reference.Files.Main
Wiki: Reference.Programs.Main
Wiki: Reference.Programs.qm_abncd
Wiki: Reference.Programs.qm_init
Wiki: Reference.Programs.qm_optimal
Wiki: Reference.Programs.qm_truncate
Wiki: Reference.Variables.reduce
Wiki: Users.Matlab.Main