# CelerisLab/__init__.py
"""
CelerisLab: GPU-Accelerated Computational Physics Simulation Library

A modular framework for GPU-accelerated physics simulations including:
- Lattice Boltzmann Method (LBM) for fluid dynamics
- Future: Finite Element Method (FEM), Smoothed Particle Hydrodynamics (SPH), etc.

Usage:
    # Direct import of main classes
    from CelerisLab import FlowField
    
    # Module-specific imports
    from CelerisLab.lbm import FlowField
    
    # Namespace style
    import CelerisLab as cl
    solver = cl.lbm.FlowField(...)
"""

__version__ = '0.2.0'

# Import submodules
from . import common
from . import cuda
from . import lbm

# Import commonly used utilities for convenience
from .common import utils

# Attempt to import main classes for direct access
try:
    from .lbm import FlowField
    __all__ = ['lbm', 'common', 'cuda', 'utils', 'FlowField', '__version__']
except ImportError as e:
    # PyCUDA not available, only submodules accessible
    import warnings
    warnings.warn(
        f"FlowField not available: {e}. "
        "Install pycuda to use the full CelerisLab functionality. "
        "Utils and other modules are still accessible.",
        ImportWarning
    )
    __all__ = ['lbm', 'common', 'cuda', 'utils', '__version__']
