Beispiel #1
0
inline t_v	miroiratorvcalculator(t_v ray, t_v norm)
{

	return (normalisator(vav(norm, normalisator(vav(ray, norm)))));
}
Beispiel #2
0
void LoadFriedemann(char *ctrfile,Plasma &Gas){

  FILE *f1=Err_fopen(ctrfile,"rt");
  char str[800]; //,str1[200];
  int brk=0;
  do{

    if(feof(f1))serror("Can't find Friedemann's data in file %s.\n",ctrfile);
    fscanf(f1,"%s",str);
    if(str[0]=='#')fgets(str,800,f1);
    else brk=1;
  }while(!brk);

  int i,j;
  double val;
  for(i=0;i<12;i++)
    if(!fscanf(f1,"%lf",&val))serror("Bad Friedemann data\n");

  double me=0.9109534e-30;
  double unit_t=(1.602e-19)*(1.602e-19)/(4*M_PI*8.854e-12)*sqrt(me)*pow(1.38e-23*Gas.par_T*1e4,-3./2.);
  printf("unit_t: %e\n",unit_t);
  double ee;
  Vector_3 vav(0,0,0);

  int stat=0;
  do{
    ee=0.;
    vav=Vector_3(0,0,0);

    for(i=0;i<Gas.n;i++){
      for(j=0;j<3;j++){
       fscanf(f1,"%lf",&(Gas.x[i][j]));
       //printf("X %d, %d: %f",i,j,Gas.x[i][j]);
       Gas.x[i][j]*=5.2917655e-11/unit_l;
       Gas.x[i][j]-=Gas.L/2;
       //printf(" - %f %f\n",Gas.x[i][j],Gas.x[i][j]/Gas.L);
      }
      for(j=0;j<3;j++){
       fscanf(f1,"%lf",&(Gas.v[i][j]));
       //ee+=Gas.v[i][j]*Gas.v[i][j];
       //printf("V %d, %d: %f",i,j,Gas.v[i][j]);
       Gas.v[i][j]*=1.9939022e-24/unit_l/me*unit_t;
       ee+=Gas.v[i][j]*Gas.v[i][j];
       vav[j]+=Gas.v[i][j];
       //printf(" - %f\n",Gas.v[i][j]);
      }
      if(feof(f1)){
        serror("Bad Friedemann data: unexpected end-of-file\n");
        break;
      }
    }
    stat=1;
    for(i=0;i<13;i++){
      if(!fscanf(f1,"%lf",&val))break;
    }
  }while(i==13 && !feof(f1));

  vav/=Gas.n;
  printf("Read Friedem: Energy: %f, Vav: (%f, %f, %f) - %f\n", ee/3/Gas.n,vav[0],vav[1],vav[2],vav*vav/3);
  //for(i=0;i<Gas.n;i++)Gas.v[i]*=sqrt(3*Gas.n/ee);

  fclose(f1);
}