proc myLatticeGen {N masseven massodd} {
   set x {}
   set y {}
   set mass {}
   for {set i 1} {$i<=$N} {incr i} {
      for {set j 1} {$j<=$N} {incr j} {
         lappend x $i
         lappend y $j
         set prodij [expr {$i*$j}]
         if {[expr {$prodij % 2}]==0} {
            lappend mass $masseven
         } else {
            lappend mass $massodd
         }
      }
   }
   return "[list $x $y $mass]"
}

proc myCOMcalc {x y mass} {
   set totmass 0.
   set comx 0.
   set comy 0.
   set N [llength $mass]
   for {set i 0} {$i<$N} {incr i} {
      set x0 [lindex $x $i]
      set y0 [lindex $y $i]
      set mass0 [lindex $mass $i]
      set comx [expr {$comx+double($mass0)*double($x0)}]
      set comy [expr {$comy+double($mass0)*double($y0)}]
      set totmass [expr $totmass+$mass0]
   }
   return "[expr {$comx/$totmass}] [expr {$comy/$totmass}]"
}

set mysystem [myLatticeGen 10 2. 1.]
set com [myCOMcalc [lindex $mysystem 0] [lindex $mysystem 1] [lindex $mysystem 2]]
puts $com
