Skip to content

TST : Problems passing the tests #7

Description

@emvalbuena

A user reported via email having problems to pass the tests and use the notebooks.

Tests

============================= test session starts =============================
platform win32 -- Python 3.7.9, pytest-6.2.1, py-1.10.0, pluggy-0.13.1
rootdir: D:\Software\AeroSandbox\winglets-master, configfile: pytest.ini
plugins: dash-1.10.0
collected 16 items

tests\test_model.py ......                                               [ 37%]
tests\test_optimizer.py F.sF                                             [ 62%]
tests\test_solver.py FsFFsF                                              [100%]

================================== FAILURES ===================================
__________________________ TestOptimizer.test_put_up __________________________

self = <test_optimizer.TestOptimizer object at 0x000002D286A928C8>
optimizer = <winglets.optimizer.WingletOptimizer object at 0x000002D286AF2EC8>

    def test_put_up(self, optimizer):
    
        from winglets.optimizer import NAME_CD, NAME_CM
    
        results = optimizer.put_up()
    
        expected = {NAME_CD: 0.005628661627242771, NAME_CM: -51.54848089843833}
    
>       assert expected == results
E       AssertionError: assert {'CDi': 0.005...4848089843833} == {'CDi': 0.005...4848089843823}
E         Differing items:
E         {'CDi': 0.005628661627242771} != {'CDi': 0.005628661627242648}
E         {'Cm': -51.54848089843833} != {'Cm': -51.54848089843823}
E         Use -v to get the full diff

tests\test_optimizer.py:163: AssertionError
__________________ TestOptimizer.test_evaluate_optimal_point __________________

self = <test_optimizer.TestOptimizer object at 0x000002D286ADB848>
optimizer = <winglets.optimizer.WingletOptimizer object at 0x000002D2871A2888>

    def test_evaluate_optimal_point(self, optimizer):
    
        result = OptimizeResult(
            fun=0.9723818601228951,
            hess_inv=None,
            jac=np.array([7.32747193e-07]),
            message=b"CONVERGENCE NORM_OF_PROJECTED_GRADIENT_<=_PGTOL",
            nfev=10,
            nit=4,
            njev=5,
            status=0,
            success=True,
            x=np.array([1, 1, 1, 1, 0.85397381, 1, 1]),
        )
    
        optimizer.optimum = result
    
        targets, parameters = optimizer.evaluate_optimum()
    
        expected_targets = {"CDi": 0.005318006823391808, "Cm": -51.93177989903035}
        expected_parameters = {
            0: 0.05,
            2: 0.32,
            1: 0.65,
            3: 38,
            4: 38.42882145,
            5: 1.0,
            6: 1.0,
            "wingletAirfoil": "naca0012",
        }
    
        assert expected_parameters == parameters
>       assert expected_targets == targets
E       AssertionError: assert {'CDi': 0.005...3177989903035} == {'CDi': 0.005...3177989903027}
E         Differing items:
E         {'CDi': 0.005318006823391808} != {'CDi': 0.00531800682339165}
E         {'Cm': -51.93177989903035} != {'Cm': -51.93177989903027}
E         Use -v to get the full diff

tests\test_optimizer.py:232: AssertionError
______________________ TestFlyingWing.test_solver_alpha _______________________

self = <test_solver.TestFlyingWing object at 0x000002D28727F508>
flying_wing = <winglets.model.FlyingWing object at 0x000002D28727F348>

    def test_solver_alpha(self, flying_wing):
    
        solver = wl.WingSolver(model=flying_wing, altitude=ALTITUDE, mach=MACH)
    
        problem = solver.solve_alpha(alpha=ALPHA)
    
        results = dict(CDi=problem.CDi, CL=problem.CL, CY=problem.CY, Cm=problem.Cm)
    
        expected = {
            "CDi": 0.0007621840201544735,
            "CL": 0.17823297687249956,
            "CY": 1.8207861772476683e-18,
            "Cm": -25.046729432809073,
        }
    
>       assert expected == results
E       AssertionError: assert {'CDi': 0.000...6729432809073} == {'CDi': 0.000...4672943280919}
E         Differing items:
E         {'CDi': 0.0007621840201544735} != {'CDi': 0.0007621840201544504}
E         {'CY': 1.8207861772476683e-18} != {'CY': -3.481723488832212e-18}
E         {'CL': 0.17823297687249956} != {'CL': 0.17823297687250123}
E         {'Cm': -25.046729432809073} != {'Cm': -25.04672943280919}
E         Use -v to get the full diff

tests\test_solver.py:110: AssertionError
________________________ TestFlyingWing.test_solver_cl ________________________

