Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/ein/mkoperators.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/ein/mkoperators.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2510, Thu Nov 14 20:33:18 2013 UTC revision 2515, Mon Dec 2 03:42:14 2013 UTC
# Line 38  Line 38 
38    
39       val zero=E.EIN{       val zero=E.EIN{
40          params = [], index = [],          params = [], index = [],
41          body = E.Const(9.560)          body = E.Const(0.0)
42          }          }
43    
44    
45    
         (* just to test normalize  
     fun addTen(alpha)=let  
     val (index', expindex')= specialize(alpha,0)  
         in  
         E.EIN{  
         params = [E.TEN, E.TEN], index = index',  
         body = E.Add[E.Sum([(E.V 0,0,3)],E.Prod[E.Delta(E.V 1, E.V 0),E.Field(0, expindex')]),E.Add[E.Const 0.0, E.Tensor(1, expindex')]]  
         }  
         end  
        *)  
   
46       (* Subtracting tensors *)       (* Subtracting tensors *)
47       fun subTen(alpha)=let       fun subTen(alpha)=let
48          val (index', expindex')= specialize(alpha,0)          val (index', expindex')= specialize(alpha,0)
# Line 75  Line 64 
64      fun trace(dim) = E.EIN{      fun trace(dim) = E.EIN{
65          params = [E.TEN],         (* M *)          params = [E.TEN],         (* M *)
66          index = [],           (* i *)          index = [],           (* i *)
67          body = E.Sum([(E.V 0,1,dim)],E.Tensor(0, [E.V 0, E.V 0]))          body = E.Sum([(E.V 0,1,dim-1)],E.Tensor(0, [E.V 0, E.V 0]))
68      }      }
69    
70      fun negTen(alpha)=let      fun negTen(alpha)=let
# Line 103  Line 92 
92          val (indexA, expindexA)= specialize(alpha,0)          val (indexA, expindexA)= specialize(alpha,0)
93          val (indexB, expindexB)= specialize(beta,(length(alpha)))          val (indexB, expindexB)= specialize(beta,(length(alpha)))
94          val s'=E.V(length(alpha)+ length(beta))          val s'=E.V(length(alpha)+ length(beta))
95          val s''=[(s',0,i)]          val s''=[(s',0,i-1)]
96          in E.EIN{          in E.EIN{
97              params = [E.TEN, E.TEN],              (* T and T' *)              params = [E.TEN, E.TEN],              (* T and T' *)
98              index = indexA@indexB,   (* \alpha \beta, i *)              index = indexA@indexB,   (* \alpha \beta, i *)
# Line 121  Line 110 
110          val (indexB, expindexB)= specialize(beta,(length(alpha)))          val (indexB, expindexB)= specialize(beta,(length(alpha)))
111          val sumi=length(alpha)+ length(beta)          val sumi=length(alpha)+ length(beta)
112          val s'=[E.V sumi,E.V(sumi+1)]          val s'=[E.V sumi,E.V(sumi+1)]
113          val s''=[(E.V sumi,0,i),(E.V(sumi+1),0,j)]          val s''=[(E.V sumi,0,i-1),(E.V(sumi+1),0,j-1)]
114          in E.EIN{          in E.EIN{
115              params = [E.TEN,E.TEN],              params = [E.TEN,E.TEN],
116              index = indexA@indexB,              index = indexA@indexB,
# Line 145  Line 134 
134          body= E.Tensor(0, [E.V 1,E.V 0])          body= E.Tensor(0, [E.V 1,E.V 0])
135        }        }
136    
137      (* generic mod <T_{\alpha} * T_{ \alpha}>_{\alpha } *)  
     (*fun modulate(alpha) = let  
         val (indexA, expindexA)= specialize(alpha,0)  
         in E.EIN{  
             params = [E.TEN, E.TEN],  
             index = indexA,  
             body = E.Prod[E.Tensor(0, expindexA), E.Tensor(1, expindexA)]  
         }  
         end*)  
138      fun modulate(dim) =E.EIN{      fun modulate(dim) =E.EIN{
139          params = [E.TEN, E.TEN],          params = [E.TEN, E.TEN],
140          index = [dim],          index = [dim],
# Line 165  Line 146 
146      val crossProduct = E.EIN{      val crossProduct = E.EIN{
147          params = [E.TEN, E.TEN],          params = [E.TEN, E.TEN],
148          index= [3],          index= [3],
149          body=E.Sum([(E. V 1,0,3),(E.V 2,0,3)],          body=E.Sum([(E. V 1,0,2),(E.V 2,0,2)],
150              E.Prod[ E.Epsilon(0, 1, 2), E.Tensor(0, [E.V 1]),  E.Tensor(1, [E.V 2 ]) ])              E.Prod[ E.Epsilon(0, 1, 2), E.Tensor(0, [E.V 1]),  E.Tensor(1, [E.V 2 ]) ])
151      }      }
152    
# Line 252  Line 233 
233          }          }
234          end          end
235    
236          (*< Sigma d F_alpha /  d x_ij> *)          (*< Sigma d F_alpha /  d x_i>iALpha *)
237          fun hessian(dim,alpha)= let          fun dotimes(dim,alpha)= let
238               val n=length(alpha)               val n=length(alpha)
239               fun expIndex(n,inc)=List.tabulate(n, (fn(x)=>E.V (x+inc)))               fun expIndex(n,inc)=List.tabulate(n, (fn(x)=>E.V (x+inc)))
240               val i'=expIndex(n,1)               val i'=expIndex(n,0)
241                 val z=length i'
242    
243              in          in E.EIN{
244              E.EIN{              params = [E.FLD(dim)], index =[dim]@alpha,
245              params = [E.FLD(dim)],              body = E.Apply(E.Partial [E.V (z)] ,E.Field(0,i'))
             index =[dim]@alpha,  
             body = E.Apply(E.Partial [E.V (0)] ,E.Field(0,i'))  
246              }              }
247              end              end
248    
# Line 272  Line 252 
252          in E.EIN{          in E.EIN{
253              params = [E.FLD(dim)],              params = [E.FLD(dim)],
254              index = [],              index = [],
255              body = E.Sum([(E.V 0,0,dim)],E.Apply(E.Partial([E.V(0)]),E.Field(0,[E.V(0)])))              body = E.Sum([(E.V 0,0,dim-1)],E.Apply(E.Partial([E.V(0)]),E.Field(0,[E.V(0)])))
256          }          }
257          end          end
258    
# Line 308  Line 288 
288      val curl3d=E.EIN{      val curl3d=E.EIN{
289          params = [E.TEN],          params = [E.TEN],
290          index = [3],          index = [3],
291          body = E.Sum([(E.V 1,0,3), (E.V 2,0,3)],E.Prod[E.Epsilon(0, 1, 2),E.Apply( E.Partial([E.V 1]), E.Field(0,[E.V 2]))])          body = E.Sum([(E.V 1,0,2), (E.V 2,0,2)],E.Prod[E.Epsilon(0, 1, 2),E.Apply( E.Partial([E.V 1]), E.Field(0,[E.V 2]))])
292      }      }
293    
294      (*Scalars*)      (*Scalars*)
# Line 346  Line 326 
326          params = [E.TEN, E.TEN, E.TEN],          params = [E.TEN, E.TEN, E.TEN],
327          index = [i],          index = [i],
328          body = E.Add          body = E.Add
329              [E.Sum([(E.V 1, 1,j)],E.Prod[E.Tensor(0, [E.V 0, E.V 1]), E.Tensor(1, [E.V 1])]),              [E.Sum([(E.V 1, 0,j-1)],E.Prod[E.Tensor(0, [E.V 0, E.V 1]), E.Tensor(1, [E.V 1])]),
330                E.Tensor(1,[E.V 0])]                E.Tensor(1,[E.V 0])]
331          }          }
332    

Legend:
Removed from v.2510  
changed lines
  Added in v.2515

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0