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/a8361c2d-08e4-4585-97ca-1a4ba6aa5f91%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to