Miscellaneous

Research interests

This page is designed for clarifying my research interests among several topics.

  • Waves in Complex Media

    • Attenuation: Phenomenological Models (Fractional and Generalized Mechanical Models, Casuality-imposed Power-law Models), Acoustic–Electromagnetic Analogy;

    • Poroelasticity: Biot Theory, Wave-induced Fluid Flow (WIFF), Grain‐Shearing, Fractional Equivalence, DARS;

    • Anisotropy;

    • Numerical Methods: Fractional Laplacian Solver (PSM, RBF, IGA), Optimized Variable-Grid FD, FEM.

  • Geophysical Inversion and Imaging

    • Attenuation Estimation: Biomedical tomography, Seismic tomography;

    • Seismic Imaging: Explicit Stabilization, Defraction Imaging, Multiples Imaging;

    • Measurement-oriented Imaging: Borehole Seismic, Earthquakes, Microseismic, Ambient Noise, DAS;

    • Nonlinear Inverse Problems: Multiparameters FWI, Constitutive Relation Inversion;

    • Dynamic Seismic Inversion: Multi-physics Coupling (Wave physics, Rock physics and Fluid dynamics), Electroseismic Effect.

  • Seismic Signal Processing

    • Linear Inverse Problem: Seismic Attenuation Compensation, Deconvolution, Seismic Denoising and Reconstruction;

    • Regularization: Functional analytic regularization, Statistical regularization (Beysian Inference);

    • (Non)convex Optimization: Proximal Splitting (Split Bregman, ADMM, TOS), Distributed Optimization, Nonconvex optimization (\(L_{1-2}\), \(L_p\), IPS, GMC penalty);

    • Compressed Sensing: RIP, Sparse Representation, Sparse Encoded Experiments.

  • High Proformance Computing

    • Parallel Programming: OpenMP, MPI, CUDA;

    • Parallel Strategies: Spectral Domain Decomposition, Dynamic Parallelism.

  • Deep Learning

    • Data-driven deep learning: Automatic Denoising and Picking, Automatic Seismic Interpretation;

    • Physics-based deep learning: Physics-informed Neural Networks, Physics Constrained Learning.

Softwares on Linux

  1. Git

    1. Install Git on Linux using sudo apt install git-all.

    2. Use git init to create a new git repository.

    3. Create a working copy of a local repository by running the command git clone /path/to/repository, when using a remote server, your command will be git clone username@host:/path/to/repository.

    4. Your local repository consists of three “trees” maintained by git. the first one is your Working Directory which holds the actual files, the second one is the Index which acts as a staging area and finally the HEAD which points to the last commit you've made.

    5. You can propose changes (add it to the Index) using git add <filename> (you’ll probably want to create a .gitignore file right away, to indicate all of the files you don’t want to track.), and actually commit these changes use git commit -m “Commit message”. Now the file is committed to the HEAD, but not in your remote repository yet.

    6. Your changes are now in the HEAD of your local working copy. To send those changes to your remote repository, execute git push origin main (Change main to whatever branch you want to push your changes to). If you have not cloned an existing repository and want to connect your repository to a remote server, you need to add it with git remote add origin <server>. Now you are able to push your changes to the selected remote server.

    7. A quick example:
      echo “# A quick example” >> README.md
      git init
      git add README.md
      git commit -m “first commit”
      git branch -M main
      git remote add origin https://github.com/myname/example.git
      git push -u origin main

    8. Use GitHub Pages to host a website about our project directly from a GitHub repository.

  1. Anaconda2 with the following libraries:

    1. Obspy

    2. TensorFlow2

    3. PyTorch

  2. Matlab with the following toolboxes:

    1. crewes

    2. CurveLab

    3. k-Wave

    4. segymat

    5. SeismicLab

    6. chebfun

  3. MPICH3

  4. EIGEN3

  5. FFTW3

  6. Madagascar

  7. SeismicUnix

  8. Texlive2017 + TexMaker

  9. Nvidia Driver + CUDA10.0

  10. Sublime

Softwares on Mac

  1. Anaconda2

  2. Texlive2018 + TexMaker

  3. Madagascar

  4. SeismicUnix

  5. Sublime

Website Generators

Static site generators focus on one main task: generate a complete static HTML-based site. This result does not rely on databases or other external data sources and therewith avoid any server-side processing when accessing the website.

In comparison to dynamic websites, static sites have many advantages and therefore are becoming more and more popular. Static sites can be served quickly, they offer a great extend of simplicity and comes with security benefits out of the box. Furthermore it’s easy to deploy and host static sites as there are no special requirements which needs to be covered by your hosting provider.

Here I list some static site generators that I have ever used.

  1. Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again. See an example academic website powered by Hugo with an Academic theme.

  2. jekyll is a blog-aware static site generator in Ruby.

  3. Hexo is a fast, simple and powerful blog framework. You write posts in Markdown (or other markup languages) and Hexo generates static files with a beautiful theme in seconds. See an example blog website powered by Hexo with an elegant Theme NexT.

  4. jemdoc+MathJax is a light text-based markup language (jemdoc) designed for creating websites with MathJax support.

  5. Urubu is a tool to build static websites.

  6. Bootstrap is a popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.