self = <test_solver.TestFlyingWing object at 0x000002D287286A08>
flying_wing = <winglets.model.FlyingWing object at 0x000002D286ACC388>

    def test_solver_cl(self, flying_wing):
    
        solver = wl.WingSolver(model=flying_wing, altitude=ALTITUDE, mach=MACH)
    
        problem = solver.solve_cl(cl=CL)
    
        results = dict(CDi=problem.CDi, CL=problem.CL, CY=problem.CY, Cm=problem.Cm)
    
        expected = {
            "CDi": 0.005628661627242771,
            "CL": 0.45000738453912104,
            "CY": 2.271288523678805e-18,
            "Cm": -51.54848089843833,
        }
    
>       assert expected == results
E       AssertionError: assert {'CDi': 0.005...4848089843833} == {'CDi': 0.005...4848089843823}
E         Differing items:
E         {'CDi': 0.005628661627242771} != {'CDi': 0.005628661627242648}
E         {'CY': 2.271288523678805e-18} != {'CY': -1.6296426590460089e-18}
E         {'CL': 0.45000738453912104} != {'CL': 0.45000738453912137}
E         {'Cm': -51.54848089843833} != {'Cm': -51.54848089843823}
E         Use -v to get the full diff

tests\test_solver.py:136: AssertionError
__________________ TestFlyingWingWinglets.test_solver_alpha ___________________

self = <test_solver.TestFlyingWingWinglets object at 0x000002D286ADB608>
flying_wing_winglets = <winglets.model.FlyingWing object at 0x000002D2872896C8>

    def test_solver_alpha(self, flying_wing_winglets):
    
        solver = wl.WingSolver(model=flying_wing_winglets, altitude=ALTITUDE, mach=MACH)
    
        problem = solver.solve_alpha(alpha=ALPHA)
    
        results = dict(CDi=problem.CDi, CL=problem.CL, CY=problem.CY, Cm=problem.Cm)
    
        expected = {
            "CDi": 0.0007211988080825468,
            "CL": 0.17779760329872044,
            "CY": 1.9875634350427656e-19,
            "Cm": -24.98033280975764,
        }
    
>       assert expected == results
E       AssertionError: assert {'CDi': 0.000...8033280975764} == {'CDi': 0.000...0332809757744}
E         Differing items:
E         {'CDi': 0.0007211988080825468} != {'CDi': 0.0007211988080825262}
E         {'CY': 1.9875634350427656e-19} != {'CY': -1.1090994354044273e-18}
E         {'CL': 0.17779760329872044} != {'CL': 0.1777976032987221}
E         {'Cm': -24.98033280975764} != {'Cm': -24.980332809757744}
E         Use -v to get the full diff

tests\test_solver.py:155: AssertionError
____________________ TestFlyingWingWinglets.test_solver_cl ____________________

self = <test_solver.TestFlyingWingWinglets object at 0x000002D286ACE788>
flying_wing_winglets = <winglets.model.FlyingWing object at 0x000002D287297C48>

    def test_solver_cl(self, flying_wing_winglets):
    
        solver = wl.WingSolver(model=flying_wing_winglets, altitude=ALTITUDE, mach=MACH)
    
        problem = solver.solve_cl(cl=CL)
    
        results = dict(CDi=problem.CDi, CL=problem.CL, CY=problem.CY, Cm=problem.Cm)
    
        expected = {
            "CDi": 0.005320054099686794,
            "CL": 0.4500048433740413,
            "CY": 1.794018700567938e-18,
            "Cm": -51.88601630585104,
        }
    
        assert np.isclose(CL, results["CL"], rtol=solver.TOL_CL, atol=solver.TOL_CL)
>       assert expected == results
E       AssertionError: assert {'CDi': 0.005...8601630585104} == {'CDi': 0.005...8601630585088}
E         Differing items:
E         {'CDi': 0.005320054099686794} != {'CDi': 0.005320054099686646}
E         {'CY': 1.794018700567938e-18} != {'CY': 5.033867929681669e-19}
E         {'CL': 0.4500048433740413} != {'CL': 0.4500048433740411}
E         {'Cm': -51.88601630585104} != {'Cm': -51.88601630585088}
E         Use -v to get the full diff

tests\test_solver.py:182: AssertionError
============================== warnings summary ===============================
c:\users\lenovo\anaconda3\lib\site-packages\pyreadline\py3k_compat.py:8
  c:\users\lenovo\anaconda3\lib\site-packages\pyreadline\py3k_compat.py:8: DeprecationWarning:
  
  Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working

C:\Users\Lenovo\Anaconda3\lib\site-packages\win32\lib\pywintypes.py:2
  C:\Users\Lenovo\Anaconda3\lib\site-packages\win32\lib\pywintypes.py:2: DeprecationWarning:
  
  the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================== short test summary info ===========================
