Пример #1
0
    def __init__(self,
                 temperature=300.,
                 salinity=35.0,
                 sediment=.005,
                 fetch=0,
                 name='WaterConditions',
                 **kwargs):
        '''
        Assume units are SI for all properties. 'units' attribute assumes SI
        by default. This can be changed, but initialization takes SI.
        '''
        if isinstance(temperature, (Number)):
            self.temperature = TemperatureTS.constant(data=temperature)
        elif isinstance(temperature, (EnvProp)):
            self.temperature = temperature
        else:
            raise TypeError('Temperature is not an environment object or number')
        if isinstance(salinity, (Number)):
            self.salinity = TimeSeriesProp.constant(name='Salinity', units='psu', data=salinity)
        elif isinstance(salinity, (EnvProp)):
            self.salinity = salinity
        else:
            raise TypeError('Salinity is not an environment object or number')
        if isinstance(sediment, (Number)):
            self.sediment = TimeSeriesProp.constant(name='Sediment', units='kg/m^3', data=sediment)
        elif isinstance(sediment, (EnvProp)):
            self.sediment = sediment
        else:
            raise TypeError('Sediment is not an environment object or number')
#         self.wave_height = wave_height
        self.fetch = fetch
        self.kinematic_viscosity = 0.000001
        self.name = 'WaterConditions'
Пример #2
0
    def test_construction(self):

        u = None
        v = None
        with pytest.raises(ValueError):
            # mismatched data and dates length
            dates = []
            u = TimeSeriesProp(
                'u', 'm/s', [datetime.datetime.now(),
                             datetime.datetime.now()], [
                                 5,
                             ])

        u = TimeSeriesProp('u', 'm/s', [datetime.datetime.now()], [
            5,
        ])

        assert u is not None
        assert u.name == 'u'
        assert u.units == 'm/s'

        v = None
        with pytest.raises(ValueError):
            v = TimeSeriesProp('v', 'nm/hr', [datetime.datetime.now()], [
                5,
            ])

        assert v is None

        constant = TimeSeriesProp.constant('const', 'm/s', 5)
        assert constant.data[0] == 5
        assert all(constant.at(np.array((0, 0)), datetime.datetime.now()) == 5)
Пример #3
0
    def constant(cls,
                 name='',
                 speed=0,
                 direction=0,
                 units='m/s'):
        """
        utility to create a constant wind "timeseries"

        :param speed: speed of wind
        :param direction: direction -- degrees True, direction wind is from
                          (degrees True)
        :param units='m/s': units for speed, as a string, i.e. "knots", "m/s",
                           "cm/s", etc.

        .. note:: 
            The time for a constant wind timeseries is irrelevant. This
            function simply sets it to datetime.now() accurate to hours.
        """
        direction = direction * -1 - 90
        u = speed * np.cos(direction * np.pi / 180)
        v = speed * np.sin(direction * np.pi / 180)
        u = TimeSeriesProp.constant('u', units, u)
        v = TimeSeriesProp.constant('v', units, v)
        return super(VelocityTS, cls).constant(name, units, variables=[u, v])