diff --git a/.compileOF2412.sh b/.compileOF2412.sh
new file mode 100755
index 0000000000..eae639057a
--- /dev/null
+++ b/.compileOF2412.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+docker pull ithacafv/openfoam2412-muq2-pytorch
+docker run -ti -d --name foam2412 -v "${PWD}":/home/ofuser/app:rw ithacafv/openfoam2412-muq2-pytorch /bin/bash
+docker exec foam2412 /bin/bash -c "source /usr/lib/openfoam/openfoam2412/etc/bashrc; cd /home/ofuser/app; git config --global --add safe.directory /home/ofuser/app; source etc/bashrc; git submodule update --init; ./Allwclean; ./Allwmake -taumq"
diff --git a/.compileOF2506.sh b/.compileOF2506.sh
new file mode 100755
index 0000000000..f8d282320e
--- /dev/null
+++ b/.compileOF2506.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+docker pull ithacafv/openfoam2506-muq2-pytorch
+docker run -ti -d --name foam2506 -v "${PWD}":/home/ofuser/app:rw ithacafv/openfoam2506-muq2-pytorch /bin/bash
+docker exec foam2506 /bin/bash -c "source /usr/lib/openfoam/openfoam2506/etc/bashrc; cd /home/ofuser/app; git config --global --add safe.directory /home/ofuser/app; source etc/bashrc; git submodule update --init; ./Allwclean; ./Allwmake -taumq"
diff --git a/.github/workflows/docker-dependencies.yml b/.github/workflows/docker-dependencies.yml
new file mode 100644
index 0000000000..e86d331c7c
--- /dev/null
+++ b/.github/workflows/docker-dependencies.yml
@@ -0,0 +1,69 @@
+name: Build Dependencies Docker Images
+
+on:
+ workflow_dispatch:
+
+env:
+ REGISTRY: docker.io
+ IMAGE_NAME: ithacafv/ithacafv-dependencies
+
+jobs:
+ build-amd64-deps:
+ runs-on: ubuntu-latest
+ outputs:
+ digest: ${{ steps.build.outputs.digest }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Log into registry ${{ env.REGISTRY }}
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Build and push AMD64 dependencies
+ id: build
+ uses: docker/build-push-action@v5
+ with:
+ context: ./dockerfiles/OF2506/amd64-deps
+ platforms: linux/amd64
+ push: true
+ tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:amd64
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+
+ build-arm64-deps:
+ runs-on: ubuntu-24.04-arm
+ outputs:
+ digest: ${{ steps.build.outputs.digest }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Log into registry ${{ env.REGISTRY }}
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Build and push ARM64 dependencies
+ id: build
+ uses: docker/build-push-action@v5
+ with:
+ context: ./dockerfiles/OF2506/arm64-deps
+ platforms: linux/arm64
+ push: true
+ tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:arm64
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
new file mode 100644
index 0000000000..0dc3aedf12
--- /dev/null
+++ b/.github/workflows/docker-publish.yml
@@ -0,0 +1,129 @@
+name: Build and Push Multi-Arch Docker Images
+
+on:
+ release:
+ types: [published]
+ workflow_dispatch:
+
+env:
+ REGISTRY: docker.io
+ IMAGE_NAME: ithacafv/ithacafv
+
+jobs:
+ build-amd64:
+ runs-on: ubuntu-latest
+ outputs:
+ digest: ${{ steps.build.outputs.digest }}
+ metadata: ${{ steps.meta.outputs.json }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Log into registry ${{ env.REGISTRY }}
+ if: github.event_name != 'pull_request'
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Extract metadata for ITHACA-FV image
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ tags: |
+ type=semver,pattern={{version}}
+ type=raw,value=latest
+
+ - name: Build and push AMD64 image
+ id: build
+ uses: docker/build-push-action@v5
+ with:
+ context: ./dockerfiles
+ file: ./dockerfiles/Dockerfile
+ platforms: linux/amd64
+ labels: ${{ steps.meta.outputs.labels }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ outputs: type=image,name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
+
+ build-arm64:
+ runs-on: ubuntu-24.04-arm
+ outputs:
+ digest: ${{ steps.build.outputs.digest }}
+ metadata: ${{ steps.meta.outputs.json }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Log into registry ${{ env.REGISTRY }}
+ if: github.event_name != 'pull_request'
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Extract metadata for ITHACA-FV image
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ tags: |
+ type=semver,pattern={{version}}
+ type=raw,value=latest
+
+ - name: Build and push ARM64 image
+ id: build
+ uses: docker/build-push-action@v5
+ with:
+ context: ./dockerfiles
+ file: ./dockerfiles/Dockerfile
+ platforms: linux/arm64
+ labels: ${{ steps.meta.outputs.labels }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ outputs: type=image,name=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
+
+ merge:
+ runs-on: ubuntu-latest
+ needs:
+ - build-amd64
+ - build-arm64
+ steps:
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Log into registry ${{ env.REGISTRY }}
+ uses: docker/login-action@v3
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Extract metadata for ITHACA-FV image
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ tags: |
+ type=semver,pattern={{version}}
+ type=raw,value=latest
+
+ - name: Create and push manifest list
+ working-directory: /tmp
+ run: |
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
+ ${{ needs.build-amd64.outputs.digest }} \
+ ${{ needs.build-arm64.outputs.digest }}
+ env:
+ DOCKER_METADATA_OUTPUT_JSON: ${{ steps.meta.outputs.json }}
\ No newline at end of file
diff --git a/.github/workflows/docker_ithaca.yml b/.github/workflows/docker_ithaca.yml
deleted file mode 100755
index c6a71da4fc..0000000000
--- a/.github/workflows/docker_ithaca.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-name: Docker
-
-on:
- push:
- # Pattern matched against refs/tags
- tags:
- - '*' # Push events to every tag not containing /
-
-jobs:
- docker-arm64:
- runs-on: ubuntu-latest
- steps:
-
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v1
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to DockerHub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: ./dockerfiles/arm64
- platforms: linux/arm64
- push: true
- tags: ithacafv/ithacafv:manifest-arm64
-
- docker-amd64:
- runs-on: ubuntu-latest
- steps:
-
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v1
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Login to DockerHub
- uses: docker/login-action@v1
- with:
- username: ${{ secrets.DOCKER_USERNAME }}
- password: ${{ secrets.DOCKER_PASSWORD }}
-
- - name: Build and push
- uses: docker/build-push-action@v2
- with:
- context: ./dockerfiles/amd64
- platforms: linux/amd64
- push: true
- tags: ithacafv/ithacafv:manifest-amd64
-
-
-
- #build-manifest:
- #needs: [docker-amd64, docker-arm64]
-
- #runs-on: ubuntu-latest
- #steps:
-
- #- name: Checkout
- #uses: actions/checkout@v2
-
- #- name: Set up QEMU
- #uses: docker/setup-qemu-action@v1
-
- #- name: Set up Docker Buildx
- #uses: docker/setup-buildx-action@v1
-
- #- name: Login to DockerHub
- #uses: docker/login-action@v1
- #with:
- #username: ${{ secrets.DOCKER_USERNAME }}
- #password: ${{ secrets.DOCKER_PASSWORD }}
-
- #- name: manifest creation
- #run: docker manifest create ithacafv/ithacafv:manifest-latest --amend ithacafv/ithacafv:manifest-amd64 --amend ithacafv/ithacafv:manifest-arm64
-
- #- name: push manifest
- #run: docker manifest push ithacafv/ithacafv:manifest-latest
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 577a898df2..647c173fd3 100755
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -14,6 +14,13 @@ jobs:
steps:
- uses: actions/checkout@v2
+ # Aggiorna la versione nel Doxyfile con anno e mese correnti
+ - name: Update version in Doxyfile
+ run: |
+ CURRENT_VERSION=$(date +'%Y.%m')
+ cd docs
+ sed -i "s/^PROJECT_NUMBER.*/PROJECT_NUMBER = \"$CURRENT_VERSION\"/" Doxyfile
+
# Build the HTML documentation
- name: Doxygen Action
uses: mattnotmitt/doxygen-action@v1.1.0
diff --git a/.github/workflows/of2412.yml b/.github/workflows/of2412.yml
new file mode 100755
index 0000000000..625661c2fe
--- /dev/null
+++ b/.github/workflows/of2412.yml
@@ -0,0 +1,27 @@
+name: OF2412
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ include:
+ - name: "OpenFOAM 2412"
+ install: "cd ."
+ compile: ./.compileOF2412.sh
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: install OF
+ run: ${{ matrix.install}}
+ - name: make
+ run: ${{ matrix.compile}}
diff --git a/.github/workflows/of2512.yml b/.github/workflows/of2512.yml
new file mode 100755
index 0000000000..0ba698a275
--- /dev/null
+++ b/.github/workflows/of2512.yml
@@ -0,0 +1,27 @@
+name: OF2506
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ include:
+ - name: "OpenFOAM 2506"
+ install: "cd ."
+ compile: ./.compileOF2506.sh
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: install OF
+ run: ${{ matrix.install}}
+ - name: make
+ run: ${{ matrix.compile}}
diff --git a/.gitmodules b/.gitmodules
index c8272cfbfe..3322f3369b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -5,3 +5,12 @@
[submodule "src/thirdparty/Eigen"]
path = src/thirdparty/Eigen
url = https://gitlab.com/libeigen/eigen.git
+[submodule "src/thirdparty/spectra"]
+ path = src/thirdparty/spectra
+ url = https://github.com/yixuan/spectra.git
+[submodule "src/thirdparty/OptimLib"]
+ path = src/thirdparty/OptimLib
+ url = https://github.com/kthohr/optim.git
+[submodule "src/thirdparty/mathtoolbox"]
+ path = src/thirdparty/mathtoolbox
+ url = https://github.com/yuki-koyama/mathtoolbox.git
diff --git a/README.md b/README.md
index ee04cd07ca..d4160b47ef 100644
--- a/README.md
+++ b/README.md
@@ -14,18 +14,15 @@