Skip to content

03_design_with_openfast --> tower_design_driver.py #452

@maucollu

Description

@maucollu

Description

The tower design WEIS example does not seem to run properly

Steps to reproduce issue

Please provide a minimum working example (MWE) if possible

  1. Install WEIS
  2. Run the tower_design_driver.py WEIS example

Current behavior

Traceback (most recent call last):
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\wisdem\optimization_drivers\nlopt_driver.py", line 382, in run
    opt_prob.optimize(x_init)
    ~~~~~~~~~~~~~~~~~^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\nlopt.py", line 452, in optimize
    return _nlopt.opt_optimize(self, *args)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\wisdem\optimization_drivers\nlopt_driver.py", line 459, in _objfunc
    return float(f_new[0])
                 ~~~~~^^^
TypeError: 'float' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\mauri\WEIS\examples\03_design_with_openfast\tower_design_driver.py", line 13, in <module>
    wt_opt, modeling_options, opt_options = weis_main(fname_wt_input,
                                            ~~~~~~~~~^^^^^^^^^^^^^^^^
                                                     fname_modeling_options,
                                                     ^^^^^^^^^^^^^^^^^^^^^^^
                                                     fname_analysis_options,
                                                     ^^^^^^^^^^^^^^^^^^^^^^^
                                                     test_run=TEST_RUN
                                                     ^^^^^^^^^^^^^^^^^
                                                     )
                                                     ^
  File "C:\Users\mauri\WEIS\weis\main.py", line 110, in weis_main
    wt_opt, modeling_options, opt_options = run_weis(fname_wt_input,
                                            ~~~~~~~~^^^^^^^^^^^^^^^^
                                                     fname_modeling_options,
                                                     ^^^^^^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
                                                     prepMPI=False,
                                                     ^^^^^^^^^^^^^^
                                                     maxnP=maxnP)
                                                     ^^^^^^^^^^^^
  File "C:\Users\mauri\WEIS\weis\glue_code\runWEIS.py", line 185, in run_weis
    wt_opt.run_driver()
    ~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\problem.py", line 728, in run_driver
    return driver._run()
           ~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\driver.py", line 829, in _run
    self.result.success = not self.run()
                              ~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\wisdem\optimization_drivers\nlopt_driver.py", line 391, in run
    self._reraise()
    ~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\wisdem\optimization_drivers\nlopt_driver.py", line 533, in _reraise
    raise exc
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\wisdem\optimization_drivers\nlopt_driver.py", line 432, in _objfunc
    model.run_solve_nonlinear()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\system.py", line 5151, in run_solve_nonlinear
    self._solve_nonlinear()
    ~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\group.py", line 3846, in _solve_nonlinear
    self._nonlinear_solver._solve_with_cache_check()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\solvers\nonlinear\nonlinear_runonce.py", line 26, in _solve_with_cache_check
    self.solve()  # don't use caching
    ~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\solvers\nonlinear\nonlinear_runonce.py", line 45, in solve
    self._gs_iter()
    ~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\solvers\solver.py", line 937, in _gs_iter
    subsys._solve_nonlinear()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\explicitcomponent.py", line 328, in _solve_nonlinear
    self._compute_wrapper()
    ~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\explicitcomponent.py", line 282, in _compute_wrapper
    with self._call_user_function('compute'):
         ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\contextlib.py", line 162, in __exit__
    self.gen.throw(value)
    ~~~~~~~~~~~~~~^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\system.py", line 2998, in _call_user_function
    raise err_type(
        f"{self.msginfo}: Error calling {fname}(), {err}").with_traceback(trace)
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\system.py", line 2992, in _call_user_function
    yield
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\openmdao\core\explicitcomponent.py", line 299, in _compute_wrapper
    self.compute(self._inputs, self._outputs,
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 self._discrete_inputs, self._discrete_outputs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\WEIS\weis\aeroelasticse\openmdao_openfast.py", line 703, in compute
    case_list, case_name, dlc_generator  = self.run_FAST(inputs, discrete_inputs, fst_vt)
                                           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\WEIS\weis\aeroelasticse\openmdao_openfast.py", line 2344, in run_FAST
    self.cruncher = fastBatch.run_serial()
                    ~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mauri\WEIS\weis\aeroelasticse\runFAST_pywrapper.py", line 352, in run_serial
    self.cruncher.add_output(iout)
    ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\crunch.py", line 153, in add_output
    fname, stats, extremes, dels, damage =  self.process_single(output, **kwargs)
                                            ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\crunch.py", line 138, in process_single
    output.process(**kwargs)
    ~~~~~~~~~~~~~~^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\aeroelastic_output.py", line 682, in process
    self.dels, self.damage = self.get_DELs(**kwargs)
                             ~~~~~~~~~~~~~^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\aeroelastic_output.py", line 650, in get_DELs
    DELs[chan] = fatparams.compute_del(self[chan], self.elapsed_time,
                 ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                       goodman_correction=goodman,
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                       rainflow_bins=bins)
                                       ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\fatigue.py", line 354, in compute_del
    Nrf, Frf = self.get_rainflow_counts(chan, bins, S_ult=self.S_ult/load2, goodman=goodman)
               ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\pCrunch\fatigue.py", line 317, in get_rainflow_counts
    return fatpack.find_range_count(S, bins)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\fatpack\rainflow.py", line 646, in find_range_count
    N, bns = np.histogram(ranges, bins=bins, weights=weights)
             ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\numpy\lib\_histograms_impl.py", line 792, in histogram
    bin_edges, uniform_bins = _get_bin_edges(a, bins, range, weights)
                              ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\mauri\miniforge3\envs\weis-env-rir\Lib\site-packages\numpy\lib\_histograms_impl.py", line 449, in _get_bin_edges
    raise ValueError(
        f'Too many bins for data range. Cannot create {n_equal_bins} '
        f'finite-sized bins.')
ValueError: 'aeroelastic' <class FASTLoadCases>: Error calling compute(), Too many bins for data range. Cannot create 100 finite-sized bins.

Expected behavior

Run successfully the WEIS optmisation

Code versions

List versions only if relevant

  • Python
  • WEIS 2.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions