'''This file is part of AeoLiS.
AeoLiS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
AeoLiS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with AeoLiS. If not, see <http://www.gnu.org/licenses/>.
AeoLiS Copyright (C) 2015 Bas Hoonhout
bas.hoonhout@deltares.nl b.m.hoonhout@tudelft.nl
Deltares Delft University of Technology
Unit of Hydraulic Engineering Faculty of Civil Engineering and Geosciences
Boussinesqweg 1 Stevinweg 1
2629 HVDelft 2628CN Delft
The Netherlands The Netherlands
'''
from __future__ import absolute_import, division
import os
import docopt
import logging
import numpy as np
from aeolis.model import AeoLiSRunner, WindGenerator
#class StreamFormatter(logging.Formatter):
#
# def format(self, record):
# if record.levelname == 'INFO':
# return record.getMessage()
# else:
# return '%s: %s' % (record.levelname, record.getMessage())
[docs]def aeolis():
'''aeolis : a process-based model for simulating supply-limited aeolian sediment transport
Usage:
aeolis <config> [options]
Positional arguments:
config configuration file
Options:
-h, --help show this help message and exit
--callback=FUNC reference to callback function (e.g. example/callback.py:callback)
--restart=FILE model restart file
--verbose=LEVEL logging verbosity [default: 20]
--debug write debug logs
'''
print_license()
arguments = docopt.docopt(aeolis.__doc__)
logger = logging.getLogger('aeolis')
# start model
model = AeoLiSRunner(configfile=arguments['<config>'])
model.run(callback=arguments['--callback'],
restartfile=arguments['--restart'])
[docs]def wind():
'''aeolis-wind : a wind time series generation tool for the aeolis model
Usage:
aeolis-wind <file> [--mean=MEAN] [--max=MAX] [--duration=DURATION] [--timestep=TIMESTEP]
Positional arguments:
file output file
Options:
-h, --help show this help message and exit
--mean=MEAN mean wind speed [default: 10]
--max=MAX maximum wind speed [default: 30]
--duration=DURATION duration of time series [default: 3600]
--timestep=TIMESTEP timestep of time series [default: 60]
'''
print_license()
arguments = docopt.docopt(wind.__doc__)
# create random wind time series
generator = WindGenerator(mean_speed=float(arguments['--mean']),
max_speed=float(arguments['--max']),
dt=float(arguments['--timestep']))
generator.generate(duration=float(arguments['--duration']))
generator.write_time_series(arguments['<file>'])
u = generator.get_time_series()[1]
fmt = '%-4s : %6.3f m/s'
print(fmt % ('min', np.min(u)))
print(fmt % ('mean', np.mean(u)))
print(fmt % ('max', np.max(u)))
def print_license():
print('AeoLiS Copyright (C) 2015 Bas Hoonhout')
print('This program comes with ABSOLUTELY NO WARRANTY.')
print('This is free software, and you are welcome to redistribute it')
print('under certain conditions; See LICENSE.txt for details.')
print('')
if __name__ == '__main__':
aeolis()