~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to src/kernel/io/MFile.cpp

  • Committer: Anders Logg
  • Date: 2007-01-10 09:04:44 UTC
  • mfrom: (1689.1.221 trunk)
  • Revision ID: logg@simula.no-20070110090444-ecyux3n1qnei4i8h
RemoveĀ oldĀ head

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
// Modified by Garth N. Wells 2005
5
5
//
6
6
// First added:  2003-05-06
7
 
// Last changed: 2006-02-13
 
7
// Last changed: 2006-11-14
8
8
 
9
9
#include <dolfin/dolfin_log.h>
10
10
#include <dolfin/Vector.h>
34
34
  // Open file
35
35
  FILE *fp = fopen(filename.c_str(), "a");
36
36
  
37
 
  // Get array (assumes uniprocessor case)
38
 
  real* xx = x.array();
39
 
 
40
37
  // Write vector
41
38
  fprintf(fp, "%s = [", x.name().c_str());
42
39
  for (unsigned int i = 0; i < x.size(); i++)
43
 
    fprintf(fp, " %.15g", xx[i]);
 
40
  {
 
41
    // FIXME: This is a slow way to access PETSc vectors. Need a fast way 
 
42
    //        which is consistent for different vector types.
 
43
    real temp = x(i);
 
44
    fprintf(fp, " %.15g", temp);
 
45
  }
44
46
  fprintf(fp, " ];\n");
45
47
  
46
 
  // Restore array
47
 
  x.restore(xx);
48
 
 
49
48
  // Close file
50
49
  fclose(fp);
51
50
 
83
82
  if ( counter == 0 )
84
83
    fprintf(fp,"points = [");
85
84
  else
86
 
    fprintf(fp,"points{%d} = [", counter + 1);
87
 
  for (VertexIterator n(mesh); !n.end(); ++n) {
88
 
    
89
 
    p = n->coord();
90
 
    
91
 
    if ( mesh.type() == Mesh::triangles ) {
92
 
      if ( n.last() )
93
 
        fprintf(fp,"%.15f %.15f]';\n", p.x, p.y);
 
85
    fprintf(fp,"points{%u} = [", counter + 1);
 
86
  for (VertexIterator v(mesh); !v.end();)
 
87
  {
 
88
    p = v->point();
 
89
    
 
90
    ++v;
 
91
    if ( mesh.type().cellType() == CellType::triangle )
 
92
    {
 
93
      if ( v.end() )
 
94
        fprintf(fp,"%.15f %.15f]';\n", p.x(), p.y());
94
95
      else
95
 
        fprintf(fp,"%.15f %.15f\n", p.x, p.y );
 
96
        fprintf(fp,"%.15f %.15f\n", p.x(), p.y() );
96
97
    }
97
98
    else {
98
 
      if ( n.last() )
99
 
        fprintf(fp,"%.15f %.15f %.15f]';\n", p.x, p.y, p.z);
 
99
      if ( v.end() )
 
100
        fprintf(fp,"%.15f %.15f %.15f]';\n", p.x(), p.y(), p.z());
100
101
      else
101
 
        fprintf(fp,"%.15f %.15f %.15f\n", p.x, p.y, p.z);
 
102
        fprintf(fp,"%.15f %.15f %.15f\n", p.x(), p.y(), p.z());
102
103
    }
103
 
    
104
104
  }
105
105
  fprintf(fp,"\n");
106
106
  
108
108
  if ( counter == 0 )
109
109
    fprintf(fp,"cells = [");
110
110
  else
111
 
    fprintf(fp,"cells{%d} = [", counter + 1);
112
 
  for (CellIterator c(mesh); !c.end(); ++c)
 
111
    fprintf(fp,"cells{%u} = [", counter + 1);
 
112
  for (CellIterator c(mesh); !c.end();)
113
113
  {
114
 
    for (VertexIterator n(c); !n.end(); ++n)
115
 
      fprintf(fp, "%d ", n->id() + 1);
 
114
    for (VertexIterator v(c); !v.end(); ++v)
 
115
      fprintf(fp, "%u ", (v->index()) + 1 );
116
116
    
117
 
    if ( c.last() )
 
117
    ++c;
 
118
    if ( c.end() )
118
119
      fprintf(fp, "]';\n");
119
120
    else
120
121
      fprintf(fp, "\n");
126
127
  if ( counter == 0 )
127
128
    fprintf(fp,"edges = [1;2;0;0;0;0;0];\n\n");
128
129
  else
129
 
    fprintf(fp,"edges{%d} = [1;2;0;0;0;0;0];\n\n", counter + 1);
 
130
    fprintf(fp,"edges{%u} = [1;2;0;0;0;0;0];\n\n", counter + 1);
130
131
  
131
132
  // Close file
132
133
  fclose(fp);
167
168
    fprintf(fp, "%s = [", u.name().c_str());
168
169
    for (unsigned int i = 0; i < u.vectordim(); i++)
169
170
    { 
170
 
      for (VertexIterator n(u.mesh()); !n.end(); ++n)
171
 
        fprintf(fp, " %.15f", u(*n, i));
 
171
      for (VertexIterator v(u.mesh()); !v.end(); ++v)
 
172
        fprintf(fp, " %.15f", u(*v, i));
172
173
        fprintf(fp, ";");
173
174
    }
174
175
    fprintf(fp, " ]';\n\n");
175
176
  }
176
177
  else
177
178
  {
178
 
    fprintf(fp, "%s{%d} = [", u.name().c_str(), counter1 + 1);
 
179
    fprintf(fp, "%s{%u} = [", u.name().c_str(), counter1 + 1);
179
180
    for (unsigned int i = 0; i < u.vectordim(); i++)
180
181
    { 
181
 
      for (VertexIterator n(u.mesh()); !n.end(); ++n)
182
 
        fprintf(fp, " %.15f", u(*n, i));
 
182
      for (VertexIterator v(u.mesh()); !v.end(); ++v)
 
183
        fprintf(fp, " %.15f", u(*v, i));
183
184
        fprintf(fp, ";");
184
185
    }
185
186
    fprintf(fp, " ]';\n\n");