#include #include #include #include #include #include "nrutil.c" #include "nrutil.h" #include "UVStruct.c" #include "UVFile.c" #include "UVCommon.c" #include "Brewer.c" void main(void) { int i; int n_col, n_file, n_row, ok; int cy, dark_cy, day; float dark1, time, wl, mic, sig; float **data; char st[64]; char sch_file[20], in_file[20], out_file[20], prev_file[20]; struct scan_header EPA; FILE *fp_sch, *fp_in, *fp_out, *fp_data; data = matrix(1, 1000, 1, 3); printf("Line Schedule File: "); // schedule of scans scanf("%s", &sch_file); fp_sch = fopen(sch_file, "r"); fp_in = fopen("test.txt", "r"); fp_data = fopen("96FR.EPA", "w"); // compilation of header data fprintf(fp_data, "Header:\n"); fprintf(fp_data, "Number_of_columns\t28\n"); fprintf(fp_data, "Labels:\n"); fprintf(fp_data, "File\tInstrument\tSource\tLocation\tEnvironment\t"); fprintf(fp_data, "Year\tDay\tDate\tOperation\tMeasurement_type\t"); fprintf(fp_data, "Measurement_purpose\tLamp_power_supply\tLamp_housing\t"); fprintf(fp_data, "Number_of_scans\tNumber_of_columns\t"); fprintf(fp_data, "Number_of_rows\tStart_time\tStop_time\t"); fprintf(fp_data, "Start_wavelength\tStop_wavelength\tIncrement_wavelength\t"); fprintf(fp_data, "Dead_time\tIntegration_time\tDark_signal\tFilter_temperature\t"); fprintf(fp_data, "Comments\tData_file\tAnalysis_file\n"); fprintf(fp_data, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"); fprintf(fp_data, "[UTC]\t[UTC]\t[nm]\t[nm]\t[nm]\t[ns]\t[s]\t[p_s^-1]\t[C]\n"); fprintf(fp_data, "Data:\n"); fscanf(fp_sch, "%s %s %d", &st, &st, &n_col); // read schedule file header do{ fscanf(fp_sch, "%s", &st); } while(strcmp(st, "Data:") != 0); while(fscanf(fp_sch, "%s", &in_file) != EOF){ // read schedule file info. strcpy(EPA.data_file, in_file); fscanf(fp_sch, "%d", &i); fscanf(fp_sch, "%s", EPA.inst); fscanf(fp_sch, "%s", EPA.source); fscanf(fp_sch, "%s", EPA.locat); fscanf(fp_sch, "%s", EPA.envir); fscanf(fp_sch, "%s", EPA.operat); fscanf(fp_sch, "%s", EPA.meas_type); fscanf(fp_sch, "%s", EPA.meas_purp); fscanf(fp_sch, "%s", EPA.lamp_ps); fscanf(fp_sch, "%s", EPA.lamp_hs); fscanf(fp_sch, "%s", EPA.comments); printf("%s\t%s\n", EPA.source, EPA.meas_type); if(strcmp(in_file, prev_file) != 0){ // check if in_file already open fclose(fp_in); fp_in = fopen(in_file, "r"); } strcpy(prev_file, in_file); printf("%s\t", in_file); // load info. from data file for(i = 1; i <= 7; i++){ fscanf(fp_in, "%s", &st); } fscanf(fp_in, "%s %f", &st, &EPA.dead_time); fscanf(fp_in, "%s %d", &st, &cy); cy = 60; for(i = 1; i <= 13; i++){ fscanf(fp_in, "%s", &st); } fscanf(fp_in, "%f", &EPA.filter_temp); for(i = 1; i <= 2; i++){ fscanf(fp_in, "%s", &st); } fscanf(fp_in, "%f", &dark1); fscanf(fp_in, "%s", &st); n_row = 1; while(strcmp(st, "end") != 0){ // load data time = atof(st); fscanf(fp_in, "%f %f %f", &wl, &mic, &sig); /*printf("%f\t%f\t%f\n", time, wl/10.0, sig);*/ data[n_row][1] = wl/10.0; data[n_row][2] = sig*cy; if(n_row == 1){ EPA.start_time = time/60.0; EPA.start_wl = wl/10.0; } EPA.stop_time = time/60.0; EPA.stop_wl = wl/10.0; n_row++; fscanf(fp_in, "%s", &st); } n_row--; EPA.inc_wl = (EPA.stop_wl - EPA.start_wl)/(float)(n_row - 1); EPA.dark_sig = dark1*60; EPA.int_time = 0.2294*cy; EPA.filter_temp = EPA.filter_temp*18.64 - 33.27; for(i = 1; i <= n_row; i++){ // reduce signal data data[i][2] = 4.0*(data[i][2] - EPA.dark_sig); data[i][3] = 1.0/(float)sqrt(fabs(data[i][2])); data[i][2] /= EPA.int_time; data[i][2] = nlexp(data[i][2], EPA.dead_time); } EPA.dark_sig *= 4.0/EPA.int_time; sscanf(in_file, "%2s%3d%2d.%3d", &st, &EPA.day, &EPA.year, &i); // read day if(EPA.start_time < 6.0) EPA.day++; EPA.year += 1900; day_to_date(EPA.year, EPA.day, EPA.date); n_file = 1; // create formatted file do{ if(n_file < 10){ sprintf(out_file, "96%03dFR%1d.EPA", EPA.day, n_file); } else{ sprintf(out_file, "96%03dFR%c.EPA", EPA.day, n_file + 55); } ok = file_exist(out_file); n_file++; } while(ok == 1); fp_out = fopen(out_file, "w"); // store header in files printf("%s\n", out_file); fprintf(fp_data, "%s\t", out_file); fprintf(fp_out, "Header:\n"); fprintf(fp_out, "Instrument\t%s\n", EPA.inst); fprintf(fp_data, "%s\t", EPA.inst); fprintf(fp_out, "Source\t%s\n", EPA.source); fprintf(fp_data, "%s\t", EPA.source); fprintf(fp_out, "Location\t%s\n", EPA.locat); fprintf(fp_data, "%s\t", EPA.locat); fprintf(fp_out, "Environment\t%s\n", EPA.envir); fprintf(fp_data, "%s\t", EPA.envir); fprintf(fp_out, "Year\t%d\n", EPA.year); fprintf(fp_data, "%d\t", EPA.year); fprintf(fp_out, "Day\t%d\n", EPA.day); fprintf(fp_data, "%d\t", EPA.day); fprintf(fp_out, "Date\t%s\n", EPA.date); fprintf(fp_data, "%s\t", EPA.date); fprintf(fp_out, "Operation\t%s\n", EPA.operat); fprintf(fp_data, "%s\t", EPA.operat); fprintf(fp_out, "Measurement_type\t%s\n", EPA.meas_type); fprintf(fp_data, "%s\t", EPA.meas_type); fprintf(fp_out, "Measurement_purpose\t%s\n", EPA.meas_purp); fprintf(fp_data, "%s\t", EPA.meas_purp); fprintf(fp_out, "Lamp_power_supply\t%s\n", EPA.lamp_ps); fprintf(fp_data, "%s\t", EPA.lamp_ps); fprintf(fp_out, "Lamp_housing\t%s\n", EPA.lamp_hs); fprintf(fp_data, "%s\t", EPA.lamp_hs); fprintf(fp_out, "Number_of_scans\t1\n"); fprintf(fp_data, "1\t"); fprintf(fp_out, "Number_of_columns\t3\n"); fprintf(fp_data, "3\t"); fprintf(fp_out, "Number_of_rows\t%d\n", n_row); fprintf(fp_data, "%d\t", n_row); fprintf(fp_out, "Start_time\t%.5f\t[UTC]\n", EPA.start_time); fprintf(fp_data, "%.5f\t", EPA.start_time); fprintf(fp_out, "Stop_time\t%.5f\t[UTC]\n", EPA.stop_time); fprintf(fp_data, "%.5f\t", EPA.stop_time); fprintf(fp_out, "Start_wavelength\t%.2f\t[nm]\n", EPA.start_wl); fprintf(fp_data, "%.2f\t", EPA.start_wl); fprintf(fp_out, "Stop_wavelength\t%.2f\t[nm]\n", EPA.stop_wl); fprintf(fp_data, "%.2f\t", EPA.stop_wl); fprintf(fp_out, "Increment_wavelength\t%.2f\t[nm]\n", EPA.inc_wl); fprintf(fp_data, "%.2f\t", EPA.inc_wl); fprintf(fp_out, "Dead_time\t%.1f\t[ns]\n", EPA.dead_time*1e9); fprintf(fp_data, "%.1f\t", EPA.dead_time*1e9); fprintf(fp_out, "Integration_time\t%.4f\t[s]\n", EPA.int_time); fprintf(fp_data, "%.4f\t", EPA.int_time); fprintf(fp_out, "Dark_signal\t%.2f\t[p_s^-1]\n", EPA.dark_sig); fprintf(fp_data, "%.2f\t", EPA.dark_sig); fprintf(fp_out, "Filter_temperature\t%.2f\t[C]\n", EPA.filter_temp); fprintf(fp_data, "%.2f\t", EPA.filter_temp); fprintf(fp_out, "Comments\t%s\n", EPA.comments); fprintf(fp_data, "%s\t", EPA.comments); fprintf(fp_out, "Data_file\t%s\n", EPA.data_file); fprintf(fp_data, "%s\t", EPA.data_file); fprintf(fp_out, "Analysis_program\tFmt_96EPA_Lp.c\n"); fprintf(fp_data, "Fmt_96EPA_Lp.c\n"); fprintf(fp_out, "Labels:\n"); fprintf(fp_out, "Wavelength\tSignal\tdS/S\n"); fprintf(fp_out, "[nm]\t[p_s^-1]\n"); fprintf(fp_out, "Data:\n"); for(i = 1; i <= n_row; i++){ // store data fprintf(fp_out, "%.2f\t%.4f\t%.4f\n", data[i][1], data[i][2], data[i][3]); } fclose(fp_out); } fclose(fp_sch); fclose(fp_data); }