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 2585, Thu Apr 17 03:52:19 2014 UTC revision 2603, Thu Apr 24 03:58:37 2014 UTC
# Line 130  Line 130 
130    
131    
132      fun transpose([i,j]) =E.EIN{      fun transpose([i,j]) =E.EIN{
133          params = [E.TEN(1,[i,j])], index= [i,j],          params = [E.TEN(1,[i,j])], index= [j,i],
134          body= E.Tensor(0, [E.V 1,E.V 0])          body= E.Tensor(0, [E.V 1,E.V 0])
135        }        }
136    
# Line 161  Line 161 
161      fun addTenField(dim) = E.EIN{      fun addTenField(dim) = E.EIN{
162          params = [E.TEN(1,[]),E.FLD(dim)],          params = [E.TEN(1,[]),E.FLD(dim)],
163          index = [],          index = [],
164          body = E.Add[E.Tensor(0, []),E.Field(1, [])]          body = E.Add[E.Lift(E.Tensor(0, [])),E.Field(1, [])]
165      }      }
166    
167      fun subTenField(dim) = E.EIN{      fun subTenField(dim) = E.EIN{
168          params = [E.TEN(1,[]),E.FLD(dim)],          params = [E.TEN(1,[]),E.FLD(dim)],
169          index = [],          index = [],
170          body = E.Add[E.Tensor(0, []),E.Neg(E.Field(1, []))]          body = E.Add[E.Lift(E.Tensor(0, [])),E.Neg(E.Field(1, []))]
171      }      }
172    
173      fun subFieldTen(dim) = E.EIN{      fun subFieldTen(dim) = E.EIN{
174          params = [E.TEN(1,[]),E.FLD(dim)],          params = [E.TEN(1,[]),E.FLD(dim)],
175          index = [],          index = [],
176          body = E.Sub(E.Field(1, []),E.Tensor(0, []))          body = E.Sub(E.Field(1, []),E.Lift(E.Tensor(0, [])))
177      }      }
178    
179      (* mkField functions*)      (* mkField functions*)
# Line 201  Line 201 
201          in E.EIN{          in E.EIN{
202              params = [E.TEN(1,[]),E.FLD(dim)],              params = [E.TEN(1,[]),E.FLD(dim)],
203              index = index',              index = index',
204              body = E.Prod[ E.Tensor(0,[]), E.Field(1,expindex')]              body = E.Prod[E.Lift( E.Tensor(0,[])), E.Field(1,expindex')]
205          }          }
206          end          end
207    
# Line 210  Line 210 
210          in E.EIN{          in E.EIN{
211              params = [E.FLD(dim),E.TEN(1,[])],              params = [E.FLD(dim),E.TEN(1,[])],
212              index = index',              index = index',
213              body = E.Div(E.Field(0, expindex'), E.Tensor(1, []))              body = E.Div(E.Field(0, expindex'),E.Lift(  E.Tensor(1, [])))
214          }          }
215          end          end
216    
# Line 253  Line 253 
253          fun f i =Int.toString(i)          fun f i =Int.toString(i)
254    
255          fun divergence(dim,alpha)=let          fun divergence(dim,alpha)=let
256          val [m]=alpha  
257          val (index', expindex')= specialize(alpha,0)          val (index', expindex')= specialize(alpha,0)
258          val sumI=length(alpha)          val sumI=length(alpha)
259          val _=print (String.concat["\n\n Divergence, length alpha", fs(alpha),"length expindex", fs(expindex'),"\n Dimension", f(dim),          val _=print (String.concat["\n\n Divergence, length alpha", fs(alpha),"length expindex", fs(expindex'),"\n Dimension", f(dim),
260              "Alpha_m ", f(m),"SumI", f(sumI)              "SumI", f(sumI)
261              ])              ])
262    
263          val sumIndex=E.V(sumI)          val sumIndex=E.V(sumI)
264          val sumIndexL=[sumIndex]          val sumIndexL=[sumIndex]
265          val S=expindex'@sumIndexL          val S=expindex'@sumIndexL
266          (*dimension, Summation binds to it, *)  
267          in E.EIN{          in E.EIN{
268              params = [E.FLD(dim)],              params = [E.FLD(dim)],
269              index = index',              index = index',
# Line 406  Line 406 
406                  ])}                  ])}
407              end              end
408    
409        (*Field Cross Product*)
410             val crossProductField = E.EIN{
411                params = [E.FLD(3), E.FLD(3)],
412                index= [3],
413                body=E.Sum([(E. V 1,0,2),(E.V 2,0,2)],
414                E.Prod[ E.Epsilon(0, 1, 2), E.Field(0, [E.V 1]),  E.Field(1, [E.V 2 ]) ])
415             }
416    
417    
418        (* Trace: <Sigma_i F_{\alpha i, i}>  This one Sx represents both i's*)
419            fun traceField(dim,alpha) =let
420                val (indexA, expindexA)= specialize(alpha,0)
421                val s=E.V(length(alpha))
422                in
423                E.EIN{
424                 params = [E.FLD(dim)],
425                 index = indexA,
426                 body = E.Sum([(s,0,dim-1)],E.Field(0, expindexA@[s,s]))
427                 }
428                end
429    
430        (*Transpose Field F_{ji}*)
431        fun transposeField(dim,i,j) =E.EIN{
432            params = [E.FLD(dim)], index= [i,j],
433            body= E.Field(0, [E.V 1,E.V 0])
434            }
435    
436    
437    
438    end; (* local *)    end; (* local *)

Legend:
Removed from v.2585  
changed lines
  Added in v.2603

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