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

High order element related enhancement #298

Merged
merged 46 commits into from
Mar 22, 2024

Conversation

vickysharma0812
Copy link
Member

This PR adds partial support for higher order elements. This is a work in progress.

- Modifying RemoveDuplicates
- Modifying RemoveDuplicates
- Now temp array is not allocatable 
- The code may break if unallocatable array is send

---

<details open="true"><summary>Generated summary (powered by <a href="https://app.graphite.dev">Graphite</a>)</summary>

> ## TL;DR
> This pull request modifies the `AppendUtility.F90` and `IntegerUtility@Methods.F90` files. It introduces changes to the `Expand` interface and adds a new implementation for removing duplicates in the `RemoveDuplicates_1.inc` file.
> 
> ## What changed
> - In the `AppendUtility.F90` file, the `Expand` interface is modified to include new subroutines for expanding integer and real vectors.
> - In the `IntegerUtility@Methods.F90` file, the `RemoveDuplicates_1a`, `RemoveDuplicates_1b`, `RemoveDuplicates_1c`, and `RemoveDuplicates_1d` procedures are modified to use the new implementation in the `RemoveDuplicates_1.inc` file.
> 
> ## How to test
> To test the changes, follow these steps:
> 1. Compile and build the project.
> 2. Run the relevant test cases that use the `Expand` interface and the `RemoveDuplicates` procedures.
> 3. Verify that the expanded vectors and removed duplicates are correct.
> 
> ## Why make this change
> - The changes to the `AppendUtility.F90` file introduce new subroutines for expanding integer and real vectors, which can be useful in various scenarios.
> - The modifications to the `IntegerUtility@Methods.F90` file update the `RemoveDuplicates` procedures to use a new implementation in the `RemoveDuplicates_1.inc` file, potentially improving the efficiency and accuracy of removing duplicates in integer vectors.
</details>
- Adding append method for appending three vectors of real or integers.
- Adding append method for appending three vectors of real or integers.
- Adding FacetConnectivity and EdgeConnectivity methods
- Adding FacetConnectivity and EdgeConnectivity methods
- Adding GetEdgeConnectivity
- Adding GetFaceConnectivity
- Adding GetEdgeConnectivity
- Adding GetFaceConnectivity
Updates in Reference Element

Adding FaceConnectivity and Edge connectivity methods

---

<details open="true"><summary>Generated summary (powered by <a href="https://app.graphite.dev">Graphite</a>)</summary>

> ## TL;DR
> This pull request adds interfaces and module procedures for reallocating multidimensional arrays of different data types in Fortran.
> 
> ## What changed
> - Added interfaces for reallocating arrays of real numbers and integers with different dimensions and data types.
> - Defined module procedures for reallocating arrays of different data types (REAL64, REAL32, INT64, INT32, INT16, INT8).
> - Included interfaces for reallocating arrays with dimensions ranging from 1D to 7D.
> - Implemented subroutines for reallocating arrays based on input parameters.
> 
> ## How to test
> 1. Compile the Fortran file containing the ReallocateUtility module.
> 2. Use test cases to call the different interfaces and module procedures for reallocating arrays.
> 3. Verify that the arrays are reallocated correctly based on the input parameters.
> 4. Check for any errors or warnings during compilation and testing.
> 
> ## Why make this change
> - Enhances the functionality of the ReallocateUtility module by adding support for reallocating arrays of various data types and dimensions.
> - Provides a more flexible and efficient way to manage memory allocation for multidimensional arrays in Fortran programs.
> - Improves code readability and maintainability by organizing the reallocation procedures into separate interfaces and module procedures.
</details>
- Minor updates in ReferenceQuadrangle_Method
- Updating face connectivity in hexahedron and tetrahedron
Updates in ReferenceElements 

- Minor updates in ReferenceQuadrangle_Method, Adding HelpFaceData_Quadrangle, Adding FaceShapeMetaData_Quadrangle

- Updating face connectivity in hexahedron and tetrahedron
### TL;DR

This pull request includes the addition of the 'GetElementIndex' method in the `Geometry` module. This new method returns the index of an element based on its topology.

### What changed?

The changes can be noted in 'src/modules/Geometry/src/ReferenceElement_Method.F90' and 'src/submodules/Geometry/src/ReferenceElement_Method@GeometryMethods.F90'. A new function, 'GetElementIndex', has been added which returns the index of geometric elements like Point, Line, Triangle, Quadrangle, Tetrahedron, Hexahedron, Prism, and Pyramid based on their type.

### How to test?

To validate these updates, build the project and validate that the new method correctly returns the expected indices when called with different geometric shapes.

### Why make this change?

This change was needed as there was no method present earlier to retrieve the index of a geometric element based on its type. Hence, this new method 'GetElementIndex' would improve the functionality of the Geometry module.

---
EASIFEM-3 Adding FacetElements for line elements.
- Updating FaceElements from elemType for line and surface element.
- In the case of Surface elements we need to workout the higher order
  element
- Volume elements are pending
Adding ElementOrder_Line
Adding ElementOrder_Name
Adding FacetElements_Line
Making previous routines pure functions.
vickysharma0812 and others added 16 commits March 22, 2024 13:59
Adding TotalNodesInElement_Line method
- Making TotalNodesInElement_Line public
Adding methods described in the issue.
Minor fixes
- Minor bug fixed
- Adding the necessary methods
Adding following methods to `ReferenceTetrahedron_Method`

TotalNodesInElement
ElementOrder
ElementType
- Minor fixes
Minor fixes
Adding GetEdgeConnectivity.
Adding TotalEntities_Tetrahedron
Adding TotalEntities_Triangle method
…from-elem-type

Adding FaceConnectivity methods to 3D elems
Minor fixes
@vickysharma0812 vickysharma0812 self-assigned this Mar 22, 2024
@vickysharma0812 vickysharma0812 merged commit 48ba8b7 into master Mar 22, 2024
1 check passed
@vickysharma0812 vickysharma0812 deleted the EASIFEM-3-Create-FacetElements-from-elemType branch March 22, 2024 12:45
@vickysharma0812 vickysharma0812 restored the EASIFEM-3-Create-FacetElements-from-elemType branch March 22, 2024 12:48
@vickysharma0812 vickysharma0812 deleted the EASIFEM-3-Create-FacetElements-from-elemType branch March 22, 2024 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

1 participant