[cig-commits] r4565 - in mc/3D/CitcomS/trunk: CitcomS/Solver examples/Cookbook5 examples/Full examples/Regional lib module visual

tan2 at geodynamics.org tan2 at geodynamics.org
Sun Sep 17 10:32:44 PDT 2006


Author: tan2
Date: 2006-09-17 10:32:43 -0700 (Sun, 17 Sep 2006)
New Revision: 4565

Modified:
   mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
   mc/3D/CitcomS/trunk/examples/Cookbook5/cookbook5.cfg
   mc/3D/CitcomS/trunk/examples/Full/input.sample
   mc/3D/CitcomS/trunk/examples/Regional/input.sample
   mc/3D/CitcomS/trunk/lib/Instructions.c
   mc/3D/CitcomS/trunk/lib/Output.c
   mc/3D/CitcomS/trunk/lib/Output_h5.c
   mc/3D/CitcomS/trunk/lib/global_defs.h
   mc/3D/CitcomS/trunk/module/setProperties.cc
   mc/3D/CitcomS/trunk/visual/autocombine.py
   mc/3D/CitcomS/trunk/visual/batchcombine.py
   mc/3D/CitcomS/trunk/visual/batchpaste.sh
   mc/3D/CitcomS/trunk/visual/combine.py
   mc/3D/CitcomS/trunk/visual/pasteCitcomData.sh
Log:
* Added new input parameter 'datadir' in Solver
* All outputs are done in 'datadir' directory
* Processors write its own ascii output in 'datadir/rank' directory
* Post-processing codes and cookbook examples were updated accordingly


Modified: mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py
===================================================================
--- mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/CitcomS/Solver/Solver.py	2006-09-17 17:32:43 UTC (rev 4565)
@@ -265,6 +265,8 @@
         tracer = pyre.inventory.facility("tracer", factory=Tracer)
         visc = pyre.inventory.facility("visc", factory=Visc)
 
+        datadir = pyre.inventory.str("datadir", default=".")
+
         rayleigh = pyre.inventory.float("rayleigh", default=1e+05)
         Q0 = pyre.inventory.float("Q0", default=0.0)
 

Modified: mc/3D/CitcomS/trunk/examples/Cookbook5/cookbook5.cfg
===================================================================
--- mc/3D/CitcomS/trunk/examples/Cookbook5/cookbook5.cfg	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/examples/Cookbook5/cookbook5.cfg	2006-09-17 17:32:43 UTC (rev 4565)
@@ -21,7 +21,8 @@
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 [CitcomS.solver]
 
-datafile = ./cookbook5_output/cookbook5
+datafile = cookbook5_output
+datafile = cookbook5
 datafile_old = ./restart_files/cookbook5
 
 # Rayleigh number

Modified: mc/3D/CitcomS/trunk/examples/Full/input.sample
===================================================================
--- mc/3D/CitcomS/trunk/examples/Full/input.sample	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/examples/Full/input.sample	2006-09-17 17:32:43 UTC (rev 4565)
@@ -1,5 +1,6 @@
 # specify output files
-datafile="/scratch/TAN2/fulltest"
+datadir="/scratch"
+datafile="fulltest"
 
 
 # specify input files

Modified: mc/3D/CitcomS/trunk/examples/Regional/input.sample
===================================================================
--- mc/3D/CitcomS/trunk/examples/Regional/input.sample	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/examples/Regional/input.sample	2006-09-17 17:32:43 UTC (rev 4565)
@@ -1,5 +1,6 @@
 # specify output files
-datafile="/scratch/regtest"
+datadir="/scratch"
+datafile="regtest"
 
 
 # specify input files

Modified: mc/3D/CitcomS/trunk/lib/Instructions.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Instructions.c	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/lib/Instructions.c	2006-09-17 17:32:43 UTC (rev 4565)
@@ -31,6 +31,8 @@
 
 #include <math.h>
 #include <string.h>
+#include <sys/stat.h>
+#include <sys/errno.h>
 #include "element_definitions.h"
 #include "global_defs.h"
 
