inline t_v miroiratorvcalculator(t_v ray, t_v norm) { return (normalisator(vav(norm, normalisator(vav(ray, norm))))); }
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); }