An open API service indexing awesome lists of open source software.

https://github.com/samson-mano/spherical_harmonics

Spherical Harmonics project is dedicated to the study of special functions defined on the surface of a sphere. This tool facilitates visualization of mode shapes and enables the analysis of pulse and harmonic responses on the sphere's surface to external loads. Developed using C++17/ modern OpenGL
https://github.com/samson-mano/spherical_harmonics

eigenvalues eigenvectors finite-element-analysis glew imgui legendre legendre-polynomials mode-shapes modern-opengl modern-opengl-functions opengl spherical-harmonics

Last synced: 3 months ago
JSON representation

Spherical Harmonics project is dedicated to the study of special functions defined on the surface of a sphere. This tool facilitates visualization of mode shapes and enables the analysis of pulse and harmonic responses on the sphere's surface to external loads. Developed using C++17/ modern OpenGL

Awesome Lists containing this project

README

        

# Spherical Harmonics

## Overview
The **Spherical Harmonics** project is designed to study the mode shapes and behavior of 3D spherical shells using the **Legendre Polynomial Mode Shape Method**. This project uses modern OpenGL (GLSL) to render the sphere and visualize various spherical harmonic mode shapes in real time, allowing users to explore the behavior of spherical shells with ease.

### Key Features
- **Solve Spherical Harmonics**: Compute spherical harmonic modes for thin 3D shells.
- **Mode Shape Visualization**: Visualize the mode shapes in a 3D interactive interface.
- **Pulse Loading Response (WIP)**: Analyze the 3D shell's response to pulse loading (currently in progress).
- **Efficient Rendering**: The project uses OpenGL for fast and efficient rendering of spherical modes.

## User Interface (UI) Controls

The user interface offers various control options for easy interaction:

- **Pan**: Hold `Ctrl` and right-click drag to pan.
- **Rotate**: Hold `Ctrl` and left-click drag to rotate.
- **Zoom In/Out**: Hold `Ctrl` and scroll the mouse wheel to zoom.
- **Zoom Fit**: Press `Ctrl + F` to fit the view to the screen.
- **Selection**: Hold `Shift` and left drag to select objects.
- **Deselection**: Hold `Shift` and right drag to deselect objects.

These controls allow smooth interaction with the 3D visualizations.

---

## Visualizing Mode Shape Results

The following are some mode shape visualizations generated by the project:

| Mode Number | Visualization |
|-------------|----------------|
| **Mode 6** | ![Mode 6](Spherical_harmonics/Images/mode6_gif.gif) |
| **Mode 9** | ![Mode 9](Spherical_harmonics/Images/mode9_gif.gif) |
| **Mode 11** | ![Mode 11](Spherical_harmonics/Images/mode11_gif.gif) |
| **Mode 12** | ![Mode 12](Spherical_harmonics/Images/mode12_gif.gif) |
| **Mode 41** | ![Mode 41](Spherical_harmonics/Images/mode41_gif.gif) |
| **Mode 70** | ![Mode 70](Spherical_harmonics/Images/mode70_gif.gif) |

---

## How to Use the Project

### Prerequisites
Ensure you have the following libraries installed:
- **OpenGL**
- **GLEW**
- **GLFW** (or another windowing library)
- **ImGui** (for the graphical user interface)

### Setup Instructions

1. **Download the Portable Version**:
Go to the [Releases](link_to_releases) page to download the portable version of the project.

2. **Clone or Download the Repository**:
To clone the repository, use the following command:
```bash
git clone https://github.com/Samson-Mano/Spherical_harmonics.git

Alternatively, download the repository as a zip file.

3. **Open the Project in Your IDE**:
Open the solution file in your preferred C++ IDE (e.g., Visual Studio, CLion).

4. **Include Necessary Libraries**:
Ensure the following libraries are correctly linked in your project environment:
OpenGL (with GLEW/GLFW)
ImGui

5. **Build and Run the Project**:
After setting up the libraries and environment, build the project to generate the executable. Once built, you can run the application to explore the spherical harmonic mode shapes.

## Contributions

This project is open for contributions, and there are several areas where improvements can be made:

- **Transparency Issue**: The current transparency routine for the contour plots is not functioning properly, resulting in fully opaque visualizations. Contributions are welcome to improve this feature.
- **Pulse Loading Analysis**: The feature to evaluate the response of the spherical shell to pulse loading is a work in progress.

### How to Contribute:
- Fork the repository and submit a pull request.
- Open an [issue](https://github.com/Samson-Mano/Spherical_harmonics/issues) to report bugs or suggest features.

---

## License

This project is licensed under the **MIT License**. See the [LICENSE](/LICENSE.txt) file for more details.

---

## Acknowledgments

Thank you for using the **Spherical Harmonics** project! Hope this tool helps you explore and understand spherical harmonic mode shapes and their applications.

## Screenshots

![Mode 1,4,6](Spherical_harmonics/Images/img_mode_1_4_6.png)

![Mode 9,10,11,12](Spherical_harmonics/Images/img_mode_9_10_11_12.png)

![Mode 16,18,19,20,21](Spherical_harmonics/Images/img_mode_16_18_19_20_21.png)

![Mode 25,26,27,28,29,30](Spherical_harmonics/Images/img_mode_25_26_27_28_29_30.png)

![Mode 204,205,206](Spherical_harmonics/Images/img_mode_204_205_206.png)