All Projects → Rtoax → 2D3D-TI-FD-RTM-cuda

Rtoax / 2D3D-TI-FD-RTM-cuda

Licence: GPL-3.0 License
这是一个基于NVIDIA cuda的开源程序,其中包括了二维和三维VTI介质正演模拟和逆时偏移成像,二维TTI介质逆时偏移成像,以及以上介质的ADCIGs提取[translation: This is an open source program based on NVIDIA cuda, which includes two-dimensional and three-dimensional VTI media forward simulation and reverse time migration imaging, two-dimensional TTI media reverse time migration imaging, and ADCIGs extraction of …

Programming Languages

Cuda
1817 projects
Makefile
30231 projects

Projects that are alternatives of or similar to 2D3D-TI-FD-RTM-cuda

VTI-FD-CUDA-GTK
NVIDIA-based GPU Accelerated Finite Difference Forward Seismic Simulation of VTI Media]
Stars: ✭ 19 (-26.92%)
Mutual labels:  nvidia-cuda, anisotropy, finite-different
debian-setup
neurite.github.io/debian-setup
Stars: ✭ 27 (+3.85%)
Mutual labels:  nvidia-cuda
Telewavesim
Teleseismic body wave modeling through stacks of (submarine/anisotropic) layers
Stars: ✭ 41 (+57.69%)
Mutual labels:  anisotropy
ansible-nvidia
No description or website provided.
Stars: ✭ 32 (+23.08%)
Mutual labels:  nvidia-cuda
mavenized-jcuda
Mavenized JCuda, please use version available in Maven Central
Stars: ✭ 52 (+100%)
Mutual labels:  nvidia-cuda
fahclient
Dockerized Folding@home client with NVIDIA GPU support to help battle COVID-19
Stars: ✭ 38 (+46.15%)
Mutual labels:  nvidia-cuda
cuda-toolkit
GitHub Action to install CUDA
Stars: ✭ 34 (+30.77%)
Mutual labels:  nvidia-cuda

TI media Finite Different Modeling and Reverse Time Migration

Rong Tao

哆啦Linux梦

Aspect

  • (2-dimension and 3-dimension)
  • anisotropy media (VTI, TTI)
  • Reverse Time Migration
  • Finite Different Modeling
  • Angle Domain Common Imaging Gathers (ADCIGs)
  • Poynting vector methods

Author

Rong Tao RToax

wave equation

Migration

poynting vector

use Laplacian factor tobe a filter decrease the low frequence signal(noise)

void laplac2_lop(int adj, int nz, int nx, float *in, float *out)
/*< linear operator > Copyright(C) Madagascar */
{
    int iz,ix,j;

    for (ix=0; ix < nx; ix++) {
	for (iz=0; iz < nz; iz++) {
	    j = iz+ix*nz;

	    if (iz > 0) {
		if (adj) {
		    out[j-1] -= in[j];
		    out[j]   += in[j];
		} else {
		    out[j] += in[j] - in[j-1];
		}
	    }
	    if (iz < nz-1) {
		if (adj) {
		    out[j+1] -= in[j];
		    out[j]   += in[j];
		} else {
		    out[j] += in[j] - in[j+1];
		}
	    }

	    if (ix > 0) {
		if (adj) {
		    out[j-nz] -= in[j];
		    out[j]    += in[j];
		} else {
		    out[j] += in[j] - in[j-nz];
		}
	    }
	    if (ix < nx-1) {
		if (adj) {
		    out[j+nz] -= in[j];
		    out[j]    += in[j];
		} else {
		    out[j] += in[j] - in[j+nz];
		}
	    }
	}
    }
}

Poynting Vector ADCIGs

__global__ void Poynting_Adcigs(int nnz, 
                                int nx, 
                                int nz, 
                                int npml, 
                                int nangle, 
                                int dangle, 
                                float *adcigs, 
                                float *s_P, 
                                float *s_Q, 
                                float *s_u, 
                                float *s_w, 
                                float *g_P, 
                                float *g_Q, 
                                float *g_u, 
                                float *g_w)
/**
 *  poynting vector extraction ADCIGs
 *    "Copyright(C) Madagascar:user/pyang/Mrtmadcig.c"
 */
{
    int id = threadIdx.x+blockDim.x*blockIdx.x;
    int ix = id/nz;
    int iz = id%nz;

    int ia = 0;

    float Ssx = -s_P[iz+npml+nnz*(ix+npml)]*s_u[iz+npml+nnz*(ix+npml)];
    float Ssz = -s_Q[iz+npml+nnz*(ix+npml)]*s_w[iz+npml+nnz*(ix+npml)];
    float Sgx =  g_P[iz+npml+nnz*(ix+npml)]*g_u[iz+npml+nnz*(ix+npml)];
    float Sgz =  g_Q[iz+npml+nnz*(ix+npml)]*g_w[iz+npml+nnz*(ix+npml)];

    float b1 =  Ssx*Ssx + Ssz*Ssz;
    float b2 =  Sgx*Sgx + Sgz*Sgz;
    float  a = (Ssx*Sgx + Ssz*Sgz)/(sqrtf(b1*b2)*(1 - 0.1));

    if(id<nx*nz) {

        if(a>=-1&&a<=1) {

          a = 0.5*acosf(a)*180.0/pi;
         ia = (int)(a/(dangle*1.0));
         
            if(ia<nangle) {
                adcigs[iz+nz*ia+nz*nangle*(id/nz)] 
                    += s_P[iz+npml+nnz*(ix+npml)]*g_P[iz+npml+nnz*(ix+npml)]
                      *cosf(ia*pi/180.0)*cosf(ia*pi/180.0)*cosf(ia*pi/180.0);
            }
        }
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].