-
Notifications
You must be signed in to change notification settings - Fork 89
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
Degree-of-freedom Manager #86
Comments
Nice! I think we can merge this soon, and then start working on refactoring the LaplaceFEM as a test case. Francois is also close on having wells set up. We should also do a few (big) parallel performance tests, just to make sure there are no scaling bottlenecks. |
Excellent. Looking forward to integration. |
@joshua-white can we close this? |
Yes, this is too general now to be useful. We can add specific DoFManager upgrades as new issues. |
We need a DoFManager to handle global degree-of-freedom index assignment. Ideally, user would identify the solution fields to index, perhaps by providing the field keys. A very general case would be displacements on the nodes, pressures in the cells, and Lagrange multipliers on the faces. The DoFManager would loop through the element regions and create global_index field(s) in the data repository with unique global numbers. The dof numbers can then be readily accessed by the physics solver during assembly.
Suggested implementation:
(1) User indicates (somehow) they need global dof numbers for a few existing fields in the dataRepository. For example, a node-based
array<R1Tensor>
displacements and a cell-basedarray<real64>
pressures.(2) The DofManager loops over elements and allocates integer index storage next to the fields being indexed, using some agreed on ordering convention. In this example, each node gets a 3-integer vector (
array2d<global_index>
) for the displacement dofs, numbered0
ton_displacements-1
. Each cell gets a single integer index for the pressures (array<global_index>
) numberedn_displacements
ton_displacements+n_pressures-1
. Index fields can be synchronized using standard MPI communications.(3) During assembly, user can then access global index data in the same manner as they access the field data, and in a one-to-one way because they live on the same objects.
Once a global_index field is available, linear algebra classes can handle more sophisticated indexing issues, like block-partitioning the matrices.
The text was updated successfully, but these errors were encountered: