Skip to content

Commit

Permalink
skip vanderpol tests under OpenMDAO older than 3.29.0
Browse files Browse the repository at this point in the history
  • Loading branch information
robfalck committed Dec 7, 2023
1 parent 598909f commit 9733034
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
7 changes: 7 additions & 0 deletions dymos/examples/vanderpol/doc/test_doc_vanderpol.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import os
import unittest

import openmdao
from openmdao.utils.testing_utils import use_tempdirs
from openmdao.utils.mpi import MPI


om_version = tuple([int(s) for s in openmdao.__version__.split('-')[0].split('.')])


@use_tempdirs
class TestVanderpolForDocs(unittest.TestCase):
def tearDown(self):
Expand All @@ -21,6 +25,7 @@ def test_vanderpol_for_docs_simulation(self):

dm.run_problem(p, run_driver=False, simulate=True, make_plots=True)

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
def test_vanderpol_for_docs_optimize(self):
import dymos as dm
from dymos.examples.vanderpol.vanderpol_dymos import vanderpol
Expand All @@ -31,6 +36,7 @@ def test_vanderpol_for_docs_optimize(self):

dm.run_problem(p, simulate=True, make_plots=True)

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
def test_vanderpol_for_docs_optimize_refine(self):
import dymos as dm
from dymos.examples.vanderpol.vanderpol_dymos import vanderpol
Expand All @@ -56,6 +62,7 @@ def test_vanderpol_for_docs_optimize_refine(self):
class TestVanderpolDelayMPI(unittest.TestCase):
N_PROCS = 2

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
def test_vanderpol_delay_mpi(self):
import openmdao.api as om
import dymos as dm
Expand Down
9 changes: 8 additions & 1 deletion dymos/examples/vanderpol/test/test_vanderpol.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,33 @@
from numpy.testing import assert_almost_equal
import numpy as np

import openmdao
from openmdao.utils.testing_utils import use_tempdirs, require_pyoptsparse
from openmdao.utils.mpi import MPI

import dymos as dm
from dymos.examples.vanderpol.vanderpol_dymos import vanderpol


om_version = tuple([int(s) for s in openmdao.__version__.split('-')[0].split('.')])


@use_tempdirs
class TestVanderpolExample(unittest.TestCase):
def test_vanderpol_simulate(self):
# simulate only: with no control, the system oscillates
p = vanderpol(transcription='gauss-lobatto', num_segments=75)
p.run_model()

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
@require_pyoptsparse(optimizer='IPOPT')
def test_vanderpol_simulate_true(self):
# simulate true
p = vanderpol(transcription='radau-ps', num_segments=30, transcription_order=3,
compressed=True, optimizer='IPOPT', delay=0.005, distrib=True, use_pyoptsparse=True)

dm.run_problem(p, run_driver=True, simulate=True)

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
def test_vanderpol_optimal(self):
p = vanderpol(transcription='gauss-lobatto', num_segments=75)
dm.run_problem(p) # find optimal control solution to stop oscillation
Expand All @@ -34,6 +39,7 @@ def test_vanderpol_optimal(self):
assert_almost_equal(p.get_val('traj.phase0.states:x1')[-1, ...], np.zeros(1))
assert_almost_equal(p.get_val('traj.phase0.controls:u')[-1, ...], np.zeros(1), decimal=3)

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
def test_vanderpol_optimal_grid_refinement(self):
# enabling grid refinement gives a faster and better solution with fewer segments
p = vanderpol(transcription='gauss-lobatto', num_segments=15)
Expand All @@ -53,6 +59,7 @@ class TestVanderpolExampleMPI(unittest.TestCase):

N_PROCS = 4

@unittest.skipIf(om_version < (3, 29, 0), 'Test requires OpenMDAO 3.29.0 or later')
@require_pyoptsparse(optimizer='IPOPT')
@unittest.skipUnless(MPI, 'this test requires MPI')
def test_vanderpol_optimal_mpi(self):
Expand Down

0 comments on commit 9733034

Please sign in to comment.