You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, bespoke boundary conditions are included through the generate function by masking. That is, boundary conditions are not automated. There are two ways that this is done:
Through the generate function, such as in poiseuille and bc_debug. Masks are implemented as bespoke operators.
Through collages, such as in stokes_aswell.jlhere which uses UWDs to specify meshes with their boundaries. A collage is "manual" in the sense that users need to write functions for each boundary. (e.g, left_wall_idxshere). Collages require the user to specify an additional Decapode with the boundary morphisms, a relation diagram mapping the mesh to its boundaries, as well as the resulting Decapode collage produced through collate.
Both methods require new functions implemented into generate to specify the indices of the boundary and apply the correct value.
We'd like a way of automating this process further. Through FreeDiagram and the @diagram macro in Catlab, we have the ability of freely-constructing a diagram. We can use this to build a diagram of meshes which stores a hierarchy of subobjects for meshes, including the original mesh as well as boundaries, their boundaries, etc. We can use this to programmatically select boundaries and apply boundary conditions.
We can implement map for Diagrams (if not currently implemented) to broadcast functions onto the mesh hierarchy. Rather than passing in a mesh to the compiler, we can pass in the diagram of meshes. This way, the relationship between meshes and their boundaries are sustained throughout the entire decapodes workflow.
Because boundary conditions are also enforced through the generate function, it makes sense to have the Mesh Hierarchy also carry around functions traditionally stored in the generate function; for example, while foo may be defined over the mesh $$X$$, bar may be defined over $$\partial_{top}X$$.
This is a large lift impacting most aspects of Decapodes, so this implementation will create a breaking release.
The text was updated successfully, but these errors were encountered:
Currently, bespoke boundary conditions are included through the
generate
function by masking. That is, boundary conditions are not automated. There are two ways that this is done:generate
function, such as inpoiseuille
andbc_debug
. Masks are implemented as bespoke operators.stokes_aswell.jl
here which uses UWDs to specify meshes with their boundaries. A collage is "manual" in the sense that users need to write functions for each boundary. (e.g,left_wall_idxs
here). Collages require the user to specify an additional Decapode with the boundary morphisms, a relation diagram mapping the mesh to its boundaries, as well as the resulting Decapode collage produced throughcollate
.Both methods require new functions implemented into
generate
to specify the indices of the boundary and apply the correct value.We'd like a way of automating this process further. Through
FreeDiagram
and the@diagram
macro in Catlab, we have the ability of freely-constructing a diagram. We can use this to build a diagram of meshes which stores a hierarchy of subobjects for meshes, including the original mesh as well as boundaries, their boundaries, etc. We can use this to programmatically select boundaries and apply boundary conditions.We can implement
map
for Diagrams (if not currently implemented) to broadcast functions onto the mesh hierarchy. Rather than passing in a mesh to the compiler, we can pass in the diagram of meshes. This way, the relationship between meshes and their boundaries are sustained throughout the entire decapodes workflow.Because boundary conditions are also enforced through the$$X$$ , $$\partial_{top}X$$ .
generate
function, it makes sense to have the Mesh Hierarchy also carry around functions traditionally stored in thegenerate
function; for example, whilefoo
may be defined over the meshbar
may be defined overThis is a large lift impacting most aspects of Decapodes, so this implementation will create a breaking release.
The text was updated successfully, but these errors were encountered: