geodynamics / pylith

PyLith is a finite element code for the solution of dynamic and quasi-static tectonic deformation problems.
Other
153 stars 96 forks source link

Add infinite boundary condition using spectral boundary integral equation method #59

Open maxiaodage opened 6 years ago

maxiaodage commented 6 years ago

Issue Goal: Implement the Spectral Boundary Integral Equation (SBIE) method as a new feature in Pylith for an infinite boundary condition.

Advantage:

  1. The SBIE boundary is an accurate infinite boundary, no wave reflection.
  2. The SBIE boundary could have additional applied traction
  3. The SBEI boundary could truncation the FEM domain in an accurate way, so the computational resource could be more focusing in resolving the physical process near the fault zone.

Short term goal:

  1. Implement the serial SBIE method in Pylith for 2D problem.
  2. Validate the serial SBIE method in Pylith with SCEC benchmark TPV205.
  3. Implement the parallel SBIE code in Pylith for 2D problem.

Long term goal:

  1. Extending the SBIE method to 3D for 3D problem in Pylith
  2. Cycle simulation using SBIE method for 2D problem in Pylith
maxiaodage commented 6 years ago

Fork repository : git@github.com:maxiaodage/pylith.git Development status:

  1. create DirichletBIE.hh, DirichletBIE.cc
  2. Inside DirichletBIE create three functions : _computeStress _computeSBIEsollution _setsolutionfromSBIEsolution
  3. create unit test for 'DirichletBIE' , TestDirichletBIE.cc, TestDirichletBIE.hh,TestDirchletBIE_Cases
  4. TestDirchletBIE_cases only 1 test case for Quad1 The test is using the 'quad_small.mesh' , with _bulk_modulus = 5/3, _shear_modulus = 1 , with analytical function u_x= x, u_y = y, in plane strain condition, the stress should be stress_xx =4, stress_yy=4, stress_zz=2,stress_xy = 0.
  5. inside TestDirichletBIE create the test for _computeStress as testcomputeStress() , the test didn't pass, and the stress seems to return zero values, didn't pass the test. need help from Matt@knepley.
maxiaodage commented 6 years ago

To do list:

  1. Get the _computestress test pass
  2. Get the _computeSBIEsolution test pass
  3. Get the '_setsolutionfromSBIEsolution' test pass
  4. Create python part for DiricheltBIE
  5. Pass the pytest
  6. Run the full scale test
  7. Run the SCEC benchmark problem TPV205