source: Sophya/trunk/FrEROS/AnaLC/courbe_nb.cc@ 3504

Last change on this file since 3504 was 3308, checked in by ansari, 18 years ago

Creation du module AnaLC (lecture suivi EROS avec SOPHYA) dans la base
SOPHYA - cmv+reza 22/08/2007

  • Property svn:executable set to *
File size: 4.3 KB
Line 
1#include "machdefs.h"
2#include <stdlib.h>
3#include <stdio.h>
4#include <math.h>
5
6#include "courbe_nb.h"
7
8/*==============================================================*/
9FILE *CreCourbe(char *str)
10/*
11Pour ouvrir le fichier COURBE_NB_FILE avec le nom "str".
12 Permet de mettre plusieurs etoiles dans le meme fichier.
13*/
14{
15if(COURBE_NB_FILE!=NULL) {
16 printf("CreCourbe_Erreur: Fichier Courbe non ferme!\n");
17 fclose(COURBE_NB_FILE);
18}
19COURBE_NB_FILE = fopen(str,"w");
20return COURBE_NB_FILE;
21}
22
23/*==============================================================*/
24FILE *CreCourbe(int et)
25{
26/*
27Pour ouvrir le fichier COURBE_NB_FILE avec le nom s"et".data
28 ex: s12.data
29*/
30char str[256];
31sprintf(str,"s%d.data",et);
32return CreCourbe(str);
33}
34
35/*==============================================================*/
36void CloseCourbe(void)
37/*
38Pour fermer le fichier COURBE_NB_FILE
39*/
40{
41if(COURBE_NB_FILE!=NULL) {
42 fprintf(COURBE_NB_FILE,"-999999.\n");
43 fclose(COURBE_NB_FILE);
44}
45COURBE_NB_FILE = NULL;
46}
47
48/*==============================================================*/
49void FillCourbe(int et,int coul
50 ,float t,float flx,float eflx,float flb,float eflb
51 ,float v0,float v1,float v2,float v3,float v4)
52/*
53Pour remplir un fichier ASCII avec des courbes de lumieres:
54 coul = couleur (1 ou 2)
55 flx = flux calibre
56 eflx = erreur sur le flux calibre
57 flb = flux brut
58 eflb = erreur sur le flux brut
59 v0,v1,v2,v3,v4 = ce qu'on veut pour sequence temporelle
60 - Code 1 , 2
61 coul1, coul2
62*/
63{
64if(COURBE_NB_FILE==NULL) {
65 printf("FillCourbe_Erreur: fichier non ouvert!\n");
66 return;
67}
68fprintf(COURBE_NB_FILE,"%d. %d. %f %f %f %f %f %f %f %f %f %f\n"
69 ,coul,et,t,flx,eflx,flb,eflb,v0,v1,v2,v3,v4);
70}
71
72/*==============================================================*/
73void FillBosse(int et,int coul
74 ,float fbase,float tp1,float tp2,float ts1,float ts2)
75/*
76Pour remplir la caracteristique du flux de base et des bosses:
77 coul = couleur (1 ou 2)
78 fbase = flux de base
79 tp1 = temps de debut de la bosse principale
80 tp2 = temps de fin de la bosse principale
81 ts1 = temps de debut de la bosse secondaire
82 ts2 = temps de fin de la bosse secondaire
83 - Code 1000 , 2000
84 coul1, coul2
85*/
86{
87if(COURBE_NB_FILE==NULL) {
88 printf("FillBosse_Erreur: fichier non ouvert!\n");
89 return;
90}
91coul = 1000*coul;
92fprintf(COURBE_NB_FILE,"%d. %d. %f %f %f %f %f\n"
93 ,coul,et,fbase,tp1,tp2,ts1,ts2);
94}
95
96/*==============================================================*/
97void FillPacZin(int et,int coul,int mc
98 ,float fbase,float u0,float t0,float tau,float blend)
99/*
100Pour remplir la caracteristique d'un fct de paczinski:
101 coul = couleur (1 ou 2)
102 mc = <=0 fct fittee, >0 fct montecarlo
103 fbase = flux de base
104 u0 = parametre d'impact en Rayon d'einstein
105 t0 = temps du maximum
106 tau = parametre de largeur
107 blend = taux de blending (=1 si pas de blending!)
108 - Code 1010 , 1011 , 2010 , 2011
109 coul1, coul1+mc, coul2, coul2+mc
110*/
111{
112if(COURBE_NB_FILE==NULL) {
113 printf("FillPacZin_Erreur: fichier non ouvert!\n");
114 return;
115}
116if(mc<=0) mc = 0; else mc = 1;
117coul = coul*1000 + 10 + mc;
118fprintf(COURBE_NB_FILE,"%d. %d. %f %f %f %f %f\n"
119 ,coul,et,fbase,u0,t0,tau,blend);
120}
121
122/*==============================================================*/
123void FillVarPer(int et,int coul,int mc
124 ,int nharm,float fbase,float per,float t0
125 ,float *pcs,float *psn)
126/*
127Pour remplir la caracteristique d'un fct periodique:
128 coul = couleur (1 ou 2)
129 mc = <=0 fct fittee, >0 fct montecarlo
130 nharm = nombre d'harmoniques
131 fbase = flux de base
132 per = periode
133 t0 = temps zero
134 pcs = tableau des "nharm" multiplicateurs des cosinus
135 Il y a donc 1 fondamental + nharm-1 harmoniques
136 psn = tableau des "nharm" multiplicateurs des sinus
137 - Code 1020 , 1021 , 2020 , 2021
138 coul1, coul1+mc, coul2, coul2+mc
139 La fonction est:
140 f(t) = fbase
141 + Sum[pcs(i)*cos(2pi*i*(x-t0)/per) + psn(i)*sin(2pi*i*(x-t0)/per)]
142 (i varie de 1,nharm)
143*/
144{
145int i;
146if(COURBE_NB_FILE==NULL) {
147 printf("FillVarPer_Erreur: fichier non ouvert!\n");
148 return;
149}
150if(mc<=0) mc = 0; else mc = 1;
151coul = coul*1000 + 20 + mc;
152fprintf(COURBE_NB_FILE,"%d. %d. %f %f %f\n"
153 ,coul,et,fbase,per,t0);
154for(i=0;i<nharm;i++)
155 fprintf(COURBE_NB_FILE,"%d. %d. %f %f %f\n"
156 ,coul,et,(float)(i+1),pcs[i],psn[i]);
157}
158
Note: See TracBrowser for help on using the repository browser.