@@ -184,7 +184,7 @@ def cluster(self, llIntegers, massive_fermions=None):
184184 selfClustered [leg ]._r_sp_d = selfClustered [leg ]._r_sp_d @ - LeviCivita # |bold leg> = |leg_I>
185185 else :
186186 raise Exception ("Massive fermion spin index position must be either 'u' or 'd'." )
187- selfClustered [leg ].spin_index = index_position
187+ selfClustered [leg ].spin_index = ( index_position , index_value )
188188 if isinstance (index_value , int ):
189189 selfClustered [leg ]._r_sp_d = selfClustered [leg ]._r_sp_d [:, index_value - 1 :index_value ]
190190 selfClustered [leg ]._l_sp_d = selfClustered [leg ]._l_sp_d [index_value - 1 :index_value , :]
@@ -272,11 +272,11 @@ def subs(self, myDict):
272272 for mass in self .internal_masses :
273273 if isinstance (getattr (self , mass ), (sympy .Add , sympy .Mul , sympy .Symbol )):
274274 setattr (self , mass , getattr (self , mass ).subs (myDict ))
275- if isinstance (getattr (self , mass ), sympy .Integer ) and self .field .name == "finite field" :
275+ if isinstance (getattr (self , mass ), ( sympy .Integer , ModP ) ) and self .field .name == "finite field" :
276276 setattr (self , mass , ModP (getattr (self , mass ), self .field .characteristic ))
277- elif isinstance (getattr (self , mass ), sympy .Integer ) and self .field .name == "padic" :
277+ elif isinstance (getattr (self , mass ), ( sympy .Integer , PAdic ) ) and self .field .name == "padic" :
278278 setattr (self , mass , PAdic (getattr (self , mass ), self .field .characteristic , self .field .digits ))
279- else :
279+ elif not isinstance ( getattr ( self , mass ), str ) :
280280 setattr (self , mass , sympy .poly (getattr (self , mass ), modulus = self .field .characteristic ** self .field .digits ).as_expr ())
281281
282282 def fix_mom_cons (self , A = 0 , B = 0 , real_momenta = False , axis = 1 ): # using real momenta changes both |⟩ and |] of A & B
0 commit comments