예제 #1
0
    def __init__(self, angle=None, **kwargs):
        """
            :param angle: scalar field of cell rotation angles
                          (for rotated/distorted grids)
        """
        if 'variables' in kwargs:
            variables = kwargs['variables']
            if len(variables) == 2:
                variables.append(
                    TimeseriesData(name='constant w',
                                   data=[0.0],
                                   time=Time.constant_time(),
                                   units='m/s'))

            kwargs['variables'] = variables

        if angle is None:
            df = None

            if kwargs.get('dataset', None) is not None:
                df = kwargs['dataset']
            elif kwargs.get('grid_file', None) is not None:
                df = gridded.utilities.get_dataset(kwargs['grid_file'])

            if df is not None and 'angle' in df.variables.keys():
                # Unrotated ROMS Grid!
                self.angle = Variable(name='angle',
                                      units='radians',
                                      time=Time.constant_time(),
                                      grid=kwargs['grid'],
                                      data=df['angle'])
            else:
                self.angle = None
        else:
            self.angle = angle

        super(VelocityGrid, self).__init__(**kwargs)
예제 #2
0
    def constant(
        cls,
        name=None,
        units=None,
        data=None,
    ):
        if any(var is None for var in (name, data, units)):
            raise ValueError("name, data, or units may not be None")

        if not isinstance(data, Number):
            raise TypeError('{0} data must be a number'.format(name))

        t = Time.constant_time()

        return cls(name=name, units=units, time=t, data=[data])
예제 #3
0
    def __init__(self, angle=None, **kwargs):
        """
            :param angle: scalar field of cell rotation angles
                          (for rotated/distorted grids)
        """
        if 'variables' in kwargs:
            variables = kwargs['variables']
            if len(variables) == 2:
                variables.append(TimeseriesData(name='constant w',
                                                data=[0.0],
                                                time=Time.constant_time(),
                                                units='m/s'))

            kwargs['variables'] = variables

        if angle is None:
            df = None

            if kwargs.get('dataset', None) is not None:
                df = kwargs['dataset']
            elif kwargs.get('grid_file', None) is not None:
                df = gridded.utilities.get_dataset(kwargs['grid_file'])

            if df is not None and 'angle' in df.variables.keys():
                # Unrotated ROMS Grid!
                self.angle = Variable(name='angle',
                                      units='radians',
                                      time=Time.constant_time(),
                                      grid=kwargs['grid'],
                                      data=df['angle'])
            else:
                self.angle = None
        else:
            self.angle = angle

        super(VelocityGrid, self).__init__(**kwargs)
예제 #4
0
from gnome.outputters import Renderer
from gnome.outputters import NetCDFOutput
from gnome.tamoc import tamoc_spill

# define base directory
base_dir = os.path.dirname(__file__)

x, y = np.mgrid[-30:30:61j, -30:30:61j]
y = np.ascontiguousarray(y.T)
x = np.ascontiguousarray(x.T)
# y += np.sin(x) / 1
# x += np.sin(x) / 5
g = Grid_S(node_lon=x,
          node_lat=y)
g.build_celltree()
t = Time.constant_time()
angs = -np.arctan2(y, x)
mag = np.sqrt(x ** 2 + y ** 2)
vx = np.cos(angs) * mag
vy = np.sin(angs) * mag
vx = vx[np.newaxis, :] * 5
vy = vy[np.newaxis, :] * 5

vels_x = Variable(name='v_x', units='m/s', time=t, grid=g, data=vx)
vels_y = Variable(name='v_y', units='m/s', time=t, grid=g, data=vy)
vg = GridCurrent(variables=[vels_y, vels_x], time=t, grid=g, units='m/s')


def make_model(images_dir=os.path.join(base_dir, 'images')):
    print 'initializing the model'