Changeset 218
- Timestamp:
- Aug 25, 2004, 4:43:44 AM (21 years ago)
- Location:
- inundation/ga/storm_surge/pyvolution
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/ga/storm_surge/pyvolution/domain.py
r215 r218 137 137 def set_quantity(self, name, X, location='vertices'): 138 138 """Set values for named quantity 139 139 140 140 name: Name of quantity 141 141 X: Compatible list, Numeric array, const or function (see below) -
inundation/ga/storm_surge/pyvolution/test_shallow_water.py
r215 r218 659 659 660 660 ##################################################### 661 def test_distribute_basic(self): 662 #Using test data generated by pyvolution-2 663 #Assuming no friction and flat bed (0.0) 664 665 a = [0.0, 0.0] 666 b = [0.0, 2.0] 667 c = [2.0, 0.0] 668 d = [0.0, 4.0] 669 e = [2.0, 2.0] 670 f = [4.0, 0.0] 671 672 points = [a, b, c, d, e, f] 673 #bac, bce, ecf, dbe 674 vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]] 675 676 domain = Domain(points, vertices) 677 678 val0 = 2. 679 val1 = 4. 680 val2 = 8. 681 val3 = 2. 682 683 domain.set_quantity('level', [val0, val1, val2, val3], 'centroids') 684 L = domain.quantities['level'].vertex_values 685 686 #First order 687 domain.order = 1 688 domain.distribute_to_vertices_and_edges() 689 assert allclose(L[1], val1) 690 691 #Second order 692 domain.order = 2 693 domain.distribute_to_vertices_and_edges() 694 assert allclose(L[1], [2.2, 4.9, 4.9]) 695 696 697 698 def test_distribute_away_from_bed(self): 699 #Using test data generated by pyvolution-2 700 #Assuming no friction and flat bed (0.0) 701 702 a = [0.0, 0.0] 703 b = [0.0, 2.0] 704 c = [2.0, 0.0] 705 d = [0.0, 4.0] 706 e = [2.0, 2.0] 707 f = [4.0, 0.0] 708 709 points = [a, b, c, d, e, f] 710 #bac, bce, ecf, dbe 711 vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]] 712 713 domain = Domain(points, vertices) 714 L = domain.quantities['level'].vertex_values 715 716 def level(x,y): 717 return x**2 718 719 domain.set_quantity('level', level, 'centroids') 720 721 a, b = domain.quantities['level'].compute_gradients() 722 assert allclose(a[1], 3.33333334) 723 assert allclose(b[1], 0.0) 724 725 domain.order = 1 726 domain.distribute_to_vertices_and_edges() 727 assert allclose(L[1], 1.77777778) 728 729 domain.order = 2 730 domain.distribute_to_vertices_and_edges() 731 assert allclose(L[1], [0.57777777, 2.37777778, 2.37777778]) 732 733 734 735 def test_distribute_away_from_bed1(self): 736 #Using test data generated by pyvolution-2 737 #Assuming no friction and flat bed (0.0) 738 739 a = [0.0, 0.0] 740 b = [0.0, 2.0] 741 c = [2.0, 0.0] 742 d = [0.0, 4.0] 743 e = [2.0, 2.0] 744 f = [4.0, 0.0] 745 746 points = [a, b, c, d, e, f] 747 #bac, bce, ecf, dbe 748 vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]] 749 750 domain = Domain(points, vertices) 751 L = domain.quantities['level'].vertex_values 752 753 def level(x,y): 754 return x**4+y**2 755 756 domain.set_quantity('level', level, 'centroids') 757 #print domain.quantities['level'].centroid_values 758 759 a, b = domain.quantities['level'].compute_gradients() 760 assert allclose(a[1], 25.18518519) 761 assert allclose(b[1], 3.33333333) 762 763 domain.order = 1 764 domain.distribute_to_vertices_and_edges() 765 assert allclose(L[1], 4.9382716) 766 767 domain.order = 2 768 domain.distribute_to_vertices_and_edges() 769 assert allclose(L[1], [1.07160494, 6.46058131, 7.28262855]) 770 771 772 661 773 def test_distribute_near_bed(self): 662 #Assuming no friction 663 664 from config import g 665 774 #Using test data generated by pyvolution-2 775 #Assuming no friction and flat bed (0.0) 776 666 777 a = [0.0, 0.0] 667 778 b = [0.0, 2.0] … … 676 787 677 788 domain = Domain(points, vertices) 678 domain.order = 2 679 680 #Set up for a gradient of ( 10,0) at mid triangle789 790 791 #Set up for a gradient of (3,0) at mid triangle 681 792 def slope(x, y): 682 793 return 10*x … … 689 800 domain.set_quantity('level', level, 'centroids') 690 801 802 #print domain.quantities['elevation'].centroid_values 803 #print domain.quantities['level'].centroid_values 804 691 805 E = domain.quantities['elevation'].vertex_values 692 806 L = domain.quantities['level'].vertex_values 693 807 694 808 #print E 809 domain.order = 1 695 810 domain.distribute_to_vertices_and_edges() 696 #print L 697 698 #FIXME: HERTIL 24/8/4. Write similar test using pyvolution2 and 699 #get test data from that 700 811 assert allclose(L[1], [0.19999999, 20.05, 20.05]) 812 813 domain.order = 2 814 domain.distribute_to_vertices_and_edges() 815 assert allclose(L[1], [0.1, 20.1, 20.1]) 816 817 def test_distribute_near_bed1(self): 818 #Using test data generated by pyvolution-2 819 #Assuming no friction and flat bed (0.0) 820 821 a = [0.0, 0.0] 822 b = [0.0, 2.0] 823 c = [2.0, 0.0] 824 d = [0.0, 4.0] 825 e = [2.0, 2.0] 826 f = [4.0, 0.0] 827 828 points = [a, b, c, d, e, f] 829 #bac, bce, ecf, dbe 830 vertices = [ [1,0,2], [1,2,4], [4,2,5], [3,1,4]] 831 832 domain = Domain(points, vertices) 833 834 835 #Set up for a gradient of (3,0) at mid triangle 836 def slope(x, y): 837 return x**4+y**2 838 839 h = 0.1 840 def level(x,y): 841 return slope(x,y)+h 842 843 domain.set_quantity('elevation', slope) 844 domain.set_quantity('level', level) 845 846 #print domain.quantities['elevation'].centroid_values 847 #print domain.quantities['level'].centroid_values 848 849 E = domain.quantities['elevation'].vertex_values 850 L = domain.quantities['level'].vertex_values 851 852 #print E 853 domain.order = 1 854 domain.distribute_to_vertices_and_edges() 855 assert allclose(L[1], [4.19999999, 16.07142857, 20.02857143]) 856 857 domain.order = 2 858 domain.distribute_to_vertices_and_edges() 859 assert allclose(L[1], [4.1, 16.1, 20.1]) 860 861 #FIXME: Make version with variable height!!!!!!!! 701 862 702 863 def test_second_order_flat_bed_onestep(self):
Note: See TracChangeset
for help on using the changeset viewer.