; REGROUPEMENT DE TOUTES LES PROCEDURES IMPLIQUANT LES ANTENNES DU RH ; CORR_POS_ANT correction du defaut de correction de mouvement diurne du a ; des ereurs de position de toutes les antennes. ; CORR_POS_ANT_0 version embryonnaire du precedent correction de quelques ; antennes, les autres etant supposees bien placees. ; CORR_GAIN_ANT correction manuelle de certaines antennes. ; CORR_ROT_DEP_NP correction depointage et rotation non polar ; CORR_ROT_DEP_P --------------------------------- polar ; RH_CORR_ANTENNES qu'on appelle pour compiler l'ensemble ; ; Rappel : la correction du depointage des antennes de reseau H est faite ; dans CORR_ROT_DEP_NP.PRO et CORR_ROT_DEP_P.PRO. Ces programmes ; corrigent aussi de la rotation des dipoles, qui est differente ; en non polar et polar. ;______________________________________________________________________________ ; Rangement des antennes ; E2 E1 E0 ; 0 1 2 ; H1 H2 H5 H4 H5 H6 H7 NS0_ew H9 H10 H11 H12 H13 H14 H15 H16 ; 3 4 5 6 7 8 9 10 11 12 1 3 14 15 16 17 18 ; NS0 NS1 NS2 NS3 NS4 NS5 NS6 NS7 NS8 NS9 NS10 ; 19 20 21 22 23 24 25 26 27 28 29 ; NS11 NS12 NS13 NS14 NS15 NS16 NS17 NS18 NS19 NS20 ; 30 31 32 33 34 35 36 3 7 38 39 ; NS21 NS22 NS23 NS45 AA1 AA2 AA3 AA4 ; 40 41 42 43 44 45 46 47 ;______________________________________________________________________________ PRO CORR_POS_ANT, $ n_image, $ ; entree i_source_cal, h_cal, $ ; ------ date_obs, dec_obj, hmer_obj, $ ; ------ ihm, $ ; ------ correl, freq, $ : ------ harm_N ; entree et sortie ; Creation 21 juillet 03 ; But : corriger les harmoniques du defaut de correction de mouvement diurne ; du a des ereurs de position de toutes les antennes. ; Remplace CORR_POS_ANT_0, qui attribuait tout a des mauvaises positions ; des extension. ; Marche dans le cas general, ou l'objet observ'e et la source de cali- ; bration sont differents. ; Ne fait pas la difference entre une calibration d'origine et une reca- ; libration (effectuee en amont). Dans le cas d'une recalibration, ; h_cal a etet ecrasee en amont par l'heure de recalibration h_recal ; (elle meme extraite du nom du fichier de recalibration) et la source ; de recalibration est identifiee comme le soleil par ; Modifications : ; 03 oct 9 introduction des correctifs de position pour les antennes AA. ; 04 avr 12 introduction de date_cor_cal = [12, 04, 2004]. A partir de ; cette date on yient compte des positions exactes des antennes ; dans la calibration. Pour les observations utilisant une ; telle calibration (ou recalibration) il faut ensuite faire ; une correction donnee par (1) et utilisant evidemment les ; memes positions d'antennes, avant de construire des images. ; date_cor_cal sert a definir iflag (0 ou 1). Suivant la ; valeur de iflag on utilise la formule (3) ou la formule (1). ; introduction de date_cor_TR = [01, 01, 2005] . A partir de ; cette date le programme TR inclut les bases D correctes ; (les memes qui sont utilisees depuis un certains temps deja ; dans la calibration et le calcul des images). ; A partir de cette date CORR_POS_ANT n'a plus rien a faire ; et se court-circuite lui meme. ; 04 mai 27 clarification des affinements successifs des positions d'anten- ; nes, remise a zero de i_regl_sup, qui etait reste a 3 de ; facon intempestive. ; 04 sep 15 amelioration de quelques commentaires et verification qu'on ; utilise bien date_cor_cal et date_cor_TR. ; 04 dec 15 extension de la logique de recalibration : avant cette date ; i_recalib ne figurait pas dans la liste d'entree et la sour- ; ce de calibration declaree etait toujours le Cygne. La cor- ; rection de position : ; . etait correcte pour une recalibration sur le Cygne ; . aurait ete tres fausse pour une recalibration sur le soleil ; (h_recal en TU associee au passage au meridien du Cygne ; en TS). ; Il n'est pas utile d'ajouter i_recalib a la liste d'entree ; puisque la recalibration effectuee en amont se subsitue a la ; calibratuion d'origine. Il faut seulement savoir quelle est ; la source de recalibration, qui peut etre le soleil lui meme. ; La recalibration peut meme etre appliquee (pour controle) a ; une source non solaire. ; 04 mar 8 fixation de la date de modification du Temps Reel date_cor_TR, ; qui inclut desormais les corrections de phases correspondant ; aux positions reelles des antennes, date apres laquelles les ; observations ne devront plus etre corrigees avec ; CORR_POS_ANT. ; Notations : ; i_source_cal identification de la source de calibration (ou de recalibra- ; tion), ; h_cal heure centrale de l'intervalle de calibration (en pratique ; l'heure de debut est acceptable) en TS. ; intarr(> ou = 2), mais on n'utilise que heures et minutes. ; Ecrasee par h_recal en amont de CORR_POS_ANT dans le cas ; d'une recalibration. ; ; dec_obj, hmer_obj decinaison et heure de passage au meridien de l'objet ; observ'e (soleil ou source de controle (TS ou TU). ; intarr(> ou = 3). ; ihm intarr(2) : heures, minutes de la scrutation traitee (TS ou TU) ; ; POSITION DU PROBLEME : ; Si les positions des antennes (regulieres ou non) utilisees dans le program- ; me Temps Reel (TR) presentent des ecarts par rapport aux positions reelles, ; il en resulte que la correction de poursuite des franges est incorrecte et ; introduit une phase supplementaire : ; phi_e = 2*pi/lambda * (D - D0).uc (1) ; ; avec : D base reelle (de l'antenne de reference vers l'antenne de ; reseau), ; D0 base supposee dans le programme Temps Reel, ; uc vecteur unitaire de visee vers le centre de la source, ; pour lesquels on adopte le systeme habituel dans le calcul des phases : ; . x dans le pan de l'equateur vers l'ouest de Nancay ; . y ------------------------------ le sud --------- ; . z parallele a l'axe des poles. ; ; La phase phi de l'harmonique en sortie de correlateur est definie comme ; phi tel que les signaux aeriens aux antennes "de reference" et "de re- ; seau" soient rspectivement : ; exp(i omega t) et exp(i omega t + phi) ; phi_e s'ajoute alors a phi. ; ; La correction doit en etre faite ulterieurement, apres la relecture des ; harmoniques et avant les calculs d'image. Apres cette operation les harmo- ; niques restent eventuellement affectes d'une phase instrumentale constante ; (due aux longueurs de cable et aux filtres) mal corrigee. ; ; Si une calibration est faite en utilisant la meme valeur D0 pour les lignes ; de base, c'est a dire si la relecture des harmoniques faite avant la cali- ; bration ne comporte pas la correction donnee par (1), la phase addition- ; nelle phi_e donnee par (1) s'ajoute a la phase instrumentale reelle, (qui ; est comptee avec la meme convention de signe que la phase phi de l'harmoni- ; que) et la calibration fournit des phases instrumentales apparentes : ; phi_i' = phi_i + 2*pi/lambda * (D - D0).uc0 (2) ; ou uc0 est le vecteur unitaire de visee moyen vers le centre du Cygne pen- ; dant l'intervalle de calibration. ; Au cours d'une observation ulterieure (ou d'un retraitement de la meme ; observation auto-recalibree), la procedure de correction de poursuite des ; franges du programme Temps Reel (qui re-utilise la meme valeur D0) produit ; la phase supplementaire donnee par (1), a laquelle s'ajoute maintenant ; une erreur egale a l'oppose du 2eme terme du membre de droite de (2). ; => les harmoniques sont maintenant affectes d'une phase supplementaire ; indesirable : ; phi_s = 2*pi/lambda * (D - D0).(uc - uc0) (3) ; qu'il faut corriger pour obtenir une image correcte (on remarque que phi_s ; s'annule pour uc = uc0). ; On remarque que la dependance temporelle (contenue dans uc) est la meme ; pour phi_e dans (1) et pour phi_s dans (3). ; ; Une correction a posteriori des observations corrigees du mouvement diurne ; et calibrees en utilisant D0 implique l'utilsation de (3). ; ; Si, toujours dans le cas ou le TR utilise la valeur approchee D0, la calibra- ; tion est faite en appliquant aux harmoniques de la source de calibration ; la correction donnee par (1), en donnant a uc la valeur uc0, on obtient les ; vraies phases instrumentales phi_i, celles qui dependent des longueurs de ; cable et des filtres. ; Pour obtenir une image correcte lors d'une observation ulterieure pour ; laquelle le TR utilise D0 et phi_i, il faut appliquer la corection (1). ; ; Rem : la correction (1) depend du temps par uc et ne s'annule que si les ; vecteurs (D - D0) et uc sont orthogonaux (par pur hasard). ; ; Ce sera le cas si, une fois que D est connu avec certitude, le programme ; Temps reel continue a utiliser D0 par simplicite, mais que, rappelons le, ; la calibration fasse appel a CORR_POS_ANT. Ainsi la correction de mouvement ; diurne serait imparfaite mais les phases instrumenetales seraient bien cor- ; rigees. ; ; Si le programme Temps Reel et le programme de calibration utilisent D tous ; les deux, il n'y a plus de correction a faire. De meme si on fait une re- ; calibration qui utilise aussi la valeur correcte de D. ; ; Determination de D ; Supposons qu'on ne connaisse pas encore D et qu'on cherche a le determiner ; par tatonnements (c'est ainsi qu'on raffine les valeurs de D tabulees plus ; bas). On appelle : ; . D0 la valeur vectorielle (inexacte) utilisee dans : ; - le programme Temps Reel pour observer la source de calibration, ; - dans la procedure de calibration (dans laquelle existe l'option de ; ne pas corriger la calibration des mauvaises valeurs de position ; utilisees par le temps reel), ; - dans le progamme Temps Reel pour la source de controle. ; . D1 ---------------------- (encore inexacte) utilisee pour "corriger", ; a leur relecture, les harmoniques de la source de controle. ; Il apparait alors une phase supplementaire de deux termes : ; . l'un est l'erreur sur la phase intrumentale deduit de (2): ; - 2*pi/lambda * (D - D0).uc0 ; . l'autre est ce qui reste de l'erreur (1) quand on y fait D = D1 . ; Au total la phase supplementaire est : ; phi_s' = 2*pi/lambda * ( (D - D1).uc - (D-D0).uc0 ) (4) ; La partie dependant du temps (par uc) de phi_s' est la meme que dans (3). ; On cherche a la faire disparaitre => D = D1. Il reste une phase constante ; non corrigee mais on s'en fout, le but ici etant de determiner D et non ; d'avoir une image parfaite. ; ; En outre l'initialisation du Temps Reel comporte une correction (fausse et ; datant de l'ere Delouisienne) de l'implantation des antennes, qui suppose ; qu'il y a des erreurs de position seulement dans la direction EW, avec des ; ecarts faux. ; Cette correction (qui n'etait pas reprise dans la calibration, ce qui faus- ; sait la coherence de toute la procedure) a ete supprimee le lundi 28 jul 03 ; en fin d'apres midi. Elle ne sera pas remplacee par une correction exacte ; tant que celle-ci ne sera pas au point. Il faut donc supprimer ici la ; "correction" Delouisienne jusqu'au 25 jul 03 inclus et pas plus tard. ; ; Ulterieurement (fin 2004 ?) la correction exacte sera incluse dans l'initia- ; lisation du Temps Reel (=> images correctes en monitoring) et supprimee ; ici.Il n'y aura plus de correction de position des antennes a faire en aval ; du Temps Reel, que ce soit pour faire des images ou une calibration. ; Informations reprises de POS_ANT_RH.PRO : ; Valeurs envoyees le 13 oct 2003 a Andree Coffre pour le Temps Reel : ; dew = 49.905 au lieu de 49.903 ; hew = 0.00248 ---------- 0.002 48 ; u = -0.00380 ---------- -0.003 80 ; dns = 54.274 ---------- 54.271 ; hns = 0.042190 ---------- 0.042 280 ; al = 0.826540 ---------- 0.826 420 ; Definition des diverses dates de modification des programmes date_ann_del = [28, 07, 2003] ; Ne plus retirer les "corrections" delouisiennes apres cette date. ; La correction a ete faite le 29 jul 03 a 07:02 TU. date_AA = [01, 11, 2003] ; Date a laquelle on a introduit des valeurs ameliorees des parametres ; moyens des reseaux dans le Temps Reel, a l'occasion de l'arret ; pour l'installation des antennes AA. Il, ne reste donc plus que ; des irregularites de positions aleatoires de moyenne nulle autour ; des reseaux moyens. Sert a determiner i_ecart_pos (1 ou 2). date_cor_cal = [12, 04, 2004] ; Date a laquelle on inclut la correction de position des antennes (1), ; supposee exacte, dans la calibration. Pour les observations utili- ; sant une telle calibration (ou recalibration) il faut ensuite faire ; une correction donnee par (1) et utilisant evidemment les memes ; positions d'antennes, avant de construire des images. ; C'est l'avant derniere date a definir avant la date d'introduction ; des corrections de position dans le Temps Reel. Il n'y aura alors ; plus rien a corriger en aval du Temps Reel (calibration ou images). ; Em resum'e : ; . avant cette date corriger les observations solaires avec (3) ; . apres -------------------------------------------------- (1) date_cor_TR = [01, 02, 2008] ; Mis a jour le 8 mars 2006, mais devra etre revu apres la periode de ; test du Temps Reel (date_cor_TR = [01, 02, 2006]). ; Date apres laquelle le programme TR inclut les bases D correctes ; (les memes qui sont utilisees depuis un certains temps deja, puis- ; qu'on les connait, dans la calibration et le calcul des images). ; A partir de cette date il n'y a plus rien a faire. ; La version meudonnaise reste avec une date du futur lointain jusqu'a ; ce que le TR a Nancay soit decrete au point. ; Bricolage sur la date d'observation (annees sur 2 chiffres) ijour = date_obs(0) & imois = date_obs(1) & ian = date_obs(2) if (ian gt 1980) then begin ; on ne fait rien, la date est complete. endif else begin ; la date est exprimee sur 2 chiffres if (ian lt 50) then ian = ian + 2000 if (ian gt 50) then ian = ian + 1900 ; ces rustines sont valables entre 1950 et 2050, date a laquelle on ; sera tous morts. endelse ; Calcul des dates juliennes et test. Decisions subsequentes day_ann_del = julday(date_ann_del(1), date_ann_del(0), date_ann_del(2)) day_AA = julday(date_AA (1), date_AA (0), date_AA (2)) day_cor_cal = julday(date_cor_cal(1), date_cor_cal(0), date_cor_cal(2)) day_cor_TR = julday(date_cor_TR (1), date_cor_TR (0), date_cor_TR (2)) day_obs = julday(imois, ijour, ian) if (day_obs gt day_cor_TR) then begin ; rien a faire. if (n_image eq 1) then begin print, 'Les corrections d''irregularite de reseau ont deja ete ' +$ 'faites dans le ' print, ' programme Temps Reel. Pas de corrections supplementaires' endif goto, a1 ; vers fin programme. endif if (n_image eq 1) then begin if (day_obs lt day_ann_del) then print, $ ' Annulation des corrections Delouis du Temps reel.' if (day_obs ge day_ann_del) then print, $ ' Il n''y a plus de corrections Delouis dans le Temps reel' endif if (day_obs lt day_cor_cal) then begin ; la calibration (ou la recalibration) n'est pas encore corrigee ; des irregularites d'implantation des antennes. On utilise la ; formule (3). Le cas est identifie par iflag=0. iflag = 0 if (n_image eq 1) then begin print, ' Correction irregularite des reseaux pour obser' + $ 'vations anterieures a la' print, ' correction des irregularites dans la calibration.' endif endif if (day_obs ge day_cor_cal) then begin ; la calibration est corrigee des irregularites d'implantation des ; antennes et ces irregularites sont connues avec certitude. ; On utilise la formule (1). Cas identifie par iflag=1 iflag = 1 if (n_image eq 1) then begin print, ' Correction irregularites des reseaux pour obser' + $ 'vations posterieures a la' print, ' correction des irregularites dans la calibration.' endif endif if (day_obs lt day_AA) then i_ecart_pos = 1 if (day_obs ge day_AA) then i_ecart_pos = 2 ; i_ecart_pos permet de choisir entre les correctifs de positions par ; rapport aux anciens parametres moyens des reseaux, ou par rapport ; aux nouveaux. ; Reconnaissance de l'utilisation des antennes anti-aliasing. nbre_harm = n_elements(harm_N) ; Definition de la position reelle des antennes en metres ; Pour chaque antenne on definit : ; A) dr_a = position reelle - position supposee avec un pas regulier ; Ainsi dr_a est l'oppose de l'erreur faite sur la position des antennes, ; en les supposant a des positions theoriques correspondant a des pas ; reguliers egaux aux pas moyens des reseaux EW et NS. ; Les dr_a sont donnees en millimetres, dans le repere equatorial de Nancay ; (qui n'est pas le systeme projete sur le soleil dans les calculs d'ima- ; ge) : ; . x dans le pan de l'equateur vers l'ouest de Nancay, ; . y ------------------------------ le sud ---------, ; . z parallele a l'axe des poles. ; et ont ete calculees par POS_ANT_RH (dans fichier POS_ANT_RH.PRO), ; dans les conditions suivantes : ; . la latitude est celle de l'antenne GPS de reception de l'heure ; . les mesures de position sur le terrain ont ete faites dans un ; repere tourne de -0.00070 radians par rapport aux axes EW et NS, ; mais avec une verticale locale correcte (voir commentaires dans ; le fichier POS_ANT_RH.TXT). Admettre cette erreur de -0.00070 ; radians lors des mesures sur le terrain permet en effet de faire ; coincider beaucoup mieux les parametres moyens deduits des mesu- ; res sur le terrain avec les series de mesures interferometriques ; faites vers 1986. Cette hypotheses est raisonnable puisqu'elle ; permet, en jouant sur un seul parametre, de reduire les ecarts ; sur plusieurs autres. ; . les parametres moyens des reseaux utilises sont strictement ceux du ; programme Temps Reel de facon a corriger exactement le calcul de ; poursuite des franges (remarque deja faite dans POS_ANT_RH.PRO) : ; a) pour les observations anterieures au 10 oct 03 (arret pour ; installer les antennes AA) : ; dew = 49.903 hew = 0.00230 u = -0.00400 ; dns = 54.271 hns = 0.042280 al = 0.826420 ; (on pris i_ancien = 2 dans POS_ANT_RH (fichier du meme nom) ; b) pour les observations posterieures a l'installation des anten- ; nes AA, les parametres moyens des reseaux sont ceux obtenus ; en tatonnant avec POS_ANT_RH (voir commentaires dans ce pro- ; gramme), legerement differnts des precedents : ; dew = 49.905 hew = 0.00248 u = -0.00380 ; dns = 54.274 hns = 0.042190 al = 0.826540 ; B) dr_d = position supposee par Delouis - pos supposee avec un pas regulier, ; calculees dans le triedre equatorial par POS_ANT_RH, utilisant : ; . les decalages (exclusivement dans la direction du reseau EW) ; . les parametres moyens du reseau EW utilises dans le temps reel. ; Voir archive des positions modifiees dans CORR_POS_ANT.TXT ; reglage 1 = avec le 26 aug 03 ; reglage 2 = ------- 31 ------ ; Definition des etapes d'approximation des positions d'antennes (commentaire): ; Etape 0 : positions donnees par les parametres moyens, ; Etape 1 : ajout des ecarts mesures sur le terrain (2 choix pour dr_a ; selon que la date d'observation est anterieure ou poste- ; rieure a nov 03 (i_ecart_pos = 1 ou 2). Cette etape 1 est ; faite de toutes facons. ; Etape 2 : ecrasement de certains des ecarts precedents par des ; valeurs qui donnent des resultats satisfaisant pour les ; series d'observations radio precisees ci-dessous. Cette ; etape 2 est fait de toutes facons (choix de i_regl_2). ; Etape 3 : modifications de l'etape 2, definies par la valeur de ; i_regl_sup : ; 0 : pas de modifications a l'etape 2. ; 3 a 15 : modifications plus ou moins importantes de ; l'etape 2. ; Etape 1 : ajout des ecarts mesures sur le terrain if (i_ecart_pos eq 1) then $ ; cas du Temps Reel d'avant les AA, avec ; les parametres moyens d'avant nov 03. dr_a = [ $ ; ecarts en mm dans le REPERE EQUATORIAL, ; calcules a partir des mesures sur le ; terrain et des parametres moyens utili- ; ses par le Temps Reel d'avant nov 03 ; (i_ancien = 2 dans POS_ANT_RH). [ -80, 127, 114], $ ; E2 [ -43, -9, -64], $ ; E1 [ -23, -44, -41], $ ; E0 [ -45, -42, -38], $ ; H1 [ -88, -31, -39], $ ; H2 [ -108, -49, -27], $ ; H3 [ -41, -50, -31], $ ; H4 [ -54, -74, -27], $ ; H5 [ -55, -90, -16], $ ; H6 [ -6, -101, -12], $ ; H7 [ 0, 0, 0], $ ; NS0_ew [ 7, -44, 8], $ ; H9 [ 17, -55, 1], $ ; H10 [ 49, -76, 16], $ ; H11 [ 15, -77, 12], $ ; H12 [ 25, -73, 31], $ ; H13 [ 41, -56, 51], $ ; H14 [ 44, -42, 20], $ ; H15 [ -123, -35, 51], $ ; H16 [ 0, 0, 0], $ ; NS0_ns [ -4, 4, 1], $ ; NS1 [ -7, 9, 1], $ ; NS2 [ -10, 21, 9], $ ; NS3 [ -14, 25, 10], $ ; NS4 [ -17, 30, 10], $ ; NS5 [ -21, 34, 11], $ ; NS6 [ -24, 39, 11], $ ; NS7 [ -27, 50, 19], $ ; NS8 [ -30, 55, 20], $ ; NS9 [ -34, 52, 13], $ ; NS10 [ -37, 57, 14], $ ; NS11 [ -41, 61, 14], $ ; NS12 [ -44, 73, 22], $ ; NS13 [ -47, 77, 23], $ ; NS14 [ -50, 89, 31], $ ; NS15 [ -54, 100, 39], $ ; NS16 [ -57, 105, 39], $ ; NS17 [ -61, 116, 47], $ ; NS18 [ -64, 118, 50], $ ; NS19 [ -67, 132, 56], $ ; NS20 [ -70, 139, 54], $ ; NS21 [ -73, 145, 67], $ ; NS22 [ -78, 152, 65], $ ; NS23 [ -150, 332, 154], $ ; NS45 [ -24, 49, 15], $ ; AA1 (complet'e le 9 oct 03). [ -19, 48, 7], $ ; AA2 --------------------- [ -14, 47, -1], $ ; AA3 --------------------- [ -9, 46, -9]] ; AA4 --------------------- if (i_ecart_pos eq 2) then $ ; cas du Temps Reel avec les AA, ou on a ; introduit des parametres moyens ame- ; liores. dr_a = [ $ ; ecarts en mm dans le repere equatorial, ; calcules a partir des mesures sur le ; terrain et des parametres moyens utili- ; ses par le Temps Reel d'apres nov 03. ; (i_ancien = 0 dans POS_ANT_RH). [ 16, 126, 113], $ ; E2 [ -11, -10, -64], $ ; E1 [ 7, -45, -41], $ ; E0 [ -17, -43, -38], $ ; H1 [ -64, -31, -39], $ ; H2 [ -88, -50, -27], $ ; H3 [ -25, -50, -31], $ ; H4 [ -42, -74, -27], $ ; H5 [ -47, -90, -16], $ ; H6 [ -2, -101, -12], $ ; H7 [ 0, 0, 0], $ ; NS0_ew [ 3, -44, 8], $ ; H9 [ 9, -55, 1], $ ; H10 [ 37, -76, 16], $ ; H11 [ -1, -77, 12], $ ; H12 [ 5, -73, 31], $ ; H13 [ 17, -56, 51], $ ; H14 [ 16, -42, 21], $ ; H15 [ -155, -35, 51], $ ; H16 [ 0, 0, 0], $ ; NS0_ns [ -1, -3, -2], $ ; NS1 [ -1, -4, -4], $ ; NS2 [ -1, 0, 1], $ ; NS3 [ 0, -2, -1], $ ; NS4 [ 0, -4, -4], $ ; NS5 [ -1, -7, -6], $ ; NS6 [ -1, -8, -8], $ ; NS7 [ -1, -4, -3], $ ; NS8 [ -1, -6, -5], $ ; NS9 [ 0, -15, -14], $ ; NS10 [ 0, -17, -17], $ ; NS11 [ -1, -20, -19], $ ; NS12 [ -1, -15, -14], $ ; NS13 [ -1, -18, -16], $ ; NS14 [ -1, -13, -11], $ ; NS15 [ -1, -8, -5], $ ; NS16 [ 0, -10, -8], $ ; NS17 [ -1, -6, -2], $ ; NS18 [ -1, -11, -2], $ ; NS19 [ -1, -4, 1], $ ; NS20 [ -1, -3, -4], $ ; NS21 [ -1, -3, 6], $ ; NS22 [ -1, -3, 1], $ ; NS23 [ -1, 28, 30], $ ; NS45 [ 5, -5, -7], $ ; AA1 (complet'e le 9 oct 03). [ 14, -6, -15], $ ; AA2 ----------------------- [ 23, -7, -23], $ ; AA3 ----------------------- [ 32, -8, -31]] ; AA4 ----------------------- dr_a_terrain = dr_a ; sauvegarde ; Etape 2 : Modification de certaines mesures sur le terrain ; On satisfait mieux aux observations, avec semble t-il une assez bonne ; generalite (raffinnements obtenu par tatonnements en faisant que le ; ; phasage, bon a 17:00, le reste jusqu'a 23:30) ; Les valeurs ci dessous ecrasent les valeurs mesurees sur le terrain. ; POUR "SURVOLER" LES ETAPES 2 ET 3 RECHERCHER LA SEQUENCE : ; "Fin de raffinement des reglages de position d'antennes" i_regl_2 = 2 ; usuel 2 ; Definit l'etape 2 du reglage ( i_regl_2 = 1 ou 2). Usuel i_regl_2 = 2 ; et pas de modifications ulterieures (i_reglage = 0 plus bas). ; Valeurs de i_regl_2 : ; 0 pour conserver les mesures sur le terrain. ; 1 pour que le reglage 2 (Cygne 26 aug 03, tout pointe, NS0 non tour- ; nee, recalib. 17:10) ecrase les mesures terrain. ; 2 pour inclure le correctif ci dessous, qui corrige aussi a peu pres ; les observations des 26 aug, 25 avr 03, 2 jun 03, 10 sep 03. ; Le correctif a ajouter par rapport a i_regl_2 = 1 pour satisfaire ; a peu pres les observations des 26 aug 03, 25 avr 03, 2 jun03, ; 10 sep 03 est : ; [ 0, 9, 0] pour E1 ; [ 0, 10, 0] pour E0 ; [ 15, 0, 0] pour NS0_ew ; [ 15, 0, 0] pour NS0_ns ; [ 27, -23, 0] pour NS16 ; [ -5, 5, 0] pour NS45 ; METTRE ALORS I_REGL_SUP A ZERO USUELLEMENT. if (i_regl_2 eq 1) then begin ; d'apres le Cygne du 26 aug 03 seul. dr_a(0, 0) = [-120, 000, 114] ; E2 dr_a(0, 1) = [ -65, -9, -64] ; E1 dr_a(0, 2) = [ -70, -44, -41] ; E0 dr_a(0, 10) = [ -50, 0, 0] ; NS0_ew dr_a(0, 18) = [ 60, -35, 51] ; H16 dr_a(0, 19) = [ -50, 0, 0] ; NS0_ns dr_a(0, 26) = [ -40, 39, 11] ; NS7 dr_a(0, 30) = [ -80, 57, 14] ; NS11 dr_a(0, 35) = [-140, 200, 39] ; NS16 dr_a(0, 39) = [ -37, 70, 56] ; NS20 dr_a(0, 43) = [ -20, 300, 130] ; NS45 endif if (i_regl_2 eq 2) then begin ; etape 1 retouchee par moyenne. dr_a(0, 0) = [-120, 000, 114] ; E2 dr_a(0, 1) = [ -65, -9, -64] + [ 0, 9, 0] ; E1 dr_a(0, 2) = [ -70, -44, -41] + [ 0, 10, 0] ; E0 dr_a(0, 10) = [ -50, 0, 0] + [15, 0, 0] ; NS0_ew dr_a(0, 18) = [ 60, -35, 51] ; H16 dr_a(0, 19) = [ -50, 0, 0] + [15, 0, 0] ; NS0_ns dr_a(0, 26) = [ -40, 39, 11] ; NS7 dr_a(0, 30) = [ -80, 57, 14] ; NS11 dr_a(0, 35) = [-140, 200, 39] + [27, -23, 0] ; NS16 dr_a(0, 39) = [ -37, 70, 56] ; NS20 dr_a(0, 43) = [ -20, 300, 130] + [-5, 5, 0] ; NS45 endif ; Etape 3 : modifications eventuelles de l'etape 2 ; Definies comme des modifications et non des ecrasements. ; Definies par i_regl_sup (a partir de 3 pour eviter les confusions ; avec les etapes 1 et 2 ) : ; 0 : aucune modification. ; 3 et au dela : modifications ci_dessous. ; ; Rappel : l'etape 2 donne de bons resultats sur : ; 26 aug 03, 10 sept 03 (un peu mieux avec reglage 8) ; 9 avr 03 (reglage 12 un peu mieux, E2 seule modifiee de 50 mm) ; 02 jun 03 (327 seul) 28 mai 03 (327 seul) ; 13 mai 03 (sauf au tout debut, 1h avant recalib) ; 25 avr 03 (reglage 6 est a peine different) ; 9 jul 03 (reglage 10 est a peine different) ; 14 sep 03 (reglage 12 un peu meilleur avec E1) ; 22 ------ (------- 14 --------------- avec E1 et NS45 legers) ; 24 ------ 16 un peu meilleur ; Modifications suppementaires (valeurs de i_regl_sup) : ; 3 : 31 aug 03, recalib 17:50. Nettement different. E0 depointee. ; 24 sep 03 ; 5 : 21 jun 03 (indispensable pour E2). ; 9 : 6 mai 03 (E2, E1, E0, NS45, indispensables) ; 10 : 9 jul 03 (E2, E1, NS45 nettement indispensables). ; 12 : 14 sep 03 (E1 et E2 assez sensibles, E0 inconnaissable) ; 13 : 9 avr 03 (E2 seule modifiee de 50 mm) ; 14 : 22 sep 03 (E1 de 10 mm et NS45 de 20 mm)) ; 15 : 20 mai 03 (E2 de 30 mm, e1 de 25 mm E0 de 15 mm) ; 16 : 24 sep 03 (E2 de 10 mm E1 de 10 mm, E2 de 20 mm) ; 17 : ajustements faits le 16 sept 04 i_regl_sup = 17 ; 0 : pas de modification de l'etape 2 (usuel), ; 3 a 16 : voir ci-dessus ; ERREUR TROUVEE LE 27 MAI 03 : on avait i_regl_sup = 3 ; ce qui explique peut-etre les dephasages persis- ; tants trouves jusque la pour E0 E1 E2 et NS45. if (i_regl_sup eq 17) then begin ; oeuvre du 16 sept 04. ; Cygne du 31 aug 04 recalibre a 19:45. ; Ajustement du 16 sep 04 : on fait en sorte que les phases des ; harmoniques a 236 MHz (frequence moyenne) restent constantes ; au cours du temps, meme si ce sont des constantes assez dif- ; ferentes de zero. ; On ajuste le correctif sur x en annulant la partie impaire, en ; faisant que les phases soient egales a 17h et 23h ; On ajuste ensuite le correctif sur y en annulant la partie paire, ; en faisant que les phases soient egales a 17h et 20h. ; Le correctif en z, qui donne une phase costante, indiscernable ; d'une phase instrumentale a declinaison constante, requiert ; une autre source que le Cygne. dr_a(0, 0) = dr_a(0:2, 0) + [ 150, 100, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 70, -15, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 100, 30, 0] ; E0 dr_a(0, 43) = dr_a(0:2, 43) + [ 100, -250, 0] ; NS45 endif ; Voir plus bas impression des ecarts adoptes par rapport aux positions ; mesurees sur le terrain (chercher la chaine "icon_dr_a"). if (i_regl_sup eq 16) then begin ; Cygne 24 sep 03, pointe, H2 H4 Ns0 tournees, 25 sep 03, dep 90 W. dr_a(0, 0) = dr_a(0:2, 0) + [ 10, 00, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 10, 00, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 20, 00, 0] ; E0 endif if (i_regl_sup eq 15) then begin ; Cygne 20 mai 03, point'e, H2, H4, NS0 tournees. dr_a(0, 0) = dr_a(0:2, 0) + [ -30, 00, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ -25, 00, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ -15, 00, 0] ; E0 endif if (i_regl_sup eq 14) then begin ; Cygne 22 sep 03, point'e, H2, H4, NS0 tournees. dr_a(0, 1) = dr_a(0:2, 1) + [ -10, 00, 0] ; E1 dr_a(0, 43) = dr_a(0:2, 43) + [ -20, 00, 0] ; NS45 endif if (i_regl_sup eq 12) then begin ; Difficile car E0 depointee. ; Cygne 14 sep 03, point'e, H2, H4, NS0 tournees. dr_a(0, 0) = dr_a(0:2, 0) + [ 30, 00, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 30, 00, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 00, 00, 0] ; E0 dr_a(0, 35) = dr_a(0:2, 35) + [ -30, -100, 0] ; NS16 dr_a(0, 43) = dr_a(0:2, 43) + [ -20, 00, 0] ; NS45 endif if (i_regl_sup eq 10) then begin ; Difficile car E0 depointee. ; Cygne 9 jul 03, point'e, H2, H4, NS0 tournees. dr_a(0, 0) = dr_a(0:2, 0) + [ 105, 00, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 35, 00, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 00, 00, 0] ; E0 ; dr_a(0, 10) = dr_a(0:2, 10) + [ 30, 0, 0] ; NS0_ew ; dr_a(0, 19) = dr_a(0:2, 19) + [ 30, 0, 0] ; NS0_ns dr_a(0, 43) = dr_a(0:2, 43) + [ -70, 00, 0] ; NS45 endif if (i_regl_sup eq 9) then begin ; Cygne 6 mai 03, point'e, NS0 tournee. dr_a(0, 0) = dr_a(0:2, 0) + [ 50, 00, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 50, 00, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 50, 00, 0] ; E0 dr_a(0, 35) = dr_a(0:2, 35) + [ 30, 10, 0] ; NS16 dr_a(0, 43) = dr_a(0:2, 43) + [-100, -200, 0] ; NS45 endif if (i_regl_sup eq 8) then begin ; Cygne 10 sep 03, point'e NS0 non tournee. ; un peu mieux qu'avec le reglage 2 dr_a(0, 0) = dr_a(0:2, 0) + [ -00, 00, 0] ; E2 dr_a(0, 10) = dr_a(0:2, 10) + [ 30, 0, 0] ; NS0_ew dr_a(0, 19) = dr_a(0:2, 19) + [ 30, 0, 0] ; NS0_ns dr_a(0, 35) = dr_a(0:2, 35) + [ 50, 10, 0] ; NS16 dr_a(0, 43) = dr_a(0:2, 43) + [ -20, 20, 0] ; NS45 endif if (i_regl_sup eq 7) then begin ; Cygne 28 mai 03, NS0 tournee, 327 MHz seul. Difficile, A REVOIR dr_a(0, 0) = dr_a(0:2, 0) + [ 20, 100, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ -10, 20, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ -10, 20, 0] ; E0 dr_a(0, 10) = dr_a(0:2, 10) + [ 25, 0, 0] ; NS0_ew dr_a(0, 17) = dr_a(0:2, 17) + [ 00, 0, 0] ; H15 dr_a(0, 18) = dr_a(0:2, 18) + [ -00, -00, 0] ; H16 dr_a(0, 19) = dr_a(0:2, 19) + [ 25, 0, 0] ; NS0_ns dr_a(0, 35) = dr_a(0:2, 35) + [ 40, 10, 0] ; NS16 dr_a(0, 43) = dr_a(0:2, 43) + [ -40, 00, 0] ; NS45 dr_a(0, 39) = dr_a(0:2, 39) + [ -20, 0, 0] ; NS20 dr_a(0, 43) = dr_a(0:2, 43) + [ 0, 220, 0] ; NS45 endif if (i_regl_sup eq 6) then begin ; Cygne 25 avr 03, pointe, NS0 tournee, recalib 16:45. dr_a(0, 1) = dr_a(0:2, 1) + [ 0, 19, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 0, 20, 0] ; E0 dr_a(0, 35) = dr_a(0:2, 35) + [ 60, -100, 0] ; NS16 endif if (i_regl_sup eq 5) then begin ; Cygne 21 jun 03, pointe, NS0 tournee, recalib 17:00 dr_a(0, 0) = dr_a(0:2, 0) + [ 80, 0, 0] ; E2 verifi'e ; le 10sep03 dr_a(0, 1) = dr_a(0:2, 1) + [ 10, 0, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 10, 0, 0] ; E0 dr_a(0, 6) = dr_a(0:2, 6) + [ -24, 0, 0] ; H4 dr_a(0, 35) = dr_a(0:2, 35) + [ 60, -100, 0] ; NS16 dr_a(0, 43) = dr_a(0:2, 43) + [ 0, -200, 0] ; NS45 endif if (i_regl_sup eq 3) then begin ; Cygne 31 aug 03, recalib 17:50. Difficile car E0 depointee. dr_a(0, 0) = dr_a(0:2, 0) + [ 100, 0, 0] ; E2 dr_a(0, 1) = dr_a(0:2, 1) + [ 20, 0, 0] ; E1 dr_a(0, 2) = dr_a(0:2, 2) + [ 60, 0, 0] ; E0 dr_a(0, 10) = dr_a(0:2, 10) + [ 20, 0, 0] ; NS0_ew dr_a(0, 19) = dr_a(0:2, 19) + [ 20, 0, 0] ; NS0_ns dr_a(0, 35) = dr_a(0:2, 35) + [ 30, -00, 0] ; NS16 ; dr_a(0, 43) = dr_a(0:2, 43) + [ 80, -00, 0] ; NS45 dr_a(0, 43) = dr_a(0:2, 43) + [ 40, -50, 0] ; NS45 endif ; Cadavres laisse tels quels et re-ecrits plus haut en ajoutant des correctifs ; au lieu d'ecraser. ; if (i_regl_sup eq 3) then begin ; Cygne 31 aug 03, recalib 17:50. Complique. On laisse tel quel. ; dr_a(0, 0) = [ -20, 127, 114] ; E2 ; dr_a(0, 1) = [ -25, -9, -64] ; E1 ; dr_a(0, 2) = [ -25, -44, -41] ; E0 ; dr_a(0, 10) = [ 10, 00, 0] ; NS0_ew ; dr_a(0, 12) = [ 47, -55, 1] ; H10 ; dr_a(0, 13) = [ 40, -76, 16] ; H11 ; dr_a(0, 16) = [ 45, -73, 31] ; H13 ; dr_a(0, 18) = [ 80, -35, 51] ; H16 ; ; dr_a(0, 19) = [ 10, 0, 0] ; NS0_ns ; dr_a(0, 20) = [ -4, 4, 1] ; NS1 ; dr_a(0, 21) = [ -7, 9, 1] ; NS2 ; dr_a(0, 22) = [ 10, 21, 9] ; NS3 ; dr_a(0, 23) = [ -14, 25, 10] ; NS4 ; dr_a(0, 24) = [ -00, 30, 10] ; NS5 ; dr_a(0, 25) = [ -21, 34, 11] ; NS6 ; dr_a(0, 27) = [ -70, 50, 19] ; NS8 ; dr_a(0, 28) = [ -50, 55, 20] ; NS9 ; ; dr_a(0, 30) = [ -80, 57, 14] ; NS11 ; dr_a(0, 35) = [ -80, 200, 39] ; NS16 ; dr_a(0, 37) = [ -70, 116, 47] ; NS18 ; dr_a(0, 39) = [ -57, 70, 56] ; NS20 ; dr_a(0, 42) = [ -100, 152, 65] ; NS23 ; ; dr_a(0, 43) = [ -120, 300, 130] ; NS45 ; endif ; if (i_regl_sup eq 4) then begin ; ; Cygne 31 aug 03 recalib 17:10 (depointage non stabilis'e) ; ; On laisse tel quel. ; dr_a(0, 0) = [ -120, 000, 114] ; E2 ; dr_a(0, 1) = [ -20, -9, -64] ; E1 ; dr_a(0, 2) = [ -20, -44, -41] ; E0 ; dr_a(0, 10) = [ -00, 0, 0] ; NS0_ew ; dr_a(0, 18) = [ 60, -35, 51] ; H16 ; dr_a(0, 19) = [ -00, 0, 0] ; NS0_ns ; dr_a(0, 26) = [ -40, 39, 11] ; NS7 ; dr_a(0, 30) = [ -80, 57, 14] ; NS11 ; dr_a(0, 35) = [ -140, 200, 39] ; NS16 ; dr_a(0, 39) = [ -57, 70, 56] ; NS20 ; dr_a(0, 43) = [ -80, 300, 130] ; NS45 ; endif ; Fin de raffinement des reglages de position d'antennes ; Annulation de la "correction Delouis" (en fonction avant le 28 jul 2003) dx_d = $ ; _d comme Delouis. en mm. [-380, -80, -37, $ ; E2 E1 E0 -88, -96, -95, -42, -29, -28, -17, $ ; H1 H2 H3 H4 H5 H6 H7 23, $ ; NS0_ew 37, 56, 107, 71, 86, 98, 93, 67, $ ; H9 H10 H11 H12 H13 H14 H15 H16 -10, $ ; NS0_ns 25, 10, 20, -10, 30, 20, -10, 0, 25, 20, $ ; NS1 NS2 NS3 NS4 NS5 NS6 NS7 NS8 NS9 NS10 -20, 10, 15, 45, 30, -10, 45, 30, 40, 40, $ ; NS11 NS12 NS13 NS14 NS15 NS16 NS17 NS18 NS19 NS20 30, 10, 10, 0, 0, 0, 0, 0] ; NS21 NS22 NS23 NS45 AA1 AA2 AA3 AA4 ; Mise a zero des correction de positions (essais seulement) ; dr_a = 0 * dr_a ; en commentaire sauf pour essai. ; dx_d = 0 * dx_d ; en commentaire sauf pour essai. ; Compensation eventuelle de l'ancienne "correction" Delouis dans le TR pour ; les observations d'avant "date_ann_del" if (day_obs lt day_ann_del) then begin ; Il faut retirer les corrections Delouis faites a l'initialisa- ; tion du programme Temps Reel. dr_a(0, *) = dr_a(0, *) - dx_d ; en principe dr_a(0, *) -dx_d endif ; Impression des ecarts adoptes par rapport aux mesures sur le terrain. icon_dr_a = 0 if (icon_dr_a eq 1) then begin d_dr_a = dr_a - dr_a_terrain print, ' ' print, ' Ecarts adoptes par rapport aux mesures sur le ' + $ 'terrain (mm) :' print, format="(8x, 'E2 :', 3i6)", d_dr_a(0:2, 0) print, format="(8x, 'E1 :', 3i6)", d_dr_a(0:2, 1) print, format="(8x, 'E0 :', 3i6)", d_dr_a(0:2, 2) print, format="(8x, 'NS0_ew :', 3i6)", d_dr_a(0:2, 10) print, format="(8x, 'H16 :', 3i6)", d_dr_a(0:2, 18) print, format="(8x, 'NS0_ns :', 3i6)", d_dr_a(0:2, 19) print, format="(8x, 'NS7 :', 3i6)", d_dr_a(0:2, 26) print, format="(8x, 'NS11 :', 3i6)", d_dr_a(0:2, 30) print, format="(8x, 'NS16 :', 3i6)", d_dr_a(0:2, 35) print, format="(8x, 'NS20 :', 3i6)", d_dr_a(0:2, 39) print, format="(8x, 'NS45 :', 3i6)", d_dr_a(0:2, 43) print, ' ' ; stop endif ; Conversion des corectifs de position en metres en metres dr_a = 0.001 * dr_a ; Choix des coordonnees de la source de calibration ; (ou de recalibration si i_recalib = 1) if (i_source_cal eq 0) then begin ; autocalibration sur le soleil ; L'auto-calibration sur le soleil est usuellement appliquee au ; soleil lui meme, le meme jour, ou un jour tres voisin. Il suf- ; firait donc dans ce cas d'identifier dec_cal et hmer_cal a ; dec_obj et hmer_obj. ; Toutefois, pour preserver la possibilite, a des fins de controle, ; de recalibrer un Cygne a partir d'une recalibration "auto" ; faite sur le soleil, on determine ici la position du soleil de ; facon independante, supposant simplement que la date de reca- ; libration sur le soleil est tres voisine de la date de l'obser- ; vation a recalibrer. Les lignes suivantes sont repoduites de ; INIT_MALAX_2D. ; Calcul du numero du jour dans l'annee m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] n = 0 if (imois eq 1) then goto, a3 im1 = imois - 1 for k = 0, im1-1 do n = n + m(k) a3: n = n + ijour ; n est le numero du jour dans l'annee. ; Calcul heure meridien et declinaison du soleil a = 2 * !pi / 365.25 delta = !pi / 180. * 23.43 * sin(a * (n - 80)) if (delta ge 0) then begin ddeg = fix(delta) dmin = fix(60 * (delta - ddeg)) dsec = fix(3600 * (delta - ddeg - float(dmin)/60)) dec_cal = [ddeg, dmin, dsec] endif if (delta lt 0) then begin delta = - delta ddeg = fix(delta) dmin = fix(60 * (delta - ddeg)) dsec = fix(3600 * (delta - ddeg - float(dmin)/60)) dec_cal = - [ddeg, dmin, dsec] endif ahmer = 11.854 + 0.125 * sin(a * n) + 0.1617 * sin(2 * a * (n+9)) ahheu = fix(ahmer) ahmin = fix(60 * (ahmer - ahheu)) ahsec = fix(3600 * (ahmer - ahheu - float(ahmin)/60)) hmer_cal = [ahheu, ahmin, ahsec] endif ; fin de calcul pour le soleil (approximatif s'il n'est pas la ; source observee, recalibree et corrigee des positions ; d'antennes). if (i_source_cal eq 1 ) then begin ; Cygne dec_cal = [40, 44, 46] ; precision non necessaire. hmer_cal = [19, 59, 36] ; ------------------------ endif if (i_source_cal eq 2) then begin ; Vierge dec_cal = [12, 22, 26] ; precision non necessaire. hmer_cal = [12, 30, 58] ; ------------------------ endif if (i_source_cal eq 3) then begin ; Hydre dec_cal = [-12, -6, -17] ; precision non necessaire. hmer_cal = [09, 18, 15] ; ------------------------ endif ; Parametres de position de la source de calibration (le suffixe 0 caracterise ; la source de calibration) dec0 = !pi/180 * $ ( dec_cal(0) + float( dec_cal(1)) / 60 + float( dec_cal(2)) / 3600) hmer0 = hmer_cal(0) + float(hmer_cal(1)) / 60 + float(hmer_cal(2)) / 3600 ah_cal = h_cal(0) + float(h_cal(1)) / 60 ah0 = !pi/12 * (ah_cal - hmer0) ; angle horaire de calibration (rad). sind0 = sin(dec0) & cosd0 = cos(dec0) sinh0 = sin(ah0 ) & cosh0 = cos(ah0 ) ; Parametres de position de la source observee (soleil ou source de controle) dec = !pi/180 * $ (dec_obj(0) + float( dec_obj(1)) / 60 + float( dec_obj(2)) /3600) ahmer_obj = $ hmer_obj(0) + float(hmer_obj(1)) / 60 + float(hmer_obj(2)) /3600 ah = !pi/12 * (ihm(0) + float(ihm(1)) / 60 - ahmer_obj) ; angle horaire sind = sin(dec) & cosd = cos(dec) sinh = sin(ah) & cosh = cos(ah) ; Calcul des vecteurs unitaires de visee uu = [sinh * cosd , cosh * cosd , sind] uu0 = [sinh0 * cosd0, cosh0 * cosd0, sind0] icon = 0 if (icon eq 1) then begin print, 'Composantes des vecteurs de visee :' print, ' vers objet : ', uu print, ' vers source calibration : ', uu0 stop endif isaut = 1 ; saut de la boucle avec formulation indicee. if (isaut eq 1) then goto, a2 ; Boucle sur les nbre_harm (576, 648 ou 720) harmoniques de harm_N ; Tableaux de verification t_D_D0 = [0, 0, 0] t_cor = [0] n_cor = 0 t_phi = [0] ; Boucle sur les harmoniques (ancienne formulation avec des indices) for i = 0, nbre_harm - 1 do begin n_cor = n_cor + 1 ; nbre d'harm corriges. ; Calcul de (base vraie - base supposee) D_D0 = dr_a(*, correl(1, i)) - dr_a(*, correl(0, i)) t_D_D0 = [[t_D_D0], [D_D0]] ; remplissage du tableau de (D-D0) pour ; tous les harmoniques. icon = 0 if (icon eq 1) then begin print, 'D_D0 :', D_D0 stop endif ; Calcul du dephasage supplementaire ac = 3e8 ; vitesse de la lumiere, m/sec. al = ac / freq / 1e6 ; longueur d'onde, en metres. if (iflag eq 0) then phi_e = 2*!pi / al * total(D_D0 * (uu - uu0)) if (iflag eq 1) then phi_e = 2*!pi / al * total(D_D0 * uu) t_cor = [t_cor, i] t_phi = [t_phi, nint(180/!pi*phi_e)] ; construit le tableau des pha- ; ses des nbre_harm harmoiques ; en degres. i_c = complex(0, 1) coeff_corr = exp(- i_c * phi_e) ; signe - car coeff de correction. ; Correction de l'harmonique harm_N(i) = coeff_corr * harm_N(i) endfor ; t_cor, n_cor inutilises dans la suite ; Fin de l'ancienne boucle a2: J_M = 0 ; fin du saut de la boucle avec formulation indicee. ; Boucle avec indices implicites (modif du 1er oct 04) t_D_D0 = dr_a(*, correl(1, *)) - dr_a(*, correl(0, *)) ; t_D_D0 = base vraie - base supposee. C'est un fltarr(3, nbre_harm). ; le nbre d'harmoniques est donc gere automatiquement. ; Calcul du dephasage supplementaire i_c = complex(0, 1) ac = 3e8 ; vitesse de la lumiere, m/sec. al = ac / freq / 1e6 ; longueur d'onde, en metres. if (iflag eq 0) then t_phi_e = 2*!pi / al * transpose(uu-uu0) # t_D_D0 if (iflag eq 1) then t_phi_e = 2*!pi / al * transpose(uu ) # t_D_D0 ; uu-uu0 est un vecteur ligne (3) et t_D_D0 est une matrice (3 colonnes ; et 648 lignes). Le produit # ci-dessus somme donc sur l'indice des ; 3 dimensions spatiales, et on obtient un tableau avec un seul ; indice, de 0 a 647. t_coeff_corr = exp(- i_c * t_phi_e) ; signe - car coeff de correction. ; Correction de l'harmonique harm_N = t_coeff_corr * harm_N ; a ce stade harm_N = complexarr(1,648) harm_N = reform(harm_N) t_phi = nint(180/!pi * t_phi_e) ; en degres. ; Fin pratique de CORR_POS_ANT (controles seuls apres).. icon = 0 if (icon eq 1) then begin a_t_D_D0 = reform(sqrt(t_D_D0(0, *)^2 + t_D_D0(1, *)^2 + $ t_D_D0(2, *)^2)) print, ' ' print, 'CORR_POS_ANT :' print, ' freq =', freq, ' lambda =', al print, ' decl objet :', nint(dec_obj) print, ' decl calib :', dec_cal print, ' ' db_max = max(a_t_D_D0, ip) ; print, ' ' ; print, ' t_phi :' ; print, t_phi print, 'Corrections de phases :' ; print, ' E1 H1 ', t_phi(506) print, ' E1 H15 ', t_phi(520) print, ' E1 H16 ', t_phi(521) print, ' ' print, ' E2 E1 ', t_phi(487) print, ' E2 H1 ', t_phi(488) print, ' E2 H2 ', t_phi(489) print, ' E2 H15 ', t_phi(502) print, ' E2 H16 ', t_phi(503) print, ' ' print, ' NS0 NS1 ', t_phi(27) print, ' NS0 NS23', t_phi(571) print, ' NS0 NS45', t_phi(572) print, ' ' print, ' NS45 NS23', t_phi(481) print, ' ---- NS22', t_phi(480) print, ' ---- NS21', t_phi(479) ; Trace des corrections de longueur de base ch_freq = string(nint(freq)) + 'MHz : ' ; NS0 a NS23 avec les EW window, 0 plot, a_t_D_D0(0:431), xstyle=1, ystyle=1 xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $ 'abs(corrections de base) pour les NS0 a 23 avec les EW' ; NS45 avec les NS, E210 avec les EW, NS8 et NS0 avec le NS window, 1 amax = max(a_t_D_D0(450 : 575), min = amin) & da = amax - amin y1 = 0 & y2 = amax + 0.05 * da absc = indgen(575-450+1) + 450 plot, absc, a_t_D_D0(450 : 575), xstyle=1, yrange=[y1, y2], ystyle=1 xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $ 'idem pour les ant. de ref NS45, E2, E1, E0, NS8, NS0' x_E2 = [486, 486] & ch_E2 = 'E2' & xE2 = 486 x_E1 = [504, 504] & ch_E1 = 'E1' & xE1 = 504 x_E0 = [522, 522] & ch_E0 = 'E0' & xE0 = 522 x_NS8 = [540, 540] & ch_NS8 = 'NS8' & xNS8 = 540 x_NS0 = [558, 558] & ch_NS0 = 'NS0' & xNS0 = 558 y_ant = [0.1 * da, amax - 0.2 * da] ylab = amax - 0.1 * da oplot, x_E2 , y_ant & xyouts,xE2 ,ylab,/data,alignment=0.5, ch_E2 oplot, x_E1 , y_ant & xyouts,xE1 ,ylab,/data,alignment=0.5, ch_E1 oplot, x_E0 , y_ant & xyouts,xE0 ,ylab,/data,alignment=0.5, ch_E0 oplot, x_NS8, y_ant & xyouts,xNS8,ylab,/data,alignment=0.5, ch_NS8 oplot, x_NS0, y_ant & xyouts,xNS0,ylab,/data,alignment=0.5, ch_NS0 ; les AA (a faire) ; Trace des corrections de phase ; NS0 a NS23 avec les EW window, 2 plot, t_phi(0:431), xstyle=1, ystyle=1 xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $ 'Corrections de phase) pour les NS0 a 23 avec les EW' oplot, [0, 575], [0, 0] ; NS45 avec les NS, E210 avec les EW, NS8 et NS0 avec le NS window, 3 amax = max(t_phi(450 : 575), min = amin) & da = amax - amin y1 = amin - 0.05 * da & y2 = amax + 0.05 * da absc = indgen(575-450+1) + 450 plot, absc, t_phi(450 : 575), xstyle=1, yrange=[y1, y2], ystyle=1 xyouts, 0.5, 0.97, /normal, alignment=0.5, ch_freq + $ 'idem pour les ant. de ref NS45, E2, E1, E0, NS8, NS0' x_E2 = [486, 486] & ch_E2 = 'E2' & xE2 = 486 x_E1 = [504, 504] & ch_E1 = 'E1' & xE1 = 504 x_E0 = [522, 522] & ch_E0 = 'E0' & xE0 = 522 x_NS8 = [540, 540] & ch_NS8 = 'NS8' & xNS8 = 540 x_NS0 = [558, 558] & ch_NS0 = 'NS0' & xNS0 = 558 y_ant = [amin + 0.1 * da, amax - 0.2 * da] ylab = amax - 0.1 * da oplot, x_E2 , y_ant & xyouts,xE2 ,ylab,/data,alignment=0.5, ch_E2 oplot, x_E1 , y_ant & xyouts,xE1 ,ylab,/data,alignment=0.5, ch_E1 oplot, x_E0 , y_ant & xyouts,xE0 ,ylab,/data,alignment=0.5, ch_E0 oplot, x_NS8, y_ant & xyouts,xNS8,ylab,/data,alignment=0.5, ch_NS8 oplot, x_NS0, y_ant & xyouts,xNS0,ylab,/data,alignment=0.5, ch_NS0 oplot, [0, 575], [0, 0] ; les AA (a faire) stop endif a1: J_M = 0 ; fin de saut du programme quand il n'y a rien a faire (les ; corrections d'irregularites de reseau sont dans le Temps ; Reel). end ; fin de CORR_POS_ANT. ; DEBUT ESPACE COMMENTAIRES ET ARCHIVES ; Rangement des harmoniques dans harm_N ; NS0 avec E2, E1, H1 a H16 0 a 17 ; NS1 ---- ------------------------------ 18 a 35 ; NS8 ---- ------------------------------ 144 a 161 ; NS23 ---- ------------------------------ 414 a 431 ; NS45 ---- ------------------------------ 432 a 449 ; jusqu'au 7 oct 98 inclus: ; E0 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; a partir du 8 oct 98 inclus: ; NS45 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; E2 ---- E2, E1, H1 a H16 486 a 503 ; E1 ---- E2, E1, H1 a H16 504 a 521 ; E0 ---- E2, E1, H1 a H16 522 a 539 ; NS8 ---- NS0 a NS17 540 a 557 ; NS0 ---- NS10 a NS23 et NS45 558 a 572 ; --- ---- NS7 a NS9 573 a 575 ; AA1 ---- NS0 a NS17 576 a 593 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 ; XX1 ---- YY1 648 a 665 ; XX2 ---- YY2 666 a 683 ; XX3 ---- YY3 684 a 701 ; XX4 ---- YY4 702 a 719 ; ESPACE-ARCHIVE DES POSITIONS D"ANTENNES D'APRES ESSAIS SUR SOURCES ; ; Valeurs originales mesurees sur le terrain ; [ -80, 127, 114], $ ; E2 mesure sur terrain ; [ -43, -9, -64], $ ; E1 ; [ -23, -44, -41], $ ; E0 ; [ -45, -42, -38], $ ; H1 ; [ -88, -31, -39], $ ; H2 ; [ -108, -49, -27], $ ; H3 ; [ -41, -50, -31], $ ; H4 ; [ -54, -74, -27], $ ; H5 mesure sur terrain ; [ -55, -90, -16], $ ; H6 ; [ -6, -101, -12], $ ; H7 ; [ 0, 0, 0], $ ; NS0_ew mesure sur terrain ; [ 7, -44, 8], $ ; H9 ; [ 17, -55, 1], $ ; H10 ; [ 49, -76, 16], $ ; H11 ; [ 15, -77, 12], $ ; H12 ; [ 25, -73, 31], $ ; H13 ; [ 41, -56, 51], $ ; H14 ; [ 44, -42, 20], $ ; H15 mesure sur terrain ; [ -123, -35, 51], $ ; H16 mesure sur terrain ; [ 0, 0, 0], $ ; NS0_ns mesure sur terrain ; [ -4, 4, 1], $ ; NS1 ; [ -7, 9, 1], $ ; NS2 ; [ -10, 21, 9], $ ; NS3 ; [ -14, 25, 10], $ ; NS4 ; [ -17, 30, 10], $ ; NS5 ; [ -21, 34, 11], $ ; NS6 ; [ -24, 39, 11], $ ; NS7 ; [ -27, 50, 19], $ ; NS8 ; [ -30, 55, 20], $ ; NS9 ; [ -34, 52, 13], $ ; NS10 ; [ -37, 57, 14], $ ; NS11 ; [ -41, 61, 14], $ ; NS12 ; [ -44, 73, 22], $ ; NS13 ; [ -47, 77, 23], $ ; NS14 ; [ -50, 89, 31], $ ; NS15 ; [ -54, 100, 39], $ ; NS16 ; [ -57, 105, 39], $ ; NS17 ; [ -61, 116, 47], $ ; NS18 ; [ -64, 118, 50], $ ; NS19 ; [ -67, 132, 56], $ ; NS20 ; [ -70, 139, 54], $ ; NS21 ; [ -73, 145, 67], $ ; NS22 ; [ -78, 152, 65], $ ; NS23 ; -150, 332, 154]] ; NS45 mesure sur terrain ; end ; fin de CORR_POS_ANT. date_cor_cal iflag ;_____________________________________________________________________________ PRO CORR_POS_ANT_0, $ i_source, h_cal, $ ; entree date_obs, dec_obj, hmer_obj, $ ; ------ ih, im, $ ; ------ correl, freq, $ : ------ harm_N ; entree et sortie ; Creation 2 juillet 03, non actualis'e pour les antennes AA. ; But : corriger les harmoniques du defaut de correction de mouvement diurne ; du a des ereurs de position des antennes d'extension, les autres anten- ; nes etant supposees bien placees (ce qui n'est pas le cas d'apres ; l'analyse des positions d'antennes mesurees par Champion. ; Programme successeur : CORR_POS_ANT.PRO ; Notations : ; i_source identification de la source de calibration, ; ih_cal, im_cal heure centrale de l'intervalle de calibration (en pratique ; l'heure de debut est acceptable, en TS ; dec_obj, hmer_obj decinaison et heure de passage au meridien de l'objet ; observ'e (soleil ou source de controle (TS ou TU) ; ih, im heures, minutes de la scrutation traitee (TS ou TU). ; ; POSITION DU PROBLEME : ; La position de certaines antennes, notamment E2 et NS45, est imparfaitement ; connue. Il est resulte que la correction de poursuite des franges est ; incorrecte et introduit une phase supplementaire : ; phi_e = 2*pi/lambda * (D - D0).uc (1) ; avec : D base reelle (ant de reference -> ant de reseau) ; D0 base supposee ; uc vecteur unitaire de visee vers le centre de la source ; On adopte le systeme habituel dans le calcul des phases : ; . x dans le pan de l'equateur vers l'ouest de Nancay ; . y ------------------------------ le sud --------- ; . z parallele a l'axe des poles. ; La formule 1) est valable pour un reseau correctement phas'e. Si le reseau ; a ete phas'e en ignorant les irregularites d'implantetion de santennes, ; les phases instrumentales apparentes obtenues par la procedure de calibra- ; tion ne sont pas phi_i mais : ; phi_i' = phi_i + 2*pi/lambda * (D - D0).uc0 ; ou uc0 est la visee vers le centre du Cygne pendant l'intervalle de cali- ; bration. La procedure de correction de poursuite des franges (qui ignore ; les irregulatites d'implantation produit alors une phase supplementaire : ; phi_e' = 2*pi/lambda * (D - D0).(uc - uc0) (2) ; ; Tant que la procedure de calibration n'aura pas ete modifiee pour inclure les ; irregularites d'implantation, c'est la formule (2) qui doit etre utilisee. print, ' Correction des erreurs de position des antennes' ; Definition de la date apres laquelle les calibrations sont faites en tenant ; compte des irregulatite de position des antennes, et comparaison ; avec la date d'observation date_cor_cal = [01, 10, 2003] ; on espere le 1 oct 2003. ; Bricolage sur la date d'observation (annees sur 2 chiffres) ijour = date_obs(0) & imois = date_obs(1) & ian = date_obs(2) if (ian gt 1980) then begin ; on ne fait rien, la date est complete. endif else begin ; la date est exprimee sur 2 chiffres if (ian lt 50) then ian = ian + 2000 if (ian gt 50) then ian = ian + 1900 endelse ; Calcul des dates juliennes et test day_cor_cal = julday(date_cor_cal(1), date_cor_cal(0), date_cor_cal(2)) day_obs = julday(imois, ijour, ian) if (day_obs lt day_cor_cal) then iflag = 0 ; avant calibration corrigee ; des irregularites d'implan- ; tation des antennes, if (day_obs ge day_cor_cal) then iflag = 1 ; apres ... ; Definition de la position reelle des antennes en metres ; Pour chaque antenne on definit : ; position reelle - position supposee avec un pas regulier ; Ainsi dr_a est l'oppose de l'erreur faite sur la position des anten- ; nes, en les supposant a des positions theoriques correspondant a ; des pas reguliers des reseaux EW et NS. ; Les positions reelles (par rapport aux positions theoriques corres- ; pondant a des pas reguliers) sont donnees en centimetres, dans ; le repere equatorial de Nancay (qui n'est pas le systeme projete ; sur le soleil) : ; . x dans le pan de l'equateur vers l'ouest de Nancay ; . y ------------------------------ le sud --------- ; . z parallele a l'axe des poles. ; Les composantes suivant z restent inconnues en l'absence de l'uti- ; lisation de sources a des declinaisons differentes dce celle du ; Cygne. dr_a = fltarr(3, 44) ; Valeurs reelles dr_a(0, 0) = 0.01 * [ 33, -16, 0] * 1.0 ; E2 trop a l'ouest (metres) dr_a(0, 1) = 0.01 * [ 0, 0, 0] ; E1 dr_a(0, 2) = 0.01 * [ 0, 0, 0] ; E0 dr_a(0, 43) = 0.01 * [ 9, -10, 0] * 1.0 ; NS45 trop a l'ouest et trop ; pres centre de la Terre. ; Valeurs d'essai ; dr_a(0, 0) = 0.01 * [110, 0, 0] ; E2 trop a l'ouest (metres) ; dr_a(0, 43) = 0.01 * [ 50, -5, 0] ; NS45 trop a l'ouest. if (i_source eq 1) then begin ; Cygne dec_cal = [40, 44, 25] ; precision non necessaire. hmer_cal = [19, 59, 36] ; ------------------------ endif ; Parametres de position de la source de calibration dec0 = !pi/180 * $ ( dec_cal(0) + float( dec_cal(1)) / 60 + float( dec_cal(2)) / 3600) hmer0 = hmer_cal(0) + float(hmer_cal(1)) / 60 + float(hmer_cal(2)) / 3600 ah_cal = h_cal(0) + float(h_cal(1)) / 60 ah0 = !pi/12 * (ah_cal - hmer0) ; angle horaire de calibration (rad). sind0 = sin(dec0) & cosd0 = cos(dec0) sinh0 = sin(ah0 ) & cosh0 = cos(ah0 ) ; Parametres de position de la source observee (soleil ou source de controle) dec = !pi/180 * $ (dec_obj(0) + float( dec_obj(1)) / 60 + float( dec_obj(2)) /3600) ahmer_obj = $ hmer_obj(0) + float(hmer_obj(1)) / 60 + float(hmer_obj(2)) /3600 ah = !pi/12 * (ih + float(im) / 60 - ahmer_obj) ; angle horaire sind = sin(dec) & cosd = cos(dec) sinh = sin(ah) & cosh = cos(ah) ; Boucle sur les 576 harmoniques de harm_N ; Tableaux de verification t_D_D0 = [0, 0, 0] t_cor = [0] n_cor = 0 t_phi = [0] for i = 0, 575 do begin if ( ((correl(0, i) ne 0) and (correl(1, i) ne 0)) and $ ; E2 ((correl(0, i) ne 1) and (correl(1, i) ne 1)) and $ ; E1 ((correl(0, i) ne 2) and (correl(1, i) ne 2)) and $ ; E0 ((correl(0, i) ne 43) and (correl(1, i) ne 43)) ) $ ; N45 then goto, a1 ; vers fin de boucle. n_cor = n_cor + 1 ; nbre d'harm corriges. ; Calcul de (base vraie - base supposee) D_D0 = dr_a(*, correl(1, i)) - dr_a(*, correl(0, i)) t_D_D0 = [t_D_D0, D_D0] ; Calcul des vecteurs unitaires de visee uu = [sinh * cosd , cosh * cosd , sind] uu0 = [sinh0 * cosd0, cosh0 * cosd0, sind0] ; Calcul du dephasage supplementaire ac = 3e8 ; vitesse de la lumiere, m/sec. al = ac / freq / 1e6 ; longueur d'onde, en metres. if (iflag eq 0) then phi_e = 2*!pi / al * total(D_D0 * (uu - uu0)) if (iflag eq 1) then phi_e = 2*!pi / al * total(D_D0 * uu) t_cor = [t_cor, i] t_phi = [t_phi, nint(180/!pi*phi_e)] if ( (correl(0, i) eq 0) or (correl(1, i) eq 0) ) then begin ch_format = "('phi saut E2 =', i4, ' deg')" ; print, format=ch_format, nint(180/!pi * phi_e) endif if ( (correl(0, i) eq 43) or (correl(1, i) eq 43) ) then begin ch_format = "('phi saut NS45 =', i4, ' deg')" ; print, format=ch_format, nint(180/!pi * phi_e) endif i_c = complex(0, 1) coeff_corr = exp(- i_c * phi_e) ; signe - car coeff de correction. ; Correction de l'harmonique harm_N(i) = coeff_corr * harm_N(i) a1: J_M = 0 endfor icon = 0 if (icon eq 1) then begin print, ' ' print, 'CORR_POS_ANT :' print, ' freq =', freq, ' lambda =', al print, ' decl objet :', dec_obj print, ' decl calib :', dec_cal print, ' ' print, ' t_D_D0, max, min : ', max(t_D_D0), min(t_D_D0) print, ' ' print, ' t_phi :' print, t_phi stop endif end ; fin de CORR_POS_ANT_0 . ;______________________________________________________________________________ PRO CORR_GAIN_ANT, $ n_image, $ ; entree. phi_ew_ns, phi_w_e, $ ; ------ g_flag, g_amp, g_phi, $ ; correl, $ ; ------ harm_N ; entree et sortie ; Creation 20 mai 03 ; Modifications : ; 04 jan 13 extension au cas des antennes AA ; 04 sep 21 . refonte pour traiter toutes les antennes ; . introduction de phi_ew_ns, decalage d'ensemble entre les EW ; et les NS. ; 05 jan 24 erreur corrigee : les gains des antennes a ne pas corriger ; n'etaient mis a 1 que pour n_image=1. ; 05 fev 9 ajout de phi_w_e a la liste d'entree. On corrige chaque 1/2 ; reseau de la moitie de cette difference ; 05 fev 23 trouve une erreur (copier-coller + faute de frappe) dans la ; modif des harm de E0, qui affectait les harm NS de NS8 : ; harm_N(522) = harm_N(522 : 539) * fac_cor ; au lieu de ; harm_N(539) = harm_N(531 : 539) * fac_cor ; rappel : E0 ---- E2, E1, H1 a H16 522 a 539 ; Notations : ; g_flag drapeau d'utilisation du gain declare pour chaque antenne ; g_amp module du gain d'antenne a compenser ; g_phi phase ----------------------------- (degres) ; gain_c gain complexe ; But correction manuelle et pragmatique des gains d'antennes dont le gain est ; . soit mal determine dans la calibration, ; . soit rapidement instable dans le temps, ; ces correction seront en pratique limite a quelques antennes. nbre_harm = n_elements(harm_N) i_c = complex(0, 1) ; Calcul du gain complexe gain_c = g_amp * exp(i_c * !pi/180 * g_phi) ; Mise a 1 des gains non modifies dom_0 = where(g_flag eq 0, ic0) dom_1 = where(g_flag eq 1, ic1) if (ic0 gt 0) then gain_c(dom_0) = 1 ; Impression des modifications if (n_image eq 1) then begin if (ic0 gt 0) then begin ; print, ' Numeros des antennes de gain non modifies' ; print, dom_0 ; gain_c(dom_0) = 1 ; doit etre hors du if (n_image eq 1). Erreur ; trouvee le 24 jan 05. endif if (ic1 eq 0) then print, 'pas de modification manuelle de gains ' + $ 'd''antennes' if (ic1 gt 0) then begin print, ' Numeros des antennes de gain modifies' print, dom_1 endif endif ; Calcul de harm_N produit par le reseau imparfaitement phas'e. ; Rappel du l'utilisation de correl dans RH_MALC_IM_2D : ; bew = xant(correl(1, *)) - xant(correl(0, *)) ; bns = yant(correl(1, *)) - yant(correl(0, *)) ; La base est orientee de l'antenne de reference vers l'antenne de ; reseau. L'indice 0 correspond a la reference, l'indice 1 au reseau. ; La phase phi d'un harm est phase(ant de res) - phase(ant ref), donc: harm_N = harm_N / ( conj( gain_c(correl(0, *)) ) * $ gain_c(correl(1, *)) ) ; formule reprise se SIMUL_HARM_N, mais avec une division puisqu'il ; s'agit de corriger des gains observes. ; Correction (purement pragmatique) du dephasage general entre EW et NS harm_N(0) = harm_N(0:449) * exp(i_c * !pi/180 * (-phi_ew_ns)) ; signe - devant phi_ew_ns puisqu'il s'agit de corriger cette phase. ; ; Rappel : dans rh_dp_calib, phi_ew_ns et phi_w_e sont ajoutes aux ; phases apparentes g_phi, et tout est corrige en bloc dans ; CORR_GAIN_ANT. ch_format = $ '(6x, "Correction generale des ant EW par rapport aux NS : ", ' + $ 'i4, " degres")' if (n_image eq 1) then print, format=ch_format, phi_ew_ns ; Correction (purement pragmatique) du dephasage entre les 1/2 reseaux E et W ; Pour ne pas decaler l'ensemble du reseau EW par rapport aux NS, on ; corrige la moitie W de -phi_w_e / 2 et la moitie E de +phi_w_e / 2 ; ; Rappel : dans rh_dp_calib, phi_ew_ns et phi_w_e sont ajoutes aux ; phases apparentes g_phi, et tout est coorige en bloc dans ; CORR_GAIN_ANT. ; Correction des harmoniques "2D" : moitie E puis moitie W p2 = phi_w_e / 2 fac_cor = exp(- i_c * !pi/180 * p2) ; signe "-" puisqu'il s'agit de corriger cette phase. for k = 0, 24 do begin harm_N(18*K ) = harm_N(18*k : 18*k + 8) / fac_cor harm_N(18*K + 9) = harm_N(18*k + 9: 18*k + 17) * fac_cor endfor ; Correction des series de E2, E1, E0 fac_cor = exp(i_c * !pi/180 * (-phi_w_e)) harm_N(495) = harm_N(495 : 503) * fac_cor ; 1/2 serie de E2 harm_N(513) = harm_N(513 : 521) * fac_cor ; ------------ E1 harm_N(522) = harm_N(522 : 539) * fac_cor ; ------------ E0 ; erreur (copier-coller + faute de frappe) trouvee le 23 fev 2006 : ; harm_N(522) = harm_N(522 : 539) * fac_cor ; ------------ E0 ; au lieu de ; harm_N(539) = harm_N(531 : 539) * fac_cor ; ------------ E0 ; rappel : E0 ---- E2, E1, H1 a H16 522 a 539 ; Rangement des harmoniques dans harm_N ; NS0 avec E2, E1, H1 a H16 0 a 17 ; NS1 ---- ---------------------- 18 a 35 ; NS8 ---- ---------------------- 144 a 161 ; NS23 ---- ---------------------- 414 a 431 ; NS45 ---- ---------------------- 432 a 449 ; jusqu'au 7 oct 98 inclus: ; E0 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; a partir du 8 oct 98 inclus: ; NS45 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; E2 ---- E2, E1, H1 a H16 486 a 503 ; E1 ---- E2, E1, H1 a H16 504 a 521 ; E0 ---- E2, E1, H1 a H16 522 a 539 ; NS8 ---- NS0 a NS17 540 a 557 ; NS0 ---- NS10 a NS23 et NS45 558 a 572 ; --- ---- NS7 a NS9 573 a 575 ; AA1 ---- NS0 a NS17 576 a 593 complete 13 jan 04 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 end ; fin de CORR_GAIN_ANT. ;______________________________________________________________________________ PRO CORR_GAIN_ANT_3, $ g_E2, g_E1, g_E0, g_H2, g_H4, g_NS0_ew, $ ; entree g_H15, g_H16, $ ; g_NS0_ns, g_NS8, g_NS21, g_NS22, g_NS23, g_NS45, $ ; ------ g_AA1, g_AA2, g_AA3, g_AA4, $ ; ------ correl, $ ; ------ harm_N ; entree et sortie. ; Creation 20 mai 03 ; Modifications : ; 04 jan 13 extension au cas des antennes AA ; 04 sep 21 . refonte pour traiter toutes les antennes ; . introduction de phi_ew_ns, decalage d'ensemble entre les EW ; et les NS. ; . abandon de la presente version rebaptisee CORR_GAIN_ANT_3. ; But correction manuelle et pragmatique de certaines antennes dont le gain est ; . soit mal determine dans la calibration, ; . soit rapidement instable dans le temps, ; tant que le reseau n'est pas fiabilis'e. nbre_harm = n_elements(harm_N) i_c = complex(0, 1) i_E2 = nint(g_E2(0)) a_E2 = g_E2(1) p_E2 = g_E2(2) * !pi/180 ; en radians gc_E2 = a_E2 * exp(i_c * p_E2) ; gc_ comme gain complexe, pour ne pas ; ecraser l'entree. i_E1 = nint(g_E1(0)) a_E1 = g_E1(1) p_E1 = g_E1(2) * !pi/180 ; en radians gc_E1 = a_E1 * exp(i_c * p_E1) i_E0 = nint(g_E0(0)) a_E0 = g_E0(1) p_E0 = g_E0(2) * !pi/180 ; en radians gc_E0 = a_E0 * exp(i_c * p_E0) i_H2 = nint(g_H2(0)) a_H2 = g_H2(1) p_H2 = g_H2(2) * !pi/180 ; en radians gc_H2 = a_H2 * exp(i_c * p_H2) i_H4 = nint(g_H4(0)) a_H4 = g_H4(1) p_H4 = g_H4(2) * !pi/180 ; en radians gc_H4 = a_H4 * exp(i_c * p_H4) i_NS0_ew = nint(g_NS0_ew(0)) a_NS0_ew = g_NS0_ew(1) p_NS0_ew = g_NS0_ew(2) * !pi/180 ; en radians gc_NS0_ew = a_NS0_ew * exp(i_c * p_NS0_ew) i_H16 = nint(g_H16(0)) a_H16 = g_H16(1) p_H16 = g_H16(2) * !pi/180 ; en radians gc_H16 = a_H16 * exp(i_c * p_H16) i_H15 = nint(g_H15(0)) a_H15 = g_H15(1) p_H15 = g_H15(2) * !pi/180 ; en radians gc_H15 = a_H15 * exp(i_c * p_H15) i_NS0_ns = nint(g_NS0_ns(0)) a_NS0_ns = g_NS0_ns(1) p_NS0_ns = g_NS0_ns(2) * !pi/180 ; en radians gc_NS0_ns = a_NS0_ns * exp(i_c * p_NS0_ns) i_NS8 = nint(g_NS8(0)) a_NS8 = g_NS8(1) p_NS8 = g_NS8(2) * !pi/180 ; en radians gc_NS8 = a_NS8 * exp(i_c * p_NS0_ns) i_NS21 = nint(g_NS21(0)) a_NS21 = g_NS21(1) p_NS21 = g_NS21(2) * !pi/180 ; en radians gc_NS21 = a_NS21 * exp(i_c * p_NS21) i_NS22 = nint(g_NS22(0)) a_NS22 = g_NS22(1) p_NS22 = g_NS22(2) * !pi/180 ; en radians gc_NS22 = a_NS22 * exp(i_c * p_NS22) i_NS23 = nint(g_NS23(0)) a_NS23 = g_NS23(1) p_NS23 = g_NS23(2) * !pi/180 ; en radians gc_NS23 = a_NS23 * exp(i_c * p_NS23) i_NS45 = nint(g_NS45(0)) a_NS45 = g_NS45(1) p_NS45 = g_NS45(2) * !pi/180 ; en radians gc_NS45 = a_NS45 * exp(i_c * p_NS45) i_AA1 = nint(g_AA1(0)) a_AA1 = g_AA1(1) p_AA1 = g_AA1(2) * !pi/180 ; en radians gc_AA1 = a_AA1 * exp(i_c * p_AA1) i_AA2 = nint(g_AA2(0)) a_AA2 = g_AA2(1) p_AA2 = g_AA2(2) * !pi/180 ; en radians gc_AA2 = a_AA2 * exp(i_c * p_AA2) i_AA3 = nint(g_AA3(0)) a_AA3 = g_AA3(1) p_AA3 = g_AA3(2) * !pi/180 ; en radians gc_AA3 = a_AA3 * exp(i_c * p_AA3) i_AA4 = nint(g_AA4(0)) a_AA4 = g_AA4(1) p_AA4 = g_AA4(2) * !pi/180 ; en radians gc_AA4 = a_AA4 * exp(i_c * p_AA4) ; Rangement des harmoniques dans harm_N ; NS0 avec E2, E1, H1 a H16 0 a 17 ; NS1 ---- ---------------------- 18 a 35 ; NS8 ---- ---------------------- 144 a 161 ; NS23 ---- ---------------------- 414 a 431 ; NS45 ---- ---------------------- 432 a 449 ; jusqu'au 7 oct 98 inclus: ; E0 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; a partir du 8 oct 98 inclus: ; NS45 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; E2 ---- E2, E1, H1 a H16 486 a 503 ; E1 ---- E2, E1, H1 a H16 504 a 521 ; E0 ---- E2, E1, H1 a H16 522 a 539 ; NS8 ---- NS0 a NS17 540 a 557 ; NS0 ---- NS10 a NS23 et NS45 558 a 572 ; --- ---- NS7 a NS9 573 a 575 ; AA1 ---- NS0 a NS17 576 a 593 complete 13 jan 04 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 if (i_E2 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(0 + 18*i) = harm_N(0 + 18*i) / gc_E2 harm_N(486) = harm_N(486 : 503) / conj(gc_E2) ; E2 a H16 harm_N(504) = harm_N(504) / gc_E2 ; E1 harm_N(522) = harm_N(522) / gc_E2 ; E0 endif if (i_E1 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(1 + 18*i) = harm_N(1 + 18*i) / gc_E1 harm_N(487) = harm_N(487) / gc_E1 ; E2 harm_N(504) = harm_N(504 : 521) / conj(gc_E1) ; E2 a H16 harm_N(523) = harm_N(523) / gc_E1 ; E0 endif if (i_E0 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(2 + 18*i) = harm_N(2 + 18*i) / gc_E0 harm_N(522) = harm_N(522 : 539) / conj(gc_E0) ; E2 a H16 endif if (i_H2 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(3 + 18*i) = harm_N(3 + 18*i) / gc_H2 harm_N(489) = harm_N(489) / gc_H2 ; E2 harm_N(507) = harm_N(507) / gc_H2 ; E1 harm_N(525) = harm_N(525) / gc_H2 ; E0 endif if (i_H4 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(5 + 18*i) = harm_N(5 + 18*i) / gc_H4 harm_N(491) = harm_N(491) / gc_H4 ; E2 harm_N(509) = harm_N(509) / gc_H4 ; E1 harm_N(527) = harm_N(527) / gc_H4 ; E0 endif if (i_NS0_ew eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(9 + 18*i) = harm_N(9 + 18*i) / gc_NS0_ew harm_N(503 - 8) = harm_N(503 - 8) / gc_NS0_ew ; E2 harm_N(521 - 8) = harm_N(521 - 8) / gc_NS0_ew ; E1 harm_N(539 - 8) = harm_N(539 - 8) / gc_NS0_ew ; E0 endif if (i_H15 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(16 + 18*i) = harm_N(0 + 18*i) / gc_H15 harm_N(502) = harm_N(502) / gc_H15 ; E2 harm_N(520) = harm_N(520) / gc_H15 ; E1 harm_N(538) = harm_N(538) / gc_H15 ; E0 endif if (i_H16 eq 1) then begin for i=0, 24 do $ ; NS0 a NS45 harm_N(17 + 18*i) = harm_N(0 + 18*i) / gc_H16 harm_N(503) = harm_N(503) / gc_H16 ; E2 harm_N(521) = harm_N(521) / gc_H16 ; E1 harm_N(539) = harm_N(539) / gc_H16 ; E0 endif if (i_NS0_ns eq 1) then begin harm_N(0) = harm_N(0 : 17 ) / conj(gc_NS0_ns) ; E2 a H16 harm_N(450) = harm_N(450 ) / gc_NS0_ns ; NS45 harm_N(558) = harm_N(558 : 575) / conj(gc_NS0_ns) ; NS7 a NS23 endif if (i_NS8 eq 1) then begin harm_N(144) = harm_N(144 : 161) / conj(gc_NS8) ; E2 a H16 harm_N(458) = harm_N(458) / gc_NS8 ; NS45 harm_N(484) = harm_N(484) / gc_NS8 ; NS45 harm_N(540) = harm_N(540 : 557) / conj(gc_NS8) ; NS0 a NS17 harm_N(574) = harm_N(574) / gc_NS8 ; NS0 endif if (i_NS21 eq 1) then begin harm_N(378) = harm_N(378 : 395) / conj(gc_NS21) ; E2 a H18 harm_N(479) = harm_N(479) / gc_NS21 ; NS45 harm_N(569) = harm_N(569) / gc_NS21 ; NS0_ns endif if (i_NS22 eq 1) then begin harm_N(396) = harm_N(396 : 413) / conj(gc_NS22) ; E2 a H18 harm_N(480) = harm_N(480) / gc_NS22 ; NS45 harm_N(570) = harm_N(570) / gc_NS22 ; NS0_ns endif if (i_NS23 eq 1) then begin harm_N(414) = harm_N(414 : 431) / conj(gc_NS23) ; E2 a H18 harm_N(481) = harm_N(481) / gc_NS23 ; NS45 harm_N(571) = harm_N(571) / gc_NS23 ; NS0_ns endif if (i_NS45 eq 1) then begin harm_N(432) = harm_N(432 : 449) / conj(gc_NS45) ; E2 a H16 harm_N(450) = harm_N(450 : 485) / conj(gc_NS45) ; ns0 a NS23 harm_N(572) = harm_N(572 ) / gc_NS45 ; NS7 a NS23 endif if (nbre_harm gt 576) then begin if (i_AA1 eq 1) then harm_N(576:593) = harm_N(576:593) / conj(gc_AA1) if (i_AA2 eq 1) then harm_N(594:611) = harm_N(594:611) / conj(gc_AA2) if (i_AA3 eq 1) then harm_N(612:629) = harm_N(612:629) / conj(gc_AA3) if (i_AA4 eq 1) then harm_N(630:647) = harm_N(630:647) / conj(gc_AA4) endif end ; fin de CORR_GAIN_ANT. ; AA1 ---- NS0 a NS17 576 a 593 complete 13 jan 04 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 ;______________________________________________________________________________ PRO CORR_ROT_DEP_NP, $ n_image, $ ; entree. date_obs, type_obs, type_calib, $ ; ------ i_corr_rot_NS0, $ ; ------ rotew, rotns, ah_dep, delta, freq, $ ; ------ harm_N, $ ; ------ et sortie. a_H2, a_NS0 ; sortie (radians), ; Creation 9 avril 03. ; But : corriger les harmoniques non polar de la rotation des dipoles de H2, ; H4, NS0 et/ou du depointage des antennes lunettes. ; Modifications : ; 04 jan 14 extension aux antennes AA. ; Procedures appelantes : ; RH_DPATCHFITS_NRH, CALIBRATION ; POSITION DU PROBLEME DE LA CORRECTION DES HARMONIQUES pour la rotation des ; dipoles (H2, H4, NS0) et le depointage des antennes H (4 nov 02) ; A) anciennes sources de controle -> nov 02, et meme au dela, jusqu'a la ; refonte du temps reel pour supprimer les "corrections" fausses a l'ini- ; tialisation (-> 16 avr 2003) : ; . reseau H depointe de 90 min sur le Cygne. L'angle "a" dont sont tournes ; les dipoles (vu de derriere et dans le sens direct) est : ; sin(a) = sin(delta) * sin(a_H_dep) (a_H_dep > 0 vers l'ouest) ; . NS0 tournee de pi/4 dans le sens inverse vu de derriere (mais H2 et H4 ; ne sont pas tournees) ; . la correction des harmoniques pour la rotation de NS0 et le depointage ; des H est faite par le programme d'observation en modifiant les gains: ; - non polar : ; . antennes H : on multiplie les gains par cosa, ; . NS0_ew : -------------------------- cos(45), ; . NS0_ns : ---------------------------------- ; . E012, NS1 a NS45 --------------------- cosa. Imitation abusive ; de ce qui est fait en polar. Inutile et faux. ; consequences pour les harmoniques : ; . NS0_ns avec E2, E1 : faux par facteur 1/cosa. ; . NS0_ns ---- H : ---------------- cos(45+a) / (cosa*cos45) ; . NS1-45 ---- E2, E1 : ---------------- 1/cosa^2. ; . NS1-45 ---- H : ---------------- 1/cosa ; . NS1-45 ---- NS0_ew : ---------------- 1/cosa ; . NS45 ---- NS0_ns : ---------------- 1/cosa ; . NS45 ---- NS1 a 23 : ---------------- 1/cosa^2 ; . E210 ---- E2 et E1 : ---------------- 1/cosa^2 ; . E210 ---- H1 a H16 : ---------------- 1/cosa ; . NS8 ---- NS0_ns : ---------------- 1/cosa ; . NS8 ---- NS1-NS17 : ---------------- 1/cosa^2 ; . NS0_ns ---- NS7-NS45 : ---------------- 1/cosa ; . on ne tient pas compte du dephasage de depointage des H, dont le ; centre de phase est deplac'e (15 a 20 deg ?). ; - polar : ; . antennes H : les gains polar n'etant pas definis (ou pas utilises) ; on utilise leurs gains non polar (?) et on modifie les gains ; polar de E2, E1, E0, NS1 a NS23. ; . NS0_ns : on multilpie par sin(45) et on ajoute une phase 90. ; Le gain est donc multilplie par i sin(45). Les harm seront donc ; divises par conj(i * sin45) = -i * sin45. ; Or il faudrait diviser par i * sin45 pour des H non depointees. ; Ca fait en gros une faute de signe. ; . E2, E1, E0, NS1 a NS23 et NS45 : on multiplie par par sina et on ; retire une phase 90 pour un depointage W. ; => on multiplie leur gain polar par -i * sina. Les harm avec ; les H sont divises par i * sina (sina>0), ce qui est un debut ; correct. ; consequences sur les harmoniques resultants : ; . NS0_ns (ant de ref) avec E2, E1, (ant de reseau) : divises par ; (-i*sin45) * cosa alors qu'ils devraient etre divises par ; ( i*sin45), donc faux par un facteur -1/cosa = -1.07 ; . NS0_ns avec les H : divises par (-i sin45) * cosa , alors qu'ils ; devraient etre divises par i * sin(a + 45), donc faux par un ; facteur (i sin(a+45)) / (-i * sin45 * cosa) = ; = - sin(45+a) / (sin45 * cosa) ; a) depointage W (a = +15deg) : faux par facteur -1.27 ; b) ---------- E a = -15 deg : ---------------- -0.73 ; . NS1 a NS23 avec E2 et E1 : divises par (i*sina) * cosa ; alors qu'ils devraient etre inchanges, donc faux par un facteur ; - i / (sina * cosa) = - 4*i , mais nuls de toutes facons. ; . NS1 a NS23 avec les H (sauf NS0_ew) : divises par (i * sina)*cosa ; au lieu de i * sina => faux par un facteur 1/cosa . ; . NS1 a NS23 ---- NS0_ew : divises par (i * sina) * cos45 au lieu ; de i*sin(-45) = -i * sin45, donc faux par un facteur ; -i * sin45 / (i * sina * cos45) = -1 / sina = - 3.86 ; . NS45 avec NS0_ns : divise par (i * sina) * cos45 alors qu'il ; devrait etre divise par i*sin(-45)=-i*sin45 donc faux par un ; facteur -i*sin45 / (i * sina * cos45) = -1/sina = + 3.86 ; . NS45 avec les autres NS : nuls de toutes facons ; . E210 avec E2 et E1 : --------------------- ; . E210 avec H1 a H7, H9 a H16 : divises par i * sina * cosa ; au lieu de i * sina => faux par un facteur 1 / cosa ; . E210 avec NS0_ew : divises par i * sina * cos45 ; au lieu de i * sin(-45) => faux par un facteur ; -i * sin45 / (i * sina * cos45) = -1/sina ; . NS8 avec NS0_ns : divise par (i * sina) * cos45 au lieu de ; i * sin(-45) = - i * sin45 , donc faux par un facteur ; -i * sin45 / (i * sina * cos45) = -1 / sina ; . NS0_ns avec les NS : divises par (-i * sin45) * cosa alors qu'ils ; devraient etre divises par i*sin45 , donc faux par un facteur ; i * sin45 / (-i * sin45 * cosa) = -1/cosa = -0.97 . ; Recapitulation pour CALIBRATION_P (anciennes sources de controle) ; . NS0_ns avec E2, E1 : diviser par - 1 / cosa ; . NS0_ns ---- les H : ----------- - sin(45+a) / (sin45 * cosa) ; . NS1-45 ---- E2, E1 : ----------- - i / (sina * cosa) mais nuls ; . NS1-45 ---- les H : ----------- 1 / cosa ; . NS1-45 ---- NS0_ew : ----------- - 1 / sina ; . NS45 ---- NS0_ns : ----------- - 1 / sina ; . NS45 ---- NS1-23 : nuls ; . E210 ---- E2, E1 : ---- ; . E210 ---- H1 H16 : diviser par 1 / cosa ; . E210 ---- NS0_ew : ----------- - 1 / sina ; . NS8 ---- NS0_ns : ----------- - 1 / sina ; . NS0_ns ---- NS7-45 : ----------- - 1 / cosa ; . on ne tient pas compte non plus du dephasage du au deplacement des ; antennes H. ; ; B) Sources de controle posterieures a la refonte du temps reel (16 avr 03) : ; . NS0 tournee de a_NS0 (le sens changera a la date jul_rot) ; . reseau H depointe, H2, H4 et non tournees, ; . harmoniques corriges du mouvement diurne, ; . pas de modification des gains des antennes a l'initialisation pour ; tenir compte de la rotation des antennes. ; . antennes AA pour des observations posterieures a jan 04 ; CE CAS NE SE PRESENTE PAS JUSQU'A LA REFONTE DU TEMPS REEL : il ne peut ; y avoir d'observations de transition pour les sources de controle (sans ; les corrections fausses a l'initialisation du temps reel) car il faut ; depointer le reseau H et cela ne peut etre fait en decouplant le micro ; pointage et le maxion. ; ; Notations : . a rotation des dipoles du reseau H du au depointage ; sina = sin(a) cosa = cos(a) ; . sinns = sin(a_NS0) cosns = cos(a_NS0) ; . sinew = sin(a_H2 ) cosew = cos(a_H2 ) (inutilises ici). ; - non polar, harmoniques : ; . NS0_ns avec E2, E1 : diviser par cosns ; . ------ ---- H1 a H16 : ------- --- cos(-a_NS0 + a) * lobe_H ; . NS1-45 ---- E2, E1 : inchanges ; . NS1-45 ---- H1 a H16 : ------- --- cos(a) * lobe_H ; . NS1-45 ---- NS0_ew : ------- --- cosns ; . NS45 ---- NS0_ns : ----------- cosns ; . NS45 ---- NS1 a NS23 : inchanges ; . E210 ---- H1 a H16 : ----------- cos(a) * lobe_H ; . E210 ---- NS0_ew : ----------- cosns ; . NS8 ---- NS0_ns : ----------- cosns ; . NS8 ---- NS1 a NS17 : inchanges ; . NS0_ns ---- NS7 a NS45 : ----------- cosns ; . AA1 2 3 4 -- NS0_ns ; ----------- cosns ; - polar : les harmoniques n'impliquant pas les H ou NS0 sont nuls ; . NS0_ns avec E2, E1 : diviser par -i sinns ; . ------ ---- H1 a H16 : ------- --- i sin(-a_NS0 + a) * lobe_H ; . NS1-45 ---- E2, E1 : inchanges, nuls ; . NS1-45 ---- H1 a H16 : ------- --- i sina * lobe_H ; . NS1-45 ---- NS0_ew : ------- --- i sinns ; . NS45 ---- NS0_ns : ----------- i sinns ; . NS45 ---- NS1 a NS23 : inchanges, nuls ; . E210 ---- H1 a H16 : ----------- i sina * lobe_H ; . E210 ---- NS0_ew : ----------- i sinns ; . NS8 ---- NS0_ns : ----------- i sinns ; . NS8 ---- NS1 a NS17 : inchanges nuls ; . NS0_ns ---- NS7 a NS45 : ----------- -i sinns ; . AA1 2 3 4 -- NS0_ns : ----------- i sinns ; Rem : lobe_H contient le dephasage de depointage, du au leger change- ; ment de position des antennes. ; C) Sources de calibration posterieures a nov 02, en pratique a partir de ; fev 03. Jusqu'a la refonte du temps reel, ce mode d'observation est ; obtenu en decouplant le micro pointage et le maxion, et est identifie ; par type_obs=2 dans RH_DP_CALIB (observations dites de transition). ; Les conditions sont : ; . NS0 tournee, ; . reseau H pointe, H2, H4 et tournees dans le sens oppose a NS0 (actuel) ; ou dans le meme sens (apres fev 2003) ; . harmoniques corriges du mouvement diurne ; . pas de modification des gains des antennes a l'initialisation pour ; tenir compte de la rotation des antennes, ; . antennes AA apres jan 2004. ; Notations : . a rotation des dipoles du reseau H du au depointage ; sina = sin(a) cosa = cos(a) ; . sinns = sin(a_NS0) cosns = cos(a_NS0) ; . sinew = sin(a_H2 ) cosew = cos(a_H2 ) . ; - non polar, harmoniques : ; . NS0_ns avec E2 E1 H1 : diviser par cosns ; . ----- ---- H2 : inchange, (nul ou rien a corriger) ; . ----- ---- H3 : diviser par cosns ; . ----- ---- H4 : inchange, (nul ou rien a corriger) ; . ----- ---- H5 a H16 : diviser par cosns ; . NS1-45 avec E2 E1 H1 : inchange ; . ----- ---- H2 : diviser par cosew ; . ----- ---- H3 : inchange ; . ----- ---- H4 : diviser par cosew ; . ----- ---- H5 a H7 : inchanges ; . ----- ---- NS0_ew : diviser par cosns ; . ----- ---- H9 a H16 : inchanges ; . NS45 ---- NS0_ns : ----------- cosns ; . NS45 ---- NS1-23 : inchanges ; . E210 ---- H2 et H4 : diviser par cosew ; . E210 ---- NS0_ew : ----------- cosns ; . NS8 ---- NS0_ns : ----------- cosns ; . NS0_ns ---- NS1-45 : ----------- cosns ; . AA1 2 3 4 --- NS0_ns : ----------- cosns ; - polar : tous les harmoniques sont nuls, sauf impliquant H2, H4 et NS0. ; on pose sinew = sin(a_H2), et sinns = sin(a_NS0) ; . NS0_ns avec E2 E1 H1 : diviser par -i * sinns ; . ------ ---- H2 : ----------- i * sin(a_H2 - a_NS0) soit: ; i (actuel), puis rien (nul) ; . ------ ---- H3 : ----------- -i * sinns ; . ------ ---- H4 : ----------- i (actuel), puis rien (nul) ; . ------ ---- H5 a H16 : ----------- -i * sinns ; . NS1_45 ---- E2 E1 H1 : inchanges (nuls) ; . ------ ---- H2 : diviser par i * sinew ; . ------ ---- H3 ; inchange (nul) ; . ------ ---- H4 : diviser par i * sinew ; . ------ ---- H5 a H7 : inchanges (nuls) ; . ------ ---- NS0_ew : diviser par i * sinns ; . ------ ---- H9 a H16 : inchanges (nuls) ; . NS45 ---- NS0_ns : diviser par i * sinns ; . NS45 ---- NS1-23 : nuls, inchanges ; . E210 ---- H2 et H4 : diviser par i * sinew ; . E210 ---- NS0_ew : ----------- i * sinns ; . NS8 ---- NS0_ns : ----------- i * sinns ; . NS0_ns ---- NS1-45 : ----------- -i * sinns ; ; Au total on obtient ainsi les harmoniques avec le niveau qu'ils auraient avec ; des antennes non tournees, sauf pour les 2 harmoniques (NS0, H2) et (NS0, H4) ; qui sont eventuellement nuls pour les observations de calibration posterieu- ; res a nov 02. ; Ca fait en tout 84 cas particuliers bien chiants a verifier un par un. ; FIN DE POSITION DU PROBLEME DE LA CORRECTION DES HARMONIQUES ; Rangement des harmoniques dans harm_N ; NS0 avec E2, E1, H1 a H16 0 a 17 ; NS1 ---- ---------------------- 18 a 35 ; NS8 ---- ---------------------- 144 a 161 ; NS23 ---- ---------------------- 414 a 431 ; NS45 ---- ---------------------- 432 a 449 ; jusqu'au 7 oct 98 inclus: ; E0 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; a partir du 8 oct 98 inclus: ; NS45 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; E2 ---- E2, E1, H1 a H16 486 a 503 ; E1 ---- E2, E1, H1 a H16 504 a 521 ; E0 ---- E2, E1, H1 a H16 522 a 539 ; NS8 ---- NS0 a NS17 540 a 557 ; NS0 ---- NS10 a NS23 et NS45 558 a 572 ; --- ---- NS7 a NS9 573 a 575 ; AA1 ---- NS0 a NS17 576 a 593 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 ; ----------------------------------------------------------------- ; DEBUT DE LA PARTIE ACTIVE DE CORR_ROT_DEP_NP ; Distinction entre les differentes observation de calibration et de controle ; Corrections a faire ailleurs : ; . CALIBRATION et CALIBRATION_P : date_obs (date_rot n'y figure pas) ; . nbre_harm = n_elements(harm_N) date_rot = [10, 02, 2003] ; a_NS0 = +45 apres cette date. date_corr_gain = [16, 04, 2003] ; date de modification du temps reel ; pour supprimer les modifications ; des tables de gain pour "corriger" ; la rotation et le depointage des ; antennes. jul_corr_gain = julday(date_corr_gain(1), date_corr_gain(0), $ date_corr_gain(2)) jul_rot = julday(date_rot(1), date_rot(0), date_rot(2)) jul_obs = julday(date_obs(1), date_obs(0), date_obs(2)) if (rotew eq 0) then begin a_H2 = 0 a_H4 = 0 endif if (rotns eq 0) then $ a_NS0 = 0 if (rotew eq 1) then begin a_H2 = !pi/180 * 45 ; >0 = sens direct vu de derriere l'antenne. a_H4 = !pi/180 * 45 endif if (rotns eq 1) then begin if(jul_obs lt jul_rot) then a_NS0 = - !pi/180 * 45 if(jul_obs ge jul_rot) then a_NS0 = !pi/180 * 45 ; P. Picard a tenu sa promesse. endif a_H_dep = asin(sin(delta) * sin(ah_dep)) ; radians. ; >0 pour un depointage W. a_H_dep est non nul pour les sources de ; controle, et dans ce cas rotew = 0. a_H_dep_deg = 180/!pi * a_H_dep ch_format = "(6x, 'Rotation des dipoles des H par depointage =', " + $ "f5.1, ' degres (>0 pour sens ')" if (n_image eq 1) then begin print, format=ch_format, a_H_dep_deg print, ' direct vu de derriere)' ch_format ="(' rotation de H2 H4 et NS0 : " + $ "rotew =', i2, ' rotns =', i2)" print, ' (impression par CORR_ROT_DEP_NP dans ' + $ 'RH_CORR_ANTENNES)' ; print, format = ch_format, rotew, rotns endif ; Rappel : dans la cas d'observations de calibration intermediaires ; avec decouplage du maxion et du micro-pointage, rotew et rotns ; sont mis a 1 dans RH_DP_CALIB (ligne 412). Inutile de verifier. if ((abs(ah_dep) le 0.1) and (n_image eq 1)) then begin ; en principe : gt 0 . print, ' Pas de correction de depointage des antennes H' endif ; Correction de la perte de niveau des harmoniques non polar, due au lobe des ; antennes H si elles sont depointees ; On represente la coupe du lobe en angle horaire des antennes H par ; une fonction quadratique dont la 1/2 largeur a mi puissance est ; L2 (en degres). ; On suppose que le dephasage de depointage est du a la variation de ; la longueur des bases. Pour la calculer on suppose que le centre ; de phase des antennes H coincide avec leur dipole, donc situe a ; une distance e de l'intersection des axes de rotation. i_saut = 0 ; 0 sauf pour essais if ((i_saut eq 0) and (abs(ah_dep) gt 0.1)) then begin ; en principe : abs(ah_dep) gt 0 . ; Calcul du lobe des antennes H et du dephasage du au depointage L2 = 50 ; 1/2 largeur a mi puissance (degres). Lr = !pi/180 * L2 dteta = acos(cos(ah_dep) * cos(delta)^2 + sin(delta)^2) ; angle entre les axes de antennes pointees et les axes des anten- ; nes depointees. lobe = 1 - 0.5 * (dteta/Lr)^2 if (n_image eq 1) then begin print, ' Debut de correction du lobe des antennes H ' + $ 'depointees :' ch_format = "(8x, 'angle de depointage =', f6.1, ' deg " + $ "(>0 pour W)')" print, format=ch_format, 180/!pi * ah_dep ch_format = "(8x, 'valeur lobe depointe =', f7.2)" print, format=ch_format, lobe endif ; Calcul du dephasage de pointage ; Calcul algebrique du 20 nov 02 : on admet que le point ou la ; phase du rayonnement incident est egale a celle du signal qui ; commence sa propagation guidee dans le cable est voisin du ; dipole. En appellant e l'ecart entre ce point et l'intersec- ; tion des axes de rotation en angle horaire et en declinaison, ; le dephasage de depointage phi_dep (attribu'e a 'antenne de- ; pointee et qui s'ajoute a la phase instrumentale qui resulte ; des inegalites de longueur des cables de connexion au corre- ; lateur et des differences des distances focale) est : ; phi_dep = - 2*pi*e/lambda * ah_dep^2 * cosd^2 ; Il est toujours negatif puisque le depointage recule un peu ; l'antenne de sa position pointee. Il est evidemment quadratique ; puisque l'antenne se depointe sur un cercle tangent tangent au ; plan d'onde incident. ; Changer e0, e1, e2 dans CORR_ROY_DEP_NP et CORR_ROY_DEP_P. ; e0 determin'e le 9 sep 03, utilisant la recalibration du 26 aug ; 03 (sans depointage) pour le cygne du 26 aug 03 (depointe) ; e0 = 0.15 ; en metres, e pour 300 MHz. 0.2, 0.8 ? ; e1 = 0 ; provisoire ; e2 = 0 ; ---------- ; ef = e0 + e1 * (freq - 300) / 150 + e2 * ((freq - 300) / 150)^2 ; ef est calcule comme un developpement limite par rapport a une ; variable de frequence reduite (freq - 300) / 150 qui est sans ; dimension. ; Ainsi e1 et e2 soient aussi exprimes en metres. On s'attend a ce ; qu'ils soienr nettement plus petits que e0. ; Valeurs (metres) de ef selon resultats du 9 sep 03 (voir CORR_DEP.TXT) ; utilisant la recalibration du cygne du 26 aug 03 (point'e) sur ; le cygne du 31 aug 03 (depointage stabilise apres 17:40) ; freq 151 164 237 327 411 432 ; ef 0.5 0.4 0.4 -0.4 0.15 0.15 ; Valeurs de ef (metres) avec Cygne du 22 jun 03 (recalib a 16:15, quand ; le depointage est nul, avec ah_dep forc'e a 0 dans CALIBRATION ; (il est delare 90 min E dans l'entete). ; freq 151 164 237 327 411 432 ; ef xxx 0.4 0.25 0.35 0.10 0.10 ; Valeurs adoptees (metres) pour ef if (abs(freq - 151) lt 2) then ef = 0.5 ; 151 if (abs(freq - 164) lt 2) then ef = 0.40 if (abs(freq - 237) lt 2) then ef = 0.25 ; 237 if (abs(freq - 327) lt 2) then ef = -0.35 if (abs(freq - 411) lt 2) then ef = 0.10 ; 411 if (abs(freq - 432) lt 2) then ef = 0.10 ac = 3e8 ; vitesse lumiere (m/sec). lambda = ac / (freq * 1e6) phi_dep = - 2*!pi * ef / lambda * (ah_dep * cos(delta))^2 phi_sup = 0 ; 15 ; en degres. 0 SAUF POUR ESSAIS. phi_dep = phi_dep + !pi/180 * phi_sup i_c = complex (0, 1) lobe = lobe * exp(i_c * phi_dep) ch_format = "(8x, 'phase de depointage =', i4, ' deg (s ajoute" +$ " a la phase des antennes H)')" if (n_image eq 1) then print, format=ch_format, nint(180/!pi * phi_dep) lobe_H = lobe ; lobe_H notation inutilsee par ailleurs. ; Correction des harmoniques impliquant les antennes H ; On saute partout H8 = NS0_ew qui n'est pas depointee. for j = 0, 24 do begin ; NS0 a NS23 et NS45. harm_N( 2 + 18*j) = harm_N( 2 + 18*j : 8 + 18*j) / lobe ; H 1- 7 harm_N(10 + 18*j) = harm_N(10 + 18*j : 17 + 18*j) / lobe ; H 9-16 endfor harm_N(488) = harm_N(488 : 494) / lobe ; E2 avec H1 a H7. harm_N(496) = harm_N(496 : 503) / lobe ; -- ---- H9 a H16. harm_N(506) = harm_N(506 : 512) / lobe ; E1 ---- H1 a H7. harm_N(514) = harm_N(514 : 521) / lobe ; -- ---- H9 a H16. harm_N(524) = harm_N(524 : 530) / lobe ; E0 ---- H1 a H7. harm_N(532) = harm_N(532 : 539) / lobe ; -- ---- H9 a H16. if (n_image eq 1) then $ print, ' Fin de correction du lobe des antennes H depointees' endif ; Fin de correction du lobe des antennes H et du dephasage de depointage ; Poursuite de CORR_ROT_DEP_NP ; CORRECTION DU NIVEAU DES HARMONIQUES NON POLAR LIEE A LA ROTATION DES DIPOLES ; Correction des harmoniques non polar pour les sources de controle faites ; avant la refonte du temps reel pour supprimer les modifications ; (fausses) de gain et "corriger" rotation et depoinrage (oct 03 ?) : ; . rotew = 0, rotns = 1, ; . a_H_dep non nul et >0 vers ouest, rotation due au depointage ; . corrections incorrectes faites pendant l'observation ; Le 29 avr 03 on supprime la condition (abs(a_H_dep) gt 0.1) pour ; pouvoir traiter des observations non depointees destinees a la ; mise au point. ; if ((rotew eq 0) and (rotns eq 1) and (abs(a_H_dep) gt 0.1) $ if ((rotew eq 0) and (rotns eq 1) $ and (jul_obs lt jul_corr_gain)) then begin if (n_image eq 1) then begin print, $ ' Debut correction des harm non polar sources de controle' + $ ' anterieures a la' print, ' refonte du temps reel (faite le 16 avr 2003).' endif ; Rappel harmoniques non polar : ; NS0_ns avec E2, E1 : diviser par 1 / cosa. ; NS0_ns ---- H1 a H16 : ----------- cos(45+a) / (cosa*cos45) ; NS1-45 ---- E2, E1 : ----------- 1 / cosa^2. ; NS1-45 ---- H : ----------- 1 / cosa ; NS1-45 ---- NS0_ew : ----------- 1 / cosa ; NS45 ---- NS0_ns : ----------- 1 / cosa ; NS45 ---- NS1 a 23 : ------------ 1 / cosa^2 ; E210 ---- E2 et E1 : ------------ 1 / cosa^2 ; E210 ---- H1 a H16 : ------------ 1 / cosa ; NS8 ---- NS0_ns : ------------ 1 / cosa ; NS8 ---- NS1-NS17 : ------------ 1 / cosa^2 ; NS0_ns ---- NS7-NS45 : ------------ 1 / cosa cosa = cos( a_H_dep) cos45 = cos(!pi/4 ) cos45a = cos(!pi/4 + a_H_dep) harm_N(0) = harm_N(0: 1) * cosa ; NS0_ns avec E2 E1 harm_N(2) = harm_N(2:17) * (cosa * cos45) / cos45a ; NS0_ns H1 a H16 for j = 1, 24 do begin ; NS1-45 avec E2, E1 et ; ---- H1, H16, NS0_ew harm_N(18*j ) = harm_N(18*j : 18*j + 1) * cosa^2 harm_N(18*j + 2) = harm_N(18*j + 2 : 18*j + 17) * cosa endfor harm_N(450) = harm_N(450 ) * cosa ; NS45 avec NS0_ns harm_N(451) = harm_N(451:485) * cosa^2 ; ---- ---- NS1 a NS23 harm_N(486) = harm_N(486:487) * cosa^2 ; E2 ---- E2 et E1 harm_N(488) = harm_N(488:503) * cosa ; -- ---- H1 a H16 harm_N(504) = harm_N(504:505) * cosa^2 ; E1 ---- E2 et E1 harm_N(506) = harm_N(506:521) * cosa ; -- ---- H1 a H16 harm_N(522) = harm_N(522:523) * cosa^2 ; E0 ---- E2 et E1 harm_N(524) = harm_N(524:539) * cosa ; -- ---- H1 a H16 harm_N(540) = harm_N(540 ) * cosa ; NS8 ---- NS0_ns harm_N(541) = harm_N(541:557) * cosa^2 ; NS8 ---- NS1 a NS17 harm_N(558) = harm_N(558:575) * cosa ; NS0_ns ---- NS7 a NS45 if (n_image eq 1) then $ print, ' Fin de correction des harmoniques non polar.' endif ; fin de correction des harmoniques non polar des anciennes ; sources de controle. ; Correction des harmoniques non polar pour les sources de controle posterieu- ; res a la refonte du temps reel (16 avr 03) : ; . rotew = 0, rotns = 1, ; . a_H_dep non nul, >0 vers ouest, ; . sans corrections pendant l'observation. ; . antennes AA apres janvier 2004. ; Le 29 avr 03 on supprime la condition (abs(a_H_dep) gt 0.1) pour ; pouvoir traiter des observations non depointees destinees a la ; mise au point. i_saut = 0 ; 0 sauf pour essais ; if ((rotew eq 0) and (rotns eq 1) and (abs(a_H_dep) gt 0.1) and $ if ((rotew eq 0) and (rotns eq 1) and (jul_obs ge jul_corr_gain) $ and (i_saut eq 0) ) then begin if (n_image eq 1) then begin print, ' Debut correction harm non polar sources de ' + $ 'controle posterieures a la ' print, ' refonte du temps reel (16 avr 2003) : ' ch_format ="(' rotew = 0, rotns = 1, antennes H " + $ " depointage =', i4, ' deg.')" print, format=ch_format, nint(180/!pi * ah_dep) print, ' (impression par CORR_ROT_DEP_NP dans ' + $ 'RH_CORR_ANTENNES)' endif ; Rappel des notations : ; . a rotation des dipoles du reseau H du au depointage ; sina = sin(a) cosa = cos(a) ; . sinns = sin(a_NS0) cosns = cos(a_NS0) ; . sinew = sin(a_H2 ) cosew = cos(a_H2 ) (inutilises ici). ; On ne fait plus figurer lobe_H puisque la correction a ete faite ; plus haut. ; ; Non polar, harmoniques : ; . NS0_ns avec E2, E1 : diviser par cosns ; . ------ ---- H1 a H16 : ------- --- cos(-a_NS0 + a) = cosb ; . NS1-45 ---- E2, E1 : inchanges ; . NS1-45 ---- H1 a H16 : ------- --- cosa ; . NS1-45 ---- NS0_ew : ------- --- cosns ; . NS45 ---- NS0_ns : ----------- cosns ; . NS45 ---- NS1 a NS23 : inchanges ; . E210 ---- H1 a H16 : ----------- cosa ; . E210 ---- NS0_ew : ----------- cosns ; . NS8 ---- NS0_ns : ----------- cosns ; . NS8 ---- NS1 a NS17 : inchanges ; . NS0_ns ---- NS7 a NS45 : ----------- cosns cosns = cos(a_NS0) cosa = cos(a_H_dep) ; a_H_dep rotation de depointsge (a ne cosb = cos(-a_NS0 + a_H_dep) ; pas confondre avec ah_dep). if (i_corr_rot_NS0 eq 0) then begin ; essais seulement. cosns = 1 cosb = cos(a_H_dep) endif harm_N(0) = harm_N(0: 1) / cosns ; NS0_ns avec E2, E1. harm_N(2) = harm_N(2:17) / cosb ; NS0_ns avec H1 a H16 for j = 1, 24 do begin ; NS1-45 ---- H1 a H7 harm_N(18*j + 2) = harm_N(18*j + 2 : 18*j + 8) / cosa endfor for j = 1, 24 do begin ; NS1-45 ---- NS0_ew harm_N(18*j + 9) = harm_N(18*j + 9) / cosns endfor for j = 1, 24 do begin ; NS1-45 ---- H9 a H16 harm_N(18*j + 10) = harm_N(18*j + 10 : 18*j + 17) / cosa endfor harm_N(450) = harm_N(450 ) / cosns ; NS45 avec NS0_ns harm_N(488) = harm_N(488:494) / cosa ; E2 ---- H1 a H7 harm_N(495) = harm_N(495 ) / cosns ; E2 ---- NS0_ew harm_N(496) = harm_N(496:503) / cosa ; E2 ---- H9 a H16 harm_N(506) = harm_N(506:512) / cosa ; E1 ---- H1 a H7 harm_N(513) = harm_N(513 ) / cosns ; E1 ---- NS0_ew harm_N(514) = harm_N(514:521) / cosa ; E1 ---- H9 a H16 harm_N(524) = harm_N(524:530) / cosa ; E0 ---- H1 a H7 harm_N(531) = harm_N(531 ) / cosns ; E0 ---- NS0_ew harm_N(532) = harm_N(532:539) / cosa ; E0 ---- H9 a H16 harm_N(540) = harm_N(540 ) / cosns ; NS8 ---- NS0_ns harm_N(558) = harm_N(558:575) / cosns ; NS0_ns ---- NS7 a NS45 if (nbre_harm gt 576) then begin harm_N(576) = harm_N(576) / cosns ; AA1 avec NS0_ns harm_N(594) = harm_N(594) / cosns ; AA2 ----------- harm_N(612) = harm_N(612) / cosns ; AA3 ----------- harm_N(630) = harm_N(630) / cosns ; AA4 ----------- endif ; Poursuite de CORR_ROT_DEP_NP ; CORRECTIONS SUPPLEMENTAIRES, EXPERIMENTALES ET PRAGMATIQUES de harm_N_np, ; purement internes a CORR_ROT_DEP_NP ; essais du 29 avril 03 sur Cygne du 25 avril 03) i_c = complex(0, 1) ; NS0_ns avec les EW i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 180 ; 180 => OK, sauf a 151 ou il faut 0. ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de NS0_ns avec les EW')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(1) = e_iphi * harm_N(1:17) ; avec E1, H1 a H16 endif ; semble ok avec i_c. ; NS0_ns avec NS7 a NS45 i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 90 ; 90 OK. ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de NS0_ns avec NS7 a 23')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(573) = e_iphi * harm_N(573 : 575) ; avec NS7 a NS9 harm_N(558) = e_iphi * harm_N(558 : 571) ; ---- NS10 a NS23 endif ; E2 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 180 ; sans conclusion ch_format = $ "(6x,'Addition phase supplementaire', " + $ "i4, ' deg aux harm de E2 avec les H')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(488) = e_iphi * harm_N(488 : 503) endif ; E1 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 30 + 180 ; 180 meilleur compromis pour toutes es freq. ; 164 : 210 ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de E1 avec les H')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(506) = e_iphi * harm_N(506 : 521) harm_N(513) = - harm_N(513) ; chgt signe avec NS0_ew OK. endif ; E0 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 55 + 180 ; 180 meilleur compromis a toutes les freq. ; 164 : 235 deg ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de E0 avec les H')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(524) = e_iphi * harm_N(524 : 539) ; E0 endif ; NS45 avec les NS i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 30 ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de NS45 avec les NS')" if (n_image eq 1) then print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N(450) = e_iphi * harm_N(450 : 485) ; NS45 endif if (n_image eq 1) then $ print, ' Fin de correction des harmoniques non polar.' endif ; fin de correction pour les harm non polar des sources de con- ; trole posterieures a la refonte du temps reel (16 avr 03, ; suppression des corrections de gains qui tenaient (mal) ; compte des rotations et depointages). ; Poursuite de CORR_ROT_DEP_NP ; Correction des harmoniques non polar pour les sources destinees a faire une ; calibration, faites : ; . avant la refonte du temps reel (16 avr 03) mais en decouplant micro ; pointage et maxion (type_obs=2 dans RH_DP_CALIB) ; . apres la refonte du temps reel (16 avr 03) ; Les conditions sont : ; . rotew = 1, rotns = 1, a_H_dep = 0 , ; . correction du mouvement diurne, ; . pas de modification des gains complexes a l'initialisation de ; l'observation pour "tenir compte" de la rotation des dipoles. ; . antennes AA apres janvier 2004. ; Il y aura deux cas : ; . a_NS0 = -45 avant fev 03, ; . a_NS0 = +45 apres fev 03 (modif de NS0). ; Rem : il n'y a pas d'observations avec les H depointees et H2 et H4 ; tournees. ; Rappel des notations : ; . a rotation des dipoles du reseau H du au depointage ; sina = sin(a) cosa = cos(a) ; . sinns = sin(a_NS0) cosns = cos(a_NS0) ; . sinew = sin(a_H2 ) cosew = cos(a_H2 ) . ; ; Harmoniques non polar : ; . NS0_ns avec E2 E1 H1 : diviser par cosns ; . ----- ---- H2 : inchange, (nul ou rien a corriger) ; . ----- ---- H3 : diviser par cosns ; . ----- ---- H4 : inchange, (nul ou rien a corriger) ; . ----- ---- H5 a H16 : diviser par cosns ; . NS1-45 avec E2 E1 H1 : inchange ; . ----- ---- H2 : diviser par cosew ; . ----- ---- H3 : inchange ; . ----- ---- H4 : diviser par cosew ; . ----- ---- H5 a H7 : inchanges ; . ----- ---- NS0_ew : diviser par cosns ; . ----- ---- H9 a H16 : inchanges ; . NS45 ---- NS0_ns : ----------- cosns ; . NS45 ---- NS1-23 : inchanges ; . E210 ---- H2 et H4 : diviser par cosew ; . E210 ---- NS0_ew : ----------- cosns ; . NS8 ---- NS0_ns : ----------- cosns ; . NS0_ns ---- NS1-45 : ----------- cosns i_saut = 0 ; 0 sauf pour essais. if ((rotew eq 1) and (rotns eq 1) and (abs(a_H_dep) lt 0.05) and $ (i_saut eq 0)) then begin ; Rem : il n'y a pas lieu de distinguer les observations de cali- ; bration de transition (pour lesquelles rotew=rotns dans ; l'en-tete du fichier, mais sont ensuite remis a 1) des ; observations de calibration definitives (ou rotew=rotns=1 ; dans l'entete), car elles sont indiscernables a ce stade ; => jul_corr_gain n'intervient pas. ; Il y a seulement une question garde-fou dans RH_DP_CALIB. ; Rem : on admet que ce cas est reconnu par l'absence de depointage ; du reseau EW et simultanement roew = rotns = 1 . if (n_image eq 1) then begin print, ' Debut correction harm non polar sources de ' + $ 'calibration posterieures a la' print, ' refonte du temps reel (16 avr 2003) :' print, ' . rotew = 1, rotns = 1, a_H_dep = 0' print, ' . pas de modification des gains complexes' +$ ' a l''initialisation' endif cosns = cos(a_NS0) cosew2 = cos(a_H2) cosew4 = cos(a_H4) if (i_corr_rot_NS0 eq 0) then cosns = 1 ; essais seulement. harm_N(0) = harm_N(0: 2) / cosns ; NS0_ns avec E2, E1, H1. harm_N(4) = harm_N(4 ) / cosns ; ------------ H3 harm_N(6) = harm_N(6:17) / cosns ; ------------ H5 a H16 for j = 1, 24 do begin ; NS1-45 avec H2, H4 et NS0_ew harm_N(18*j + 3) = harm_N(18*j + 3) / cosew2 ; H2 harm_N(18*j + 5) = harm_N(18*j + 5) / cosew4 ; H4 harm_N(18*j + 9) = harm_N(18*j + 9) / cosns ; NS0_ew endfor harm_N(450) = harm_N(450) / cosns ; NS45 avec NS0_ns harm_N(489) = harm_N(489) / cosew2 ; E2 ---- H2 harm_N(491) = harm_N(491) / cosew4 ; -- ---- H4 harm_N(495) = harm_N(495) / cosns ; -- ---- NS0_ew harm_N(507) = harm_N(507) / cosew2 ; E1 ---- H2 harm_N(509) = harm_N(509) / cosew4 ; -- ---- H4 harm_N(513) = harm_N(513) / cosns ; -- ---- NS0_ew harm_N(525) = harm_N(525) / cosew2 ; E0 ---- H2 harm_N(527) = harm_N(527) / cosew4 ; -- ---- H4 harm_N(531) = harm_N(531) / cosns ; -- ---- NS0_ew harm_N(540) = harm_N(540) / cosns ; NS8 ---- NS0_ns harm_N(558) = harm_N(558:575) / cosns ; NS0_ns ---- NS7 a 45 if (nbre_harm gt 576) then begin harm_N(576) = harm_N(576) / cosns ; AA1 avec NS0_ns harm_N(594) = harm_N(594) / cosns ; AA2 ----------- harm_N(612) = harm_N(612) / cosns ; AA3 ----------- harm_N(630) = harm_N(630) / cosns ; AA4 ----------- endif if (n_image eq 1) then $ print, ' Fin de correction des harmoniques non polar.' endif ; fin de correction des harmoniques des sources de calibration ; posterieures a nov 02. end ; fin de CORR_ROT_DEP_NP. ;______________________________________________________________________________ PRO CORR_ROT_DEP_P, $ n_image, $ ; entree date_obs, type_obs, type_calib, $ ; ------ i_corr_rot_NS0, $ ; ------ rotew, rotns, ah_dep, delta, freq, $ ; ------ (rads, MHz). harm_N_p, $ ; ------ et sortie. a_H2, a_NS0 ; sortie (radians), ; Creation 10 avril 03. ; Modifications : ; 03 avr 11: - ajout du calcul du lobe repris de CORR_ROT_DEP_NP de facon a ; utiliser la procedure de facon independante de cette derniere. ; 04 jan 14: - extension aux antennes AA. ; But : corriger les harmoniques polar de la rotation des dipoles et/ou du ; depointage des antennes lunettes. ; Notations : ; harm_N_p la procedure etant reporise de CALIBRATION_P, qui utilise ; harm_N_np et harm_N_p, le suffixe _p est conserve pour ne ; pas avoir a retoucher de nombreuses lignes. ; CALIBRATION n'utilise que harm_N_np et le suffixe _np n'appa- ; rait pas danx CORR_ROT_DEP_NP . ; Voir commenraires generaux sur la position du probleme dans CORR_ROT_DEP_NP. ; ; Distinction entre les differentes observations de calibration et de controle ; (reprise de CALIBRATION) ; Rem : corriger date_rot et date_corr_gain dans CORR_ROT_DEP_NP. nbre_harm = n_elements(harm_N_p) date_rot = [10, 02, 2003] ; a_NS0 = +45 apres cette date. date_corr_gain = [16, 04, 2003] ; apres cette date plus de modification des tables de gain pour corri- ; ger (incorrectement) la rotation et le depointage des antennes. ; Definition identique dans CORR_ROT_DEP_NP . jul_corr_gain = julday(date_corr_gain(1), date_corr_gain(0), $ date_corr_gain(2)) jul_rot = julday(date_rot(1), date_rot(0), date_rot(2)) jul_obs = julday(date_obs(1), date_obs(0), date_obs(2)) if (rotew eq 0) then begin a_H2 = 0 a_H4 = 0 endif if (rotns eq 0) then $ a_NS0 = 0 if (rotew eq 1) then begin a_H2 = !pi/180 * 45 ; >0 = sens direct vu de derriere l'antenne. a_H4 = !pi/180 * 45 endif if (rotns eq 1) then begin if(jul_obs lt jul_rot) then a_NS0 = - !pi/180 * 45 if(jul_obs ge jul_rot) then a_NS0 = !pi/180 * 45 ; P. Picard sa promesse debut fev 03. endif a_H_dep = asin(sin(delta) * sin(ah_dep)) ; radians. ; >0 pour un depointage W. a_H_dep est non nul pour les sources de ; controle, et dans ce cas rotew = 0. a_H_dep_deg = 180/!pi * a_H_dep ch_format = "(' rotation des dipoles des H par depointage =', " + $ "f6.2, ' degres (>0 pour ')" if (n_image eq 1) then begin print, format=ch_format, a_H_dep_deg print, ' sens direct vu de derriere)' if (type_calib eq 1) then begin ch_format = "(' rotation de H2 H4 et NS0 : " + $ " rotew =', i2, ' rotns =', i2)" print, format = ch_format, rotew, rotns endif if (type_calib eq 2) then $ print, ' rotation de H2 H4 et NS0 non indiquees' + $ ' dans entete' endif ; Fin de distinction entre les differentes observations calibration / controle ; Rangement des harmoniques dans harm_N ; NS0 avec E2, E1, H1 a H16 0 a 17 ; NS1 ---- ---------------------- 18 a 35 ; NS8 ---- ---------------------- 144 a 161 ; NS23 ---- ---------------------- 414 a 431 ; NS45 ---- ---------------------- 432 a 449 ; jusqu'au 7 oct 98 inclus: ; E0 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; a partir du 8 oct 98 inclus: ; NS45 ---- NS0 a NS17 450 a 467 ; -- ---- NS10 a NS23 468 a 481 ; -- ---- NS45 482 ; -- ---- NS7 a NS9 483 a 485 ; E2 ---- E2, E1, H1 a H16 486 a 503 ; E1 ---- E2, E1, H1 a H16 504 a 521 ; E0 ---- E2, E1, H1 a H16 522 a 539 ; NS8 ---- NS0 a NS17 540 a 557 ; NS0 ---- NS10 a NS23 et NS45 558 a 572 ; --- ---- NS7 a NS9 573 a 575 ; AA1 ---- NS0 a NS17 576 a 593 ; AA2 ---- ---------- 594 a 611 ; AA3 ---- ---------- 612 a 629 ; AA4 ---- ---------- 630 a 647 ; Poursuite de CORR_ROT_DEP_P ; Correction de la perte de niveau des harmoniques polar, due au lobe des ; antennes H si elles sont depointees ; On represente la coupe du lobe en angle horaire des antennes H par ; une fonction quadratique dont la 1/2 largeur a mi puissance est ; L2 (en degres). ; On suppose que le dephasage de depointage est du a la variation de ; la longueur des bases. Pour la calculer on suppose que le centre ; de phase des antennes H coincide avec leur dipole, donc situe a ; une distance D de l'inyersection des axes de rotation. i_saut = 0 ; 0 sauf pour essais. if ((i_saut eq 0) and (abs(ah_dep) gt 0.1)) then begin ; en principe : abs(ah_dep) gt 0 . ; Calcul du lobe des antennes H et du dephasage du au depointage L2 = 50 ; 1/2 largeur a mi puissance (degres). Lr = !pi/180 * L2 dteta = acos(cos(ah_dep) * cos(delta)^2 + sin(delta)^2) ; angle entre les axes de antennes pointees et les axes des anten- ; nes depointees. lobe = 1 - 0.5 * (dteta/Lr)^2 print, ' Debut de correction du lobe des antennes H depointees :' ch_format = "(8x, 'angle de depointage =', f6.1, ' deg " + $ "(>0 pour W)')" print, format=ch_format, 180/!pi * ah_dep ch_format = "(8x, 'valeur lobe depointe =', f7.2)" print, format=ch_format, lobe ; Calcul du dephasage de pointage ; Calcul algebrique du 20 nov 02 : on admet que le point ou la ; phase du rayonnement incident est egale a celle du signal qui ; commence sa propagation guidee dans le cable est voisin du ; dipole. En appellant e l'ecart entre ce point et l'intersection ; des axes de rotation en angle horaire et en declinaison, le ; dephasage de depointage phi_dep (attribu'e a 'antenne depointee ; et qui s'ajoute a la phase instrumentale qui resulte des inega- ; lites de longueur des cables de connexion au correlateur et des ; differences des distances focale) est : ; phi_dep = - 2*pi*e/lambda * ah_dep^2 * cosd^2 ; Il est toujours negatif puisque le depointage recule un peu ; l'antenne de sa position pointee. Il est evidemment quadratique ; puisque l'antenne se depointe sur un cercle tangent tangent au ; plan d'onde incident. ; Changer e0, E1, e2 dans CORR_ROY_DEP_NP et CORR_ROY_DEP_P. ; e0 = 0.0 ; en metres, e pour 300 MHz. 0.8 ? ; e1 = 0 ; provisoire ; e2 = 0 ; ---------- ; ef = e0 + e1 * (freq - 300) / 150 + e2 * ((freq - 300) / 150)^2 ; ef est calcule comme un developpement limite par rapport a une ; variable de frequence reduite (freq - 300) / 150 qui est sans ; dimension. ; Ainsi e1 et e2 soient aussi exprimes en metres. On s'attend a ce ; qu'ils soienr nettement plus petits que e0. ; Calcul de ef selon resultats du 9 sep 03 (voir dans CORR_DEP.TXT) if (abs(freq - 151) lt 2) then ef = 0.5 if (abs(freq - 164) lt 2) then ef = 0.4 if (abs(freq - 237) lt 2) then ef = 0.4 if (abs(freq - 327) lt 2) then ef = -0.4 if (abs(freq - 411) lt 2) then ef = 0.15 if (abs(freq - 432) lt 2) then ef = 0.15 ac = 3e8 ; vitesse lumiere (m/sec). lambda = ac / (freq * 1e6) phi_dep = - 2*!pi * ef / lambda * (ah_dep * cos(delta))^2 phi_sup = 0 ; en degres. 0 SAUF POUR ESSAIS. phi_dep = phi_dep + !pi/180 * phi_sup i_c = complex (0, 1) lobe = lobe * exp(i_c * phi_dep) ch_format = "(8x, 'phase de depointage =', i4, ' deg (s ajoute" +$ " a la phase des antennes H)')" print, format=ch_format, nint(180/!pi * phi_dep) lobe_H = lobe ; Correction des harmoniques ; On saute partout H8 = NS0_ew qui n'est pas depointee. for j = 0, 24 do begin ; NS0 a NS23 et NS45. ; boucle : H1 a H7 et H9 a H16. harm_N_p( 2 + 18*j) = harm_N_p( 2 + 18*j : 8 + 18*j) / lobe_H harm_N_p(10 + 18*j) = harm_N_p(10 + 18*j : 17 + 18*j) / lobe_H endfor harm_N_p(488) = harm_N_p(488 : 494) / lobe_H ; E2 avec H1 a H7. harm_N_p(496) = harm_N_p(496 : 503) / lobe_H ; -- ---- H9 a H16. harm_N_p(506) = harm_N_p(506 : 512) / lobe_H ; E1 ---- H1 a H7. harm_N_p(514) = harm_N_p(514 : 521) / lobe_H ; -- ---- H9 a H16. harm_N_p(524) = harm_N_p(524 : 530) / lobe_H ; E0 ---- H1 a H7. harm_N_p(532) = harm_N_p(532 : 539) / lobe_H ; -- ---- H9 a H16. endif ; Fin de correction du lobe des antennes H et du dephasage de depointage ; Poursuite de CORR_ROT_DEP_P ; CORRECTION DU NIVEAU DES HARMONIQUES POLAR LIEE A LA ROTATION DES DIPOLES ; Correction des harmoniques polar pour les sources de controle faites ; avant la refonte du temps reel pour supprimer les modifications ; (fausses) de gain et "corriger" rotation et depointage (oct 03 ?) : ; . rotew = 0, rotns = 1, ; . a_H_dep non nul et >0 vers ouest, ; . corrections incorrectes faites pendant l'observation ; . pas d'antennes AA ; Le 29 avr 03 on supprime la condition (abs(a_H_dep) gt 0.1) pour ; pouvoir traiter des observations non depointees destinees a la ; mise au point. Remis en service le 30 sept 03 pour traiter la polar ; d'observations pointees (sans modifier ici les harm polar), pour ; mesurer la position des dipoles des antennes H. if ((rotew eq 0) and (rotns eq 1) and (abs(a_H_dep) gt 0.05) $ ; if ((rotew eq 0) and (rotns eq 1) $ and (jul_obs lt jul_corr_gain) and (type_obs eq 1) ) then begin ; La condition (type_obs eq 1), qui exclut les observations de ; calibration de transition (H2 et H4 tournees mais rotew = rotns ; = 1 dans l'entete de fichier d'observation) est superflue. print, ' Debut correction des harm polar pour la rotation des' + $ ' dipoles pour sources' print, ' de controle anterieures a la refonte du temps ' + $ 'reel (16 avr 2003).' ; Rappel (repris de CORR_ROT_DEP_NP) ; . NS0_ns avec E2, E1 : diviser par - 1 / cosa ; . NS0_ns ---- les H : ----------- - sin(45+a) / (sin45*cosa) ; . NS1-45 ---- E2, E1 : ----------- - i / (sina*cosa) mais nuls ; . NS1-45 ---- les H : ----------- 1 / cosa ; . NS1-45 ---- NS0_ew : ----------- - 1 / sina ; . NS45 ---- NS0_ns : ----------- - 1 / sina ; . NS45 ---- NS1-23 : nuls ; . E210 ---- E2, E1 : ---- ; . E210 ---- H1 H16 : diviser par 1 / cosa ; . E210 ---- NS0_ew : ----------- - 1 / sina ; . NS8 ---- NS0_ns : ----------- - 1 / sina ; . NS0_ns ---- NS7-45 : ----------- - 1 / cosa cosa = cos( a_H_dep) ; a_H_dep : totation dipole antenne H. sina = sin( a_H_dep) sin45 = sin(!pi/4 ) sin45a = sin(!pi/4 + a_H_dep) i_c = complex(0, 1) harm_N_p(0) = harm_N_p(0: 1) * (-cosa) ; NS0_ns avec E2 E1 harm_N_p(2) = harm_N_p(2:17) * (-sin45 *cosa) / sin45a ; NS0_ns H1-16 for j = 1, 24 do begin ; NS1-45 avec E2, E1 et ; ---- H1, H16, NS0_ew harm_N_p(18*j ) = harm_N_p(18*j : 18*j + 1) * i_c*sina*cosa harm_N_p(18*j + 2) = harm_N_p(18*j + 2 : 18*j + 8) * cosa harm_N_p(18*j + 9) = harm_N_p(18*j + 9 ) * (-sina) harm_N_p(18*j +10) = harm_N_p(18*j +10 : 18*j + 17) * cosa endfor harm_N_p(450) = harm_N_p(450 ) * (-sina) ; NS45 avec NS0_ns harm_N_p(488) = harm_N_p(488:494) * cosa ; E2 avec H1 a H7 harm_N_p(495) = harm_N_p(495 ) * (-sina) ; -- ---- NS0_ew harm_N_p(496) = harm_N_p(496:503) * cosa ; -- ---- H9 a H16 harm_N_p(506) = harm_N_p(506:512) * cosa ; E1 avec H1 a H7 harm_N_p(513) = harm_N_p(513 ) * (-sina) ; -- ---- NS0_ew harm_N_p(514) = harm_N_p(514:521) * cosa ; -- ---- H9 a H16 harm_N_p(524) = harm_N_p(524:530) * cosa ; E0 avec H1 a H7 harm_N_p(532) = harm_N_p(532:539) * (-sina) ; -- ---- NS0_ew harm_N_p(532) = harm_N_p(532:539) * cosa ; -- ---- H9 a H16 harm_N_p(540) = harm_N_p(540 ) * (-sina) ; NS8 avec NS0_ns harm_N_p(558) = harm_N_p(558:575) * (-cosa) ; NS0_ns ---- NS7-45 ; Rem : il n'y a pas d'antennes AA pour ces observations anciennes. ; CORRECTIONS SUPPLEMENTAIRES, EXPERIMENTALES ET PRAGMATIQUES de harm_N_p ; purement internes a CORR_ROT_DEP_P. ; Essais du 11 avril 03 sur Cygne du 9 avril 03) ; NS0_ns avec les EW i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 180 ; 180 => OK, sauf a 151 ou il faut 0. ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de NS0_ns avec les EW')" print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N_p(1) = e_iphi * harm_N_p(1:17) ; avec E1, H1 a H16 endif ; semble ok avec i_c. ; NS0_ns avec NS7 a NS45 i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 90 ; 90 OK. ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de NS0_ns avec NS7 a 23')" print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N_p(573) = e_iphi * harm_N_p(573 : 575) ; avec NS7 a NS9 harm_N_p(558) = e_iphi * harm_N_p(558 : 571) ; ---- NS10 a NS23 endif ; E2 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 180 ; sans conclusion ch_format = $ "(6x,'Addition phase supplementaire', " + $ "i4, ' deg aux harm de E2 avec les H')" print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N_p(488) = e_iphi * harm_N_p(488 : 503) endif ; E1 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 30 + 180 ; 180 meilleur compromis pour toutes es freq. ; 164 : 210 ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de E1 avec les H')" print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N_p(506) = e_iphi * harm_N_p(506 : 521) harm_N_p(513) = - harm_N_p(513) ; chgt signe avec NS0_ew OK. endif ; E0 avec les H i_cor_sup = 0 ; EN PRINCIPE 0 . if (i_cor_sup eq 1) then begin phi = 55 + 180 ; 180 meilleur compromis a toutes les freq. ; 164 : 235 deg ch_format = $ "(6x,'Addition phase supplementaire ', " + $ "i4, ' deg aux harm de E0 avec les H')" print, format=ch_format, phi e_iphi = exp(i_c * phi * !pi/180) harm_N_p(524) = e_iphi * harm_N_p(524 : 539) ; E0 endif print, ' Fin de correction des harmoniques polar.' endif ; fin de correction des harmoniques polar des anciennes ; sources de controle. ; Rem du 11 avril 03 sur le Cygne du 9 avril 03 : ; . NS0_ew enorme avec E0 mais normale avec E1 a 164 ; Poursuite de CORR_ROT_DEP_P ; Correction des harmoniques polar pour les sources de controle posterieures ; a la refonte du temps reel (16 avr 03) : ; . rotew = 0, rotns = 1, ; . a_H_dep non nul, >0 vers ouest, ; . sans corrections pendant l'observation. ; ; Rappel (repris de CORR_ROT_DEP_NP) : ; . a rotation des dipoles du reseau H du au depointage ; sina = sin(a) cosa = cos(a) ; . sinns = sin(a_NS0) cosns = cos(a_NS0) ; . sinew = sin(a_H2 ) cosew = cos(a_H2 ) (inutilises ici). ; Harmoniques polar (on ne fait plus figurer lobe_H puisque la correc- ; tion a ete faite plus haut) : ; . NS0_ns avec E2, E1 : diviser par -i sinns ; . ------ ---- H1 a H16 : ------- --- i sin(-a_NS0 + a) ; = i sinb ; . NS1-45 ---- E2, E1 : inchanges, nuls ; . NS1-45 ---- H1 a H16 : ------- --- i sina ; . NS1-45 ---- NS0_ew : ------- --- i sinns ; . NS45 ---- NS0_ns : ----------- i sinns ; . NS45 ---- NS1 a NS23 : inchanges, nuls ; . E210 ---- H1 a H16 : ----------- i sina ; . E210 ---- NS0_ew : ----------- i sinns ; . NS8 ---- NS0_ns : ----------- i sinns ; . NS8 ---- NS1 a NS17 : inchanges nuls ; . NS0_ns ---- NS7 a NS45 : ----------- -i sinns ; . AA1 2 3 4 -- NS0_ns : diviser par i sinns ; Le 29 avr 03 on supprime la condition (abs(a_H_dep) gt 0.1) pour ; pouvoir traiter des observations non depointees destinees a la ; mise au point. Remis en service le 30 sept 03 pour traiter la polar ; d'observations pointees (sans modifier ici les harm polar), pour ; mesurer la position des dipoles des antennes H. if ((rotew eq 0) and (rotns eq 1) and (abs(a_H_dep) gt 0.05) and $ ; if ((rotew eq 0) and (rotns eq 1) and $ (jul_obs ge jul_corr_gain) and (type_obs eq 1) ) then begin ; Rem : la condition (type_obs eq 1), qui exclut les observations ; de calibration de transition (antennes H tournees mais ; rotew = rotns = 1 dans l'entete) est superflue. ; print, ' Debut correction des harm polar pour la rotation des' + $ ' dipoles pour sources' print, ' de controle posterieures a la refonte du temps ' + $ 'reel (16 avr 2003) :' ch_format ="(' rotew = 0, rotns = 1, depointage " + $ "antennes H =', i4, ' deg')" print, format=ch_format, nint(180/!pi * ah_dep) ; Ajout d'un multiple de pi/2 a la phase pour E2 E1 E0 avec les H : . i_cor_sup = 0 ; EN PRINCIPE 0, sauf pour essais. if (i_cor_sup eq 1) then begin phi = (35 + 180) * !pi/180 ch_format = $ "(6x,'Attention addition phase supplementaire de', " + $ "i4, ' aux harm de E2 E1 E0 avec les H')" print, format=ch_format, phi e_iphi = exp(i_c * phi) harm_N_p(488) = e_iphi * harm_N_p(488 : 503) ; E2 harm_N_p(506) = e_iphi * harm_N_p(506 : 521) ; E1 harm_N_p(524) = e_iphi * harm_N_p(524 : 539) ; E0 endif sinns = sin(a_NS0) sina = sin(a_H_dep) sinb = sin(-a_NS0 + a_H_dep) sinew2 = sin(a_H2) sinew4 = sin(a_H4) if (i_corr_rot_NS0 eq 0) then begin ; essais seulement. sinns = 1 sinb = sin(a_H_dep) endif i_c = complex(0, 1) ; et non (1, 0) !! trouv'e le 1 jul 03 harm_N_p(0) = harm_N_p(0: 1) / (-i_c*sinns) ; NS0_ns avec E2, E1. harm_N_p(2) = harm_N_p(2:17) / ( i_c*sinb) ; NS0_ns avec H1 a H16 for j = 1, 24 do begin ; NS1-45 ---- H1 a H7 harm_N_p(18*j + 2) = harm_N_p(18*j + 2 : 18*j + 8) / (i_c*sina) endfor for j = 1, 24 do begin ; NS1-45 ---- NS0_ew harm_N_p(18*j + 9) = harm_N_p(18*j + 9) / (i_c*sinns) endfor for j = 1, 24 do begin ; NS1-45 ---- H9 a H16 harm_N_p(18*j + 10) = harm_N_p(18*j + 10 : 18*j + 17) / (i_c*sina) endfor harm_N_p(450) = harm_N_p(450 ) / (i_c*sinns) ; NS45 avec NS0_ns harm_N_p(488) = harm_N_p(488:494) / (i_c*sina ) ; E2 ---- H1 a H7 harm_N_p(495) = harm_N_p(495 ) / (i_c*sinns) ; -- ---- NS0_ew harm_N_p(496) = harm_N_p(496:503) / (i_c*sina ) ; -- ---- H9 a H16 harm_N_p(506) = harm_N_p(506:512) / (i_c*sina ) ; E1 ---- H1 a H7 harm_N_p(513) = harm_N_p(513 ) / (i_c*sinns) ; -- ---- NS0_ew harm_N_p(514) = harm_N_p(514:521) / (i_c*sina ) ; -- ---- H9 a H16 harm_N_p(524) = harm_N_p(524:530) / (i_c*sina ) ; E0 ---- H1 a H7 harm_N_p(531) = harm_N_p(531 ) / (i_c*sinns) ; -- ---- NS0_ew harm_N_p(532) = harm_N_p(532:539) / (i_c*sina ) ; -- ---- H9 a H16 harm_N_p(540) = harm_N_p(540 ) / (i_c*sinns) ; NS8 ---- NS0_ns harm_N_p(558) = harm_N_p(558:575) / (-i_c*sinns); NS0_ns ---- NS7 a 45 if (nbre_harm gt 576) then begin harm_N_p(576) = harm_N_p(576) / (i_c*sinns) ; AA1 avec NS0_ns harm_N_p(594) = harm_N_p(594) / (i_c*sinns) ; AA2 ----------- harm_N_p(612) = harm_N_p(612) / (i_c*sinns) ; AA3 ----------- harm_N_p(630) = harm_N_p(630) / (i_c*sinns) ; AA4 ----------- endif print, ' Fin de correction des harmoniques polar.' endif ; fin de correction pour les harm non polar des sources de con- ; trole posterieures a nov 02 (rotew=rotns=0, ; Poursuite de CORR_ROT_DEP_P ; Correction des harmoniques polar pour les sources de calibration faites : ; . avant la refonte du temps reel (16 avr 03) mais en decouplant micro ; pointage et maxion (type_obs=2 dans RH_DP_CALIB) ; . apres la refonte du temps reel (16 avr 03) ; Les conditions sont : ; . rotew = 1, rotns = 1, a_H_dep = 0 , ; . correction du mouvement diurne, ; . pas de modification des gains complexes a l'initialisation de ; l'observation pour "tenir compte" de la rotation des dipoles. ; Il y aura deux cas : ; . a_H2 = a_H4 = - a_NS0 = +45 avant fev 03, ; . a_H2 = a_H4 = a_NS0 = +45 apres fev 03 (modif de NS0). ; Rem : il n'y a pas d'observations avec les H depointees et H2 et H4 ; tournees. ; Rappel harmoniques polar : ; on pose sinew = sin(a_H2), et sinns = sin(a_NS0) ; . NS0_ns avec E2 E1 H1 : diviser par -i * sinns ; . ------ ---- H2 : ----------- i * sin(a_H2 - a_NS0) soit: ; i (actuel), puis rien (nul) ; . ------ ---- H3 : ----------- -i * sinns ; . ------ ---- H4 : ----------- i (actuel), puis rien (nul) ; . ------ ---- H5 a H16 : ----------- -i * sinns ; . NS1_45 ---- E2 E1 H1 : inchanges (nuls) ; . ------ ---- H2 : diviser par i * sinew ; . ------ ---- H3 ; inchange (nul) ; . ------ ---- H4 : diviser par i * sinew ; . ------ ---- H5 a H7 : inchanges (nuls) ; . ------ ---- NS0_ew : diviser par i * sinns ; . ------ ---- H9 a H16 : inchanges (nuls) ; . NS45 ---- NS0_ns : diviser par i * sinns ; . NS45 ---- NS1-23 : nuls, inchanges ; . E210 ---- H2 et H4 : diviser par i * sinew ; . E210 ---- NS0_ew : ----------- i * sinns ; . NS8 ---- NS0_ns : ----------- i * sinns ; . NS0_ns ---- NS1-45 : ----------- -i * sinns ; . AA1 2 3 4 --- NS0_ns : ----------- i * sinns if ((rotew eq 1) and (rotns eq 1) and (abs(a_H_dep) lt 0.05)) then begin ; Rem : il n'y a pas lieu de distinguer les observations de cali- ; bration de transition (pour lesquelles rotew=rotns=0 dans ; l'en-tete du fichier, mais sont ensuite remis a 1) des ; observations de calibration definitives (ou rotew=rotns=1 ; dans l'en-tete), car elles sont indiscernables a ce stade, ; => jul_corr_gain n'intervient pas. ; La question garde-fou sur le decouplage du maxion et du micro- ; pointage a deja ete posee dans RH_DP_CALIB. On ne la repose ; pas ici. ; print, ' Debut correction des harm polar pour la rotation des' + $ ' dipoles pour sources' print, ' de calibration posterieures a la refonte du temps ' + $ 'reel (16 avr 2003) :' print, ' rotew = 1, rotns = 1, a_H_dep = 0' print, ' pas de modification des gains ' + $ 'complexes a l''initialisation' sinew2 = sin(a_H2) sinew4 = sin(a_H4) sinns = sin(a_NS0) if (i_corr_rot_NS0 eq 0) then sinns = 1 ; essais seulement i_c = complex(0, 1) harm_N_p(0) = harm_N_p(0: 2) / (-i_c * sinns) ; NS0_ns avec E2 E1 H1 harm_N_p(3) = harm_N_p(3 ) / ( i_c ) ; ------------ H2 harm_N_p(4) = harm_N_p(4 ) / (-i_c * sinns) ; ------------ H3 harm_N_p(5) = harm_N_p(3 ) / ( i_c ) ; ------------ H4 harm_N_p(6) = harm_N_p(6:17) / (-i_c * sinns) ; ------------ H5 a H16 for j = 1, 24 do begin ; NS1-45 avec H2, H4 et NS0_ew harm_N_p(18*j + 3) = harm_N_p(18*j + 3) / (i_c * sinew2) ; H2 harm_N_p(18*j + 5) = harm_N_p(18*j + 5) / (i_c * sinew4) ; H4 harm_N_p(18*j + 9) = harm_N_p(18*j + 9) / (i_c * sinns ) ; NS0_ew endfor harm_N_p(450) = harm_N_p(450) / ( i_c * sinns) ; NS45 avec NS0_ns harm_N_p(489) = harm_N_p(489) / ( i_c * sinew2) ; E2 avec H2 harm_N_p(491) = harm_N_p(491) / ( i_c * sinew4) ; -- ---- H4 harm_N_p(495) = harm_N_p(495) / ( i_c * sinns) ; -- ---- NS0_ew harm_N_p(507) = harm_N_p(507) / ( i_c * sinew2) ; E1 ---- H2 harm_N_p(509) = harm_N_p(509) / ( i_c * sinew4) ; -- ---- H2 harm_N_p(513) = harm_N_p(513) / ( i_c * sinns) ; -- ---- NS0_ew harm_N_p(525) = harm_N_p(525) / ( i_c * sinew2) ; E0 ---- H2 harm_N_p(527) = harm_N_p(527) / ( i_c * sinew4) ; -- ---- H4 harm_N_p(531) = harm_N_p(531) / ( i_c * sinns) ; -- ---- NS0_ew harm_N_p(540) = harm_N_p(540) / ( i_c * sinns) ; NS8 ---- NS0_ns harm_N_p(558) = harm_N_p(558:575) /(-i_c*sinns) ; NS0_ns ---- NS7->NS45 if (nbre_harm gt 576) then begin harm_N_p(576) = harm_N_p(576) / (i_c*sinns) ; AA1 avec NS0_ns harm_N_p(594) = harm_N_p(594) / (i_c*sinns) ; AA2 ----------- harm_N_p(612) = harm_N_p(612) / (i_c*sinns) ; AA3 ----------- harm_N_p(630) = harm_N_p(630) / (i_c*sinns) ; AA4 ----------- endif print, ' Fin de correction des harmoniques polar.' endif ; fin de correction des harmoniques des sources de calibration ; posterieures a nov 02. end ; fin de CORR_ROT_DEP_P ;______________________________________________________________________________ PRO RH_CORR_ANTENNES ; Creation 18 sept 2003 ; But : compiler l'ensemble des procedures ci_dessus. J_M = 0 end