@@ -267,6 +269,7 @@
      Default is no information recorded (apart from special things for given applications.
   */
 
+  input_string("datadir",E->control.data_dir,".",m);
   input_string("datafile",E->control.data_file,"initialize",m);
   input_string("datafile_old",E->control.old_P_file,"initialize",m);
 
@@ -929,7 +932,7 @@
   char logfile[255];
 
   E->fp = NULL;
-  sprintf(logfile,"%s.log",E->control.data_file);
+  sprintf(logfile,"%s/%s.log",E->control.data_dir, E->control.data_file);
   E->fp = output_open(logfile);
 
   return;
@@ -942,7 +945,7 @@
 
   E->fptime = NULL;
   if (E->parallel.me == 0) {
-    sprintf(timeoutput,"%s.time",E->control.data_file);
+    sprintf(timeoutput,"%s/%s.time",E->control.data_dir, E->control.data_file);
     E->fptime = output_open(timeoutput);
   }
 
@@ -956,7 +959,8 @@
 
   E->fp_out = NULL;
   if (E->control.verbose) {
-    sprintf(output_file,"%s.info.%d",E->control.data_file,E->parallel.me);
+      sprintf(output_file,"%s/%d/%s.info.%d",E->control.data_dir,
+	      E->parallel.me, E->control.data_file, E->parallel.me);
     E->fp_out = output_open(output_file);
   }
 
@@ -1018,9 +1022,49 @@
     return;
 }
 
