Skip to content

ChengAo21/sr_rough_ks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š Project Overview & Corresponding Publication

This repository contains the source code and results for the research work presented in our published article: "A Drag Model for Rough Surfaces Learned Using Feature Importance-informed Symbolic Regression" (Journal of Fluids Engineering, 2026).

For full details, please refer to our article: DOI

Complete mathematical principles and formula derivations of the PCE can be found in Section 4.4 and Appendix C of our article.

If you find this repository useful, please consider giving a star ⭐ and cite our paper.

@article{cheng2026drag,
  title={A Drag Model for Rough Surfaces Learned Using Feature Importance-informed Symbolic Regression},
  author={Cheng, Ao and Zhou, Zhideng and Yang, Xiaolei and He, Guo-Wei},
  journal={Journal of Fluids Engineering},
  pages={1-44},
  year={2026},
  month={01},
  doi={10.1115/1.4070838},
}

🌟 Project Structure

β”œβ”€β”€ code_files            # Code for Polynomial Chaos Expansion
    β”œβ”€β”€ pce_core.py         # PolyChaos Class
    β”œβ”€β”€ pce_utils.py        # Helper Functions
    └── run_analysis.py     # User Model, Parameters, and Execution
└── results
    β”œβ”€β”€ csvFiles          # Roughness statistics and PySR searching results
    β”œβ”€β”€ SR_train          # Symbolic training configurations
    β”œβ”€β”€ subFunc_plot      # Visualization of the sub-functions
    └── loss_plot         # Symbolic model loss visualization

πŸš€ Polynomial Chaos Expansion (PCE)

Core steps for applying PCE to build a surrogate model, quantify uncertainty, and perform global sensitivity analysis are summarized below.

β”œβ”€β”€ PCE_Implementation       
β”‚   β”œβ”€β”€ PolyChaos            
β”‚   β”‚   β”œβ”€β”€ __init__         # Initialize dimension, order, distributions, and parameters
β”‚   β”‚   β”œβ”€β”€ create_instance  # Generate multi-index set and the multivariate polynomial basis functions
β”‚   β”‚   β”œβ”€β”€ generate_multi_index # Generate the total-order multi-index set
β”‚   β”‚   β”œβ”€β”€ norm_factor      # Compute the normalization factor for orthogonal polynomials
β”‚   β”‚   β”œβ”€β”€ create_latin_hypercube_samples # Generate input samples using Latin Hypercube Sampling (LHS)
β”‚   β”‚   β”œβ”€β”€ regression_fit   # Fit PCE coefficients using Least-Squares Regression (LSR)
β”‚   β”‚   β”œβ”€β”€ norm_fit         # Compute statistical moments (mean and variance)
β”‚   β”‚   β”œβ”€β”€ sobol            # Calculate Sobol Sensitivity Indices
β”‚   β”‚   └── evaluate         # Evaluate the PCE model at given input points

β”‚   └── main                 # Execution Flow
β”‚       β”œβ”€β”€ Initialization   
β”‚       β”œβ”€β”€ Sampling         # Generate LHS points
β”‚       β”œβ”€β”€ Evaluate_Model   # Evaluate Your Model at the LHS points
β”‚       β”œβ”€β”€ Fit_PCE          # Determine PCE coefficients
β”‚       β”œβ”€β”€ Compute_Stats    # Compute mu and sigma
β”‚       β”œβ”€β”€ Validate_PCE     # Validate the PCE on your own data points
β”‚       └── Sensitivity      # Compute Sobol sensitivity indices

πŸ“– Physical Interpretability of Model

Visualization of the sub-functions and their pairwise interactions

schematic

About

Sensitivity analysis of the drag model using the Polynomial Chaos Expansion

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published