fork download
  1.  
  2. /* P arrival time adjusted by CWBdata */
  3. /* Pob:P observation time = secp - ( event occur time +60) */
  4. /* Pth:P theorem time = (dist and depth=0) to theorem function */
  5.  
  6.  
  7.  
  8. #include<stdio.h>
  9. #include<stdlib.h>
  10. #include<string.h>
  11. #include"station_info.h"
  12. #include<math.h>
  13. #include<stdbool.h>
  14.  
  15.  
  16.  
  17. FILE *filename;
  18.  
  19. struct event{
  20. char year[5];
  21. char month[5];
  22. char day[10];
  23. char hr[10];
  24. char min[10];
  25. char sec[10];
  26. char depth[10];
  27. } eve;
  28.  
  29. struct sensor{
  30. char name[5];
  31. char bbb[5];/*what's this???????????*/
  32. char min[10];
  33. char sec[10];
  34. char resp[10];
  35. char wtp[10];
  36. } sen;
  37.  
  38. char filenamec[100],path[100],datac,sory[5]/*sensor or eve.year */;
  39. char tmp[100],dist[5];/*between sensor and hypercenter*/
  40.  
  41. int i,sensor=0,y=0,s=0,k=1;
  42. double theorem(double ddiisstt,double fedepth);
  43. float Pob,fdist,fsmin,fssec,femin,fesec,fedepth,Pth,obvelo,thvelo,fswtp;
  44. /* fxxxx=float xxxxx */
  45. /* ex: fedepth=float event depth */
  46. /* ex: fssec =float sensor second */
  47. int main(void){
  48.  
  49. filename=fopen("filename.txt","r+");
  50. //printf(" dist M Sec Pob Pth obvel thvel Count\n");
  51. while(1){
  52.  
  53. fscanf(filename,"%s",filenamec);//filename = 201301DB.MAN
  54. if(feof(filename)==1)break;
  55.  
  56. FILE *data;
  57. strcpy(path,"/home/m101019/Dropbox/EW/implement/CWB/pfile/");
  58. strcat(path,filenamec); //path = /pfile/201412DB.MAN
  59.  
  60. data=fopen(path,"r+");
  61. //printf("%s\n\n",path);
  62.  
  63.  
  64. if(data){// grab the data from MAN file.
  65. while(1){
  66. for(i=0;i<=3;i++){
  67. fscanf(data,"%c",&datac);
  68. sory[i]=datac;
  69. }
  70. //printf("%s\n",sory);
  71. if(strcmp(sory,"2013")==0 || strcmp(sory,"2014")==0|| strcmp(sory,"9999")==0){
  72. strncpy(eve.year,sory,4);
  73. for(i=0;i<=1;i++){
  74. fscanf(data,"%c",&datac);
  75. eve.month[i]=datac;
  76. }
  77. for(i=0;i<=1;i++){
  78. fscanf(data,"%c",&datac);
  79. eve.day[i]=datac;
  80. }
  81. for(i=0;i<=1;i++){
  82. fscanf(data,"%c",&datac);
  83. eve.hr[i]=datac;
  84. }
  85. for(i=0;i<=1;i++){
  86. fscanf(data,"%c",&datac);
  87. eve.min[i]=datac;
  88. }
  89. for(i=0;i<=5;i++){
  90. fscanf(data,"%c",&datac);
  91. eve.sec[i]=datac;
  92. }
  93. for(i=0;i<=14;i++)fscanf(data,"%c",&datac);
  94. for(i=0;i<=5;i++){
  95. fscanf(data,"%c",&datac);
  96. eve.depth[i]=datac;
  97. }
  98. y=1;
  99. }else{
  100. strcpy(sen.name,sory);
  101.  
  102. fscanf(data,"%c",&datac);
  103. sen.name[4]=datac; //sen.name = " SEB " or " CHY1" length=5
  104. //printf("%s\n",sen.name);
  105. for(i=0;i<=5;i++){
  106. fscanf(data,"%c",&datac);
  107. dist[i]=datac; //sensor distance
  108. }
  109. for(i=0;i<=9;i++)fscanf(data,"%c",&datac); //drop sensor az toa
  110. for(i=0;i<=1;i++){
  111. fscanf(data,"%c",&datac);
  112. sen.min[i]=datac; //sensor minute
  113. }
  114. for(i=0;i<=5;i++){
  115. fscanf(data,"%c",&datac);
  116. sen.sec[i]=datac; //sensor sec
  117. }
  118. for(i=0;i<=5;i++){
  119. fscanf(data,"%c",&datac);
  120. sen.resp[i]=datac; //sensor resp
  121. }
  122. for(i=0;i<=3;i++){
  123. fscanf(data,"%c",&datac);
  124. sen.wtp[i]=datac; //sensor wtp
  125. }
  126. s=1;
  127. //k++;
  128. }
  129. if(fgets(tmp,150,data)==NULL)break;
  130.  
  131. /*****change type******/
  132. fdist=atof(dist);
  133. fssec=atof(sen.sec);
  134. fsmin=atof(sen.min);
  135. fswtp=atof(sen.wtp);
  136. femin=atof(eve.min);
  137. fesec=atof(eve.sec);
  138. fedepth=atof(eve.depth);
  139.  
  140. /****calculation****/
  141. if(s==1){
  142. if(fsmin==femin){Pob=(fssec-fesec);
  143. }else if((fsmin+1)==femin || (fsmin+1)==(femin+60)) Pob=(fssec-fesec-60);
  144. else if((fsmin+2)==femin || (fsmin+2)==(femin+60)) Pob=(fssec-fesec-120);
  145. else if((fsmin-1)==femin || (fsmin-1)==(femin+60)) Pob=(fssec-fesec+60);
  146. Pth=theorem(fdist,fedepth);
  147. }
  148. obvelo=sqrt(fdist*fdist+fedepth*fedepth)/Pob;
  149. thvelo=sqrt(fdist*fdist+fedepth*fedepth)/Pth;
  150.  
  151. /*human read format*/
  152. /*if(y==1 && strcmp(sen.name," ENA ")==0 &&fssec!=0 && fdist<500 && Pob>0 && Pth>0 &&fswtp <=2 && fabs(Pob-Pth)>2){
  153. printf("\nY:%s M:%s D:%s H:%s MIN:%s SEC:%s DEP:%s\n",eve.year,eve.month,eve.day,eve.hr,eve.min,eve.sec,eve.depth);y=0;
  154. printf(" dist M Sec Pob Pth obvel thvel Count wtp diff\n");
  155. y=0;
  156.  
  157. }
  158. if(s==1 && strcmp(sen.name," ENA ")==0 && fssec!=0 && fdist<500 && Pob>0 && Pth>0 &&fswtp <=2 && fabs(Pob-Pth)>2){
  159. // fdist<500 is used to ignore the dropped data
  160. // Pth <0 is ignore double count
  161. printf("%s %s %s %s ",sen.name,dist,sen.min,sen.sec);
  162. printf("%.2f, %.2f, %.2f, %.2f, %d, %s, %f\n",Pob,Pth,obvelo,thvelo,k,sen.wtp,fabs(Pob-Pth));
  163. s=0;
  164. k++;
  165.  
  166. }*/
  167.  
  168. /*machine read format*/
  169. if(s==1 && strcmp(sen.name," EGC ")==0 && fssec!=0 && fdist<500 && Pob>0 && Pth>0 &&fswtp <=2 && fabs(Pob-Pth)>2){
  170.  
  171. printf("%s %s %s %s %s %s %s", eve.year , eve.month , eve.day , eve.hr , eve.min , eve.sec , eve.depth);y=0;
  172. printf("%s %s %s %s ",sen.name , dist , sen.min , sen.sec);
  173. printf("%.2f, %.2f, %.2f, %.2f, %d, %s, %f\n",Pob,Pth,obvelo,thvelo,k,sen.wtp,fabs(Pob-Pth));
  174. k++;
  175.  
  176. //printf("%.2f, %.2f, %d\n ",Pob,Pth,k);
  177. }
  178. //y=0;
  179. s=0;
  180. }
  181. //fgetc(stdin);
  182. }
  183. filenamec[0]='\0';
  184.  
  185.  
  186.  
  187. }
  188. return 0;
  189. }
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197. double theorem(double XB,double ZA)
  198. {
  199. double Ptravel,Zc,G,G0,Theta_A,Theta_B,Xc;
  200. if(ZA<=40){
  201. G0=5.10298;
  202. G=0.06659;
  203. }else{
  204. G0=7.804799;
  205. G=0.004573;
  206. }
  207. Zc=-1*(G0/G);
  208. Xc=(pow(XB,2)-2*(G0/G)*ZA-pow(ZA,2))/(2*XB);
  209. Theta_A=atan((ZA-Zc)/Xc);
  210. if(Theta_A<0)Theta_A=Theta_A+M_PI;
  211. Theta_A=M_PI-Theta_A;
  212. Theta_B=atan(-1*Zc/(XB-Xc));
  213. Ptravel=(1/G)*log(tan((Theta_A/2))/tan((Theta_B/2)));
  214. return Ptravel;
  215. }
  216.  
  217.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:11:25: fatal error: station_info.h: No such file or directory
compilation terminated.
stdout
Standard output is empty