1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
main ()
{
int rm1_max, N1, i, Nt, eps;
double Veff, Veff_t, abs_rs1, abs_rs2,V_espace,xs[Nt], ys[Nt], zs[Nt], xdiff;
srand(time(NULL));
Nt=100;
rm1_max=10;
V_espace=2.0*rm1_max*2.0*rm1_max*4.0*rm1_max;
/* eps est la largeur du recouvrement; quand eps=2rm il y a recouvrement total, et pour eps=0 il ny a pas de recouvrement*/
/*eps peut varier de 0 à 2rm1_max*/
eps=0;
N1=0; xdiff=4.0*rm1_max-eps;
for (i=0; i<=Nt; ++i){
/* on lance les "cailloux" dans le volume totale*/
xs[i]=-2.0*rm1_max + (((double) rand() / RAND_MAX) * 4.0 * rm1_max);
ys[i]=-rm1_max + (((double) rand() / RAND_MAX) * 2.0 * rm1_max);
zs[i]=-rm1_max + (((double) rand() / RAND_MAX) * 2.0 * rm1_max);
/* on retranche pour que le zero soit au centre du systeme*/
/* abs_rs1 est la distance entre la source et lhydrophone 1 qui se trouve initialement aux coordonnees x=-rm1_max, y=rm1_max et z=rm1_max*/
/*au fur et a mesure que eps augmente, le centre des deux hydrophones se déplace de +eps/2 pour H1 en -rm1_max et -eps/2 pour H2 en +rm1_max*/
abs_rs1=sqrt((xs[i]-(-rm1_max+(eps/2.0)))*(xs[i]-(-rm1_max+(eps/2.0)))+ys[i]*ys[i]+zs[i]*zs[i]);
abs_rs2=sqrt((xs[i]-rm1_max-(eps/2.0))*(xs[i]-rm1_max-(eps/2.0))+ys[i]*ys[i]+zs[i]*zs[i]);
/* Simple signal*/
/*if (abs_rs1<=rm1_max && abs_rs2<=rm1_max)*/
{N1=N1+1;}
Veff=V_espace*N1/Nt;
printf("N1: %d \n", N1);
printf("V1eff %lf \n", Veff);
}
} |
Partager