Project5: Space and Time adaptivit - #77
Open
VahidGh wants to merge 48 commits into
Open
Conversation
VahidGh
commented
Jul 8, 2026
- initial test framework
- fix permission error in github action error
- add amsc container reqs to ci/cd
- Update ymls for source
- replace source for sh
- change yml shell to bash
- update yml, run authorized login bash
- update ymls: run interactive bash, run pip inside venv
- in ymls change source from bash.bashrc to allow non-interactive bash
- fix nproc issue in yml
- fix yml for execute permission, add to cmakelists enabling tests
- update model validation. work with pyvista instead of meshio.
- update verification yaml, fix permission error
- fix verification yml load module issue
Refactor Heat class to include new functions and parameters for improved simulation capabilities.
Removed sigma and b function parameters from the Heat class.
Removed setup function and related initialization code for mesh, finite element space, DoF handler, and linear system. Updated assembly and solver logic.
Removed unused reaction coefficient and velocity field from the main function.
Removed unnecessary blank lines in Heat.cpp
Removed unused variable 'b_' from constructor initialization list.
Removed local sigma and b calculations from the loop.
There was a problem hiding this comment.
Pull request overview
This PR turns the repository into a full “Project 5” deliverable by adding a deal.II/Trilinos MPI heat-equation solver with space/time adaptivity, plus a CI/testing harness and optional Azure/Terraform deployment scaffolding to run verification and performance workflows.
Changes:
- Added the
Heatsolver implementation and a configurablespace-time-adaptivitydriver (plus a manufactured-solution correctness test). - Introduced CMake/CTest-based verification + model validation scripts, and GitHub Actions workflows to run them in the course container.
- Added Azure/Terraform infrastructure files and documentation for optional cloud execution and reporting.
Reviewed changes
Copilot reviewed 31 out of 66 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| terraform/variables.tf | Adds Azure Terraform variables (subscription, RG, location, naming). |
| terraform/main.tf | Provisions Azure RG, ACR, Storage, Log Analytics, Container App Env. |
| terraform/outputs.tf | Exposes key Azure outputs (ACR server, storage, workspace IDs, etc.). |
| terraform/.gitignore | Terraform ignore rules for state and local artifacts. |
| src/space-time-adaptivity.cpp | New main driver: parameter parsing + default/convergence runs. |
| src/manufactured-solution-test.cpp | New manufactured-solution test executable (adaptive + non-adaptive). |
| src/Heat.hpp | Declares Heat solver class, forcing functions, and adaptivity params. |
| src/Heat.cpp | Implements assembly, solve, AMR, time adaptivity, output, error metrics. |
| src/.gitkeep | Keeps src/ in repo structure. |
| scripts/validate_model.py | Python validator for theta-method mass-balance CSV output. |
| scripts/run_verification.sh | Local convenience script to configure/build/ctest. |
| scripts/run_scalability.sh | MPI scaling harness producing a CSV timing report. |
| scripts/run_performance_tests.sh | Performance monitoring runner (CPU/mem/time reporting). |
| scripts/run_model_validation.sh | Creates venv, runs solver/ctest, invokes Python validation. |
| scripts/requirements.txt | Placeholder requirements file for validation tooling (currently empty). |
| scripts/compare_pvtu.py | PVTu/VTU comparison script using pyvista/numpy metrics. |
| README.md | Replaces minimal README with full project description + usage/testing docs. |
| mesh/mesh-cube-5.msh | Adds a Gmsh mesh file (large). |
| docs/tests/Project_Documentation.tex | Adds LaTeX documentation for CI/testing/Azure infra. |
| docs/tests/Project_Documentation.toc | Generated LaTeX TOC artifact. |
| docs/tests/Project_Documentation.log | Generated LaTeX log artifact. |
| docs/tests/Project_Documentation.fls | Generated LaTeX file list artifact. |
| docs/tests/Project_Documentation.fdb_latexmk | Generated latexmk DB artifact. |
| docs/tests/Project_Documentation.aux | Generated LaTeX aux artifact. |
| docs/tests/DOCUMENTATION_SUMMARY.md | Markdown summary of the testing/Azure documentation. |
| docs/AZURE_SETUP.md | Step-by-step Azure/GitHub Actions setup guide. |
| cp.sh | Utility script for copying files into an Azure container app and uploading blobs. |
| container-config.yaml | Azure Container Apps configuration example (container + volumes/resources). |
| common/cmake-common.cmake | Shared CMake settings (C++17, deps discovery, flags). |
| CMakeLists.txt | Builds executables and wires up CTest tests/fixtures. |
| .gitignore | Repo-level ignore updates (build, venv, docs artifacts, etc.). |
| .github/workflows/verification.yml | CI workflow: build/test + convergence smoke test + model validation job. |
| .github/workflows/scalability.yml | Manual workflow to run scalability harness. |
| .github/workflows/run-in-azure-container.yml | Workflow to run builds/tests inside an Azure Container App. |
| .github/workflows/azure-deploy.yml | Workflow to provision Azure infra + run MPI perf tests + upload reports. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+1
to
+5
| variable "subscription_id" { | ||
| description = "Azure Subscription ID" | ||
| type = string | ||
| default = "5d7fbbd4-db18-4472-915d-de671cc0f22a" | ||
| } |
| resource_group_name = azurerm_resource_group.main.name | ||
| location = azurerm_resource_group.main.location | ||
| sku = "Basic" | ||
| admin_enabled = true |
| .terraform/ | ||
| *.tfstate | ||
| *.tfstate.* | ||
| .terraform.lock.hcl |
|
|
||
| echo "Running ctest" | ||
| cd "$BUILD_DIR" | ||
| ctest --output-on-failure --parallel $(( $(nproc) - 1 )) |
Comment on lines
+20
to
+27
| echo "Installing/updating validation dependencies..." | ||
| # Run pip in an isolated subshell to ignore external PYTHONPATH | ||
| ( | ||
| unset PYTHONPATH | ||
| . "$VENV_DIR/bin/activate" | ||
| pip install --upgrade pip | ||
| pip install -r scripts/requirements.txt | ||
| ) |
| \subsection{Technology Stack} | ||
| \begin{itemize} | ||
| \item \textbf{Language}: C++17 with deal.II library | ||
| \item \textbf{Build System}: CMake (\geq 3.12) |
Comment on lines
+1
to
+4
| $MeshFormat | ||
| 4.1 0 8 | ||
| $EndMeshFormat | ||
| $Entities |
Comment on lines
+170
to
+172
| Binary files must not be uploaded to the repository (including executables). Mesh files should | ||
| not be uploaded either — this project generates its mesh programmatically | ||
| (`GridGenerator::subdivided_hyper_cube`), so no `.msh`/`gmsh` script is needed. |
| --tolerance 1e-2) | ||
| set_tests_properties(model_validation PROPERTIES FIXTURES_REQUIRED space_time_output) | ||
|
|
||
| set_tests_properties(manufactured-solution-test PROPERTIES DEPENDS model_validation) |
Comment on lines
+15
to
+18
| # Locate MPI compiler. | ||
| find_package(MPI REQUIRED) | ||
| set(CMAKE_CXX_COMPILER "${MPI_CXX_COMPILER}") | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.