prints
[wrf-fire-matlab.git] / cycling / perim_distance.m
blob16f48ce76880ed8c62ee005f4ddc4daa0e73878e
1 function [d,v] =perim_distance(w,g)
2 %computes distance from ignition to furthest point on perimeter, avg ROS to get there 
3 %in straight line
4 % input   -   w, struct with tign
5 %                  g, struct with detections
6  %output   -d,v     distance (m), ros (m/s)
7  
8  r = subset_domain(w);
9  min_t = min(r.tign_g(:));
10  max_t = max(r.tign_g(:)-10);
12  t = max_t-min_t;
13  [x0,y0] = find(r.tign_g==min_t);
14  fm = r.tign_g < max_t;
15  longs = r.fxlong(fm);
16  longs = longs(:);
17  lats = r.fxlat(fm);
18  lats = lats(:);
20  E = wgs84Ellipsoid;
21  %loop through the distances...
22  point = [r.fxlat(x0,y0),r.fxlong(x0,y0)];
23  ignition_point = point;
24  d = 0;
26  for i=1:10:length(longs)
27      new_point = [lats(i),longs(i)];
28      new_d = distance(new_point,ignition_point,E);
29      if new_d > d
30          d = new_d;
31          point = new_point
32      end
33  end
34  v = d/t;
36  dd = 0;
37  det_ignition = [0 0];
38  %compute distance in satellite data
39  for j = 1:length(g)
40      if sum(g(j).det(3:5)) > 0
41          dm = g(j).data > 6;
42          det_longs = g(j).xlon(dm);
43          det_longs = det_longs(:);
44          det_lats = g(j).xlat(dm);
45          det_lats = det_lats(:);
46          %pick ignition point
47          if norm(det_ignition) ==0
48              det_ignition(1) = mean(det_lats);
49              det_ignition(2) = mean(det_longs);
50              det_start = g(j).time;
51          else 
52              for k = 1:length(det_lats)
53                  new_det_point = [det_lats(k),det_longs(k)];
54                  new_dd = distance(new_det_point,det_ignition,E);
55                  if new_dd > dd
56                      dd = new_dd;
57                      det_point = new_det_point;
58                      det_time = g(j).time;
59                  end
60                  
61              end
62          end
63      end
64  end
65  det_t = (det_time-det_start)*(3600*24);
66  dv = dd/det_t;
67  fprintf('Forecast distanc: %0.2f     Forecast ROS: %0.2f  \n',d,v)
68  fprintf('Detection distance : %0.2f   Detection ROS: %0.2f \n',dd,dv);
70  n = 10;
71  c_lines = linspace(min_t,max_t,n);
73  figure,contour(r.fxlong,r.fxlat,r.tign_g,c_lines,'k')
74  hold on
75  scatter(ignition_point(2),ignition_point(1),500,'*r')
76  scatter(point(2),point(1),500,'r*');
77  title('Foecast points')
78  hold off
80  figure,contour(r.fxlong,r.fxlat,r.tign_g,c_lines,'k')
81  title('Detection Points');
82  hold on
83  scatter(det_ignition(2),det_ignition(1),500,'*r');
84  scatter(det_point(2),det_point(1),500,'*r');
85  hold off
87 end