1 #ifdef HAVE_STDLIB_H
2 #include <stdlib.h>
3 #endif
4 #include <stdio.h>
5 #include <errno.h>
6 #include "yagi.h"
7
8 /* This routine prints the data to disk and to stdout, since the new result
9 is better than all previous */
10
do_since_better(int i,char * output_filename,char * update_filename,struct FCOMPLEX input_impedance,struct performance_data n,struct flags flag,char * notes,double frequency,double min_frequency,double max_frequency,double step_frequency,int elements,int driven,int parasitic,double angular_step,double ** driven_data,double ** parasitic_data,double scale_factor,double new_perf)11 void do_since_better(int i, char *output_filename, char *update_filename, struct FCOMPLEX input_impedance, struct performance_data n,struct flags flag,char * notes,double frequency,double min_frequency,double max_frequency,double step_frequency,int elements, int driven,int parasitic,double angular_step,double **driven_data,double **parasitic_data,double scale_factor,double new_perf)
12 {
13 static int run_first_time=TRUE;
14
15 FILE *fp_out, *update_fp;
16 int print_fitnessQ;
17 n.r=input_impedance.r; n.x=input_impedance.i;
18 if(flag.Wflg || flag.gflg)
19 print_fitnessQ=TRUE;
20 else
21 print_fitnessQ=FALSE;
22 print_relavent_performance_data(stdout,"",i,flag,n,new_perf,TRUE,print_fitnessQ);
23 update_fp=fopen(update_filename,"a");
24 if(run_first_time==TRUE && flag.wflg)
25 fprintf(update_fp, "Optimised for wide-band use\n");
26 if(run_first_time==TRUE && flag.gflg)
27 fprintf(update_fp, "Optimised With the genetic algoritm\n");
28 run_first_time=FALSE;
29
30 print_relavent_performance_data(update_fp,"",i,flag,n,new_perf,TRUE,print_fitnessQ);
31 fclose(update_fp);
32 /* write our best design to date to disk */
33
34 fp_out=fopen(output_filename,"wt");
35 write_input_data_to_disk(fp_out, notes, frequency/1e6, min_frequency/1e6,max_frequency/1e6, step_frequency/1e6, elements, driven, parasitic, angular_step,driven_data, parasitic_data, scale_factor);
36 fclose(fp_out);
37
38 #ifdef DEBUG
39 if(errno)
40 {
41 fprintf(stderr,"Errno =%d in dobetter.c\n", errno);
42 exit(1);
43 }
44 #endif
45 }
46