DeePoly
High-order accuracy Neural Network framework for function approximation and PDE solving
Install / Use
/learn @bfly123/DeePolyREADME
DeePoly - High-Order Accuracy Hybrid Neural Network Framework

Introduction
DeePoly is a universal high-precision mesh-free PDE solving framework. The core concept leverages the nonlinear approximation capabilities of deep neural networks combined with the local high-precision capabilities of traditional polynomial approximation. This novel approach significantly improves the accuracy and convergence limitations of PINN-based methods while addressing the efficiency disadvantages of non-convex optimization, achieving high-precision, high-efficiency universal equation solving capabilities. The framework aims to extend AI4S methods to complex equations and complex engineering problem solving.
Key Features
- Universal PDE Solver: Applicable to all kinds of PDEs
- Mesh-Free Approach: Sampling points can be randomly generated with no logical relationships, suitable for complex geometries
- High Accuracy: Achieves high-order convergence
- Scheme-Free: Handles derivative relationships using automatic differentiation
- Auto Code Generation: Write equations into config.json with no need to change any code
- Computational Efficiency: Performance comparable to traditional finite difference methods
- GPU Acceleration: Supports CPU parallelism and GPU acceleration
- Complex and Discontinuous Problems: Accurately approximates discontinuous and high-gradient functions (preliminary testing)
- Inverse Problems: Solves inverse problems with higher accuracy than PINNs (under development)
Research & Publications: ResearchGate | arXiv
New Version Highlights
Enhanced Nonlinear Equation Solving
Equation Form: $$\frac{\partial U}{\partial t} + L_1(U)+ L_2(U)F(U)+N(U)=0$$
Current Time Integration: Second-order implicit time scheme implemented in onestep_predictor.py (currently the only recommended time format).
Performance Highlights:
- Allen-Cahn Equation: Demonstrates second-order temporal accuracy and high efficiency
- Fast Computation:
AC_equation_100_0.1case completes in only 10 seconds - Tested Applications: Allen-Cahn, KdV, and Burgers equations successfully validated
- Future Development: Navier-Stokes equations and other 2D multi-equation systems in progress
Computational Results:
Allen-Cahn equation solution at final time with only 100 fully random points and dt=0.1 large time step
Unified Codebase Maintenance & Organization
- Unified Configuration System:
BasePDEConfigprovides consistenteq={L1,L2,F,N,S}semantics across all solvers - Factory Pattern Architecture: Single entry point with consistent solver selection and workflow management
- Dimension Standardization: Consistent tensor operations and shape management throughout the codebase
Boundary Condition Unification
- Unified Processing: Consistent boundary condition specification and handling across all solver types
- Simplified Periodic Boundaries: Unified paired constraint implementation replacing complex multi-type systems
-
Boundary Condition Types
Unified boundary condition processing supports:
- Dirichlet:
"type": "dirichlet"with value specification - Neumann:
"type": "neumann"with normal derivative values - Robin:
"type": "robin"with mixed boundary conditions - Periodic:
"type": "periodic"with automatic pairing
🔧 Intelligent Code Generation & Maintenance
- Automatic Code Generation:
auto_spotter.pyautomatically generates/updates PDE-specific code segments - Consistency Verification: Signature checking and automatic regeneration of outdated code
- Configuration-Driven: Direct code generation from
config.jsonspecifications
Quick Start
Installation Requirements
# Core dependencies
pip install numpy scipy torch matplotlib
# Optional GPU acceleration
pip install cupy-cuda12x # For CUDA 12.x
# Development environment
conda activate your_ml_environment
Basic Usage
Time PDE (Allen-Cahn Equation)
python src/main_solver.py --case_path cases/Time_pde_cases/Allen_Cahn/AC_equation_100_0.1
Linear PDE (Poisson 2D)
python src/main_solver.py --case_path cases/linear_pde_cases/poisson_2d_sinpixsinpiy
Function Fitting (2D Complex Function)
python src/main_solver.py --case_path cases/func_fitting_cases/case_2d
Configuration Format
Unified Configuration System
DeePoly uses a standardized eq={L1,L2,F,N,S} format across all problem types:
Linear PDE Example (Poisson)
{
"problem_type": "linear_pde",
"eq": {
"L1": ["diff(u,x,2) + diff(u,y,2)"],
"L2": ["0"],
"F": ["0"],
"N": ["0"],
"S": ["-sin(pi*x)*sin(pi*y)"]
},
"vars_list": ["u"],
"spatial_vars": ["x", "y"],
"x_domain": [[0,1], [0,1]],
"n_segments": [1, 1],
"poly_degree": [10, 10],
"boundary_conditions": [
{
"type": "dirichlet",
"region": "left",
"value": "1/2/(pi)**2*sin(pi*x)*sin(pi*y)",
"points": 100
}
],
"auto_code": false
}
Time PDE Example (KdV)
{
"problem_type": "time_pde",
"eq": {
"L1": ["1.0*diff(u,x,3)"], // Implicit stiff terms
"L2": ["diff(u,x)"], // Semi-implicit linear terms
"F": ["u"], // Functions for L2⊙F coupling
"N": [] // Explicit nonlinear terms
},
"vars_list": ["u"],
"spatial_vars": ["x"],
"x_domain": [[-20, 20]],
"T": 40.0,
"dt": 0.1,
"time_scheme": "onestep_predictor",
"Initial_conditions": [
{"var": "u", "value": "cos(pi*x/20)", "points": 1000}
],
"boundary_conditions": [
{"type": "periodic", "region": "left", "pair_with": "right", "points": 1}
],
"auto_code": false
}
Source Term and Reference Solution Support
DeePoly supports multiple formats for source terms and reference solutions:
{
"eq": {
"S": ["sin(pi*x)*cos(pi*y)"] // Mathematical expression
// OR
"S": "data_generate.py" // Python file reference
},
"reference_solution": "analytical_solution", // Mathematical expression
// OR
"reference_solution": "data_generate.py", // Python function
// OR
"reference_solution": "reference_data.mat" // MATLAB data file
}
Available Examples
Linear PDE Cases
poisson_2d_sinpixsinpiy: 2D Poisson equation with analytical solutiontest_file_source: Demonstrates source term loading from files
Time PDE Cases
Allen-Cahn Equation (Allen_Cahn/AC_equation_100_0.1)
Allen-Cahn equation with second-order time integration - recommended example showing fast 10-second computation
Other Time PDE Examples
KDV_equation: Korteweg-de Vries equationBurgers: Burgers equation
Note: All time PDE examples use the second-order predictor-corrector time integration scheme.
Function Fitting Cases
case_2d: Complex 2D multi-modal function approximationdiscontinuous_case1: Challenging discontinuous function handling
Version History
- v0.1 (Beta): Initial release with basic function approximation and PDE solving
- v0.2: High-accuracy linear PDE solving, auto-code generation, English documentation
- v0.3 (Current): Enhanced nonlinear solving, unified system architecture, advanced time integration, comprehensive boundary condition unification
Next Version Roadmap
- 2D Time-Dependent Nonlinear PDEs: Complete implementation of two-dimensional time-dependent nonlinear PDE problem solving and steady-state problems
- Pseudo-Time Stepping: Global solving with pseudo-time stepping (removing time scheme precision limitations on solution accuracy)
Future Development
- Complex Boundary Conditions: Advanced internal and external boundary conditions (leveraging mesh-free method advantages)
- Discontinuous Problem Enhancement: Improved accuracy for discontinuous problems and compressible fluid dynamics problem solving。
Citation
If you use DeePoly in your research, please cite:
@article{liu2025deepoly, title={DeePoly: A High-Order Accuracy Scientific Machine Learning Framework for Function Approximation and Solving PDEs}, author={Liu, Li and Yong, Heng}, year={2025} }
Test Cases & Validation Results
The following test cases demonstrate DeePoly's capabilities across function approximation and PDE solving:
Function Approximation Cases
1. 1D Sine Function
Case Directory: func_fitting_cases/test_sin
Target Function: f(x) = sin(2πx) + 0.5cos(4πx)
Problem Type: Baseline function approximation test case
Results
Training Data Analysis

Test Data Analysis

Performance Metrics
| Component | Time Cost | |-----------|-----------| | Scoper/DNN | 7.2049 seconds | | Sniper | 0.1630 seconds | | Total | 7.3679 seconds |
Additional Information
- Error Analysis: Detailed metrics available in
cases/func_fitting_cases/test_sin/results/error_analysis_report.txt - Configuration: See
cases/func_fitting_cases/test_sin/config.json
2. Complex 2D Function
Case Directory: func_fitting_cases/case_2d
Target Function: f(x,y) = Multi-Gaussian peaks + trigonometric + polynomial terms on [-3,3]²
Problem Type: Complex multi-modal function approximation
Results
Training Data Analysis 