From bc229508c6a3305b04cd610ea65c4b5526c00311 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 06:11:25 -0700 Subject: [PATCH 01/21] trying windows arm build --- .github/windows_arm64_steps/action.yml | 28 ++++++++++++++++++++++++++ .github/workflows/wheels.yml | 16 ++++++++++++++- .gitignore | 2 ++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .github/windows_arm64_steps/action.yml diff --git a/.github/windows_arm64_steps/action.yml b/.github/windows_arm64_steps/action.yml new file mode 100644 index 0000000..65f6530 --- /dev/null +++ b/.github/windows_arm64_steps/action.yml @@ -0,0 +1,28 @@ +name: Build Dependencies(Win-ARM64) +description: "Common setup steps for Win-ARM64 CI" +runs: + using: "composite" + steps: + - name: Install LLVM + shell: pwsh + run: | + Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/LLVM-20.1.8-woa64.exe -UseBasicParsing -OutFile LLVM-woa64.exe + $expectedHash = "7c4ac97eb2ae6b960ca5f9caf3ff6124c8d2a18cc07a7840a4d2ea15537bad8e" + $fileHash = (Get-FileHash -Path "LLVM-woa64.exe" -Algorithm SHA256).Hash + if ($fileHash -ne $expectedHash) { + Write-Error "Checksum verification failed. The downloaded file may be corrupted or tampered with." + exit 1 + } + Start-Process -FilePath ".\LLVM-woa64.exe" -ArgumentList "/S" -Wait + echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Install pkgconf via vcpkg + shell: pwsh + run: | + & "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" arm64 + $env:VCPKG_ROOT = "C:\vcpkg" + Set-Location $env:VCPKG_ROOT + ./vcpkg install pkgconf:arm64-windows + $pkgconfPath = "$env:VCPKG_ROOT\installed\arm64-windows\tools\pkgconf" + Copy-Item "$pkgconfPath\pkgconf.exe" "$pkgconfPath\pkg-config.exe" -Force + echo "$pkgconfPath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append \ No newline at end of file diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 85850f9..e552c07 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -29,7 +29,8 @@ jobs: - [windows-2025, win, AMD64] - [ubuntu-22.04, manylinux, x86_64] - [macos-14, macosx, arm64, openblas, "12.3"] - - [macos-15-intel, macosx, x86_64, openblas, "10.14"] + # - [macos-15-intel, macosx, x86_64, openblas, "10.14"] + - [windows-11-arm, win, ARM64, "", ""] python: [["cp39", "3.9"], ["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"]] @@ -55,6 +56,19 @@ jobs: if: ${{ runner.os == 'Windows' }} + - name: Set environment variables for ARM64 + if: matrix.buildplat[1] == 'win' && matrix.buildplat[2] == 'ARM64' + run: | + echo "CC=clang-cl" >> $env:GITHUB_ENV + echo "CXX=clang-cl" >> $env:GITHUB_ENV + echo "FC=flang" >> $env:GITHUB_ENV + echo "TARGET_ARCH=${{ matrix.buildplat[2] }}" >> $env:GITHUB_ENV + + - name: Set up Flang and pkgconf for ARM64 + if: matrix.buildplat[1] == 'win' && matrix.buildplat[2] == 'ARM64' + uses: ./.github/windows_arm64_steps + + - name: Setup macOS if: startsWith( matrix.buildplat[0], 'macos-' ) run: | diff --git a/.gitignore b/.gitignore index 01894e0..4722b87 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ dev_make_install/optvl tests/test_om_wrapper*_out examples/run_opt_om*_out +examples/*.avl +examples/*.ps # ============================================================================== # Github python gitignore template # ============================================================================== From 1c11fdb17c6901a0c5b02140ac5312fba695d135 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 06:44:00 -0700 Subject: [PATCH 02/21] move gfortran flag into if statement --- .github/workflows/wheels.yml | 13 +++++++------ .gitignore | 1 + meson.build | 8 +++++++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index e552c07..e2a2fd1 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -26,15 +26,16 @@ jobs: # - [macos-14, macosx, arm64, accelerate, "14.0"] # working - - [windows-2025, win, AMD64] - - [ubuntu-22.04, manylinux, x86_64] - - [macos-14, macosx, arm64, openblas, "12.3"] - # - [macos-15-intel, macosx, x86_64, openblas, "10.14"] + # - [windows-2025, win, AMD64] + # - [ubuntu-22.04, manylinux, x86_64] + # - [macos-14, macosx, arm64, openblas, "12.3"] - [windows-11-arm, win, ARM64, "", ""] + # removed + # - [macos-15-intel, macosx, x86_64, openblas, "10.14"] - python: [["cp39", "3.9"], ["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"]] - # python: [["cp312", "3.12"]] + # python: [["cp39", "3.9"], ["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"]] + python: [["cp312", "3.12"]] diff --git a/.gitignore b/.gitignore index 4722b87..1ff8fd3 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ tests/test_om_wrapper*_out examples/run_opt_om*_out examples/*.avl examples/*.ps +examples/opt_output_sweep/ # ============================================================================== # Github python gitignore template # ============================================================================== diff --git a/meson.build b/meson.build index 89d6410..a80f004 100644 --- a/meson.build +++ b/meson.build @@ -8,7 +8,6 @@ project( default_options: [ 'buildtype=debugoptimized', 'c_std=c99', - 'fortran_std=legacy', ], ) @@ -118,6 +117,13 @@ ff_args += [ '-O2' ] +if ff.get_id() == 'gcc' + # -std=legacy is not supported by all Fortran compilers, but very useful with + # gfortran since it avoids a ton of warnings that we don't care about. + # Needs fixing in Meson, see https://github.com/mesonbuild/meson/issues/11633. + ff_args += '-std=legacy' +endif + numpy_nodepr_api = '-DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION' cc_args = [numpy_nodepr_api] From 446342e6302d3a247fcada883f1f0adcabbb8a67 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 07:04:25 -0700 Subject: [PATCH 03/21] adjust ff flags --- meson.build | 13 ++++++++++--- pyproject.toml | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index a80f004..3410081 100644 --- a/meson.build +++ b/meson.build @@ -110,18 +110,25 @@ ff_args = ff.get_supported_arguments( ff_args += [ '-ffixed-line-length-80', - '-std=legacy', '-fdefault-real-8', '-fdefault-double-8', - '-fPIC', '-O2' ] +if host_machine.system() != 'windows' + ff_args += ['-fPIC'] +endif + +# --- add flags for fortran standard --- if ff.get_id() == 'gcc' # -std=legacy is not supported by all Fortran compilers, but very useful with # gfortran since it avoids a ton of warnings that we don't care about. # Needs fixing in Meson, see https://github.com/mesonbuild/meson/issues/11633. - ff_args += '-std=legacy' + ff_args += ['-std=legacy'] +elif ff.get_id() == 'llvm-flang' + + ff_args += ['-ffixed-form'] + endif numpy_nodepr_api = '-DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION' diff --git a/pyproject.toml b/pyproject.toml index 9876685..60344ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ version = "2.4.0" # this automatically updates __init__.py and setup_deprecated. [tool.cibuildwheel] -skip = "cp36-* cp37-* pp* *_ppc64le *_i686 *_s390x" +skip = "cp38-* pp* *_ppc64le *_i686 *_s390x" build-verbosity = "3" test-command = "bash {project}/tools/wheels/cibw_test_command.sh {project}" From d750750d8bd6757754db74d893d892c2a3002a7c Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 08:06:38 -0700 Subject: [PATCH 04/21] remove warnings so I can see the error --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 3410081..f9dcb6f 100644 --- a/meson.build +++ b/meson.build @@ -127,7 +127,7 @@ if ff.get_id() == 'gcc' ff_args += ['-std=legacy'] elif ff.get_id() == 'llvm-flang' - ff_args += ['-ffixed-form'] + ff_args += ['-ffixed-form', '-w'] endif From 6dd8f504d981fd9e5c330aab604a740c2b9dbb0d Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 08:34:59 -0700 Subject: [PATCH 05/21] add generic seconds subroutine --- src/second.f | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/second.f b/src/second.f index a2daf9f..2ddaf21 100755 --- a/src/second.f +++ b/src/second.f @@ -1,12 +1,10 @@ - SUBROUTINE SECONDS(TSEC) REAL*8 TSEC C -C...SECNDS is a real*4 function that returns seconds. -C The value is modified by subtracting the supplied argument. -C It acts as in the VMS FORTRAN Manual. +C...Returns elapsed wall-clock time in seconds +C Replacement for non-standard SECNDS intrinsic C - REAL*4 SECNDS, TIME - TIME = 0.0 - TSEC = SECNDS(TIME) - END + INTEGER COUNT, COUNT_RATE + CALL SYSTEM_CLOCK(COUNT, COUNT_RATE) + TSEC = DBLE(COUNT) / DBLE(COUNT_RATE) + END \ No newline at end of file From 74ea9de4a2adb2e23f189d0a9ad82f72f955a083 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 17:56:18 -0700 Subject: [PATCH 06/21] add command to see .data sizes --- meson.build | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/meson.build b/meson.build index f9dcb6f..f1d4168 100644 --- a/meson.build +++ b/meson.build @@ -177,6 +177,17 @@ output : ['libavlmodule.c', 'libavl-f2pywrappers.f'], command: [py3, '-m', 'numpy.f2py', '@INPUT@', ] ) +llvm_nm = find_program('llvm-nm', required: false) +if llvm_nm.found() + custom_target('symbol-sizes', + output: 'symbol_sizes.txt', + command: [find_program('python3'), '-c', + 'import glob,subprocess,sys; objs=glob.glob("**/*.obj",recursive=True); r=subprocess.run(["llvm-nm","--print-size","--size-sort","--reverse-sort"]+objs,capture_output=True,text=True); print(r.stdout); open(sys.argv[1],"w").write(r.stdout)', + '@OUTPUT@'], + build_by_default: true, + ) +endif + py3.extension_module('libavl', avl_source_files, avl_c_wrapper, @@ -192,4 +203,5 @@ py3.extension_module('libavl', ) + install_subdir('optvl', install_dir: py3.get_install_dir()) From 14861fc070e94f491d3f5b9bfba238f75e9e7679 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 12 Mar 2026 18:33:50 -0700 Subject: [PATCH 07/21] reduce storage to near zero to test theory --- meson.build | 11 -------- src/includes/ADIMEN.INC | 56 ++++++++++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/meson.build b/meson.build index f1d4168..004bf81 100644 --- a/meson.build +++ b/meson.build @@ -177,17 +177,6 @@ output : ['libavlmodule.c', 'libavl-f2pywrappers.f'], command: [py3, '-m', 'numpy.f2py', '@INPUT@', ] ) -llvm_nm = find_program('llvm-nm', required: false) -if llvm_nm.found() - custom_target('symbol-sizes', - output: 'symbol_sizes.txt', - command: [find_program('python3'), '-c', - 'import glob,subprocess,sys; objs=glob.glob("**/*.obj",recursive=True); r=subprocess.run(["llvm-nm","--print-size","--size-sort","--reverse-sort"]+objs,capture_output=True,text=True); print(r.stdout); open(sys.argv[1],"w").write(r.stdout)', - '@OUTPUT@'], - build_by_default: true, - ) -endif - py3.extension_module('libavl', avl_source_files, avl_c_wrapper, diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index cf2a343..ce42ba3 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -32,28 +32,54 @@ ! to make it easier to termine the true size in clear_ad_seeds_fast() ! I increased some values to avoid matching + ! ! PARAMETER (NVMAX=4000) + ! PARAMETER (NVMAX=5000) + + ! ! PARAMETER (NSMAX=400) ! max number of strips + ! ! PARAMETER (NSECMAX=401) ! max number of geometry sections + ! PARAMETER (NSMAX=500) ! max number of strips + ! PARAMETER (NSECMAX=301) ! max number of geometry sections + ! PARAMETER (NFMAX=100) ! max number of surfaces + ! PARAMETER (NLMAX=502) ! max number of body nodes + ! PARAMETER (NBMAX=20) ! max number of bodies + + ! PARAMETER (NUMAX=6) ! number of velocity components + ! PARAMETER (NDMAX=30) ! max number of control surfaces + ! PARAMETER (NGMAX=21) ! max number of design variables + + ! PARAMETER (NRMAX=25) ! max number of run cases + ! PARAMETER (NTMAX=503) ! max number of time values + + ! PARAMETER (NOBMAX=1) ! max number of off body points + ! ! PARAMETER (NOBMAX=1000) ! max number of off body points + + ! PARAMETER (ICONX=20) ! + ! PARAMETER (IBX=200) ! max number of airfoil coordinates + ! ! PARAMETER (IBX=300) ! max number of airfoil coordinates + + ! PARAMETER (NVMAX=4000) - PARAMETER (NVMAX=5000) + PARAMETER (NVMAX=5) - ! PARAMETER (NSMAX=400) ! max number of strips - ! PARAMETER (NSECMAX=401) ! max number of geometry sections - PARAMETER (NSMAX=500) ! max number of strips - PARAMETER (NSECMAX=301) ! max number of geometry sections - PARAMETER (NFMAX=100) ! max number of surfaces - PARAMETER (NLMAX=502) ! max number of body nodes - PARAMETER (NBMAX=20) ! max number of bodies + ! PARAMETER (NSMAX=4) ! max number of strips + ! PARAMETER (NSECMAX=4) ! max number of geometry sections + PARAMETER (NSMAX=5) ! max number of strips + PARAMETER (NSECMAX=3) ! max number of geometry sections + PARAMETER (NFMAX=1) ! max number of surfaces + PARAMETER (NLMAX=5) ! max number of body nodes + PARAMETER (NBMAX=2) ! max number of bodies PARAMETER (NUMAX=6) ! number of velocity components - PARAMETER (NDMAX=30) ! max number of control surfaces - PARAMETER (NGMAX=21) ! max number of design variables + PARAMETER (NDMAX=3) ! max number of control surfaces + PARAMETER (NGMAX=2) ! max number of design variables - PARAMETER (NRMAX=25) ! max number of run cases - PARAMETER (NTMAX=503) ! max number of time values + PARAMETER (NRMAX=2) ! max number of run cases + PARAMETER (NTMAX=5) ! max number of time values PARAMETER (NOBMAX=1) ! max number of off body points - ! PARAMETER (NOBMAX=1000) ! max number of off body points + ! PARAMETER (NOBMAX=1) ! max number of off body points - PARAMETER (ICONX=20) ! - PARAMETER (IBX=200) ! max number of airfoil coordinates + PARAMETER (ICONX=2) ! + PARAMETER (IBX=2) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates From 20d3610e1e765837058b63282bb17cc4e8651528 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 06:11:56 -0700 Subject: [PATCH 08/21] fix windows repair --- tools/wheels/repair_windows.sh | 50 +++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/tools/wheels/repair_windows.sh b/tools/wheels/repair_windows.sh index 583e589..f7af6d4 100644 --- a/tools/wheels/repair_windows.sh +++ b/tools/wheels/repair_windows.sh @@ -1,32 +1,44 @@ +# from scipy + set -xe WHEEL="$1" DEST_DIR="$2" -# create a temporary directory in the destination folder and unpack the wheel -# into there -pushd $DEST_DIR -mkdir -p tmp -pushd tmp -wheel unpack $WHEEL -pushd optvl* -# To avoid DLL hell, the file name of libopenblas that's being vendored with -# the wheel has to be name-mangled. delvewheel is unable to name-mangle PYD -# containing extra data at the end of the binary, which frequently occurs when -# building with mingw. -# We therefore find each PYD in the directory structure and strip them. +# Skip the strip command based on TARGET_ARCH +# TARGET_ARCH should be set by the CI environment (e.g., ARM64, AMD64) +TARGET_ARCH="${TARGET_ARCH:-}" # Default to empty string if not set + +if [ "$TARGET_ARCH" = "ARM64" ]; then + echo "Skipping stripping for ARM64 target." +else + echo "Performing stripping for AMD64 target." + + # create a temporary directory in the destination folder and unpack the wheel + # into there + pushd $DEST_DIR + mkdir -p tmp + pushd tmp + wheel unpack $WHEEL + pushd optvl* -for f in $(find ./optvl* -name '*.pyd'); do strip $f; done + # To avoid DLL hell, the file name of libopenblas that's being vendored with + # the wheel has to be name-mangled. delvewheel is unable to name-mangle PYD + # containing extra data at the end of the binary, which frequently occurs when + # building with mingw. + # We therefore find each PYD in the directory structure and strip them. + for f in $(find ./optvl* -name '*.pyd'); do strip $f; done -# now repack the wheel and overwrite the original -wheel pack . -mv -fv *.whl $WHEEL -cd $DEST_DIR -rm -rf tmp + # now repack the wheel and overwrite the original + wheel pack . + mv -fv *.whl $WHEEL + cd $DEST_DIR + rm -rf tmp +fi # the libopenblas.dll is placed into this directory in the cibw_before_build # script. -delvewheel repair --add-path /c/opt/openblas/openblas_dll -w $DEST_DIR $WHEEL +delvewheel repair -w $DEST_DIR $WHEEL From 0f8a8ccdb55487b84debec696e5afff180f552d9 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 06:28:18 -0700 Subject: [PATCH 09/21] try with more vortices --- src/includes/ADIMEN.INC | 2 +- tools/wheels/cibw_test_command.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index ce42ba3..586aaec 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -59,7 +59,7 @@ ! PARAMETER (NVMAX=4000) - PARAMETER (NVMAX=5) + PARAMETER (NVMAX=5000) ! PARAMETER (NSMAX=4) ! max number of strips ! PARAMETER (NSECMAX=4) ! max number of geometry sections diff --git a/tools/wheels/cibw_test_command.sh b/tools/wheels/cibw_test_command.sh index 99ebf95..a7e46db 100644 --- a/tools/wheels/cibw_test_command.sh +++ b/tools/wheels/cibw_test_command.sh @@ -5,7 +5,8 @@ PROJECT_DIR="$1" cd $PROJECT_DIR/tests # install tesing dependencies -pip install "scipy<=1.16" psutil "openmdao!=3.38" +pip install --only-binary "scipy<=1.16" +pip install psutil "openmdao!=3.38" #HACK: if the tests are not split up the CI runs out of memory... From e9835925e9c730f6f6fe92c4550c3f1f1a253922 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 06:39:28 -0700 Subject: [PATCH 10/21] increase other constants --- .github/workflows/docs.yml | 78 +++++++++++++++---------------- src/includes/ADIMEN.INC | 12 ++--- tools/wheels/cibw_test_command.sh | 2 +- 3 files changed, 45 insertions(+), 47 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 4153b60..6510c86 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,46 +1,46 @@ -name: MkDocs +# name: MkDocs -on: - push: - branches: - - main - pull_request: - branches: - - main - - dev +# on: +# push: +# branches: +# - main +# pull_request: +# branches: +# - main +# - dev -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v2 +# jobs: +# deploy: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout Repository +# uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' +# - name: Set up Python +# uses: actions/setup-python@v2 +# with: +# python-version: '3.x' - - name: Install Dependencies - run: | - python -m pip install --upgrade pip - pip install mkdocs-material - pip install markdown - pip install pymdown-extensions - pip install Pygments - pip install mkdocstrings - pip install 'mkdocstrings[python]' - pip install mkdocs-gen-files - pip install mkdocs-literate-nav - pip install mkdocs-include-markdown-plugin +# - name: Install Dependencies +# run: | +# python -m pip install --upgrade pip +# pip install mkdocs-material +# pip install markdown +# pip install pymdown-extensions +# pip install Pygments +# pip install mkdocstrings +# pip install 'mkdocstrings[python]' +# pip install mkdocs-gen-files +# pip install mkdocs-literate-nav +# pip install mkdocs-include-markdown-plugin - - name: Test Build - run: | - # mkdocs build --strict # can't use strict mode because of some typ annotations - mkdocs build +# - name: Test Build +# run: | +# # mkdocs build --strict # can't use strict mode because of some typ annotations +# mkdocs build - - name: Build and Deploy - if: github.event_name == 'push' - run: | - mkdocs gh-deploy --force +# - name: Build and Deploy +# if: github.event_name == 'push' +# run: | +# mkdocs gh-deploy --force diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 586aaec..dfa2865 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -61,13 +61,11 @@ ! PARAMETER (NVMAX=4000) PARAMETER (NVMAX=5000) - ! PARAMETER (NSMAX=4) ! max number of strips - ! PARAMETER (NSECMAX=4) ! max number of geometry sections - PARAMETER (NSMAX=5) ! max number of strips - PARAMETER (NSECMAX=3) ! max number of geometry sections - PARAMETER (NFMAX=1) ! max number of surfaces - PARAMETER (NLMAX=5) ! max number of body nodes - PARAMETER (NBMAX=2) ! max number of bodies + PARAMETER (NSMAX=500) ! max number of strips + PARAMETER (NSECMAX=301) ! max number of geometry sections + PARAMETER (NFMAX=100) ! max number of surfaces + PARAMETER (NLMAX=502) ! max number of body nodes + PARAMETER (NBMAX=20) ! max number of bodies PARAMETER (NUMAX=6) ! number of velocity components PARAMETER (NDMAX=3) ! max number of control surfaces diff --git a/tools/wheels/cibw_test_command.sh b/tools/wheels/cibw_test_command.sh index a7e46db..996ac8e 100644 --- a/tools/wheels/cibw_test_command.sh +++ b/tools/wheels/cibw_test_command.sh @@ -5,7 +5,7 @@ PROJECT_DIR="$1" cd $PROJECT_DIR/tests # install tesing dependencies -pip install --only-binary "scipy<=1.16" +pip install --only-binary :all: 'scipy<=1.16' pip install psutil "openmdao!=3.38" From 5033657a322e1805fa44a06be616152b8a8f0733 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 06:55:58 -0700 Subject: [PATCH 11/21] increase other constants again --- src/includes/ADIMEN.INC | 8 ++++---- tools/wheels/cibw_test_command.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index dfa2865..143326d 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -68,11 +68,11 @@ PARAMETER (NBMAX=20) ! max number of bodies PARAMETER (NUMAX=6) ! number of velocity components - PARAMETER (NDMAX=3) ! max number of control surfaces - PARAMETER (NGMAX=2) ! max number of design variables + PARAMETER (NDMAX=30) ! max number of control surfaces + PARAMETER (NGMAX=21) ! max number of design variables - PARAMETER (NRMAX=2) ! max number of run cases - PARAMETER (NTMAX=5) ! max number of time values + PARAMETER (NRMAX=25) ! max number of run cases + PARAMETER (NTMAX=503) ! max number of time values PARAMETER (NOBMAX=1) ! max number of off body points ! PARAMETER (NOBMAX=1) ! max number of off body points diff --git a/tools/wheels/cibw_test_command.sh b/tools/wheels/cibw_test_command.sh index 996ac8e..6bf454b 100644 --- a/tools/wheels/cibw_test_command.sh +++ b/tools/wheels/cibw_test_command.sh @@ -5,7 +5,7 @@ PROJECT_DIR="$1" cd $PROJECT_DIR/tests # install tesing dependencies -pip install --only-binary :all: 'scipy<=1.16' +pip install --only-binary :all: scipy pip install psutil "openmdao!=3.38" From 9b0615b6d45b03be7bda50fdb1aaa8ff866954c5 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 07:44:25 -0700 Subject: [PATCH 12/21] print some info about the library during repair --- tools/wheels/repair_windows.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/wheels/repair_windows.sh b/tools/wheels/repair_windows.sh index f7af6d4..9172115 100644 --- a/tools/wheels/repair_windows.sh +++ b/tools/wheels/repair_windows.sh @@ -39,6 +39,8 @@ else cd $DEST_DIR rm -rf tmp fi -# the libopenblas.dll is placed into this directory in the cibw_before_build -# script. + +llvm-objdump -p $WHEEL | grep "DLL Name" +dumpbin /dependents $WHEEL delvewheel repair -w $DEST_DIR $WHEEL + From 103c0d0c8ec9e49ee839533dcd4ea3268dfcac56 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 08:06:15 -0700 Subject: [PATCH 13/21] try printing llvm-objdump again --- tools/wheels/cibw_test_command.sh | 1 + tools/wheels/repair_windows.sh | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/wheels/cibw_test_command.sh b/tools/wheels/cibw_test_command.sh index 6bf454b..48e5317 100644 --- a/tools/wheels/cibw_test_command.sh +++ b/tools/wheels/cibw_test_command.sh @@ -14,6 +14,7 @@ pip install psutil "openmdao!=3.38" # pip install testflo # testflo -v . +python -c "import platform; print(platform.machine())" # test package built and installed correctly python test_import.py diff --git a/tools/wheels/repair_windows.sh b/tools/wheels/repair_windows.sh index 9172115..388fb8b 100644 --- a/tools/wheels/repair_windows.sh +++ b/tools/wheels/repair_windows.sh @@ -12,6 +12,15 @@ TARGET_ARCH="${TARGET_ARCH:-}" # Default to empty string if not set if [ "$TARGET_ARCH" = "ARM64" ]; then echo "Skipping stripping for ARM64 target." + + pushd $DEST_DIR + mkdir -p tmp + pushd tmp + wheel unpack $WHEEL + pushd optvl* + + llvm-objdump -p *.pyd | grep "DLL Name" + dumpbin /dependents *.pyd else echo "Performing stripping for AMD64 target." @@ -40,7 +49,5 @@ else rm -rf tmp fi -llvm-objdump -p $WHEEL | grep "DLL Name" -dumpbin /dependents $WHEEL delvewheel repair -w $DEST_DIR $WHEEL From e690d55838cc6023cececbd8d881156fea4f3436 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 17:56:47 -0700 Subject: [PATCH 14/21] try printing llvm-objdump again x2 --- tools/wheels/repair_windows.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/wheels/repair_windows.sh b/tools/wheels/repair_windows.sh index 388fb8b..2ef54ae 100644 --- a/tools/wheels/repair_windows.sh +++ b/tools/wheels/repair_windows.sh @@ -18,9 +18,9 @@ if [ "$TARGET_ARCH" = "ARM64" ]; then pushd tmp wheel unpack $WHEEL pushd optvl* - - llvm-objdump -p *.pyd | grep "DLL Name" - dumpbin /dependents *.pyd + ls + llvm-objdump -p (Get-ChildItem *.pyd) | Select-String 'DLL Name' + dumpbin /dependents (Get-ChildItem *.pyd) else echo "Performing stripping for AMD64 target." From 1ffeabb8906f4fdfbfc15ecd9303e25d05cd0b63 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Fri, 13 Mar 2026 18:50:24 -0700 Subject: [PATCH 15/21] try printing llvm-objdump again x3 --- src/includes/ADIMEN.INC | 6 +++--- tools/wheels/repair_windows.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 143326d..04fa4c0 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -32,7 +32,7 @@ ! to make it easier to termine the true size in clear_ad_seeds_fast() ! I increased some values to avoid matching - ! ! PARAMETER (NVMAX=4000) + ! ! ! PARAMETER (NVMAX=4000) ! PARAMETER (NVMAX=5000) ! ! PARAMETER (NSMAX=400) ! max number of strips @@ -77,7 +77,7 @@ PARAMETER (NOBMAX=1) ! max number of off body points ! PARAMETER (NOBMAX=1) ! max number of off body points - PARAMETER (ICONX=2) ! - PARAMETER (IBX=2) ! max number of airfoil coordinates + PARAMETER (ICONX=20) ! + PARAMETER (IBX=50) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates diff --git a/tools/wheels/repair_windows.sh b/tools/wheels/repair_windows.sh index 2ef54ae..dbb278b 100644 --- a/tools/wheels/repair_windows.sh +++ b/tools/wheels/repair_windows.sh @@ -19,8 +19,8 @@ if [ "$TARGET_ARCH" = "ARM64" ]; then wheel unpack $WHEEL pushd optvl* ls - llvm-objdump -p (Get-ChildItem *.pyd) | Select-String 'DLL Name' - dumpbin /dependents (Get-ChildItem *.pyd) + llvm-objdump -p *.pyd | grep 'DLL Name' + dumpbin /dependents *.pyd else echo "Performing stripping for AMD64 target." From a0c1ead8509cf385a6664d9bf95276e71aa7314e Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Tue, 17 Mar 2026 18:14:13 -0700 Subject: [PATCH 16/21] tweak sizes to determine max --- src/amake.f | 8 ++++++++ src/includes/ADIMEN.INC | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/amake.f b/src/amake.f index 6571b47..3ba72c5 100644 --- a/src/amake.f +++ b/src/amake.f @@ -577,6 +577,14 @@ SUBROUTINE MAKESURF(ISURF) C... nodal grid associated with vortex strip (aft-panel nodes) C... NOTE: airfoil in plane of wing, but not rotated perpendicular to dihedral; C... retained in (x,z) plane at this point + + ! recompute + ! XLASEC + ! XUASEC + ! ZLASEC + ! ZUASEC + + CALL AKIMA( XLASEC(1,ISEC,ISURF), ZLASEC(1,ISEC,ISURF), NSL, & XPT(IVC+1), ZL_L, DSDX ) CALL AKIMA( XUASEC(1,ISEC,ISURF), ZUASEC(1,ISEC,ISURF), NSL, diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 04fa4c0..77961b3 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -78,6 +78,6 @@ ! PARAMETER (NOBMAX=1) ! max number of off body points PARAMETER (ICONX=20) ! - PARAMETER (IBX=50) ! max number of airfoil coordinates + PARAMETER (IBX=1) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates From 7149d13a11298b1b3e8eefa4762ef391652ac180 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Tue, 17 Mar 2026 18:35:37 -0700 Subject: [PATCH 17/21] tweak sizes to determine max 2 --- src/includes/ADIMEN.INC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 77961b3..5d09de0 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -78,6 +78,6 @@ ! PARAMETER (NOBMAX=1) ! max number of off body points PARAMETER (ICONX=20) ! - PARAMETER (IBX=1) ! max number of airfoil coordinates + PARAMETER (IBX=3) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates From c666be0afac55ab92e2cac7cceee8490b2a17f68 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Tue, 17 Mar 2026 20:37:04 -0700 Subject: [PATCH 18/21] tweak sizes to determine max 3 --- src/includes/ADIMEN.INC | 4 ++-- tools/wheels/cibw_test_command.sh | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 5d09de0..fa4922b 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -77,7 +77,7 @@ PARAMETER (NOBMAX=1) ! max number of off body points ! PARAMETER (NOBMAX=1) ! max number of off body points - PARAMETER (ICONX=20) ! - PARAMETER (IBX=3) ! max number of airfoil coordinates + PARAMETER (ICONX=10) ! + PARAMETER (IBX=5) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates diff --git a/tools/wheels/cibw_test_command.sh b/tools/wheels/cibw_test_command.sh index 48e5317..57981ad 100644 --- a/tools/wheels/cibw_test_command.sh +++ b/tools/wheels/cibw_test_command.sh @@ -3,6 +3,8 @@ set -xe PROJECT_DIR="$1" cd $PROJECT_DIR/tests +python -c "import platform; print(platform.machine())" +llvm-objdump -p ../optvl/libavl.cp312-win_arm64.pyd | findstr "DLL Name" # install tesing dependencies pip install --only-binary :all: scipy @@ -14,7 +16,8 @@ pip install psutil "openmdao!=3.38" # pip install testflo # testflo -v . -python -c "import platform; print(platform.machine())" + + # test package built and installed correctly python test_import.py From dad48941ced2c8c78cf562740d8353ac5ddbf769 Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Tue, 17 Mar 2026 20:43:47 -0700 Subject: [PATCH 19/21] tweak sizes to determine max 4 --- src/includes/ADIMEN.INC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index fa4922b..54d52e0 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -77,7 +77,7 @@ PARAMETER (NOBMAX=1) ! max number of off body points ! PARAMETER (NOBMAX=1) ! max number of off body points - PARAMETER (ICONX=10) ! + PARAMETER (ICONX=5) ! PARAMETER (IBX=5) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates From 1e65053175057d2b2e73c3c9c47231e8d97c8c3f Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 19 Mar 2026 18:07:48 -0700 Subject: [PATCH 20/21] low data size again --- src/includes/ADIMEN.INC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 54d52e0..135e084 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -77,7 +77,7 @@ PARAMETER (NOBMAX=1) ! max number of off body points ! PARAMETER (NOBMAX=1) ! max number of off body points - PARAMETER (ICONX=5) ! + PARAMETER (ICONX=2) ! PARAMETER (IBX=5) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates From 9c0e59a1505bc1fb36b7a601b13dd6ab5b856bcb Mon Sep 17 00:00:00 2001 From: Joshua Anibal Date: Thu, 19 Mar 2026 18:16:00 -0700 Subject: [PATCH 21/21] low data size again 2 --- src/includes/ADIMEN.INC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/includes/ADIMEN.INC b/src/includes/ADIMEN.INC index 135e084..c57f3f2 100644 --- a/src/includes/ADIMEN.INC +++ b/src/includes/ADIMEN.INC @@ -78,6 +78,6 @@ ! PARAMETER (NOBMAX=1) ! max number of off body points PARAMETER (ICONX=2) ! - PARAMETER (IBX=5) ! max number of airfoil coordinates + PARAMETER (IBX=2) ! max number of airfoil coordinates ! PARAMETER (IBX=300) ! max number of airfoil coordinates