+/* check whether E->control.data_file contains a path */
+void chkdatafile(struct  All_variables *E)
+{
+  void parallel_process_termination();
 
+  char *found;
+
+  found = strchr(E->control.data_file, '/');
+  if (found) {
+      fprintf(stderr, "error in input parameter: datafile='%s' contains '/'\n", E->control.data_file);
+      parallel_process_termination();
+  }
+}
+
+
+void mkdatadir(struct  All_variables *E)
+{
+  void parallel_process_termination();
+
+  int err;
+  char newdir[110];
+
+  err = mkdir(E->control.data_dir, 0755);
+  if (err && errno != EEXIST) {
+      /* if error occured and the directory is not exisitng */
+      fprintf(stderr, "Cannot make new directory '%s'\n", E->control.data_dir);
+      parallel_process_termination();
+  }
+  sprintf(newdir, "%s/%d", E->control.data_dir, E->parallel.me);
+  err = mkdir(newdir, 0755);
+  if (err && errno != EEXIST) {
+      /* if error occured and the directory is not exisitng */
+      fprintf(stderr, "Cannot make new directory '%s'\n", newdir);
+      parallel_process_termination();
+  }
+}
+
+
 void output_init(struct  All_variables *E)
 {
+  chkdatafile(E);
+  mkdatadir(E);
+
   open_log(E);
   open_time(E);
   open_info(E);

Modified: mc/3D/CitcomS/trunk/lib/Output.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output.c	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/lib/Output.c	2006-09-17 17:32:43 UTC (rev 4565)
@@ -110,7 +110,8 @@
   char output_file[255];
   FILE *fp1;
 
-  sprintf(output_file,"%s.coord.%d",E->control.data_file,E->parallel.me);
+  sprintf(output_file,"%s/%d/%s.coord.%d",E->control.data_dir,E->parallel.me,
+	  E->control.data_file,E->parallel.me);
   fp1 = output_open(output_file);
 
   for(j=1;j<=E->sphere.caps_per_proc;j++)     {
@@ -132,7 +133,8 @@
   FILE *fp1;
   int lev = E->mesh.levmax;
 
-  sprintf(output_file,"%s.visc.%d.%d",E->control.data_file,E->parallel.me,cycles);
+  sprintf(output_file,"%s/%d/%s.visc.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
   fp1 = output_open(output_file);
 
 
@@ -154,7 +156,8 @@
   char output_file[255];
   FILE *fp1;
 
-  sprintf(output_file,"%s.velo.%d.%d",E->control.data_file,E->parallel.me,cycles);
+  sprintf(output_file,"%s/%d/%s.velo.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
   fp1 = output_open(output_file);
 
   fprintf(fp1,"%d %d %.5e\n",cycles,E->lmesh.nno,E->monitor.elapsed_time);
@@ -183,7 +186,8 @@
   get_STD_topo(E,E->slice.tpg,E->slice.tpgb,E->slice.divg,E->slice.vort,cycles);
 
   if (E->output.surf && (E->parallel.me_loc[3]==E->parallel.nprocz-1)) {
-    sprintf(output_file,"%s.surf.%d.%d",E->control.data_file,E->parallel.me,cycles);
+    sprintf(output_file,"%s/%d/%s.surf.%d.%d",E->control.data_dir,
+	    E->parallel.me, E->control.data_file, E->parallel.me, cycles);
     fp2 = output_open(output_file);
 
     for(j=1;j<=E->sphere.caps_per_proc;j++)  {
@@ -204,7 +208,8 @@
 
 
   if (E->output.botm && (E->parallel.me_loc[3]==0)) {
-    sprintf(output_file,"%s.botm.%d.%d",E->control.data_file,E->parallel.me,cycles);
+    sprintf(output_file,"%s/%d/%s.botm.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
     fp2 = output_open(output_file);
 
     for(j=1;j<=E->sphere.caps_per_proc;j++)  {
@@ -227,7 +232,8 @@
   char output_file[255];
   FILE *fp1;
 
-  sprintf(output_file,"%s.stress.%d.%d",E->control.data_file,E->parallel.me,cycles);
+  sprintf(output_file,"%s/%d/%s.stress.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
   fp1 = output_open(output_file);
 
   fprintf(fp1,"%d %d %.5e\n",cycles,E->lmesh.nno,E->monitor.elapsed_time);
@@ -292,7 +298,8 @@
   // only the first nprocz processors need to output
 
   if (E->parallel.me<E->parallel.nprocz)  {
-    sprintf(output_file,"%s.average.%d.%d",E->control.data_file,E->parallel.me,cycles);
+    sprintf(output_file,"%s/%d/%s.average.%d.%d",E->control.data_dir,
+	    E->parallel.me, E->control.data_file, E->parallel.me, cycles);
     fp1=fopen(output_file,"w");
     for(j=1;j<=E->lmesh.noz;j++)  {
         fprintf(fp1,"%.4e %.4e %.4e %.4e\n",E->sx[1][3][j],E->Have.T[j],E->Have.V[1][j],E->Have.V[2][j]);
@@ -311,7 +318,8 @@
   char output_file[255];
   FILE* fp;
 
-  sprintf(output_file,"%s.mat.%d",E->control.data_file,E->parallel.me);
+  sprintf(output_file,"%s/%d/%s.mat.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me);
   fp = output_open(output_file);
 
   for (m=1;m<=E->sphere.caps_per_proc;m++)
@@ -331,7 +339,8 @@
   char output_file[255];
   FILE *fp1;
 
-  sprintf(output_file,"%s.pressure.%d.%d",E->control.data_file,E->parallel.me,cycles);
+  sprintf(output_file,"%s/%d/%s.pressure.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
   fp1 = output_open(output_file);
 
   fprintf(fp1,"%d %d %.5e\n",cycles,E->lmesh.nno,E->monitor.elapsed_time);
@@ -355,7 +364,8 @@
   char output_file[255];
   FILE *fp1;
 
-  sprintf(output_file,"%s.tracer.%d.%d",E->control.data_file,E->parallel.me,cycles);
+  sprintf(output_file,"%s/%d/%s.tracer.%d.%d",E->control.data_dir,
+	  E->parallel.me, E->control.data_file, E->parallel.me, cycles);
   fp1 = output_open(output_file);
 
   fprintf(fp1,"%.5e\n",E->monitor.elapsed_time);

Modified: mc/3D/CitcomS/trunk/lib/Output_h5.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/lib/Output_h5.c	2006-09-17 17:32:43 UTC (rev 4565)
@@ -217,8 +217,8 @@
      */
 
     /* determine filename */
-    strncpy(E->hdf5.filename, E->control.data_file, (size_t)99);
-    strncat(E->hdf5.filename, ".h5", (size_t)99);
+    snprintf(E->hdf5.filename, (size_t)100, "%s/%s.h5", E->control.data_dir,
+	     E->control.data_file);
 
     /* set up file creation property list with defaults */
     fcpl_id = H5P_DEFAULT;
@@ -1378,7 +1378,7 @@
             }
         }
     }
-    
+
     /* write to dataset */
     cap_group = E->hdf5.cap_group;
     dataset = H5Dopen(cap_group, "pressure");
@@ -1504,7 +1504,7 @@
         status    = h5write_field(dataset, field);
         status    = H5Dclose(dataset);
     }
-    
+
     if ((E->output.botm == 1) && (pz == 0))
     {
         k = 0;
@@ -1575,7 +1575,7 @@
             dataset = H5Dopen(cap_group, "surf/heatflux");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
-            
+
             dataset = H5Dopen(cap_group, "surf/topography");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
@@ -1589,7 +1589,7 @@
             dataset = H5Dopen(cap_group, "botm/heatflux");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
-            
+
             dataset = H5Dopen(cap_group, "botm/topography");
             status  = H5Dextend(dataset, scalar->dims);
             status  = H5Dclose(dataset);
@@ -1647,7 +1647,7 @@
             topo = E->slice.freesurf[1];
         else
             topo = E->slice.tpg[1];
-        
+
         /* topography data */
         for(i = 0; i < mx; i++)
         {
@@ -1767,7 +1767,7 @@
     hid_t cap_group;
     hid_t dataset;
     herr_t status;
-    
+
     float vx, vy, vz;
     float *S1[NCS], *S2[NCS], *S3[NCS];
 
@@ -2005,9 +2005,9 @@
 
     status = h5write_dataset(dataset, H5T_NATIVE_INT, data, rank, memdims,
                              offset, stride, count, block);
-    
+
     status = H5Dclose(dataset);
-    
+
     free(data);
 }
 
@@ -2167,6 +2167,7 @@
      * Solver.inventory
      */
 
+    status = set_attribute_string(input, "datadir", E->control.data_dir);
     status = set_attribute_string(input, "datafile", E->control.data_file);
     status = set_attribute_string(input, "datafile_old", E->control.old_P_file);
 

Modified: mc/3D/CitcomS/trunk/lib/global_defs.h
===================================================================
--- mc/3D/CitcomS/trunk/lib/global_defs.h	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/lib/global_defs.h	2006-09-17 17:32:43 UTC (rev 4565)
@@ -613,6 +613,7 @@
     char Ahat_is_good[MAX_LEVELS];  /* general information controlling program flow */
 
     char old_P_file[100];
+    char data_dir[100];
     char data_file[100];
     char post_topo_file[100];
     char slabgeoid_file[100];

Modified: mc/3D/CitcomS/trunk/module/setProperties.cc
===================================================================
--- mc/3D/CitcomS/trunk/module/setProperties.cc	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/module/setProperties.cc	2006-09-17 17:32:43 UTC (rev 4565)
@@ -379,6 +379,7 @@
     if (not m)
 	std::cout << "#Solver.inventory:" << std::endl;
 
+    getStringProperty(properties, "datadir", E->control.data_dir, m);
     getStringProperty(properties, "datafile", E->control.data_file, m);
     getStringProperty(properties, "datafile_old", E->control.old_P_file, m);
 

Modified: mc/3D/CitcomS/trunk/visual/autocombine.py
===================================================================
--- mc/3D/CitcomS/trunk/visual/autocombine.py	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/visual/autocombine.py	2006-09-17 17:32:43 UTC (rev 4565)
@@ -47,11 +47,8 @@
     parser = Parser()
     parser.read(inputfile)
 
+    datadir = parser.getstr('datadir')
     datafile = parser.getstr('datafile')
-    import os.path
-    modeldir, modelname = os.path.split(datafile)
-    modeldir = os.path.abspath(modeldir)
-    #print modeldir, modelname
 
     nodex = parser.getint('nodex')
     nodey = parser.getint('nodey')
@@ -66,6 +63,6 @@
     nodelist = combine.machinefile2nodes(machinefile, totalnodes)
 
     for timestep in sys.argv[3:]:
-        combine.combine(nodelist, modeldir, modelname, int(timestep),
+        combine.combine(nodelist, datadir, datafile, int(timestep),
                         nodex, nodey, nodez,
                         ncap, nprocx, nprocy, nprocz)

Modified: mc/3D/CitcomS/trunk/visual/batchcombine.py
===================================================================
--- mc/3D/CitcomS/trunk/visual/batchcombine.py	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/visual/batchcombine.py	2006-09-17 17:32:43 UTC (rev 4565)
@@ -29,7 +29,7 @@
 '''
 Paste and combine Citcom data
 
-Usage: batchcombine.py <machinefile | node-list> model-dir model-name timestep nodex nodey nodez ncap nprocx nprocy nprocz
+Usage: batchcombine.py <machinefile | node-list> datadir datafile timestep nodex nodey nodez ncap nprocx nprocy nprocz
 '''
 
 
@@ -60,28 +60,28 @@
 
 
 
-def combine(nodes, modeldir, modelname, timestep, nodex, nodey, nodez,
+def combine(nodes, datadir, datafile, timestep, nodex, nodey, nodez,
             ncap, nprocx, nprocy, nprocz):
     import os
 
     # paste
-    cmd = 'batchpaste.sh %(modeldir)s %(modelname)s %(timestep)d %(nodes)s' \
+    cmd = 'batchpaste.sh %(datadir)s %(datafile)s %(timestep)d %(nodes)s' \
           % vars()
     print cmd
     os.system(cmd)
 
     # combine
-    cmd = 'combine.py %(modelname)s %(timestep)d %(nodex)d %(nodey)d %(nodez)d %(ncap)d %(nprocx)d %(nprocy)d %(nprocz)d' % vars()
+    cmd = 'combine.py %(datafile)s %(timestep)d %(nodex)d %(nodey)d %(nodez)d %(ncap)d %(nprocx)d %(nprocy)d %(nprocz)d' % vars()
     print cmd
     os.system(cmd)
 
     # delete
-    cmd = 'rm %(modelname)s.[0-9]*.%(timestep)d' % vars()
+    cmd = 'rm %(datafile)s.[0-9]*.%(timestep)d' % vars()
     print cmd
     os.system(cmd)
 
     # create .general file
-    cmd = 'dxgeneral.sh %(modelname)s.cap*.%(timestep)d' % vars()
+    cmd = 'dxgeneral.sh %(datafile)s.cap*.%(timestep)d' % vars()
     print cmd
     os.system(cmd)
 
@@ -97,8 +97,8 @@
         sys.exit(1)
 
     machinefile = sys.argv[1]
-    modeldir = sys.argv[2]
-    modelname = sys.argv[3]
+    datadir = sys.argv[2]
+    datafile = sys.argv[3]
     timestep = int(sys.argv[4])
     nodex = int(sys.argv[5])
     nodey = int(sys.argv[6])
@@ -111,7 +111,7 @@
     totalnodes = nprocx * nprocy * nprocz * ncap
     nodelist = machinefile2nodes(machinefile, totalnodes)
 
-    combine(nodelist, modeldir, modelname, timestep, nodex, nodey, nodez,
+    combine(nodelist, datadir, datafile, timestep, nodex, nodey, nodez,
             ncap, nprocx, nprocy, nprocz)
 
 

Modified: mc/3D/CitcomS/trunk/visual/batchpaste.sh
===================================================================
--- mc/3D/CitcomS/trunk/visual/batchpaste.sh	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/visual/batchpaste.sh	2006-09-17 17:32:43 UTC (rev 4565)
@@ -31,26 +31,26 @@
 #              2) the list of ip has the same order as the MPI machinefile
 
 if [ -z $4 ]; then
-    echo "Usage:" `basename $0` modeldir modelname timestep ip1 [ip2 ... ]
+    echo "Usage:" `basename $0` datadir datafile timestep ip1 [ip2 ... ]
     exit
 fi
 
 paste_exe=`which pasteCitcomData.sh`
 cwd=`pwd`
-modeldir=$1
-modelname=$2
+datadir=$1
+datafile=$2
 timestep=$3
-n=0
+rank=0
 
 while [ "$4" ]
 do
-    cmd_paste="$paste_exe $modelname $n $timestep"
-    cmd_copy="cp $modelname.$n.$timestep $cwd"
+    cmd_paste="$paste_exe $datafile $rank $timestep"
+    cmd_copy="cp $datafile.$rank.$timestep $cwd"
 
     if [ $4 == $HOSTNAME -o $4 == "localhost" ]; then
-	cd $modeldir && $cmd_paste && $cmd_copy
+	cd $datadir/$rank && $cmd_paste && $cmd_copy
     else
- 	rsh $4 "cd $modeldir && $cmd_paste && $cmd_copy"
+ 	rsh $4 "cd $datadir/$rank && $cmd_paste && $cmd_copy"
     fi
 
     shift

Modified: mc/3D/CitcomS/trunk/visual/combine.py
===================================================================
--- mc/3D/CitcomS/trunk/visual/combine.py	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/visual/combine.py	2006-09-17 17:32:43 UTC (rev 4565)
@@ -29,7 +29,7 @@
 '''
 Combine the pasted Citcom Data
 
-usage: combine.py modelname timestep nodex nodey nodez ncap nprocx nprocy nprocz
+usage: combine.py datafile timestep nodex nodey nodez ncap nprocx nprocy nprocz
 '''
 
 class Combine(object):
@@ -44,8 +44,8 @@
 
     def readData(self, filename):
         fp = file(filename, 'r')
-        # header
-        fp.readline()
+        header = fp.readline()
+        #print header
         return fp.readlines()
 
 
@@ -91,7 +91,9 @@
 
     def write(self, filename, grid):
         fp = file(filename, 'w')
-        fp.write('%d x %d x %d\n' % (grid['nox'], grid['noy'], grid['noz']))
+        header = '%d x %d x %d\n' % (grid['nox'], grid['noy'], grid['noz'])
+        #print header
+        fp.write(header)
 	fp.writelines(self.saved)
         return
 

Modified: mc/3D/CitcomS/trunk/visual/pasteCitcomData.sh
===================================================================
--- mc/3D/CitcomS/trunk/visual/pasteCitcomData.sh	2006-09-16 21:49:33 UTC (rev 4564)
+++ mc/3D/CitcomS/trunk/visual/pasteCitcomData.sh	2006-09-17 17:32:43 UTC (rev 4565)
@@ -29,15 +29,21 @@
 # processor into a single file.
 
 if [ -z $3 ]; then
-    echo "  usage:" `basename $0` modelname processor_no time_step
+    echo "  usage:" `basename $0` datafile processor_rank timestep
     exit
 fi
 
-line=`cat $1.velo.$2.$3 | wc -l`
+datafile=$1
+rank=$2
+step=$3
+
+line=`cat $datafile.velo.$rank.$step | wc -l`
 let line=line-1
 #echo $line
 
-tail -n $line $1.velo.$2.$3 | paste -d' ' $1.coord.$2 - $1.visc.$2.$3 > $1.$2.$3
+tail -n $line $datafile.velo.$rank.$step \
+  | paste -d' ' $datafile.coord.$rank - $datafile.visc.$rank.$step \
+    > $datafile.$rank.$step
 
 
 # version



More information about the cig-commits mailing list