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

📄 linrort.c

📁 su 的源代码库
💻 C
📖 第 1 页 / 共 3 页
字号:
	err(" incidence angle from <0;90) only; error in fangle or langle or dangle.  Program terminated!");	return (-1);	}  if (fazim > lazim)	{	err(" an error in fazim or lazim.  Program terminated!");	return (-1);	}	  /* dumping some info into the file info.out  */  fprintf(out_inf_p," ************************ \n *** INFORMATION FILE *** \n ************************ \n \n INCIDENCE HALFSPACE 1: %s \n",hspace1);  if (HSP1==0) fprintf(out_inf_p," Vp1=%6.3f \t Vs1=%6.3f \t rho1=%6.3f",vp1,vs1,rho1);  if (HSP1==1) fprintf(out_inf_p," Vp1(Vp33)=%6.3f \t Vs1(Vs44)=%6.3f \t rho1=%6.3f eps1=%6.3f \t\t delta1=%6.3f ",vp1,vs1,rho1,eps1,delta1);  if (HSP1==2) fprintf(out_inf_p," Vp1(Vp33)=%6.3f \t Vs1(Vs44)=%6.3f \t rho1=%6.3f eps1_v=%6.3f \t\t delta1_v=%6.3f \t gamma1_v=%6.3f",vp1,vs1,rho1,eps1_v,delta1_v,gamma1_v);  if (HSP1==3) fprintf(out_inf_p," Vp1(Vp33)=%6.3f \t Vs1(Vs44)=%6.3f \t rho1=%6.3f eps1_1=%6.3f \t\t delta1_1=%6.3f \t gamma1_1=%6.3f eps1_2=%6.3f \t\t delta1_2=%6.3f \t gamma1_2=%6.3f delta1_3=%6.3f",vp1,vs1,rho1,eps1_1,delta1_1,gamma1_1,eps1_2,delta1_2,gamma1_2,delta1_3);  fprintf(out_inf_p,"\n\n REFLECTING HALFSPACE 2: %s \n", hspace2);  if (HSP2==0) fprintf(out_inf_p," Vp2=%6.3f \t Vs2=%6.3f \t rho2=%6.3f",vp2,vs2,rho2);  if (HSP2==1) fprintf(out_inf_p," Vp2(Vp33)=%6.3f \t Vs2(Vs44)=%6.3f \t rho2=%6.3f eps2=%6.3f \t\t delta2=%6.3f ",vp2,vs2,rho2,eps2,delta2);  if (HSP2==2) fprintf(out_inf_p," Vp2(Vp33)=%6.3f \t Vs2(Vs44)=%6.3f \t rho2=%6.3f eps2_v=%6.3f \t\t delta2_v=%6.3f \t gamma2_v=%6.3f",vp2,vs2,rho2,eps2_v,delta2_v,gamma2_v);  if (HSP2==3) fprintf(out_inf_p," Vp2(Vp33)=%6.3f \t Vs2(Vs44)=%6.3f \t rho2=%6.3f eps2_1=%6.3f \t\t delta2_1=%6.3f \t gamma2_1=%6.3f eps2_2=%6.3f \t\t delta2_2=%6.3f \t gamma2_2=%6.3f delta2_3=%6.3f",vp2,vs2,rho2,eps2_1,delta2_1,gamma2_1,eps2_2,delta2_2,gamma2_2,delta2_3);   fprintf(out_inf_p,"\n \n INCIDENCE ANGLE AND AZIMUTH RANGE:\n");  if (strcmp(a_file,"-1")) 	fprintf(out_inf_p," Incidence angles and azimuths are specified in the file \"%s\", \n kappa=%7.3f \n",a_file,kappa); else	fprintf(out_inf_p," fangle=%7.3f \t langle=%7.3f \t dangle=%7.3f \t fazim=%7.3f	\t lazim=%7.3f	\t dazim=%7.3f \t rotation of the halfspace 2:  kappa=%7.3f \n", fangle,langle,dangle,fazim,lazim,dazim,kappa);   /* initialization of anisotropic parameters */  /* ISO media */  if (HSP1==0)	{	eps1_1=0.;	eps1_2=0.;	delta1_1=0.;	delta1_2=0.;	delta1_3=0.;	gamma1_44=0.;	gamma1_55=0.;	gamma1_1=0.;		}  if (HSP2==0)	{	eps2_1=0.;	eps2_2=0.;	delta2_1=0.;	delta2_2=0.;	delta2_3=0.;	gamma2_44=0.;	gamma2_55=0.;	}  /* VTI media */  if (HSP1==1)	{	eps1_1=eps1;	eps1_2=eps1;	delta1_1=delta1;	delta1_2=delta1;	delta1_3=0.;	gamma1_44=0.;	gamma1_55=0.;	gamma1_1=gamma1;	}  if (HSP2==1)	{	eps2_1=eps2;	eps2_2=eps2;	delta2_1=delta2;	delta2_2=delta2;	delta2_3=0.;	gamma2_44=0.;	gamma2_55=0.;	}    /* HTI media */  if (HSP1==2)	{	eps1_1=0.;	eps1_2=eps1_v;	delta1_1=0.;	delta1_2=delta1_v;	delta1_3=delta1_v-2*eps1_v;	/*  exact delta_3 gives usually worse results: 	delta1_3=(delta1_v-2*eps1_v)/(1+2*eps1_v); */	gamma1_1=0.;	if (HTIback1==44)	{	  gamma1_44=0.;	  gamma1_55=gamma1_v;	  count+=1; 	  back=1;	  	}	if (HTIback1==55)	{	  gamma1_44=-gamma1_v/(1+2*gamma1_v);	  gamma1_55=0.;	  vs1=vs1*sqrt(1+2*gamma1_v);	  	}	}  if (HSP2==2)	{	eps2_1=0.;	eps2_2=eps2_v;	delta2_1=0.;	delta2_2=delta2_v;	delta2_3=delta2_v-2*eps2_v;	/*exact delta_3 gives usually worse results: 	delta2_3=(delta2_v-2*eps2_v)/(1+2*eps2_v); */	if (HTIback2==44)	{	  gamma2_44=0.;	  gamma2_55=gamma2_v;	  count+=1;	  	  back=1;	}	if (HTIback2==55)	{	  gamma2_44=-gamma2_v/(1+2*gamma2_v);	  gamma2_55=0.;	  vs2=vs2*sqrt(1+2*gamma2_v);	}	}    /* ORT media */  if (HSP1==3)	{	if (ORTback1==44)	{	  gamma1_44=0.;	  gamma1_55=gamma1_2-(gamma1_1*(1+2*gamma1_2)/(1+2*gamma1_1));	  count+=1;		  back=1;	  	}	if (ORTback1==55)	{	  gamma1_44=gamma1_1-(gamma1_2*(1+2*gamma1_1)/(1+2*gamma1_2));	  gamma1_55=0.;	  vs1=vs1*sqrt((1+2*gamma1_2)/(1+2*gamma1_1));	}	}  if(HSP2==3)	{	if (ORTback2==44)	{	  gamma2_44=0.;	  gamma2_55=gamma2_2-(gamma2_1*(1+2*gamma2_2)/(1+2*gamma2_1));	  count+=1;	  back=1;	}	if (ORTback2==55)	{	  gamma2_44=gamma2_1-(gamma2_2*(1+2*gamma2_1)/(1+2*gamma2_2));	  gamma2_55=0.;	  vs2=vs2*sqrt((1+2*gamma2_2)/(1+2*gamma2_1));	}	}    /* some more dumping into the file info.out  */    fprintf(out_inf_p,"\n INPUT PARAMETERS FOR THE GENERAL Rpp AND Rps SUBROUTINES: \n");  fprintf(out_inf_p," alpha1=%6.3f \t\t beta1=%6.5f \t\t rho1=%6.3f eps1_1=%6.3f \t\t delta1_1=%6.3f eps1_2=%6.3f \t\t delta1_2=%6.3f delta1_3=%6.3f gamma1_44=%6.5f \t gamma1_55=%6.5f \t gamma1_1=%6.5f \n",vp1,vs1,rho1,eps1_1, delta1_1,eps1_2,delta1_2,delta1_3,gamma1_44,gamma1_55,gamma1_1);  fprintf(out_inf_p,"\n alpha2=%6.3f \t\t beta2=%6.5f \t\t rho2=%6.3f eps2_1=%6.3f \t\t delta2_1=%6.3f eps2_2=%6.3f \t\t delta2_2=%6.3f delta2_3=%6.3f gamma2_44=%6.5f \t gamma2_55=%6.5f \n",vp2,vs2,rho2,eps2_1, delta2_1,eps2_2,delta2_2,delta2_3,gamma2_44,gamma2_55);  fprintf(out_inf_p,"\n ERROR MESSAGES: \n");    /* some useful combinations for inversion */  Da_a=(vp2-vp1)/(0.5*(vp2+vp1));  DG_G=(pow(vs2,2)*rho2-pow(vs1,2)*rho1)/(0.5*(pow(vs2,2)*rho2+pow(vs1,2)*rho1));  DZ_Z=(vp2*rho2-vp1*rho1)/(0.5*(vp2*rho2+vp1*rho1));  alpha=0.5*(vp2+vp1);  beta=0.5*(vs2+vs1);  Db_b=(vs2-vs1)/(0.5*(vs2+vs1));  PS2=0.5*((delta1_2-delta1_1+8*pow(beta/alpha,2)*gamma1_44) -	(delta2_2-delta2_1+8*pow(beta/alpha,2)*gamma2_44)*cos(2*kappa*PI/180));	  		PSC=0.5*(delta2_2-delta2_1+8*pow(beta/alpha,2)*gamma2_44)*sin(2*kappa*PI/180);  PABS=0.5*(-(delta2_2-delta2_1+8*pow(beta/alpha,2)*gamma2_44)*pow(sin(kappa*PI/180),2) +		delta2_2-delta1_2+ Da_a - pow(2*beta/alpha,2)*DG_G);  SS2=alpha/(2*(alpha+beta))*(delta1_2-delta1_1) + 2*beta/alpha*gamma1_44 - 	(alpha/(2*(alpha+beta))*(delta2_2-delta2_1)+ 2*beta/alpha*gamma2_44)*cos(2*kappa*PI/180);  SSC=(alpha/(2*(alpha+beta))*(delta2_2-delta2_1)+ 2*beta/alpha*gamma2_44)*sin(2*kappa*PI/180);  /*  SABS=-(alpha/(2*(alpha+beta))*(delta2_2-delta2_1)+ 2*beta/alpha*gamma2_44)*pow(sin(kappa*PI/180),2) +	alpha/(2*(alpha+beta))*(delta2_2-delta1_2)-(alpha+2*beta)/(2*alpha)*(rho2-rho1)/(0.5*(rho2+rho1))-	2*beta/alpha*Db_b;  */  SABS=-(alpha/(2*(alpha+beta))*(delta2_2-delta2_1)+ 2*beta/alpha*gamma2_44)*pow(sin(kappa*PI/180),2) +	alpha/(2*(alpha+beta))*(delta2_2-delta1_2)-0.5*(rho2-rho1)/(0.5*(rho2+rho1))-	beta/alpha*DG_G;  /*  some auxiliary outputs, may be usefulfprintf(stderr,"\n b_a=%f \t Da_a=%f \t Dr_r=%f \t Db_b=%f \n DG_G=%f \t 0.5*DZ_Z=%f \n PS2=%f \t PSC=%f \t PABS=%f \n SS2=%f \t SSC=%f \t SABS=%f \n", beta/alpha,Da_a,(rho2-rho1)/(0.5*(rho2+rho1)),Db_b,DG_G,0.5*DZ_Z,PS2,PSC,PABS,SS2,SSC,SABS);  */  /* finally, the evaluation of the coefficients */    if (!strcmp(a_file,"-1"))	{	for( azim = fazim; azim <= lazim; azim += dazim){	 for( ang = fangle; ang <= langle; ang += dangle)		{	  		if((errp=lincoef_Rp(ang*PI/180, azim*PI/180, kappa*PI/180, &RPP, &Rp_1st, &Rp_2nd, count))!=0)		fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2fdeg probably approaches, or may have exceeded, the crytical angle ANGL_CR=%4.2fdeg (this is an approximate value only).\n", ang, errp);		errs=lincoef_Rs(ang*PI/180, azim*PI/180, kappa*PI/180, &RPS1, &RPS2, &SV, &SH, &cosPHI, &sinPHI, HSP1,			&Rsv_1st, &Rsv_2nd, &Rsh_1st, &Rsh_2nd, count);				fprintf(out_P_p," %f \t %f \t %f \n",ang,azim,RPP); count+=1;		if (errs >= 0)		{		 fprintf(out_S_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,RPS1,RPS2,cosPHI,sinPHI);		 fprintf(out_SVSH_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,SV,SH,cosPHI,sinPHI);			}		else if (errs==-1)		{		fprintf(out_S_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,RPS1,RPS2,cosPHI,sinPHI);		fprintf(out_SVSH_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,SV,SH,cosPHI,sinPHI);				fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2fdeg is essentially at a singular point of S-wave propagation. However, the Rps computation is completed. \n", ang);		}						else if (errs==-2)		{		 fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2f is essentially at a singular point of S-wave propagation, the computation of Rps is terminated for this angle (ORT inc. halfspace).\n", ang);		}		}	 	}	}  	else	{	while(fscanf(a_file_p,"%f %f",&ang,&azim)!=EOF)	 {		if (ang >= 90.) continue;		if ((errp=lincoef_Rp(ang*PI/180, azim*PI/180, kappa*PI/180, &RPP, &Rp_1st, &Rp_2nd, count))!=0.)		fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2fdeg probably approaches, or may have exceeded, the crytical angle ANGL_CR=%4.2fdeg (this is an approximate value only).\n", ang, errp);		errs=lincoef_Rs(ang*PI/180, azim*PI/180, kappa*PI/180, &RPS1, &RPS2, &SV, &SH, &cosPHI, &sinPHI, HSP1, &Rsv_1st, &Rsv_2nd, &Rsh_1st, &Rsh_2nd, count);		fprintf(out_P_p," %f \t %f \t %f \n",ang,azim,RPP);		count+=1;		if (errs >= 0.)		{		fprintf(out_S_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,RPS1,RPS2,cosPHI,sinPHI);		fprintf(out_SVSH_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,SV,SH,cosPHI,sinPHI);		}		else if (errs==-1)		{		fprintf(out_S_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,RPS1,RPS2,cosPHI,sinPHI);		fprintf(out_SVSH_p," %f \t %f \t %f \t %f \t %f \t %f \n",ang,azim,SV,SH,cosPHI,sinPHI);				fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2fdeg is essentially at a singular point of S-wave propagation. However, the Rps computation is completed. \n", ang);		}						else if (errs==-2)		{		fprintf(out_inf_p,"\n !!! WARNING: incidence ANGLE=%4.2fdeg azimuth AZIM=%4.2fdeg is essentially at a singular point of S-wave propagation, the computation of Rps is terminated for this angle (ORT inc. halfspace). \n", ang,azim);		}			 }	}    /* Almost done - filling up the out_Error file */  fprintf(out_Error_p,"************************************************************* \n");  fprintf(out_Error_p,"******************* FAST TEST OF ACCURACY ******************* \n");  fprintf(out_Error_p,"************************************************************* \n");  fprintf(out_Error_p,"(The test is based on the comparison of 1st and 2nd order terms.) \n");  fprintf(out_Error_p,"(The test applies for the S-wave projection \"back=0\" only.) \n");  if(back == 0){		/* P COEFFICIENT FIRST */	fprintf(out_Error_p,"\n Rpp COEFFICIENT:  \n");	fprintf(out_Error_p,"****************** \n");	/* P isotropic */	fprintf(out_Error_p,"\n A) Isotropic component (due to velocity and density contrasts):  \n");	fprintf(out_Error_p,"\n Inc. Angle: \t \t	15deg	20deg	25deg	30deg	35deg \n");	fprintf(out_Error_p," ----------------------------------------------------------------------------- \n");	fprintf(out_Error_p," Exact: \t \t %7.4f	%7.4f	%7.4f	%7.4f	%7.4f \n",		Rp_2nd.iso[0],Rp_2nd.iso[1],Rp_2nd.iso[2],Rp_2nd.iso[3], Rp_2nd.iso[4]);	fprintf(out_Error_p," Approximation: \t %7.4f	%7.4f	%7.4f	%7.4f	%7.4f	\n",		Rp_1st.iso[0],Rp_1st.iso[1],Rp_1st.iso[2],Rp_1st.iso[3], Rp_1st.iso[4]);	fprintf(out_Error_p," ------------------------------------------------------------------------------ \n");	Max=0.;  	for(n=0; n < 5 ; n++){	if(fabs(Rp_2nd.iso[n]) > 0.0001){	Iso_e[n]=(Rp_1st.iso[n]/Rp_2nd.iso[n]-1)*100.;	Max = fabs(Max) > fabs(Iso_e[n]) ? Max : Iso_e[n];	}	else{	Iso_e[n]=999.9;	}	}

⌨️ 快捷键说明

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