00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 void save_VTK(int num)
00036 {
00037 int i;
00038 FILE *fp;
00039 char s[200];
00040
00041 printf("Saving the VTK format files... num = %d\n",num);
00042
00043
00044 sprintf(s,"potential/VTK_format/potential%d.vtk",num);
00045 if(num<100) sprintf(s,"potential/VTK_format/potential0%d.vtk",num);
00046 if(num<10) sprintf(s,"potential/VTK_format/potential00%d.vtk",num);
00047
00048 fp=fopen(s,"w");
00049 fprintf(fp,"# vtk DataFile Version 2.0\n");
00050 fprintf(fp,"potential field on every node of the mesh (scalar in Volt)\n");
00051 fprintf(fp,"ASCII\n");
00052 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00053 fprintf(fp,"POINTS %d float\n",Ng);
00054 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00055 coord[1][i]*1.e6,coord[2][i]*1.e6);
00056 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00057 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00058 noeud_geo[1][i]-1,
00059 noeud_geo[2][i]-1,
00060 noeud_geo[3][i]-1);
00061 fprintf(fp,"CELL_TYPES %d\n",Ne);
00062 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00063 fprintf(fp,"POINT_DATA %d\n",Ng);
00064 fprintf(fp,"SCALARS potential double 1\n");
00065 fprintf(fp,"LOOKUP_TABLE default\n");
00066 for(i=0;i<Ng;i++) fprintf(fp,"%g\n",V[i]);
00067 fclose(fp);
00068
00069
00070 sprintf(s,"E/VTK_format/Efield%d.vtk",num);
00071 if(num<100) sprintf(s,"E/VTK_format/Efield0%d.vtk",num);
00072 if(num<10) sprintf(s,"E/VTK_format/Efield00%d.vtk",num);
00073
00074 fp=fopen(s,"w");
00075 fprintf(fp,"# vtk DataFile Version 2.0\n");
00076 fprintf(fp,"potential field on every node of the mesh (scalar in Volt)\n");
00077 fprintf(fp,"ASCII\n");
00078 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00079 fprintf(fp,"POINTS %d float\n",Ng);
00080 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00081 coord[1][i]*1.e6,coord[2][i]*1.e6);
00082 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00083 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00084 noeud_geo[1][i]-1,
00085 noeud_geo[2][i]-1,
00086 noeud_geo[3][i]-1);
00087 fprintf(fp,"CELL_TYPES %d\n",Ne);
00088 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00089 fprintf(fp,"POINT_DATA %d\n",Ng);
00090 fprintf(fp,"VECTORS electric_field double\n");
00091 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",Ex[i],Ey[i],Ez[i]);
00092 fclose(fp);
00093
00094
00095 sprintf(s,"e_density/VTK_format/e_density%d.vtk",num);
00096 if(num<100) sprintf(s,"e_density/VTK_format/e_density0%d.vtk",num);
00097 if(num<10) sprintf(s,"e_density/VTK_format/e_density00%d.vtk",num);
00098
00099 fp=fopen(s,"w");
00100 fprintf(fp,"# vtk DataFile Version 2.0\n");
00101 fprintf(fp,"potential field on every node of the mesh (scalar in Volt)\n");
00102 fprintf(fp,"ASCII\n");
00103 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00104 fprintf(fp,"POINTS %d float\n",Ng);
00105 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00106 coord[1][i]*1.e6,coord[2][i]*1.e6);
00107 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00108 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00109 noeud_geo[1][i]-1,
00110 noeud_geo[2][i]-1,
00111 noeud_geo[3][i]-1);
00112 fprintf(fp,"CELL_TYPES %d\n",Ne);
00113 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00114 fprintf(fp,"POINT_DATA %d\n",Ng);
00115 fprintf(fp,"SCALARS electron_density double 1\n");
00116 fprintf(fp,"LOOKUP_TABLE default\n");
00117 for(i=0;i<Ng;i++) fprintf(fp,"%g\n",NE[i]);
00118 fclose(fp);
00119
00120 if((it==number_of_steps-1) || (it==number_of_steps)){
00121
00122 sprintf(s,"e_velocity/VTK_format/e_velocity%d.vtk",num);
00123 if(num<100) sprintf(s,"e_velocity/VTK_format/e_velocity0%d.vtk",num);
00124 if(num<10) sprintf(s,"e_velocity/VTK_format/e_velocity00%d.vtk",num);
00125
00126 fp=fopen(s,"w");
00127 fprintf(fp,"# vtk DataFile Version 2.0\n");
00128 fprintf(fp,"velocity field on every node of the mesh (vector)\n");
00129 fprintf(fp,"ASCII\n");
00130 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00131 fprintf(fp,"POINTS %d float\n",Ng);
00132 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00133 coord[1][i]*1.e6,coord[2][i]*1.e6);
00134 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00135 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00136 noeud_geo[1][i]-1,
00137 noeud_geo[2][i]-1,
00138 noeud_geo[3][i]-1);
00139 fprintf(fp,"CELL_TYPES %d\n",Ne);
00140 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00141 fprintf(fp,"POINT_DATA %d\n",Ng);
00142 fprintf(fp,"VECTORS electron_velocity double\n");
00143 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",XVEL[i]/((double)MEAN),
00144 YVEL[i]/((double)MEAN),
00145 ZVEL[i]/((double)MEAN));
00146 fclose(fp);
00147
00148
00149 sprintf(s,"e_current/VTK_format/e_current%d.vtk",num);
00150 if(num<100) sprintf(s,"e_current/VTK_format/e_current0%d.vtk",num);
00151 if(num<10) sprintf(s,"e_current/VTK_format/e_current00%d.vtk",num);
00152
00153 fp=fopen(s,"w");
00154 fprintf(fp,"# vtk DataFile Version 2.0\n");
00155 fprintf(fp,"currents field on every node of the mesh (vector)\n");
00156 fprintf(fp,"ASCII\n");
00157 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00158 fprintf(fp,"POINTS %d float\n",Ng);
00159 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00160 coord[1][i]*1.e6,coord[2][i]*1.e6);
00161 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00162 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00163 noeud_geo[1][i]-1,
00164 noeud_geo[2][i]-1,
00165 noeud_geo[3][i]-1);
00166 fprintf(fp,"CELL_TYPES %d\n",Ne);
00167 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00168 fprintf(fp,"POINT_DATA %d\n",Ng);
00169 fprintf(fp,"VECTORS electron_velocity double\n");
00170 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",-Q*NE[i]*XVEL[i]/((double)MEAN),
00171 -Q*NE[i]*YVEL[i]/((double)MEAN),
00172 -Q*NE[i]*ZVEL[i]/((double)MEAN));
00173 fclose(fp);
00174
00175
00176 sprintf(s,"e_energy/VTK_format/e_energy%d.vtk",num);
00177 if(num<100) sprintf(s,"e_energy/VTK_format/e_energy0%d.vtk",num);
00178 if(num<10) sprintf(s,"e_energy/VTK_format/e_energy00%d.vtk",num);
00179
00180 fp=fopen(s,"w");
00181 fprintf(fp,"# vtk DataFile Version 2.0\n");
00182 fprintf(fp,"potential field on every node of the mesh (scalar in Volt)\n");
00183 fprintf(fp,"ASCII\n");
00184 fprintf(fp,"DATASET UNSTRUCTURED_GRID\n");
00185 fprintf(fp,"POINTS %d float\n",Ng);
00186 for(i=0;i<Ng;i++) fprintf(fp,"%g %g %g\n",coord[0][i]*1.e6,
00187 coord[1][i]*1.e6,coord[2][i]*1.e6);
00188 fprintf(fp,"CELLS %d %d\n",Ne,Ne*5);
00189 for(i=0;i<Ne;i++) fprintf(fp,"4 %d %d %d %d\n",noeud_geo[0][i]-1,
00190 noeud_geo[1][i]-1,
00191 noeud_geo[2][i]-1,
00192 noeud_geo[3][i]-1);
00193 fprintf(fp,"CELL_TYPES %d\n",Ne);
00194 for(i=0;i<Ne;i++) fprintf(fp,"10\n");
00195 fprintf(fp,"POINT_DATA %d\n",Ng);
00196 fprintf(fp,"SCALARS electron_energy double 1\n");
00197 fprintf(fp,"LOOKUP_TABLE default\n");
00198 for(i=0;i<Ng;i++) fprintf(fp,"%g\n",ENEL[i]/((double)MEAN));
00199 fclose(fp);
00200 }
00201 }
00202