Extend quadrature types and improve interpolation interfaces - #338
Merged
Conversation
Expose the new `CenterQP` quadrature option through `BaseType`, add `three` and `minus_three` constants to `MathOpt_`, and update related type declarations for consistency. The DOF metadata fields are moved ahead of allocatable members, and `RealVector_` now uses the lowercase `val` component name.
Adds a new quadrature point type constant `CenterQP = 0` to the GlobalData module, alongside the existing QP type parameters.
Update `BaseInterpolation_Method` to recognize the `CENTER` interpolation point in both string-to-enum and enum-to-string conversions, and reformat the `BaseType` imports to follow the project's one-symbol-per-line `USE, ONLY` style.
Refactor USE statement to import FEVariable_ and TypeFEVariableOpt on separate lines, following the project style guide requiring one import per line.
Name the `ConditionNo` and `GetInvMat` interface blocks directly instead of declaring separate `MODULE PROCEDURE` bindings. This cleans up the generic interface definitions in `GE_CompRoutineMethods.F90` and also tightens the related routine documentation formatting.
Extend triangle interpolation utilities to handle `ipopt%Center` by returning the triangle centroid for both default and mapped coordinates. The update also aligns the file with project conventions by using `TypeMathOpt` constants, improving debug assertions, and cleaning up formatting and dead commented code.
Adds a new `QuadratureVariable` overload (`Quadrature_Vector_Constant2`) for creating constant vector quadrature variables with typed `rank` and `vartype` arguments, wiring it through both the module interface and submodule implementation. Also includes minor formatting cleanup in FEVariable method files.
Refactor the USE statement in ElemshapeData_InterpolMethods to follow the project's code style convention where each item imported from the same module should be on its own line, rather than comma-separated on a single line.
Rework the `ElemshapeData` interpolation interface blocks so each generic interface wraps its module procedures directly, and tidy the `FEVariable` imports to match the project’s one-item-per-`USE` style.
Refactors the interpolation methods submodule to use `TypeMathOpt` for shared constants, split `FEVariable_Method` imports onto separate lines, and add default branches in the select blocks for clearer control flow.
Removes the old `IterationData` module/type wiring from BaseType, BaseMethod, and CMake, and introduces a new `ConvergenceOpt` module/submodule with utility conversions between integer and string forms for convergence type, convergence target, and norm type. `ConvergenceOpt_` is extended with norm constants (`L1`, `L2`, `Infinity`) to support these mappings, and build lists are updated to compile the new module. Also includes a minor spacing fix in `BaseMethods.md`.
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.
This pull request introduces several significant changes to the codebase, focusing on refactoring and modularization, particularly for convergence options and interpolation utilities. It removes the
IterationDatamodule and related types, introduces a newConvergenceOptUtilitymodule, and makes various improvements and cleanups in interpolation methods and type definitions.The most important changes are:
Convergence Options Refactoring
ConvergenceOptUtilitywith utility functions for converting between convergence types, convergence-in types, and norm types (character/integer/string), and included it in the build system. [1] [2] [3]ConvergenceOpt_andQuadratureOpt_types to support new options such asNormL1,NormInfinity, andCenter. [1] [2]Iteration Data Removal
IterationData_type and all associated interfaces, methods, and build system references, simplifying the codebase and removing now-unneeded functionality. [1] [2] [3] [4]Interpolation and Quadrature Improvements
InterpolationPoint_ToIntegerandInterpolationPoint_ToCharfunctions, and fixing case-sensitivity and naming consistency. [1] [2]USEstatements inBaseInterpolation_Methodfor clarity and maintainability.Type and Interface Cleanups
DOF_andRealVector_types for clarity and consistency (e.g.,valinstead ofVal), and adjusted related code accordingly. [1] [2] [3]ElemshapeData_InterpolMethods, fixing documentation and interface definitions for interpolation methods. [1] [2] [3] [4] [5]Miscellaneous
three,minus_three) toBaseTypefor mathematical convenience.These changes collectively improve modularity, maintainability, and extendability of the codebase, especially in convergence and interpolation handling.