Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Ellipsoid ode45 continuous nonlinear mass-control portable gate

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-continuous-nonlinear-mass-control-portable.yml'
- 'tests/test_ellipsoid_ode45_continuous_nonlinear_mass_control.py'
- 'tests/test_ellipsoid_ode45_convergence.py'
- 'tests/fixtures/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_timing/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_convergence/**'
- 'tools/pack_ellipsoid_ode45_continuous_nonlinear_mass_control.py'
- 'wecsim/hydrodynamics/nonlinearHydro.py'
- 'wecsim/dynamics/caseDynamics.py'
- 'pyproject.toml'
workflow_dispatch:

jobs:
compare:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: python -m pip install -e ".[test]"
- run: python -m pytest -q -s tests/test_ellipsoid_ode45_continuous_nonlinear_mass_control.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Ellipsoid ode45 no-delay MaxStep portable diagnostic

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-continuous-nonlinear-mass-control-step-portable.yml'
- '.github/workflows/ellipsoid-ode45-continuous-nonlinear-mass-control-step.yml'
- 'tests/test_ellipsoid_ode45_continuous_nonlinear_mass_control_step.py'
- 'tests/test_ellipsoid_ode45_continuous_nonlinear_mass_control.py'
- 'tests/test_ellipsoid_ode45_convergence.py'
- 'tests/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control.m'
- 'tests/fixtures/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control_step/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_step/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_timing/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_convergence/**'
- 'tools/pack_ellipsoid_ode45_continuous_nonlinear_mass_control_step.py'
- 'wecsim/hydrodynamics/nonlinearHydro.py'
- 'wecsim/dynamics/caseDynamics.py'
- 'pyproject.toml'
workflow_dispatch:

jobs:
compare:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: python -m pip install -e ".[test]"
- run: python -m pytest -q -s tests/test_ellipsoid_ode45_continuous_nonlinear_mass_control_step.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Ellipsoid ode45 continuous nonlinear mass-control MaxStep diagnosis

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-continuous-nonlinear-mass-control-step.yml'
- 'tests/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control.m'
workflow_dispatch:

jobs:
source-step:
strategy:
fail-fast: false
matrix:
wave: [Regular, RegularCIC]
max_step: ['0.0125', '0.00625']
runs-on: ubuntu-latest
timeout-minutes: 150
name: ${{ matrix.wave }} MaxStep ${{ matrix.max_step }}
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim
ref: 0753b2e47f2457c078751dcfe5d251d1767b80ab
path: matlab-ref
filter: blob:none
sparse-checkout: source
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim_Applications
ref: d53d4d4c9eda2581f04204f5d394a6ef84bb099e
path: applications
filter: blob:none
lfs: true
sparse-checkout: Nonlinear_Hydro
- uses: matlab-actions/setup-matlab@v3
with:
release: R2025b
products: Simulink Simscape Simscape_Multibody
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; maxStep=${{ matrix.max_step }}; ellipsoid_ode45_continuous_nonlinear_mass_control
- uses: actions/upload-artifact@v4
if: always()
with:
name: ellipsoid-ode45-continuous-nonlinear-mass-control-${{ matrix.wave }}-maxstep-${{ matrix.max_step }}
path: |
matlab-ellipsoid-ode45-continuous-nonlinear-mass-control-step/${{ matrix.wave }}/
applications/Nonlinear_Hydro/hydroData/ellipsoid.h5
if-no-files-found: ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Ellipsoid ode45 continuous nonlinear mass control

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-continuous-nonlinear-mass-control.yml'
- 'tests/matlab/ellipsoid_ode45_continuous_nonlinear_mass_control.m'
workflow_dispatch:

