Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved Decapodes integration: domains, meshes, initial conditions, plot variables #283

Merged
merged 32 commits into from
Dec 6, 2024

Conversation

epatters
Copy link
Member

@epatters epatters commented Dec 4, 2024

We can now do the Navier-Stokes vorticity equation in addition to the diffusion/heat equation. To accomplish this, we had to generalize the frontend support and Julia interop in several directions. A Decapodes simulation now analysis now requires that you specifiy:

  • the geometric domain: rectangle or sphere)
  • the mesh that discretizes the domain: several choices for both rectangle and sphere
  • initital/boundary conditions for specific variables: again, several fixes choices available
  • which variables to plot

The code is a quite raw in certain places and will need to be cleaned up later.

@epatters epatters added enhancement New feature or request frontend TypeScript frontend and Rust-wasm integrations external Work on interfacing with other tools labels Dec 4, 2024
@epatters epatters marked this pull request as draft December 4, 2024 19:34
Copy link

github-actions bot commented Dec 4, 2024

@quffaro
Copy link
Collaborator

quffaro commented Dec 5, 2024

This latest push anticipates more integrations with AlgebraicJuliaService more and, concretely, generalizes some code from the Decapodes integration. AlgebraicJuliaService specifies integrations in an AlgebraicJuliaIntegration ADT and then has submodules through a basic yet vague interface specify how they will build theories/models/diagrams for CatColabsumption.

While I do not think this is entirely complete, I've

  • added a Geometry struct to contain the domain, mesh, and dualmesh.
  • used ThDecapode <: AlgebraicJuliaIntegration to tag generic-sounding structs like Theory, which is currently mapping names to TheoryElements, which may be Obs or Homs each responsible for storing data consumed from the incoming JSON. This interface is vague but, barring one failing test for unrelated reasons, does not currently break functionality.
  • threaded the system::PodeSystem variable further into functions, which allows us to carry more data further into functions, keeping the number of method arguments smaller
  • housekeeping such as reorganizing code into functions and relevant functionality into distinct files, added documentation, cleaned up tests

I'd like to generalize the methods in Theory so that further integration points would have an interface they integrate with, but I'm not sure if these packages would require different data structures (specifically, would the fields of Theory be different, or can we can away with type parameterizing the struct by T<:AlgebraicJuliaIntegration?)

@epatters
Copy link
Member Author

epatters commented Dec 5, 2024

Thanks @quffaro! I like this reorganization and refactor.

Copy link
Member Author

@epatters epatters left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refactor is looking good, Matt! I know its WIP but I left some comments.

@epatters epatters marked this pull request as ready for review December 6, 2024 05:29
@epatters epatters merged commit f2727c1 into main Dec 6, 2024
10 checks passed
@epatters epatters deleted the cm/navier-stokes branch December 6, 2024 05:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request external Work on interfacing with other tools frontend TypeScript frontend and Rust-wasm integrations
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants