Hi,

You mean that a+|0> would return an explicit first-quantized wavefunction 
if possible ?

For the application of the Wicks theorem, you would like to somehow include 
it into the simplify() routines ? Depending on the case, the user may not 
want to apply Wicks theorem in some particular formula. 

In general, I think SymPy should not apply non-trivial transformations 
unless explicitly asked to do so, but maybe others can comment on that too.

Le mercredi 25 mars 2015 13:39:26 UTC-4, Xiang Gao a écrit :
>
> Hi,
>
> Thank you for your example. I know that sympy.physics support second 
> quantization. What I want to do is trying to make a uniform interface to do 
> both first quantization and second quantization. For example, if I tell the 
> computer that (a+) is the operator that put one electron into the (1 
> particle) ground state, when I put (a+)|0>, the computer automatically 
> returns the ground state of system .  I also hope that the computer is more 
> smart, for example, the computer should know when to apply wicks theorem to 
> do further calculation and you don't have to explicitly tell it to do so.
>
> Answer your question:
> I will make symbolic density matrix (if approved by GSoC).
>
> On Monday, March 23, 2015 at 11:27:35 AM UTC-4, [email protected] wrote:
>>
>> Hi Xiang,
>>
>> I am not familiar with GSoC and I can't comment on that, but SymPy does 
>> support second quantization. There is a second quantization module with 
>> fermionic and bosonic annihilation/creation operators, Wicks theorem, 
>> support for contractions and normal ordering as well as evaluation of 
>> Kronecker deltas. There is also a sample demonstrating derivation of the 
>> CCSD (Coupled Cluster Singles and Doubles) equations here: 
>> https://github.com/sympy/sympy/blob/master/examples/intermediate/coupled_cluster.py
>>
>> I am currently working to extend the second quantization module to 
>> support different Fock spaces. I adopted a very simple and practical 
>> approach which is to associate a Fock space label to the indices of 
>> creation/annihilation operator. The indices already carry the information 
>> whether they are above/below the Fermi level, hence it seemed convenient to 
>> simply add the Fock space info there.
>>
>> Apparently you want to work with different Hilbert spaces in first 
>> quantization, so I guess your ideas of creating new classes to handle that 
>> seem good to me there. Would your density matrices be able to work with 
>> completely symbolic quantities ?
>> I am going to need symbolic density matrices for my work, but I have not 
>> really thought yet about how to get them into SymPy. Maybe I could derive a 
>> class from Indexed which would support the special algebraic operations I 
>> need.
>>
>> Le jeudi 19 mars 2015 20:04:03 UTC-4, Xiang Gao a écrit :
>>>
>>> Hi,
>>>
>>> Below are my initial thought on what to do for sympy.physics. I didn't 
>>> wrote plans about second quantization because it require more thinking and 
>>> discussing and it's better to work on this part first. Since there are a 
>>> lot of changes, I think I need to discuss first. Do you have any 
>>> suggestions about that?
>>>
>>> *Current status:*
>>>
>>> The relationship of wavefunction, bra, ket, operator, Hilbert space, and 
>>> second quantization are not dealt in a good way. For example, in 
>>> sympy.physics.hydrogen, sympy.physics.qho_1d, and sympy.physics.sho, 
>>> the wavefunctions and energy levels are defined, however there is no 
>>> corresponding object of class Ket is defined. It is impossible for me to 
>>> get the corresponding Ket object of the eigenstates of these systems. 
>>> Another example is that, it is impossible for me to do the following 
>>> calculation: |a> is in space A, |b> is in space B, I want to deal with the 
>>> direct product |a>|b> and calculate the Hilbert space it is in. Another 
>>> example is, in Configuration Interaction and Coupled Cluster theory in 
>>> theoretical chemistry, creation and annihilation operator is used to 
>>> populate electrons of a molecule to excited state, there are a lot of 
>>> algebra in this area on second quantization, but sympy don’t support it yet.
>>>
>>> *Ways of Improvement: *
>>>
>>> To solve these problems, reorganize maybe helpful. I suggest reorganize in 
>>> the following way:
>>>
>>> 1. The class HilbertSpace takes a string parameter to denote different 
>>> spaces.
>>>
>>> 2. When a Ket is initialized, two parameters must be given: one is the 
>>> Hilbert space that this Ket is in another is can be a string or a Symbol. 
>>> If the Ket is initialized with a string, the behavior of this Ket is 
>>> similar to numbers (the members in sympy.core.numbers) in sympy. If the Ket 
>>> is initialized with a Symbol, the behavior will be similar to a symbol (the 
>>> members in sympy.core.symbol) in sympy.
>>>
>>> 3. Implement |x>, |p>, operator x, operator p, in the class 
>>> sympy.physics.quantum.Space1D; implement |xyz>, |rθφ>, |pxpypz> and 
>>> operators in the class sympy.physics.quantum.Space3D. The constructor of 
>>> class Space1D and class Space3D takes the Hilbert space as its parameter. 
>>> Implement angular momentums as sympy.physics.quantum.AngularMomentum.
>>>
>>> 4. Override the operator “in” in python, so that whether a Ket belongs to a 
>>> space can be tested by: “myket in myspace”
>>>
>>> 5. Implement all exact solutions in quantum mechanics and quantum field 
>>> theory as classes in package sympy.physics.quantum.ExcatSolutions.
>>>
>>> 6. Implement partial trace and trace
>>>
>>>  
>>>
>>> *Expected Result:*
>>>
>>> Sample Code 1
>>> >>>h1 = HilbertSpace(“H1”)
>>> >>>h2 = HilbertSpace(“H2”)
>>> >>>myket1 = Ket(h1,’a’)
>>> >>>myket2 = Ket(h2,’b’)
>>> >>>myket1 in h1
>>> True
>>> >>>myket2 in h1
>>> False
>>> >>>myket1*myket2 in h1*h2 #direct product
>>> True
>>> >>>myket1*myket1
>>> Error: undefined operation
>>> >>>myket1+myket2
>>> Error: undefined operation
>>>
>>> Sample code 2:
>>> >>>h1 = HilbertSpace(“H1”)  # Hilbert space of particle 1
>>> >>>sp1 = Space3D(h1)
>>> >>>hydrogen1 = HydrogenLike(h1)
>>> >>>h2 = HilbertSpace(“H2”)  # Hilbert space of particle 1
>>> >>>sp2 = Space3D(h2)
>>> >>>ho2 = HarmonicOscillator3D(h2)
>>> >>>sp1.r_theta_phi_bra*hydrogen1.eigenstate(n=0,l=0,m=0)
>>> Should output the wave function with variable r,theta,phi here
>>> >>>sp2.xyz_bra*ho2.coherent_state(n=0,l=0,m=0)
>>> Should output the wave function with variable x,y,z of coherent state of 
>>> quantum harmonic oscillator.
>>> >>> sp1.r_theta_phi_bra*ho2.coherent_state(n=0,l=0,m=0)
>>> Error, incompatible space
>>>
>>> Sample code 3:
>>> >>>h1 = HilbertSpace(“H1”)
>>> >>>h2 = HilbertSpace(“H2”)
>>> >>>a1 = AngularMomentum(h1)
>>> >>>a2 = AngularMomentum(h2)
>>> >>>total_L = a1 + a2
>>> >>>total_L.hilbert_space()
>>> should output direct product of h1 and h2
>>> >>>(a1.eigenbra(j=1/2,m=1/2)*a2.eigenbra(j=3,m=0)) * 
>>> total_L.eigenket(j=3/2,m=1/2)
>>> Should output Clebsch-Gordan coefficient 
>>>
>>> Sample code 4:
>>> >>>h1 = HilbertSpace(“H1”)
>>> >>>h2 = HilbertSpace(“H2”)
>>> >>>h3 = HilbertSpace(“H3”)
>>> >>>h4 = HilbertSpace(“H4”)
>>> >>>density_matrix = … # codes that defines density matrix here
>>> >>>density_matrix.trace()
>>> Should output the trace
>>> >>>density_matrix.trace(h1,h2)
>>> Should output the result of the partial trace
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/037139a2-f852-4eba-85e2-21e00c4a565c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to