/[escript]/branches/domexper/dudley/src/Mesh_saveVTK.c
ViewVC logotype

Diff of /branches/domexper/dudley/src/Mesh_saveVTK.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3231 by jfenwick, Fri Oct 1 01:53:46 2010 UTC revision 3247 by caltinay, Wed Oct 6 05:53:06 2010 UTC
# Line 89  void create_MPIInfo(MPI_Info & info) Line 89  void create_MPIInfo(MPI_Info & info)
89    
90  #include "ShapeTable.h"  #include "ShapeTable.h"
91    
 /* Returns one if the node given by coords and idx is within the quadrant  
  * indexed by q and if the element type is Rec9 or Hex27, zero otherwise */  
 int nodeInQuadrant(const double *coords, ElementTypeId type, int idx, int q)  
 {  
 #define INSIDE_1D(_X_,_C_,_R_) ( ABS((_X_)-(_C_)) <= (_R_) )  
 #define INSIDE_2D(_X_,_Y_,_CX_,_CY_,_R_) ( INSIDE_1D(_X_,_CX_,_R_) && INSIDE_1D(_Y_,_CY_,_R_))  
 #define INSIDE_3D(_X_,_Y_,_Z_,_CX_,_CY_,_CZ_,_R_) ( INSIDE_1D(_X_,_CX_,_R_) && INSIDE_1D(_Y_,_CY_,_R_) && INSIDE_1D(_Z_,_CZ_,_R_) )  
     return 1;  
 }  
   
92  void Dudley_Mesh_saveVTK(const char *filename_p,  void Dudley_Mesh_saveVTK(const char *filename_p,
93               Dudley_Mesh * mesh_p,               Dudley_Mesh * mesh_p,
94               const dim_t num_data,               const dim_t num_data,
# Line 127  void Dudley_Mesh_saveVTK(const char *fil Line 117  void Dudley_Mesh_saveVTK(const char *fil
117      int mpi_size, i, j, l;      int mpi_size, i, j, l;
118      int cellType = 0, nodeType = DUDLEY_NODES, elementType = DUDLEY_UNKNOWN;      int cellType = 0, nodeType = DUDLEY_NODES, elementType = DUDLEY_UNKNOWN;
119      Dudley_ElementFile *elements = NULL;      Dudley_ElementFile *elements = NULL;
120      ElementTypeId typeId = NoRef;      Dudley_ElementTypeId typeId = Dudley_NoRef;
121    
122      const char *vtkHeader =      const char *vtkHeader =
123      "<?xml version=\"1.0\"?>\n"      "<?xml version=\"1.0\"?>\n"
# Line 359  void Dudley_Mesh_saveVTK(const char *fil Line 349  void Dudley_Mesh_saveVTK(const char *fil
349          }          }
350          switch (typeId)          switch (typeId)
351          {          {
352          case Point1:          case Dudley_Point1:
353          case Line2Face:          case Dudley_Line2Face:
354          cellType = VTK_VERTEX;          cellType = VTK_VERTEX;
355          numVTKNodesPerElement = 1;          numVTKNodesPerElement = 1;
356          break;          break;
357    
358          case Line2:          case Dudley_Line2:
359          case Tri3Face:          case Dudley_Tri3Face:
360          cellType = VTK_LINE;          cellType = VTK_LINE;
361          numVTKNodesPerElement = 2;          numVTKNodesPerElement = 2;
362          break;          break;
363    
364          case Tri3:          case Dudley_Tri3:
365          case Tet4Face:          case Dudley_Tet4Face:
366          cellType = VTK_TRIANGLE;          cellType = VTK_TRIANGLE;
367          numVTKNodesPerElement = 3;          numVTKNodesPerElement = 3;
368          break;          break;
369    
370          case Tet4:          case Dudley_Tet4:
371          cellType = VTK_TETRA;          cellType = VTK_TETRA;
372          numVTKNodesPerElement = 4;          numVTKNodesPerElement = 4;
373          break;          break;
# Line 762  void Dudley_Mesh_saveVTK(const char *fil Line 752  void Dudley_Mesh_saveVTK(const char *fil
752                      sampleAvg[k] = 0;                      sampleAvg[k] = 0;
753                  for (j = 0; j < numPointsPerSample; j++)                  for (j = 0; j < numPointsPerSample; j++)
754                  {                  {
                     if (nodeInQuadrant(quadNodes_p, typeId, j, l))  
                     {  
755                      hits++;                      hits++;
756                      for (k = 0; k < nCompUsed; k++)                      for (k = 0; k < nCompUsed; k++)
757                      {                      {
758                          sampleAvg[k] += values[INDEX2(k, j, nComp)];                          sampleAvg[k] += values[INDEX2(k, j, nComp)];
759                      }                      }
                     }  
760                  }                  }
761                  for (k = 0; k < nCompUsed; k++)                  for (k = 0; k < nCompUsed; k++)
762                      sampleAvg[k] /= MAX(hits, 1);                      sampleAvg[k] /= MAX(hits, 1);

Legend:
Removed from v.3231  
changed lines
  Added in v.3247

  ViewVC Help
Powered by ViewVC 1.1.26