diff --git a/.calkit/env-locks/openflash-on-branch/linux-64.yml b/.calkit/env-locks/openflash-on-branch/linux-64.yml index 44123a2..9b1459a 100644 --- a/.calkit/env-locks/openflash-on-branch/linux-64.yml +++ b/.calkit/env-locks/openflash-on-branch/linux-64.yml @@ -3,46 +3,46 @@ channels: - defaults dependencies: - _openmp_mutex=4.5=20_gnu - - _python_abi3_support=1.0=hd8ed1ab_2 - - alsa-lib=1.2.16=hb03c661_0 - - altair=6.1.0=pyhd8ed1ab_0 - - anyio=4.13.0=pyhcf101f3_0 - - asttokens=3.0.1=pyhd8ed1ab_0 + - _python_abi3_support=1.0=hd8ed1ab_3 + - alsa-lib=1.2.16.1=hb03c661_0 + - altair=6.2.2=pyhd8ed1ab_0 + - anyio=4.14.2=pyhcf101f3_0 + - asttokens=3.0.2=pyhd8ed1ab_0 - attrs=26.1.0=pyhcf101f3_0 - - aws-c-auth=0.10.1=ha62d5e7_3 - - aws-c-cal=0.9.13=h2c9d079_1 - - aws-c-common=0.12.6=hb03c661_0 - - aws-c-compression=0.3.2=h8b1a151_0 - - aws-c-event-stream=0.7.0=h9b893ba_0 - - aws-c-http=0.10.13=h4bacb7b_0 - - aws-c-io=0.26.3=hb18f61d_2 - - aws-c-mqtt=0.15.2=hc1936db_2 - - aws-c-s3=0.12.2=he6ee468_1 - - aws-c-sdkutils=0.2.4=h8b1a151_4 - - aws-checksums=0.2.10=h8b1a151_0 - - aws-crt-cpp=0.38.3=h745e52d_1 - - aws-sdk-cpp=1.11.747=h41c0014_4 - - azure-core-cpp=1.16.2=h206d751_0 - - azure-identity-cpp=1.13.3=hed0cdb0_1 - - azure-storage-blobs-cpp=12.17.0=hf824e48_1 - - azure-storage-common-cpp=12.13.0=ha7a2c86_0 - - azure-storage-files-datalake-cpp=12.15.0=h1e5b466_0 - - backports.zstd=1.5.0=py312h90b7ffd_0 + - aws-c-auth=0.10.4=hb7a77c6_1 + - aws-c-cal=0.9.14=h2aa3ae6_4 + - aws-c-common=0.14.2=hb03c661_0 + - aws-c-compression=0.3.2=h720e601_4 + - aws-c-event-stream=0.7.1=h6ffeea8_4 + - aws-c-http=0.11.0=h38ae05a_4 + - aws-c-io=0.27.3=h6f4d18d_1 + - aws-c-mqtt=0.16.0=h21f4ec5_2 + - aws-c-s3=0.12.8=h46fcd08_1 + - aws-c-sdkutils=0.2.7=h720e601_2 + - aws-checksums=0.2.10=h720e601_4 + - aws-crt-cpp=0.40.1=h102d43b_3 + - aws-sdk-cpp=1.11.833=hc7390e0_9 + - azure-core-cpp=1.16.3=h206d751_0 + - azure-identity-cpp=1.13.3=h71f81a8_2 + - azure-storage-blobs-cpp=12.18.0=h74b55db_1 + - azure-storage-common-cpp=12.14.0=hf596fc9_1 + - azure-storage-files-datalake-cpp=12.16.0=h1f05bef_1 + - backports.zstd=1.6.0=py312h90b7ffd_0 - blinker=1.9.0=pyhff2d567_0 - brotli=1.2.0=hed03a55_1 - brotli-bin=1.2.0=hb03c661_1 - brotli-python=1.2.0=py312hdb49522_1 - bzip2=1.0.8=hda65f42_9 - - c-ares=1.34.6=hb03c661_0 - - ca-certificates=2026.5.20=hbd8a1cb_0 - - cached-property=1.5.2=hd8ed1ab_1 - - cached_property=1.5.2=pyha770c72_1 + - c-ares=1.34.8=hb03c661_0 + - ca-certificates=2026.6.17=hbd8a1cb_0 + - cached-property=1.5.2=hd8ed1ab_2 + - cached_property=1.5.2=pyha770c72_2 - cachetools=7.1.4=pyhd8ed1ab_0 - cairo=1.18.4=he90730b_1 - capytaine=2.3.1=py312h6a55c13_0 - - certifi=2026.5.20=pyhd8ed1ab_0 - - charset-normalizer=3.4.7=pyhd8ed1ab_0 - - click=8.4.1=pyhc90fa1f_0 + - certifi=2026.6.17=pyhd8ed1ab_0 + - charset-normalizer=3.4.9=pyhd8ed1ab_0 + - click=8.4.2=pyhc90fa1f_0 - comm=0.2.3=pyhe01879c_0 - contourpy=1.3.3=py312h0a2e395_4 - cpython=3.12.13=py312hd8ed1ab_0 @@ -63,55 +63,57 @@ dependencies: - fonts-conda-forge=1=hc364b38_1 - fonttools=4.63.0=py312h8a5da7c_0 - freetype=2.14.3=ha770c72_0 - - gflags=2.2.2=h5888daf_1005 + - fribidi=1.0.16=hb03c661_0 + - gflags=2.3.0=h54a6638_0 - gitdb=4.0.12=pyhd8ed1ab_0 - - gitpython=3.1.50=pyhd8ed1ab_0 - - glog=0.7.1=hbabe93e_0 + - gitpython=3.1.52=pyhd8ed1ab_0 + - glog=0.7.1=hb7133d2_1 - graphite2=1.3.15=hecca717_0 - h11=0.16.0=pyhcf101f3_1 - h2=4.3.0=pyhcf101f3_0 - h5netcdf=1.8.1=pyhd8ed1ab_0 - h5py=3.16.0=nompi_py312ha829cd9_102 - - harfbuzz=14.2.1=h6083320_0 - - hdf5=2.1.0=nompi_h87a9417_105 - - hpack=4.1.0=pyhd8ed1ab_0 + - harfbuzz=14.2.1=ha770c72_1 + - hdf5=2.1.0=nompi_h654f344_110 + - hpack=4.2.0=pyhd8ed1ab_0 - httptools=0.8.0=py312h4c3975b_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=78.3=h33c6efd_0 - - idna=3.17=pyhcf101f3_0 + - idna=3.18=pyhcf101f3_0 - importlib-metadata=9.0.0=pyhcf101f3_0 - - ipykernel=7.2.0=pyha191276_1 - - ipython=9.14.1=pyh53cf698_0 + - ipykernel=7.3.0=pyha191276_0 + - ipython=9.15.0=pyh53cf698_0 - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 - itsdangerous=2.2.0=pyhd8ed1ab_1 - - jedi=0.19.2=pyhd8ed1ab_1 + - jedi=0.20.0=pyhcf101f3_0 - jinja2=3.1.6=pyhcf101f3_1 - jsonschema=4.26.0=pyhcf101f3_0 - jsonschema-specifications=2025.9.1=pyhcf101f3_0 - - jupyter_client=8.9.0=pyhcf101f3_0 + - jupyter_client=8.9.1=pyhcf101f3_0 - jupyter_core=5.9.1=pyhc90fa1f_0 - keyutils=1.6.3=hb9d3cd8_0 - kiwisolver=1.5.0=py312h0a2e395_0 - - krb5=1.22.2=ha1258a1_0 + - krb5=1.22.2=hbde042b_1 - lcms2=2.19.1=h0c24ade_1 - - ld_impl_linux-64=2.45.1=default_hbd61a6d_102 + - ld_impl_linux-64=2.46.1=default_hbd61a6d_102 - lerc=4.1.0=hdb68285_0 - - libabseil=20260107.1=cxx17_h7b12aa8_0 + - libabseil=20260526.0=cxx17_h7b12aa8_1 - libaec=1.1.5=h088129d_0 - - libarrow=24.0.0=h61d77b5_4_cpu - - libarrow-acero=24.0.0=h635bf11_4_cpu - - libarrow-compute=24.0.0=h53684a4_4_cpu - - libarrow-dataset=24.0.0=h635bf11_4_cpu - - libarrow-substrait=24.0.0=hb4dd7c2_4_cpu + - libarrow=24.0.0=hcdbc531_10_cpu + - libarrow-acero=24.0.0=h635bf11_10_cpu + - libarrow-compute=24.0.0=h53684a4_10_cpu + - libarrow-dataset=24.0.0=h635bf11_10_cpu + - libarrow-substrait=24.0.0=h66fbfdd_10_cpu - libblas=3.11.0=8_h4a7cf45_openblas - libbrotlicommon=1.2.0=hb03c661_1 - libbrotlidec=1.2.0=hb03c661_1 - libbrotlienc=1.2.0=hb03c661_1 - libcblas=3.11.0=8_h0358290_openblas - - libclang13=22.1.7=default_h746c552_1 + - libclang-cpp22.1=22.1.8=default_h6c227bf_3 + - libclang13=22.1.8=default_h9692865_3 - libcrc32c=1.1.2=h9c3ff4c_0 - libcups=2.3.3=h7a8fb5f_6 - - libcurl=8.20.0=hcf29cc6_0 + - libcurl=8.21.0=hae6b9f4_2 - libdeflate=1.25=h17f619e_0 - libdrm=2.4.127=hb03c661_0 - libedit=3.1.20250104=pl5321h7949ede_0 @@ -119,7 +121,7 @@ dependencies: - libegl-devel=1.7.0=ha4b6fd6_3 - libev=4.33=hd590300_2 - libevent=2.1.12=hf998b51_1 - - libexpat=2.8.1=hecca717_0 + - libexpat=2.8.1=hecca717_1 - libffi=3.5.2=h3435931_0 - libfreetype=2.14.3=ha770c72_0 - libfreetype6=2.14.3=h73754d4_0 @@ -129,41 +131,45 @@ dependencies: - libgfortran5=15.2.0=h68bc16d_19 - libgl=1.7.0=ha4b6fd6_3 - libgl-devel=1.7.0=ha4b6fd6_3 - - libglib=2.88.1=h0d30a3d_2 + - libglib=2.88.2=h0d30a3d_0 - libglvnd=1.7.0=ha4b6fd6_3 - libglx=1.7.0=ha4b6fd6_3 - libglx-devel=1.7.0=ha4b6fd6_3 - libgomp=15.2.0=he0feb66_19 - - libgoogle-cloud=3.5.0=h8d2ee43_1 - - libgoogle-cloud-storage=3.5.0=hdbdcf42_1 - - libgrpc=1.78.1=h1d1128b_0 + - libgoogle-cloud=3.6.0=hbc29df5_1 + - libgoogle-cloud-storage=3.6.0=hdbdcf42_1 + - libgrpc=1.82.1=h792040b_0 + - libharfbuzz=14.2.1=h17a8019_1 + - libharfbuzz-devel=14.2.1=h17a8019_1 - libiconv=1.18=h3b78370_2 - - libjpeg-turbo=3.1.4.1=hb03c661_0 + - libjpeg-turbo=3.2.0=hb03c661_0 - liblapack=3.11.0=8_h47877c9_openblas - - libllvm22=22.1.7=hf7376ad_0 + - libllvm22=22.1.8=hf7376ad_1 - liblzma=5.8.3=hb03c661_0 - libnghttp2=1.68.1=h877daf1_0 - libnsl=2.0.1=hb9d3cd8_1 - libntlm=1.8=hb9d3cd8_0 - libopenblas=0.3.33=pthreads_h94d23a6_0 - libopengl=1.7.0=ha4b6fd6_3 - - libopentelemetry-cpp=1.27.0=h9692893_0 - - libopentelemetry-cpp-headers=1.27.0=ha770c72_0 - - libparquet=24.0.0=h7376487_4_cpu + - libopentelemetry-cpp=1.27.0=h3133023_1 + - libopentelemetry-cpp-headers=1.27.0=ha770c72_1 + - libparquet=24.0.0=h7376487_10_cpu - libpciaccess=0.19=hb03c661_0 - libpng=1.6.58=h421ea60_0 - - libpq=18.4=hd5a49e9_0 - - libprotobuf=6.33.5=h6eeba95_1 - - libre2-11=2025.11.05=h0dc7533_1 + - libpq=18.4=hd5a49e9_1 + - libprotobuf=7.35.1=h2840a7c_2 + - libpsl=0.22.0=h49b2146_1 + - libraqm=0.10.5=h6406941_1 + - libre2-11=2025.11.05=h60473fc_2 - libsodium=1.0.22=h280c20c_1 - - libsqlite=3.53.2=h0c1763c_0 + - libsqlite=3.53.3=h0c1763c_0 - libssh2=1.11.1=hcf80075_0 - libstdcxx=15.2.0=h934c35e_19 - libstdcxx-ng=15.2.0=hdf11a46_19 - libthrift=0.22.0=h7d032f7_2 - - libtiff=4.7.1=h9d88235_1 + - libtiff=4.7.2=h9d88235_0 - libutf8proc=2.11.3=hfe17d71_0 - - libuuid=2.42.1=h5347b49_0 + - libuuid=2.42.2=h5347b49_0 - libvulkan-loader=1.4.341.0=h5279c79_0 - libwebp-base=1.6.0=hd42ef1d_0 - libxcb=1.17.0=h8a09558_0 @@ -176,39 +182,39 @@ dependencies: - lz4-c=1.10.0=h5888daf_1 - markdown-it-py=4.2.0=pyhd8ed1ab_0 - markupsafe=3.0.3=py312h8a5da7c_1 - - matplotlib=3.10.9=py312h7900ff3_0 - - matplotlib-base=3.10.9=py312he3d6523_0 + - matplotlib=3.11.0=py312h7900ff3_1 + - matplotlib-base=3.11.0=py312hc1765e9_1 - matplotlib-inline=0.2.2=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_1 - munkres=1.1.4=pyhd8ed1ab_1 - - narwhals=2.22.1=pyhcf101f3_0 + - narwhals=2.24.0=pyhcf101f3_0 - ncurses=6.6=hdb14827_0 - - nest-asyncio=1.6.0=pyhd8ed1ab_1 + - nest-asyncio2=1.7.2=pyhcf101f3_0 - nlohmann_json=3.12.0=h54a6638_1 - openjpeg=2.5.4=h55fea9a_0 - openldap=2.6.13=hbde042b_0 - - openssl=3.6.2=h35e630c_0 - - orc=2.3.0=h21090e2_0 + - openssl=3.6.3=h35e630c_0 + - orc=2.3.0=h443056b_2 - packaging=26.2=pyhc364b38_0 - pandas=3.0.3=py312h8ecdadd_0 - parso=0.8.7=pyhcf101f3_0 - patsy=1.0.2=pyhcf101f3_0 - pcre2=10.47=haa7fec5_0 - pexpect=4.9.0=pyhd8ed1ab_1 - - pillow=12.2.0=py312h50c33e8_0 + - pillow=12.3.0=py312h50c33e8_0 - pip=26.1.2=pyh8b19718_0 - - pixman=0.46.4=h54a6638_1 - - platformdirs=4.10.0=pyhcf101f3_0 + - pixman=0.46.4=h54a6638_2 + - platformdirs=4.10.1=pyhcf101f3_0 - prometheus-cpp=1.3.0=ha5d0236_0 - prompt-toolkit=3.0.52=pyha770c72_0 - - protobuf=6.33.5=py312ha7b3241_2 + - protobuf=7.35.1=py312h7bd0bee_1 - psutil=7.2.2=py312h5253ce2_0 - pthread-stubs=0.4=hb9d3cd8_1002 - ptyprocess=0.7.0=pyhd8ed1ab_1 - pure_eval=0.2.3=pyhd8ed1ab_1 - pyarrow=24.0.0=py312h7900ff3_0 - pyarrow-core=24.0.0=py312h2054cf2_0_cpu - - pydeck=0.9.2=pyhd8ed1ab_0 + - pydeck=0.9.3=pyhd8ed1ab_0 - pygments=2.20.0=pyhd8ed1ab_0 - pyparsing=3.3.2=pyhcf101f3_0 - pyside6=6.11.1=py312h50ac2ff_1 @@ -222,47 +228,47 @@ dependencies: - pyzmq=27.1.0=py312hda471dd_3 - qhull=2020.2=h434a139_5 - qt6-main=6.11.1=pl5321h16c4a6b_1 - - re2=2025.11.05=h5301d42_1 + - re2=2025.11.05=h94463f1_2 - readline=8.3=h853b02a_0 - referencing=0.37.0=pyhcf101f3_0 - requests=2.34.2=pyhcf101f3_0 - rich=15.0.0=pyhcf101f3_0 - - rpds-py=2026.5.1=py312h192e038_0 - - s2n=1.7.3=hc5a330e_0 + - rpds-py=2026.6.3=py312h192e038_0 + - s2n=1.7.5=h7e3ee7f_1 - seaborn=0.13.2=hd8ed1ab_3 - seaborn-base=0.13.2=pyhd8ed1ab_3 - - setuptools=82.0.1=pyh332efcf_0 + - setuptools=83.0.0=pyh332efcf_0 - six=1.17.0=pyhe01879c_1 - - smmap=5.0.3=pyhd8ed1ab_0 + - smmap=5.0.3=pyhcf101f3_1 - snappy=1.2.2=h03e3b7b_1 - stack_data=0.6.3=pyhd8ed1ab_1 - - starlette=1.2.1=pyhcf101f3_0 + - starlette=1.3.1=pyhcf101f3_0 - statsmodels=0.14.6=py312h4f23490_0 - - streamlit=1.58.0=pyhd8ed1ab_0 + - streamlit=1.59.2=pyhd8ed1ab_0 - tenacity=9.1.4=pyhcf101f3_0 - - tk=8.6.13=noxft_h366c992_103 + - tk=8.6.13=noxft_hd70dff1_3 - toml=0.10.2=pyhcf101f3_3 - - tornado=6.5.6=py312h4c3975b_0 + - tornado=6.5.7=py312h4c3975b_0 - traitlets=5.15.1=pyhcf101f3_0 - - typing-extensions=4.15.0=h396c80c_0 - - typing_extensions=4.15.0=pyhcf101f3_0 - - tzdata=2025c=hc9c84f9_1 + - typing-extensions=4.16.0=h69aa097_0 + - typing_extensions=4.16.0=pyhcf101f3_0 + - tzdata=2026c=h151e31d_0 - unicodedata2=17.0.1=py312h4c3975b_0 - urllib3=2.7.0=pyhd8ed1ab_0 - - uvicorn=0.49.0=pyhc90fa1f_0 + - uvicorn=0.51.0=pyhc90fa1f_0 - watchdog=6.0.0=py312h20c3967_3 - - wayland=1.25.0=hd6090a7_0 - - wcwidth=0.7.0=pyhd8ed1ab_0 - - websockets=16.0=py312h5253ce2_1 + - wayland=1.26.0=hd6090a7_0 + - wcwidth=0.8.2=pyhd8ed1ab_0 + - websockets=16.1.1=py312h574c966_0 - wheel=0.47.0=pyhd8ed1ab_0 - - xarray=2026.4.0=pyhc364b38_0 + - xarray=2026.7.0=pyhc364b38_0 - xcb-util=0.4.1=h4f16b4b_2 - xcb-util-cursor=0.1.6=hb03c661_0 - xcb-util-image=0.4.0=hb711507_2 - xcb-util-keysyms=0.4.1=hb711507_0 - xcb-util-renderutil=0.3.10=hb711507_0 - xcb-util-wm=0.4.2=hb711507_0 - - xkeyboard-config=2.47=hb03c661_0 + - xkeyboard-config=2.48=h280c20c_0 - xorg-libice=1.1.2=hb9d3cd8_0 - xorg-libsm=1.2.6=he73a12e_0 - xorg-libx11=1.8.13=he1eb515_0 diff --git a/.github/workflows/pr-tagging.yml b/.github/workflows/pr-tagging.yml index 29dff58..88db64a 100644 --- a/.github/workflows/pr-tagging.yml +++ b/.github/workflows/pr-tagging.yml @@ -44,7 +44,7 @@ jobs: rc_tag="${{ steps.compute_base.outputs.base }}rc${{ github.event.pull_request.number }}" if git rev-parse "$rc_tag" >/dev/null 2>&1; then devN=$(git rev-list --count $rc_tag..HEAD) - rc_dev_tag="${rc_tag}dev${devN}" + rc_dev_tag="${rc_tag}.dev${devN}" else rc_dev_tag="${rc_tag}" fi diff --git a/.gitmodules b/.gitmodules index 4f9fca0..ed55626 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,4 @@ -[submodule "src/sea-lab-utils"] - path = src/sea-lab-utils - url = https://github.com/symbiotic-engineering/sea-lab-utils.git -[submodule "sea-lab-utils"] - path = sea-lab-utils +[submodule "analysis/sea-lab-utils"] + path = analysis/sea-lab-utils url = https://github.com/symbiotic-engineering/sea-lab-utils.git branch = main \ No newline at end of file diff --git a/analysis/convergence-results.ipynb b/analysis/convergence-results.ipynb index 202aa5f..7d4f132 100644 --- a/analysis/convergence-results.ipynb +++ b/analysis/convergence-results.ipynb @@ -13,13 +13,7 @@ "\n", "['/home/becca/Documents/git/MDOcean-worktrees/review/mdocean/simulation/modules/OpenFLASH/package/src/openflash']\n", "/home/becca/Documents/git/MDOcean-worktrees/review/mdocean/simulation/modules/OpenFLASH/package/src/openflash/__init__.py\n", - "OpenFLASH modules imported successfully!\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "OpenFLASH modules imported successfully!\n", "#CC79A7\n" ] } @@ -62,7 +56,7 @@ "\n", "dir_path_1_str = str((HERE / \"..\" / \"dev\" / \"python\" / \"convergence-study\"))\n", "dir_path_2_str = str((HERE / \"..\" / \"dev\" / \"python\"))\n", - "dir_path_3_str = str((HERE / \"..\" / \"sea-lab-utils\").resolve())\n", + "dir_path_3_str = str((HERE / \"sea-lab-utils\").resolve())\n", "dir_path_4_str = str((HERE / \"..\" / \"dev\" / \"python\" / \"convergence-study\" / \"prediction\"))\n", "\n", "data_1_str = str((HERE / \"..\" / \"dev\" / \"python\" / \"convergence-study\" / \"i-region-convergence\" / \"middle-region\" / \"data\" / \"predetermined-4.pkl\"))\n", diff --git a/analysis/low_m0_plots.ipynb b/analysis/low_m0_plots.ipynb index 802a563..8e85efa 100644 --- a/analysis/low_m0_plots.ipynb +++ b/analysis/low_m0_plots.ipynb @@ -44,7 +44,7 @@ " sys.path.insert(0, str(low_m0_dir))\n", "from low_m0 import low_get_hydros\n", "\n", - "utils_path = (HERE / \"..\" / \"sea-lab-utils\").resolve()\n", + "utils_path = (HERE / \"sea-lab-utils\").resolve()\n", "utils_str = str(utils_path)\n", "if utils_str not in sys.path:\n", " sys.path.insert(0, utils_str)\n", @@ -257,7 +257,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] diff --git a/analysis/sea-lab-utils b/analysis/sea-lab-utils new file mode 160000 index 0000000..f9d6942 --- /dev/null +++ b/analysis/sea-lab-utils @@ -0,0 +1 @@ +Subproject commit f9d69427a24304292c4a140b272e63122df9b6cf diff --git a/analysis/slant_data_plots.ipynb b/analysis/slant_data_plots.ipynb index d886cd9..b2a5e1f 100644 --- a/analysis/slant_data_plots.ipynb +++ b/analysis/slant_data_plots.ipynb @@ -46,7 +46,7 @@ "import sys\n", "from pathlib import Path\n", "HERE = Path.cwd().resolve()\n", - "utils_str = str((HERE / \"..\" / \"sea-lab-utils\").resolve())\n", + "utils_str = str((HERE / \"sea-lab-utils\").resolve())\n", "prob_path = str((HERE / \"..\" / \"dev\" / \"python\").resolve())\n", "modified_meem_path = str((HERE / \"..\" / \"dev\" / \"python\" / \"slants\" / \"a-matrix-b-vector-changes\").resolve())\n", "\n", @@ -623,7 +623,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_1472529/3246268765.py:67: MatplotlibDeprecationWarning: Since Matplotlib 3.10 indicate_inset_[zoom] returns a single InsetIndicator artist with a rectangle property and a connectors property. From 3.12 it will no longer be possible to unpack the return value into two elements.\n", + "/tmp/ipykernel_2633122/3246268765.py:67: MatplotlibDeprecationWarning: Since Matplotlib 3.10 indicate_inset_[zoom] returns a single InsetIndicator artist with a rectangle property and a connectors property. From 3.12 it will no longer be possible to unpack the return value into two elements.\n", " rect, connectors = axs[0, i].indicate_inset_zoom(axs[1, i], edgecolor=\"black\", alpha=1.0, linestyle='-', linewidth=0.8)\n" ] }, diff --git a/analysis/timing_data_generation.ipynb b/analysis/timing_data_generation.ipynb index 68104f3..e5940a0 100644 --- a/analysis/timing_data_generation.ipynb +++ b/analysis/timing_data_generation.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "9ddd15c3", "metadata": {}, "outputs": [ @@ -69,7 +69,6 @@ "\n", "\n", "# Now you can import from the folder structure\n", - "# Assuming 'pyplotutilities' is a folder inside 'sea-lab-utils'\n", "import sys\n", "from pathlib import Path\n", "HERE = Path.cwd().resolve()\n", diff --git a/analysis/timing_plots.ipynb b/analysis/timing_plots.ipynb index 891f777..6056e9a 100644 --- a/analysis/timing_plots.ipynb +++ b/analysis/timing_plots.ipynb @@ -69,7 +69,7 @@ "import sys\n", "from pathlib import Path\n", "HERE = Path.cwd().resolve()\n", - "utils_path = (HERE / \"..\" / \"sea-lab-utils\").resolve()\n", + "utils_path = (HERE / \"sea-lab-utils\").resolve()\n", "utils_str = str(utils_path)\n", "if utils_str not in sys.path:\n", " sys.path.insert(0, utils_str)\n", diff --git a/calkit.yaml b/calkit.yaml index 1cce0a3..a8a64e6 100644 --- a/calkit.yaml +++ b/calkit.yaml @@ -35,7 +35,7 @@ pipeline: inputs: - package/src/ - dev/python/limiting-cases/low_m0.py - - sea-lab-utils + - analysis/sea-lab-utils outputs: - pubs/JFM/figs/MEEM-Low-Freq.pdf slant-figs: @@ -46,7 +46,7 @@ pipeline: - analysis/data/slants.pkl - analysis/data/slope-slants.pkl - analysis/data/potential-slants.pkl - - sea-lab-utils + - analysis/sea-lab-utils outputs: - pubs/JFM/figs/MEEM-CPT-Slant-Freq.pdf - pubs/JFM/figs/Vary-Slopes.pdf @@ -58,7 +58,7 @@ pipeline: environment: openflash-on-branch inputs: - analysis/data/timing.pkl - - sea-lab-utils + - analysis/sea-lab-utils outputs: - pubs/JFM/figs/MEEM-Comp-Distribution.pdf - pubs/JFM/figs/MEEM-CPT-Speed-Comparison.pdf @@ -68,7 +68,7 @@ pipeline: notebook_path: analysis/convergence-results.ipynb environment: openflash-on-branch inputs: - - sea-lab-utils + - analysis/sea-lab-utils outputs: - pubs/JFM/figs/alpha-beta-explanation.pdf - pubs/JFM/figs/alpha-beta-to-trend.pdf diff --git a/dev/python/validation_with_capytaine_plots.ipynb b/dev/python/validation_with_capytaine_plots.ipynb index a71f577..1ccb404 100644 --- a/dev/python/validation_with_capytaine_plots.ipynb +++ b/dev/python/validation_with_capytaine_plots.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "d8810371", "metadata": {}, "outputs": [ @@ -48,7 +48,7 @@ "import os\n", "\n", "# Define the path to the directory containing the package\n", - "utils_path = r\"C:\\Users\\15183\\OpenFLASH\\sea-lab-utils\"\n", + "utils_path = r\"C:\\Users\\15183\\OpenFLASH\\analysis\\sea-lab-utils\"\n", "\n", "if utils_path not in sys.path:\n", " sys.path.append(utils_path)\n", diff --git a/dvc.lock b/dvc.lock index c12f3cf..cd0a1d7 100644 --- a/dvc.lock +++ b/dvc.lock @@ -45,7 +45,7 @@ stages: size: 3942 - path: pubs/JFM/figs/ hash: md5 - md5: 946c4054a6e3f57f6370510717616bb1.dir + md5: fcc48b917f84bfd8045ae7da9f91f2cd.dir size: 3030216 nfiles: 30 - path: pubs/JFM/jfm-appendix.tex @@ -71,8 +71,8 @@ stages: outs: - path: pubs/JFM/FLMguide.pdf hash: md5 - md5: 8a85411ba9f03859b8c4a6fd6079f03e - size: 1471009 + md5: 29577bd7b152ccf91a792e1e1c8b073e + size: 1471000 validate-w-capy: cmd: calkit nb execute --environment openflash-on-branch --no-check --to html "analysis/validation_with_capytaine_plots.ipynb" @@ -179,40 +179,40 @@ stages: deps: - path: .calkit/env-locks/openflash-on-branch hash: md5 - md5: 6fee7550c7f8d298fc987043523e190e.dir - size: 9764 + md5: 21b3d07e8e876ec54bb384a88ff24114.dir + size: 9977 nfiles: 1 - path: .calkit/notebooks/cleaned/analysis/low_m0_plots.ipynb hash: md5 - md5: b4dbb74d88dfa46140698a49a87947d4 - size: 11593 + md5: ea093bc530b8589101fad2355fc53a04 + size: 11584 + - path: analysis/sea-lab-utils + hash: md5 + md5: 304c963f85347176886d206b8c245c48.dir + size: 16699 + nfiles: 22 - path: dev/python/limiting-cases/low_m0.py hash: md5 md5: 14c26f7e714c57e0de0a9b507a4a8091 size: 5745 - path: package/src/ hash: md5 - md5: d5e40e2f0a2e7b547d3e8ec700c6a269.dir - size: 228300 - nfiles: 27 - - path: sea-lab-utils - hash: md5 - md5: bee8da5063bc568e5251764466d97f5c.dir - size: 18456 - nfiles: 24 + md5: bfa6c4043f17ba6a7727980503fcdf66.dir + size: 274286 + nfiles: 29 outs: - path: .calkit/notebooks/executed/analysis/low_m0_plots.ipynb hash: md5 - md5: a8547653d62e3711ba5ed8ee05f647d3 - size: 79695 + md5: 92cee6d97c92bbab19ab41dc992235a6 + size: 98262 - path: .calkit/notebooks/html/analysis/low_m0_plots.html hash: md5 - md5: f523c9b99747fc1d795116283f48806a - size: 384476 + md5: f482ee1a1c18a55441eb713d5ae9b6aa + size: 402998 - path: pubs/JFM/figs/MEEM-Low-Freq.pdf hash: md5 - md5: 2642f708fe85c22730dd626452dd3ac8 - size: 402985 + md5: ecbe10deffac5e79b2f62f22b0e677de + size: 123640 _clean-nb-slant-figs: cmd: calkit nb clean "analysis/slant_data_plots.ipynb" deps: @@ -236,8 +236,8 @@ stages: nfiles: 1 - path: .calkit/notebooks/cleaned/analysis/slant_data_plots.ipynb hash: md5 - md5: effb86232aa402753c74bf7fd4ffaa1a - size: 44500 + md5: 86dbc507ee974a6d95b27bc18c2a2391 + size: 44491 - path: analysis/data/potential-slants.pkl hash: md5 md5: 31cd3c8c05c5951db5f91ef631c166a0 @@ -250,7 +250,7 @@ stages: hash: md5 md5: 3cb581a4d2a2774c678c1ab000b5bcdc size: 6664 - - path: sea-lab-utils + - path: analysis/sea-lab-utils hash: md5 md5: bee8da5063bc568e5251764466d97f5c.dir size: 18456 @@ -258,27 +258,27 @@ stages: outs: - path: .calkit/notebooks/executed/analysis/slant_data_plots.ipynb hash: md5 - md5: e0dec938a208e9500fa799ed8031c277 - size: 469931 + md5: 864a36f2f38a55630902d591aa28bbbc + size: 469922 - path: .calkit/notebooks/html/analysis/slant_data_plots.html hash: md5 - md5: 9a3e09badb1f42fa46c4e3676fe17de2 - size: 881760 + md5: 40dcfb3d5ba138f27e73db22179fb6f3 + size: 881706 - path: pubs/JFM/figs/Along-Outline.pdf hash: md5 - md5: d7bdf9c9285573974252d475e3cf8a79 + md5: e127e40fac9d6145ea81eee93644ce6b size: 109531 - path: pubs/JFM/figs/Cross-Section-Potential-Slant.pdf hash: md5 - md5: 03325e72175cbeffe3a038a6efe86794 + md5: 6b1363afcc2193916e47ac10a28e97bf size: 363449 - path: pubs/JFM/figs/MEEM-CPT-Slant-Freq.pdf hash: md5 - md5: 87632752d88b4acd04e25368ff5541ea + md5: feffdcc1f23eecf6bf1de07972c394db size: 137300 - path: pubs/JFM/figs/Vary-Slopes.pdf hash: md5 - md5: d870c74ff963d9b5d0ac909657d86f31 + md5: 646bc94abb8f1bc126dcec4d2c563d3a size: 178446 _clean-nb-timing-figs: cmd: calkit nb clean "analysis/timing_plots.ipynb" @@ -303,13 +303,13 @@ stages: nfiles: 1 - path: .calkit/notebooks/cleaned/analysis/timing_plots.ipynb hash: md5 - md5: 3d8acfcba713200795b331612bbb3d1e - size: 22441 + md5: 246e8563b970cb9963fdd816baadc47a + size: 22432 - path: analysis/data/timing.pkl hash: md5 md5: 8f44378ee5eed677e435c38ac905d0af size: 4035 - - path: sea-lab-utils + - path: analysis/sea-lab-utils hash: md5 md5: bee8da5063bc568e5251764466d97f5c.dir size: 18456 @@ -317,23 +317,23 @@ stages: outs: - path: .calkit/notebooks/executed/analysis/timing_plots.ipynb hash: md5 - md5: 06854bad21c3244180cab6fba4f884db - size: 358957 + md5: 89bbb0d63735bf1700c397982ad13e89 + size: 358945 - path: .calkit/notebooks/html/analysis/timing_plots.html hash: md5 - md5: 35b5a43d18ba7232476414935e17c72b - size: 699004 + md5: 22d2096caf4c5eaeb9acafb129be53d4 + size: 698950 - path: pubs/JFM/figs/MEEM-CPT-Speed-Comparison.pdf hash: md5 - md5: 045f6fb53f9cb56bdcf6153110d4574d + md5: fcd06dfd5f1d49238e5c370eff294403 size: 136511 - path: pubs/JFM/figs/MEEM-CPT-Time-Matrix-Comparison.pdf hash: md5 - md5: 136f64c475df70c3a029d8c96d3ea507 + md5: a402914869eabfa573bc588657761028 size: 104576 - path: pubs/JFM/figs/MEEM-Comp-Distribution.pdf hash: md5 - md5: d05d914346cd03a9b4662b36903a423d + md5: 19e8a9d2fe8ce308269e6e04e20d82e9 size: 137530 sparsity-figs: cmd: calkit nb execute --environment openflash-on-main --no-check --to html @@ -380,9 +380,9 @@ stages: nfiles: 1 - path: .calkit/notebooks/cleaned/analysis/convergence-results.ipynb hash: md5 - md5: 8cf6a258c632999e7b933e7dcdff214a - size: 45478 - - path: sea-lab-utils + md5: 4cd2afb7b3d65985bde73850590d2e49 + size: 45469 + - path: analysis/sea-lab-utils hash: md5 md5: bee8da5063bc568e5251764466d97f5c.dir size: 18456 @@ -390,23 +390,23 @@ stages: outs: - path: .calkit/notebooks/executed/analysis/convergence-results.ipynb hash: md5 - md5: acf2047d06b687e067222f7d6392dcc6 - size: 232924 + md5: 32b189fc863aa33ca1aee5dd7e5fbe6a + size: 232827 - path: .calkit/notebooks/html/analysis/convergence-results.html hash: md5 - md5: ea60e8624fe5133832c957c460f6232c - size: 609842 + md5: 3ffd35c53e64c2fc22d7e76bcaa51455 + size: 609579 - path: pubs/JFM/figs/alpha-beta-explanation.pdf hash: md5 - md5: c5ccd7b1c7f815aeca90c3e5dfc0b0f4 + md5: 08f48591e416b0a62b7eec839ff2f74a size: 380172 - path: pubs/JFM/figs/alpha-beta-to-trend.pdf hash: md5 - md5: fc2a573dbc4458d901d43f22c3d40ce7 + md5: 025eee0f0da3424fbcb8d083072de554 size: 403400 - path: pubs/JFM/figs/convergence-fit-assessment.pdf hash: md5 - md5: e61b9659ab6a5593c1ec1e62f388dd56 + md5: 4d81b65af7ce4ebe9a31ab70e8951697 size: 209396 graphical-abstract: cmd: calkit latex build -e tex --no-check pubs/JFM/figs/graph_abstract.tex diff --git a/dvc.yaml b/dvc.yaml index 90d4e2f..da1b0c1 100644 --- a/dvc.yaml +++ b/dvc.yaml @@ -21,7 +21,7 @@ stages: - .calkit/notebooks/cleaned/analysis/low_m0_plots.ipynb - package/src/ - dev/python/limiting-cases/low_m0.py - - sea-lab-utils + - analysis/sea-lab-utils - .calkit/env-locks/openflash-on-branch outs: - pubs/JFM/figs/MEEM-Low-Freq.pdf @@ -39,7 +39,7 @@ stages: - analysis/data/slants.pkl - analysis/data/slope-slants.pkl - analysis/data/potential-slants.pkl - - sea-lab-utils + - analysis/sea-lab-utils - .calkit/env-locks/openflash-on-branch outs: - pubs/JFM/figs/MEEM-CPT-Slant-Freq.pdf @@ -58,7 +58,7 @@ stages: deps: - .calkit/notebooks/cleaned/analysis/timing_plots.ipynb - analysis/data/timing.pkl - - sea-lab-utils + - analysis/sea-lab-utils - .calkit/env-locks/openflash-on-branch outs: - pubs/JFM/figs/MEEM-Comp-Distribution.pdf @@ -75,7 +75,7 @@ stages: --no-check --to html "analysis/convergence-results.ipynb" deps: - .calkit/notebooks/cleaned/analysis/convergence-results.ipynb - - sea-lab-utils + - analysis/sea-lab-utils - .calkit/env-locks/openflash-on-branch outs: - pubs/JFM/figs/alpha-beta-explanation.pdf diff --git a/pubs/JFM/.gitignore b/pubs/JFM/.gitignore index fc19470..143acf2 100644 --- a/pubs/JFM/.gitignore +++ b/pubs/JFM/.gitignore @@ -5,3 +5,21 @@ *.fdb_latexmk *.fls *.synctex.gz + +# >>> calkit latex aux files (managed by calkit) >>> +*.aux +*.bbl +*.bcf +*.blg +*.fdb_latexmk +*.fls +*.lof +*.lot +*.nav +*.out +*.run.xml +*.snm +*.synctex.gz +*.toc +*.vrb +# <<< calkit latex aux files <<< diff --git a/pubs/JFM/FLMguide.tex b/pubs/JFM/FLMguide.tex index e42cc53..80ef9a8 100644 --- a/pubs/JFM/FLMguide.tex +++ b/pubs/JFM/FLMguide.tex @@ -114,7 +114,8 @@ \end{abstract} \begin{keywords} - Authors should not enter keywords on the manuscript, as these must be chosen by the author during the online submission process and will then be added during the typesetting process (see \href{https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/information/list-of-keywords}{Keyword PDF} for the full list). Other classifications will be added at the same time. + Authors should not enter keywords on the manuscript, as these must be chosen by the author during the online submission process and will then be added during the typesetting process (see \href{https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/information/list-of-keywords}{Keyword PDF} for the full list). +Other classifications will be added at the same time. \end{keywords} \fi %{\bf MSC Codes } {\it(Optional)} Please enter your MSC Codes here @@ -173,10 +174,10 @@ \section{Mathematical Formulation and Validation}\label{jfm:sec:mathematical-for The objective of this method is to determine the first-order hydrodynamic forces on a series of $M$ fixed or heaving surface-piercing concentric annular cylinders, as shown in Fig.~\ref{jfm:fig:Diagram}. -The internal fluid regions underneath each cylindrical ring are denoted by $i_1$, $i_2$, $\dots, i_M$. +The interior fluid regions underneath each cylindrical ring are denoted by $i_1$, $i_2$, $\dots, i_M$. Each cylindrical ring can be an independent body or rigidly fixed to any other cylindrical ring. -The external fluid region surrounding the body is denoted by $e$. -The geometry of the $m$th internal region is defined in terms of the radius $a_m$ measured from the axis of symmetry +The exterior fluid region surrounding the body is denoted by $e$. +The geometry of the $m$th interior region is defined in terms of the radius $a_m$ measured from the axis of symmetry and the draft $d_m$ measured from the mean free surface. The origin $O$ is located at the intersection of the body axis of symmetry and the mean free surface of the fluid. It is assumed that $a_{m+1}>a_m$ and $d_m{\centering\arraybackslash}p{0.085\linewidth}|>{\centering\arraybackslash}p{0.24\linewidth}|>{\centering\arraybackslash}p{0.34\linewidth}|>{\centering\arraybackslash}p{0.24\linewidth}|} \hline + \begin{tabular}{|>{\centering\arraybackslash}m{0.07\linewidth}|>{\centering\arraybackslash}m{0.28\linewidth}|>{\centering\arraybackslash}m{0.30\linewidth}|>{\centering\arraybackslash}m{0.24\linewidth}|} \hline Region& Innermost Interior $(i_1)$& Interior $(i_m$ for $m>1)$& Exterior $(e)$\\ \hline Homog. potential & $\phi^{i_1}_\mathrm{h}(r,z) = \displaystyle\sum_{n_1=0}^{N^{i_1}-1} C_{1{n_1}}^{i_1} R_{1{n_1}}^{i_1}(r) Z_{n_1}^{i_1}(z)$& $\phi^{i_m}_\mathrm{h}(r,z) = \displaystyle\sum_{n_m=0}^{N^{i_m}-1} \left(C_{1{n_m}}^{i_m} R_{1{n_m}}^{i_m}(r) + C_{2{n_m}}^{i_m} R_{2{n_m}}^{i_m}(r) \right) Z_{{n_m}}^{i_m}(z)$& $\phi^{e}_\mathrm{h}(r,z) = \displaystyle\sum_{n_e=0}^{N^{e}-1} C_{1{n_e}}^{e} R_{1{n_e}}^{e}(r) Z_{n_e}^{e}(z)$\\ \hline Partic. potential & $\phi^{i_1}_\mathrm{p}(r,z) = \begin{cases} \displaystyle\frac{1}{2(h-d_1)}\left[ (z+h)^2 - \frac{r^2}{2}\right] & \text{Heaving} \\ 0 & \text{Fixed} @@ -290,10 +291,10 @@ \subsection{Linear Hydrodynamics and Eigenfunctions} N_0^{-\frac{1}{2}}\cosh( \lambda_0^{e}(z+h)) & n_e=0 \\[1em] %%% <--- here N_{n_e}^{-\frac{1}{2}}\cos( \lambda_{n_e}^{e}(z+h)) & n_e \ge 1 \end{cases}$\\ \hline - Eigenvalue& $\displaystyle \lambda_{n_1}^{i_1} = \frac{n_1\pi}{h-d_{1}}, \quad n_1 \geq 1$& $\displaystyle \lambda_{n_m}^{i_m} = \frac{n_m\pi}{h-d_m}, \quad n_m \geq 1$& + Eigen- value& $\displaystyle \lambda_{n_1}^{i_1} = \frac{n_1\pi}{h-d_{1}}, \quad n_1 \geq 1$& $\displaystyle \lambda_{n_m}^{i_m} = \frac{n_m\pi}{h-d_m}, \quad n_m \geq 1$& $\displaystyle \begin{cases} \lambda_{0}^{e} \tanh(\lambda_{0}^{e} h)= \omega^2/g, & n_e=0 \\ \lambda_{n_e}^{e} \tan(\lambda_{n_e}^{e} h) = -\omega^2/g, & n_e \geq 1\\ \end{cases} $\\\hline \end{tabular} - \caption{Equations for the potential (homogeneous and particular), eigenfunctions (radial and vertical), and eigenvalues for each region. $i$ and $e$ denote internal and external regions, respectively.} + \caption{Equations for the potential (homogeneous and particular), eigenfunctions (radial and vertical), and eigenvalues for each region. $i$ and $e$ denote interior and exterior regions, respectively.} \label{jfm:tab:MEEM-eigenfunctions} \end{table} @@ -312,7 +313,7 @@ \subsection{Matching Across Fluid Boundaries }\label{jfm:sec:Matching Across Flu $N_\mathrm{T} =N^{i_1}+\sum_{m=2}^{M}2N^{i_m}+N^e$ unknown eigencoefficients. To solve for these unknowns, radial boundary conditions must be imposed at each interface between regions. -For a geometry with $M$ internal regions (and one external region), there are $M$ vertical boundaries. +For a geometry with $M$ interior regions (and one exterior region), there are $M$ vertical boundaries. The general formulation of the matching equations can be illustrated by considering two neighboring fluid regions, as shown in Fig.~\ref{jfm:fig:Matching Diagram}. \begin{figure}[h] @@ -394,7 +395,8 @@ \subsection{Block Matrix Structure}\label{jfm:sec:Block Matrix Structure} After constructing the $\mathbf{A}$ matrix and $\vec{b}$ vector that correspond to the problem's geometry and wave conditions, numerically solving the $\mathbf{A} \vec{x}=\vec{b}$ -equation yields the unknown eigencoefficients $\vec{x}$. Substituting into the expressions of Table~\ref{jfm:tab:MEEM-eigenfunctions} +equation yields the unknown eigencoefficients $\vec{x}$. +Substituting into the expressions of Table~\ref{jfm:tab:MEEM-eigenfunctions} yields the velocity potential everywhere in the fluid. Potential can then be integrated to find the hydrodynamic forces. % \begin{landscape} @@ -584,7 +586,8 @@ \subsection{Block Matrix Structure}\label{jfm:sec:Block Matrix Structure} $\boldsymbol{\mathcal{Z}}^{i_mi_{m+1}} \odot \mathbf{1}_{N^{i_{m}}1} \vec{R}_2^{i_{m+1}}$ \\ \hline \end{tabular} - \caption{MEEM $\mathbf{A}_m$ sub-matrix when $d_md_{m+1}$ ($i_m = \mathrm{s}$ and $i_{m+1} = \mathrm{t}$). Note all radial eigenfunctions and their derivatives are evaluated at $r=a_m$.} + \caption{MEEM $\vec{b}_m$ vector when $d_m>d_{m+1}$ ($i_m = \mathrm{s}$ and $i_{m+1} = \mathrm{t}$). +Note all radial eigenfunctions and their derivatives are evaluated at $r=a_m$.} \label{jfm:tab:MEEM-b_m-vector-case-1} \end{table} @@ -705,9 +709,14 @@ \subsection{Block Matrix Structure}\label{jfm:sec:Block Matrix Structure} \subsection{Hydrodynamic and Hydrostatic Forces}\label{jfm:sec:Hydrodynamic Forces} -In this section, we will characterize the radiation, excitation, and hydrostatic forces of a system with $M$ internal regions and $Q$ heave degrees of freedom. Also, while there are $M$ internal regions, multiple regions may form a single body if the regions are rigidly fixed to one another. Thus, for a system with a total of $M$ internal regions and $Q$ heave degrees of freedom (DOFs), $Q \le M$. +In this section, we will characterize the radiation, excitation, and hydrostatic forces of a system with $M$ interior regions and $Q$ heave degrees of freedom. +Also, while there are $M$ interior regions, multiple regions may form a single body if the regions are rigidly fixed to one another. +Thus, for a system with a total of $M$ interior regions and $Q$ heave degrees of freedom (DOFs), $Q \le M$. -Moving forward, $\mathbf{A} \vec{x}_q = \vec{b}^q$ will indicate the system of equations associated with the motion of only the $q$th body (and DOF) of the system, while all other bodies are fixed. Thus, $\vec{b}^q=[\vec{b}^q_1,\vec{b}^q_2,...,\vec{b}^q_M]^T$. Note that the matrix $\mathbf{A}$ does not depend on which body is moving. Meanwhile, $\vec{b}^q$, and hence the solution $\vec{x}_q$, does. This is because $\vec{b}^q$ contains integrals of particular potentials, which are zero for stationary regions and non-zero for moving regions. +Moving forward, $\mathbf{A} \vec{x}_q = \vec{b}^q$ will indicate the system of equations associated with the motion of only the $q$th body (and DOF) of the system, while all other bodies are fixed. +Thus, $\vec{b}^q=[\vec{b}^q_1,\vec{b}^q_2,...,\vec{b}^q_M]^T$. Note that the matrix $\mathbf{A}$ does not depend on which body is moving. +Meanwhile, $\vec{b}^q$, and hence the solution $\vec{x}_q$, does. +This is because $\vec{b}^q$ contains integrals of particular potentials, which are zero for stationary regions and non-zero for moving regions. First, we will find the total radiation force $\vec{f}_{pq}(t)$ on the $p$th body due to the $q$th DOF. % In the time domain, this is @@ -719,17 +728,23 @@ \subsection{Hydrodynamic and Hydrostatic Forces}\label{jfm:sec:Hydrodynamic Forc \begin{equation}\label{jfm:eq:freq domain vector of rad force} \vec{\hat{f}}_{pq}(\omega) = \text{i} \omega \rho \iint_{S_p} \ _{}^{q}\phi(r,z) \ \hat{n}_p dS \end{equation} -where $\rho$ is the density of the fluid, $S_p$ is the wetted surface of body $p$, $\hat{n}_p$ is the unit vector normal to the wetted surface of body $p$ pointing outward from the fluid, $\vec{f}_{pq}(t) = \mathrm{Re} \{ \vec{\hat{f}}_{pq} e^{- \text{i} \omega t} \}$, and $_{}^{q}\Phi(\mathbf{x},t) = \mathrm{Re} \{ _{}^{q}\phi(r,z) e^{- \text{i} \omega t} \}$. The left superscript of $q$ is added to distinguish the velocity potentials for different radiation problems. Taking the dot product of Eq.~\ref{jfm:eq:freq domain vector of rad force} with the unit vector $\hat{e}_z$ yields the complex heave force on body $p$ due to the motion of body $q$ +where $\rho$ is the density of the fluid, $S_p$ is the wetted surface of body $p$, $\hat{n}_p$ is the unit vector normal to the wetted surface of body $p$ pointing outward from the fluid, $\vec{f}_{pq}(t) = \mathrm{Re} \{ \vec{\hat{f}}_{pq} e^{- \text{i} \omega t} \}$, and $_{}^{q}\Phi(\mathbf{x},t) = \mathrm{Re} \{ _{}^{q}\phi(r,z) e^{- \text{i} \omega t} \}$. +The left superscript of $q$ is added to distinguish the velocity potentials for different radiation problems. +Taking the dot product of Eq.~\ref{jfm:eq:freq domain vector of rad force} with the unit vector $\hat{e}_z$ yields the complex heave force on body $p$ due to the motion of body $q$ \begin{equation}\label{jfm:eq:freq domain scalar rad force} \hat{f}_{pq} = \vec{\hat{f}}_{pq} \cdot \hat{e}_z = \text{i} \omega \rho \iint_{S_p} \ _{}^{q}\phi(r,z) \ (\hat{n}_p \cdot \hat{e}_z ) \ dS. \end{equation} Since $\hat{n}_p=\hat{e}_z$ at the horizontal portions of $S_p$ and $\hat{n}_p=\hat{e}_r$ at any vertical portions of $S_p$, integration on only the bottom surface of each region contributes to forces in heave. % Note that this will not be the case in Sec.~\ref{jfm:sec:slant} when we use a finite number of cylindrical regions to approximate an axisymmetric body with a slanted surface that is not purely vertical or horizontal. -Proceeding with integration along the bottom body boundaries, the total heave force on body $p$ will be due to integrating the potential on the bottom boundaries of all cylindrical rings belonging to body $p$. We will define $\mathcal{M}_p$ as the set of all indices that correspond to regions which form the $p$th body. For example, if body 1 consists of regions $i_1$, $i_3$ and $i_4$, $\mathcal{M}_1 = \{1, 3, 4\}$. Eq.~\ref{jfm:eq:freq domain scalar rad force} can be written in terms of the potential at each region by +Proceeding with integration along the bottom body boundaries, the total heave force on body $p$ will be due to integrating the potential on the bottom boundaries of all cylindrical rings belonging to body $p$. +We will define $\mathcal{M}_p$ as the set of all indices that correspond to regions which form the $p$th body. +For example, if body 1 consists of regions $i_1$, $i_3$ and $i_4$, $\mathcal{M}_1 = \{1, 3, 4\}$. +Eq.~\ref{jfm:eq:freq domain scalar rad force} can be written in terms of the potential at each region by \begin{equation}\label{jfm:eq:freq domain scalar rad force in terms of regions} \hat{f}_{pq} = \textrm{i} \omega \rho \sum_{m \in \mathcal{M}_p}\int_0^{2 \pi} \int_{a_m}^{a_{m+1}} \ _{}^{q}\phi^{i_m}(r,-d_m) \ r \ dr\ d\theta \end{equation} -where $_{}^{q}\phi^{i_m}(r,-d_m)$ is the potential in internal region $i_m$ evaluated at $z=-d_m$ when only the $q$th body is moving. $\hat{f}_{pq}$ can be rewritten in terms of frequency-dependent added mass and radiation damping coefficients $A_{pq}(\omega)$ and $B_{pq}(\omega)$, respectively, which is shown in Appendix~\ref{jfm:appC}. The result is +where $_{}^{q}\phi^{i_m}(r,-d_m)$ is the potential in interior region $i_m$ evaluated at $z=-d_m$ when only the $q$th body is moving. $\hat{f}_{pq}$ can be rewritten in terms of frequency-dependent added mass and radiation damping coefficients $A_{pq}(\omega)$ and $B_{pq}(\omega)$, respectively, which is shown in Appendix~\ref{jfm:appC}. +The result is \begin{equation}\label{jfm:A_pq B_pq scalar form} A_{pq}(\omega) + \frac{\mathrm{i}B_{pq}(\omega)}{\omega}=2\pi \rho (c_p\delta_{pq} + \vec{c}_p \ \vec{x}_q) =2\pi \rho (c_p\delta_{pq} + \vec{c}_p \ \mathbf{A}^{-1} \vec{b}^q) \end{equation} @@ -756,17 +771,21 @@ \subsection{Hydrodynamic and Hydrostatic Forces}\label{jfm:sec:Hydrodynamic Forc \begin{equation}\label{jfm:A_pq B_pq matrix form} \mathbf{A}_\mathrm{r}(\omega) + \frac{\mathrm{i}\mathbf{B}_\mathrm{r}(\omega)}{\omega}=2\pi \rho (\mathbf{C}_0 + \mathbf{C} \ \mathbf{X}) =2\pi \rho (\mathbf{C}_0 + \mathbf{C} \ \mathbf{A}^{-1} \ \mathbf{B}) \end{equation} -where the element in the $p$th row and column of the diagonal matrix $\mathbf{C}_0$ is $c_{p}$, the $p$th row of $\mathbf{C}$ is $\vec{c}_p$, the $q$th column of $\mathbf{X}$ is $\vec{x}_q$, and the $q$th column of $\mathbf{B}$ is $\vec{b}^q$. Finally, the added mass and radiation damping matrices are +where the element in the $p$th row and column of the diagonal matrix $\mathbf{C}_0$ is $c_{p}$, the $p$th row of $\mathbf{C}$ is $\vec{c}_p$, the $q$th column of $\mathbf{X}$ is $\vec{x}_q$, and the $q$th column of $\mathbf{B}$ is $\vec{b}^q$. +Finally, the added mass and radiation damping matrices are \begin{equation}\label{jfm:eq: added mass and damping matrices} \mathbf{A}_\mathrm{r}(\omega) = 2\pi \rho \ \mathrm{Re} \{ \mathbf{C}_0 + \mathbf{C} \ \mathbf{A}^{-1} \ \mathbf{B} \} \quad \text{and} \quad \mathbf{B}_\mathrm{r}(\omega) = 2\pi \rho \omega \ \mathrm{Im} \{ \mathbf{C}_0 + \mathbf{C} \ \mathbf{A}^{-1} \ \mathbf{B} \}. \end{equation} -To find the heave excitation force $X_q$ on the $q$th body due to an incident wave, a form of the Haskind relation can be used \citep{newman2018marine}. This was done in~\citet{chau2012inertia} and~\citet{zhang_performance_2024} for geometries with two and three internal regions, respectively. The results are the same for this configuration, as the derivation for the force on the $q$th body only involves the solution in the external region when the $q$th body is heaving. The heave excitation force on the $q$th body is +To find the heave excitation force $X_q$ on the $q$th body due to an incident wave, a form of the Haskind relation can be used \citep{newman2018marine}. +This was done in~\citet{chau2012inertia} and~\citet{zhang_performance_2024} for geometries with two and three interior regions, respectively. +The results are the same for this configuration, as the derivation for the force on the $q$th body only involves the solution in the exterior region when the $q$th body is heaving. +The heave excitation force on the $q$th body is \begin{equation}\label{jfm:eq:excitation force} X_q = \frac{-4 \text{i} \rho g h \sqrt{N_0} }{\cosh(\lambda_0^eh)\text{H}_0^1(\lambda_0^e a_M)} \ _{}^{q}C_{10}^e \end{equation} -where $g$ is the acceleration due to gravity, $\lambda_0^e$ is the wavenumber, $\textrm{H}_0^1$ is the zeroth-order Hankel function of the first kind, and $_{}^{q}C_{10}^e$ is the eigencoefficient in the external region for $n_e=0$ when only the $q$th body is heaving. +where $g$ is the acceleration due to gravity, $\lambda_0^e$ is the wavenumber, $\textrm{H}_0^1$ is the zeroth-order Hankel function of the first kind, and $_{}^{q}C_{10}^e$ is the eigencoefficient in the exterior region for $n_e=0$ when only the $q$th body is heaving. By applying Eq.~\ref{jfm:eq:excitation force} for $q=1,2,\dots, Q$, we can find the heave excitation force coefficient vector $\vec{X} \in \mathbb{C}^Q$, which is a column vector with the element $X_q$ in the $q$th entry. % The magnitude and phase are @@ -774,9 +793,10 @@ \subsection{Hydrodynamic and Hydrostatic Forces}\label{jfm:sec:Hydrodynamic Forc % |X_q| = \sqrt{\frac{ 4 \rho g V_g B_{mq}} {\lambda_0^e}} \quad \text{and} \quad % excitation % \angle X_q = -\frac{\pi}{2} + \angle\frac{ C_{10}^e}{\textrm{H}_0^{1}(\lambda_0^e a_M)} % \end{equation} -% where $g$ is the acceleration due to gravity, $\lambda_0^e$ is the wavenumber, $V_g$ is the finite depth group velocity, $\textrm{H}_0^1$ is the zeroth-order Hankel function of the first kind, and $C_{10}^e$ is the eigenfunction in the external region for $n=0$. Note that while the excitation magnitude $|\gamma|$ depends on the radiation damping $B_h$, which in turn depends on all the inner region eigencoefficients, the excitation phase $\angle\gamma$ depends only on the first exterior eigencoefficient, $C_{10}^e$. Eq.~\ref{jfm:eq:gamma-K} holds for any region heaving, but the solution to $\mathbf{A} \vec{x} = \vec{b}$ will be different, changing the values of $B_h$ and $C_{10}^e$ accordingly. +% where $g$ is the acceleration due to gravity, $\lambda_0^e$ is the wavenumber, $V_g$ is the finite depth group velocity, $\textrm{H}_0^1$ is the zeroth-order Hankel function of the first kind, and $C_{10}^e$ is the eigenfunction in the exterior region for $n=0$. Note that while the excitation magnitude $|\gamma|$ depends on the radiation damping $B_h$, which in turn depends on all the inner region eigencoefficients, the excitation phase $\angle\gamma$ depends only on the first exterior eigencoefficient, $C_{10}^e$. Eq.~\ref{jfm:eq:gamma-K} holds for any region heaving, but the solution to $\mathbf{A} \vec{x} = \vec{b}$ will be different, changing the values of $B_h$ and $C_{10}^e$ accordingly. -The hydrostatic stiffness matrix $\mathbf{K}$ and mass matrix $\mathbf{M}$ are diagonal matrices that can be found from geometry. The element in the $q$th row and $q$th column of $\mathbf{K}$ can be found by summing over the waterplane areas $W_m$ contributed by each region +The hydrostatic stiffness matrix $\mathbf{K}$ and mass matrix $\mathbf{M}$ are diagonal matrices that can be found from geometry. +The element in the $q$th row and $q$th column of $\mathbf{K}$ can be found by summing over the waterplane areas $W_m$ contributed by each region \begin{equation}\label{jfm:eq:hydrostatic stiffness} [\mathbf{K}]_{qq}= \rho g \sum_{m \in \mathcal{M}_q} W_m \end{equation} @@ -785,28 +805,39 @@ \subsection{Hydrodynamic and Hydrostatic Forces}\label{jfm:sec:Hydrodynamic Forc \begin{equation}\label{jfm:eq:mass matrix} [\mathbf{M}]_{qq}= \rho \sum_{m \in \mathcal{M}_q} W_md_m. \end{equation} -This is the mass of the $q$th body. Once all matrices are found, one can construct the equation of motion of the system for regular waves +This is the mass of the $q$th body. +Once all matrices are found, one can construct the equation of motion of the system for regular waves \begin{equation}\label{jfm:eq: EOM} (\mathbf{M} + \mathbf{A}_\mathrm{r}(\omega)) \ddot{\vec{\xi}} + \mathbf{B}_\mathrm{r}(\omega) \dot{\vec{\xi}} + \mathbf{K} \vec{\xi} =\mathrm{Re} \{ A \vec{X} e^{-\mathrm{i} \omega t} \} \end{equation} where $\vec{\xi}(t) = [\xi_1(t), \xi_2(t), \dots, \xi_Q(t)]^T$ is a vector containing the heave displacements of the $Q$ bodies of the system, $\omega$ is the wave frequency, and $A$ is the wave amplitude. \subsection{Low, High, and Infinite Frequency Approximations} -The wave frequency $\omega$ and wavenumber $\lambda_0^e$ are related by the dispersion relation in Table \ref{jfm:tab:MEEM-eigenfunctions}, which is monotonic and depends on $h$. Extreme values of $\lambda_0^e$ and/or $h$ push solutions towards edge cases, enabling simplification or requiring modifications to avoid numerical errors. +The wave frequency $\omega$ and wavenumber $\lambda_0^e$ are related by the dispersion relation in Table \ref{jfm:tab:MEEM-eigenfunctions}, which is monotonic and depends on $h$. +Extreme values of $\lambda_0^e$ and/or $h$ push solutions towards edge cases, enabling simplification or requiring modifications to avoid numerical errors. \subsubsection{Low Frequency}\label{jfm:sec:low-freq} -As $\omega \to 0$, the components of $\vec x$ exhibit the following asymptotic \behaviour{}: $\text{Re}(C^{i_m}_{1n_m})$ and $\text{Re}(C^{i_m}_{2n_m})$ behave like $K_1 + K_2\ln(\lambda_0^e h)$ for $n_m = 0$, where $K_1$ and $K_2$ are nonzero constants that are different for each coefficient and region, and approach nonzero constants for $n_m>0$. Meanwhile, $\text{Im}(C^{i_m}_{1n_m})$ and $\text{Im}(C^{i_m}_{2n_m})$ approach nonzero constants for $n_m=0$ and zero for $n_m>0$, as shown in Fig.~\ref{jfm:fig: extreme-frequencies}. +As $\omega \to 0$, the components of $\vec x$ exhibit the following asymptotic \behaviour{}: $\text{Re}(C^{i_m}_{1n_m})$ and $\text{Re}(C^{i_m}_{2n_m})$ behave like $K_1 + K_2\ln(\lambda_0^e h)$ for $n_m = 0$, where $K_1$ and $K_2$ are nonzero constants that are different for each coefficient and region, and approach nonzero constants for $n_m>0$. +Meanwhile, $\text{Im}(C^{i_m}_{1n_m})$ and $\text{Im}(C^{i_m}_{2n_m})$ approach nonzero constants for $n_m=0$ and zero for $n_m>0$, as shown in Fig.~\ref{jfm:fig: extreme-frequencies}. Since $\vec c_p$ is frequency independent, the hydrodynamic coefficients vary with frequency only through their dependence on $C^{i_m}_{1n_m}$ and $C^{i_m}_{2n_m}$. -From their forms, we can see that as $\omega \to 0$, the behaviors of the $n_m = 0$ coefficients dominate the others. Consequently, $A_{11}(\omega)$ grows proportional to $\ln(\lambda_0^e h)$ (although the constant term is still significant for the frequency range in Fig.~\ref{jfm:fig: extreme-frequencies}) while $B_{11}(\omega)/\omega$ approaches a constant. +From their forms, we can see that as $\omega \to 0$, the behaviors of the $n_m = 0$ coefficients dominate the others. +Consequently, $A_{11}(\omega)$ grows proportional to $\ln(\lambda_0^e h)$ (although the constant term is still significant for the frequency range in Fig.~\ref{jfm:fig: extreme-frequencies}) while $B_{11}(\omega)/\omega$ approaches a constant. This is consistent with \behaviour{} of the analytical low frequency limits for a single heaving cylinder described in \citet{yeung_added_1981}, $\lim_{\omega \to 0} A_{11}(\omega) = K - \frac{2B_{11}(0)}{\pi\omega}\ln(\lambda_0^e h) \approx - \frac{2B_{11}(0)}{\pi\omega}\ln(\lambda_0^e h)$, where $K$ is a constant. %$A_{11}(\omega) \to K- \frac{\rho \pi a_1^4}{2h}\ln{(\lambda_0^e a_1)}$ for some constant $K$ and $B_{11}(\omega)/\omega \to \frac{\rho \pi^2 a^4}{4h}$ -The low frequency approximation uses the shallow water approximation to represent the potential in each region with a depth-averaged potential \citep{chau2012inertia}, removing the potential's $z$-dependence. For the body regions, this is equivalent to keeping only the $n_m=0$ eigenfunctions and coefficients, since $Z^{i_m}_0(z) = 1$. For the exterior region, the only characteristic lengths are $1/\lambda_0^e$ and $h$, so low frequency is equivalent to shallow water. However, as the ratio of body radius to water depth ($a_M/h$) increases, the approximation becomes less accurate \citep{yeung_added_1981}. This can be interpreted as the $n_m = 0$ terms dominating faster for shallower water. +The low frequency approximation uses the shallow water approximation to represent the potential in each region with a depth-averaged potential \citep{chau2012inertia}, removing the potential's $z$-dependence. +For the body regions, this is equivalent to keeping only the $n_m=0$ eigenfunctions and coefficients, since $Z^{i_m}_0(z) = 1$. +For the exterior region, the only characteristic lengths are $1/\lambda_0^e$ and $h$, so low frequency is equivalent to shallow water. +However, as the ratio of body radius to water depth ($a_M/h$) increases, the approximation becomes less accurate \citep{yeung_added_1981}. +This can be interpreted as the $n_m = 0$ terms dominating faster for shallower water. \subsubsection{High Frequency}\label{jfm:sec:high-freq-limit} -The $\sinh$ component of $N_0$ (and therefore $N_0$) increases exponentially with high $\lambda_0^e h$. $N_0$ appears in the denominator of the first exterior region vertical eigenfunction $Z_0^e$ and its derivative, and anywhere else it appears is a specific case of one of these expressions. Both have hyperbolic functions of $\lambda_0^e(z+h)$ in the numerator that overflow and raise errors long before the fraction as a whole becomes so extreme. We found the expressions' limiting forms to extend their allowed input range. The accuracy of these forms depends solely on the product $\lambda_0^e h$, not $\lambda_0^e $ or $h$ individually, or $z$. +The $\sinh$ component of $N_0$ (and therefore $N_0$) increases exponentially with high $\lambda_0^e h$. $N_0$ appears in the denominator of the first exterior region vertical eigenfunction $Z_0^e$ and its derivative, and anywhere else it appears is a specific case of one of these expressions. +Both have hyperbolic functions of $\lambda_0^e(z+h)$ in the numerator that overflow and raise errors long before the fraction as a whole becomes so extreme. +We found the expressions' limiting forms to extend their allowed input range. +The accuracy of these forms depends solely on the product $\lambda_0^e h$, not $\lambda_0^e $ or $h$ individually, or $z$. \begin{equation} \lim_{\lambda_0^e h \to \infty} Z_0^e(z) = \lim_{\lambda_0^e h \to \infty} \frac{\cosh(\lambda_0^e(z + h))}{\sqrt{N_0}} = @@ -816,23 +847,31 @@ \subsubsection{High Frequency}\label{jfm:sec:high-freq-limit} \lim_{\lambda_0^e h \to \infty} \frac{\partial Z_0^e(z)}{\partial z} = \lim_{\lambda_0^e h \to \infty} \frac{\lambda_0^e\sinh(\lambda_0^e(z + h))}{\sqrt{N_0}} = \lambda_0^e \sqrt{2 \lambda_0^e h} \left(e^{\lambda_0^e z} - e^ {-\lambda_0^e(z + 2h)}\right) \end{equation} -Empirically, the approximated expressions are less than a fraction of $10^{-10}$ off from their true values for $\lambda_0^e h > 14$. This was encoded as the threshold for using the approximations. +Empirically, the approximated expressions are less than a fraction of $10^{-10}$ off from their true values for $\lambda_0^e h > 14$. +This was encoded as the threshold for using the approximations. \subsubsection{Infinite Frequency}\label{jfm:sec:inf-frequency} -As $\lambda_0^e$ increases, the coefficient of the first exterior region eigenfunction decreases, and later eigenfunctions dominate. At $\lambda_0^e = \infty$, +As $\lambda_0^e$ increases, the coefficient of the first exterior region eigenfunction decreases, and later eigenfunctions dominate. +At $\lambda_0^e = \infty$, % it is no longer a valid eigenvalue, and its eigenfunction is not valid either (has contribution 0) and -the solution is representable without the first exterior region eigenfunction. The rest of the exterior region eigenvalues must be finite and satisfy $\lambda_n^e \tan (\lambda_n^e h) = - \infty$, meaning $\lambda_n^e h = (n - \frac{1}{2})\pi$ and +the solution is representable without the first exterior region eigenfunction. +The rest of the exterior region eigenvalues must be finite and satisfy $\lambda_n^e \tan (\lambda_n^e h) = - \infty$, meaning $\lambda_n^e h = (n - \frac{1}{2})\pi$ and \begin{equation} \lim_{\lambda_0^e \to \infty }\lambda_n^e = \frac{(n - \frac{1}{2})\pi}{h}. \end{equation} In general, that is the lower bound for $\lambda_n^e$. % For finite frequency, $(n - \frac{1}{2})\pi \le \lambda_n^e h \le n\pi$ can be passed into a root-finding solver as bounds for $\lambda_n^e$. %The sentence above is redundant since there is a section that discusses this -Lastly, damping approaches zero as $\lambda_0^e$ approaches infinity. Mathematically, this is evident from the matrix formulation: the Hankel functions $H_0^1$ are the only Bessel functions involved that give imaginary values for real inputs, so they supply the only imaginary elements to the $\mathbf{A}$ matrix. When their contribution goes to zero, the matrix (and its solution) become real, leaving no imaginary component in the hydrodynamic coefficient integral. +Lastly, damping approaches zero as $\lambda_0^e$ approaches infinity. +Mathematically, this is evident from the matrix formulation: the Hankel functions $H_0^1$ are the only Bessel functions involved that give imaginary values for real inputs, so they supply the only imaginary elements to the $\mathbf{A}$ matrix. +When their contribution goes to zero, the matrix (and its solution) become real, leaving no imaginary component in the hydrodynamic coefficient integral. \begin{figure}[htbp] \centering \includegraphics[width=\linewidth]{figs/MEEM-Low-Freq.pdf} - \caption{Left: Comparison of the low frequency approximation, the infinite frequency limit, and standard MEEM (with $N^{i_m} = N^e = 100$) for the geometry described in Section~\ref{jfm:sec:validation}. Right: A comparison of the first four $C^{i_2}_{1n}$ over low frequencies, demonstrating that the \behaviour{} of $C^{i_2}_{10}$ eventually dominates as frequency approaches zero for both the real and imaginary parts. This trend is representative of the other $C^{i_m}_{1n}$ and $C^{i_m}_{2n}$. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-Low-Freq.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \caption{Left: Comparison of the low frequency approximation, the infinite frequency limit, and standard MEEM (with $N^{i_m} = N^e = 100$) for the geometry described in Section~\ref{jfm:sec:validation}. +Right: A comparison of the first four $C^{i_2}_{1n}$ over low frequencies, demonstrating that the \behaviour{} of $C^{i_2}_{10}$ eventually dominates as frequency approaches zero for both the real and imaginary parts. +This trend is representative of the other $C^{i_m}_{1n}$ and $C^{i_m}_{2n}$. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-Low-Freq.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig: extreme-frequencies} \end{figure} @@ -843,7 +882,8 @@ \subsubsection{Infinite Frequency}\label{jfm:sec:inf-frequency} \subsection{Numerics}\label{jfm:sec:numerics} This section discusses numerical considerations including overflow, finite precision, condition number, and numerical solution algorithms that become relevant when implementing MEEM. -Avoiding numerical failures in edge cases is particularly relevant for optimization applications where unusual geometries may be evaluated at intermediate iterations. In the following subsections, we denote the maximum representable float before overflow as $\rm{f}_{max}$. +Avoiding numerical failures in edge cases is particularly relevant for optimization applications where unusual geometries may be evaluated at intermediate iterations. +In the following subsections, we denote the maximum representable float before overflow as $\rm{f}_{max}$. % All discussion of numerical overflow uses the standard Python float type, which has a maximum representable finite value of around $1.8 \times 10^{308}$, and minimum positive nonzero value near $2.2 \times 10^{-308}$. @@ -851,7 +891,9 @@ \subsubsection{Overflow in Radial Eigenfunctions} Without using exponentially scaled Bessel functions (Table~\ref{jfm:tab:exp-bessels}), the radial eigenfunctions overflow at arguments near $\lambda r \text{ (and/or $\lambda a$)}\geq c_\mathrm{overflow} \approx \ln(\rm{f}_{max})$ due to overflow in the numerator or denominator individually, where $\lambda$ can be $\lambda_{n_e}^e$ or $\lambda_{n_m}^{i_m}$. Meanwhile, the radial eigenfunctions computed using exponentially scaled Bessel functions will only overflow after $|\lambda (r - a)|\geq c_\mathrm{overflow}$. This allows larger values of $\lambda a$ as long as $r$ is near $a$, extending the dimensions of geometries and terms per region allowed. -Due to the relationship for $\lambda_{n_m}^{i_m}$ in Table~\ref{jfm:tab:MEEM-eigenfunctions}, the use of the exponentially scaled Bessel functions alleviates the restriction on the maximum allowable truncation order of the series in region $i_m$ from $N^{i_m} < c_\mathrm{overflow}(h-d_m) / (\pi a_m)$ to $N^{i_m} < c_\mathrm{overflow}(h-d_m) / (\pi(a_{m+1} - a_m))$. Notice how this new restriction depends on the difference in radial dimensions rather than the radial dimension itself. Since this permits the use of larger truncation orders, more accurate solutions are achievable. +Due to the relationship for $\lambda_{n_m}^{i_m}$ in Table~\ref{jfm:tab:MEEM-eigenfunctions}, the use of the exponentially scaled Bessel functions alleviates the restriction on the maximum allowable truncation order of the series in region $i_m$ from $N^{i_m} < c_\mathrm{overflow}(h-d_m) / (\pi a_m)$ to $N^{i_m} < c_\mathrm{overflow}(h-d_m) / (\pi(a_{m+1} - a_m))$. +Notice how this new restriction depends on the difference in radial dimensions rather than the radial dimension itself. +Since this permits the use of larger truncation orders, more accurate solutions are achievable. \begin{table} \centering \begin{tabular}{|c|c|c|} @@ -865,7 +907,9 @@ \subsubsection{Overflow in Radial Eigenfunctions} $\frac{K_{\nu}(\lambda r)}{K_\nu(\lambda a)} = \frac{K_\nu^e (\lambda r)}{K_\nu^ e(\lambda a)}\cdot e^{\lambda(a-r)}$\\ \hline \end{tabular} -\caption{Typical Bessel functions ($I_\nu(z), K_\nu(z)$) exhibit approximately exponential growth or decay. Exponentially scaled Bessel functions counteract this and span only a few orders of magnitude for the reasonable range of inputs. Examples of the new form of the radial eigenfunctions are shown here.} \label{jfm:tab:exp-bessels} \end{table} +\caption{Typical Bessel functions ($I_\nu(z), K_\nu(z)$) exhibit approximately exponential growth or decay. +Exponentially scaled Bessel functions counteract this and span only a few orders of magnitude for the reasonable range of inputs. +Examples of the new form of the radial eigenfunctions are shown here.} \label{jfm:tab:exp-bessels} \end{table} \subsubsection{Overflow in Vertical Eigenfunctions} The vertical eigenfunction $Z_k^e$ for $k=0$ contains the $\cosh$ and $\sinh$ functions, which diverge for large values of $\lambda_0^eh$ (high frequencies or deep water). @@ -954,7 +998,8 @@ \subsubsection{Matrix Sparsity} \caption{$\mathbf{C}^T$} \label{jfm:fig:sparsityC} \end{subfigure} - \caption{Sparsity pattern in the $\mathbf{A}$, $\mathbf{B}$, and $\mathbf{C}$ matrices. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/notebooks?path=analysis\%2Fsparsity_plots.ipynb}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \caption{Sparsity pattern in the $\mathbf{A}$, $\mathbf{B}$, and $\mathbf{C}$ matrices. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/notebooks?path=analysis\%2Fsparsity_plots.ipynb}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:sparsity} \end{figure} @@ -977,7 +1022,8 @@ \subsection{Validation}\label{jfm:sec:validation} \begin{figure}[htbp] \centering \includegraphics[width=0.95\linewidth]{figs/MEEM_vs_Capytaine_Nonslant_Validation.pdf} - \caption{Added mass, radiation damping, excitation magnitude, and excitation phase from MEEM and Capytaine for CorPower-like WEC without slanted portions. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM_vs_Capytaine_Nonslant_Validation.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \caption{Added mass, radiation damping, excitation magnitude, and excitation phase from MEEM and Capytaine for CorPower-like WEC without slanted portions. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM_vs_Capytaine_Nonslant_Validation.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:hydro coeff validation} \end{figure} @@ -1003,7 +1049,8 @@ \section{Convergence of Hydrodynamic Coefficients}\label{jfm:sec:convergence} \includegraphics[width=0.9\linewidth]{figs/alpha-beta-explanation.pdf} \caption{Left: Added mass and damping calculated for a three body region configuration at $N^{i_1} = N^{i_3} = N^e = 200$ with region $i_2$ heaving, for varying $N^{i_2}$. Right: The data at left is transformed to the natural log of the associated error, - and fitted to obtain error envelope parameters $\alpha, \beta$ for each of added mass and damping. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Falpha-beta-explanation.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + and fitted to obtain error envelope parameters $\alpha, \beta$ for each of added mass and damping. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Falpha-beta-explanation.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:error-model} \end{figure} @@ -1014,7 +1061,8 @@ \section{Convergence of Hydrodynamic Coefficients}\label{jfm:sec:convergence} \begin{figure} \centering \includegraphics[width=0.9\linewidth]{figs/nmk-predict-flowchart.png} - \caption{Flowchart of term count prediction. A geometry and desired error (green) are passed into the formula (blue) determined by the convergence study, producing a term count recommendation (orange).} + \caption{Flowchart of term count prediction. +A geometry and desired error (green) are passed into the formula (blue) determined by the convergence study, producing a term count recommendation (orange).} \label{jfm:fig:nmk-predict-flowchart} \end{figure} \subsection{Convergence Study Procedure} \label{jfm:sec:finding-dimensionless-parameters} @@ -1063,7 +1111,8 @@ \subsection{Convergence Study Procedure} \label{jfm:sec:finding-dimensionless-pa \begin{figure} \centering \includegraphics[width=0.9\linewidth]{figs/alpha-beta-to-trend.pdf} - \caption{Process of choosing the fitting function for each dimensionless parameter (here $\frac{h-d_2}{a_2 - a_1}$), once identified. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Falpha-beta-to-trend.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \caption{Process of choosing the fitting function for each dimensionless parameter (here $\frac{h-d_2}{a_2 - a_1}$), once identified. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Falpha-beta-to-trend.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:choosing-fitting-functions} \end{figure} @@ -1167,23 +1216,37 @@ \subsection{Final Models} % Table-like figure with images of dependencies. Differentiate between inapplicable (e.g. \neighbour{} required for formula doesn't exist) and independent (plottable but no relation) for unplotted boxes. Separate for added mass and damping (likely ignore damping in interior regions for time). Only some examples will actually be plotted, most dependencies will just be formulas (or independent/inapplicable). } \label{jfm:tab:final-fitting-functions}\end{table} -Approximate dependencies between fit parameters and dimensionless parameters in the body regions are listed in Table~\ref{jfm:tab:final-fitting-functions}. In this section, we interpret some of the most influential dimensionless parameters. +Approximate dependencies between fit parameters and dimensionless parameters in the body regions are listed in Table~\ref{jfm:tab:final-fitting-functions}. +In this section, we interpret some of the most influential dimensionless parameters. -The number of terms in a region's eigenfunction expansion necessary to sufficiently resolve the velocity potential's detail there (i.e. achieve convergence) depends on the detail itself and the resolving power. In other words, influential dimensionless parameters relate the spatial frequency of the detail (variation in the true value of the potential) to the characteristic length of a region's eigenfunctions. +The number of terms in a region's eigenfunction expansion necessary to sufficiently resolve the velocity potential's detail there (i.e. achieve convergence) depends on the detail itself and the resolving power. +In other words, influential dimensionless parameters relate the spatial frequency of the detail (variation in the true value of the potential) to the characteristic length of a region's eigenfunctions. -In the body region $i_m$, the most important parameter is its $\frac{\text{fluid height}}{\text{radial width}} = \frac{h - d_{m}}{a_{m} - a_{{m-1}}}$. The radial eigenfunctions here inherit their eigenvalues $\lambda_n^{i_m} = \frac{n\pi}{h-d_m}$ from the corresponding vertical eigenfunction. Thus, taller regions need higher harmonics to create the same characteristic length of resolution for radial details, and the ratio of fluid height to radial width is a ratio of resolving scale to detail. +In the body region $i_m$, the most important parameter is its $\frac{\text{fluid height}}{\text{radial width}} = \frac{h - d_{m}}{a_{m} - a_{{m-1}}}$. +The radial eigenfunctions here inherit their eigenvalues $\lambda_n^{i_m} = \frac{n\pi}{h-d_m}$ from the corresponding vertical eigenfunction. +Thus, taller regions need higher harmonics to create the same characteristic length of resolution for radial details, and the ratio of fluid height to radial width is a ratio of resolving scale to detail. -In the exterior region, the analogous relationship between the two major characteristic lengths is captured by $\lambda_0^eh$. Convergence slows as $\lambda_0^eh$ increases, particularly in the case of damping. This trend is consistent with Sec.~\ref{jfm:sec:low-freq}, which shows that only one term per region (exterior or otherwise) is needed when $\lambda_0^e$ is near zero. +In the exterior region, the analogous relationship between the two major characteristic lengths is captured by $\lambda_0^eh$. +Convergence slows as $\lambda_0^eh$ increases, particularly in the case of damping. +This trend is consistent with Sec.~\ref{jfm:sec:low-freq}, which shows that only one term per region (exterior or otherwise) is needed when $\lambda_0^e$ is near zero. -In the body regions, another notable local parameter is the ratio of region's \neighbour{}'s fluid heights to that of its own. We observed that convergence is significantly faster for region $i_m$ when $\frac{h-d_{m-1}}{h-d_m} < 1$ than when it's greater than $1$. The convergence speed changes quickly (almost step-like) near $1$. The trend is the same for $\frac{h-d_{m+1}}{h-d_m}$. +In the body regions, another notable local parameter is the ratio of a region's \neighbour{}s' fluid heights to that of its own. +We observed that convergence is significantly faster for region $i_m$ when $\frac{h-d_{m-1}}{h-d_m} < 1$ than when it's greater than $1$. +The convergence speed changes quickly (almost step-like) near $1$. +The trend is the same for $\frac{h-d_{m+1}}{h-d_m}$. -This is theorized to result from the boundary condition represented by the ratio. If $\frac{h-d_{m-1}}{h-d_m} < 1$, then region $m$'s entire inner boundary condition is the continuity conditions between regions $m$ and $m-1$, but if $\frac{h-d_{m-1}}{h-d_m} > 1$, the boundary includes a section of $\frac{\partial \phi}{\partial r} = 0$ near $z = d_m$, where the hydrodynamic coefficients are being integrated. This constant rather than matching boundary condition may create simpler spatial details, leading to faster convergence. +This is theorized to result from the boundary condition represented by the ratio. +If $\frac{h-d_{m-1}}{h-d_m} < 1$, then region $m$'s entire inner boundary condition is the continuity conditions between regions $m$ and $m-1$, but if $\frac{h-d_{m-1}}{h-d_m} > 1$, the boundary includes a section of $\frac{\partial \phi}{\partial r} = 0$ near $z = d_m$, where the hydrodynamic coefficients are being integrated. +This constant rather than matching boundary condition may create simpler spatial details, leading to faster convergence. A cumulative parameter observed for the innermost region ($i_1)$ was some dependence on the depth of the outermost region ($i_3$), where convergence for $N^{i_1}$ was faster if $d_3 > d_2$, which we termed a shielding effect. We removed this complicating factor by only considering the upper bounding case $d_3 < d_2$ when predicting for the innermost region (e.g. the data set for $i_1$ in Fig.~\ref{jfm:fig:convergence-fit-assessment}). However, this suggests the possibility that the impact of fluid height ratios, especially in the case of the outer \neighbour{}, might be a special case of the shielding effect. -In the exterior region, other influential parameters include $\frac{h-d_M}{a_M-a_{M-1}}$ and $\frac{h-d_M}{h}$ for both hydrodynamic coefficients and $\frac{a_M}{h}$ for added mass only. Convergence was slower for larger $\frac{h-d_M}{a_M-a_{M-1}}$ (the outermost region's main resolution-detail ratio) and smaller $\frac{a_M}{h}$. However, the convergence relation with $\frac{h-d_M}{h}$ was complicated by large oscillatory variation in the hydrodynamic coefficients with respect to increasing $N^{i_m}$ (i.e. the configurations exhibited significant nonmonotonic convergence) for values of $\frac{h-d_M}{h}$ near $1$. By $\frac{h-d_M}{h} < 0.8$ though, there is a clear trend of slower convergence for smaller $\frac{h-d_M}{h}$. +In the exterior region, other influential parameters include $\frac{h-d_M}{a_M-a_{M-1}}$ and $\frac{h-d_M}{h}$ for both hydrodynamic coefficients and $\frac{a_M}{h}$ for added mass only. +Convergence was slower for larger $\frac{h-d_M}{a_M-a_{M-1}}$ (the outermost region's main resolution-detail ratio) and smaller $\frac{a_M}{h}$. +However, the convergence relation with $\frac{h-d_M}{h}$ was complicated by large oscillatory variation in the hydrodynamic coefficients with respect to increasing $N^{i_m}$ (i.e. the configurations exhibited significant nonmonotonic convergence) for values of $\frac{h-d_M}{h}$ near $1$. +By $\frac{h-d_M}{h} < 0.8$ though, there is a clear trend of slower convergence for smaller $\frac{h-d_M}{h}$. %TODO find original plots for h-d_M/h to list he positive/negative correlation. \subsection{Assessment} \label{jfm:sec:convergence-fit-assessment} @@ -1217,7 +1280,8 @@ \subsection{Assessment} \label{jfm:sec:convergence-fit-assessment} \includegraphics[width=0.9\linewidth]{figs/convergence-fit-assessment.pdf} \caption{Randomly generated (described in Sec.~\ref{jfm:sec:convergence-fit-assessment}) configurations with the target region heaving were fit with the product of the dependencies in Table~\ref{jfm:tab:final-fitting-functions}; the accuracy of the resulting fits for predicting $1\%$ error are shown. - Note that the whiskers are at the 5th and 95th percentile, $n$ here is the size of each set of configurations, and configurations were selected that converged by $N^{i_m} = 150$. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Fconvergence-fit-assessment.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + Note that the whiskers are at the 5th and 95th percentile, $n$ here is the size of each set of configurations, and configurations were selected that converged by $N^{i_m} = 150$. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2Fconvergence-fit-assessment.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:convergence-fit-assessment} \end{figure} @@ -1240,24 +1304,38 @@ \section{Slanted Geometries}\label{jfm:sec:slant} \subsection{Discretization} -As formulated, MEEM can only exactly represent geometries where the fluid can be divided into regions that have the top boundary parallel to the sea floor. The standard way to use MEEM with slanted or curved bodies is to approximate the geometry by subdividing slanted regions into numerous stepped regions approximating the true outline~\citep{kokkinowrachos_behaviour_1986}, as shown in Figure~\ref{jfm:fig:Discretization Diagram}. There are many options for this discretization. As shown in Fig.~\ref{jfm:fig:Discretization Schemes Diagram}, the wetted surface of the discretized body \modelled{} can lie a) entirely within, b) partially within, or c) outside of the slanted wetted surface that is being approximated. In cases a) and c), the computed potentials in the true fluid region will be smooth. Alternatively, in case b), the approximating outline can cross back and forth across the true outline, meaning some points in the true fluid are inside of the body. This creates discontinuities in the potential at points in the true fluid region that correspond to a fluid-body boundary in the approximation. Thus, in this work, the potential is not integrated over the true slanted wetted surface. Instead, the pressure is integrated over the discretized wetted surface, outlined in red in Fig.~\ref{jfm:fig:Discretization Schemes Diagram}. - -However, this discretization quickly becomes computationally expensive. Not only does matrix size increase as the number of regions increases, but the number of terms required for convergence in each subregion also increases. This is because increasing the number of subdivisions reduces the radial width allocated to each subregion without significantly changing the fluid height, increasing $\frac{\text{fluid height}}{\text{radial width}}$ (see Section~\ref{jfm:sec:convergence}). - -A complicating factor is that regions with shallower slants can be represented more accurately with fewer subdivisions than those with steeper slants. Another is that the hydrodynamic forces on the entire body can be thought of as a weighted sum of the forces on each region, where the radial width of each region determines the weights. +As formulated, MEEM can only exactly represent geometries where the fluid can be divided into regions that have the top boundary parallel to the sea floor. +The standard way to use MEEM with slanted or curved bodies is to approximate the geometry by subdividing slanted regions into numerous stepped regions approximating the true outline~\citep{kokkinowrachos_behaviour_1986}, as shown in Figure~\ref{jfm:fig:Discretization Diagram}. +There are many options for this discretization. +As shown in Fig.~\ref{jfm:fig:Discretization Schemes Diagram}, the wetted surface of the discretized body \modelled{} can lie a) entirely within, b) partially within, or c) outside of the slanted wetted surface that is being approximated. +In cases a) and c), the computed potentials in the true fluid region will be smooth. +Alternatively, in case b), the approximating outline can cross back and forth across the true outline, meaning some points in the true fluid are inside of the body. +This creates discontinuities in the potential at points in the true fluid region that correspond to a fluid-body boundary in the approximation. +Thus, in this work, the potential is not integrated over the true slanted wetted surface. +Instead, the pressure is integrated over the discretized wetted surface, outlined in red in Fig.~\ref{jfm:fig:Discretization Schemes Diagram}. + +However, this discretization quickly becomes computationally expensive. +Not only does matrix size increase as the number of regions increases, but the number of terms required for convergence in each subregion also increases. +This is because increasing the number of subdivisions reduces the radial width allocated to each subregion without significantly changing the fluid height, increasing $\frac{\text{fluid height}}{\text{radial width}}$ (see Section~\ref{jfm:sec:convergence}). + +A complicating factor is that regions with shallower slants can be represented more accurately with fewer subdivisions than those with steeper slants. +Another is that the hydrodynamic forces on the entire body can be thought of as a weighted sum of the forces on each region, where the radial width of each region determines the weights. Since the forces applied to regions with smaller radial widths get weighted less, MEEM is able to accurately determine the hydrodynamic coefficients of bodies with poorly approximated slanted regions when the slanted regions have small radial widths. \begin{figure}[htbp] \centering \includegraphics[width=0.95\linewidth]{figs/slant_figures.pdf} - \caption{Cross-sectional view of a slanted geometry and its equivalent discretized geometry. The close-up shown on the right-hand side shows how a slanted region can be approximated by a finite number of cylindrical rings. The unit vector normal to the horizontal part of all cylindrical rings is $\hat{n}$, while the unit vector normal to the true slanted body in the $m$th region is $\hat{n}_{\zeta_m}$.} + \caption{Cross-sectional view of a slanted geometry and its equivalent discretized geometry. +The close-up shown on the right-hand side shows how a slanted region can be approximated by a finite number of cylindrical rings. +The unit vector normal to the horizontal part of all cylindrical rings is $\hat{n}$, while the unit vector normal to the true slanted body in the $m$th region is $\hat{n}_{\zeta_m}$.} \label{jfm:fig:Discretization Diagram} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.95\linewidth]{figs/discretization_scheme_diagrams.pdf} - \caption{Cross-sectional view of different discretization schemes for approximating a slanted geometry with cylindrical rings. The geometry of the cylindrical rings can be chosen such that their horizontal surfaces are a) within, b) partially within, or c) outside the true slanted body shape.} + \caption{Cross-sectional view of different discretization schemes for approximating a slanted geometry with cylindrical rings. +The geometry of the cylindrical rings can be chosen such that their horizontal surfaces are a) within, b) partially within, or c) outside the true slanted body shape.} \label{jfm:fig:Discretization Schemes Diagram} \end{figure} @@ -1265,21 +1343,53 @@ \subsection{Discretization} % \subsection{Standard Representations for Slanted Geometries} \label{jfm:subsection: slant intro} \subsection{Sources of Inaccuracies} -When \modelling{} a slanted geometry as a discretized one using MEEM, inaccuracies can accrue when 1) computing the radiated velocity potential and 2) integrating pressure over the discretized wetted surface. Since the radial and vertical dependence was separated in Table~\ref{jfm:tab:MEEM-eigenfunctions}, coupling between the radial and vertical directions cannot be captured. Additionally, the boundary condition on the slanted wetted surface will not be satisfied when using MEEM on the discretized geometry. This leads to discrepancies in the velocity potential. Furthermore, integrating the pressure over the discretized wetted surface instead of the slanted wetted surface leads to additional inaccuracies since the pressure is not evaluated at the correct spatial points. If one considers integrating the pressure on a slanted surface $S_p$ at constant angle $\zeta$, instead of over the horizontal sections of the discretized geometry, $\hat n_p \cdot \hat e_z = \sin(\zeta)$ and $dS = \frac{r}{\sin(\zeta)}drd\theta$ in Eq.~\ref{jfm:eq:freq domain scalar rad force}. When these are substituted, the $\sin(\zeta)$ cancels and the result is the same as Eq.~\ref{jfm:eq:freq domain scalar rad force in terms of regions}, except $d_m$ now has $r$ dependence. However, the implicit dependence of the $Z$ eigenfunction evaluations on $r$ means that the integrals including homogeneous potentials cannot be simplified as in Eqs.~\ref{jfm:eq:freq domain scalar rad force in terms of added mass and damping} and onward. Unless the region's outline is flat and $d_m(r)$ is constant, the hydrodynamic coefficient integrals (given $\vec x$) do not admit closed forms. - -Instead of altering the MEEM procedure for slanted geometries, the same procedure can be used for \modelling{} slanted geometries with the assumption that, as the number of subdivisions increases, the discretized geometry approaches the true geometry, and, consequently, inaccuracies in the hydrodynamic coefficients diminish. Thus, a proper choice of the number of subdivisions is required to mitigate these inaccuracies. - -\subsection{Inaccuracies in Velocity Potential} While the hydrodynamic coefficients computed using MEEM may approach their true values for a slanted geometry, inaccuracies in the velocity potential are still expected locally. Fig~\ref{jfm:fig:contour potential comparison plots} (a) and (b) show the real value and error in the real value of the radiated velocity potential for a discretized body (\modelled{} with MEEM) relative to a slanted body (\modelled{} with Capytaine). Note the error in the hatched region in Fig~\ref{jfm:fig:contour potential comparison plots} (b) is removed as the value of the velocity potential is small in this region ($\mathrm{Re}(\phi)<0.2$). There is an overall trend of error moving from positive to negative as the depth becomes shallower. Fig~\ref{jfm:fig:contour potential comparison plots} (c) and (d) show a more detailed view of the local \behaviour{} of the velocity potential. The contours of constant velocity potential, indicated as solid black lines in Fig~\ref{jfm:fig:contour potential comparison plots} (c), either start and end at vertical and horizontal sections of the discretized surface, or are parallel to the slant that is being approximated, indicated as dashed blue lines in Fig~\ref{jfm:fig:contour potential comparison plots} (c). Fig~\ref{jfm:fig:contour potential comparison plots} (d) shows the corresponding error in the real value of the velocity potential (relative to Capytaine). The largest positive error is within the discretized body. For each step, there is positive error on the horizontal surface and negative error on the vertical surface. - -If one were to consider a different integration scheme to minimize the error in the velocity potential that is used in the hydrodynamic coefficient calculations, one may seek to sample points in Fig~\ref{jfm:fig:contour potential comparison plots} (d) where error is zero, and numerically integrate over the true slant outline. However, the precise radial and vertical coordinates where the error is zero are unknown before performing the computation and comparing with a BEM solver. A different option is to systematically sample the velocity potential at spatial points that are determined by the slant and discretized geometries. For example, one could sample the velocity potential at locations where the slant surface intersects with the discretized surface. These points are indicated in Fig~\ref{jfm:fig:contour potential comparison plots} (c-e) with dots and diamonds for points sampled along the vertical and horizontal surfaces, respectively. Fig~\ref{jfm:fig:contour potential comparison plots} (e) shows the error in the real and imaginary parts of the velocity potential along the slant and stepped (discretized) surfaces across the entire radial width. When comparing the real parts, sampling at the horizontal surfaces leads to errors less than $3\%$, while sampling at the vertical surfaces can result in close to $4\%$ error. However, when considering the imaginary parts, sampling along the vertical surface results in less error. Still, errors will be present regardless of which of these sampling locations is chosen. While accurate hydrodynamic coefficients were obtained using the MEEM formulation discussed in Sec.~\ref{jfm:sec:mathematical-formulation}, Fig~\ref{jfm:fig:contour potential comparison plots} (c-e) show that systematic approaches for sampling the potential may be effective ways to mitigate inaccuracies and reduce the number of discretizations needed. +When \modelling{} a slanted geometry as a discretized one using MEEM, inaccuracies can accrue when 1) computing the radiated velocity potential and 2) integrating pressure over the discretized wetted surface. +Since the radial and vertical dependence was separated in Table~\ref{jfm:tab:MEEM-eigenfunctions}, coupling between the radial and vertical directions cannot be captured. +Additionally, the boundary condition on the slanted wetted surface will not be satisfied when using MEEM on the discretized geometry. +This leads to discrepancies in the velocity potential. +Furthermore, integrating the pressure over the discretized wetted surface instead of the slanted wetted surface leads to additional inaccuracies since the pressure is not evaluated at the correct spatial points. +If one considers integrating the pressure on a slanted surface $S_p$ at constant angle $\zeta$, instead of over the horizontal sections of the discretized geometry, $\hat n_p \cdot \hat e_z = \sin(\zeta)$ and $dS = \frac{r}{\sin(\zeta)}drd\theta$ in Eq.~\ref{jfm:eq:freq domain scalar rad force}. +When these are substituted, the $\sin(\zeta)$ cancels and the result is the same as Eq.~\ref{jfm:eq:freq domain scalar rad force in terms of regions}, except $d_m$ now has $r$ dependence. +However, the implicit dependence of the $Z$ eigenfunction evaluations on $r$ means that the integrals including homogeneous potentials cannot be simplified as in Eqs.~\ref{jfm:eq:freq domain scalar rad force in terms of added mass and damping} and onward. +Unless the region's outline is flat and $d_m(r)$ is constant, the hydrodynamic coefficient integrals (given $\vec x$) do not admit closed forms. + +Instead of altering the MEEM procedure for slanted geometries, the same procedure can be used for \modelling{} slanted geometries with the assumption that, as the number of subdivisions increases, the discretized geometry approaches the true geometry, and, consequently, inaccuracies in the hydrodynamic coefficients diminish. +Thus, a proper choice of the number of subdivisions is required to mitigate these inaccuracies. + +\subsection{Inaccuracies in Velocity Potential} While the hydrodynamic coefficients computed using MEEM may approach their true values for a slanted geometry, inaccuracies in the velocity potential are still expected locally. +Fig~\ref{jfm:fig:contour potential comparison plots} (a) and (b) show the real value and error in the real value of the radiated velocity potential for a discretized body (\modelled{} with MEEM) relative to a slanted body (\modelled{} with Capytaine). +Note the error in the hatched region in Fig~\ref{jfm:fig:contour potential comparison plots} (b) is removed as the value of the velocity potential is small in this region ($\mathrm{Re}(\phi)<0.2$). +There is an overall trend of error moving from positive to negative as the depth becomes shallower. +Fig~\ref{jfm:fig:contour potential comparison plots} (c) and (d) show a more detailed view of the local \behaviour{} of the velocity potential. +The contours of constant velocity potential, indicated as solid black lines in Fig~\ref{jfm:fig:contour potential comparison plots} (c), either start and end at vertical and horizontal sections of the discretized surface, or are parallel to the slant that is being approximated, indicated as dashed blue lines in Fig~\ref{jfm:fig:contour potential comparison plots} (c). +Fig~\ref{jfm:fig:contour potential comparison plots} (d) shows the corresponding error in the real value of the velocity potential (relative to Capytaine). +The largest positive error is within the discretized body. +For each step, there is positive error on the horizontal surface and negative error on the vertical surface. + +If one were to consider a different integration scheme to minimize the error in the velocity potential that is used in the hydrodynamic coefficient calculations, one may seek to sample points in Fig~\ref{jfm:fig:contour potential comparison plots} (d) where error is zero, and numerically integrate over the true slant outline. +However, the precise radial and vertical coordinates where the error is zero are unknown before performing the computation and comparing with a BEM solver. +A different option is to systematically sample the velocity potential at spatial points that are determined by the slant and discretized geometries. +For example, one could sample the velocity potential at locations where the slant surface intersects with the discretized surface. +These points are indicated in Fig~\ref{jfm:fig:contour potential comparison plots} (c-e) with dots and diamonds for points sampled along the vertical and horizontal surfaces, respectively. +Fig~\ref{jfm:fig:contour potential comparison plots} (e) shows the error in the real and imaginary parts of the velocity potential along the slant and stepped (discretized) surfaces across the entire radial width. +When comparing the real parts, sampling at the horizontal surfaces leads to errors less than $3\%$, while sampling at the vertical surfaces can result in close to $4\%$ error. +However, when considering the imaginary parts, sampling along the vertical surface results in less error. +Still, errors will be present regardless of which of these sampling locations is chosen. +While accurate hydrodynamic coefficients were obtained using the MEEM formulation discussed in Sec.~\ref{jfm:sec:mathematical-formulation}, Fig~\ref{jfm:fig:contour potential comparison plots} (c-e) show that systematic approaches for sampling the potential may be effective ways to mitigate inaccuracies and reduce the number of discretizations needed. \begin{figure} \centering - \includegraphics[width=0.9\linewidth]{figs/Cross-Section-Potential-Slant.pdf} - \includegraphics[width=0.8\linewidth]{figs/Along-Outline.pdf} - \caption{Comparison of the radiated velocity potential computed from MEEM and Capytaine. (a) and (c) show the real part of the potential from MEEM, (b) and (d) show the error in the real potential from MEEM relative to Capytaine, and (e) and (f) show the error in the potential along the slanted and stepped outlines. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/notebooks?path=analysis\%2Fslant_data_plots.ipynb}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} %In (b), points with $\mathrm{Re}(\Phi) < 0.2$ (near zero, creating large relative errors) are masked. + \ifdefined\DISSERTATION + \includegraphics[width=0.8\linewidth]{figs/Cross-Section-Potential-Slant.pdf} + \includegraphics[width=0.7\linewidth]{figs/Along-Outline.pdf} + \else + \includegraphics[width=0.9\linewidth]{figs/Cross-Section-Potential-Slant.pdf} + \includegraphics[width=0.8\linewidth]{figs/Along-Outline.pdf} + \fi + \caption{Comparison of the radiated velocity potential computed from MEEM and Capytaine. (a) and (c) show the real part of the potential from MEEM, (b) and (d) show the error in the real potential from MEEM relative to Capytaine, and (e) and (f) show the error in the potential along the slanted and stepped outlines. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/notebooks?path=analysis\%2Fslant_data_plots.ipynb}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} %In (b), points with $\mathrm{Re}(\Phi) < 0.2$ (near zero, creating large relative errors) are masked. \label{jfm:fig:contour potential comparison plots} \end{figure} @@ -1300,7 +1410,9 @@ \subsubsection{Dependence on Slant Steepness} \label{jfm:subsection: slant intro \begin{figure} \centering \includegraphics[width=1\linewidth]{figs/Vary-Slopes.pdf} - \caption{Convergence of the hydrodynamic coefficients of five cones of varying steepness calculated with MEEM's step approximation (radius $10$, $h=50$, $\omega = 1$, $N^{i_m} = N^e = 400$). Subdivisions calculated ranged from $1$ to $30$. Error was calculated relative to values given by Capytaine. %The baseline expected error for an ideal approximation is shaded in grey, computed from the error between MEEM and Capytaine for cylindrical configurations of similar scale to the cones. + \caption{Convergence of the hydrodynamic coefficients of five cones of varying steepness calculated with MEEM's step approximation (radius $10$, $h=50$, $\omega = 1$, $N^{i_m} = N^e = 400$). +Subdivisions calculated ranged from $1$ to $30$. +Error was calculated relative to values given by Capytaine. %The baseline expected error for an ideal approximation is shaded in grey, computed from the error between MEEM and Capytaine for cylindrical configurations of similar scale to the cones. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FVary-Slopes.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}. %The baseline expected error for an ideal approximation is shaded in grey, computed from the error between MEEM and Capytaine for cylindrical configurations of similar scale to the cones. } \label{jfm:fig:slope-dependence} @@ -1308,12 +1420,21 @@ \subsubsection{Dependence on Slant Steepness} \label{jfm:subsection: slant intro \subsubsection{Validation} \label{jfm:subsection: slant validation} -The CorePower-like geometry was \modelled{} again using MEEM, where the slant angle was accounted for by subdividing the slanted region. As shown in the left subplots of Fig.~\ref{jfm:fig:MEEM slant comparison}, when 30 subdivisions are used in the slanted portion, the hydrodynamic coefficients computed using MEEM are within 5\% of those from Capytaine for wave frequencies between 0.4 and 1.5 rad/s. For the wave frequency of 1 rad/s, the right subplots of Fig.~\ref{jfm:fig:MEEM slant comparison} show that both the added mass and radiation damping from MEEM converge to that from Capytaine as the number of subdivisions in the slanted region is increased, where the damping converges at a faster rate. These results indicate that MEEM is an alternative method for accurately \modelling{} surface-piercing axisymmetric bodies. Furthermore, if the hydrodynamic coefficients converge for a small enough truncation order, MEEM can be a less computationally expensive alternative. In Sec.~\ref{jfm:sec:compute-time} we explore the computation costs of MEEM, and compare them to the BEM solver Capytaine. +The CorePower-like geometry was \modelled{} again using MEEM, where the slant angle was accounted for by subdividing the slanted region. +As shown in the left subplots of Fig.~\ref{jfm:fig:MEEM slant comparison}, when 30 subdivisions are used in the slanted portion, the hydrodynamic coefficients computed using MEEM are within 5\% of those from Capytaine for wave frequencies between 0.4 and 1.5 rad/s. +For the wave frequency of 1 rad/s, the right subplots of Fig.~\ref{jfm:fig:MEEM slant comparison} show that both the added mass and radiation damping from MEEM converge to that from Capytaine as the number of subdivisions in the slanted region is increased, where the damping converges at a faster rate. +These results indicate that MEEM is an alternative method for accurately \modelling{} surface-piercing axisymmetric bodies. +Furthermore, if the hydrodynamic coefficients converge for a small enough truncation order, MEEM can be a less computationally expensive alternative. +In Sec.~\ref{jfm:sec:compute-time} we explore the computation costs of MEEM, and compare them to the BEM solver Capytaine. \begin{figure}[htbp] \centering - \includegraphics[width=0.95\linewidth]{figs/MEEM-CPT-Slant-Freq.pdf} - \caption{Left: Computed hydrodynamic coefficients for the CorPower-like WEC geometry with a slanted region (the slant intersects the vertical at $d=7.13$). MEEM approximates the slanted region using 30 subdivisions. Right: Geometry from left plots at $\omega = 1$. In both cases, MEEM uses $N^{i_m} = N^e = 400$ and Capytaine has $5940$ panels. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-CPT-Slant-Freq.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \includegraphics[width=\linewidth]{figs/MEEM-CPT-Slant-Freq.pdf} + \caption{Left: Computed hydrodynamic coefficients for the CorPower-like WEC geometry with a slanted region (the slant intersects the vertical at $d=7.13$). +MEEM approximates the slanted region using 30 subdivisions. +Right: Geometry from left plots at $\omega = 1$. +In both cases, MEEM uses $N^{i_m} = N^e = 400$ and Capytaine has $5940$ panels. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-CPT-Slant-Freq.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:MEEM slant comparison} \end{figure} @@ -1422,12 +1543,14 @@ \subsubsection{Validation} \label{jfm:subsection: slant validation} \section{Computation Time and Accuracy}\label{jfm:sec:compute-time} \subsection{Time Complexity} -The runtime of the MEEM method is the time required to find the eigencoefficients, then obtain the hydrodynamic coefficients from eigencoefficients. We will consider a single radiation problem, meaning a single DOF is active, and all computation complexities discussed will be in terms of the number of floating-point operations. +The runtime of the MEEM method is the time required to find the eigencoefficients, then obtain the hydrodynamic coefficients from eigencoefficients. +We will consider a single radiation problem, meaning a single DOF is active, and all computation complexities discussed will be in terms of the number of floating-point operations. First, a nonlinear root-finding algorithm runs $N^e$ times to generate the $\lambda_n^e$ inputs used in the $\mathbf{A}$ matrix and $\vec{b}^q$ vector. Then $\mathcal{O}(N_T)$ Bessel functions must be evaluated for the radial $\mathbf{A}$ matrix terms % if I change scaling of i1 from a2 to a1, it reduces by N-1. if I change scaling of i2 from a2 to (a1+a2)/2, it increases by 2*(M-1). So total would be 2N+10M+2K-12. see notebook p51. and $\mathcal{O}(N_T^2)$ elementary functions for the coupling integral $\mathbf{A}$ matrix terms. The linear solve roughly scales cubically with matrix size, $\mathcal{O}(N_T^3)$. -The radial integrals for the $\vec{c}_p$ vector do not require evaluating Bessel functions with any arguments that were not already evaluated for the $\mathbf{A}$ matrix, so these evaluations are reused. Table~\ref{jfm:tab:reusable-dependence} shows the dependence of each quantity on the frequency $\omega$ and $\eta_m$, where $\eta_m=1$ if the $m$th cylindrical ring is heaving and $\eta_m=0$ if it is fixed. +The radial integrals for the $\vec{c}_p$ vector do not require evaluating Bessel functions with any arguments that were not already evaluated for the $\mathbf{A}$ matrix, so these evaluations are reused. +Table~\ref{jfm:tab:reusable-dependence} shows the dependence of each quantity on the frequency $\omega$ and $\eta_m$, where $\eta_m=1$ if the $m$th cylindrical ring is heaving and $\eta_m=0$ if it is fixed. % \begin{itemize} % \item Figure showing what takes the longest to compute. \textcolor{orange}{Bimali}. @@ -1446,14 +1569,23 @@ \subsection{Time Complexity} % \end{itemize} % \item State that, for a non-slanted geometry, MEEM can be within XX\% of the true hydrodynamic coefficient, with a XX times faster computation time than BEM. Written by \textcolor{orange}{Bimali}. % \end{itemize} -These time complexities are listed using more explicit per-region term counts in Table~\ref{jfm:tab:time-complexities}, and examples of their distribution/dominance given the same $N^{i_m}$ per region are given in Fig~\ref{jfm:fig:time-dominance}. For low region counts, coupling integrals dominate. For large region counts and terms per region, as is commonly encountered in slant approximations, the matrix solve will eventually dominate. +These time complexities are listed using more explicit per-region term counts in Table~\ref{jfm:tab:time-complexities}, and examples of their distribution/dominance given the same $N^{i_m}$ per region are given in Fig~\ref{jfm:fig:time-dominance}. +For low region counts, coupling integrals dominate. +\ifdefined\DISSERTATION +Note that this differs from the results of \Cref{ch:modeling}, where the Bessel function evaluations dominate. +The discrepancy arises because the coupling integrals are vectorized in the \texttt{MDOcean} but not \texttt{OpenFLASH} MEEM implementation. +\fi +For large region counts and terms per region, as is commonly encountered in slant approximations, the matrix solve will eventually dominate. For comparison, Capytaine solves a matrix system whose side length scales with panel count, and its total runtime (for matrix element generation and matrix solve) empirically scales quadratically with panel count. \subsection{Caching} -Computations can be cached depending on the variable changing between runs (Table~\ref{jfm:tab:reusable-dependence}). First, $\mathbf{A}$'s form is independent of whether each region is heaving or fixed ($\eta_m$), enabling the form in Eq.~\ref{jfm:A_pq B_pq matrix form} where a single $\mathbf{A}$ works with all possible $\vec b^q$ and $\vec c_p$ for the geometry (collected into the matrices $\mathbf{B}$ and $\mathbf{C}$). This implies that many of the operations that are used to solve a particular $\mathbf{A}\vec x^q = \vec b^q$ can be cached and reused as the $\eta_m$ vary. +Computations can be cached depending on the variable changing between runs (Table~\ref{jfm:tab:reusable-dependence}). +First, $\mathbf{A}$'s form is independent of whether each region is heaving or fixed ($\eta_m$), enabling the form in Eq.~\ref{jfm:A_pq B_pq matrix form} where a single $\mathbf{A}$ works with all possible $\vec b^q$ and $\vec c_p$ for the geometry (collected into the matrices $\mathbf{B}$ and $\mathbf{C}$). This implies that many of the operations that are used to solve a particular $\mathbf{A}\vec x^q = \vec b^q$ can be cached and reused as the $\eta_m$ vary. -With respect to varying $\omega$, only entries in $\mathbf{A}$ and $\vec b^q$ related to the $i_m$-$e$ region boundary are affected (and specifically, only the vertical eigenfunction components of those entries), so relatively few entries are changed when sweeping frequencies. Additionally, a common use case for hydrodynamics solvers is evaluating multiple geometries in the same environment (at the same depth and sweeping the same range of frequencies). The $\lambda_n^e$, which depend only on $h$ and $\omega$, can be reused between such runs. +With respect to varying $\omega$, only entries in $\mathbf{A}$ and $\vec b^q$ related to the $i_m$-$e$ region boundary are affected (and specifically, only the vertical eigenfunction components of those entries), so relatively few entries are changed when sweeping frequencies. +Additionally, a common use case for hydrodynamics solvers is evaluating multiple geometries in the same environment (at the same depth and sweeping the same range of frequencies). +The $\lambda_n^e$, which depend only on $h$ and $\omega$, can be reused between such runs. \begin{table} \centering \begin{tabular}{|l|c|c|} @@ -1465,7 +1597,8 @@ \subsection{Caching} Independent of all $\eta_m$ & $\lambda_n^e, \boldsymbol{\mathcal{Z}}^{i_M e},\mathbf{A}$& -- \\ \hline \end{tabular} -\caption{Dependencies of various objects on $\omega$ and which regions are heaving. Changes to $\mathbf{A}$ and $\vec b^q$ due to $\omega$ only occur in rows corresponding to the boundary between regions $i_M$ and $e$.} \label{jfm:tab:reusable-dependence} \end{table} +\caption{Dependencies of various objects on $\omega$ and which regions are heaving. +Changes to $\mathbf{A}$ and $\vec b^q$ due to $\omega$ only occur in rows corresponding to the boundary between regions $i_M$ and $e$.} \label{jfm:tab:reusable-dependence} \end{table} \subsection{Future Speed Enhancements}\label{jfm:sec:speedups} \paragraph{Matrix Solve} @@ -1486,7 +1619,8 @@ \subsection{Future Speed Enhancements}\label{jfm:sec:speedups} For example, the Hadamard-Kronecker mixed product property, Kronecker inverse, and blockwise matrix inversion could be explored to potentially obtain an analytical expression for $\mathbf{A}^{-1}$, while low-rank approximation theory could perhaps augment the experimental results of the convergence study with theoretical guarantees. % \paragraph{Reusing Bessel Arguments across Regions} -If hydrodynamic coefficients must be computed over a range of frequencies with some freedom over the exact frequency values used, one way to reduce the number of Bessel evaluations is to select the frequency vector such that some Bessel-K arguments are identical between the interior and exterior radial eigenfunctions $R_{2n_m}^{i_m}$ and $R_{1n_e}^{e}$. This occurs when +If hydrodynamic coefficients must be computed over a range of frequencies with some freedom over the exact frequency values used, one way to reduce the number of Bessel evaluations is to select the frequency vector such that some Bessel-K arguments are identical between the interior and exterior radial eigenfunctions $R_{2n_m}^{i_m}$ and $R_{1n_e}^{e}$. +This occurs when \begin{equation}\label{jfm:eq:equal-args} \lambda_{n_m}^{i_m}a_m = \lambda_{n_e}^{e}a_M \end{equation} @@ -1499,7 +1633,8 @@ \subsection{Future Speed Enhancements}\label{jfm:sec:speedups} \qquad n_e = \lceil \gamma \rceil, \qquad \gamma = n_m \frac{h}{h-d_m} \frac{a_m}{a_M} \end{equation} -where we have introduced $\gamma$, a value that must be evaluated for each $(n_m,m)$ pair. Note that Eq.~\ref{jfm:eq:reuse-bessel-criterion} requires the tangent term to be negative, equivalently $0.5<\gamma-\lfloor \gamma \rfloor<1$, and any $(n_m,m)$ pairs that do not meet this criteria cannot be reused. $\lceil \cdot\rceil$ and $\lfloor \cdot\rfloor$ denote the ceiling and floor functions respectively. +where we have introduced $\gamma$, a value that must be evaluated for each $(n_m,m)$ pair. +Note that Eq.~\ref{jfm:eq:reuse-bessel-criterion} requires the tangent term to be negative, equivalently $0.5<\gamma-\lfloor \gamma \rfloor<1$, and any $(n_m,m)$ pairs that do not meet this criteria cannot be reused. $\lceil \cdot\rceil$ and $\lfloor \cdot\rfloor$ denote the ceiling and floor functions respectively. For the simple $M=2$ geometry described in section~\ref{jfm:sec:validation}, 70 of the 149 $\gamma$ values (47\%) are valid for reuse. However, only two of these (3\%) correspond to the 5-12 second wave periods typically of interest for ocean environments, so the computational savings are marginal. @@ -1522,12 +1657,15 @@ \subsection{Future Speed Enhancements}\label{jfm:sec:speedups} Hydrodynamic Coefficients* & $N^{i_1}+2\cdot(\sum_{m=2}^{M} N^{i_m})$\\ \hline \end{tabular} -\caption{Time complexities of major components of MEEM. All are represented as proportional to the number of times being called, except the matrix solve, which depends on the matrix size. \\ * The Bessel functions evaluations in $\vec c_p$ are the same as those in $\mathbf{A}$, so they are cached and their associated time ignored in measuring the time contributions of the $\vec c_p$ calculation.} \label{jfm:tab:time-complexities} \end{table} +\caption{Time complexities of major components of MEEM. All are represented as proportional to the number of times being called, except the matrix solve, which depends on the matrix size. +\\ * The Bessel functions evaluations in $\vec c_p$ are the same as those in $\mathbf{A}$, so they are cached and their associated time ignored in measuring the time contributions of the $\vec c_p$ calculation.} \label{jfm:tab:time-complexities} \end{table} \endgroup \begin{figure}[htbp] \centering - \includegraphics[width=0.95\linewidth]{figs/MEEM-Comp-Distribution.pdf} - \caption{Left: Distribution of function computation times for the geometry in Fig.~\ref{jfm:fig:hydro coeff validation}, varying the terms per region. Right: The function taking the most computation time for combinations of region count and terms per region, assuming the same number of terms per region. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-Comp-Distribution.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \includegraphics[width=\linewidth]{figs/MEEM-Comp-Distribution.pdf} + \caption{Left: Distribution of function computation times for the geometry in Fig.~\ref{jfm:fig:hydro coeff validation}, varying the terms per region. +Right: The function taking the most computation time for combinations of region count and terms per region, assuming the same number of terms per region. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-Comp-Distribution.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:time-dominance} \end{figure} % @@ -1535,12 +1673,19 @@ \subsection{Comparison With Capytaine} \label{jfm:sec:meem-cpt-timing} \begin{figure}[htbp] \centering - \includegraphics[width=0.9\linewidth]{figs/MEEM-CPT-Time-Matrix-Comparison.pdf} - \caption{For the CorPower WEC geometry in Fig.~\ref{jfm:fig:hydro coeff validation} at $\omega = 1$, the accuracy of MEEM vs. Capytaine are compared over different $N^{i_m} = N^e$ and panel counts, through the associated computation time and matrix sizes. The ``true values'' used to compute accuracies were determined by MEEM with $N^{i_m} = N^e = 300$. Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-CPT-Time-Matrix-Comparison.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} + \includegraphics[width=\linewidth]{figs/MEEM-CPT-Time-Matrix-Comparison.pdf} + \caption{For the CorPower WEC geometry in Fig.~\ref{jfm:fig:hydro coeff validation} at $\omega = 1$, the accuracy of MEEM vs. Capytaine are compared over different $N^{i_m} = N^e$ and panel counts, through the associated computation time and matrix sizes. +The ``true values'' used to compute accuracies were determined by MEEM with $N^{i_m} = N^e = 300$. +Figure context: \href{https://calkit.io/symbiotic-engineering/openflash/figures?path=pubs\%2FJFM\%2Ffigs\%2FMEEM-CPT-Time-Matrix-Comparison.pdf}{Calkit} and \href{https://cocalc.com/rmccabe/MEEM/meem}{CoCalc}.} \label{jfm:fig:time-matrix-comparison} \end{figure} -For geometries that MEEM represents exactly, it tends to converge faster than Capytaine. An example of this is shown in Figure~\ref{jfm:fig:time-matrix-comparison}, where a CorPower-like WEC geometry is \modelled{} at a single frequency and the trade-offs between accuracy and computation time (or matrix size) are compared. The added mass and radiation damping computed with MEEM can achieve $2\%$ accuracy with a runtime of $0.01$ seconds, while the values computed with Capytaine obtain $2\%$ accuracy after $0.1$ seconds. In terms of matrix size, Capytaine requires a matrix with a side length greater than $1000$ to achieve $2\%$ accuracy, while MEEM can achieve the same accuracy with a matrix side length of just $60$. This is a consequence of MEEMs fast convergence rate relative to BEM solvers' slow convergence rate with respect to the number of panels required to obtain an accurate solution. Such an advancement can enable more rigorous optimization studies for marine structures by avoiding the computational cost of BEM solvers. +For geometries that MEEM represents exactly, it tends to converge faster than Capytaine. +An example of this is shown in Figure~\ref{jfm:fig:time-matrix-comparison}, where a CorPower-like WEC geometry is \modelled{} at a single frequency and the trade-offs between accuracy and computation time (or matrix size) are compared. +The added mass and radiation damping computed with MEEM can achieve $2\%$ accuracy with a runtime of $0.01$ seconds, while the values computed with Capytaine obtain $2\%$ accuracy after $0.1$ seconds. +In terms of matrix size, Capytaine requires a matrix with a side length greater than $1000$ to achieve $2\%$ accuracy, while MEEM can achieve the same accuracy with a matrix side length of just $60$. +This is a consequence of MEEMs fast convergence rate relative to BEM solvers' slow convergence rate with respect to the number of panels required to obtain an accurate solution. +Such an advancement can enable more rigorous optimization studies for marine structures by avoiding the computational cost of BEM solvers. % [TODO: RM3 convergence figure, only float heaving]. % [Caption: MEEM and BEM matrix size comparison, using the RM3 configuration parameters, an optimal unknown coefficient distribution for MEEM, and even constant panel density throughout the mesh for BEM. MEEM reaches 1\% convergence XX\% faster/slower than BEM for added mass and XX\% faster for radiation damping.] % [TODO: MEEM is worse convergence figure, e.g. skinny spar] @@ -1548,7 +1693,15 @@ \subsection{Comparison With Capytaine} % [TODO: MEEM is far better convergence figure (short height? longer spar? unless CPT is glitchy on this, check plots)] % \section{Conclusion}\label{jfm:sec:conclusion} -This work generalizes the matched eigenfunction expansion method (MEEM) for computing the hydrodynamic forces on an arbitrary number of heaving surface-piercing axisymmetric geometries under linear potential flow theory. The method consists of separating the fluid domain into cylindrical regions, defining the velocity potential in each region in terms of eigenfunctions and unknown eigencoefficients, and using boundary conditions and orthogonality to derive a system of linear algebraic equations, which can be organized into a matrix structure. This new extension overviews the undocumented accuracy, convergence, and polynomial runtime of the method. Furthermore, the ability of this method to be used to approximate the hydrodynamic forces on geometries with slants is discussed. This is done by subdividing slanted regions into cylindrical regions that can be \modelled{} through MEEM. We have found that, while the velocity potential computed from MEEM may have inaccuracies locally, the hydrodynamic coefficients can be computed with less than 5\% error. Additionally, geometries with steeper slants require more subdivisions for MEEM to achieve accurate results. In the convergence study, a set of influential dimensionless parameters was identified, and the fitting models developed can predict the required settings of MEEM to achieve less than $2\%$ error in the hydrodynamic coefficients $95\%$ of the time. When compared against the boundary element method (BEM) solver Capytaine, MEEM is able to achieve 2\% convergence in both hydrodynamic coefficients an order of magnitude faster than Capytaine with a matrix size two orders of magnitude smaller, making it a computationally effective alternative to traditional BEM solvers. Such an advantage can have significant implications for the design optimization of marine structures, especially in situations when the hydrodynamic model is the bottleneck of the simulation model. +This work generalizes the matched eigenfunction expansion method (MEEM) for computing the hydrodynamic forces on an arbitrary number of heaving surface-piercing axisymmetric geometries under linear potential flow theory. +The method consists of separating the fluid domain into cylindrical regions, defining the velocity potential in each region in terms of eigenfunctions and unknown eigencoefficients, and using boundary conditions and orthogonality to derive a system of linear algebraic equations, which can be organized into a matrix structure. +This new extension overviews the undocumented accuracy, convergence, and polynomial runtime of the method. +Furthermore, the ability of this method to be used to approximate the hydrodynamic forces on geometries with slants is discussed. +This is done by subdividing slanted regions into cylindrical regions that can be \modelled{} through MEEM. We have found that, while the velocity potential computed from MEEM may have inaccuracies locally, the hydrodynamic coefficients can be computed with less than 5\% error. +Additionally, geometries with steeper slants require more subdivisions for MEEM to achieve accurate results. +In the convergence study, a set of influential dimensionless parameters was identified, and the fitting models developed can predict the required settings of MEEM to achieve less than $2\%$ error in the hydrodynamic coefficients $95\%$ of the time. +When compared against the boundary element method (BEM) solver Capytaine, MEEM is able to achieve 2\% convergence in both hydrodynamic coefficients an order of magnitude faster than Capytaine with a matrix size two orders of magnitude smaller, making it a computationally effective alternative to traditional BEM solvers. +Such an advantage can have significant implications for the design optimization of marine structures, especially in situations when the hydrodynamic model is the bottleneck of the simulation model. Further generalizations should be the focus of future work on this method. @@ -1685,7 +1838,8 @@ \section{Conclusion}\label{jfm:sec:conclusion} This work was supported in part by Sandia National Laboratories through the Marine Energy Seedlings Program for National Laboratories from the U.S. Department of Energy and Sandia's Laboratory Directed Research \& Development (LDRD) program through the Sandia University Partnerships Network. Sandia National Laboratories is a multimission laboratory managed and operated by National Technology \& Engineering Solutions of Sandia, LLC, a wholly owned subsidiary of Honeywell International Inc., for the U.S. Department of Energy's National Nuclear Security Administration under contract DE-NA0003525. - This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-2139899. Any opinion, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation. + This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-2139899. +Any opinion, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation. Individual authors acknowledge the following sources of support: Y. Bimali, Cornell Engineering Learning Initiatives through the Fund for Undergraduate Research on Solutions to Climate Change, the Bill Nye '77 Award in Undergraduate Research \& Robert A. Cowie '55 ME; @@ -1738,7 +1892,8 @@ \section{Conclusion}\label{jfm:sec:conclusion} This work was supported in part by Sandia National Laboratories through the Marine Energy Seedlings Program for National Laboratories from the U.S. Department of Energy and Sandia's Laboratory Directed Research \& Development (LDRD) program through the Sandia University Partnerships Network. Sandia National Laboratories is a multimission laboratory managed and operated by National Technology \& Engineering Solutions of Sandia, LLC, a wholly owned subsidiary of Honeywell International Inc., for the U.S. Department of Energy's National Nuclear Security Administration under contract DE-NA0003525. - This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-2139899. Any opinion, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation. + This material is based upon work supported by the National Science Foundation Graduate Research Fellowship under Grant No. DGE-2139899. +Any opinion, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation. Individual authors acknowledge the following sources of support: Y. Bimali, Cornell Engineering Learning Initiatives through the Fund for Undergraduate Research on Solutions to Climate Change, the Bill Nye '77 Award in Undergraduate Research \& Robert A. Cowie '55 ME; diff --git a/pubs/JFM/figs/.gitignore b/pubs/JFM/figs/.gitignore index 4e97b8f..6937606 100644 --- a/pubs/JFM/figs/.gitignore +++ b/pubs/JFM/figs/.gitignore @@ -20,3 +20,21 @@ /convergence-fit-assessment.pdf /graph_abstract.pdf /graph_abstract.log + +# >>> calkit latex aux files (managed by calkit) >>> +*.aux +*.bbl +*.bcf +*.blg +*.fdb_latexmk +*.fls +*.lof +*.lot +*.nav +*.out +*.run.xml +*.snm +*.synctex.gz +*.toc +*.vrb +# <<< calkit latex aux files <<< diff --git a/pubs/JFM/jfm-appendix.tex b/pubs/JFM/jfm-appendix.tex index e020075..aa49ad9 100644 --- a/pubs/JFM/jfm-appendix.tex +++ b/pubs/JFM/jfm-appendix.tex @@ -4,7 +4,8 @@ \section{Governing Equations and Boundary Conditions}\label{jfm:appA} \nabla^2\phi^{i_m}=0, \end{equation} \begin{equation}\label{jfm:eq:No flux BC at wetted surface} - \left. \frac{\partial\phi^{i_m}}{\partial z} \right|_{z=-d_m}= + \left. +\frac{\partial\phi^{i_m}}{\partial z} \right|_{z=-d_m}= \begin{cases} 0 & \text{ when region } m \text{ is fixed} \\ 1 & \text{ when region } m \text{ is heaving} @@ -12,22 +13,27 @@ \section{Governing Equations and Boundary Conditions}\label{jfm:appA} \end{equation} and \begin{equation}\label{jfm:eq:No flux BC at sea floor internal} - \left. \frac{\partial\phi^{i_m}}{\partial z} \right|_{z=-h}=0, + \left. +\frac{\partial\phi^{i_m}}{\partial z} \right|_{z=-h}=0, \end{equation} while the velocity potential for the external region must satisfy \begin{equation}\label{jfm:eq:Laplace equation external region} \nabla^2\phi^{e}=0, \end{equation} \begin{equation}\label{jfm:eq:Free surface BC} - \left( -\frac{\omega^2}{g}\phi^{e} + \left. \frac{\partial\phi^{e}}{\partial z} \right) \right|_{z=0}= 0, + \left( -\frac{\omega^2}{g}\phi^{e} + \left. +\frac{\partial\phi^{e}}{\partial z} \right) \right|_{z=0}= 0, \end{equation} and \begin{equation}\label{jfm:eq:No flux BC at sea floor external} - \left. \frac{\partial\phi^{e}}{\partial z} \right|_{z=-h}=0. + \left. +\frac{\partial\phi^{e}}{\partial z} \right|_{z=-h}=0. \end{equation} The velocity potential in the interior regions can be written as the superposition of a homogeneous part $\phi^{i_m}_\mathrm{h}$, which corresponds to the first case of Eq.~\ref{jfm:eq:No flux BC at wetted surface} when the body in region $m$ is fixed, and a particular part $\phi^{i_m}_\mathrm{p}$, which corresponds to the second case of Eq.~\ref{jfm:eq:No flux BC at wetted surface} when the body in region $m$ is heaving with unit amplitude velocity. -The Laplace equations in Eq.~\ref{jfm:eq:Laplace equation internal region} and~\ref{jfm:eq:Laplace equation external region} can be solved using separation of variables in cylindrical coordinates. The velocity potentials can be written as a product of eigenfunctions $\phi (r, \theta, z)= R(r)\Theta(\theta)Z(z)$, where $\phi$ is $\phi^{i_m}$ and $\phi^{e}$ for the internal and external regions, respectively. Substituting this into the Laplace equation and separating each variable yields the following system of ordinary differential equations +The Laplace equations in Eq.~\ref{jfm:eq:Laplace equation internal region} and~\ref{jfm:eq:Laplace equation external region} can be solved using separation of variables in cylindrical coordinates. +The velocity potentials can be written as a product of eigenfunctions $\phi (r, \theta, z)= R(r)\Theta(\theta)Z(z)$, where $\phi$ is $\phi^{i_m}$ and $\phi^{e}$ for the internal and external regions, respectively. +Substituting this into the Laplace equation and separating each variable yields the following system of ordinary differential equations \begin{equation}\label{jfm:eq:Z-ODE} \frac{\mathrm{d}^2 Z}{\mathrm{d}z^2}-\lambda^2Z=0 \end{equation} @@ -37,7 +43,11 @@ \section{Governing Equations and Boundary Conditions}\label{jfm:appA} \begin{equation}\label{jfm:eq:R-ODE} r^2\frac{\mathrm{d}^2 R}{\mathrm{d}r^2}+r\frac{\mathrm{d} R}{\mathrm{d}r} + (\lambda^2r^2-\nu^2)R=0 \end{equation} -where $R(r)$, $\Theta(\theta)$, and $Z(z)$ are eigenfunctions, and $\lambda$ and $\nu$ are eigenvalues. Since we are considering a vertically axisymmetric geometry and only heave motion, $\Theta=1$ and $\nu=0$. This leaves the vertical and radial eigenfunctions to be determined. As discussed in \citet{chatzigeorgiou2018analytical}, there are two cases of the eigenvalue $\lambda$ to consider: $\lambda \in \mathbb{R}$ and $\lambda \in \mathbb{I}$. In the first case, Eq.~\ref{jfm:eq:R-ODE} is the Bessel differential equation with Bessel and Hankel functions of the first and second kinds being solutions. In the second case, Eq.~\ref{jfm:eq:R-ODE} is the modified Bessel differential equation with modified Bessel functions of the first and second kinds being solutions. +where $R(r)$, $\Theta(\theta)$, and $Z(z)$ are eigenfunctions, and $\lambda$ and $\nu$ are eigenvalues. +Since we are considering a vertically axisymmetric geometry and only heave motion, $\Theta=1$ and $\nu=0$. +This leaves the vertical and radial eigenfunctions to be determined. +As discussed in \citet{chatzigeorgiou2018analytical}, there are two cases of the eigenvalue $\lambda$ to consider: $\lambda \in \mathbb{R}$ and $\lambda \in \mathbb{I}$. In the first case, Eq.~\ref{jfm:eq:R-ODE} is the Bessel differential equation with Bessel and Hankel functions of the first and second kinds being solutions. +In the second case, Eq.~\ref{jfm:eq:R-ODE} is the modified Bessel differential equation with modified Bessel functions of the first and second kinds being solutions. The expression for $N_{n_e}$ is defined as: @@ -51,7 +61,9 @@ \section{Governing Equations and Boundary Conditions}\label{jfm:appA} \end{equation} % \section{Matching Equations}\label{jfm:appB} -Since both the value of the potential and fluid velocity must match at the boundary of neighboring regions, there are a total of $2M$ matching equations. However, these equations alone are not enough to solve for all eigencoefficients since the number of unknowns is greater than the number of equations ($N_\mathrm{T} >2M$). To generate an equal number of equations as unknowns, the orthogonality of the vertical eigenfunctions can be leveraged to isolate the unknown coefficients in the finite series. +Since both the value of the potential and fluid velocity must match at the boundary of neighboring regions, there are a total of $2M$ matching equations. +However, these equations alone are not enough to solve for all eigencoefficients since the number of unknowns is greater than the number of equations ($N_\mathrm{T} >2M$). +To generate an equal number of equations as unknowns, the orthogonality of the vertical eigenfunctions can be leveraged to isolate the unknown coefficients in the finite series. % Consider a generic function $Y(x)$ expressed as a series with coefficients $\alpha$ and basis functions $e(x)$: $Y(x)=\sum_i \alpha_i e_i(x)$. % If $e_j(x)$ is orthogonal to $e_i(x)$ from $x = a$ to $b$, then: @@ -87,7 +99,8 @@ \section{Matching Equations}\label{jfm:appB} It is not desired to change the bounds of the right-hand-side because $\phi^s$ is not meaningfully defined on $z\in(-d_s,-d_t)$. Thus, Eqs.~\ref{jfm:eq:no radial velocity} and~\ref{jfm:eq:velocity matching} are simultaneously enforced by Eq.~\ref{jfm:eq:modified velocity matching integral}, while Eq.~\ref{jfm:eq:potential matching} is enforced by Eq.~\ref{jfm:eq:potential matching integral}. -Next, the velocity potentials of each region can be rewritten in terms of their homogeneous and particular solutions as $\phi^\mathrm{t}=\phi^\mathrm{t}_\mathrm{h} + \phi^\mathrm{t}_\mathrm{p}$ and $\phi^\mathrm{s}=\phi^\mathrm{s}_\mathrm{h} + \phi^\mathrm{s}_\mathrm{p}$. Substituting these into Eq.~\ref{jfm:eq:potential matching integral} and~\ref{jfm:eq:modified velocity matching integral}, and moving all homogeneous and particular potentials to the left- and right-hand sides, respectively, yields +Next, the velocity potentials of each region can be rewritten in terms of their homogeneous and particular solutions as $\phi^\mathrm{t}=\phi^\mathrm{t}_\mathrm{h} + \phi^\mathrm{t}_\mathrm{p}$ and $\phi^\mathrm{s}=\phi^\mathrm{s}_\mathrm{h} + \phi^\mathrm{s}_\mathrm{p}$. +Substituting these into Eq.~\ref{jfm:eq:potential matching integral} and~\ref{jfm:eq:modified velocity matching integral}, and moving all homogeneous and particular potentials to the left- and right-hand sides, respectively, yields \begin{multline}\label{jfm:eq:separated potential matching integral} \int_{-h}^{-d_\mathrm{s}} \phi^\mathrm{s}_\mathrm{h}(a,z) Z^\mathrm{s}_{n_\mathrm{s}}(z) \mathrm{d}z-\int_{-h}^{-d_\mathrm{s}} \phi^\mathrm{t}_\mathrm{h}(a,z) Z^\mathrm{s}_{n_\mathrm{s}}(z) \mathrm{d}z \\ =\int_{-h}^{-d_\mathrm{s}}\phi^\mathrm{t}_\mathrm{p}(a,z) Z^\mathrm{s}_{n_\mathrm{s}}(z) \mathrm{d}z-\int_{-h}^{-d_\mathrm{s}}\phi^\mathrm{s}_\mathrm{p}(a,z) Z^\mathrm{s}_{n_\mathrm{s}}(z) \mathrm{d}z @@ -97,7 +110,8 @@ \section{Matching Equations}\label{jfm:appB} \int_{-h}^{-d_\mathrm{s}} \frac{\partial \phi^\mathrm{s}_\mathrm{h}}{\partial r}(a,z) Z^\mathrm{t}_{n_\mathrm{t}}(z) \mathrm{d}z-\int_{-h}^{-d_\mathrm{t}} \frac{\partial \phi_\mathrm{h}^\mathrm{t}}{\partial r}(a,z) Z^\mathrm{t}_{n_\mathrm{t}}(z) \mathrm{d}z \\ =\int_{-h}^{-d_\mathrm{t}}\frac{\partial \phi_\mathrm{p}^\mathrm{t}}{\partial r}(a,z) Z^\mathrm{t}_{n_\mathrm{t}}(z) \mathrm{d}z-\int_{-h}^{-d_\mathrm{s}}\frac{\partial \phi_\mathrm{p}^\mathrm{s}}{\partial r}(a,z) Z^\mathrm{t}_{n_\mathrm{t}}(z) \mathrm{d}z \end{multline} -The right-hand-side of Eq.~\ref{jfm:eq:separated potential matching integral} and~\ref{jfm:eq:separated velocity matching integral} are known, while the left-hand-side contains unknowns. After substituting for the homogeneous potentials, using orthogonality of the vertical eigenfunctions and rearranging, Eq.~\ref{jfm:eq:separated potential matching integral} and~\ref{jfm:eq:separated velocity matching integral} become +The right-hand-side of Eq.~\ref{jfm:eq:separated potential matching integral} and~\ref{jfm:eq:separated velocity matching integral} are known, while the left-hand-side contains unknowns. +After substituting for the homogeneous potentials, using orthogonality of the vertical eigenfunctions and rearranging, Eq.~\ref{jfm:eq:separated potential matching integral} and~\ref{jfm:eq:separated velocity matching integral} become \begin{multline}\label{jfm:eq:separated potential matching integral simplified} (h-d_\mathrm{s}) \left( C^\mathrm{s}_{1n_\mathrm{s}} R_{1n_\mathrm{s}}^\mathrm{s} (a)+ C^\mathrm{s}_{2n_\mathrm{s}} R_{2n_\mathrm{s}}^\mathrm{s}(a) \right) \\ -\sum _{n_\mathrm{t} = 0}^{N^\mathrm{t}} \left(C^\mathrm{t}_{1n_\mathrm{t}} R_{1n_\mathrm{t}}^\mathrm{t}(a)+ C^\mathrm{t}_{2n_\mathrm{t}} R_{2n_\mathrm{t}}^\mathrm{t}(a) \right)\int_{-h}^{-d_\mathrm{s}} Z^\mathrm{s}_{n_\mathrm{s}}(z) Z_{n_\mathrm{t}}^\mathrm{t}(z)\mathrm{d}z \\ @@ -137,7 +151,8 @@ \section{Matching Equations}\label{jfm:appB} &\vec{Z}^\ell(z)=[Z_0^\ell(z),Z_1^\ell(z),\dots, Z_{(N^\ell-1)}^\ell(z)]^T \end{aligned} \end{equation} -are column vectors of vertical eigenfunctions, where $\ell$ is $\mathrm{s}$ or $\mathrm{t}$. Additionally, +are column vectors of vertical eigenfunctions, where $\ell$ is $\mathrm{s}$ or $\mathrm{t}$. +Additionally, \begin{equation} \begin{aligned} &\boldsymbol{\mathcal{Z}}^\mathrm{st}=\boldsymbol{\mathcal{Z}}^\mathrm{ts}{}^T=\int_{-h}^{-d_\mathrm{s}} \vec{Z}^\mathrm{s}{}(z) \otimes \vec{Z}^\mathrm{t}(z) \mathrm{d}z \end{aligned} @@ -146,16 +161,22 @@ \section{Matching Equations}\label{jfm:appB} - Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} contain $N^\mathrm{s}$ and $N^\mathrm{t}$ equations, respectively. However, they have $2N^\mathrm{s} + 2N^\mathrm{t}$ unknown eigencoefficients. Recall that these equations correspond to enforcing conditions at a single boundary between fluid regions, as shown in Fig.~\ref{jfm:fig:Matching Diagram}. Section~\ref{jfm:sec:Block Matrix Structure} shows how to organize Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} for the $M$ boundaries so that all eigencoefficients can be solved for simultaneously. + Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} contain $N^\mathrm{s}$ and $N^\mathrm{t}$ equations, respectively. +However, they have $2N^\mathrm{s} + 2N^\mathrm{t}$ unknown eigencoefficients. +Recall that these equations correspond to enforcing conditions at a single boundary between fluid regions, as shown in Fig.~\ref{jfm:fig:Matching Diagram}. +Section~\ref{jfm:sec:Block Matrix Structure} shows how to organize Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} for the $M$ boundaries so that all eigencoefficients can be solved for simultaneously. Because the innermost and outermost regions have just one eigenfunction instead of two and therefore half as many eigencoefficients, the full system has exactly as many equations as unknowns. -Note that all coupling integrals have closed form solutions. The element in the $n_\mathrm{s}$th row and $n_\mathrm{t}$th column of the coupling integral matrix associated with matching between region $i_m$ and $i_{m+1}$ is +Note that all coupling integrals have closed form solutions. +The element in the $n_\mathrm{s}$th row and $n_\mathrm{t}$th column of the coupling integral matrix associated with matching between region $i_m$ and $i_{m+1}$ is \begin{equation}\label{jfm:coupling integral i_m and i_m+1} [\boldsymbol{\mathcal{Z}}^{\text{s} \text{t}} ]_{n_\mathrm{s}n_\mathrm{t}}=-\frac{\sin ((d_\text{s}-h) (\lambda_{n_\mathrm{s}}^{\text{s}}-\lambda_{n_\mathrm{t}}^{\text{t}}))}{\lambda_{n_\mathrm{s}}^{\text{s}}-\lambda_{n_\mathrm{t}}^{\text{t}}}-\frac{\sin ((d_\text{s}-h) (\lambda_{n_\mathrm{s}}^{\text{s}}+\lambda_{n_\mathrm{t}}^{\text{t}}))}{\lambda_{n_\mathrm{s}}^{\text{s}}+\lambda_{n_\mathrm{t}}^{\text{t}}}, \end{equation} -\noindent where the superscripts and subscripts associated with the shorter and taller fluid are assigned to $i_m$ or $i_{m+1}$ depending on if $d_m>d_{m+1}$ or $d_{m+1}>d_m$. Eq.~\ref{jfm:coupling integral i_m and i_m+1} holds for $1 \le m \le M-1$. For matching at the interface between the outermost inner region $i_M$ and the external region $e$, a different expression is used. The element in the $n_M$th row and $n_e$th column of the coupling integral matrix associated with matching between region $i_M$ and $e$ is +\noindent where the superscripts and subscripts associated with the shorter and taller fluid are assigned to $i_m$ or $i_{m+1}$ depending on if $d_m>d_{m+1}$ or $d_{m+1}>d_m$. +Eq.~\ref{jfm:coupling integral i_m and i_m+1} holds for $1 \le m \le M-1$. For matching at the interface between the outermost inner region $i_M$ and the external region $e$, a different expression is used. +The element in the $n_M$th row and $n_e$th column of the coupling integral matrix associated with matching between region $i_M$ and $e$ is \begin{equation}\label{jfm:coupling integral i_M and e} [\boldsymbol{\mathcal{Z}}^{i_M e} ]_{n_Mn_e}= - \sqrt{\frac{1}{2N_{n_e}}} @@ -177,7 +198,8 @@ \section{Matching Equations}\label{jfm:appB} Rewriting Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} for each of the $M$ boundaries, where the symbols representing the smaller $\mathrm{s}$ and taller $\mathrm{t}$ regions are replaced by the region names of the problem (i.e. $i_1, i_2,\dots, i_M,e$) and $a$ is replaced by $a_m$, yields a set of $N_\mathrm{T}$ equations that are linear with respect to the unknown eigencoefficients. The structure of these equations is in the form of $\mathbf{A} \vec{x}=\vec{b}$ where the matrix $\mathbf{A} \in \mathbb{C}^{N_\mathrm{T}\times N_\mathrm{T}}$ contains the left-hand-side of Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} (excluding the eigencoefficients), the vector $\vec{x}=[\vec{C}_{1}^{i_1}, \vec{C}_{1}^{i_2}, \vec{C}_{2}^{i_2},\dots, \vec{C}_{1}^{i_M}, \vec{C}_{2}^{i_M}, \vec{C}_{1}^{e}]^T \in \mathbb{C}^{N_\mathrm{T}}$ contains all eigencoefficients, and the vector $\vec{b} \in \mathbb{R}^{N_\mathrm{T}}$ contains the right-hand-side of Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations}. -As shown in Table~\ref{jfm:tab:MEEM-A-matrix}, $\mathbf{A}$ is a block bi-diagonal matrix composed of sub-matrices $\mathbf{A}_1,\mathbf{A}_2,\dots, \mathbf{A}_M$ and zero matrices. Each sub-matrix $\mathbf{A}_m$ contains the left-hand-sides of Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} (excluding the eigencoefficients) when applying them to the $m$th boundary. +As shown in Table~\ref{jfm:tab:MEEM-A-matrix}, $\mathbf{A}$ is a block bi-diagonal matrix composed of sub-matrices $\mathbf{A}_1,\mathbf{A}_2,\dots, \mathbf{A}_M$ and zero matrices. +Each sub-matrix $\mathbf{A}_m$ contains the left-hand-sides of Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} (excluding the eigencoefficients) when applying them to the $m$th boundary. The corresponding right-hand-sides of Eq.~\ref{jfm:eq:potential matching vector equations} and~\ref{jfm:eq:velocity matching vector equations} are contained in $\vec{b}_m$, which form the vector $\vec{b}=[\vec{b}_1,\vec{b}_2,\dots, \vec{b}_M]^T$. % \section{Forms of Matrix A}\label{jfm:sec:Forms of Matrix A} diff --git a/pubs/JFM/zotero-meem-refs.bib b/pubs/JFM/zotero-meem-refs.bib index 7056bcd..b772cff 100644 --- a/pubs/JFM/zotero-meem-refs.bib +++ b/pubs/JFM/zotero-meem-refs.bib @@ -1,4 +1,39 @@ +@article{nguyen_theoretical_2024, + title = {Theoretical modeling of a bottom-raised oscillating surge wave energy converter structural loadings and power performances}, + volume = {149}, + issn = {0141-1187}, + url = {https://www.sciencedirect.com/science/article/pii/S0141118724001536}, + doi = {10.1016/j.apor.2024.104031}, + abstract = {This study presents theoretical formulations to evaluate the fundamental parameters and performance characteristics of a bottom-raised oscillating surge wave energy converter (OSWEC) device. Employing a flat plate assumption and potential flow formulation in elliptical coordinates, closed-form equations for the added mass, radiation damping, and excitation forces/torques in the relevant pitch-pitch and surge-pitch directions of motion are developed and used to calculate the system's response amplitude operator and the forces and moments acting on the foundation. The model is benchmarked against numerical simulations using WAMIT and WEC-Sim, showcasing excellent agreement. The sensitivity of plate thickness on the analytical hydrodynamic solutions is investigated over several thickness-to-width ratios ranging from 1:80 to 1:10. The results show that as the thickness of the benchmark OSWEC increases, the deviation of the analytical hydrodynamic coefficients from the numerical solutions grows from 3 \% to 25 \%. Differences in the excitation forces and torques, however, are contained within 12 \%. While the flat plate assumption is a limitation of the proposed analytical model, the error is within a reasonable margin for use in the design space exploration phase before a higher-fidelity (and thus more computationally expensive) model is employed. A parametric study demonstrates the ability of the analytical model to quickly sweep over a domain of OSWEC dimensions, illustrating the analytical model's utility in the early phases of design.}, + urldate = {2026-05-19}, + journal = {Applied Ocean Research}, + author = {Nguyen, Nhu and Davis, Jacob and Tom, Nathan and Thiagarajan, Krish}, + month = aug, + year = {2024}, + keywords = {Analytical, And power production, Design optimization, Hydrodynamic coefficients, OSWEC, Structural loads, Theoretical model, WAMIT, WEC-Sim, Wave energy}, + pages = {104031}, +} + +@inproceedings{nguyen_theoretical_2024-1, + address = {Singapore, Singapore}, + series = {{OMAE}}, + title = {Theoretical {Modeling} {Toolbox} for {Diffraction} {Problems} of {Common} {Shaped} {Bodies}}, + volume = {7: ocean renewable energy}, + isbn = {978-0-7918-8785-1}, + url = {https://dx.doi.org/10.1115/OMAE2024-128018}, + doi = {10.1115/OMAE2024-128018}, + abstract = {Abstract. The present study aims to develop an open-source Python-based toolbox for the theoretical modeling of diffraction problems in commonly shaped bodies. The project has dual objectives: 1) to offer a quick and efficient means for design exploration during the initial project phase and 2) to serve as a tool for code comparison and benchmarking for numerical models. While numerical solvers are commonly employed due to the complexity of obtaining exact solutions, our prior work on OSWEC modeling has demonstrated the advantages of an analytical approach, characterized by a simple setup and significantly quick computational time (typically less than a second for a hundred cases). This analytical approach is well-suited for early stages of project development, encompassing design space exploration and device geometry optimization. The current phase of the toolbox includes diffraction solutions for three fundamental cylindrical bodies: bottom-seated surface-piercing cylinder, truncated cylinder, and bottom-seated surface-piercing elliptical cylinder. The outputs encompass domain velocity potentials, excitation forces, and moments, all validated using Capytaine (a Boundary Element Method modeling program). The project is ongoing and is planned for expansion to provide solutions for other shapes. Additionally, an extension of the program to include radiation problems is also scheduled.}, + language = {en}, + urldate = {2026-05-19}, + booktitle = {{ASME} 2024 43rd {International} {Conference} on {Ocean}, {Offshore} and {Arctic} {Engineering}}, + publisher = {ASME}, + author = {Nguyen, Nhu}, + month = jun, + year = {2024}, + pages = {8}, +} + @inproceedings{chau_inertia_2010, address = {Harbin, China}, title = {Inertia and {Damping} of {Heaving} {Compound} {Cylinders}}, @@ -28,24 +63,6 @@ @techreport{fuchs_wave_1954 pages = {22}, } -@inproceedings{nguyen_theoretical_2024, - address = {Singapore, Singapore}, - series = {{OMAE}}, - title = {Theoretical {Modeling} {Toolbox} for {Diffraction} {Problems} of {Common} {Shaped} {Bodies}}, - volume = {7: ocean renewable energy}, - isbn = {978-0-7918-8785-1}, - url = {https://dx.doi.org/10.1115/OMAE2024-128018}, - doi = {10.1115/OMAE2024-128018}, - abstract = {Abstract. The present study aims to develop an open-source Python-based toolbox for the theoretical modeling of diffraction problems in commonly shaped bodies. The project has dual objectives: 1) to offer a quick and efficient means for design exploration during the initial project phase and 2) to serve as a tool for code comparison and benchmarking for numerical models. While numerical solvers are commonly employed due to the complexity of obtaining exact solutions, our prior work on OSWEC modeling has demonstrated the advantages of an analytical approach, characterized by a simple setup and significantly quick computational time (typically less than a second for a hundred cases). This analytical approach is well-suited for early stages of project development, encompassing design space exploration and device geometry optimization. The current phase of the toolbox includes diffraction solutions for three fundamental cylindrical bodies: bottom-seated surface-piercing cylinder, truncated cylinder, and bottom-seated surface-piercing elliptical cylinder. The outputs encompass domain velocity potentials, excitation forces, and moments, all validated using Capytaine (a Boundary Element Method modeling program). The project is ongoing and is planned for expansion to provide solutions for other shapes. Additionally, an extension of the program to include radiation problems is also scheduled.}, - language = {en}, - urldate = {2026-05-19}, - booktitle = {{ASME} 2024 43rd {International} {Conference} on {Ocean}, {Offshore} and {Arctic} {Engineering}}, - publisher = {ASME}, - author = {Nguyen, Nhu}, - month = jun, - year = {2024}, -} - @inproceedings{mavrakos_hydrodynamic_2012, address = {Rio de Janeiro, Brazil}, series = {{OMAE}}, @@ -107,22 +124,6 @@ @inproceedings{seah_symmetric_2006 pages = {4}, } -@article{nguyen_theoretical_2024-1, - title = {Theoretical modeling of a bottom-raised oscillating surge wave energy converter structural loadings and power performances}, - volume = {149}, - issn = {0141-1187}, - url = {https://www.sciencedirect.com/science/article/pii/S0141118724001536}, - doi = {10.1016/j.apor.2024.104031}, - abstract = {This study presents theoretical formulations to evaluate the fundamental parameters and performance characteristics of a bottom-raised oscillating surge wave energy converter (OSWEC) device. Employing a flat plate assumption and potential flow formulation in elliptical coordinates, closed-form equations for the added mass, radiation damping, and excitation forces/torques in the relevant pitch-pitch and surge-pitch directions of motion are developed and used to calculate the system's response amplitude operator and the forces and moments acting on the foundation. The model is benchmarked against numerical simulations using WAMIT and WEC-Sim, showcasing excellent agreement. The sensitivity of plate thickness on the analytical hydrodynamic solutions is investigated over several thickness-to-width ratios ranging from 1:80 to 1:10. The results show that as the thickness of the benchmark OSWEC increases, the deviation of the analytical hydrodynamic coefficients from the numerical solutions grows from 3 \% to 25 \%. Differences in the excitation forces and torques, however, are contained within 12 \%. While the flat plate assumption is a limitation of the proposed analytical model, the error is within a reasonable margin for use in the design space exploration phase before a higher-fidelity (and thus more computationally expensive) model is employed. A parametric study demonstrates the ability of the analytical model to quickly sweep over a domain of OSWEC dimensions, illustrating the analytical model's utility in the early phases of design.}, - urldate = {2026-05-19}, - journal = {Applied Ocean Research}, - author = {Nguyen, Nhu and Davis, Jacob and Tom, Nathan and Thiagarajan, Krish}, - month = aug, - year = {2024}, - keywords = {Analytical, And power production, Design optimization, Hydrodynamic coefficients, OSWEC, Structural loads, Theoretical model, WAMIT, WEC-Sim, Wave energy}, - pages = {104031}, -} - @incollection{hiptmair_survey_2016, series = {Lecture {Notes} in {Computational} {Science} and {Engineering}}, title = {A survey of {Trefftz} methods for the {Helmholtz} equation},