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

📄 rt_iso_real.c

📁 su 的源代码库
💻 C
字号:
/* Copyright (c) Colorado School of Mines, 2006.*//* All rights reserved.                       *//* Copyright (c) Colorado School of Mines, 1999.*//* All rights reserved.                       */#include "par.h"int rt_iso_real(float vp1, float vp2, float vs1, float vs2, float rho1,	float rho2, float pl, int modei, int modet, int rort, float	*coeff)/*****************************************************************************Reflection/Transmission coeff. (see Aki % Richards, pages 145ff)******************************************************************************Input:vp1,vp2		p-wave velocitiesvs1,vs2		s-wave velocitiesrho1,rho2	densitiesmodei,modet	incidence and scattered moderort		=0 transmission		=1 reflection		=2  free surface reflection******************************************************************************Output:-1		error in routine1		coefficient found0		coefficient complex*coeff		address of real refl/transm coeff******************************************************************************Author:	  Andreas Rueger, Colorado School of Mines, 02/01/94******************************************************************************/{	float a,b,c,d,del,temp;	float sj1,sj2,cj1,cj2;	float si1,si2,ci1,ci2;	float covi1,covi2,covj1,covj2;	float D,E,F,G,H;	float pl2,vs12,vs22;	si1  = pl*vp1;	si2  = pl*vp2;	sj1  = pl*vs1;	sj2  = pl*vs2;	/* check for postcritical case */	if(si1 > 1 || si2 > 1 || sj1 > 1 ||sj2 > 1) 			return 0;	/* SH reflection/transmission coeff */	else if( modei == 2 && modet == 2 ){				cj1 = sqrt(1-sj1*sj1);		cj2 = sqrt(1-sj2*sj2);		del = rho1*vs1*cj1+rho2*vs2*cj2;		/* Pol in ref/trans coeff */		if(ABS(del) < FLT_EPSILON)			return -1;		                 if(rort == 1)			*coeff =  1/del *(rho1*vs1*cj1-rho2*vs2*cj2);		else if(rort == 0)			*coeff =  1/del *2*rho1*vs1*cj1;		else if(rort == 2){			/* needs to be checked */		        *coeff = 1;		} else 			err("ERROR in reftransiso\n");	} else {		cj1  = sqrt(1-sj1*sj1);		cj2  = sqrt(1-sj2*sj2);		ci1  = sqrt(1-si1*si1);		ci2  = sqrt(1-si2*si2);		pl2  = pl*pl;				vs12 = vs1*vs1;		vs22 = vs2*vs2;		covi1= ci1/vp1;		covi2= ci2/vp2;		covj1= cj1/vs1;		covj2= cj2/vs2;		temp = rho2*(1- 2*vs22*pl2);		a    = temp - rho1*(1 - 2*vs12*pl2);		b    = temp + 2*rho1*vs12*pl2;		c    = rho1*(1- 2*vs12*pl2) + 2*rho2*vs22*pl2;		d    = 2*(rho2*vs22 - rho1*vs12);		E    = b*covi1 + c*covi2;		F    = b*covj1 + c*covj2;		G    = a-d*covi1*covj2;		H    = a-d*covi2*covj1;		D    = E*F + G*H*pl2;		/* Pol in ref/trans coeff */		if(ABS(D) < FLT_EPSILON)			return -1;		/* PP-reflection */		else if(modei==0 && modet==0 && rort==1)		    *coeff=((b*covi1 - c*covi2)*F-(a + d*covi1*covj2)*H*pl2)/D;		/* PP-transmission */		else if(modei==0 && modet==0 && rort==0)		    *coeff=2*rho1*ci1*F / (vp2*D);		/* PS-reflection */		else if(modei==0 && modet==1 && rort==1)		    *coeff= -2*covi1*(a*b+c*d*covi2*covj2)*pl*vp1/(vs1*D);		/* PS-transmission */		else if(modei==0 && modet==1 && rort==0)		    *coeff= 2*rho1*ci1*H*pl / (vs2*D);		/* SP-reflection */		else if(modei==1 && modet==0 && rort==1)		    *coeff=-2*covj1*(a*b+c*d*covi2*covj2)*pl*vs1/(vp1*D);		/* SP-transmission */		else if(modei==1 && modet==0 && rort==0)		    *coeff= -2*rho1*cj1*G*pl / (vp2*D);		/* SS-reflection */		else if(modei==1 && modet==1 && rort==1)		    *coeff=-((b*covj1-c*covj2)*E-(a+d*covi2*covj1)*G*pl2)/D;		/* SS-transmission */		else if(modei==1 && modet==1 && rort==0)		    *coeff=2*rho1*cj1*E / (vs2*D);		/* free surface coefficients */		else if(rort==2){			a =1/vs12 - 2*pl2;			b = 4*pl2*ci1*cj1;			temp = a*a*vs1*vp1 + b;						/* Pol in the coefficient */			if(ABS(temp)<FLT_EPSILON)				return -1;			/* PP-free surface */			else if(modei==0 && modet==0)				*coeff=(-a*a*vs1*vp1 + b)/temp;				/* PS-free surface */			else if(modei==0 && modet==1)				*coeff=-4*pl*vp1*ci1*a /temp;			/* SS-free surface */			else if(modei==1 && modet==1)				*coeff=-(a*a*vs1*vp1-b)/temp;			/* SP-free surface */			else if(modei==1 && modet==0)				*coeff=4*vs1*cj1*pl*a/temp;			else				return -1;		} else			return -1;	}		return 1;}

⌨️ 快捷键说明

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