From: Benjamín C. <bic...@in...> - 2013-05-29 15:00:29
|
Hi Rudy, The modelling is for tsunami inundation. We have already computed the far field propagation with an HD model, and want to use those results as inputs for ANUGA. I have already done this with TMS files, but since we a field of results I wanted to use a STS file, where I can save several time series at several locations (these points cover the boundary segment where I want to impose the boundary condition). Like I said before, I think my problem can be either on the creation of the STS file, or in the implementation of the boundary condition. This is the script that generates the STS file (I think it works fine, since I can read the data later): ########################################################################### import numpy as np from Scientific.IO.NetCDF import NetCDFFile from anuga.config import netcdf_float #FILES----------------------------------------- lista_puntos = 'output_points.txt' time_series = 'output_TS.txt' sts_file = 'boundary_file.sts' #------------------------------------------------- header = 1 puntos = np.loadtxt(lista_puntos, dtype = 'float') num_puntos = len(puntos) data = np.loadtxt(time_series, dtype = 'float', skiprows = header) time = data[:,0] stage = data[:,1:1+num_puntos] xmom = data[:,1+num_puntos:1+2*num_puntos] ymom = data[:,1+2*num_puntos:1+3*num_puntos] fid = NetCDFFile(sts_file, 'w') fid.xllcorner = 0 fid.yllcorner = 0 fid.datum = 'wgs84' fid.zone = -1 fid.false_easting = 500000 fid.false_northing = 10000000 fid.starttime = time.min() fid.createDimension('number_of_timesteps', len(time)) fid.createDimension('number_of_points', num_puntos) fid.createVariable('time', netcdf_float, ('number_of_timesteps',)) fid.variables['time'][:] = time fid.createVariable('x', netcdf_float, ('number_of_points',)) fid.variables['x'][:] = puntos[:,0] fid.createVariable('y', netcdf_float, ('number_of_points',)) fid.variables['y'][:] = puntos[:,1] fid.createVariable('stage', netcdf_float, ('number_of_timesteps','number_of_points')) fid.variables['stage'][:] = stage fid.createVariable('xmomentum', netcdf_float, ('number_of_timesteps','number_of_points')) fid.variables['xmomentum'][:] = xmom fid.createVariable('ymomentum', netcdf_float, ('number_of_timesteps','number_of_points')) fid.variables['ymomentum'][:] = ymom fid.close() ########################################################################### Then, when I run the ANUGA model, this is the part of the script that defines the boundary conditions: ########################################################################### #------------------------- # Boundary Conditions #------------------------- Bts = anuga.Dirichlet_boundary([0, 0, 0]) Br = anuga.Reflective_boundary(domain) Wave = anuga.File_boundary(project.boundary_filename, domain, boundary_polygon = [[322560.02328875131,7036137.0643476974], [323938.32220563322,7036143.4439407801], [327769.16877814900,7038799.6386637120], [327695.68425163173,7042666.5078929486], [325132.83999490051,7044487.4343588827]], use_cache = True) domain.set_boundary({'water': Wave, 'land': Bts, 'exterior': Br}) ########################################################################### And this is the error I get (I think it has to do with the boundary polygon (which should be an optional argument, tho): ########################################################################### File "C:\Python25\lib\site-packages\anuga\abstract_2d_finite_volumes\generic_boundary_conditions.py", line 379, in __init__ boundary_polygon=boundary_polygon) File "C:\Python25\lib\site-packages\anuga\abstract_2d_finite_volumes\util.py", line 44, in file_function boundary_polygon, output_centroids) File "C:\Python25\lib\site-packages\anuga\abstract_2d_finite_volumes\file_function.py", line 135, in file_function verbose=verbose) File "C:\Python25\lib\site-packages\anuga\caching\caching.py", line 376, in cache T = my_F(*args, **kwargs) # Built-in 'apply' deprecated in Py3K File "C:\Python25\lib\site-packages\anuga\abstract_2d_finite_volumes\file_function.py", line 212, in _file_function output_centroids=False)#output_centroids) File "C:\Python25\lib\site-packages\anuga\abstract_2d_finite_volumes\file_function.py", line 405, in get_netcdf_file_function * if boundary_id[len(boundary_id)-1]==len(boundary_polygon)-1 \* *IndexError: list index out of range* ########################################################################### If anyone has experience on this, I'd be much appreciated. Cheers, 2013/5/29 Rudy VanDrie <ru...@ba...> > Hi Benjamín, > > I have not used STS file my self... > but if you explain what you want to occur at the boundary I can probably > help? > I used all manner of time dependent conditions at boundaries.... > > Firstly is you model for tsunami, tide, or flood, or something else? > > If STS is something to do with tsunami, more than likely some one using > ANUGA primarily for that will answer. > > I primarily use ANUGA for flood and tide etc.... > Setting up a tide boundary is quite easy. > > Something like this will do it: > > > > #------------------------------------------------------------------------------ > # ****** Setup BOUNDARY CONDITIONS AT THE START OF THE RUN ****** > > #------------------------------------------------------------------------------ > print 'Available boundary tags', domain.get_boundary_tags() > Br = anuga.Reflective_boundary(domain) > func = file_function(join('03_FORCING', 'TIDAL_TS', > 'Tide_2013_03_28_24hrs.tms'), > quantities='rate') > Bw = anuga.Time_boundary(domain=domain, function=lambda t: [func(t)[0], > 0.0, 0.0], default_boundary = 0.0) > # boundary conditions > domain.set_boundary({'west': Bw, > 'south': Bw, > 'east':Br, > 'north': Br}) > #+++++END_BOUNDARY_CONDITIONS_BLOCK > > This applies a simple time series ( Time{seconds}, Tidelevel {metres}) > which is a csv, > and is then converted to tms > > Regards Rudy > > > > > On 29/05/2013 10:03 PM, anu...@li... wrote: > > Send Anuga-user mailing list submissions to > anu...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/anuga-user > or, via email, send a message with subject or body 'help' to > anu...@li... > > You can reach the person managing the list at > anu...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Anuga-user digest..." > > > > Today's Topics: > > 1. Field boundary condition (Benjam?n Carri?n) > > > > ------------------------------------------------------------------------------ > Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET > Get 100% visibility into your production application - at no cost. > Code-level diagnostics for performance bottlenecks with <2% overhead > Download for free and get started troubleshooting in minutes.http://p.sf.net/sfu/appdyn_d2d_ap1 > > > > _______________________________________________ > Anuga-user mailing lis...@li...https://lists.sourceforge.net/lists/listinfo/anuga-user > > > > > ------------------------------------------------------------------------------ > Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET > Get 100% visibility into your production application - at no cost. > Code-level diagnostics for performance bottlenecks with <2% overhead > Download for free and get started troubleshooting in minutes. > http://p.sf.net/sfu/appdyn_d2d_ap1 > _______________________________________________ > Anuga-user mailing list > Anu...@li... > https://lists.sourceforge.net/lists/listinfo/anuga-user > > -- Benjamín Carrión Aretxabala -------------------------------------------------------------------- Por favor, considera el medio ambiente antes de imprimir este e-mail |