Proto
Proto_WriteBoxData.H
1 #ifndef _PROTO_WRITERECTMDARRAY_H_
2 #define _PROTO_WRITERECTMDARRAY_H_
3 #include "Proto_BoxData.H"
4 #include "Proto_VisitWriter.H"
5 #include "implem/Proto_Stack.H"
6 
7 #include <cstring>
8 #include <cstdio>
9 
10 namespace Proto
11 {
12 
16 
18 
24 inline const char* WriteBoxData(BoxData<double>& a_array,
25  double dx = 1.0);
26 
28 
35 inline void WriteBoxData(const char* a_filename,
36  BoxData<double>& a_array,
37  double dx = 1.0);
38 
39 
41 
50  template<class T, unsigned int C, MemType MEMTYPE, unsigned char D, unsigned char E>
51 inline void WriteBoxData(const char* a_filename,
53  const char* const a_varnames[C*D*E],
54  const double* a_corner,
55  const double& a_h);
56 
58 
67  template<class T, unsigned int C,MemType MEMTYPE, unsigned char D, unsigned char E>
68 inline void WriteBoxData(FILE* a_fp,
69  BoxData<T,C,MEMTYPE,D,E>& a_array,
70  const char* const a_varnames[C*D*E],
71  const double* a_corner,
72  const double& a_h);
73 
74 // End of Doxygen documentation module
76 using std::string;
77 //convenience function, turn off iter in filename by setting a_iter < 0
78 template <unsigned int n>
79 inline void WriteData(BoxData<double,n> & a_state,
80  const int & a_iter,
81  const double & a_dx,
82  const string & a_varnamebase,
83  const string & a_filenamebase)
84 {
85  double origin[DIM];
86  for (int ii = 0; ii < DIM; ii++)
87  {
88  origin[ii] = 0.0;
89  }
90 
91  char basename[1024];
92  if(a_iter >= 0)
93  {
94  sprintf(basename,"%s.%06d",a_filenamebase.c_str(),a_iter);
95  }
96  else
97  {
98  sprintf(basename,"%s",a_filenamebase.c_str());
99  }
100 
101  char* velnames[n];
102  for(int idir = 0; idir < n; idir++)
103  {
104  velnames[idir] = new char[1024];
105  sprintf(velnames[idir],"%s%06d",a_varnamebase.c_str(),idir);
106  }
107 
108  WriteBoxData(basename,a_state,velnames,origin,a_dx);
109 
110  for(int idir = 0; idir < n; idir++)
111  {
112  delete[] velnames[idir];
113  }
114 
115 }
116 
117 template <int n> inline void viewData(BoxData<double, n>* a_statePtr)
118 {
119  WriteData<n>(*a_statePtr, -1, 1.0, string("var"), string("tempdata"));
120  system("visit -o tempdata.vtk");
121 }
122 
123 #include "implem/Proto_WriteBoxDataImplem.H"
124 
125 } // end Proto namespace
126 #endif
Multidimensional Rectangular Array.
Definition: Proto_BoxData.H:458
const char * WriteBoxData(BoxData< double > &a_array, double dx=1.0)
Write Scalar BoxData.
Definition: Proto_WriteBoxData.H:8
Definition: Proto_Box.H:11