Skip to content

GeCao/taichi-BEM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Taichi-BEM

----------Analytical(Left)----Solved(Middle)----Difference(Right)

Laplace Equation (2D)

cd demo
python demo_Laplace.py --dim 2 --boundary Dirichlet --object disk --GaussQR 5 --scope Interior

Laplace Equation (3D)

cd demo
python demo_Laplace.py --dim 3 --boundary Dirichlet --object sphere --GaussQR 5 --scope Interior

Helmholtz Equation (3D)

cd demo
python demo_Helmholtz.py --dim 3 --boundary Dirichlet --object stanford_bunny --GaussQR 5 --scope Interior

Helmholtz Transmission Equation

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

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.txt

cd 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 and reach function set_mixed_bvp, 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
    • You can add your own .obj files into /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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages