[cig-commits] r7841 - mc/3D/CitcomS/trunk/lib

tan2 at geodynamics.org tan2 at geodynamics.org
Fri Aug 17 11:35:40 PDT 2007


Author: tan2
Date: 2007-08-17 11:35:40 -0700 (Fri, 17 Aug 2007)
New Revision: 7841

Modified:
   mc/3D/CitcomS/trunk/lib/Advection_diffusion.c
   mc/3D/CitcomS/trunk/lib/Output.c
   mc/3D/CitcomS/trunk/lib/Output_gzdir.c
   mc/3D/CitcomS/trunk/lib/Viscosity_structures.c
Log:
Converting TWB's ascii-gz and vtkio output and CDEPV and tracer_enriched for multi-component chemical convection.

Modified: mc/3D/CitcomS/trunk/lib/Advection_diffusion.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Advection_diffusion.c	2007-08-17 18:33:36 UTC (rev 7840)
+++ mc/3D/CitcomS/trunk/lib/Advection_diffusion.c	2007-08-17 18:35:40 UTC (rev 7841)
@@ -516,11 +516,14 @@
 
     /* should we add a compositional contribution? */
     if(E->control.tracer_enriched){
-      
-      /* Q = Q0 for C = 0, Q = Q0ER for C = 1, and linearly in
-	 between  */
-      Q *= (1.0 - E->composition.comp_el[m][el]);
-      Q += E->composition.comp_el[m][el] * E->control.Q0ER;
+      /* XXX: change Q and Q0 to be a vector of ncomp elements */
+      for(j=0;j<E->composition.ncomp;j++) {
+
+        /* Q = Q0 for C = 0, Q = Q0ER for C = 1, and linearly in
+           between  */
+        Q *= (1.0 - E->composition.comp_el[m][j][el]);
+        Q += E->composition.comp_el[m][j][el] * E->control.Q0ER;
+      }
     }
 
 

Modified: mc/3D/CitcomS/trunk/lib/Output.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output.c	2007-08-17 18:33:36 UTC (rev 7840)
+++ mc/3D/CitcomS/trunk/lib/Output.c	2007-08-17 18:35:40 UTC (rev 7841)
@@ -68,8 +68,8 @@
 
     /* gzdir type of I/O */
     if(strcmp(E->output.format, "ascii-gz") == 0){
-      /* 
-	 vtk_io = 1: write files for post-processing into VTK 
+      /*
+	 vtk_io = 1: write files for post-processing into VTK
 	 vtk_io = 2: write legacy VTK file straight
 
       */

Modified: mc/3D/CitcomS/trunk/lib/Output_gzdir.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Output_gzdir.c	2007-08-17 18:33:36 UTC (rev 7840)
+++ mc/3D/CitcomS/trunk/lib/Output_gzdir.c	2007-08-17 18:35:40 UTC (rev 7841)
@@ -28,7 +28,7 @@
 /* Routine to process the output of the finite element cycles
    and to turn them into a coherent suite  files  */
 
-/* 
+/*
 
 this version uses gzipped, ascii output to subdirectories for the
 ascii-gz option
@@ -119,17 +119,17 @@
   char output_dir[255];
   if (cycles == 0) {
     /* initial I/O */
-    
+
     gzdir_output_coord(E);
     /*gzdir_output_mat(E);*/
   }
 
-  /* 
-     make a new directory for all the other output 
-     
+  /*
+     make a new directory for all the other output
+
      (all procs need to do that, because we might be using a local tmp
      dir)
-     
+
   */
   /* make a directory */
   snprintf(output_dir,255,"%s/%d",E->control.data_dir,cycles);
