⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shreflect.c

📁 su 的源代码库
💻 C
📖 第 1 页 / 共 2 页
字号:
							td0n22[ip]=cmplx(0.0,0.0);							ewtu211=cmul(rvrb211,cmul(ewigh11,tu11));							tun0p11=cmul(ewtu211,tun011[ip]);							tun0p21=cmul(ewtu211,tun021[ip]);							rtb111=cmul(ewrd11,ewd0211);							rtb112=cmul(ewrd11,ewd0212);							rd0np11=cadd(rd0n11[ip],cmul(tun011[ip],rtb111));							rd0np12=cadd(rd0n12[ip],cmul(tun011[ip],rtb112));							rd0np21=cadd(rd0n21[ip],cmul(tun021[ip],rtb111));							rd0np22=cadd(rd0n22[ip],cmul(tun022[ip],rtb112));							run011[ip]=cadd(ru11,cmul(ewtu211,								cmul(wrn011,td11)));							run012[ip]=cmplx(0.0,0.0);							run021[ip]=cmplx(0.0,0.0);							run022[ip]=cmplx(0.0,0.0);							tun011[ip]=tun0p11;							tun012[ip]=cmplx(0.0,0.0);							tun021[ip]=tun0p21;							tun022[ip]=cmplx(0.0,0.0);							rd0n11[ip]=rd0np11;							rd0n12[ip]=rd0np12;							rd0n21[ip]=rd0np21;							rd0n22[ip]=rd0np22;						}					}				} 				/* if (il==lobs[ijk]-1) { */				if (il==lobs[ijk]-2) {					ik1=ijk*block_size;							for (ip=0; ip<block_size; ip++) {						iz=ik1+ip;						rurf11[iz]=run011[ip];						rurf12[iz]=run012[ip];						rurf21[iz]=run021[ip];						rurf22[iz]=run022[ip];						rdfr11[iz]=rd0n11[ip];						rdfr12[iz]=rd0n12[ip];						rdfr21[iz]=rd0n21[ip];						rdfr22[iz]=rd0n22[ip];						turf11[iz]=tun011[ip];						turf12[iz]=tun012[ip];						turf21[iz]=tun021[ip];						turf22[iz]=tun022[ip];						tdfr11[iz]=td0n11[ip];						tdfr12[iz]=td0n12[ip];						tdfr21[iz]=td0n21[ip];						tdfr22[iz]=td0n22[ip];					}					ijk++;				} 				/* if (il==lsource-1) { */				if (il==lsource-2) {			    for (ip=0; ip<block_size; ip++) {				rusf11[ip]=run011[ip];				rusf12[ip]=run012[ip];				rusf21[ip]=run021[ip];				rusf22[ip]=run022[ip];				rdfs11[ip]=rd0n11[ip];				rdfs12[ip]=rd0n12[ip];				rdfs21[ip]=rd0n21[ip];				rdfs22[ip]=rd0n22[ip];				run011[ip]=cmplx(0.0,0.0);				run012[ip]=cmplx(0.0,0.0);				run021[ip]=cmplx(0.0,0.0);				run022[ip]=cmplx(0.0,0.0);				rd0n11[ip]=cmplx(0.0,0.0);				rd0n12[ip]=cmplx(0.0,0.0);				rd0n21[ip]=cmplx(0.0,0.0);				rd0n22[ip]=cmplx(0.0,0.0);				tusf11[ip]=tun011[ip];				tusf12[ip]=tun012[ip];				tusf21[ip]=tun021[ip];				tusf22[ip]=tun022[ip];				tun011[ip]=cmplx(1.0,0.0);				tun012[ip]=cmplx(0.0,0.0);				tun021[ip]=cmplx(0.0,0.0);				tun022[ip]=cmplx(1.0,0.0);				td0n11[ip]=cmplx(1.0,0.0);				td0n12[ip]=cmplx(0.0,0.0);				td0n21[ip]=cmplx(0.0,0.0);				   	td0n22[ip]=cmplx(1.0,0.0);	    		}			}    		}			/* loop over receiver depths */		    for (iz=0; iz<nor; iz++) {			ik1=iz*block_size;			for (ip=0; ip<block_size; ip++) {			    ijk1=ik1+ip;    			    det=csub(rd0n11[ip],rdfr11[ijk1]);			    if (rcabs(det)<=SZERO) {				prv[iz]=flag[iz];				flag[iz]=2;				ibl[iz]=ip;				break;			    }			}    		} 		   for (iz=0; iz<nor; iz++) {		ik1=iz*block_size;			lrec=lobs[iz];			ik2=(lrec-1)*block_size;			/* receiver above the source */			if (lsource>lrec) {			    for (ip=0; ip<block_size; ip++) {				ijk1=ik1+ip;						ijk2=ik2+ip;						rtb111=cdiv(cmplx(1.0,0.0),turf11[ijk1]);						rdnr11[ip]=cmul(rtb111,tusf11[ip]);						rdnr12[ip]=cmul(rtb111,tusf12[ip]);						rdnr21[ip]=cmplx(0.0,0.0);						rdnr22[ip]=cmplx(0.0,0.0);						rtb111=rdnr11[ip];						rtb112=rdnr12[ip];						rtb121=rdnr21[ip];						rtb122=rdnr22[ip];						rtb211=cadd(cmul(rurf11[ijk1],rtb111),cmul(rurf12[ijk1],							rtb121));						rtb212=cadd(cmul(rurf11[ijk1],rtb112),cmul(rurf12[ijk1],							rtb122));						rtb221=cadd(cmul(rurf21[ijk1],rtb111),cmul(rurf22[ijk1],							rtb121));						rtb222=cadd(cmul(rurf21[ijk1],rtb112),cmul(rurf22[ijk1],							rtb122));						rtb311=cadd(cmul(rd0n11[ip],rusf11[ip]),cmul(rd0n12[ip],							rusf21[ip]));						rtb312=cadd(cmul(rd0n11[ip],rusf12[ip]),cmul(rd0n12[ip],							rusf22[ip]));						rtb321=cadd(cmul(rd0n21[ip],rusf11[ip]),cmul(rd0n22[ip],							rusf21[ip]));						rtb322=cadd(cmul(rd0n21[ip],rusf12[ip]),cmul(rd0n22[ip],							rusf22[ip]));						x=csub(cmplx(1.0,0.0),rtb311);						y=csub(cmplx(1.0,0.0),rtb322);							det=csub(cmul(x,y),cmul(rtb312,rtb321));						rvrb111=cdiv(y,det);						rvrb112=cdiv(rtb312,det);						rvrb121=cdiv(rtb321,det);						rvrb122=cdiv(x,det);						fact11=cadd(cmul(rd0n11[ip],sigmad1[ip]),							cadd(cmul(rd0n12[ip],sigmad2[ip]),sigmau1[ip]));						fact12=cadd(cmul(rd0n21[ip],sigmad1[ip]),							cadd(cmul(rd0n22[ip],sigmad2[ip]),sigmau2[ip]));						vuzs1=cadd(cmul(rvrb111,fact11),cmul(rvrb112,fact12));						vuzs2=cadd(cmul(rvrb121,fact11),cmul(rvrb122,fact12));						up[ip]=cmul(p[ip],cadd(cmul(cadd(rtb111,rtb211),vuzs1),							cmul(cadd(rtb112,rtb212),vuzs2)));					}				} else {									/* receiver below the source */					if (flag[iz]==2) {						for (ip=0; ip<ibl[iz]-1; ip++) {							ijk1=ik1+ip;							rtb211=cdiv(turf11[ijk1],csub(rd0n11[ip],							rdfr11[ijk1]));							rdnr11[ip]=cdiv(cmplx(1.0,0.0),cadd(cmul(tdfr11[ijk1],rtb211),								rurf11[ijk1]));							rdnr12[ip]=cmplx(0.0,0.0);   							rdnr21[ip]=cmplx(0.0,0.0);   							rdnr22[ip]=cmplx(0.0,0.0);   						}						for (ip=ibl[iz]-1; ip<block_size; ip++) {							rdnr11[ip]=cmplx(0.0,0.0);							rdnr12[ip]=cmplx(0.0,0.0);							rdnr21[ip]=cmplx(0.0,0.0);							rdnr22[ip]=cmplx(0.0,0.0);						}					} else if (flag[iz]==0) {									for (ip=0; ip<block_size; ip++) {							ijk1=ik1+ip;							rtb211=cdiv(turf11[ijk1],csub(rd0n11[ip],								rdfr11[ijk1]));							rdnr11[ip]=cdiv(cmplx(1.0,0.0),cadd(cmul(tdfr11[ijk1],rtb211),								rurf11[ijk1]));							rdnr12[ip]=cmplx(0.0,0.0);							rdnr21[ip]=cmplx(0.0,0.0);							rdnr22[ip]=cmplx(0.0,0.0);						}					} else {						for (ip=0; ip<block_size; ip++) {							rdnr11[ip]=cmplx(0.0,0.0);							rdnr12[ip]=cmplx(0.0,0.0);							rdnr21[ip]=cmplx(0.0,0.0);							rdnr22[ip]=cmplx(0.0,0.0);						}					}						if (flag[iz]==2) flag[iz]=prv[iz];						for (ip=0; ip<block_size; ip++) {						ijk1=ik1+ip;						ijk2=ik2+ip;						rtb111=cadd(cmul(rurf11[ijk1],rdnr11[ip]),							cmul(rurf12[ijk1],rdnr21[ip]));						rtb112=cadd(cmul(rurf11[ijk1],rdnr12[ip]),							cmul(rurf12[ijk1],rdnr22[ip]));						rtb121=cadd(cmul(rurf21[ijk1],rdnr11[ip]),							cmul(rurf22[ijk1],rdnr21[ip]));						rtb122=cadd(cmul(rurf21[ijk1],rdnr12[ip]),							cmul(rurf22[ijk1],rdnr22[ip]));						x=csub(cmplx(1.0,0.0),rtb111);						y=csub(cmplx(1.0,0.0),rtb122);						det=csub(cmul(x,y),cmul(rtb112,rtb121));						rvrb111=cdiv(y,det);						rvrb112=cdiv(rtb112,det);						rvrb121=cdiv(rtb121,det);						rvrb122=cdiv(x,det);						rtb111=cadd(cmul(rvrb111,tdfr11[ijk1]),cmul(rvrb112,							tdfr21[ijk1]));						rtb112=cadd(cmul(rvrb111,tdfr12[ijk1]),cmul(rvrb112,							tdfr22[ijk1])); 						rtb121=cadd(cmul(rvrb121,tdfr11[ijk1]),cmul(rvrb122,							tdfr21[ijk1]));						rtb122=cadd(cmul(rvrb121,tdfr12[ijk1]),cmul(rvrb122,							tdfr22[ijk1]));						rtb211=cadd(cmul(rdnr11[ip],rtb111),cmul(rdnr12[ip],							rtb121));						rtb212=cadd(cmul(rdnr11[ip],rtb112),cmul(rdnr12[ip],							rtb122));						rtb221=cadd(cmul(rdnr21[ip],rtb111),cmul(rdnr22[ip],							rtb121));						rtb222=cadd(cmul(rdnr21[ip],rtb112),cmul(rdnr22[ip],							rtb122));						rtb311=cadd(cmul(rusf11[ip],rd0n11[ip]),cmul(rusf12[ip],							rd0n21[ip]));						rtb312=cadd(cmul(rusf11[ip],rd0n12[ip]),cmul(rusf12[ip],							rd0n22[ip]));						rtb321=cadd(cmul(rusf21[ip],rd0n11[ip]),cmul(rusf22[ip],							rd0n21[ip]));						rtb322=cadd(cmul(rusf21[ip],rd0n12[ip]),cmul(rusf22[ip],							rd0n22[ip]));						x=csub(cmplx(1.0,0.0),rtb311);						y=csub(cmplx(1.0,0.0),rtb322);						det=csub(cmul(x,y),cmul(rtb312,rtb321));						rvrb111=cdiv(y,det);						rvrb112=cdiv(rtb312,det);						rvrb121=cdiv(rtb321,det);						rvrb122=cdiv(x,det);						fact11=cadd(cmul(rusf11[ip],sigmau1[ip]),cadd(							cmul(rusf12[ip],sigmau2[ip]),sigmad1[ip]));						fact12=cadd(cmul(rusf21[ip],sigmau1[ip]),cadd(							cmul(rusf22[ip],sigmau2[ip]),sigmad2[ip]));						vdzs1=cadd(cmul(rvrb111,fact11),cmul(rvrb112,fact12));						vdzs2=cadd(cmul(rvrb121,fact11),cmul(rvrb122,fact12));						up[ip]=cmul(p[ip],cadd(cmul(cadd(rtb111,rtb211),vdzs1),							cmul(cadd(rtb112,rtb212),vdzs2)));					}				}				for (ix=0; ix<nx; ix++) {					x1=bx+dx*ix;					if (x1==0.0) {						for (ip=1; ip<block_size-1; ip++) {							t1=cdiv(cmplx(1.0,0.0),csqrt(p[ip]));							vos1[ip]=cmul(up[ip],t1);						}						vos1[0]=cmplx(0.0,0.0);						vos1[1]=crmul(vos1[1],0.5);						vos1[block_size-2]=crmul(vos1[block_size-2],.5);					} else {						temr=crmul(wpie,2*PI*x1);						temr=cdiv(tem,csqrt(temr));						sig=crmul(divfac,x1);						sigh=cmul(sig,cdp);						for (ip=0; ip<block_size-1; ip++) {							texp[ip]=cexp(cmul(sig,p[ip]));						}						/******************************************************						*			Compute the slowness integral			  *						******************************************************/						if (int_type==1) {		/* use trapezoidal rule */							temr=crmul(cmul(temr,cdp),0.5);							for (ip=0; ip<block_size-1; ip++) {								jj=ip+1;								vos1[ip]=cmul(temr,cadd(cmul(up[ip],texp[ip]),									cmul(up[jj],texp[jj])));							}						} else if (int_type==2) {							for (ip=0; ip<block_size-1; ip++) {								jj=ip+1;								t1=csub(texp[jj],texp[ip]);								func1=csub(cmul(up[jj],texp[jj]),									cmul(up[ip],texp[ip]));								func2=cmul(csub(up[jj],up[ip]),t1);								vos1[ip]=cmul(cdiv(cdp,sigh),cmul(csub(func1,									cdiv(func2,sigh)),temr));							}						}					}		/**********************************************************	    *		update output array			*	    **********************************************************/				for (ip=0; ip<block_size-1; ip++) {						response1[iw][ix][iz]=cadd(response1[iw][ix][iz],							vos1[ip]);					}				}			}	/* update loop variables */            nblock--;	    if (nblock != 0) {	/*	bp=p[block_size].r; */		bp=p[block_size-1].r;		left++;		if (left > block_size) {		    left -=block_size;		    nblock++;		}	    } else {				if (int_type==1) bp=bp1;				else if (int_type==2) bp=0.0;				break;	/* last block, exit while loop */			}		}	}		/* free allocated space */	free1complex(up);	free1complex(rd0n11);free1complex(rd0n12);free1complex(rd0n21);	free1complex(rd0n22);free1complex(td0n11);free1complex(td0n12);	free1complex(td0n22);free1complex(tun011);free1complex(tun012);	free1complex(tun021);free1complex(tun022);free1complex(run011);	free1complex(run012);free1complex(run021);free1complex(run022);	free1complex(tusf11);free1complex(tusf12);free1complex(tusf21);	free1complex(tusf22);free1complex(rdfs11);free1complex(rdfs12);	free1complex(rdfs21);free1complex(rdfs22);free1complex(rurf11);	free1complex(rurf12);free1complex(rurf21);free1complex(rurf22);	free1complex(turf11);free1complex(turf12);free1complex(turf21);	free1complex(turf22);free1complex(rdfr11);free1complex(rdfr12);	free1complex(rdfr21);free1complex(rdfr22);free1complex(tdfr11);	free1complex(tdfr12);free1complex(tdfr21);free1complex(tdfr22);	free1complex(r11);free1complex(r12);free1complex(r21);free1complex(r22);	free1complex(vos1);free1complex(vos2);free1complex(vos3);	/* free working space */    free1complex(p);    free1complex(pp);    free1complex(pwin);    free1complex(gl);    free1complex(gt);    free1complex(gam);    free1complex(alpha);    free1complex(betha);    free1complex(sigmau1);    free1complex(sigmau2);    free1complex(sigmad1);    free1complex(sigmad2);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -