#include "sopnamsp.h" #include "machdefs.h" #include #include #include #include #include #include #include "ntuple.h" #include "constcosmo.h" #include "geneutils.h" // ---- // ---- Pattern de diffraction Est-Ouest pour HSHS // ---- // ...Figure de DIFFRACTION // Le detecteur de chacune des antennes reste toujours dans le plan focal // sur l'axe optique E-W. // La puissance mesuree par l'antenne est donc celle mesuree dans le plan focal // sur l'axe optique. // Pour un rayon arrivant avec l'incidence theta, la valeur mesuree sur l'axe // optique est celle de la figure de diffraction d'un rayon arrivant // paralellement a l'axe optique (theta=0) mais mesuree en -theta et MULTIPLIEE // par cos(theta) puisque la surface collectrice effective est plus faible. // Le programme renvoie la figure de diffraction "diff" dont le maximum est en "t=0" // NON-MULTIPLIEE par cos(theta) // ...Figure d'INTERFERENCE // Si tous les detecteurs de chaque antenne sont lus et additionnes en phase, // la figure d'interference est donnee par les differences de marche // dues a la variation de l'angle d'incidence des rayons. // Cette figure d'interference est celle donnee dans le programme ci-apres par "intf". // Mais l'experience mesure les amplitudes elementaires sur chaque antenne et les additionne // en ajoutant ("electroniquement") une phase "phi" a chaque antenne. // La figure d'interference est donc decalee telle que son maximum d'ordre // zero (rayons arrivant en phase) soit centre en "phi". // Dans le programme le dephasage "phi" est exprime par l'angle d'incidence theta0 // des rayons qui vont arriver en phase. // La difference de marche appliquee a une antenne // a la position X sera delta=X*sin(theta0) // ...Normalisation // Les courbes "intf" et "diff" sont chacunes telles que leurs valeurs maximales // sur tout le domaine en angle sont egales a 1 // ...Resultat // Le resultat final pour obtenir la contribution a la puissance mesuree // par l'antenne en fonction de la direction du rayon incident est donc: // ---- Puissance = intf * diff * cos(theta) ---- // int main(int narg,char *arg[]) { const double torad = M_PI/180.; // Lambda = longueur d'onde (metres) double Lambda = 0.21; // Tmax = angle maximum de scan a partir du zenith (degres) // (si <0 alors -Tmax* diffraction_first_zero) // Nang nombre de points entre deux maxi d'interference //double Tmax = 90.; double Tmax = -5.; double Nang = 100; // Theta0 = angle d'incidence (degre) des rayons qui arrivent en phase // (traduit le dephasage de phase electronique applique aux antennes) double Theta0 = 0.; // Dcyl = largeur du cylindre en metres // Ncyl = nombre cylindres // Xcyl = distance entre les cylindres en metres double Dcyl = 10.; const int Ncyl = 10; double Xcyl[Ncyl]; Xcyl[0] = 0.; for(int i=1;i0) cout<<" d = "<dxmax) dxmax=d; } cout<<"Minimum distance between cylinders = "< minimum cylinder distance"< " < " < " < sin="<90.) Tmax = 90.; double sainc = samax/Nang; cout<<"Scan 0 to "< "<M_PI_2) Tmax=M_PI_2; int nest = int(2.*sin(Tmax)/sainc)+1; cout<<"Estimated number of entries "<10)? nest/10: 1; int nent = 0; // On parcourt en sin(angle) for(double sa=-sin(Tmax);sa0. ! "nsta connectpoints" addline -90 0 90 0 "red" # Dephasage electronique d'angle t (deg) set t0 0.6 n/plot nt.intf%sin(t*M_PI/180.)-sin($t0*M_PI/180.) ! ! "nsta connectpoints" n/plot nt.diff%sin(t*M_PI/180.) ! ! "nsta connectpoints same red" */