@@ -160,7 +160,7 @@
       gzdir_output_horiz_avg(E, cycles);
 
   if(E->control.tracer){
-    if(E->output.tracer || 
+    if(E->output.tracer ||
        (cycles == E->advection.max_timesteps))
       gzdir_output_tracer(E, cycles);
   }
@@ -200,20 +200,20 @@
   float x[3];
   gzFile *gz1;
   FILE *fp1;
-  
+
   /* for dealing with several processors */
   MPI_Status mpi_stat;
   int mpi_rc, mpi_inmsg, mpi_success_message = 1;
   if(E->output.gzdir.vtk_io == 2){
 
     parallel_process_sync(E);
-    /* 
+    /*
        new VTK output, write directly to a VTK file
-       this will get deleted from 
+       this will get deleted from
 
        output_finalize(struct  All_variables *E)
 
-       
+
     */
     E->output.gzdir.vtk_ocount = -1;
     snprintf(output_file,255,"%s/vtk_geo",E->control.data_dir);
@@ -236,7 +236,7 @@
 #endif
       myfprintf(fp1,"DATASET UNSTRUCTURED_GRID\n");
       sprintf(message,"POINTS %i float\n", /* total number of nodes */
-	      E->lmesh.nno * E->parallel.nproc * 
+	      E->lmesh.nno * E->parallel.nproc *
 	      E->sphere.caps_per_proc);
       myfprintf(fp1,message);
     }else{
@@ -258,17 +258,17 @@
     if(E->parallel.me <  E->parallel.nproc-1){/* send to next if not last*/
       mpi_rc = MPI_Send(&mpi_success_message, 1, MPI_INT, (E->parallel.me+1), 0, MPI_COMM_WORLD);
     }
-    /* 
-       node numbers for all the elements 
+    /*
+       node numbers for all the elements
     */
     parallel_process_sync(E);
-    if(E->parallel.me == 0){	
+    if(E->parallel.me == 0){
       fp1 = output_open_mode(output_file,"a");
-      j = E->parallel.nproc * E->lmesh.nel * 
+      j = E->parallel.nproc * E->lmesh.nel *
 	E->sphere.caps_per_proc; /* total number of elements */
       sprintf(message,"CELLS %i %i\n", /* number of elements
 				      total number of int entries
-				      
+
 				   */
 	      j,j*(enodes[E->mesh.nsd]+1));
       myfprintf(fp1,message);
@@ -277,8 +277,8 @@
       mpi_rc = MPI_Recv(&mpi_inmsg, 1, MPI_INT, (E->parallel.me-1), 0, MPI_COMM_WORLD, &mpi_stat);
       fp1 = output_open_mode(output_file,"a");
     }
-    /* 
-       write CELL element nodes 
+    /*
+       write CELL element nodes
     */
     if(enodes[E->mesh.nsd] != 8)
       myerror(E,"vtk error, only eight node hexes supported");
@@ -286,7 +286,7 @@
     ix[0] = enodes[E->mesh.nsd];
     for(j=1;j <= E->sphere.caps_per_proc;j++)     {
       for(i=1;i <= E->lmesh.nel;i++) {
-	/* 
+	/*
 	   need to add offset according to the processor for global
 	   node numbers
 	*/
@@ -300,7 +300,7 @@
     fclose(fp1);fflush(fp1);		/* close file and flush buffer */
     if(E->parallel.me <  E->parallel.nproc-1)
       mpi_rc = MPI_Send(&mpi_success_message, 1, MPI_INT, (E->parallel.me+1), 0, MPI_COMM_WORLD);
-    /* 
+    /*
        add the cell type flags
     */
     parallel_process_sync(E);
@@ -318,18 +318,18 @@
     }
     /* done straight VTK  */
   }else{
-    /* 
-       
+    /*
+
     either zipped regular, or old VTK type for post-processing
-    
+
     */
-    /* 
+    /*
        don't use data file name
     */
     snprintf(output_file,255,"%s/coord.%d.gz",
 	   E->control.data_dir,E->parallel.me);
     gz1 = gzdir_output_open(output_file,"w");
-    
+
     /* nodal coordinates */
     for(j=1;j<=E->sphere.caps_per_proc;j++)     {
       gzprintf(gz1,"%3d %7d\n",j,E->lmesh.nno);
@@ -337,16 +337,16 @@
 	gzprintf(gz1,"%.6e %.6e %.6e\n",
 		 E->sx[j][1][i],E->sx[j][2][i],E->sx[j][3][i]);
     }
-    
+
     gzclose(gz1);
     if(E->output.gzdir.vtk_io){
-      /* 
-	 
+      /*
+
       output of Cartesian coordinates and element connectivitiy for
       vtk visualization
-      
+
       */
-      /* 
+      /*
 	 nodal coordinates in Cartesian
       */
       snprintf(output_file,255,"%s/vtk_ecor.%d.gz",
@@ -359,7 +359,7 @@
 	}
       }
       gzclose(gz1);
-      /* 
+      /*
 	 connectivity for all elements
       */
       offset = E->lmesh.nno * E->parallel.me - 1;
@@ -373,7 +373,7 @@
 	    gzprintf(stderr,"gzdir: Output: error, only eight node hexes supported");
 	    parallel_process_termination();
 	  }
-	  /* 
+	  /*
 	     need to add offset according to the processor for global
 	     node numbers
 	  */
@@ -391,7 +391,7 @@
   return;
 }
 
-/* 
+/*
 
 this needs to be called first before any of the other stuff if VTK
 straight output is chosen
@@ -414,7 +414,7 @@
   if(E->output.gzdir.vtk_io){	/* all VTK modes need basis vectors */
 
     os = E->lmesh.nno*9;
-    
+
     if((!E->output.gzdir.vtk_base_init) ||(!E->output.gzdir.vtk_base_save)){
       if(!E->output.gzdir.vtk_base_init)
 	E->output.gzdir.vtk_base = (float *)safe_malloc(sizeof(float)*os*E->sphere.caps_per_proc);
@@ -431,15 +431,15 @@
   if(E->output.gzdir.vtk_io == 2){
     parallel_process_sync(E);
 
-    /* 
+    /*
 
     straight VTK output, always need to start here!
-    
+
     */
     E->output.gzdir.vtk_ocount++;
     get_vtk_filename(output_file,E->output.gzdir.vtk_ocount,E);
-    /* 
-       
+    /*
+
     start with temperature
 
     */
@@ -468,7 +468,7 @@
     }
     for(j=1; j<= E->sphere.caps_per_proc;j++) /* print the temperatures */
       for(i=1;i<=E->lmesh.nno;i++){
-	cvec[0] = E->T[j][i];	
+	cvec[0] = E->T[j][i];
 	if(be_write_float_to_file(cvec,1,fp1)!=1)BE_WERROR;
       }
     fclose(fp1);fflush(fp1);		/* close file and flush buffer */
@@ -477,10 +477,10 @@
     }else{
       mpi_rc = MPI_Send(&mpi_success_message, 1, MPI_INT, 0, 6, MPI_COMM_WORLD); /* tell m=0 to go ahead */
     }
-    /* 
+    /*
        velocities second
     */
-    if(E->parallel.me == 0){	
+    if(E->parallel.me == 0){
       mpi_rc = MPI_Recv(&mpi_inmsg, 1, MPI_INT, E->parallel.nproc-1 , 6, MPI_COMM_WORLD, &mpi_stat);
       fp1 = output_open_mode(output_file,"a"); /* append velocities */
       sprintf(message,"VECTORS velocity float\n");myfprintf(fp1,message);
@@ -503,23 +503,23 @@
     }
     /* new VTK velo and temp done */
   }else{
-    /* 
+    /*
 
     modified zipped output
 
     */
     /*
-      
-    
+
+
     temperatures are printed along with velocities for old type of
     output
-    
+
     if VTK is selected, will generate a separate temperature file
-    
+
     */
     if(E->output.gzdir.vtk_io) {
-      /* 
-	 for VTK, only print temperature 
+      /*
+	 for VTK, only print temperature
       */
       snprintf(output_file2,255,"%s/%d/t.%d.%d",
 	       E->control.data_dir,
@@ -530,7 +530,7 @@
 	       E->parallel.me,cycles);
     }
     snprintf(output_file,255,"%s.gz",output_file2); /* add the .gz */
-    
+
     gzout = gzdir_output_open(output_file,"w");
     gzprintf(gzout,"%d %d %.5e\n",
 	     cycles,E->lmesh.nno,E->monitor.elapsed_time);
@@ -538,21 +538,21 @@
       gzprintf(gzout,"%3d %7d\n",j,E->lmesh.nno);
       if(E->output.gzdir.vtk_io){
 	/* VTK */
-	for(i=1;i<=E->lmesh.nno;i++)           
-	  gzprintf(gzout,"%.6e\n",E->T[j][i]); 
-      } else {			
+	for(i=1;i<=E->lmesh.nno;i++)
+	  gzprintf(gzout,"%.6e\n",E->T[j][i]);
+      } else {
 	/* old */
-	for(i=1;i<=E->lmesh.nno;i++)           
+	for(i=1;i<=E->lmesh.nno;i++)
 	  gzprintf(gzout,"%.6e %.6e %.6e %.6e\n",
 		   E->sphere.cap[j].V[1][i],
 		   E->sphere.cap[j].V[2][i],
-		   E->sphere.cap[j].V[3][i],E->T[j][i]); 
+		   E->sphere.cap[j].V[3][i],E->T[j][i]);
       }
     }
     gzclose(gzout);
     if(E->output.gzdir.vtk_io){
-      /* 
-	 write Cartesian velocities to file 
+      /*
+	 write Cartesian velocities to file
       */
       snprintf(output_file,255,"%s/%d/vtk_v.%d.%d.gz",
 	       E->control.data_dir,cycles,E->parallel.me,cycles);
@@ -570,7 +570,7 @@
 	}
       }
       gzclose(gzout);
