Path: | QuarkDwOvlpClass/PREVS/GenMult4DSSOR_v2.rb |
Last Update: | Sat Sep 11 15:39:57 +0900 2010 |
Generates 4-D SSOR Kernel for Hermitian Squared Domainwall operator (D‘D)
$Id: GenMultSSOR.rb,v 1.2 2010/09/01 04:21:07 ishikawa Exp $
# File QuarkDwOvlpClass/PREVS/GenMult4DSSOR_v2.rb, line 9 9: def mult_inv_mass_matrix(mmatL,mmatR,yt,dagger) 10: y = Spinor.new("y") 11: w = Spinor.new("w") 12: print " 13: do iw=1,NS 14: yy(:,:,iw) = Z0 15: ww(:,:,iw) = Z0 16: enddo 17: fac = 0.5_DP 18: do iw=1,NS 19: " 20: puts y.assign_proj_up(-5,yt) # y := (1-gamma_5)/2 yt 21: puts w.assign_proj_up(+5,yt) # w := (1+gamma_5)/2 yt 22: print " 23: do jw=1,NS 24: " 25: if (dagger == 1) 26: print " 27: yy(:,1,jw) = yy(:,1,jw) + #{mmatR}(jw,iw)*y(:,1) 28: yy(:,2,jw) = yy(:,2,jw) + #{mmatR}(jw,iw)*y(:,2) 29: ww(:,1,jw) = ww(:,1,jw) + #{mmatL}(jw,iw)*w(:,1) 30: ww(:,2,jw) = ww(:,2,jw) + #{mmatL}(jw,iw)*w(:,2) 31: " 32: else 33: print " 34: yy(:,1,jw) = yy(:,1,jw) + #{mmatL}(jw,iw)*y(:,1) 35: yy(:,2,jw) = yy(:,2,jw) + #{mmatL}(jw,iw)*y(:,2) 36: ww(:,1,jw) = ww(:,1,jw) + #{mmatR}(jw,iw)*w(:,1) 37: ww(:,2,jw) = ww(:,2,jw) + #{mmatR}(jw,iw)*w(:,2) 38: " 39: end 40: print " 41: enddo 42: enddo 43: do iw=1,NS 44: y(:,1) = yy(:,1,iw) 45: y(:,2) = yy(:,2,iw) 46: w(:,1) = ww(:,1,iw) 47: w(:,2) = ww(:,2,iw) 48: " 49: puts yt.assign_proj_low(-5,y) 50: puts yt.accum_proj_low(+5,w) 51: print " 52: enddo 53: " 54: end