ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/epw2wea.c
Revision: 2.2
Committed: Mon Oct 21 20:30:50 2013 UTC (10 years, 5 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.1: +37 -32 lines
Log Message:
Bug fixes for TMY3 format

File Contents

# User Rev Content
1 greg 2.1 /* Copyright (c) 2003
2     * National Research Council Canada
3     * written by Christoph Reinhart
4     */
5    
6 greg 2.2 /* epw2wea: daylight analysis subprogram of DAYSIM */
7     /* Program converts EnergyPlus weather format (*.ppw) into DAYSIM format (*.wea) */
8 greg 2.1
9 greg 2.2 #include <stdio.h>
10 greg 2.1 #include <stdlib.h>
11     #include <string.h>
12    
13 greg 2.2 int main( int argc, char *argv[])
14 greg 2.1 {
15     FILE *EPW_FILE;
16     FILE* WEA_FILE;
17 greg 2.2 int year, month,day, hour_in,minute=60,i;
18     int minute_message=1;
19 greg 2.1 float dir_norm_rad, dif_or_rad,dummy_float;
20 greg 2.2 char keyword[2000]="";
21     char minute_string[2000]="";
22 greg 2.1 char epw_file[200]="";
23     char wea_file[200] ="";
24     char city[200] ="";
25     char country[200] ="";
26     char latitude[200] ="",longitude[200] ="",time_zone[200] ="",elevation[200] ="";
27    
28     if (argc < 3)
29     {
30     fprintf(stderr,"epw2wea: FATAL ERROR - wrong number of arguments\n");
31 greg 2.2 fprintf(stderr,"start program with: epw2wea <file-name.epw> <file-name.wea>\n");
32     exit(1);
33 greg 2.1 }
34     if (argc >= 3)
35     {
36     strcpy(epw_file, argv[1]);
37     strcpy(wea_file, argv[2]);
38     for (i = 3; i < argc; i++)
39     if (argv[i][0] == '-' )
40     switch (argv[i][1])
41     {
42     case 'h': /* scaling factor */
43     break;
44 greg 2.2 }
45 greg 2.1 else
46     {
47     fprintf(stdout,"epw2wea: fatal error - %s bad option for input arguments\n", argv[i]);
48 greg 2.2 exit(0);
49     }
50 greg 2.1 }
51    
52 greg 2.2 EPW_FILE=fopen(epw_file, "r");
53     WEA_FILE=fopen(wea_file, "w");
54 greg 2.1 fscanf(EPW_FILE,"%[^,]s",keyword);
55 greg 2.2 if( !strcmp(keyword,"LOCATION") ){
56 greg 2.1 fscanf(EPW_FILE,",%[^,]s",city);
57     fscanf(EPW_FILE,",%[^,]s",country);
58     fscanf(EPW_FILE,",%[^,]s",country);
59     sprintf(keyword,"place %s_%s\n",city,country);
60     printf("%s",keyword);
61     fprintf(WEA_FILE,"%s",keyword);
62    
63     fscanf(EPW_FILE,",%[^,]s",country);
64 greg 2.2 fscanf(EPW_FILE,",%[^,]s",country);
65 greg 2.1 fscanf(EPW_FILE,",%[^,]s",latitude);
66     printf("latitude %s\n",latitude);
67     fprintf(WEA_FILE,"latitude %s\n",latitude);
68     fscanf(EPW_FILE,",%[^,]s",longitude);
69    
70     printf("longitude %.2f\n",-1.0*atof(longitude));
71     fprintf(WEA_FILE,"longitude %.2f\n",-1.0*atof(longitude));
72     fscanf(EPW_FILE,",%[^,]s",time_zone);
73     printf("time_zone %.0f\n",-15.0*atoi(time_zone));
74     fprintf(WEA_FILE,"time_zone %.0f\n",-15.0*atoi(time_zone));
75     fscanf(EPW_FILE,",%s[^\n]",elevation);
76     printf("site_elevation %s\nweather_data_file_units 1\n",elevation);
77     fprintf(WEA_FILE,"site_elevation %s\nweather_data_file_units 1\n",elevation);
78    
79     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
80     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
81     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
82     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
83     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
84     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
85     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
86 greg 2.2
87     /* read in time step interval */
88     fscanf(EPW_FILE,"%[^,]s",keyword);
89     fscanf(EPW_FILE,",%[^,]s",keyword);
90     fscanf(EPW_FILE,",%[^,]s",minute_string);
91     minute=atoi(minute_string);
92     if(minute==1) /* one measurement per hour equals a 60 minute time step */
93     minute=60;
94     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
95    
96     while( EOF != fscanf(EPW_FILE,"%d,%d,%d,%d",&year,&month,&day, &hour_in)){
97    
98 greg 2.1 fprintf(WEA_FILE,"%d %d %.3f ",month,day,hour_in*1.0-minute*(0.5/60));
99 greg 2.2
100     fscanf(EPW_FILE,",%f",&dummy_float);
101 greg 2.1 fscanf(EPW_FILE,",%[^,]s",city);
102     fscanf(EPW_FILE,",%f",&dummy_float);
103     fscanf(EPW_FILE,",%f",&dummy_float);
104     fscanf(EPW_FILE,",%f",&dummy_float);
105     fscanf(EPW_FILE,",%f",&dummy_float);
106     fscanf(EPW_FILE,",%f",&dummy_float);
107     fscanf(EPW_FILE,",%f",&dummy_float);
108     fscanf(EPW_FILE,",%f",&dummy_float);
109     fscanf(EPW_FILE,",%f",&dummy_float);
110    
111     fscanf(EPW_FILE,",%f,%f",&dir_norm_rad, &dif_or_rad);
112     fprintf(WEA_FILE,"%.0f %.0f",dir_norm_rad, dif_or_rad);
113    
114     fscanf(EPW_FILE,"%*[^\n]");fscanf(EPW_FILE,"%*[\n\r]");
115     fprintf(WEA_FILE,"\n");
116     }
117    
118 greg 2.2 }else{
119     fprintf(stderr,"epw2wea: FATAL ERROR - this does not seem to be an epw file \n");exit(1);
120     }
121 greg 2.1
122 greg 2.2 fclose(EPW_FILE);
123     fclose(WEA_FILE);
124     return 0;
125 greg 2.1 }
126    
127