Skip to content

Latest commit

 

History

History
138 lines (126 loc) · 7.03 KB

File metadata and controls

138 lines (126 loc) · 7.03 KB

Changelog

Release 2.0.0 (Enhancement/Split Branch)

Major Refactoring & Architecture Changes

  • Complete package restructure with new modular architecture
    • Split core functionality into meshql/core/ (ql.py, selector.py, transaction.py)
    • Organized GMSH operations into meshql/gmsh/ module
    • Consolidated mesh operations in meshql/mesh/ module
    • Enhanced preprocessing capabilities in meshql/preprocessing/
  • Migrated from setup.py to modern pyproject.toml build system
  • Added comprehensive Makefile for build and installation management

New Features

  • GeometryQL.gmsh() Static Method: New entry point for creating GMSH-based geometries
  • compute_mesh() Method: Enhanced mesh generation with integrated transactions and preprocessing
  • Mesh Marker Support: Load and export meshes with physical group markers
    • Discrete entity creation for marker elements
    • Automatic physical group assignment from markers
    • Marker exclusion from main mesh when loading
  • Enhanced Mesh Loading: Direct import of meshly meshes into GMSH
  • Ratio-based Geometry Splitting: Split geometries using ratio parameters
  • Advanced Split Operations:
    • from_plane(): Split by plane with angle specification
    • from_ratios(): Split by ratio values along edges
    • from_normals(): Split by normal vectors
    • from_anchor(): Split from anchor points
    • from_edge(): Split from specific edges
    • from_lines(): Split using line definitions
  • Python Notebook Visualizer: Improved in-notebook mesh visualization with pythreejs
  • print_val() Method: Debug helper to print Workplane values in GeometryQL and Split

Improvements

  • Performance Optimizations:
    • Replaced CQCache utility with new CacheService implementation
    • Direct workplane handling in Split class (no GeometryQL dependency)
    • Improved entity selection and filtering logic
    • Enhanced checksum generation for geometry tracking
    • Multi-level caching system for split operations and region groups
      • BREP caching for split workplane geometry (77% faster on subsequent runs)
      • Region group caching with deterministic checksums across sessions
      • Automatic cache invalidation and updating for nested splits
      • CacheService.clear_cache() method for cache management
  • Refactored Entity Management:
    • Replaced CQEntityContext with CQEntityMapper for better clarity
    • Introduced GeometryQLContext class with enhanced properties
    • Improved selection logic for complex entity filtering
  • Enhanced Preprocessing:
    • Flexible preprocessing mechanism using (Type, callback) tuples
    • Split class works independently with workplanes
    • Better region group handling and visualization
  • Mesh Visualization Improvements:
    • Refactored visualize_mesh function for better mesh extraction
    • Enhanced wireframe rendering for various mesh types
    • Simplified surface and volume mesh creation
    • Removed unused coordinate display and buffer mesh code
  • Transaction System:
    • Migrated from Python dataclasses to Pydantic models
    • Improved transaction context handling
    • Better lookup mechanism for previous transactions
    • Updated import structure for cleaner organization

Bug Fixes

  • Fixed interior/exterior edge classification bug
  • Fixed issue with multiple physical groups having the same name
  • Corrected wire orientation to ensure consistent winding
  • Resolved split operation bugs for 2D geometries
  • Fixed from_ratio() to work correctly with reversed wires
  • Added None check for ql in end() method
  • Fixed visualizer compatibility with meshly

Testing & Documentation

  • Comprehensive unit test suite added:
    • tests/selector_test.py: IndexSelector, FilterSelector, GroupSelector, Selection tests
    • tests/shapes_test.py: NACA airfoil, circle generation, sampling tests
    • tests/split_test.py: Split operation tests
    • tests/cq_utils_test.py: CadQuery utility function tests
    • tests/entity_test.py: Entity management tests
    • tests/mesh_test.py: Mesh loading and conversion tests
    • tests/integration_test.py: End-to-end workflow tests
  • Updated example notebooks:
    • cube.ipynb: Structured meshing with boundary layers
    • naca0012.ipynb: Airfoil meshing examples
    • inviscid_wedge.ipynb: Inviscid flow setup
    • turbo.ipynb: Turbomachinery with STEP import
    • progression.ipynb: Mesh refinement examples
  • Added visualize_example.py for standalone visualization demos
  • Created scripts/gmsh_host_client.py for opening and watching .msh files

Dependencies

  • Updated to meshly==1.3.0a0
  • Updated to su2fmt@2.0.0
  • Added pythreejs==2.4.2 for notebook visualization
  • Maintained Python 3.8+ compatibility

Removed/Deprecated

  • Removed setup.py in favor of pyproject.toml
  • Removed requirements_dev.txt
  • Removed deprecated exporters.py and importers.py
  • Consolidated functionality into loaders.py
  • Removed old transaction structure from meshql/transactions/
  • Removed standalone entity.py, transaction.py, and ql.py from root meshql/

Release 1.0.0

  • Add su2fmt 3D mesh output
  • Add 3D import and export support
  • Add proper filtering for specific faces based on diffs (fromTagged support)
  • Add 3D boundary layer support
  • Add plot visualization for entities including physical groups
  • Convert CQ objects to gmsh OCC
  • Define point sizes from selectors
  • Add multi group tagging in 1 command
  • Allow multiple solids to be split
  • Add batch operations for things such as transfinite fields
  • Fix interior faces for multi-solid meshes
  • All in one function that will automatically do structured meshing
    • Adjust the refinement by interior edges
    • Structured boundary layer, Adjust refinement based on high level parms (wall height, etc.)
    • Structured boundary layer for 2D based on num layers
    • Handle >4 edge transfinite faces (get this from partitions) - pretty much pass in edge corners of solid
      • Group edges and set corners and node counts
      • Group faces and set corners
    • Split faces based on partitions, make sure interior entities are updates accordingly
  • Preprocessing to auto slice into transfinite faces
    • Auto slice into transfinite faces
    • Applying preprocessing to faces (should work but make sure what's the problem)
    • Caching for slice to be faster after preprocessing
    • Custom cell counts for different transfinite regions
    • Solve issue with boundary condtion on shared edge solids
  • For manual setTransiniteFace auto set cell count to all the edges same way as initial auto
  • Documentation and testing

Nice to haves

  • Automatically set the group angle
  • Make visualizer auto-scale initial view and color coded better