Main Page | Directories | File List | File Members

electron_velocity.h File Reference

Go to the source code of this file.

Functions

void electron_velocity (void)


Function Documentation

void electron_velocity void   ) 
 

Definition at line 30 of file electron_velocity.h.

References alphaK, EG, ENEL, free(), HHM, HM, i_dom, INUM, Ne, Ng, noeud_geo, P, printf(), XVEL, YVEL, and ZVEL.

Referenced by main().

00031 {
00032  int i, n, iv, el;
00033  double *vertex;
00034  double *c;
00035  double *aux;
00036  double *dum;
00037  double ksquared;
00038  double xvelocity;
00039  double yvelocity;
00040  double zvelocity;
00041  double thesquareroot;
00042  double superparticle_energy;
00043  
00044  dum=malloc((Ng+1)*sizeof(double));
00045  vertex=malloc((Ne+1)*sizeof(double));
00046  aux=malloc((Ne+1)*sizeof(double));
00047  c=malloc((Ng+1)*sizeof(double));
00048  if(vertex==NULL || aux==NULL || c==NULL || dum==NULL){
00049    printf("electron_velocity : not enough memory in allocating arrays.\n");
00050    exit(0);
00051  }
00052  // just in case...
00053  for(i=0;i<Ne;i++){
00054     aux[i]=0.;
00055     vertex[i]=0.;
00056  }
00057 
00058 // x-component velocity 
00059 // ====================
00060  for(n=1;n<=INUM;n++){
00061   iv=(int)(P[n][0]);
00062   el=(int)(P[n][9]);
00063   ksquared=P[n][1]*P[n][1]+P[n][2]*P[n][2]+P[n][3]*P[n][3];
00064   thesquareroot=sqrt(1.+4.*alphaK[i_dom[el]][iv]*HHM[i_dom[el]][iv]*ksquared);
00065   xvelocity=P[n][1]*HM[i_dom[el]][iv]/thesquareroot;
00066   vertex[el]+=1.;
00067   aux[el]+=xvelocity;
00068  }
00069 
00070 // Mean Value of the macroscopic variables
00071 // =======================================
00072  for(i=0;i<Ne;i++) if(vertex[i]!=0.) aux[i]/=vertex[i];
00073  for(i=0;i<Ng;i++){ c[i]=0.; dum[i]=0.;}
00074  for(i=0;i<Ne;i++){
00075    int j;
00076    for(j=0;j<4;j++){
00077      dum[noeud_geo[j][i]-1]+=aux[i];
00078      c[noeud_geo[j][i]-1]+=1.;
00079    }
00080  }
00081  for(i=0;i<Ng;i++) dum[i]/=c[i];
00082  for(i=0;i<Ng;i++) XVEL[i]+=dum[i];
00083 
00084 // y-component velocity
00085 // ====================
00086  for(i=0;i<Ne;i++){
00087     aux[i]=0.;
00088     vertex[i]=0.;
00089  }
00090  for(n=1;n<=INUM;n++){
00091   iv=(int)(P[n][0]);
00092   el=(int)(P[n][9]);
00093   ksquared=P[n][1]*P[n][1]+P[n][2]*P[n][2]+P[n][3]*P[n][3];
00094   thesquareroot=sqrt(1.+4.*alphaK[i_dom[el]][iv]*HHM[i_dom[el]][iv]*ksquared);
00095   yvelocity=P[n][2]*HM[i_dom[el]][iv]/thesquareroot;
00096   vertex[el]+=1.;
00097   aux[el]+=yvelocity;
00098  }
00099 
00100 // Mean Value of the macroscopic variables
00101 // =======================================
00102  for(i=0;i<Ne;i++) if(vertex[i]!=0.) aux[i]/=vertex[i];
00103  for(i=0;i<Ng;i++){ c[i]=0.; dum[i]=0.;}
00104  for(i=0;i<Ne;i++){
00105    int j;
00106    for(j=0;j<4;j++){
00107      dum[noeud_geo[j][i]-1]+=aux[i];
00108      c[noeud_geo[j][i]-1]+=1.;
00109    }
00110  }
00111  for(i=0;i<Ng;i++) dum[i]/=c[i];
00112  for(i=0;i<Ng;i++) YVEL[i]+=dum[i];
00113 
00114 
00115 // z-component velocity
00116 // ====================
00117  for(i=0;i<Ne;i++){
00118     aux[i]=0.;
00119     vertex[i]=0.;
00120  }
00121  for(n=1;n<=INUM;n++){
00122   iv=(int)(P[n][0]);
00123   el=(int)(P[n][9]);
00124   ksquared=P[n][1]*P[n][1]+P[n][2]*P[n][2]+P[n][3]*P[n][3];
00125   thesquareroot=sqrt(1.+4.*alphaK[i_dom[el]][iv]*HHM[i_dom[el]][iv]*ksquared);
00126   zvelocity=P[n][3]*HM[i_dom[el]][iv]/thesquareroot;
00127   vertex[el]+=1.;
00128   aux[el]+=zvelocity;
00129  }
00130 
00131 // Mean Value of the macroscopic variables
00132 // =======================================
00133  for(i=0;i<Ne;i++) if(vertex[i]!=0.) aux[i]/=vertex[i];
00134  for(i=0;i<Ng;i++){ c[i]=0.; dum[i]=0.;}
00135  for(i=0;i<Ne;i++){
00136    int j;
00137    for(j=0;j<4;j++){
00138      dum[noeud_geo[j][i]-1]+=aux[i];
00139      c[noeud_geo[j][i]-1]+=1.;
00140    }
00141  }
00142  for(i=0;i<Ng;i++) dum[i]/=c[i];
00143  for(i=0;i<Ng;i++) ZVEL[i]+=dum[i];
00144 
00145 // electron energy
00146 // ===============
00147  for(i=0;i<Ne;i++){
00148     aux[i]=0.;
00149     vertex[i]=0.;
00150  }
00151  for(n=1;n<=INUM;n++){
00152   iv=(int)(P[n][0]);
00153   el=(int)(P[n][9]);
00154   ksquared=P[n][1]*P[n][1]+P[n][2]*P[n][2]+P[n][3]*P[n][3];
00155   thesquareroot=sqrt(1.+4.*alphaK[i_dom[el]][iv]*HHM[i_dom[el]][iv]*ksquared);
00156   superparticle_energy=(thesquareroot-1.)/(2.*alphaK[i_dom[el]][iv]);
00157   if(iv==2) superparticle_energy+=EG[i_dom[el]];
00158   vertex[el]+=1.;
00159   aux[el]+=superparticle_energy;
00160   if(iv==2) aux[el] += EG[i_dom[el]];
00161  }
00162 
00163 // Mean Value of the macroscopic variables
00164 // =======================================
00165  for(i=0;i<Ne;i++) if(vertex[i]!=0.) aux[i]/=vertex[i];
00166  for(i=0;i<Ng;i++){ c[i]=0.; dum[i]=0.;}
00167  for(i=0;i<Ne;i++){
00168    int j;
00169    for(j=0;j<4;j++){
00170      dum[noeud_geo[j][i]-1]+=aux[i];
00171      c[noeud_geo[j][i]-1]+=1.;
00172    }
00173  }
00174  for(i=0;i<Ng;i++) dum[i]/=c[i];
00175  for(i=0;i<Ng;i++) ENEL[i]+=dum[i];
00176 
00177  free(c);
00178  free(aux);
00179  free(vertex);
00180  free(dum);
00181 }


© sourcejam.com 2005-2008