SKIPPED [1] tests\test_optimizer.py:176: need --runslow option to run
SKIPPED [1] tests\test_solver.py:112: unconditional skip
SKIPPED [1] tests\test_solver.py:157: unconditional skip
FAILED tests/test_optimizer.py::TestOptimizer::test_put_up - AssertionError: ...
FAILED tests/test_optimizer.py::TestOptimizer::test_evaluate_optimal_point - ...
FAILED tests/test_solver.py::TestFlyingWing::test_solver_alpha - AssertionErr...
FAILED tests/test_solver.py::TestFlyingWing::test_solver_cl - AssertionError:...
FAILED tests/test_solver.py::TestFlyingWingWinglets::test_solver_alpha - Asse...
FAILED tests/test_solver.py::TestFlyingWingWinglets::test_solver_cl - Asserti...
============= 6 failed, 7 passed, 3 skipped, 2 warnings in 14.28s =============

Notebook runs

===========================================================================
Cant angle effect.ipynb
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-fbe3f15728c6> in <module>
      4 
      5 solver = wl.WingSolver(
----> 6     model=flying_wing, altitude=ALTITUDE, mach=MACH, design_cl=CL
      7 )
      8 

TypeError: __init__() got an unexpected keyword argument 'design_cl'


===========================================================================
Winglet geometry (sympy).ipynb
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-79fdad8bfcfb> in <module>
----> 1 sy.simplify((final_vector.T * u_planform_vector)[0])

NameError: name 'u_planform_vector' is not defined

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-ff6c5dca814f> in <module>
      2 axes = fig.add_subplot(121, projection='3d')
      3 
----> 4 vec_1 = numerical_vector(pi/4, pi/4)
      5 vec_2 = numerical_vector(pi/4, pi/3)
      6 

TypeError: _lambdifygenerated() missing 1 required positional argument: 'delta'


===========================================================================
Global optimization.ipynb
---------------------------------------------------------------------------
 	k 	success 	iterations 	function_evaluations 	message 	J 	cd 	cm 	SPAN 	CHORD_ROOT 	TAPER_RATIO 	ANGLE_SWEEP 	ANGLE_CANT 	ANGLE_TWIST_ROOT 	ANGLE_TWIST_TIP
    0 	0.00 	False 	15 	264 	b'STOP: TOTAL NO. of ITERATIONS REACHED LIMIT' 	0.997425 	0.004427 	-51.415759 	0.02 	1.000000 	0.300000 	50.0 	80.0 	2.788998 	0.551481
    1 	0.25 	False 	15 	256 	b'STOP: TOTAL NO. of ITERATIONS REACHED LIMIT' 	0.975069 	0.004900 	-52.058265 	0.10 	0.983453 	1.000000 	50.0 	80.0 	1.783358 	1.830505
    2 	0.50 	False 	15 	168 	b'STOP: TOTAL NO. of ITERATIONS REACHED LIMIT' 	0.925946 	0.004609 	-53.249979 	0.10 	1.000000 	0.300000 	0.0 	15.0 	2.311818 	2.731971
    3 	0.75 	False 	15 	168 	b'STOP: TOTAL NO. of ITERATIONS REACHED LIMIT' 	0.872109 	0.004604 	-53.339948 	0.10 	1.000000 	0.409452 	0.0 	15.0 	2.682065 	1.773572
    4 	1.00 	False 	15 	160 	b'STOP: TOTAL NO. of ITERATIONS REACHED LIMIT' 	0.817633 	0.004602 	-53.429611 	0.10 	1.000000 	0.536835 	0.0 	15.0 	3.001250 	1.242203

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
c:\users\lenovo\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2897             try:
-> 2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: '$\\phi$'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
<ipython-input-14-ca3b800d7406> in <module>
      3 options = dict(marker="o")
      4 
----> 5 axes[0].plot(results_df["$\\phi$"], **options)
      6 axes[0].set_ylabel("$\\phi$ [deg]")
      7 

c:\users\lenovo\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2904             if self.columns.nlevels > 1:
   2905                 return self._getitem_multilevel(key)
-> 2906             indexer = self.columns.get_loc(key)
   2907             if is_integer(indexer):
   2908                 indexer = [indexer]

c:\users\lenovo\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2898                 return self._engine.get_loc(casted_key)
   2899             except KeyError as err:
-> 2900                 raise KeyError(key) from err
   2901 
   2902         if tolerance is not None:

KeyError: '$\\phi$'


===========================================================================
One-dimensional optimization.ipynb
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-9-4a7b1ea43571> in <module>
     15     result = optimizer.optimize()
     16 
---> 17     cant_angle = get_optimized_cant_angle(result, initial_winglet)
     18     J = result.fun
     19     targets, parameters = optimizer.evaluate_optimum()

<ipython-input-8-346beaf4cc4a> in get_optimized_cant_angle(result, initial_winglet)
      1 def get_optimized_cant_angle(result, initial_winglet):
      2 
----> 3     return result.x.item() * initial_winglet[WingletParameters.ANGLE_CANT.value]

ValueError: can only convert an array of size 1 to a Python scalar

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions