-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
Hey everyone,
I just started using TenCirChem, especially the UCCSD class and have a few questions.
There I wonder how the simulated operator/circuit looks like. For this my exact questions are:
- Is the UCCSD simulated in a trotterized form?
- If the UCCSD is trotterized is there an option to change to trotter order, which is commonly done by just repeating the trotterized circuit.
- If the UCCSD is trotterized, how are the excitations ordered? More precisely, are the single excitations or the double excitations first applied to the state.
So far I found the following information:
- You mention in the Advanced Topics section of the documentation that you use the property
$G^3=G$ of excitation operators, which results in$e^{\theta G} = I + G^2 - \cos\theta G^2 +\sin \theta G$ , to simulate a state under an excitation operator (I am already familiar with this form). I currently use the engine "civector" and "civector-large", since this property seems to be used only for the engines "civector", "civector-large", "statevector", and "pyscf". My understanding is that this property can only be used if the UCCSD is in a trotterized form. Because of this I think the UCCSD is simulated in a trotterized form (at least for the engines listed above). Is this the correct reasoning? - Also, I would help me a lot if you could point me to the section in the code where I can see that trotterization is used and also in which order the excitation operators are applied. So far, I think the code I search for is in evolve_civector.py, but I was unable to pinpoint where the trotterization and order of excitations is used. I think the function get_theta_tensors calculates the
$1-\cos\theta$ and$\sin\theta$ terms. I think the function get_operator_tensors seems to apply the excitation operators to the state in the order defined inUCCSD.ex_ops, where, from what I see, single excitation come first, then double excitations.
Can I just manually change the order of the operators in UCCSD.ex_ops so that first the double excitation are applied? Can I also just manually repeat the operators in UCCSD.ex_ops to get a repeated/higher order trotterized UCCSD (while also adjusting the parameter array)?
I am looking forward to your answer.
Metadata
Metadata
Assignees
Labels
No labels