source: anuga_work/development/alpha_validation/find_alpha.py @ 4631

Last change on this file since 4631 was 4537, checked in by nick, 17 years ago
File size: 3.2 KB
Line 
1
2from anuga.abstract_2d_finite_volumes import domain
3from anuga.shallow_water import Domain
4from anuga.geospatial_data.geospatial_data import Geospatial_data
5from anuga.coordinate_transforms import Geo_reference
6from anuga.pmesh.mesh_interface import create_mesh_from_regions
7from anuga.shallow_water import Reflective_boundary
8from anuga.utilities.numerical_tools import cov
9from Numeric import array, resize,shape,Float,zeros,take,argsort
10from pylab import plot, ion, hold,savefig,semilogx,plotting
11
12
13poly_topo = [[664000,7752000],[664000,7754000],
14             [666000,7754000],[666000,7752000]]
15mesh_dir_name = 'temp.msh'
16                 
17create_mesh_from_regions(poly_topo,
18                         boundary_tags={'back': [2], 'side': [1,3],
19                                        'ocean': [0]},
20                         maximum_triangle_area=100,
21                         filename=mesh_dir_name,
22                         use_cache=True,
23                         verbose=True)
24
25
26topo_dir_name = 'pt_hedland_export.txt'
27sample = 'sample.txt'
28remainder ='remainder.txt'
29#split topo data
30G = Geospatial_data(file_name = topo_dir_name)
31print 'start split'
32
33G_sample,G_loss= G.split(0.1, True)
34
35G_small, G_other = G_sample.split(0.1,True)
36
37
38
39alphas = [0.000001, 0.00001, 0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0,1000.0,10000.0]
40#alphas = [0.001,1,100]
41domains = {}
42#domains = []
43
44print 'Setup computational domain'
45for alpha in alphas:
46   
47    #think about making domain absolute when it is created
48    domain = Domain(mesh_dir_name, use_cache=False, verbose=True)
49    print domain.statistics()
50    domain.set_quantity('elevation', 
51                    geospatial_data = G_other,
52                    use_cache = True,
53                    verbose = True,
54                    alpha = alpha)
55    domains[alpha]=domain
56
57points=G_small.get_data_points()
58data=array([],typecode=Float)
59data=resize(data,(len(points),3+len(alphas)))
60#gets relative point from sample
61
62data[:,0]=points[:,0]
63data[:,1]=points[:,1]
64print'geo',domain.geo_reference,points[0:10],points[0:10,0]
65elevation_sample=G_small.get_attributes(attribute_name='elevation')
66
67data[:,2]=elevation_sample
68
69print'data',data[0:10],len(alphas)
70normal_cov=array(zeros([len(alphas),2]),typecode=Float)
71i=0
72
73for domain in domains:
74#    print'domain',domain
75    points_geo=domains[domain].geo_reference.change_points_geo_ref(points)
76   
77
78    print'poin',points_geo[0:10],elevation_sample[0:10]
79    print'quantities',domains[domain].get_quantity_names()
80    elevation_predicted=domains[domain].quantities['elevation'].get_values(interpolation_points=points_geo)
81    print'elevation_predicted',elevation_predicted[0:10],len(points),len(elevation_predicted)
82   
83    data[:,i+3]=elevation_predicted
84    sample_cov= cov(elevation_sample)
85
86    ele_cov= cov(elevation_sample-elevation_predicted)
87    normal_cov[i,:]= [domain,ele_cov/sample_cov]
88
89    print'cov',alpha,'= ',normal_cov, ele_cov, sample_cov
90    i+=1
91   
92   
93print'data',data[100:200]
94print'normal cov',normal_cov
95normal_cov0=normal_cov[:,0]
96normal_cov_new=take(normal_cov,argsort(normal_cov0))
97semilogx(normal_cov_new[:,0],normal_cov_new[:,1])
98savefig("alphas",dpi=300)
99   
Note: See TracBrowser for help on using the repository browser.