Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
bc22950
trying windows arm build
joanibal Mar 12, 2026
1c11fdb
move gfortran flag into if statement
joanibal Mar 12, 2026
446342e
adjust ff flags
joanibal Mar 12, 2026
d750750
remove warnings so I can see the error
joanibal Mar 12, 2026
6dd8f50
add generic seconds subroutine
joanibal Mar 12, 2026
74ea9de
add command to see .data sizes
joanibal Mar 13, 2026
14861fc
reduce storage to near zero to test theory
joanibal Mar 13, 2026
20d3610
fix windows repair
joanibal Mar 13, 2026
0f8a8cc
try with more vortices
joanibal Mar 13, 2026
e983592
increase other constants
joanibal Mar 13, 2026
5033657
increase other constants again
joanibal Mar 13, 2026
9b0615b
print some info about the library during repair
joanibal Mar 13, 2026
103c0d0
try printing llvm-objdump again
joanibal Mar 13, 2026
e690d55
try printing llvm-objdump again x2
joanibal Mar 14, 2026
1ffeabb
try printing llvm-objdump again x3
joanibal Mar 14, 2026
a0c1ead
tweak sizes to determine max
joanibal Mar 18, 2026
7149d13
tweak sizes to determine max 2
joanibal Mar 18, 2026
c666be0
tweak sizes to determine max 3
joanibal Mar 18, 2026
dad4894
tweak sizes to determine max 4
joanibal Mar 18, 2026
1e65053
low data size again
joanibal Mar 20, 2026
9c0e59a
low data size again 2
joanibal Mar 20, 2026
4e2b662
low data size again 3
joanibal Mar 20, 2026
c07fd66
low data size again 4
joanibal Mar 25, 2026
23ac0c4
removed some unused data from ad seeds
joanibal Mar 25, 2026
3ab0277
add back in two variables
joanibal Mar 25, 2026
74eab7e
split surf geom variables into a different include
joanibal Mar 25, 2026
86e1eaa
try to get the build passing again
joanibal Mar 26, 2026
1aad6d2
add flang flag
joanibal Mar 26, 2026
aeef461
try to see if new flag is actually used
joanibal Mar 26, 2026
30f5164
try to reduce .data size further and increase airfoil data size
joanibal Mar 26, 2026
ee90274
restore all constants to prior size
joanibal Mar 26, 2026
989b9c7
half way
joanibal Mar 26, 2026
d4ee5de
ibx=75
joanibal Mar 26, 2026
978e4c4
ibx=100
joanibal Mar 26, 2026
9d29e49
ibx=200 and remove XLASEC, etc. with linking flag
joanibal Mar 27, 2026
de7d85c
fix link flag
joanibal Mar 27, 2026
629421f
try ibx=50 for the section data
joanibal Mar 27, 2026
c5449f4
try ibx=25 for the section data
joanibal Mar 27, 2026
48307e6
see if new aifoil organization will fit
joanibal Mar 27, 2026
e73618a
set 50 max for XASEC_DIFF, SASEC_DIFF variables
joanibal Mar 28, 2026
6eab0c2
reenable the tests
joanibal Mar 30, 2026
ca77a69
print more info from tests
joanibal Mar 30, 2026
431524d
try to learn more about the problem
joanibal Mar 31, 2026
ebf50e8
fix mext?
joanibal Mar 31, 2026
65018b3
add diagnose script
joanibal Apr 1, 2026
635d906
update diagnose script
joanibal Apr 1, 2026
d253e82
try with smaller sizes
joanibal Apr 2, 2026
27ce358
try with even smaller sizes
joanibal Apr 2, 2026
1c375db
cleaner mext del
joanibal Apr 3, 2026
c88d96d
add constants just for win arm64
joanibal Apr 8, 2026
69668c0
added missing file
joanibal Apr 8, 2026
ff4a542
fix meson copy?
joanibal Apr 8, 2026
d0354f3
fix meson copy again?
joanibal Apr 8, 2026
5ed93cb
fix tests?
joanibal Apr 10, 2026
11b46d0
fix tmp variable size
joanibal Apr 10, 2026
569b311
fix io test
joanibal Apr 10, 2026
7998379
debugging test
joanibal Apr 14, 2026
14e48c7
debugging test 2
joanibal Apr 14, 2026
c38ff54
debugging test 23
joanibal Apr 14, 2026
9ad9004
try with new flang flag
joanibal Apr 14, 2026
dd1dda9
try with new heap allocation flags
joanibal Apr 14, 2026
9f22e79
remove new flang flag
joanibal Apr 14, 2026
8bb789d
added missing variable declaration
joanibal Apr 14, 2026
3acee36
enable other widows build
joanibal Apr 14, 2026
4515a8c
need to rerun tapenade
joanibal Apr 15, 2026
1b1baf8
ran tapenade again
joanibal Apr 15, 2026
b44a082
small change to rerun tests
joanibal Apr 15, 2026
ad8de74
add some debugging prints
joanibal Apr 15, 2026
9afeab5
run only windows wheels
joanibal Apr 15, 2026
45d9039
try to get the nan again
joanibal Apr 16, 2026
2b55806
ad seeds fixed
joanibal Apr 16, 2026
94c5734
added more printing
joanibal Apr 16, 2026
b8871c0
change delcon init bounds
joanibal Apr 16, 2026
88b0851
more printing
joanibal Apr 16, 2026
a07b03a
update wheel build
joanibal Apr 16, 2026
f9ac4a9
different prints
joanibal Apr 16, 2026
42ab99b
run only the bad test
joanibal Apr 16, 2026
ed773c8
more printing
joanibal Apr 16, 2026
f6a6c10
AICN printing
joanibal Apr 16, 2026
690c214
enc printing
joanibal Apr 16, 2026
045da4c
ES printing
joanibal Apr 16, 2026
f120287
ES printing
joanibal Apr 16, 2026
affef8e
XLZLES printing
joanibal Apr 17, 2026
7cd33f9
more printing
joanibal Apr 17, 2026
7c26e29
more printing!
joanibal Apr 17, 2026
3b59100
print idx_vor
joanibal Apr 17, 2026
237f014
printing again
joanibal Apr 17, 2026
353f076
printing to sdupl
joanibal Apr 17, 2026
611d3d7
is it yoff?
joanibal Apr 17, 2026
648b24d
fixed Ypt input?
joanibal Apr 17, 2026
7299c2a
remove printing and renable the other tests
joanibal Apr 17, 2026
a87f426
enable all the python and os tests are enabled
joanibal Apr 17, 2026
7876a2b
drop python 3.9 and add some prints
joanibal Apr 17, 2026
c0c6fcc
swap import order in pyf
joanibal Apr 17, 2026
dd27e16
fix spelling in pyf
joanibal Apr 17, 2026
2862729
reenable all wheels
joanibal Apr 17, 2026
f030c30
clean up
joanibal Apr 17, 2026
33394cf
bump version
joanibal Apr 17, 2026
dbea954
fix a typo, add util file, and add to .gitignore
joanibal Apr 17, 2026
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
28 changes: 28 additions & 0 deletions .github/windows_arm64_steps/action.yml
Original file line number Diff line number Diff line change
@@ -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
29 changes: 26 additions & 3 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ jobs:
name: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
runs-on: ${{ matrix.buildplat[0] }}
strategy:
#DEBUGGING: turning off the fail-fast can be helpful
# fail-fast: false # This ensures all matrix jobs run to completion
matrix:
buildplat:
# Not supported for now
Expand All @@ -29,12 +31,20 @@ 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"]
- [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"]]
# DEBUGGING: switch to just one python for debugging
# python: [["cp312", "3.12"]]


python: [["cp39", "3.9"], ["cp310", "3.10"], ["cp311", "3.11"], ["cp312", "3.12"], ["cp313", "3.13"], ["cp314", "3.14"]]
exclude:
- buildplat: [windows-11-arm, win, ARM64, "", ""]
python: ["cp310", "3.10"]
- buildplat: [windows-11-arm, win, ARM64, "", ""]
python: ["cp39", "3.9"]


steps:
Expand All @@ -55,6 +65,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: |
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ dev_make_install/optvl

tests/test_om_wrapper*_out
examples/run_opt_om*_out
examples/*.avl
examples/*.ps
examples/*.png
examples/*.eig
examples/opt_output_sweep/
# ==============================================================================
# Github python gitignore template
# ==============================================================================
Expand Down Expand Up @@ -52,7 +57,6 @@ MANIFEST
src/ad_src/forward_tmp/
src/ad_src/reverse_tmp/
src/ad_src/preprocessed_files/
src/includes/AVL.INC
examples/*.html
examples/*.db
examples/reports
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ print(
f'CL:{force_data["CL"]:10.6f} CD:{force_data["CD"]:10.6f} Cm:{force_data["Cm"]:10.6f}'
)

# lets look at the cp countours
# let's look at the cp contours
ovl.plot_cp()
```
The plotting calls in this example use matplotlib to produce visualizations like this
Expand Down
31 changes: 27 additions & 4 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ project(
'optvl',
'c',
# don't forget to change the value in pyproject.toml
version: '2.4.0',
version: '2.5.0',
license: 'GPL-3.0',
meson_version: '>= 0.64.0',
default_options: [
'buildtype=debugoptimized',
'c_std=c99',
'fortran_std=legacy',
],
)

Expand Down Expand Up @@ -86,6 +85,14 @@ inc_np = include_directories(incdir_numpy)
incdir_f2py = incdir_numpy / '..' / '..' / 'f2py' / 'src'
inc_f2py = include_directories(incdir_f2py)

# set up statically allocated variable sizes
if host_machine.system() == 'windows' and host_machine.cpu_family() == 'aarch64'
run_command(
py3, '-c',
'import shutil; shutil.copy(r"' + (meson.project_source_root() / 'src' / 'includes' / 'ADIMEN.INC.winArm64') + '", r"' + (meson.project_source_root() / 'src' / 'includes' / 'ADIMEN.INC') + '")',
check: true,
)
endif

# Fortran warning flags

Expand All @@ -111,13 +118,28 @@ 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']
elif ff.get_id() == 'llvm-flang'

ff_args += ['-fno-init-global-zero', '-ffixed-form', '-w']
link_args += ['-fno-init-global-zero']

endif

numpy_nodepr_api = '-DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION'

cc_args = [numpy_nodepr_api]
Expand Down Expand Up @@ -179,4 +201,5 @@ py3.extension_module('libavl',

)


install_subdir('optvl', install_dir: py3.get_install_dir())
21 changes: 14 additions & 7 deletions optvl/MExt.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ def __init__(self, libName, packageName, pip_name, lib_so_file=None, debug=False
if not os.path.exists(target_path) and os.path.exists(source_path):
# print("Creating symlink from {} to {}".format(source_path, target_path))
os.symlink(source_path, target_path)
elif platform.system() == "Windows":
libs_dir_name = f"{pip_name}.libs"
source_path = os.path.join(spec.submodule_search_locations[0], "..", libs_dir_name)
if os.path.exists(source_path):
os.add_dll_directory(os.path.abspath(source_path))
else:
# raise NotImplementedError("platform not supported")
print(tmpdir)
srcpath = os.path.join(spec.submodule_search_locations[0], "libavl.cp39-win_amd64.dll.a")
pass
raise RuntimeError("Platform not recognized")

# add the directory containing the new package to the search path
sys.path.insert(0, tmpdir)
Expand All @@ -90,15 +92,20 @@ def __init__(self, libName, packageName, pip_name, lib_so_file=None, debug=False
self.__dict__.update(self._module.__dict__)

def __del__(self):
# remove module if not in debug mode
if not self.debug:
# if the module was imported, remove it from sys.modules
if hasattr(self, "_pkg"):
del sys.modules[self._module.__name__]
del sys.modules[self._pkg.__name__]

# now try to delete the files and directory
shutil.rmtree(self._pkgdir)
try:
# now try to delete the files and directory
shutil.rmtree(self._pkgdir)
except PermissionError:
# On Windows, loaded DLLs are locked and cannot be deleted.
# Clean up as much as possible, ignore what's locked.
pass

# make sure the original module is loaded -
# otherwise python crashes on exit
# if MExt objects have not been explicitly 'del'd,
Expand Down
2 changes: 1 addition & 1 deletion optvl/om_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def setup(self):
)


AIRFOIL_GEOM_VARS = ["xasec", "casec", "tasec", "xuasec", "xlasec", "zuasec", "zlasec"]
AIRFOIL_GEOM_VARS = ["xasec", "casec", "tasec"]


# helper functions used by the AVL components
Expand Down
69 changes: 26 additions & 43 deletions optvl/optvl_class.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,22 +221,6 @@ class OVLSolver(object):

ad_suffix = "_DIFF"

# Primary array limits: These also need to updated in the Fortran layer if changed
NVMAX = 5000 # number of horseshoe vortices
NSMAX = 500 # number of chord strips
NSECMAX = 301 # nuber of geometry sections
NFMAX = 100 # number of surfaces
NLMAX = 502 # number of source/doublet line nodes
NBMAX = 20 # number of bodies
NUMAX = 6 # number of freestream parameters (V,Omega)
NDMAX = 30 # number of control deflection parameters
NGMAX = 21 # number of design variables
NRMAX = 25 # number of stored run cases
NTMAX = 503 # number of stored time levels
NOBMAX=1 # max number of off body points
ICONX = 20 #
IBX = 200 # max number of airfoil coordinates


def __init__(
self,
Expand Down Expand Up @@ -275,7 +259,6 @@ def __init__(
if platform.system() == "Windows":
# HACK
avl_lib_so_file = glob.glob(os.path.join(module_dir, "libavl*.pyd"))[0]
print("avl_lib_so_file", avl_lib_so_file)
if len(avl_lib_so_file) == 0:
# print the contents of the module dir
print("module_dir", module_dir)
Expand All @@ -286,6 +269,7 @@ def __init__(

# # get just the file name
avl_lib_so_file = os.path.basename(avl_lib_so_file)


self.avl = MExt.MExt("libavl", module_name, "optvl", lib_so_file=avl_lib_so_file, debug=debug)._module

Expand All @@ -296,6 +280,8 @@ def __init__(

if timing:
self.set_avl_fort_arr("CASE_L", "LTIMING", True)

self.__set_avl_size_info()

if geo_file is not None:
try:
Expand Down Expand Up @@ -418,6 +404,27 @@ def __init__(
if timing:
print(f"AVL init took {time.time() - start_time} seconds")

def __set_avl_size_info(self):
# Primary array limits: These also need to updated in the Fortran layer if changed
# its ugly, but it works

output = self.avl.get_avl_constants()
self.NVMAX = output[0] # number of horseshoe vortices
self.NSMAX = output[1] # number of chord strips
self.NSECMAX = output[2] # nuber of geometry sections
self.NFMAX = output[3] # number of surfaces
self.NLMAX = output[4] # number of source/doublet line nodes
self.NBMAX = output[5] # number of bodies
self.NUMAX = output[6] # number of freestream parameters (V,Omega)
self.NDMAX = output[7] # number of control deflection parameters
self.NGMAX = output[8] # number of design variables
self.NRMAX = output[9] # number of stored run cases
self.NTMAX = output[10] # number of stored time levels
self.NOBMAX = output[11] # max number of off body points
self.ICONX = output[12] #
self.IBX = output[13] # max number of airfoil coordinates in a file
self.NASMAX = output[14] # max airfoil point for representation

def _init_map_data(self):
"""Used in the __init__ method to allocate the slice data for the surfaces"""
self.surf_geom_to_fort_var = {}
Expand Down Expand Up @@ -612,10 +619,6 @@ def _setup_section_maps(self, surf_name: str, idx_surf: int, num_sec: int, nasec
"sasec": ["SURF_GEOM_R", "SASEC", sasec_slices],
"casec": ["SURF_GEOM_R", "CASEC", casec_slices],
"tasec": ["SURF_GEOM_R", "TASEC", tasec_slices],
"xuasec": ["SURF_GEOM_R", "XUASEC", xuasec_slices],
"xlasec": ["SURF_GEOM_R", "XLASEC", xlasec_slices],
"zuasec": ["SURF_GEOM_R", "ZUASEC", zuasec_slices],
"zlasec": ["SURF_GEOM_R", "ZLASEC", zlasec_slices],
}

def load_input_dict(self, input_dict: dict, pre_check: bool = True, post_check: bool = False):
Expand Down Expand Up @@ -913,7 +916,7 @@ def check_type(key, avl_vars, given_val, cast_type=True):
)

xfminmax_arr = surf_dict.get("xfminmax", np.tile([0.0, 1.0], (num_secs, 1)))
num_pts = min(50, self.IBX)
num_pts = min(self.NASMAX, self.IBX)

# setup for manually specifying coordinates
if "xasec" in surf_dict.keys():
Expand All @@ -937,9 +940,6 @@ def check_type(key, avl_vars, given_val, cast_type=True):
if "xasec" in surf_dict.keys():
self.set_avl_fort_arr("SURF_GEOM_I", "NASEC", nasec_list[j], slicer=(idx_surf, j))

# TODO-JLA: a user should not have to spcify XLASEC, XUASEC, ZLASEC, ZUASEC
# since these can be calculated from the other inputs

for key in self.surf_section_geom_to_fort_var[surf_name]:
avl_vars_secs = self.surf_section_geom_to_fort_var[surf_name][key]
avl_vars = (avl_vars_secs[0], avl_vars_secs[1], avl_vars_secs[2][j])
Expand Down Expand Up @@ -990,11 +990,6 @@ def check_type(key, avl_vars, given_val, cast_type=True):
self.set_avl_fort_arr("SURF_GEOM_R", "XASEC", np.array([0.0, 1.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "SASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "TASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)

self.set_avl_fort_arr("SURF_GEOM_R", "XLASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "XUASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "ZLASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "ZUASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)
self.set_avl_fort_arr("SURF_GEOM_R", "CASEC", np.array([0.0, 0.0]), slicer=slicer_airfoil_flat)

# --- setup control variables for each section ---
Expand Down Expand Up @@ -1295,18 +1290,6 @@ def set_section_naca(self, isec: int, isurf: int, nasec: int, naca: str, xfminma
self.set_avl_fort_arr("SURF_GEOM_R", "SASEC", slopes, slicer=(isurf, isec, slice(0, nasec)))
self.set_avl_fort_arr("SURF_GEOM_R", "TASEC", thickness, slicer=(isurf, isec, slice(0, nasec)))

self.set_avl_fort_arr(
"SURF_GEOM_R", "XLASEC", xf + 0.5 * thickness * np.sin(theta), slicer=(isurf, isec, slice(0, nasec))
)
self.set_avl_fort_arr(
"SURF_GEOM_R", "XUASEC", xf - 0.5 * thickness * np.sin(theta), slicer=(isurf, isec, slice(0, nasec))
)
self.set_avl_fort_arr(
"SURF_GEOM_R", "ZLASEC", zf - 0.5 * thickness * np.cos(theta), slicer=(isurf, isec, slice(0, nasec))
)
self.set_avl_fort_arr(
"SURF_GEOM_R", "ZUASEC", zf + 0.5 * thickness * np.cos(theta), slicer=(isurf, isec, slice(0, nasec))
)
self.set_avl_fort_arr("SURF_GEOM_R", "CASEC", zf, slicer=(isurf, isec, slice(0, nasec)))

def set_section_coordinates(
Expand Down Expand Up @@ -3753,7 +3736,7 @@ def clear_ad_seeds_fast(self):
num_sec_max = self.get_avl_fort_arr("SURF_GEOM_R", "AINCS").shape[-1]
num_sec = np.max(self.get_avl_fort_arr("SURF_GEOM_I", "NSEC"))

num_airfoil_pts_max = self.get_avl_fort_arr("SURF_GEOM_R", "XLASEC").shape[-1]
num_airfoil_pts_max = self.get_avl_fort_arr("SURF_GEOM_R", "CASEC").shape[-1]
num_airfoil_pts = np.max(self.get_avl_fort_arr("SURF_GEOM_I", "NASEC"))

mesh_size_max = 4*num_vor_max
Expand Down
Loading
Loading