Skip to content

Commit 479ed89

Browse files
piotrklubaangranl-flexJunchengXuebenflexcomputemaciej-flexcompute
authored
Modular meshing and Snappy (#1394)
* general snappy framework, does not work * basic translator functionality * tests repaired * reversed unnecessary changes * reversed unnecessary changes again * reversed unnecessary changes yet again * points in mesh added * added strictRegionSnap * implemented initial validators * corrected errors with validators and included angle * always include strictFeatureSnap * pulled snappy clases to main namespace * repaired handlin volume meshing params and empty edge lists * fixed volume meshing in modular workflow * fixed Self import error * added a test * fixes to translator * fixed empty regions and bodies n edge refinement * additional fixe with more tests coverage * draft change * fixed turning off edges at smoothing * added validators to quality metrics * added more validators * Use original edges for smoothing - snappy (#1304) * updated translator to list edgeFiles * does not require point in mesh when specifying bounding box * cad is fluid gets translated * cad is fluid added to translator * deleted edgeFiles * fixed multiple body regions in one refinement bug * local retainment of edges * fixed volume validation error * Added UniformRefinement to snappy (#1331) * Merge rc/25.6 to snappy main branch (#1347) * Add Project Length To ValidationInfo (#1233) * Add project_length_unit to validation_info * Utilize validation_info when parsing multiconstructor model * Add unit test and fix format * Address comments * Address comment again * Address comments round 3 * feat(): add customize user agent for the request from python client (#1221) * feat(): add customize user agent for the request from python client * fix! * fix! * Fix formatting --------- Co-authored-by: BenYuan <ben@flexcompute.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * User expression support [POC] (#789) (#841) * User expression support [POC] (#789) * 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 * Make core blueprint package framework-agnostic, add support for partial 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 * Fix Python 3.9 compatibility * Added complete list of usable solver variables (#888) * 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> * Ensure global scope variables are visible within validation service * Fix validation ordering bug * Allow extra fields in variable objects * Improved error messages (#945) * Nested expression support + expression validation endpoints (#946) * 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 (#986) * 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> * Add dependency cycle checking and add non-dimensioned array handling to expression validation service (#1013) Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> * Validation service fixes, better error messages (#1030) * 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> * Added unit handling to solver code converter (#1049) * 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> * Expressions fixes, demonstrating E2E capability for user-variable expressions (#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> * Pylint Fix for `expression` branch (#1083) * 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> * Rolled back to python list types, no numpy interop as of now because 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> * Partial expression evaluation, example of a builtin function (#1115) * 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> * Fixed merging * Fixed V1 tests * [FL-729] [FLPY-7] Dimensioned Volume Output (#1012) * 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 * Enabled all output types to use UserVariable (#1148) * Added unit test for project_variables and also simplified the translation 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 (#1157) * Added util function to get the unit from expression * removed print * Added catch for input_params is None * fix lint * Disables vector arithmetics for variables (#1158) * List all solver variables (#1150) * 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> * Separate prepending code to declaration and computation parts (#1165) * 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> * UserVariable as Token and value from context (#1161) * Implementation done, now checking pylint * Now writing the overwrite checker * Ready for self review * Enabled timestepping->step size to be expression too (#1166) * Enabled timestepping->step size to be expression too * Bumped version * Handles NaN desearilization (#1168) * Added proper base for surface probe output * Ben y/expression front end feedback (#1169) * Updated the project variables schema * rename gradient * Added translator for ValurOrExpression object (#1175) * Added postProcessing flag setter (#1176) * Added postProcessing flag setter * Fixed unit test * Fixed v1 unit test * Decouple solver variable's solver name with user variable name (#1170) * Initial implementation * Fix unit test * Expression validation bundle (#1181) * 1. Single UDF has single dimensionality * Change in_unit to in_units * Change in_unit to in_units Signed-off-by: BenYuan <ben@flexcompute.com> * Fixed unit test * Fixed all unit tests * Trying to fix windows * Removed unnecessary prints * Added legacy checker * added more test * Disabled degF and degC for the Expression --------- Signed-off-by: BenYuan <ben@flexcompute.com> * Fix heatflux related solver variables (#1186) * Fix heat flux related solverVariables * Remove unnecessary debug script * [Registry Rescale] Use solutionRescale in the prepending code (#1184) * Fixed unary op not allowed by expression (#1187) * Fix temperature output with user variable (#1194) * Fix the prepending code for temperature * Add unit test * Remove debug script * [TODOs pending] More Math Functions for `Expression` (#1185) * Added math function cross for 2 component * Added dot function * Added sqrt * removed unnecessary callable assingment * added translator unit test * [Angran] More operation added, needs double check * Added some unit tests, removed pow() since it is duplicate --------- Co-authored-by: Angran Li <angran@flexcompute.com> * Enable more fields to use value or expression (#1199) * Added all unit tests for ValueOrExpression fields * Added configure API to limit acceptance of the runtime expressions * Removed print * removed print, added extra=allow * Add more unit tests and validations for math operations (#1196) * Add validation and unit tests for multiple math operation * Handle mixture of unyt_quantity and expression/variable when using min/max function, add unit test for edge cases * Add more edge cases test * Add more edge cases and replace all dimensionality to dimensions * Add the remaining unit test and clean up todo list * Removed print * Address comments --------- Co-authored-by: BenYuan <ben@flexcompute.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * Added dependency graph and variable pre-sorting (#1202) * added dependency graph, now need to add the topo_sort * added dependency graph, now need to add the topo_sort * Fix lint and format * Added unit test and added the sort to init variable space. What about the validate expresion though???... * Fixed a bug in deserializer where syntax errors are not exposed (#1200) * Fixed a bug in deserializer where syntax errors are not exposed * Fix unit test * Fix lint * Fix unit test * Fixed validaiton service for not cleanning the cache and also that no dependency graph built for sorign (#1204) * Deploy again (#1208) * Add expression support for Isosurface (#1201) * Add validation and unit tests for multiple math operation * Handle mixture of unyt_quantity and expression/variable when using min/max function, add unit test for edge cases * Add more edge cases test * Add more edge cases and replace all dimensionality to dimensions * Add the remaining unit test and clean up todo list * Initial implementation * Validation fix * Add validation for using empty list in UserVariable * Add unit for for isosurface validation * Add validation for iso_value length * Fix translator for IsosurfaceOutput * Fix unit test * Fix unit test * Use new unit system for non-dimensionalization of random units in iso_value * Fix incorrect isovalue for dimensioned output * Update unit test to use a irregular units as iso value * Changed isoValue schema (#1207) * Exclude project_variables from nondimensionalization * Specify exclude in the individual class * some minor patching * Add unit to validate iso value's translation --------- Co-authored-by: BenYuan <ben@flexcompute.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * Removed validate_expression() (#1212) * Using discriminator to differencetiatye Value VS Expresison (#1215) * Added function to print all the output units for all post processing variables (#1213) * Added funciton to print all the output units for all post processing variables * some comments * Add validation to check the usage of surface specific solution variable in non-surface output fields (#1216) * Add validation to check the usage of surface specific solution variable in non-surface output fields * Address comments * Fix unit test * Added check for dependent features (#1218) * Now hand over to helper * Added check for dependent features * Removed print * Added missing check * Update SurfaceIntegralOutput for UserVariable (#1214) * rename node_normals to node_area_vector and add node_unit_normal * Update surfaceIntegral and UDF validation * Automatically multiply area to the surfaceIntegralOutput * Update tests/simulation/params/test_validators_params.py Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * Create a new user variable for surface integral * Address comments * Address comments --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * More IsosurfaceOutput changes for Expression (#1220) * Initial implementation * fix get_output_units and corresponding unit test * Add unit test * Improve unit test * address comments * Enable usage of constant value as output variables. (#1219) * Enable usage of constant value as output variables. * Remove print * Added pi (#1222) * Added pi * Removed print * Renamed project_variables to variable_context (#1224) * Temporary disable unit system when validating ValueOrExpression (#1225) * Fixed the iso_value field validator dependency resulting in wrong error (#1230) * Fixed the iso_value field validator dependency resulting in wrong error * Revert accidental comment * formatter * [Expression] Add functions to get/remove/show user variables (#1226) * Reraise a different redeclaration error when loading simulation json * Fix error during translating isosurface * Add functions to get/remove/show user variables * Address comments * Changed texting * Fix lint --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> * Skip feature-dependent validation for expressions that are not used (#1223) * Skip feature-dependent validaiton for expressions that are not used * Added recursive finding of dependendt variables * lint * [SCFD-5773] Fix issue where semicolumn breaks AST (#1231) * replace validated_by with boolean option for clear context (#1232) * Reviewed, improved error message and loc * Some polishing * [SCFD-5806] Add solver side internal variables to the block lsit * Convert number user variables to expression * Fix lint * Removed evaluated value/units * Fix lint and unit test --------- Signed-off-by: BenYuan <ben@flexcompute.com> Co-authored-by: Andrzej Krupka <156919532+andrzej-krupka@users.noreply.github.com> Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: benflexcompute <ben@flexcompute.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: Angran <angran@flexcompute.com> * Add 'main' branch references * Update auto hotfix workflow (#1241) * Add updater for from_mach_reynolds (#1252) * [25.5] Add prefix option to read_all_v1_BETDisks function (#1253) (#1255) * initial implementation * Add index offset option * Address comment Co-authored-by: Angran <angran@flexcompute.com> * Enabled power operation on vector variables (#1257) * Enabled power operation on variables * Fix CI --------- Co-authored-by: Angran <angran@flexcompute.com> * Remove ceil and floor functions (#1259) * Added bounding box info in support of inhouse symmetric (#1258) * Added bounding box info * Ready for testing, proper validaiton pending * deploy now, test pending * Fixed unit tests * Ready for testing * fixed unit test * Ready * Bump version due to addition of the global_bounding_box * Misc expression fixes (#1264) * Added support for front end JSON support when expression is empty/None * Regulated the unit symbols that can be used in the expression * Fixed unit test * Resource reuse logic increase robustness (#1267) * WIP * Now fixing UDD * Fixed udd ordering * Need to know how the density works * Ready * READY * Remove logging to file by default (#1269) * Remove file logger * Try again * try again --------- Co-authored-by: BenYuan <ben@flexcompute.com> * [FXC-1886] Fix incorrect dimensional output when liquid op is used (#1265) * Fix unit conversion bug for liquid * 1. Use liquid flow360 unit system for UDF conversion when liquid op is used 2. Fix unit test * Fix compare_values and replace all incorrect checks * Address comments * Also fix other conversion factor --------- Co-authored-by: BenYuan <ben@flexcompute.com> * Move get_flow360_unit_system_liquid out for manifest usage (#1273) * [SCFD-5640] Disable the same surface being used in more than one Surface/TimeaverageSurfaceOutput (#1270) * [SCFD-5825] Remove 'p' and 'rho' from iso field (#1275) * Fix updater of from_mach_reynolds (#1276) * Fix updater of from_mach_reynolds * revert minor change * removed dev from example (#1272) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * Added legacy tagging for previous UDFs (#1281) Co-authored-by: Angran Li <angran@flexcompute.com> * fix(): misuse of .sort() which return None (#1282) * fix(): misuse of .sort() which return None * address comments * [Expression] Removed postProcessing key in the context and also added support for description (#1280) * [Expression] Removed postProcessing key in the context and also added support for description * isort --------- Co-authored-by: Angran <angran@flexcompute.com> * [SCFD-5945] Fix location of the expression validation error and also fix issues caused by converting the value variable to expression. (#1283) * [SCFD-5945] Corrected the location for expression error * proposed fix * Rebase anyway --------- Co-authored-by: Angran Li <angran@flexcompute.com> * [SCFD-5015] Projected frontal area support (#1262) * [SCFD-5015] Projected frontal area support * [SCFD-5943] Added translator support for the auto area * fix linter * Fix Deserialize function when handling None description (#1286) * Update to_file implementatino to exclude None when dumpping json * Make sure deserialize can handle None description situation * Add fixed to_yaml * adopted the proposed flex credit example (#1284) * adoptes the proposed flex credit example * black * removed leading spaces * separate get_project_records out (#1287) * Remedy on the GhostCircularPlane existence check (#1288) * Removed the fall back of using Flow360Params (#1289) * Removed the fall back of using Flow360Params * Fix lint * Revert "Removed the fall back of using Flow360Params (#1289)" (#1290) This reverts commit 211ef14aa05c51360c4f93a7ac15307dc931eb82. * Remove get expanded entity list during preprocessing params for translator (#1292) * Remove expanded enttiy list * fix pylint * Added v1 fallback original error * Bump version * [Hotfix Main]: Added version command and better project loading error (#1296) * Added version command and better project loading error (#1295) * Added version command and better project loading error * fixed unit tests * resolved conflict --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> * Load the storage region from the backend response (#1299) * load the storage region from the backend response * Bump version * Added updater for entities being in multiple outputs (#1293) * WIP * Added updater for entities being in multiple outputs * Deduplicate first before removing surfaces --------- Co-authored-by: Angran <angran@flexcompute.com> * bump to 25.5.2b4 (#1300) * Removed aws_region in the model (#1302) * Example python file for post-processing time-averaged isosurfaces (#1291) * example file for time-averaged isosurfaces * added post-processing * added post-processing * added some text * changed temp folder to local folder * black validation * removed paths for download * removed lines * removed lines * removed lines * Some improvement on the `flow360 version` command (#1305) * Some improvement * formatting * Bump version for 25.6 official release (#1306) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) * Bump to 25.6.3 (#1313) * Fix the hotfix yaml not being able to handle the anti column (#1311) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json * Fix the hotfix yaml not being able to handle the * Fix auto hotfix * Speed up the loading of the entities by using set and also reduce complexity with supplied known hash set (#1316) (#1320) * Speed up the loading of the entities by using set and also reduce complecity with supplied known hash set * Remove description * Ready * Fix lint * Added a redunet test.. (#1318) (#1323) * [FXC-1974] Dry run for run_case() (#1334) * [FXC-1974] Dry run for run_case() Fix linting [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) (#1312) * Added for sm and vm generations too * revert change on examples * [FXC-2006] Disable boundary completeness and deletion validation (#1330) * [FSC-2006] Disable boundary completness and deletion validation * Fix unit test * [FXC-2059] Added planar_face_tolerance translator for legacy mesher and also unified the validation (#1329) * [FSC-2006] Disable boundary completness and deletion validation * Fix unit test * [FXC-2059] Added planar_face_tolerance translator for legacy mesher and also unified the validaiton * Bumped to 25.6.4 (#1338) * Updated the description of the planar_face_tolerance (#1342) * fix(): `planar_face_tolerance` might be missing and causing validation to fail (#1344) * fix(): planar_face_tolerance might be missing and causing validaiton to fail * ensure valid param * Fixed test * feat: add rename method to v2 assets (#1333) + feat: add tags filtering to Project.get_case_ids, Project.get_project_ids, and metadata (#1346) * feat: Migrate Folder class to v2 API (#1317) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) (#1312) * bug(): Removed duplicate pressure output when pressure is specified (#1309) * feat: migrate Folder class to v2 API endpoints * remove unused v1 import, run styling + lint checks * rerun isort + lint * disable pylint duplicate code * fix example files * delete test_folder_tree.py * delete examples, remove comments, update pydantic * fix: run linting + formatting --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * feat: Add folder parameter to project creation (#1325) * feat: add rename method to v2 assets (#1333) * feat: add rename method to v2 assets (Folder, Project, SurfaceMesh, VolumeMesh, Case, etc) * fix: raise rename method to AssetBase class * fix: remove self return after renaming asset * fix: remove return docstring + missed self returns * feat: add tags filtering to Project.get_case_ids, Project.get_project_ids, and metadata (#1341) * feat: add tag filtering support to Project class + metadata and class property, get_case_ids/get_project_ids methods 499f63b * fix: remove unused imports + dangerous default value * feat: add property tags to AssetBase --------- Co-authored-by: dawood <mrblackcto@outlook.com> * formatting changes * formatting * Bump to 25.6.5 and also add default value application to planar tolerance (#1348) * fixed plannar tolerance import issue * volume_meshing_translator_fix --------- Signed-off-by: BenYuan <ben@flexcompute.com> Co-authored-by: Angran <angran@flexcompute.com> Co-authored-by: JunchengXue <97111055+JunchengXue@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: Maciej Skarysz <83596707+maciej-flexcompute@users.noreply.github.com> Co-authored-by: Andrzej Krupka <156919532+andrzej-krupka@users.noreply.github.com> Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Wiktor <wiktor.krzew@flexcompute.com> Co-authored-by: marcvivesmassana <marc.vives@flexcompute.com> Co-authored-by: dawood <mrblackcto@outlook.com> Co-authored-by: Maciej Skarysz <maciej@flexcompute.com> * bumped version for beta publish * Squashed commit of the following: commit 85fea5abd794301e51d35b900b1c499e5c5fd46f Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Aug 27 19:41:50 2025 -0400 Revert "Ensure the geometry tolerance and the planar tolerance are compatible with each other (#1389)" (#1392) This reverts commit ba7bd43838ce93cc778d131e89d7321073559f05. commit 5113e280d016d0b44848ad9063634ba8719efa37 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Aug 27 15:35:12 2025 -0400 Added the CustomVolume (#1380) * Added the CustomVolume Expose CustomVolume * Fixed lint and formatting * Skips boundary check for CustomVolume commit ba7bd43838ce93cc778d131e89d7321073559f05 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Aug 26 15:41:01 2025 -0400 Ensure the geometry tolerance and the planar tolerance are compatible with each other (#1389) * Ensure the geometry tolerance and the planar tolerance are compatible with each other * Fix msg commit 3f796a105aea5c58053bfd552d7deed84668bf19 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Aug 26 12:06:10 2025 -0400 Improved robustness handling Geometry projects created completely with surface mesh files (#1388) commit d73f48b9ce75ef56a42ce54139e9db09e033f709 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Aug 25 20:45:47 2025 -0400 [FXC-2413] Added conflicting grouping handler for the grouping. (#1387) * Added conflicting grouping handler for the grouping. * Fix test commit b84214a60f4a0fff0720abdf690ee91289108922 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Aug 25 20:39:04 2025 -0400 Disables surface deletion and symmetric existence check when transformation is detected (#1385) * WIP * Disables surface deletion and symmetric existence check when transformtation is detected commit 4b16ed0eb16e870d9bc7a7990dc3b34abeaeaf47 Author: benflexcompute <ben@flexcompute.com> Date: Mon Aug 25 17:14:51 2025 -0400 Remove print commit e756b677a176cf55bc033d3ea8395baa049f8d85 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Aug 25 17:10:38 2025 -0400 Added updater when loading cloud entity info and also added more logging (#1386) * Added updater when loading cloud entity info and also added more logging * fixed lint commit 3d1a33dfe177d7fde3b0257901a6dbf7b4a961ef Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 22 20:37:20 2025 -0400 [Hotfix Main]: [SCFD-6066] Symmetry plane and face deletion logic. (#1384) * [SCFD-6066] Symmetry plane and face deletion logic. (#1383) * Added back validation for deleted surface detection and symmetry plane existence check * ADded expand and default box * fix lint * Fixing unit test --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: benflexcompute <ben@flexcompute.com> commit d451b9cedc1d5231bcb786a57bbb9957c85851fc Author: yifan-flex <124317394+yifan-flex@users.noreply.github.com> Date: Fri Aug 22 18:00:54 2025 -0400 fix(): change LiquidOperatingCondition translator so that Compressible solver type is allowed (#1379) commit dd5e64d94f91f6ca989be09b32e57a9b3759fa25 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Fri Aug 22 12:17:06 2025 -0400 [FXC-743] GAI surface mesher translator (#1266) * run test first and then fix test * Change reference case * GAI translator ready * shorten the line number * Remove print * Added the new parameters commit 848ab40eb14aa3d8f160e26f9b0ed832965d97aa Author: awccoppFC <alexander.coppeans@flexcompute.com> Date: Wed Aug 20 15:29:03 2025 -0400 iso surface clipping based on wall distance interface (#1374) * added wall distance clip threshold option to isosurface * updated defautl for wall dist clip threshold in python client and added to solver_translator * fixed typo * added unit test for solver translator with wall distance clip option * added test for output_entities for wall distance clip threshold * formatting * run isort * fixed variable naming for pylint * changes from review * added pylint exception * updated comment associated with isosurface wall_dist_clip_threshold * removed debugging try except statement --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit d2768d216497b9e687bfa5cef92ca330396d8e98 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed Aug 20 15:15:29 2025 -0400 [FXC-2376] Added support for VM error status (#1375) (#1377) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 7005ff2fd894c93115ef557fbfa011e4e67bb03a Author: Savithru Jayasinghe <168450781+savithru-flex@users.noreply.github.com> Date: Wed Aug 20 14:35:31 2025 -0400 Expose GeometryRefinement class (#1376) * Expose GeometryRefinement class * Linter commit 5d761f0d7a3e17094d1d2b2ed327d0e8c233fb52 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue Aug 19 10:27:09 2025 -0400 Scheduled sync: main → develop (#1373) * allow n_edge=0 (#1371) * [FXC-2300] Improved error message when using legacy output field names (#1366) (#1367) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * [FXC-2301] Fixed the translator not recursively finding solver variable names (#1365) (#1368) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> * [FXC-1749] make isentropic compressible solve on by default for liquid (#1369) * [FXC-1749] make isentropic compressible solve on by default for liquidOperatingCondition * Fix unit test * Change implementation * [FXC-342] [FXC-343] Add output classes for imported surfaces (#1352) * Add output for imported surfaces * Add docstrings * Address PR comments * Add TimeAverageImportedSurfaceOutput to time-average types --------- Co-authored-by: Feilin <52168719+feilin-flexcompute@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: yifan-flex <124317394+yifan-flex@users.noreply.github.com> commit daf7c9591e8d8ead57fc3cdd5be460f2ba4293fa Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Aug 18 13:32:49 2025 -0400 [Hotfix Main]: Fix bug that dimensionalization used wrong velocity scale (#1362) * Fix bug that dimensionalization used wrong velocity scale (#1361) * Fix bug that dimensionalization used wrong velocity scale * Fix unit test * Fix formatting * Fixed unit test --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> commit caabcfe25172d245913236fb34491bccedb487eb Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Aug 18 12:08:20 2025 -0400 [SCFD-5640] Separating the time averaged output from non time averaged ones in translated JSON (#1263) * [SCFD-5640] Separating the time averaged output from non time averaged ones in translated JSON * Reverted monitor output related changes * Ready commit 16fedf52add00930eb5561e9038406e35e7de49c Author: Chaitanya Talnikar <141852878+chai-flex@users.noreply.github.com> Date: Fri Aug 15 16:42:34 2025 -0400 Fix name for geometry refinement (#1363) commit dff2e5b0dfb2cd8a953b573e99c4210affa4be7a Author: Chaitanya Talnikar <141852878+chai-flex@users.noreply.github.com> Date: Fri Aug 15 14:28:34 2025 -0400 Add geometry refinement and other GAI related options (#1355) * Add geometry refinement and other GAI related options * Fix formatting * Added geometry refinement explicit cast * Fix some comments * Fix black * Address more comments * Finish adding unit tests * Fix lint and isort * Address comments * Fix json reference unit test failures --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 82c591678756392ceffecba727cc34a3e0933e48 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 14 23:17:44 2025 -0400 Exposing error when boundary is missing compared to metadata (#1357) (#1358) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 8e38f54fd1405ce4dee5f79b1cd780c3a070387d Author: BenYuan <ben@flexcompute.com> Date: Fri Aug 15 01:54:50 2025 +0000 Change auto merge workflow commit f835ce41f10b4fc2feb9036ebc4aa2731bf8e43c Author: BenYuan <ben@flexcompute.com> Date: Thu Aug 14 16:27:40 2025 +0000 Added sync-main-to-develop.yml commit f5c2128cc40f6911f3fc873c05eb891e5bf8bf38 Author: awccoppFC <alexander.coppeans@flexcompute.com> Date: Tue Aug 12 16:27:13 2025 -0400 Porous Jump Python Interface (#1332) * added porous jump bc to python client as well as tests * run black on code * fixed comments and ran isort + black * updated test * formatting * added tests for input validation for porous jump entity pairs * removed unnecessary code * test_validators_params.py * formatting * removed test --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 04074e798afc317fabd2a2d4fb96da983d2d38d4 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Aug 11 15:12:26 2025 -0400 Raise on error by default (#1351) (#1354) * Added Python version for user agent * Fix lint * Raise on error by default * Changed the default to raise on error submission to avoid user confusion * Better error message Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit cb5324cc446a18a79325b084961e79dca4fb6aea Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Aug 11 15:12:00 2025 -0400 [Hotfix Main]: Added Python version for user agent (#1353) * Added Python version for user agent (#1350) * Added Python version for user agent * Fix lint * Fix conflict --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> commit 64d3f9bd213bc73c57fceb2dc054f9878118c23e Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon Aug 11 12:21:06 2025 -0400 [Hotfix Main]: Bump to 25.6.5 and also add default value application to planar tolerance (#1349) * Bump to 25.6.5 and also add default value application to planar tolerance (#1348) * Resolve conflict --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> commit edadff15ac8c4e41a80b84b456454a12d87ef06f Author: dawood <mrblackcto@outlook.com> Date: Fri Aug 8 16:19:11 2025 -0400 feat: add tags filtering to Project.get_case_ids, Project.get_project_ids, and metadata (#1341) * feat: add tag filtering support to Project class + metadata and class property, get_case_ids/get_project_ids methods 499f63b * fix: remove unused imports + dangerous default value * feat: add property tags to AssetBase commit 113e6e417c3b8dca1a1ed2aa3ce507e73ddb6627 Author: dawood <mrblackcto@outlook.com> Date: Fri Aug 8 14:20:48 2025 -0400 feat: add rename method to v2 assets (#1333) * feat: add rename method to v2 assets (Folder, Project, SurfaceMesh, VolumeMesh, Case, etc) * fix: raise rename method to AssetBase class * fix: remove self return after renaming asset * fix: remove return docstring + missed self returns commit c21664b8fba2d944a13a532d8588f2c671c219e9 Author: dawood <mrblackcto@outlook.com> Date: Fri Aug 8 12:58:57 2025 -0400 feat: Add folder parameter to project creation (#1325) commit 6ff4da50eecf24c520bbad5a5a42807aeb3c9e81 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 8 11:32:13 2025 -0400 [Hotfix Main]: fix(): `planar_face_tolerance` might be missing and causing validation to fail (#1345) * fix(): `planar_face_tolerance` might be missing and causing validation to fail (#1344) * fix(): planar_face_tolerance might be missing and causing validaiton to fail * ensure valid param * Fixed test * FIX CONFLICT --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> commit 838fb893e1538e93ed8336718fd87a39c357ca6e Author: dawood <mrblackcto@outlook.com> Date: Fri Aug 8 11:31:50 2025 -0400 feat: Migrate Folder class to v2 API (#1317) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) (#1312) * bug(): Removed duplicate pressure output when pressure is specified (#1309) * feat: migrate Folder class to v2 API endpoints * remove unused v1 import, run styling + lint checks * rerun isort + lint * disable pylint duplicate code * fix example files * delete test_folder_tree.py * delete examples, remove comments, update pydantic * fix: run linting + formatting --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit beb2af9a6b31d02fdda59c126d78d4a02d09aa45 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri Aug 8 10:11:15 2025 -0400 Updated the description of the planar_face_tolerance (#1342) (#1343) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 1875e27c7f2efe2addb65b034ca9cfd2a9b2b8e8 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 7 13:42:52 2025 -0400 [FXC-2059] Added planar_face_tolerance translator for legacy mesher and also unified the validation (#1329) (#1337) * [FSC-2006] Disable boundary completness and deletion validation * Fix unit test * [FXC-2059] Added planar_face_tolerance translator for legacy mesher and also unified the validaiton Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit b479e80061ce19b9df2c8d513b39ffdcfa40188f Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 7 13:20:58 2025 -0400 [FXC-2006] Disable boundary completeness and deletion validation (#1330) (#1336) * [FSC-2006] Disable boundary completness and deletion validation * Fix unit test Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit e4ab04ed4b151e1a0f93d5fc7615a04bdce4a17b Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Aug 7 13:19:38 2025 -0400 [FXC-1974] Dry run for run_case() (#1334) (#1335) * [FXC-1974] Dry run for run_case() Fix linting [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) (#1312) * Added for sm and vm generations too * revert change on examples Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit ffbfa61d315d82ba45e66f856a59fd191c4ab683 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue Aug 5 20:54:19 2025 -0400 [Hotfix Main]: Fix the hotfix yaml not being able to handle the anti column (#1315) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json (#1310) (#1312) * bug(): Removed duplicate pressure output when pressure is specified (#1309) * Fix the hotfix yaml not being able to handle the anti column (#1311) * [FXC-2051] Removed unsteady initial_blade_direction check and also removed comments in v1 json * Fix the hotfix yaml not being able to handle the * Fix auto hotfix --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit 529aad34e830e324eeabc36a5fa40ae16d632dcf Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Aug 5 14:31:43 2025 -0400 Added a redunet test.. (#1318) commit 13af5434c96cfbc33070bc88c3cd4d3b46e17ca6 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Aug 5 14:01:01 2025 -0400 Speed up the loading of the entities by using set and also reduce complexity with supplied known hash set (#1316) * Speed up the loading of the entities by using set and also reduce complecity with supplied known hash set * Remove description * Ready * Fix lint commit a652eb2e8ddb37a9c0f89a8769c979b543954455 Author: BenYuan <ben@flexcompute.com> Date: Mon Aug 4 16:10:20 2025 +0000 Update readme commit cba5d97df385eed42b4507a603678663f38d0dc0 Author: BenYuan <ben@flexcompute.com> Date: Wed Jul 30 16:30:49 2025 +0000 Update lock commit 9daf86cdbf0ee3024cb82261abe0c70f73fd2256 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 30 11:53:35 2025 -0400 Bump the version number for 25.7 (#1260) (#1261) commit 607cf42ed63897030f4490ccee72914106d084f5 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 30 10:29:06 2025 -0400 Bump version for 25.6 official release (#1306) commit aba6fa74459c312317878dc00046d70b99f1c725 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 30 10:01:33 2025 -0400 Some improvement on the `flow360 version` command (#1305) * Some improvement * formatting commit bd0d12a2a1fe0bb67883b11caa6841b8caf58249 Author: marcvivesmassana <marc.vives@flexcompute.com> Date: Tue Jul 29 15:48:55 2025 -0400 Example python file for post-processing time-averaged isosurfaces (#1291) * example file for time-averaged isosurfaces * added post-processing * added post-processing * added some text * changed temp folder to local folder * black validation * removed paths for download * removed lines * removed lines * removed lines commit 4860b3a32b4fa1e9316abfebf48983bf082ac583 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Jul 29 11:06:52 2025 -0400 Removed aws_region in the model (#1302) commit 8fc270697754c544cbebf4d163bf6d9a4a3730f8 Author: Angran <angran@flexcompute.com> Date: Mon Jul 28 15:25:42 2025 -0400 bump to 25.5.2b4 (#1300) commit 98171089b9c2710cd7e267d67f4fddb88f4cb74f Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Jul 28 15:10:38 2025 -0400 Added updater for entities being in multiple outputs (#1293) * WIP * Added updater for entities being in multiple outputs * Deduplicate first before removing surfaces --------- Co-authored-by: Angran <angran@flexcompute.com> commit d669f7f1f4d61c9b05c8ff686550d429920a3ebc Author: Angran <angran@flexcompute.com> Date: Mon Jul 28 13:16:25 2025 -0400 Load the storage region from the backend response (#1299) * load the storage region from the backend response * Bump version commit 1da335aa9598f6ac6b23f8afa8c59a50b925b510 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat Jul 26 12:27:00 2025 -0400 [Hotfix Main]: Added version command and better project loading error (#1296) * Added version command and better project loading error (#1295) * Added version command and better project loading error * fixed unit tests * resolved conflict --------- Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> Co-authored-by: BenYuan <ben@flexcompute.com> commit b232ea4bd8c1582ee5634d9f4413abb0a19f796b Author: benflexcompute <ben@flexcompute.com> Date: Fri Jul 25 20:34:06 2025 +0000 Bump version commit 026e2610f23868d522846905920ecbfb57e79cfd Author: BenYuan <ben@flexcompute.com> Date: Fri Jul 25 20:26:09 2025 +0000 Added v1 fallback original error commit ea610f162d45a8a4ea06252b4a4f489bd1f30b02 Author: Angran <angran@flexcompute.com> Date: Fri Jul 25 16:22:40 2025 -0400 Remove get expanded entity list during preprocessing params for translator (#1292) * Remove expanded enttiy list * fix pylint commit aaa647e1049506fe53bf0dafe9bb8078348c0fb0 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Fri Jul 25 16:06:07 2025 -0400 Revert "Removed the fall back of using Flow360Params (#1289)" (#1290) This reverts commit 211ef14aa05c51360c4f93a7ac15307dc931eb82. commit 211ef14aa05c51360c4f93a7ac15307dc931eb82 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Fri Jul 25 13:42:53 2025 -0400 Removed the fall back of using Flow360Params (#1289) * Removed the fall back of using Flow360Params * Fix lint commit 12e8953b7635165fed0a5dd86d9c71c42b53202e Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Fri Jul 25 13:24:15 2025 -0400 Remedy on the GhostCircularPlane existence check (#1288) commit 7748bb4310e6306e3fef6084afdbeb32172db443 Author: Angran <angran@flexcompute.com> Date: Fri Jul 25 12:56:13 2025 -0400 separate get_project_records out (#1287) commit c144e21b06eb7d2f1abe164794dbc40dc1323429 Author: Wiktor <wiktor.krzew@flexcompute.com> Date: Thu Jul 24 21:30:59 2025 +0200 adopted the proposed flex credit example (#1284) * adoptes the proposed flex credit example * black * removed leading spaces commit 1bb4dee35be43f2055b5278109a6adf87d8c19ff Author: Angran <angran@flexcompute.com> Date: Thu Jul 24 13:26:40 2025 -0400 Fix Deserialize function when handling None description (#1286) * Update to_file implementatino to exclude None when dumpping json * Make sure deserialize can handle None description situation * Add fixed to_yaml commit 8ed9998db3cb7726e9440a2d46af4b551c2cddca Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 23 17:15:07 2025 -0400 [SCFD-5015] Projected frontal area support (#1262) * [SCFD-5015] Projected frontal area support * [SCFD-5943] Added translator support for the auto area * fix linter commit b9f86f6930aa463fd1e36f34c6fd6640ad634e45 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 23 17:06:19 2025 -0400 [SCFD-5945] Fix location of the expression validation error and also fix issues caused by converting the value variable to expression. (#1283) * [SCFD-5945] Corrected the location for expression error * proposed fix * Rebase anyway --------- Co-authored-by: Angran Li <angran@flexcompute.com> commit 765d010a4c955304b40b69ed665b983afaac98d0 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 23 09:30:54 2025 -0400 [Expression] Removed postProcessing key in the context and also added support for description (#1280) * [Expression] Removed postProcessing key in the context and also added support for description * isort --------- Co-authored-by: Angran <angran@flexcompute.com> commit 315de8417a75f211b2707597362fbee2688720c3 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Wed Jul 23 09:18:37 2025 -0400 fix(): misuse of .sort() which return None (#1282) * fix(): misuse of .sort() which return None * address comments commit 8f86c7fd4183cbcb0dc41df08c8683d9ff28def7 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Jul 22 17:26:14 2025 -0400 Added legacy tagging for previous UDFs (#1281) Co-authored-by: Angran Li <angran@flexcompute.com> commit e12ab71241d18f9eb49d65c50337259b7d5c2fa2 Author: Wiktor <wiktor.krzew@flexcompute.com> Date: Tue Jul 22 19:40:46 2025 +0200 removed dev from example (#1272) Co-authored-by: Ben <106089368+benflexcompute@users.noreply.github.com> commit a872acbe77add3adccab97115b3a976bf65823c4 Author: Angran <angran@flexcompute.com> Date: Tue Jul 22 13:40:14 2025 -0400 Fix updater of from_mach_reynolds (#1276) * Fix updater of from_mach_reynolds * revert minor change commit 69fea2fdfed2340476d16ff9baef27986b229b06 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Jul 22 11:28:36 2025 -0400 [SCFD-5825] Remove 'p' and 'rho' from iso field (#1275) commit c0183e0b294f7483587c9de5ceec072b6f97a803 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Tue Jul 22 09:41:41 2025 -0400 [SCFD-5640] Disable the same surface being used in more than one Surface/TimeaverageSurfaceOutput (#1270) commit 2f1b228dd90e9dacd9c274df2b975725eb5e1c8f Author: Angran <angran@flexcompute.com> Date: Tue Jul 22 09:36:03 2025 -0400 Move get_flow360_unit_system_liquid out for manifest usage (#1273) commit 6721ee1604457625119c6fb494ef11f41a454655 Author: Angran <angran@flexcompute.com> Date: Mon Jul 21 16:37:06 2025 -0400 [FXC-1886] Fix incorrect dimensional output when liquid op is used (#1265) * Fix unit conversion bug for liquid * 1. Use liquid flow360 unit system for UDF conversion when liquid op is used 2. Fix unit test * Fix compare_values and replace all incorrect checks * Address comments * Also fix other conversion factor --------- Co-authored-by: BenYuan <ben@flexcompute.com> commit b56fbb93271cc9e8c4d854c74b18cdb2368b2a81 Author: Angran <angran@flexcompute.com> Date: Mon Jul 21 16:15:12 2025 -0400 Remove logging to file by default (#1269) * Remove file logger * Try again * try again --------- Co-authored-by: BenYuan <ben@flexcompute.com> commit 4675b2883a353859ad3b8fa8080f1274cb5623d3 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Mon Jul 21 10:56:52 2025 -0400 Resource reuse logic increase robustness (#1267) * WIP * Now fixing UDD * Fixed udd ordering * Need to know how the density works * Ready * READY commit e350b82037bf4813698560c5c96a97ca2f5aa70a Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Fri Jul 18 14:13:14 2025 -0400 Misc expression fixes (#1264) * Added support for front end JSON support when expression is empty/None * Regulated the unit symbols that can be used in the expression * Fixed unit test commit 8e1bf21d79f8ee6cd7513ba51dca7401bac9c425 Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Thu Jul 17 10:50:19 2025 -0400 Added bounding box info in support of inhouse symmetric (#1258) * Added bounding box info * Ready for testing, proper validaiton pending * deploy now, test pending * Fixed unit tests * Ready for testing * fixed unit test * Ready * Bump version due to addition of the global_bounding_box commit 771e21e0c593a7b986847da05847bc68aecb9f9f Author: Angran <angran@flexcompute.com> Date: Fri Jul 11 13:03:44 2025 -0400 Remove ceil and floor functions (#1259) commit a4977ddca41dbe8fc5f8506174bd32441c608a9a Author: Ben <106089368+benflexcompute@users.noreply.github.com> Date: Thu Jul 10 20:08:30 2025 -0400 Enabled power operation on vector variables (#1257) * Enabled power operation on variables * Fix CI --------- Co-authored-by: Angran <angran@flexcompute.com> commit fb5b7376342838cd6a7361919c2540197282e4f1 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Jul 10 13:49:36 2025 -0400 [25.5] Add prefix option to read_all_v1_BETDisks function (#1253) (#1255) * initial implementation * Add index offset option * Address comment Co-authored-by: Angran <angran@flexcompute.com> commit b485c0d7c7f5386e8319149a77c83726ef6235b9 Author: Angran <angran@flexcompute.com> Date: Thu Jul 10 10:33:04 2025 -0400 Add updater for from_mach_reynolds (#1252) commit 047721d3c8368a9d5ad4f65695be4eb1e5fcb253 Author: Angran <angran@flexcompute.com> Date: Wed Jul 9 15:17:28 2025 -0400 Update auto hotfix workflow (#1241) commit 1b81c3b087bb90f9c335b09c6f4c11bd1cb2a14b Author: BenYuan <ben@flexcompute.com> Date: Wed Jul 9 17:40:33 2025 +0000 Add 'main' branch references commit 3e15b6c8de59ed0d48bb06e20df2655626849d3b Author: Maciej Skarysz <83596707+maciej-flexcompute@users.noreply.github.com> Date: Wed Jul 9 19:29:45 2025 +0200 User expression support [POC] (#789) (#841) * User expression support [POC] (#789) * 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 * Make core blueprint package framework-agnostic, add support for partial 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 * Fix Python 3.9 compatibility * Added complete list of usable solver variables (#888) * 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> * Ensure global scope variables are visible within validation service * Fix validation ordering bug * Allow extra fields in variable objects * Improved error messages (#945) * Nested expression support + expression validation endpoints (#946) * 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 (#986) * 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> * Add dependency cycle checking and add non-dimensioned array handling to expression validation service (#1013) Co-authored-by: Andrzej Krupka <akrupka@Andrzejs-MacBook-Pro.local> * Validation service fixes, better error messages (#1030) * 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> * Added unit handling to solver code converter (#1049) * 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> * Expressions fixes, demonstrating E2E capability for user-variable expressions (#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> * Pylint Fix for `expression` branch (#1083) * 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> * Rolled back to python list types, no numpy interop as of now because 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> * Partial expression evaluation, example of a builtin function (#1115) * 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> * Fixed merging * Fixed V1 tests * [FL-729] [FLPY-7] Dimensioned Volume Output (#1012) * 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 * Enabled all output types to use UserVariable (#1148) * Added unit test for project_variables and also simplified the translation 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 (#1157) * Added util function to get the unit from expression * removed print * Added catch for input_params is None * fix lint * Disables vector arithmetics for variables (#1158) * List all solver variables (#1150) * 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> * Separate prepending code to declaration and computation parts (#1165) * 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> * UserVariable as Token and value from context (#1161) * Implementation done, now checking pylint * Now writing the overwrite checker * Ready for self review * Enabled timestepping->step size to be expression too (#1166) * Enabled timestepping->step size to be expression too * Bumped version * Handles NaN desearilization (#1168) * Added pro…
1 parent 03d43b6 commit 479ed89

File tree

61 files changed

+10797
-363
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+10797
-363
lines changed

examples/basic_simulations/meshing/cube_snappy.ipynb

Lines changed: 438 additions & 0 deletions
Large diffs are not rendered by default.

flow360/__init__.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from flow360.component.simulation import units as u
1212
from flow360.component.simulation.entity_operation import Transformation
1313
from flow360.component.simulation.folder import Folder
14+
from flow360.component.simulation.meshing_param import snappy
1415
from flow360.component.simulation.meshing_param.edge_params import (
1516
AngleBasedRefinement,
1617
AspectRatioBasedRefinement,
@@ -24,9 +25,15 @@
2425
PassiveSpacing,
2526
SurfaceRefinement,
2627
)
27-
from flow360.component.simulation.meshing_param.params import (
28+
from flow360.component.simulation.meshing_param.meshing_specs import (
2829
MeshingDefaults,
30+
OctreeSpacing,
31+
VolumeMeshingDefaults,
32+
)
33+
from flow360.component.simulation.meshing_param.params import (
2934
MeshingParams,
35+
ModularMeshingWorkflow,
36+
VolumeMeshingParams,
3037
)
3138
from flow360.component.simulation.meshing_param.volume_params import (
3239
AutomatedFarfield,
@@ -146,6 +153,7 @@
146153
Cylinder,
147154
ImportedSurface,
148155
ReferenceGeometry,
156+
SeedpointVolume,
149157
)
150158
from flow360.component.simulation.run_control.run_control import RunControl
151159
from flow360.component.simulation.run_control.stopping_criterion import (
@@ -314,12 +322,18 @@
314322
"math",
315323
"solution",
316324
"report",
325+
"snappy",
326+
"ModularMeshingWorkflow",
327+
"SeedpointVolume",
328+
"VolumeMeshingParams",
329+
"VolumeMeshingDefaults",
317330
"get_user_variable",
318331
"show_user_variables",
319332
"remove_user_variable",
320333
"StoppingCriterion",
321334
"MovingStatistic",
322335
"ImportedSurface",
336+
"OctreeSpacing",
323337
"RunControl",
324338
]
325339

flow360/component/case.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def to_case(self) -> Case:
296296
@before_submit_only
297297
def submit(self, force_submit: bool = False) -> Case:
298298
"""
299-
submits case to cloud for running
299+
Submits case to cloud for running.
300300
"""
301301
assert self.name
302302
assert self.volume_mesh_id or self.other_case or self.parent_id or self.parent_case

flow360/component/geometry.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ class Geometry(AssetBase):
236236
_entity_info_class = GeometryEntityInfo
237237
_cloud_resource_type_name = "Geometry"
238238

239+
# pylint: disable=redefined-builtin
240+
def __init__(self, id: Union[str, None]):
241+
super().__init__(id)
242+
self.snappy_body_registry = None
243+
239244
@property
240245
def face_group_tag(self):
241246
"getter for face_group_tag"
@@ -263,6 +268,16 @@ def body_group_tag(self):
263268
def body_group_tag(self, new_value: str):
264269
raise SyntaxError("Cannot set body_group_tag, use group_bodies_by_tag() instead.")
265270

271+
@property
272+
def snappy_bodies(self):
273+
"""Getter for the snappy registry."""
274+
if self.snappy_body_registry is None:
275+
raise Flow360ValueError(
276+
"The faces in geometry are not grouped for snappy."
277+
"Please use `group_faces_for_snappy` function to group them first."
278+
)
279+
return self.snappy_body_registry
280+
266281
def get_dynamic_default_settings(self, simulation_dict: dict):
267282
"""Get the default geometry settings from the simulation dict"""
268283

@@ -412,10 +427,25 @@ def group_bodies_by_tag(self, tag_name: str) -> None:
412427
"body", tag_name, self.internal_registry
413428
)
414429

430+
def group_faces_for_snappy(self) -> None:
431+
"""
432+
Group faces according to body::region convention for snappyHexMesh.
433+
"""
434+
# pylint: disable=protected-access,no-member
435+
self.internal_registry = self._entity_info._group_entity_by_tag(
436+
"face", "faceId", self.internal_registry
437+
)
438+
# pylint: disable=protected-access
439+
self.snappy_body_registry = self._entity_info._group_faces_by_snappy_format()
440+
415441
def reset_face_grouping(self) -> None:
416442
"""Reset the face grouping"""
417443
# pylint: disable=protected-access,no-member
418444
self.internal_registry = self._entity_info._reset_grouping("face", self.internal_registry)
445+
if self.snappy_body_registry is not None:
446+
self.snappy_body_registry = self.snappy_body._reset_grouping(
447+
"face", self.snappy_body_registry
448+
)
419449

420450
def reset_edge_grouping(self) -> None:
421451
"""Reset the edge grouping"""

flow360/component/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1462,7 +1462,7 @@ def _run(
14621462
destination_id = draft.run_up_to_target_asset(
14631463
target,
14641464
source_item_type=source_item_type,
1465-
use_beta_mesher=use_beta_mesher,
1465+
use_beta_mesher=params.private_attribute_asset_cache.use_inhouse_mesher,
14661466
use_geometry_AI=use_geometry_AI,
14671467
start_from=start_from,
14681468
)

flow360/component/simulation/entity_info.py

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import pydantic as pd
88

99
from flow360.component.simulation.framework.base_model import Flow360BaseModel
10-
from flow360.component.simulation.framework.entity_registry import EntityRegistry
10+
from flow360.component.simulation.framework.entity_registry import (
11+
EntityRegistry,
12+
SnappyBodyRegistry,
13+
)
1114
from flow360.component.simulation.outputs.output_entities import (
1215
Point,
1316
PointArray,
@@ -24,6 +27,7 @@
2427
GeometryBodyGroup,
2528
GhostCircularPlane,
2629
GhostSphere,
30+
SnappyBody,
2731
Surface,
2832
)
2933
from flow360.component.simulation.unit_system import LengthType
@@ -152,7 +156,7 @@ class GeometryEntityInfo(EntityInfoModel):
152156

153157
def group_in_registry(
154158
self,
155-
entity_type_name: Literal["face", "edge", "body"],
159+
entity_type_name: Literal["face", "edge", "body", "snappy_body"],
156160
attribute_name: str,
157161
registry: EntityRegistry,
158162
) -> EntityRegistry:
@@ -165,15 +169,31 @@ def group_in_registry(
165169
known_frozen_hashes = registry.fast_register(item, known_frozen_hashes)
166170
return registry
167171

172+
def _get_snappy_bodies(self) -> List[SnappyBody]:
173+
174+
snappy_body_mapping = {}
175+
for patch in self.grouped_faces[self.face_attribute_names.index("faceId")]:
176+
name_components = patch.name.split("::")
177+
body_name = name_components[0]
178+
if body_name not in snappy_body_mapping:
179+
snappy_body_mapping[body_name] = []
180+
if patch not in snappy_body_mapping[body_name]:
181+
snappy_body_mapping[body_name].append(patch)
182+
183+
return [
184+
SnappyBody(name=snappy_body, surfaces=body_entities)
185+
for snappy_body, body_entities in snappy_body_mapping.items()
186+
]
187+
168188
def _get_list_of_entities(
169189
self,
170190
attribute_name: Union[str, None] = None,
171-
entity_type_name: Literal["face", "edge", "body"] = None,
172-
) -> Union[List[Surface], List[Edge], List[GeometryBodyGroup]]:
191+
entity_type_name: Literal["face", "edge", "body", "snappy_body"] = None,
192+
) -> Union[List[Surface], List[Edge], List[GeometryBodyGroup], List[SnappyBody]]:
173193
# Validations
174194
if entity_type_name is None:
175195
raise ValueError("Entity type name is required.")
176-
if entity_type_name not in ["face", "edge", "body"]:
196+
if entity_type_name not in ["face", "edge", "body", "snappy_body"]:
177197
raise ValueError(
178198
f"Invalid entity type name, expected 'body, 'face' or 'edge' but got {entity_type_name}."
179199
)
@@ -185,10 +205,12 @@ def _get_list_of_entities(
185205
entity_attribute_names = self.edge_attribute_names
186206
entity_full_list = self.grouped_edges
187207
specified_attribute_name = self.edge_group_tag
188-
else:
208+
elif entity_type_name == "body":
189209
entity_attribute_names = self.body_attribute_names
190210
entity_full_list = self.grouped_bodies
191211
specified_attribute_name = self.body_group_tag
212+
else:
213+
return self._get_snappy_bodies()
192214

193215
# Use the supplied one if not None
194216
if attribute_name is not None:
@@ -358,11 +380,20 @@ def _group_entity_by_tag(
358380

359381
return registry
360382

383+
def _group_faces_by_snappy_format(self):
384+
registry = SnappyBodyRegistry()
385+
386+
registry = self.group_in_registry("snappy_body", attribute_name="faceId", registry=registry)
387+
388+
return registry
389+
390+
@pd.validate_call
361391
def _reset_grouping(
362392
self, entity_type_name: Literal["face", "edge", "body"], registry: EntityRegistry
363393
) -> EntityRegistry:
364394
if entity_type_name == "face":
365395
registry.clear(Surface)
396+
registry.clear(SnappyBody)
366397
with model_attribute_unlock(self, "face_group_tag"):
367398
self.face_group_tag = None
368399
elif entity_type_name == "edge":

flow360/component/simulation/framework/entity_registry.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,37 @@
77
from flow360.component.simulation.framework.base_model import Flow360BaseModel
88
from flow360.component.simulation.framework.entity_base import EntityBase
99
from flow360.component.utils import _naming_pattern_handler
10+
from flow360.exceptions import Flow360ValueError
11+
12+
13+
class StringIndexableList(list):
14+
"""
15+
An extension of a list that allows accessing elements inside it through a string key.
16+
"""
17+
18+
def __getitem__(self, key: Union[str, slice, int]):
19+
if isinstance(key, str):
20+
returned_items = []
21+
for item in self:
22+
try:
23+
item_ret_value = item[key]
24+
except KeyError:
25+
item_ret_value = []
26+
except Exception as e:
27+
raise ValueError(
28+
f"Trying to access something in {item} through string indexing, which is not allowed."
29+
) from e
30+
if isinstance(item_ret_value, list):
31+
returned_items += item_ret_value
32+
else:
33+
returned_items.append(item_ret_value)
34+
if not returned_items:
35+
raise ValueError(
36+
"No entity found in registry for parent entities: "
37+
+ f"{', '.join([f'{entity.name}' for entity in self])} with given name/naming pattern: '{key}'."
38+
)
39+
return returned_items
40+
return super().__getitem__(key)
1041

1142

1243
class EntityRegistryBucket:
@@ -224,3 +255,49 @@ def find_by_asset_id(self, *, entity_id: str, entity_class: type[EntityBase]):
224255
def is_empty(self):
225256
"""Return True if the registry is empty, False otherwise."""
226257
return not self.internal_registry
258+
259+
260+
class SnappyBodyRegistry(EntityRegistry):
261+
"""
262+
Extension of :class:`EntityRegistry` to be used with :class:`SnappyBody`, allows double indexing
263+
for accessing the boundaries under certain :class:`SnappyBody`.
264+
"""
265+
266+
def find_by_naming_pattern(
267+
self, pattern: str, enforce_output_as_list: bool = True, error_when_no_match: bool = False
268+
) -> StringIndexableList[EntityBase]:
269+
"""
270+
Finds all registered entities whose names match a given pattern.
271+
272+
Parameters:
273+
pattern (str): A naming pattern, which can include '*' as a wildcard.
274+
275+
Returns:
276+
List[EntityBase]: A list of entities whose names match the pattern.
277+
"""
278+
matched_entities = StringIndexableList()
279+
regex = _naming_pattern_handler(pattern=pattern)
280+
# pylint: disable=no-member
281+
for entity_list in self.internal_registry.values():
282+
matched_entities.extend(filter(lambda x: regex.match(x.name), entity_list))
283+
284+
if not matched_entities and error_when_no_match is True:
285+
raise ValueError(
286+
f"No entity found in registry with given name/naming pattern: '{pattern}'."
287+
)
288+
if enforce_output_as_list is False and len(matched_entities) == 1:
289+
return matched_entities[0]
290+
291+
return matched_entities
292+
293+
def __getitem__(self, key):
294+
"""
295+
Get the entity by name.
296+
`key` is the name of the entity or the naming pattern if wildcard is used.
297+
"""
298+
if isinstance(key, str) is False:
299+
raise Flow360ValueError(f"Entity naming pattern: {key} is not a string.")
300+
301+
return self.find_by_naming_pattern(
302+
key, enforce_output_as_list=False, error_when_no_match=True
303+
)

flow360/component/simulation/framework/param_utils.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ def register_entity_list(model: Flow360BaseModel, registry: EntityRegistry) -> N
149149
register_entity_list(field, registry)
150150

151151

152+
# pylint: disable=too-many-branches
152153
def _update_entity_full_name(
153154
model: Flow360BaseModel,
154155
target_entity_type: Union[type[_SurfaceEntityBase], type[_VolumeEntityBase]],
@@ -167,20 +168,36 @@ def _update_entity_full_name(
167168
field._update_entity_info_with_metadata(volume_mesh_meta_data)
168169

169170
if isinstance(field, EntityList):
171+
added_entities = []
170172
for entity in field.stored_entities:
171173
if isinstance(entity, target_entity_type):
172174
# pylint: disable=protected-access
173-
entity._update_entity_info_with_metadata(volume_mesh_meta_data)
175+
partial_additions = entity._update_entity_info_with_metadata(
176+
volume_mesh_meta_data
177+
)
178+
if partial_additions is not None:
179+
added_entities.extend(partial_additions)
180+
field.stored_entities.extend(added_entities)
174181

175182
elif isinstance(field, (list, tuple)):
183+
added_entities = []
176184
for item in field:
177185
if isinstance(item, target_entity_type):
178-
item._update_entity_info_with_metadata( # pylint: disable=protected-access
179-
volume_mesh_meta_data
186+
partial_additions = (
187+
item._update_entity_info_with_metadata( # pylint: disable=protected-access
188+
volume_mesh_meta_data
189+
)
180190
)
191+
if partial_additions is not None:
192+
added_entities.extend(partial_additions)
181193
elif isinstance(item, Flow360BaseModel):
182194
_update_entity_full_name(item, target_entity_type, volume_mesh_meta_data)
183195

196+
if isinstance(field, list):
197+
field.extend(added_entities)
198+
if isinstance(field, tuple):
199+
field += tuple(added_entities)
200+
184201
elif isinstance(field, Flow360BaseModel):
185202
_update_entity_full_name(field, target_entity_type, volume_mesh_meta_data)
186203

flow360/component/simulation/framework/updater.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,15 @@ def _to_25_7_7(params_as_dict):
448448
return params_as_dict
449449

450450

451+
def _to_25_8_0(params_as_dict):
452+
# new method of specifying meshing was added, as well as the method discriminator
453+
meshing = params_as_dict.get("meshing")
454+
if meshing:
455+
meshing["type_name"] = "MeshingParams"
456+
457+
return params_as_dict
458+
459+
451460
VERSION_MILESTONES = [
452461
(Flow360Version("24.11.1"), _to_24_11_1),
453462
(Flow360Version("24.11.7"), _to_24_11_7),
@@ -463,6 +472,7 @@ def _to_25_7_7(params_as_dict):
463472
(Flow360Version("25.7.2"), _to_25_7_2),
464473
(Flow360Version("25.7.6"), _to_25_7_6),
465474
(Flow360Version("25.7.7"), _to_25_7_7),
475+
(Flow360Version("25.8.0b4"), _to_25_8_0),
466476
] # A list of the Python API version tuple with there corresponding updaters.
467477

468478

flow360/component/simulation/framework/updater_utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ def compare_dicts(dict1, dict2, atol=1e-15, rtol=1e-10, ignore_keys=None):
3838
dict2_filtered = {k: v for k, v in dict2.items() if k not in ignore_keys}
3939

4040
if dict1_filtered.keys() != dict2_filtered.keys():
41-
print(f"dict keys not equal, dict1 {dict1_filtered.keys()}, dict2 {dict2_filtered.keys()}")
41+
print(
42+
f"dict keys not equal, dict1 {sorted(dict1_filtered.keys())}, dict2 {sorted(dict2_filtered.keys())}"
43+
)
4244
return False
4345

4446
for key in dict1_filtered:

0 commit comments

Comments
 (0)