Changeset 5731


Ignore:
Timestamp:
Sep 4, 2008, 8:28:49 PM (14 years ago)
Author:
steve
Message:

Unit test for second order timestepping

Location:
anuga_work/development/anuga_1d
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • anuga_work/development/anuga_1d/dam_h_elevation.py

    r5728 r5731  
    11import os
    22from math import sqrt, sin, cos, pi, exp
    3 from shallow_water_domain_new import *
     3from shallow_water_domain import *
    44from Numeric import zeros, Float
    55#from analytic_dam_sudi import AnalyticDam
     
    4141domain=Domain(points)
    4242
    43 domain.default_order = 2
     43domain.default_order = 1
    4444domain.default_time_order = 2
    4545domain.cfl = 1.0
     
    140140        from pylab import clf,plot,title,xlabel,ylabel,legend,savefig,show,hold,subplot,ion
    141141        #print 'Test1'
    142         #hold(False)
    143         clf()
     142        hold(False)
     143        #clf()
    144144        #print 'test 2'
    145145        plot1 = subplot(211)
    146146        #print 'test 3'
    147147   
     148       
     149        #print 'Test4'
     150
    148151        plot(X,ElevationQ,X,HeightQ)
    149         #print 'Test4'
    150152        plot1.set_ylim([-1,12])
    151153        xlabel('Position')
     
    159161        plot2 = subplot(212)
    160162        plot(X,MomentumQ)
    161         #plot2.set_ylim([-5,35])
     163        plot2.set_ylim([-1,1])
     164       
    162165        #legend( ('Numerical Solution', 'for momentum'),
    163166        #   'upper right', shadow=False)
  • anuga_work/development/anuga_1d/shallow_water_domain.py

    r5727 r5731  
    9191        self.quantities_to_be_stored = ['stage','xmomentum']
    9292
    93 
     93        self.__doc__ = 'shallow_water_domain'
    9494
    9595
  • anuga_work/development/anuga_1d/shallow_water_domain_new.py

    r5727 r5731  
    8888        self.quantities_to_be_stored = ['stage', 'xmomentum', 'elevation']
    8989
    90 
     90        self.__doc__ = 'shallow_water_domain_new'
    9191
    9292
  • anuga_work/development/anuga_1d/test_shallow_water.py

    r5728 r5731  
    55
    66
    7 from shallow_water_domain_new import *
    8 from shallow_water_domain_new import flux_function as domain_flux_function
    9 
    10 from Numeric import allclose, array, ones, Float, maximum
     7from shallow_water_domain import *
     8from shallow_water_domain import flux_function as domain_flux_function
     9
     10from Numeric import allclose, array, ones, Float, maximum, zeros
    1111
    1212
     
    119119
    120120
    121     def test_evolve(self):
    122         """
    123         Compare shallow_water_domain gravity calculation
     121    def test_evolve_first_order(self):
     122        """
     123        Compare still lake solution for various versions of shallow_water_domain
    124124        """
    125125               
     
    132132        domain.set_boundary({'exterior' : Reflective_boundary(domain)})
    133133
     134        domain.default_order = 1
     135        domain.default_time_order = 1
    134136        yieldstep=10.0
    135137        finaltime=10.0
    136138
    137139        for t in domain.evolve(yieldstep=yieldstep, finaltime=finaltime):
    138             domain.write_time()
    139        
    140         print domain.quantities['stage'].vertex_values
    141         print domain.quantities['elevation'].vertex_values
    142         print domain.quantities['xmomentum'].vertex_values
    143 
    144 
    145         print domain.quantities['stage'].centroid_values
    146         print domain.quantities['elevation'].centroid_values
    147         print domain.quantities['xmomentum'].centroid_values   
    148 
    149         #assert allclose( array([-34.3, -24.5, -14.7], Float), domain.quantities['xmomentum'].explicit_update )
     140            pass
     141       
     142##      print domain.quantities['stage'].vertex_values
     143##      print domain.quantities['elevation'].vertex_values
     144##        print domain.quantities['xmomentum'].vertex_values
     145##
     146##
     147##        print domain.quantities['stage'].centroid_values
     148##      print domain.quantities['elevation'].centroid_values
     149##        print domain.quantities['xmomentum'].centroid_values   
     150
     151        assert allclose( 10.0*ones(10), domain.quantities['stage'].centroid_values )
     152        assert allclose( zeros(10), domain.quantities['xmomentum'].centroid_values )
     153
     154
     155    def test_evolve_euler_second_order_space(self):
     156        """
     157        Compare still lake solution for various versions of shallow_water_domain
     158        """
     159               
     160        def slope_square(x):
     161            return maximum(4.0-(x-5.0)*(x-5.0), 0.0)
     162                       
     163        domain = Domain(self.points2)
     164        domain.set_quantity('stage',10.0)
     165        domain.set_quantity('elevation',slope_square)
     166        domain.set_boundary({'exterior' : Reflective_boundary(domain)})
     167
     168        domain.default_order = 2
     169        domain.default_time_order = 1
     170        yieldstep=10.0
     171        finaltime=10.0
     172
     173        for t in domain.evolve(yieldstep=yieldstep, finaltime=finaltime):
     174            pass
     175       
     176        assert allclose( 10.0*ones(10), domain.quantities['stage'].centroid_values )
     177        assert allclose( zeros(10), domain.quantities['xmomentum'].centroid_values )
     178
     179    def test_evolve_euler_second_order_space_time(self):
     180        """
     181        Compare still lake solution for various versions of shallow_water_domain
     182        """
     183               
     184        def slope_square(x):
     185            return maximum(4.0-(x-5.0)*(x-5.0), 0.0)
     186                       
     187        domain = Domain(self.points2)
     188        domain.set_quantity('stage',10.0)
     189        domain.set_quantity('elevation',slope_square)
     190        domain.set_boundary({'exterior' : Reflective_boundary(domain)})
     191
     192        domain.default_order = 2
     193        domain.default_time_order = 2
     194        yieldstep=10.0
     195        finaltime=10.0
     196
     197        for t in domain.evolve(yieldstep=yieldstep, finaltime=finaltime):
     198            pass
     199       
     200        assert allclose( 10.0*ones(10), domain.quantities['stage'].centroid_values )
     201        assert allclose( zeros(10), domain.quantities['xmomentum'].centroid_values )
     202
    150203
    151204
Note: See TracChangeset for help on using the changeset viewer.