Main Page | Directories | File List | File Members

save_BB.h

Go to the documentation of this file.
00001 /*
00002    This file belongs to Aeneas. Aeneas is a GNU package released under GPL 3 license.
00003    This code is a simulator for Submicron 3D Semiconductor Devices. 
00004    It implements the Monte Carlo transport in 3D tetrahedra meshes
00005    for the simulation of the semiclassical Boltzmann equation for both electrons.
00006    It also includes all the relevant quantum effects for nanodevices.
00007 
00008    Copyright (C) 2007 Jean Michel Sellier <sellier@dmi.unict.it>
00009  
00010    This program is free software; you can redistribute it and/or modify
00011    it under the terms of the GNU General Public License as published by
00012    the Free Software Foundation; either version 3, or (at your option)
00013    any later version.
00014 
00015    This program is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019 
00020    You should have received a copy of the GNU General Public License
00021    along with this program. If not, see <http://www.gnu.org/licenses/>.
00022 */
00023 
00024 // Last modified : 02 august 2007, Siracusa, Jean Michel Sellier
00025 
00026 // This subroutine saves the computed electric field in a BB format file
00027 
00028 // The electrostatic potential is described in micron
00029 // the potential is saved on the nodes of the mesh
00030 
00031 // The electric field components are described in V/micron
00032 // The Ex, Ey and Ez component are saved on the nodes of the mesh
00033 
00034 void save_BB(int num)
00035 {
00036 // created on 31 may 2005, Siracusa, J.M.Sellier
00037  int i;
00038  FILE *fp;
00039  char s[200];
00040 
00041  printf("Saving the BB format files... num = %d\n",num);
00042 
00043  sprintf(s,"potential/BB_mesh_format/potential%d.bb",num);
00044  if(num<100) sprintf(s,"potential/BB_mesh_format/potential0%d.bb",num);
00045  if(num<10)  sprintf(s,"potential/BB_mesh_format/potential00%d.bb",num);
00046 
00047  fp=fopen(s,"w");
00048  fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00049  for(i=0;i<Ng;i++){
00050 //  VecGetValues(u,1,&i,y);
00051   fprintf(fp,"%g\n",V[i]); // the potential is in Volts
00052 //  printf("%d %g\n",i,V[i]);
00053  }
00054  fclose(fp);
00055  
00056  sprintf(s,"E/Ex_BB_mesh_format/Ex%d.bb",num);
00057  if(num<100) sprintf(s,"E/Ex_BB_mesh_format/Ex0%d.bb",num);
00058  if(num<10)  sprintf(s,"E/Ex_BB_mesh_format/Ex00%d.bb",num);
00059 
00060  fp=fopen(s,"w");
00061  fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00062  for(i=0;i<Ng;i++){
00063   fprintf(fp,"%g\n",Ex[i]); // the potential is in Volts/meter
00064  }
00065  fclose(fp);
00066  
00067  sprintf(s,"E/Ey_BB_mesh_format/Ey%d.bb",num);
00068  if(num<100) sprintf(s,"E/Ey_BB_mesh_format/Ey0%d.bb",num);
00069  if(num<10)  sprintf(s,"E/Ey_BB_mesh_format/Ey00%d.bb",num);
00070 
00071  fp=fopen(s,"w");
00072  fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00073  for(i=0;i<Ng;i++){
00074   fprintf(fp,"%g\n",Ey[i]); // the potential is in Volts/meter
00075  }
00076  fclose(fp);
00077  
00078  sprintf(s,"E/Ez_BB_mesh_format/Ez%d.bb",num);
00079  if(num<100) sprintf(s,"E/Ez_BB_mesh_format/Ez0%d.bb",num);
00080  if(num<10)  sprintf(s,"E/Ez_BB_mesh_format/Ez00%d.bb",num);
00081 
00082  fp=fopen(s,"w");
00083  fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00084  for(i=0;i<Ng;i++){
00085   fprintf(fp,"%g\n",Ez[i]); // the potential is in Volts/meter
00086  }
00087  fclose(fp);
00088  
00089  sprintf(s,"e_density/BB_mesh_format/e_density%d.bb",num);
00090  if(num<100) sprintf(s,"e_density/BB_mesh_format/e_density0%d.bb",num);
00091  if(num<10)  sprintf(s,"e_density/BB_mesh_format/e_density00%d.bb",num);
00092 
00093  fp=fopen(s,"w"); 
00094  fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00095  for(i=0;i<Ng;i++){
00096   fprintf(fp,"%g\n",NE[i]); // electron density in 1/m^3
00097  }
00098  fclose(fp);
00099  
00100  if((it==number_of_steps-1) || (it==number_of_steps)){
00101    sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel%d.bb",num);
00102    if(num<100) sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel0%d.bb",num);
00103    if(num<10)  sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel00%d.bb",num);
00104 
00105    fp=fopen(s,"w");
00106    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00107    for(i=0;i<Ng;i++){
00108     fprintf(fp,"%g\n",XVEL[i]/((double)MEAN));
00109    }
00110    fclose(fp);
00111 
00112    sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel%d.bb",num);
00113    if(num<100) sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel0%d.bb",num);
00114    if(num<10)  sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel00%d.bb",num);
00115 
00116    fp=fopen(s,"w");
00117    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00118    for(i=0;i<Ng;i++){
00119     fprintf(fp,"%g\n",YVEL[i]/((double)MEAN)); // the potential is in Volts/meter
00120    }
00121    fclose(fp);
00122 
00123    sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel%d.bb",num);
00124    if(num<100) sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel0%d.bb",num);
00125    if(num<10)  sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel00%d.bb",num);
00126 
00127    fp=fopen(s,"w");
00128    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00129    for(i=0;i<Ng;i++){
00130     fprintf(fp,"%g\n",ZVEL[i]/((double)MEAN)); // the potential is in Volts/meter
00131    }
00132    fclose(fp);
00133 // ***
00134    sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr%d.bb",num);
00135    if(num<100) sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr0%d.bb",num);
00136    if(num<10)  sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr00%d.bb",num);
00137 
00138    fp=fopen(s,"w");
00139    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00140    for(i=0;i<Ng;i++){
00141     fprintf(fp,"%g\n",-Q*NE[i]*XVEL[i]/((double)MEAN));
00142    }
00143    fclose(fp);
00144 
00145    sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr%d.bb",num);
00146    if(num<100) sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr0%d.bb",num);
00147    if(num<10)  sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr00%d.bb",num);
00148 
00149    fp=fopen(s,"w");
00150    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00151    for(i=0;i<Ng;i++){
00152     fprintf(fp,"%g\n",-Q*NE[i]*YVEL[i]/((double)MEAN)); // the potential is in Volts/meter
00153    }
00154    fclose(fp);
00155 
00156    sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr%d.bb",num);
00157    if(num<100) sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr0%d.bb",num);
00158    if(num<10)  sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr00%d.bb",num);
00159 
00160    fp=fopen(s,"w");
00161    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00162    for(i=0;i<Ng;i++){
00163     fprintf(fp,"%g\n",-Q*NE[i]*ZVEL[i]/((double)MEAN)); // the potential is in Volts/meter
00164    }
00165    fclose(fp);
00166 // ***
00167 
00168    sprintf(s,"e_energy/BB_mesh_format/e_energy%d.bb",num);
00169    if(num<100) sprintf(s,"e_energy/BB_mesh_format/e_energy0%d.bb",num);
00170    if(num<10)  sprintf(s,"e_energy/BB_mesh_format/e_energy00%d.bb",num);
00171 
00172    fp=fopen(s,"w");
00173    fprintf(fp,"%d %d %d %d\n",dim,1,Ne,2);
00174    for(i=0;i<Ng;i++){
00175     fprintf(fp,"%g\n",ENEL[i]/((double)MEAN)); // electron density in 1/m^3
00176    }
00177    fclose(fp);
00178  }
00179  
00180 // The following rows are in order to avoid the use of the MS DOS command "copy"
00181 // which is a completely different than the UNIX command "cp"
00182 // potential
00183  sprintf(s,"potential/BB_mesh_format/potential%d.mesh",num);
00184  if(num<100) sprintf(s,"potential/BB_mesh_format/potential0%d.mesh",num);
00185  if(num<10)  sprintf(s,"potential/BB_mesh_format/potential00%d.mesh",num);
00186  fp=fopen(s,"w");
00187  fprintf(fp,"MeshVersionFormatted 1\n");
00188  fprintf(fp,"Dimension\n");
00189  fprintf(fp,"3\n");
00190  fprintf(fp,"Vertices\n");
00191  fprintf(fp,"%d\n",Ng);
00192  for(i=0;i<Ng;i++) 
00193     fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00194                               coord[2][i]*1.e6,i_front[i]);
00195  fprintf(fp,"Tetrahedra\n");
00196  fprintf(fp,"%d\n",Ne);
00197  for(i=0;i<Ne;i++)
00198    fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00199                                  noeud_geo[2][i],noeud_geo[3][i],
00200                                  i_dom[i]);
00201  fclose(fp);
00202 // Ex
00203  sprintf(s,"E/Ex_BB_mesh_format/Ex%d.mesh",num);
00204  if(num<100) sprintf(s,"E/Ex_BB_mesh_format/Ex0%d.mesh",num);
00205  if(num<10)  sprintf(s,"E/Ex_BB_mesh_format/Ex00%d.mesh",num);
00206  fp=fopen(s,"w");
00207  fprintf(fp,"MeshVersionFormatted 1\n");
00208  fprintf(fp,"Dimension\n");
00209  fprintf(fp,"3\n");
00210  fprintf(fp,"Vertices\n");
00211  fprintf(fp,"%d\n",Ng);
00212  for(i=0;i<Ng;i++)
00213     fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00214                               coord[2][i]*1.e6,i_front[i]);
00215  fprintf(fp,"Tetrahedra\n");
00216  fprintf(fp,"%d\n",Ne);
00217  for(i=0;i<Ne;i++)
00218    fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00219                                  noeud_geo[2][i],noeud_geo[3][i],
00220                                  i_dom[i]);
00221  fclose(fp);
00222 // Ey
00223  sprintf(s,"E/Ey_BB_mesh_format/Ey%d.mesh",num);
00224  if(num<100) sprintf(s,"E/Ey_BB_mesh_format/Ey0%d.mesh",num);
00225  if(num<10)  sprintf(s,"E/Ey_BB_mesh_format/Ey00%d.mesh",num);
00226  fp=fopen(s,"w");
00227  fprintf(fp,"MeshVersionFormatted 1\n");
00228  fprintf(fp,"Dimension\n");
00229  fprintf(fp,"3\n");
00230  fprintf(fp,"Vertices\n");
00231  fprintf(fp,"%d\n",Ng);
00232  for(i=0;i<Ng;i++)
00233     fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00234                               coord[2][i]*1.e6,i_front[i]);
00235  fprintf(fp,"Tetrahedra\n");
00236  fprintf(fp,"%d\n",Ne);
00237  for(i=0;i<Ne;i++)
00238    fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00239                                  noeud_geo[2][i],noeud_geo[3][i],
00240                                  i_dom[i]);
00241  fclose(fp);
00242 // Ez
00243  sprintf(s,"E/Ez_BB_mesh_format/Ez%d.mesh",num);
00244  if(num<100) sprintf(s,"E/Ez_BB_mesh_format/Ez0%d.mesh",num);
00245  if(num<10)  sprintf(s,"E/Ez_BB_mesh_format/Ez00%d.mesh",num);
00246  fp=fopen(s,"w");
00247  fprintf(fp,"MeshVersionFormatted 1\n");
00248  fprintf(fp,"Dimension\n");
00249  fprintf(fp,"3\n");
00250  fprintf(fp,"Vertices\n");
00251  fprintf(fp,"%d\n",Ng);
00252  for(i=0;i<Ng;i++)
00253     fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00254                               coord[2][i]*1.e6,i_front[i]);
00255  fprintf(fp,"Tetrahedra\n");
00256  fprintf(fp,"%d\n",Ne);
00257  for(i=0;i<Ne;i++)
00258    fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00259                                  noeud_geo[2][i],noeud_geo[3][i],
00260                                  i_dom[i]);
00261  fclose(fp);
00262 // e_density
00263  sprintf(s,"e_density/BB_mesh_format/e_density%d.mesh",num);
00264  if(num<100) sprintf(s,"e_density/BB_mesh_format/e_density0%d.mesh",num);
00265  if(num<10)  sprintf(s,"e_density/BB_mesh_format/e_density00%d.mesh",num);
00266  fp=fopen(s,"w");
00267  fprintf(fp,"MeshVersionFormatted 1\n");
00268  fprintf(fp,"Dimension\n");
00269  fprintf(fp,"3\n");
00270  fprintf(fp,"Vertices\n");
00271  fprintf(fp,"%d\n",Ng);
00272  for(i=0;i<Ng;i++)
00273     fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00274                               coord[2][i]*1.e6,i_front[i]);
00275  fprintf(fp,"Tetrahedra\n");
00276  fprintf(fp,"%d\n",Ne);
00277  for(i=0;i<Ne;i++)
00278    fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00279                                  noeud_geo[2][i],noeud_geo[3][i],
00280                                  i_dom[i]);
00281  fclose(fp);
00282  if((it==number_of_steps-1) || (it==number_of_steps)){
00283 // xvel
00284    sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel%d.mesh",num);
00285    if(num<100) sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel0%d.mesh",num);
00286    if(num<10)  sprintf(s,"e_velocity/xvel_BB_mesh_format/xvel00%d.mesh",num);
00287    fp=fopen(s,"w");
00288    fprintf(fp,"MeshVersionFormatted 1\n");
00289    fprintf(fp,"Dimension\n");
00290    fprintf(fp,"3\n");
00291    fprintf(fp,"Vertices\n");
00292    fprintf(fp,"%d\n",Ng);
00293    for(i=0;i<Ng;i++)
00294       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00295                                  coord[2][i]*1.e6,i_front[i]);
00296    fprintf(fp,"Tetrahedra\n");
00297    fprintf(fp,"%d\n",Ne);
00298    for(i=0;i<Ne;i++)
00299      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00300                                    noeud_geo[2][i],noeud_geo[3][i],
00301                                    i_dom[i]);
00302    fclose(fp);
00303 // yvel
00304    sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel%d.mesh",num);
00305    if(num<100) sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel0%d.mesh",num);
00306    if(num<10)  sprintf(s,"e_velocity/yvel_BB_mesh_format/yvel00%d.mesh",num);
00307    fp=fopen(s,"w");
00308    fprintf(fp,"MeshVersionFormatted 1\n");
00309    fprintf(fp,"Dimension\n");
00310    fprintf(fp,"3\n");
00311    fprintf(fp,"Vertices\n");
00312    fprintf(fp,"%d\n",Ng);
00313    for(i=0;i<Ng;i++)
00314       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00315                                  coord[2][i]*1.e6,i_front[i]);
00316    fprintf(fp,"Tetrahedra\n");
00317    fprintf(fp,"%d\n",Ne);
00318    for(i=0;i<Ne;i++)
00319      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00320                                    noeud_geo[2][i],noeud_geo[3][i],
00321                                    i_dom[i]);
00322    fclose(fp);
00323 // zvel
00324    sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel%d.mesh",num);
00325    if(num<100) sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel0%d.mesh",num);
00326    if(num<10)  sprintf(s,"e_velocity/zvel_BB_mesh_format/zvel00%d.mesh",num);
00327    fp=fopen(s,"w");
00328    fprintf(fp,"MeshVersionFormatted 1\n");
00329    fprintf(fp,"Dimension\n");
00330    fprintf(fp,"3\n");
00331    fprintf(fp,"Vertices\n");
00332    fprintf(fp,"%d\n",Ng);
00333    for(i=0;i<Ng;i++)
00334       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00335                                  coord[2][i]*1.e6,i_front[i]);
00336    fprintf(fp,"Tetrahedra\n");
00337    fprintf(fp,"%d\n",Ne);
00338    for(i=0;i<Ne;i++)
00339      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00340                                    noeud_geo[2][i],noeud_geo[3][i],
00341                                    i_dom[i]);
00342    fclose(fp);
00343 // ***
00344 // xcurr
00345    sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr%d.mesh",num);
00346    if(num<100) sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr0%d.mesh",num);
00347    if(num<10)  sprintf(s,"e_current/e_current_x_BB_mesh_format/xcurr00%d.mesh",num);
00348    fp=fopen(s,"w");
00349    fprintf(fp,"MeshVersionFormatted 1\n");
00350    fprintf(fp,"Dimension\n");
00351    fprintf(fp,"3\n");
00352    fprintf(fp,"Vertices\n");
00353    fprintf(fp,"%d\n",Ng);
00354    for(i=0;i<Ng;i++)
00355       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00356                                  coord[2][i]*1.e6,i_front[i]);
00357    fprintf(fp,"Tetrahedra\n");
00358    fprintf(fp,"%d\n",Ne);
00359    for(i=0;i<Ne;i++)
00360      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00361                                    noeud_geo[2][i],noeud_geo[3][i],
00362                                    i_dom[i]);
00363    fclose(fp);
00364 // ycurr
00365    sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr%d.mesh",num);
00366    if(num<100) sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr0%d.mesh",num);
00367    if(num<10)  sprintf(s,"e_current/e_current_y_BB_mesh_format/ycurr00%d.mesh",num);
00368    fp=fopen(s,"w");
00369    fprintf(fp,"MeshVersionFormatted 1\n");
00370    fprintf(fp,"Dimension\n");
00371    fprintf(fp,"3\n");
00372    fprintf(fp,"Vertices\n");
00373    fprintf(fp,"%d\n",Ng);
00374    for(i=0;i<Ng;i++)
00375       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00376                                  coord[2][i]*1.e6,i_front[i]);
00377    fprintf(fp,"Tetrahedra\n");
00378    fprintf(fp,"%d\n",Ne);
00379    for(i=0;i<Ne;i++)
00380      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00381                                    noeud_geo[2][i],noeud_geo[3][i],
00382                                    i_dom[i]);
00383    fclose(fp);
00384 // zcurr
00385    sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr%d.mesh",num);
00386    if(num<100) sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr0%d.mesh",num);
00387    if(num<10)  sprintf(s,"e_current/e_current_z_BB_mesh_format/zcurr00%d.mesh",num);
00388    fp=fopen(s,"w");
00389    fprintf(fp,"MeshVersionFormatted 1\n");
00390    fprintf(fp,"Dimension\n");
00391    fprintf(fp,"3\n");
00392    fprintf(fp,"Vertices\n");
00393    fprintf(fp,"%d\n",Ng);
00394    for(i=0;i<Ng;i++)
00395       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00396                                  coord[2][i]*1.e6,i_front[i]);
00397    fprintf(fp,"Tetrahedra\n");
00398    fprintf(fp,"%d\n",Ne);
00399    for(i=0;i<Ne;i++)
00400      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00401                                    noeud_geo[2][i],noeud_geo[3][i],
00402                                    i_dom[i]);
00403    fclose(fp);
00404 // ***
00405 // e_energy
00406    sprintf(s,"e_energy/BB_mesh_format/e_energy%d.mesh",num);
00407    if(num<100) sprintf(s,"e_energy/BB_mesh_format/e_energy0%d.mesh",num);
00408    if(num<10)  sprintf(s,"e_energy/BB_mesh_format/e_energy00%d.mesh",num);
00409    fp=fopen(s,"w");
00410    fprintf(fp,"MeshVersionFormatted 1\n");
00411    fprintf(fp,"Dimension\n");
00412    fprintf(fp,"3\n");
00413    fprintf(fp,"Vertices\n");
00414    fprintf(fp,"%d\n",Ng);
00415    for(i=0;i<Ng;i++)
00416       fprintf(fp,"%g %g %g %d\n",coord[0][i]*1.e6,coord[1][i]*1.e6,
00417                                  coord[2][i]*1.e6,i_front[i]);
00418    fprintf(fp,"Tetrahedra\n");
00419    fprintf(fp,"%d\n",Ne);
00420    for(i=0;i<Ne;i++)
00421      fprintf(fp,"%d %d %d %d %d\n",noeud_geo[0][i],noeud_geo[1][i],
00422                                    noeud_geo[2][i],noeud_geo[3][i],
00423                                    i_dom[i]);
00424    fclose(fp);
00425  }
00426 /* 
00427  sprintf(s,"copy device.mesh potential/potential%d.mesh",num);
00428  if(num<100) sprintf(s,"copy device.mesh potential/potential0%d.mesh",num);
00429  if(num<10)  sprintf(s,"copy device.mesh potential/potential00%d.mesh",num);
00430  system(s);
00431 
00432  sprintf(s,"copy device.mesh Ex/Ex%d.mesh",num);
00433  if(num<100) sprintf(s,"copy device.mesh Ex/Ex0%d.mesh",num);
00434  if(num<10)  sprintf(s,"copy device.mesh Ex/Ex00%d.mesh",num);
00435  system(s);
00436 
00437  sprintf(s,"copy device.mesh Ey/Ey%d.mesh",num);
00438  if(num<100) sprintf(s,"copy device.mesh Ey/Ey0%d.mesh",num);
00439  if(num<10)  sprintf(s,"copy device.mesh Ey/Ey00%d.mesh",num);
00440  system(s);
00441 
00442  sprintf(s,"copy device.mesh Ez/Ez%d.mesh",num);
00443  if(num<100) sprintf(s,"copy device.mesh Ez/Ez0%d.mesh",num);
00444  if(num<10)  sprintf(s,"copy device.mesh Ez/Ez00%d.mesh",num);
00445  system(s);
00446 
00447  sprintf(s,"copy device.mesh e_density/e_density%d.mesh",num);
00448  if(num<100) sprintf(s,"copy device.mesh e_density/e_density0%d.mesh",num);
00449  if(num<10)  sprintf(s,"copy device.mesh e_density/e_density00%d.mesh",num);
00450  system(s);
00451 
00452  sprintf(s,"copy device.mesh xvel/xvel%d.mesh",num);
00453  if(num<100) sprintf(s,"copy device.mesh xvel/xvel0%d.mesh",num);
00454  if(num<10)  sprintf(s,"copy device.mesh xvel/xvel00%d.mesh",num);
00455  system(s);
00456 
00457  sprintf(s,"copy device.mesh yvel/yvel%d.mesh",num);
00458  if(num<100) sprintf(s,"copy device.mesh yvel/yvel0%d.mesh",num);
00459  if(num<10)  sprintf(s,"copy device.mesh yvel/yvel00%d.mesh",num);
00460  system(s);
00461 
00462  sprintf(s,"copy device.mesh zvel/zvel%d.mesh",num);
00463  if(num<100) sprintf(s,"copy device.mesh zvel/zvel0%d.mesh",num);
00464  if(num<10)  sprintf(s,"copy device.mesh zvel/zvel00%d.mesh",num);
00465  system(s);
00466 
00467  sprintf(s,"copy device.mesh e_energy/e_energy%d.mesh",num);
00468  if(num<100) sprintf(s,"copy device.mesh e_energy/e_energy0%d.mesh",num);
00469  if(num<10)  sprintf(s,"copy device.mesh e_energy/e_energy00%d.mesh",num);
00470  system(s);
00471 */
00472  }
00473 

© sourcejam.com 2005-2008