示例#1
0
def test_grid_wind_curv():
    # curvlinear grid
    curv = Grid(wind_file, topology_file, grid_type=2)
    time = date_to_sec(datetime(2006, 3, 31, 21))
    vel = curv.get_value(time, (-122.934656, 38.27594))
    print "Curv grid - vel: {0}\n".format(vel)
    assert vel.item() != 0
示例#2
0
    def __init__(self,
                 wind_file=None,
                 topology_file=None,
                 grid_type=1,
                 drift_angle=0,
                 extrapolation_is_allowed=False,
                 time_offset=0,
                 **kwargs):
        """
        :param wind_file: file containing wind data on a grid
        :param topology_file: Default is None. When exporting topology, it
                              is stored in this file
        :param wind_scale: Value to scale wind data
        :param extrapolate: Allow current data to be extrapolated before and
                            after file data
        :param time_offset: Time zone shift if data is in GMT

        Pass optional arguments to base class
        uses super: super(ShipDriftMover,self).__init__(\*\*kwargs)
        """

        if not os.path.exists(wind_file):
            raise ValueError(
                'Path for wind file does not exist: {0}'.format(wind_file))

        if topology_file is not None:
            if not os.path.exists(topology_file):
                raise ValueError(
                    'Path for Topology file does not exist: {0}'.format(
                        topology_file))

        # is wind_file and topology_file is stored with cy_gridwind_mover?
        self.wind_file = wind_file
        self.topology_file = topology_file

        self.name = os.path.split(wind_file)[1]
        self.drift_angle = drift_angle
        self._wind_scale = kwargs.pop('wind_scale', 1)

        self.grid_type = grid_type
        self.grid = Grid(wind_file, topology_file, grid_type)

        self.mover = Mover()

        super(ShipDriftMover, self).__init__(**kwargs)

        # have to override any uncertainty
        # self.grid.load_data(wind_file, topology_file)

        self.model_time = 0

        self.positions = np.zeros((0, 3), dtype=world_point_type)
        self.delta = np.zeros((0, 3), dtype=world_point_type)
        self.status_codes = np.zeros((0, 1), dtype=status_code_type)

        self.array_types.update(
            {'windages', 'windage_range', 'windage_persist'})
示例#3
0
def test_grid_wind_rect():
    '''
    check TimeGridWindRect correctly parses data
    '''
    idx = 5
    file_ = testdata['GridWindMover']['wind_rect']
    with nc.Dataset(file_) as data:
        time = nc.num2date(data.variables['time'][idx],
                           units=data.variables['time'].units)
        long_lat = (data.variables['lon'][idx], data.variables['lat'][idx])
        exp_vel = (data.variables['air_u'][idx][idx][idx],
                   data.variables['air_v'][idx][idx][idx])

    rect = Grid(file_)
    time = date_to_sec(time)
    vel = rect.get_value(time, long_lat)
    print "\nRect grid - vel: {0}".format(vel)
    print "Rect grid - expected_vel: {0}".format(exp_vel)
    assert (vel.item() == exp_vel)