#!/bin/sh
# the next line restarts using wish \
exec wish $0 $@

# MAKE sure that all of the sources are identified to the program
 
source [ file join $env(TCLTOOLS_HOME) TclToolInits.tcl ]
TclToolInits GPH GUI PLT UTILS UDF UDFDB GUIUTILS
 
lappend auto_path [file join $env(TCLTOOLS_HOME) Tcl3DS]
package require TDShock

Initialize
SetUps

OpenUDFfiles sI
GetUDFData sI

for { set I 0 } { $I < $gMOM(4) } { incr I } {
   if { ($C1V($I) > 0.0) && ($C2V($I) > 0.0) && \
        ($C3V($I) > 0.0) && ($C4V($I) > 0.0) } {
      break; 
   }
}

set BeG $I
set tG [expr $gTET(4) * $gTET(5)]

for { set I $BeG } { $I < $gMOM(4) } { incr I $tdsANS(pSkip) } {
   Tetrahedron $I vD
   if { $I == $BeG } { 
     PlotOn vD 
     TUgridInfo 30 gTET Xx
     TUgridInfo 31 gTET Yy
   }
   set cW [CBarUp cI]
   TUgridInfo 20 gMOM rI $I
   set Tm [TUtimeConv $tdsANS(bT) $rI(2) 2 tdsANS(mBase)]
   set tdsANS(yR) [lindex $Tm 0]
   set tdsANS(dY) [lindex $Tm 1]
   set tdsANS(mS) [lindex $Tm 2]
   ClocK 6 $tdsANS(yR) $tdsANS(dY) $tdsANS(mS)
   
   update
   set wN 2
   for { set K 0 } { $K < 4 } { incr K ; incr wN } {
      for { set J 0 } { $J < $tG } { incr J } { set GriD($J) 0.0 }
      OrderData vD X Y Z V $K
      CenterTetra X Y Z
      SideToXY X Y Z 
      if [string match NO $tdsANS(OoP)] {
         Smooth2D GriD gTET X Y V
         set Ops(0) $gTET(8)
         set Ops(1) $gTET(4)
         set Ops(2) $gTET(5)
         Plot3D $wN Xb Yb Xx Yy GriD MANUAL Ops cI
      } else {
         set Oop [NonLinFit $X(3) $Y(3) X Y Z V 4]
         set Tx(0) $X(0) ; set Ty(0) $Y(0) ; set Tv(0) $V(0) 
         set Tx(1) $X(1) ; set Ty(1) $Y(1) ; set Tv(1) $V(1) 
         set Tx(2) $X(3) ; set Ty(2) $Y(3) ; set Tv(2) $Oop 
         Smooth2D GriD gTET Tx Ty Tv
         set Tx(0) $X(1) ; set Ty(0) $Y(1) ; set Tv(0) $V(1) 
         set Tx(1) $X(2) ; set Ty(1) $Y(2) ; set Tv(1) $V(2) 
         set Tx(2) $X(3) ; set Ty(2) $Y(3) ; set Tv(2) $Oop 
         Smooth2D GriD gTET Tx Ty Tv
         set Tx(0) $X(0) ; set Ty(0) $Y(0) ; set Tv(0) $V(0) 
         set Tx(1) $X(2) ; set Ty(1) $Y(2) ; set Tv(1) $V(2) 
         set Tx(2) $X(3) ; set Ty(2) $Y(3) ; set Tv(2) $Oop 
         Smooth2D GriD gTET Tx Ty Tv
         set Ops(0) $gTET(8)
         set Ops(1) $gTET(4)
         set Ops(2) $gTET(5)
         Plot3D $wN Xb Yb Xx Yy GriD MANUAL Ops cI
      }
      TexT $wN $X(0) $Y(0) 0.0 center "1" $GphInfo(White)
      TexT $wN $X(1) $Y(1) 0.0 center "2" $GphInfo(White)
      TexT $wN $X(2) $Y(2) 0.0 center "3" $GphInfo(White)
      TexT $wN $X(3) $Y(3) 0.0 center "4" $GphInfo(White)
   }
   update
   .pLoT0.drw postscript -file 2D.ps
   set fName "2D[format "%04d" $I].png"
   exec convert 2D.ps $fName
   file delete -force 2D.ps
   .pLoT0.drw delete GeNeRiC
   PlotColor HOLD $GphInfo(Black) $GphInfo(Black)
   CloseWindow $cW
   ClearWindow 0 $GphInfo(Black)
}