-      
+
      }
   } /* end gzipped and old VTK out */
   if(E->output.gzdir.vtk_io){	/* all VTK modes */
@@ -581,8 +581,8 @@
   return;
 }
 
-/* 
-   viscosity 
+/*
+   viscosity
 */
 void gzdir_output_visc(struct All_variables *E, int cycles)
 {
@@ -607,14 +607,14 @@
       for(i=1;i<=E->lmesh.nno;i++)
 	gzprintf(gz1,"%.4e\n",E->VI[lev][j][i]);
     }
-    
+
     gzclose(gz1);
   }else{
     parallel_process_sync(E);
-  
+
     /* new legacy VTK */
     get_vtk_filename(output_file,E->output.gzdir.vtk_ocount,E);
-    if(E->parallel.me == 0){	
+    if(E->parallel.me == 0){
       fp1 = output_open_mode(output_file,"a");
       myfprintf(fp1,"SCALARS log10(visc) float 1\n");
       myfprintf(fp1,"LOOKUP_TABLE default\n");
@@ -624,9 +624,9 @@
       /* open for append */
       fp1 = output_open_mode(output_file,"a");
     }
-    for(j=1; j<= E->sphere.caps_per_proc;j++)     
+    for(j=1; j<= E->sphere.caps_per_proc;j++)
       for(i=1;i<=E->lmesh.nno;i++){
-	ftmp = log10(E->VI[lev][j][i]);	
+	ftmp = log10(E->VI[lev][j][i]);
 	if(fabs(ftmp) < 5e-7)ftmp = 0.0;
 	if(be_write_float_to_file(&ftmp,1,fp1)!=1)BE_WERROR;
       }
@@ -838,7 +838,7 @@
   }else{/* new legacy VTK */
     parallel_process_sync(E);
     get_vtk_filename(output_file,E->output.gzdir.vtk_ocount,E);
-    if(E->parallel.me == 0){	
+    if(E->parallel.me == 0){
       fp1 = output_open_mode(output_file,"a");
       myfprintf(fp1,"SCALARS pressure float 1\n");
       myfprintf(fp1,"LOOKUP_TABLE default\n");
@@ -846,9 +846,9 @@
       mpi_rc = MPI_Recv(&mpi_inmsg, 1, MPI_INT, (E->parallel.me-1), 0, MPI_COMM_WORLD, &mpi_stat);
       fp1 = output_open_mode(output_file,"a");
     }
-    for(j=1; j<= E->sphere.caps_per_proc;j++)     
+    for(j=1; j<= E->sphere.caps_per_proc;j++)
       for(i=1;i<=E->lmesh.nno;i++){
-	ftmp = E->NP[j][i];	
+	ftmp = E->NP[j][i];
 	if(be_write_float_to_file(&ftmp,1,fp1)!=1)BE_WERROR;
       }
     fclose(fp1);fflush(fp1);		/* close file and flush buffer */
@@ -867,7 +867,7 @@
   char output_file[255];
   gzFile *fp1;
 
-  snprintf(output_file,255,"%s/%d/tracer.%d.%d.gz", 
+  snprintf(output_file,255,"%s/%d/tracer.%d.%d.gz",
 	   E->control.data_dir,cycles,
 	   E->parallel.me, cycles);
   fp1 = gzdir_output_open(output_file,"w");
@@ -901,7 +901,7 @@
 
 void gzdir_output_comp_nd(struct All_variables *E, int cycles)
 {
-  int i, j;
+  int i, j, k;
   char output_file[255];
   gzFile *gz1;
   FILE *fp1;
@@ -910,39 +910,49 @@
   MPI_Status mpi_stat;
   int mpi_rc;
   int mpi_inmsg, mpi_success_message = 1;
-  
+
   if(E->output.gzdir.vtk_io != 2){
-    snprintf(output_file,255,"%s/%d/comp_nd.%d.%d.gz", 
+    snprintf(output_file,255,"%s/%d/comp_nd.%d.%d.gz",
 	     E->control.data_dir,cycles,
 	     E->parallel.me, cycles);
     gz1 = gzdir_output_open(output_file,"w");
     for(j=1;j<=E->sphere.caps_per_proc;j++) {
-      gzprintf(gz1,"%3d %7d %.5e %.5e %.5e\n",
+      gzprintf(gz1,"%3d %7d %.5e %d\n",
 	       j, E->lmesh.nel,
-	       E->monitor.elapsed_time,
-	       E->composition.initial_bulk_composition,
-	       E->composition.bulk_composition);
+	       E->monitor.elapsed_time, E->composition.ncomp);
+      for(i=0;i<E->composition.ncomp;i++) {
+        gzprintf(fp1," %.5e %.5e ",
+                 E->composition.initial_bulk_composition[i],
+                 E->composition.bulk_composition[i]);
+      }
+      gzprintf(fp1,"\n");
+
       for(i=1;i<=E->lmesh.nno;i++) {
-	gzprintf(gz1,"%.6e\n",E->composition.comp_node[j][i]);
+        for(k=0;k<E->composition.ncomp;k++) {
+	  gzprintf(gz1,"%.6e ",E->composition.comp_node[j][k][i]);
+        }
+        gzprintf(fp1,"\n");
       }
     }
     gzclose(gz1);
   }else{/* new legacy VTK */
     parallel_process_sync(E);
     get_vtk_filename(output_file,E->output.gzdir.vtk_ocount,E);
-    if(E->parallel.me == 0){	
+    if(E->parallel.me == 0){
       fp1 = output_open_mode(output_file,"a");
-      myfprintf(fp1,"SCALARS composition float 1\n");
+      myfprintf(fp1,"SCALARS composition float %d\n",E->composition.ncomp);
       myfprintf(fp1,"LOOKUP_TABLE default\n");
     }else{
       mpi_rc = MPI_Recv(&mpi_inmsg, 1, MPI_INT, (E->parallel.me-1), 0, MPI_COMM_WORLD, &mpi_stat);
       fp1 = output_open_mode(output_file,"a");
     }
-    for(j=1; j<= E->sphere.caps_per_proc;j++)     
+    for(j=1; j<= E->sphere.caps_per_proc;j++)
+      for(k=0;k<E->composition.ncomp;k++) {
       for(i=1;i<=E->lmesh.nno;i++){
-	ftmp = E->composition.comp_node[j][i];	
+	ftmp = E->composition.comp_node[j][k][i];
 	if(be_write_float_to_file(&ftmp,1,fp1)!=1)BE_WERROR;
       }
+      }
     fclose(fp1);fflush(fp1);		/* close file and flush buffer */
     if(E->parallel.me <  E->parallel.nproc-1){
       mpi_rc = MPI_Send(&mpi_success_message, 1, MPI_INT, (E->parallel.me+1), 0, MPI_COMM_WORLD);
@@ -963,22 +973,31 @@
     fp1 = gzdir_output_open(output_file,"w");
 
     for(j=1;j<=E->sphere.caps_per_proc;j++) {
-        gzprintf(fp1,"%3d %7d %.5e %.5e %.5e\n",
-                j, E->lmesh.nel,
-                E->monitor.elapsed_time,
-                E->composition.initial_bulk_composition,
-                E->composition.bulk_composition);
+        gzprintf(fp1,"%3d %7d %.5e %d\n",
+                 j, E->lmesh.nel,
+                 E->monitor.elapsed_time, E->composition.ncomp);
 
-        for(i=1;i<=E->lmesh.nel;i++) {
-            gzprintf(fp1,"%.6e\n",E->composition.comp_el[j][i]);
+        for(i=0;i<E->composition.ncomp;i++) {
+            gzprintf(fp1,"%.5e %.5e ",
+                    E->composition.initial_bulk_composition[i],
+                    E->composition.bulk_composition[i]);
         }
+        fprintf(fp1,"\n");
+
+        for(i=1;i<=E->lmesh.nno;i++) {
+            for(k=0;k<E->composition.ncomp;k++) {
+                gzprintf(fp1,"%.6e ",E->composition.comp_node[j][k][i]);
+            }
+            gzprintf(fp1,"\n");
+        }
+
     }
 
     gzclose(fp1);
     return;
 }
 
-/* 
+/*
 
 restart facility for zipped/VTK style , will init temperature
 
@@ -1009,15 +1028,15 @@
   if (E->parallel.me==0)
     fprintf(E->fp,"restart_tic_from_gzdir_file: using  %s for restarted temperature\n",
 	    output_file);
-  
+
   if(fscanf(fp,"%i %i %f",&ll,&mm,&restart_elapsed_time) != 3)
     myerror(E,"restart vtkl read error 0");
- 
+
   if(E->output.gzdir.vtk_io) {	/* VTK */
     for(m=1;m <= E->sphere.caps_per_proc;m++) {
       if(fscanf(fp,"%i %i",&ll,&mm) != 2)
 	myerror(E,"restart vtkl read error 1");
-      for(i=1;i<=E->lmesh.nno;i++)  
+      for(i=1;i<=E->lmesh.nno;i++)
 	if(fscanf(fp,"%f",&(E->T[m][i]))!=1)
 	  myerror(E,"restart vtkl read error 2");
     }
@@ -1037,14 +1056,14 @@
   fclose (fp);
   if(rezip)			/* rezip */
     gzip_file(output_file);
- 
+
   temperatures_conform_bcs(E);
   return;
 }
 
 
-/* 
-   
+/*
+
 tries to open 'name'. if name exists, out will be pointer to file and
 return 0. if name doesn't exist, will check for name.gz.  if this
 exists, will unzip and open, and return 1
@@ -1058,14 +1077,14 @@
   char mstring[1000];
   *in = fopen(name,"r");
   if (*in == NULL) {
-    /* 
+    /*
        unzipped file not found
     */
     snprintf(mstring,1000,"%s.gz",name);
     *in= fopen(mstring,"r");
-    if(*in != NULL){		
-      /* 
-	 zipped version was found 
+    if(*in != NULL){
+      /*
+	 zipped version was found
       */
       fclose(*in);
       snprintf(mstring,1000,"gunzip -f %s.gz",name); /* brutal */
@@ -1076,7 +1095,7 @@
 	myerror("open_file_zipped: unzipping error",E);
       return 1;
     }else{
-      /* 
+      /*
 	 no file, either zipped or unzipped
       */
       snprintf(mstring,1000,"no files %s and %s.gz were found, exiting",
@@ -1085,8 +1104,8 @@
       return 0;
     }
   }else{
-    /* 
-       file was found unzipped  
+    /*
+       file was found unzipped
     */
     return 0;
   }
@@ -1097,7 +1116,7 @@
 {
   char command_string[300];
   snprintf(command_string,300,"gzip -f %s",output_file); /* brutal */
-  system(command_string);	
+  system(command_string);
 }
 
 
@@ -1111,7 +1130,7 @@
 
 
 
-/* 
+/*
 
 
 big endian I/O (needed for vtk)
@@ -1119,7 +1138,7 @@
 
 */
 
-/* 
+/*
 
 write the x[n] array to file, making sure it is written big endian
 
@@ -1131,13 +1150,13 @@
   size_t bsize;
   float ftmp;
 #ifdef ASCII_DEBUG
-  for(i=0;i<n;i++) 
-    fprintf(out,"%11g ",x[i]); 
+  for(i=0;i<n;i++)
+    fprintf(out,"%11g ",x[i]);
   fprintf(out,"\n");
   nout = n;
 #else
-  /* 
-     do we need to flip? 
+  /*
+     do we need to flip?
   */
   if(be_is_little_endian()){
     nout = 0;
@@ -1159,13 +1178,13 @@
   size_t bsize;
   int itmp;
 #ifdef ASCII_DEBUG
-  for(i=0;i<n;i++) 
-    fprintf(out,"%11i ",x[i]); 
+  for(i=0;i<n;i++)
+    fprintf(out,"%11i ",x[i]);
   fprintf(out,"\n");
   nout = n;
 #else
-  /* 
-     do we need to flip? 
+  /*
+     do we need to flip?
   */
   if(be_is_little_endian()){
     nout = 0;
@@ -1198,14 +1217,14 @@
   return *(const unsigned char *)&a;
 }
 
-/* 
+/*
 
 
 flip endian-ness
 
 
 */
-/* 
+/*
 
 flip endianness of x
 

Modified: mc/3D/CitcomS/trunk/lib/Viscosity_structures.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Viscosity_structures.c	2007-08-17 18:33:36 UTC (rev 7840)
+++ mc/3D/CitcomS/trunk/lib/Viscosity_structures.c	2007-08-17 18:35:40 UTC (rev 7841)
@@ -649,7 +649,7 @@
 {
   float comp,comp_fac,CC[9],tcomp;
   double vmean,cc_loc;
-  int m,l,z,jj,kk,i;
+  int m,l,z,j,jj,kk,i;
 
   const int vpts = vpoints[E->mesh.nsd];
   const int nel = E->lmesh.nel;
@@ -659,11 +659,13 @@
 
   for(m=1;m <= E->sphere.caps_per_proc;m++)  {
 
+    /* XXX: change cdepv_ff to be a vector of ncomp elements */
+    for(j=0;j<E->composition.ncomp;j++) {
     for(i = 1; i <= nel; i++){
       /* determine composition of each of the nodes of the
 	 element */
       for(kk = 1; kk <= ends; kk++){
-	CC[kk] = E->composition.comp_node[m][E->ien[m][i].node[kk]];
+	CC[kk] = E->composition.comp_node[m][j][E->ien[m][i].node[kk]];
 	if(CC[kk] < 0)CC[kk]=0.0;
 	if(CC[kk] > 1)CC[kk]=1.0;
       }
@@ -680,6 +682,7 @@
 	EEta[m][ (i-1)*vpts + jj ] *= vmean;
       } /* end jj loop */
     } /* end el loop */
+    } /* end ncomp loop */
   } /* end cap */
 }
 



More information about the cig-commits mailing list