jobs:
source-control:
strategy:
fail-fast: false
matrix:
wave: [Regular, RegularCIC]
runs-on: ubuntu-latest
timeout-minutes: 150
name: ${{ matrix.wave }}
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim
ref: 0753b2e47f2457c078751dcfe5d251d1767b80ab
path: matlab-ref
filter: blob:none
sparse-checkout: source
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim_Applications
ref: d53d4d4c9eda2581f04204f5d394a6ef84bb099e
path: applications
filter: blob:none
lfs: true
sparse-checkout: Nonlinear_Hydro
- uses: matlab-actions/setup-matlab@v3
with:
release: R2025b
products: Simulink Simscape Simscape_Multibody
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; ellipsoid_ode45_continuous_nonlinear_mass_control
- uses: actions/upload-artifact@v4
if: always()
with:
name: ellipsoid-ode45-continuous-nonlinear-mass-control-${{ matrix.wave }}
path: |
matlab-ellipsoid-ode45-continuous-nonlinear-mass-control/${{ matrix.wave }}/
applications/Nonlinear_Hydro/hydroData/ellipsoid.h5
if-no-files-found: ignore
30 changes: 30 additions & 0 deletions .github/workflows/ellipsoid-ode45-restoring-step-portable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Ellipsoid ode45 continuous nonlinear MaxStep portable diagnostic

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-restoring-step-portable.yml'
- 'tests/test_ellipsoid_ode45_restoring_step_portable.py'
- 'tests/test_ellipsoid_ode45_convergence.py'
- 'tools/check_ellipsoid_ode45_restoring_step.py'
- 'tools/pack_ellipsoid_ode45_restoring_step.py'
- 'tools/pack_ellipsoid_ode45_restoring_timing.py'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_step/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_timing/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_convergence/**'
- 'wecsim/hydrodynamics/nonlinearHydro.py'
- 'wecsim/dynamics/caseDynamics.py'
- 'pyproject.toml'
workflow_dispatch:

jobs:
compare:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: python -m pip install -e ".[test]"
- run: python -m pytest -q -s tests/test_ellipsoid_ode45_restoring_step_portable.py
52 changes: 52 additions & 0 deletions .github/workflows/ellipsoid-ode45-restoring-step-screen.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Ellipsoid ode45 continuous nonlinear MaxStep screen

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-restoring-step-screen.yml'
- 'tests/matlab/ellipsoid_ode45_restoring_timing_smoke.m'
workflow_dispatch:

jobs:
source-step:
strategy:
fail-fast: false
matrix:
wave: [Regular, RegularCIC]
# The two finer values continue diagnosis after the predeclared screen.
max_step: ['0.025', '0.0125', '0.00625', '0.003125']
runs-on: ubuntu-latest
timeout-minutes: 150
name: ${{ matrix.wave }} MaxStep ${{ matrix.max_step }}
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim
ref: 0753b2e47f2457c078751dcfe5d251d1767b80ab
path: matlab-ref
filter: blob:none
sparse-checkout: source
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim_Applications
ref: d53d4d4c9eda2581f04204f5d394a6ef84bb099e
path: applications
filter: blob:none
lfs: true
sparse-checkout: Nonlinear_Hydro
- uses: matlab-actions/setup-matlab@v3
with:
release: R2025b
products: Simulink Simscape Simscape_Multibody
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; mode='continuous_nonlinear'; duration='full'; maxStep=${{ matrix.max_step }}; ellipsoid_ode45_restoring_timing_smoke
- uses: actions/upload-artifact@v4
if: always()
with:
name: ellipsoid-ode45-restoring-${{ matrix.wave }}-maxstep-${{ matrix.max_step }}
path: |
matlab-ellipsoid-ode45-restoring-timing-step/${{ matrix.wave }}/
applications/Nonlinear_Hydro/hydroData/ellipsoid.h5
if-no-files-found: ignore
26 changes: 26 additions & 0 deletions .github/workflows/ellipsoid-ode45-restoring-timing-portable.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Ellipsoid ode45 force-timing portable gate

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-restoring-timing-portable.yml'
- 'tests/test_ellipsoid_ode45_restoring_timing_portable.py'
- 'tests/test_ellipsoid_ode45_convergence.py'
- 'tests/fixtures/matlab/ellipsoid_ode45_restoring_timing/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_convergence/**'
- 'tests/fixtures/matlab/ellipsoid_ode45_nonlinear_clock/**'
- 'wecsim/hydrodynamics/nonlinearHydro.py'
- 'wecsim/dynamics/caseDynamics.py'
workflow_dispatch:

jobs:
compare:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: python -m pip install -e ".[test]"
- run: python -m pytest -q -s tests/test_ellipsoid_ode45_restoring_timing_portable.py
77 changes: 77 additions & 0 deletions .github/workflows/ellipsoid-ode45-restoring-timing-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Ellipsoid ode45 restoring timing diagnostic

on:
pull_request:
paths:
- '.github/workflows/ellipsoid-ode45-restoring-timing-smoke.yml'
- 'tests/matlab/ellipsoid_ode45_restoring_timing_smoke.m'
- 'tools/check_ellipsoid_ode45_restoring_timing.py'
workflow_dispatch:
inputs:
duration:
description: Source duration (2 s smoke or 150 s full)
required: true
default: smoke
type: choice
options:
- smoke
- full

jobs:
compare:
strategy:
fail-fast: false
matrix:
wave: [Regular, RegularCIC]
runs-on: ubuntu-latest
timeout-minutes: 150
name: ${{ matrix.wave }}
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim
ref: 0753b2e47f2457c078751dcfe5d251d1767b80ab
path: matlab-ref
filter: blob:none
sparse-checkout: source
- uses: actions/checkout@v7
with:
repository: WEC-Sim/WEC-Sim_Applications
ref: d53d4d4c9eda2581f04204f5d394a6ef84bb099e
path: applications
filter: blob:none
lfs: true
sparse-checkout: Nonlinear_Hydro
- uses: matlab-actions/setup-matlab@v3
with:
release: R2025b
products: Simulink Simscape Simscape_Multibody
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; mode='baseline'; duration='${{ inputs.duration || 'smoke' }}'; ellipsoid_ode45_restoring_timing_smoke
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; mode='continuous_restoring'; duration='${{ inputs.duration || 'smoke' }}'; ellipsoid_ode45_restoring_timing_smoke
- uses: matlab-actions/run-command@v3
with:
command: addpath('tests/matlab'); waveCase='${{ matrix.wave }}'; mode='continuous_nonlinear'; duration='${{ inputs.duration || 'smoke' }}'; ellipsoid_ode45_restoring_timing_smoke
- uses: actions/setup-python@v7
with:
python-version: '3.12'
- run: python -m pip install -e ".[test]"
- name: Check restoring timing and source comparison
run: >-
python tools/check_ellipsoid_ode45_restoring_timing.py
"${{ matrix.wave }}"
"matlab-ellipsoid-ode45-restoring-timing/${{ matrix.wave }}"
--duration "${{ inputs.duration || 'smoke' }}"
--applications applications
- uses: actions/upload-artifact@v4
if: always()
with:
name: ellipsoid-ode45-restoring-timing-${{ matrix.wave }}-${{ inputs.duration || 'smoke' }}
path: |
matlab-ellipsoid-ode45-restoring-timing/${{ matrix.wave }}/
applications/Nonlinear_Hydro/hydroData/ellipsoid.h5
if-no-files-found: ignore
Loading
Loading