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

📄 solveforslowqp.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 solveForSlowqP (float s, float c, float pl, float a1111, float	a3333, float a1133,float a1313, float a1113, float a3313, 	float *pxnew, float *pznew, float rt)/*****************************************************************************Continue slowness across interface (PAcrossInterface)Anisotropic Case, qP-wave******************************************************************************/{	double oc,os,gamm11,gamm13,gamm33;	double px2,pz2,pxz,sqrsq;	double pz1,diff1,pz,px,pxn,pzn,px1;	double sqr=0.,gm,diff2,err,eps;	int critical,iter;		critical=1;	iter=0;	if(s*s < 0.49){		oc=1./c;		eps=0.00000000001;		sqrsq=1/a3333-pl*pl;		if(sqrsq<0) sqrsq=0;		pz=pl*s+rt*sqrt(sqrsq)*c;		px = (pl-pz*c)*oc;		px2=px*px;		pz2=pz*pz;		pxz=px*pz;		gamm11 = a1111*px2+ a1313*pz2 +2*a1113*pxz;		gamm33 = a3333*pz2 + a1313*px2+2*a3313*pxz;		gamm13 = (a1133+a1313)*pxz+ a1113*px2+ a3313*pz2;		sqrsq =(gamm11+gamm33)*(gamm11+gamm33)-			4*(gamm11*gamm33-gamm13*gamm13);		if(sqrsq<0) sqrsq=0;		sqr    = sqrt(sqrsq);		gm    = .5*(gamm11+gamm33+sqr);		diff1=gm-1;		err=diff1*diff1;		pz1=pz;		if(err>eps) pz=pz1+.0001/sqrt(a3333);					while(err>eps && iter<50){					px = (pl-pz*s)*oc;			px2=px*px;			pz2=pz*pz;			pxz=px*pz;			gamm11 = a1111*px2+ a1313*pz2 +2*a1113*pxz;			gamm33 = a3333*pz2 + a1313*px2+2*a3313*pxz;			gamm13 = (a1133+a1313)*pxz+ a1113*px2+ a3313*pz2;			sqr    = sqrt((gamm11+gamm33)*(gamm11+gamm33)-				4*(gamm11*gamm33-gamm13*gamm13));			gm    = .5*(gamm11+gamm33+sqr);			diff2=gm-1;			err=diff2*diff2;			pzn=(diff1*pz-diff2*pz1)/(diff1-diff2);			diff1=diff2;			pz1=pz;			pz=pzn;			iter++;		}	/* everything else */	} else {		os=1./s;		eps=0.00000000001;		sqrsq=1/a3333-pl*pl;		if(sqrsq<0) sqrsq=0;		px=pl*c-rt*sqrt(sqrsq)*s;		pz = (pl-px*c)*os;		px2=px*px;		pz2=pz*pz;		pxz=px*pz;		gamm11 = a1111*px2+ a1313*pz2 +2*a1113*pxz;		gamm33 = a3333*pz2 + a1313*px2+2*a3313*pxz;		gamm13 = (a1133+a1313)*pxz+ a1113*px2+ a3313*pz2;		sqrsq =(gamm11+gamm33)*(gamm11+gamm33)-			4*(gamm11*gamm33-gamm13*gamm13);		if(sqrsq<0) sqrsq=0;		gm    = .5*(gamm11+gamm33+sqr);		diff1=gm-1;		err=diff1*diff1;		px1=px;		px=px1+.0001/sqrt(a3333);					while(err>eps && iter<50){					pz = (pl-px*c)*os;			px2=px*px;			pz2=pz*pz;			pxz=px*pz;			gamm11 = a1111*px2+ a1313*pz2 +2*a1113*pxz;			gamm33 = a3333*pz2 + a1313*px2+2*a3313*pxz;			gamm13 = (a1133+a1313)*pxz+ a1113*px2+ a3313*pz2;			sqr    = sqrt((gamm11+gamm33)*(gamm11+gamm33)-				4*(gamm11*gamm33-gamm13*gamm13));			gm    = .5*(gamm11+gamm33+sqr);			diff2=gm-1;			err=diff2*diff2;			pxn=(diff1*px-diff2*px1)/(diff1-diff2);			diff1=diff2;			px1=px;			px=pxn;			iter++;		}	}	if(iter>=49)	critical=-1;		*pznew = pz;	*pxnew = px;	return critical;}

⌨️ 快捷键说明

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