#include #include #include #include "parametres.h" // defining the sample time, and the size of the matrices #include "initialisation.h" #include "cree_mat.h" #include "edit_result.h" #include "PEC_computation.h" #include "read_intern.h" #include "delete_first_column.h" #include "delete_first_line.h" #include "rempli_mat.h" #include "interpolation.h" int main() { int i; float **matP=cree_mat(n_line,n_variable); float **matB=cree_mat(n_line,n_variable); int *tabP; int *tabB; //definition des fichiers de données et fichiers intermediaires char input_pri[25]="input_pri.txt"; char input_pri2[25]="input_pri2.txt"; char input_pri3[25]="input_pri3.txt"; char input_pri4[25]="input_pri4.txt"; char input_bck[25]="input_bck.txt"; char input_bck2[25]="input_bck2.txt"; char input_bck3[25]="input_bck3.txt"; char input_bck4[25]="input_bck4.txt"; char intern_pri[25]="intern_pri.txt"; char intern_pri2[25]="intern_pri2.txt"; char intern_pri3[25]="intern_pri3.txt"; char intern_bck[25]="intern_bck.txt"; char intern_bck2[25]="intern_bck2.txt"; char intern_bck3[25]="intern_bck3.txt"; tabP=initialisation (matP,tabP,n_common,n_pri,n_intern,n_variable,n_line,n_FDR,DT,ts,tf, input_pri,input_pri2,input_pri3,input_pri4, intern_pri,intern_pri2,intern_pri3,1); tabB=initialisation (matB,tabB,n_common,n_bck,n_intern,n_variable,n_line,n_FDR,DT,ts,tf, input_bck,input_bck2,input_bck3,input_bck4, intern_bck,intern_bck2,intern_bck3,2); PEC_computation(matP,matB,tabP,tabB,n_line,DT); char out_pri_1[25]="out_pri_1.txt"; char out_pri_2[25]="out_pri_2.txt"; char out_bck_1[25]="out_bck_1.txt"; char out_bck_2[25]="out_bck_2.txt"; edit_result(matP,n_line,n_input,n_variable,out_pri_1,out_pri_2); edit_result(matB,n_line,n_input,n_variable,out_bck_1,out_bck_2); return 0; } int*initialisation (float**mat,int*tab, int n_common,int n_spe,int n_intern,int n_variable, int n_line,int n_FDR,float DT,float ts,float tf, char input[25],char input_2[25],char input_3[25],char input_4[25], char intern[25],char intern_2[25],char intern_3[25],int channel) { /*****defintion of the file names that are used by both the primary and the ****** backup channel*************************************************/ char input_com[25]="input_com.txt"; char input_com_2[25]="input_com2.txt"; char input_com_3[25]="input_com3.txt"; /*----------------------------------------------------------------------------*/ /*****deletes the label in the first line of the files.************************/ delete_first_line(input_com,input_com_2); delete_first_line(input,input_2); delete_first_line(intern,intern_2); /*----------------------------------------------------------------------------*/ /*******interpolation of the inputs*********************************************/ int tab_com[11]; int tab_spe[3]; tab_com[0]=11; tab_com[1]=3; tab_com[2]=7; tab_com[3]=8; tab_com[4]=9; tab_com[5]=10; tab_com[6]=11; tab_com[7]=12; tab_com[8]=13; tab_com[9]=15; tab_com[10]=16; tab_com[11]=17; tab_spe[0]=3; tab_spe[1]=1; tab_spe[2]=4; tab_spe[3]=5; interpolation(input_com_2,input_com_3,tab_com,n_FDR,n_common+1,n_line,DT,ts); interpolation(input_2,input_3,tab_spe,n_FDR,n_spe+1,n_line,DT,ts); /*----------------------------------------------------------------------------*/ /********inner variables management********************************************/ tab=inner_control(channel); read_intern(intern_2,intern_3,tab,n_line,n_intern); /*----------------------------------------------------------------------------*/ /*******delete first column****************************************************/ delete_first_column(input_3,input_4,n_spe+1,n_line); /*----------------------------------------------------------------------------*/ /********fills the matrixes****************************************************/ rempli_mat(mat,input_com_3,n_line,0,18); rempli_mat(mat,input_4,n_line,18,26); rempli_mat(mat,intern_3,n_line,26,108); /*----------------------------------------------------------------------------*/ return tab; } int*inner_control(int channel) { int i,j,n_control; /*création du tableau ou seront stockées les numéros des variables forcées*/ int *tab; if (channel==1) { printf("\n---- Control of the primary channel ----"); printf("\nhow many inner variables do you want to control ?\t"); scanf("%d",&n_control); tab=(int*)malloc((n_control+1)*sizeof(int)); printf("\n\n\n\t\t\tWARNING!! \n\nENTER THE NUMBER FROM THE LOWEST TO THE GREATEST\n\n\n"); tab[0]=n_control; // saving of the tab length ( will be used during the update of mat when checking if a variable is controlled or not) for (i=1;i<=tab[0];i++) { printf("\nEnter the %dth variable number\t",i); scanf("%d",&tab[i]); } for(i=1;i=tab[j]) { printf("\nERROR IN THE ORDER OF VARIABLES "); return tab; } } } } else { printf("\n\n\n\n---- Control of the backup channel ----"); printf("\nhow many inner variables do you want to control ?\t"); scanf("%d",&n_control); tab=(int*)malloc((n_control+1)*sizeof(int)); printf("\n\n\n\t\t\tWARNING!! \n\nENTER THE NUMBER FROM THE LOWEST TO THE GREATEST\n\n\n"); tab[0]=n_control; // saving of the tab length ( will be used during the update of mat when checking if a variable is controlled or not) for (i=1;i<=tab[0];i++) { printf("\nEnter the %dth variable number\t",i); scanf("%d",&tab[i]); } for(i=1;i=tab[j]) { printf("\nERROR IN THE ORDER OF VARIABLES "); return tab; } } } } return tab; } float ** cree_mat(int n_ligne, int n_colonne) { int i; float ** mat=(float**)malloc(n_ligne*sizeof(float*)); for(i=0;i