Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/GeCao/taichi-BEM
https://github.com/GeCao/taichi-BEM
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/GeCao/taichi-BEM
- Owner: GeCao
- Created: 2022-11-24T01:13:19.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-29T18:44:05.000Z (almost 2 years ago)
- Last Synced: 2024-08-02T11:23:57.829Z (3 months ago)
- Language: Python
- Size: 2.63 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-taichi - Taichi-BEM - A Taichi BEM solver. (Applications / **Simulation**)
README
# Taichi-BEM
### ----------Analytical(Left)----Solved(Middle)----Difference(Right)
### Laplace Equation (2D)
```command
cd demo
python demo_Laplace.py --dim 2 --boundary Dirichlet --object disk --GaussQR 5 --scope Interior
```### Laplace Equation (3D)
```command
cd demo
python demo_Laplace.py --dim 3 --boundary Dirichlet --object sphere --GaussQR 5 --scope Interior
```### Helmholtz Equation (3D)
```command
cd demo
python demo_Helmholtz.py --dim 3 --boundary Dirichlet --object stanford_bunny --GaussQR 5 --scope Interior
```### Helmholtz Transmission Equation
```command
cd demo
python demo_Helmholtz_Transmission.py --dim 3 --boundary Full --object sphere --GaussQR 5
```### Norm analysis (Still Working on! π¨βπ»)
* The sample step of wave number is 1/30, which implies for wavenumbers between [16, 18], 60 points are sampled.
* Precious matters, float64 shows more stability than float32 for operator AI (Somehow not very obvious for operator AII).### The norm of A & Augmented A of sphere
### As well as the norm of A & Augmented A of stanford bunny
### How to run the code
```bash
cd taichi-BEM
conda create -n ti-BEM python=3.8
conda activate ti-BEM
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
pip install -r requirements.txtcd demo
python demo_Laplace.py --boundary Dirichlet --dim 3
python demo_Helmholtz.py --boundary Neumann --k 3 --dim 3 --object stanford_bunny
python demo_Helmholtz_Transmission.py --boundary Full --k 5 --dim 3
```### Parameters
- boundary := [βDirichletβ, 'Neumann', 'Mix', 'Full']
- Dirichlet: If You want to set Dirichlet boundary and solve Neumann charges, pick this.
- Neumann: If You want to set Neumann boundary and solve Dirichlet charges, pick this.
- Mix: If You want to set Dirichlet boundary and solve Neumann charges for y > 0, and otherwise for y <= 0, pick this. If you want to self define your design of Dirichlet region and Neumann region, go to file [mesh_manager.py](src/managers/mesh_manager.py) and reach function [set_mixed_bvp](src/managers/mesh_manager.py), you might handle it with your own preference.
- Full: This is only useful for Transmission problem, Both Neumann/Dirichlet boundary will be applied, and the corresponding boundary will be solved for interior.
- scope := ['Interior', 'Exterior']
- Interior: Solve Interior problem, not applicable for transmission problem
- Exterior: Solve Exterior problem, not applicable for transmission problem
- kernel := ['Laplace', 'Helmholtz']
- Laplace: Solve Laplace equation
- Helmholtz: Solve Helmholtz equation
- object := ['sphere', 'cube']
- sphere: an obj file will be read into our scope by [sphere.obj](assets/sphere.obj)
- You can add your own .obj files into [/assets](assets/) directory and use the obj file name as your own mesh object
- show_wireframe := [True, False]
- This parameter defines if wireframe is shown in final GUI### Trouble Shooting