-
Notifications
You must be signed in to change notification settings - Fork 7
User expression support [POC] (#789) #841
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
Draft
maciej-flexcompute
wants to merge
46
commits into
develop
Choose a base branch
from
expressions
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
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
* Added examples of a pydantic model using expressions * Example units support * Migrate to Pydantic V2 * Added variable support * Added units support in variable expressions * Added support for constrained types * Added tests, add support for unary operations
…al evaluation of builtin solver variables (#858) * Move Flow360 and Tidy3D-specific logic outside of core blueprint module * Add support for partial evaluation of solver variables
* Added complete list of usable solver variables * Add variable capture when creating simulation params * Serialization improvements * Fix serialization and deserialization issues --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local>
af260b1
to
622b587
Compare
e5a9897
to
49318b0
Compare
67442ae
to
c580137
Compare
* Nested variables are now available for use * Added expression validation endpoint support * Extend expressions endpoint to support multiple expressions * Add ability to use expressions in vector fields * Added numpy interop capabilities along with subscript operator support * Apply PR feedback --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local>
* Reorganized solver variables into target namespaces * Apply PR feedback * Added ability to convert expressions to C++ syntax (#1009) Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> * Update CI yaml * Fix unit tests after alias changes * Removed unused __init__.py items --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com>
…to expression validation service (#1013) Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local>
* Validation service fixes * Fix aliasing issues, fix numpy interop with dimensioned variables * Apply PR feedback * Ready to merge --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com>
* Validation service fixes * Fix aliasing issues, fix numpy interop with dimensioned variables * Apply PR feedback * Added unit stripping when converting to solver code * Add a general name preprocessing function instead of unit stripping * Finalize unit -> solver conversion function * Add user variable inlining for solver code generation --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com>
…ressions (#1082) * Validation service fixes * Fix aliasing issues, fix numpy interop with dimensioned variables * Apply PR feedback * Added unit stripping when converting to solver code * Add a general name preprocessing function instead of unit stripping * Finalize unit -> solver conversion function * Add user variable inlining for solver code generation * Demonstrating E2E case with expressions * Fix variable initialization when loading from file * Removed non-release code * Fixed unit test --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com>
* wip * More fixes * Another batch of linter fixes * Another round of linter fixes * Fixed most unit test, now fixing extra error * Fixing all the unit tests, pylint etc * Fix unit test * Fix unit test --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local>
…it is not compatible with solver translation (#1108) * Rolled back to python list types, no numpy interop as of now because it is not compatible with solver translation * Format --------- Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com>
* Cross in Pyhton mode works * WIP now needing for refactor to enable function on-demand import since current structure causes circular import * Some comments * Got symbolic evaluation to work but very HACKY * Refactored expressions module structure to be self-contained (still contains cyclic imports but only runtime, never at init...) * Partial evaluation before solver code translation * More fixes, simplify deserializer logic * Format * Fixed unit test as many as possible, only 1 left * Fixing most of the pylint issues * Fixed allow_inf_nan when evaluating expressions with solver variables * eagerly evaluation and also taking advantage of unyt pacakge * Small fixes * Fix invalid list initialization syntax in the C++ code generator * Added back the as_vector() implementation * Renamed raise_error * Remove extra evaluation call in cross, reduce unnecessary parentheses * some more small changes --------- Co-authored-by: benflexcompute <ben@flexcompute.com> Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local>
* Added unit test, now pending fixing lint and todos * Ready for review * Fix for windows-1 * Format * Another attempt * Thank you Windows * should work now
…tion unit test (#1151) * Added unit test for project_variables and also simplified the translation unit test * Removed print * Fix windows test
* Added util function to get the unit from expression * removed print * Added catch for input_params is None * fix lint
* Initial implementation * More variable finished * Fix unit test * Fix pylint * Fix the issue that solver name is not used * Move prepending code to translator * Fix prepending code * Fix deserialize issue that output units is not loaded * self review of prepending code * typo fix * Address comments * fix grad pressure's prepending code * Added support for solver variable in output_fields and also fixed a bug when translating Mach (#1160) --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com>
* Initial implementation * More variable finished * Fix unit test * Fix pylint * Fix the issue that solver name is not used * Move prepending code to translator * Fix prepending code * Fix deserialize issue that output units is not loaded * self review of prepending code * typo fix * Address comments * fix grad pressure's prepending code * Added support for solver variable in output_fields and also fixed a bug when translating Mach (#1160) * Replace wall shear stress with its magnitude, add unit test to whitelisted_callables * Fix coordinate, remove mu * Fix the scaling of turbulence solution * Fix the unit conversion for a list of float * Add missing vorticty magnitude * remove declaration when user-specified name is the same as the solver_name * Add velocity magnitude * Address comments * formatting --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com>
* Implementation done, now checking pylint * Now writing the overwrite checker * Ready for self review
* Enabled timestepping->step size to be expression too * Bumped version
* Updated the project variables schema * rename gradient
* Added postProcessing flag setter * Fixed unit test * Fixed v1 unit test
* Initial implementation * Fix unit test
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.
Added examples of a pydantic model using expressions
Example units support
Migrate to Pydantic V2
Added variable support
Added units support in variable expressions
Added support for constrained types
Added tests, add support for unary operations