[cig-commits] r7742 - in long/3D/Gale/trunk: .
src/Underworld/plugins/Output/VTKOutput
walter at geodynamics.org
walter at geodynamics.org
Tue Jul 24 11:20:27 PDT 2007
Author: walter
Date: 2007-07-24 11:20:27 -0700 (Tue, 24 Jul 2007)
New Revision: 7742
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/Underworld/plugins/Output/VTKOutput/VTKOutput.c
Log:
r1900 at earth: boo | 2007-07-24 10:44:58 -0700
Make parallel particle output work
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1899
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1900
Modified: long/3D/Gale/trunk/src/Underworld/plugins/Output/VTKOutput/VTKOutput.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/plugins/Output/VTKOutput/VTKOutput.c 2007-07-24 18:20:22 UTC (rev 7741)
+++ long/3D/Gale/trunk/src/Underworld/plugins/Output/VTKOutput/VTKOutput.c 2007-07-24 18:20:27 UTC (rev 7742)
@@ -133,14 +133,22 @@
Rheology_Index rheologyCount;
YieldRheology* rheology;
- FILE *fp;
+ FILE *fp, *pfp;
Name filename;
- Stg_asprintf( &filename, "%s/particles.%d.%05d.vtu", outputPath,
- myRank, timeStep);
-
+ /* Open the processor specific output file */
+ Stg_asprintf(&filename,"%s/particles.%d.%05d.vtu",outputPath,myRank,timeStep);
fp=fopen(filename,"w");
-
+ Memory_Free( filename );
+
+ /* Open the parallel control file */
+ if(myRank==0)
+ {
+ Stg_asprintf( &filename, "%s/particles.%05d.pvtu", outputPath, timeStep);
+ pfp=fopen(filename,"w");
+ Memory_Free( filename );
+ }
+
/* Write a header */
fprintf(fp,"<?xml version=\"1.0\"?>\n");
fprintf(fp,"<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n");
@@ -149,6 +157,17 @@
(num_particles-1)/stepping+1);
fprintf(fp," <Points>\n");
fprintf(fp," <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n");
+
+ if(myRank==0)
+ {
+ fprintf(pfp,"<?xml version=\"1.0\"?>\n\
+<VTKFile type=\"PUnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n\
+ <PUnstructuredGrid GhostLevel=\"0\">\n\
+ <PPoints>\n\
+ <DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\"/>\n\
+ </PPoints>\n\
+ <PCellData></PCellData>\n");
+ }
/* We need many iterations, because the values are written
separately from the coordinates. */
@@ -275,26 +294,41 @@
fprintf(fp," </Points>\n");
fprintf(fp," <PointData Scalars=\"Viscosity\" Tensors=\"Stress\">\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Viscosity\" format=\"ascii\">\n");
+ if(myRank==0)
+ {
+ fprintf(pfp," <PPointData Scalars=\"Viscosity\" Tensors=\"Stress\">\n");
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Viscosity\" format=\"ascii\"/>\n");
+ }
break;
case 1:
fprintf(fp,"\n </DataArray>\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Yielding_fraction\" format=\"ascii\">\n");
+ if(myRank==0)
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Yielding_fraction\" format=\"ascii\"/>\n");
break;
case 2:
fprintf(fp,"\n </DataArray>\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Stress\" format=\"ascii\" NumberOfComponents=\"9\">\n");
+ if(myRank==0)
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Stress\" format=\"ascii\" NumberOfComponents=\"9\"/>\n");
break;
case 3:
fprintf(fp,"\n </DataArray>\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Density\" format=\"ascii\">\n");
+ if(myRank==0)
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Density\" format=\"ascii\"/>\n");
break;
case 4:
fprintf(fp,"\n </DataArray>\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Alpha\" format=\"ascii\">\n");
+ if(myRank==0)
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Alpha\" format=\"ascii\"/>\n");
break;
case 5:
fprintf(fp,"\n </DataArray>\n");
fprintf(fp," <DataArray type=\"Float32\" Name=\"Thermal_Diffusivity\" format=\"ascii\">\n");
+ if(myRank==0)
+ fprintf(pfp," <PDataArray type=\"Float32\" Name=\"Thermal_Diffusivity\" format=\"ascii\"/>\n");
break;
case 6:
fprintf(fp,"\n </DataArray>\n");
@@ -319,7 +353,16 @@
}
}
fclose(fp);
- Memory_Free( filename );
+ if(myRank==0)
+ {
+ fprintf(pfp," </PPointData>\n");
+ for(i=0;i<nprocs;++i)
+ fprintf(pfp," <Piece Source=\"particles.%d.%05d.vtu\"/>\n",
+ i,timeStep);
+ fprintf(pfp," </PUnstructuredGrid>\n\
+</VTKFile>\n");
+ fclose(pfp);
+ }
}
/* Print out the coordinates of the mesh. */
@@ -467,7 +510,7 @@
<PPoints>\n\
<PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n\
</PPoints>\n\
- <PPointData Scalars=\"Pressure\">\n",pnx-1,pny-1,pnz-1);
+ <PPointData Scalars=\"PressureField\">\n",pnx-1,pny-1,pnz-1);
}
header_printed=1;
}
@@ -476,7 +519,7 @@
appropriate file pointer to output for this variable. */
if(!strcmp(feVar->name,"PressureField")){
VTKOutput_print_coords(pressure_fp, feVar->feMesh, nDims, pn);
- fprintf(pressure_fp," <PointData Scalars=\"Pressure\">\n");
+ fprintf(pressure_fp," <PointData Scalars=\"PressureField\">\n");
fp=pressure_fp;
pfp=ppressure_fp;
} else {
@@ -576,21 +619,24 @@
fclose(pressure_fp);
fclose(field_fp);
- fprintf(ppressure_fp," </PPointData>\n");
- fprintf(pfield_fp," </PPointData>\n");
- for(i=0;i<nprocs;++i)
+ if(myRank==0)
{
- fprintf(ppressure_fp," <Piece Extent=\"%d %d %d %d %d %d\"\n\
+ fprintf(ppressure_fp," </PPointData>\n");
+ fprintf(pfield_fp," </PPointData>\n");
+ for(i=0;i<nprocs;++i)
+ {
+ fprintf(ppressure_fp," <Piece Extent=\"%d %d %d %d %d %d\"\n\
Source=\"pressure.%d.%05d.vts\"/>\n",0,pnx-1,0,pny-1,0,pnz-1,
- i,self->timeStep);
- fprintf(pfield_fp," <Piece Extent=\"%d %d %d %d %d %d\"\n\
+ i,self->timeStep);
+ fprintf(pfield_fp," <Piece Extent=\"%d %d %d %d %d %d\"\n\
Source=\"fields.%d.%05d.vts\"/>\n",0,nx-1,0,ny-1,0,nz-1,
- i,self->timeStep);
- }
- fprintf(ppressure_fp," </PStructuredGrid>\n\
+ i,self->timeStep);
+ }
+ fprintf(ppressure_fp," </PStructuredGrid>\n\
</VTKFile>\n");
- fprintf(pfield_fp," </PStructuredGrid>\n\
+ fprintf(pfield_fp," </PStructuredGrid>\n\
</VTKFile>\n");
+ }
}
More information about the cig-commits
mailing list