转化为C代码 SUBROUTINE STRAINAD1D2EPHHEPZQQBBPCCPH0 IMPLICIT REAL8A-HO-Z DIMENSION EP3QQ12BBP4CCP4 UX=BBP1QQ1+BBP2QQ4+BBP3QQ7+BBP4QQ10 UY=CCP1QQ1+CCP2QQ4+CCP3QQ7+CCP4QQ10
#include<math.h> void STRAINA(double D1, double D2, double *EP, double &HH, double &EPZ, double *QQ, double *BBP, double *CCP, double H0){ double UX, UY, VX, VY, WX, WY, A, B, C, EE, FF, DL1, ADL1, SINOX1, COSOX1, DSC; double tempEP[3]; double tempQQ[12]; double tempBBP[4]; double tempCCP[4]; int i; for(i=0;i<3;i++) tempEP[i]=EP[i]; for(i=0;i<12;i++) tempQQ[i]=QQ[i]; for(i=0;i<4;i++){ tempBBP[i]=BBP[i]; tempCCP[i]=CCP[i]; } UX=tempBBP[0]*tempQQ[0]+tempBBP[1]*tempQQ[3]+tempBBP[2]*tempQQ[6]+tempBBP[3]*tempQQ[9]; UY=tempCCP[0]*tempQQ[0]+tempCCP[1]*tempQQ[3]+tempCCP[2]*tempQQ[6]+tempCCP[3]*tempQQ[9]; VX=tempBBP[0]*tempQQ[1]+tempBBP[1]tempQQ[4]+tempBBP[2]tempQQ[7]+tempBBP[3]tempQQ[10]; VY=tempCCP[0]tempQQ[1]+tempCCP[1]tempQQ[4]+tempCCP[2]tempQQ[7]+tempCCP[3]tempQQ[10]; WX=tempBBP[0]tempQQ[2]+tempBBP[1]tempQQ[5]+tempBBP[2]tempQQ[8]+tempBBP[3]tempQQ[11]; WY=tempCCP[0]tempQQ[2]+tempCCP[1]tempQQ[5]+tempCCP[2]tempQQ[8]+tempCCP[3]tempQQ[11]; A=(1.0-UX)(1.0-UX)+VXVX+WXWX; B=-UY(1.0-UX)-VX(1.0-VY)+WXWY; C=UYUY+(1.0-VY)(1.0-VY)+WYWY; EE=0.5(A+C); FF=0.5sqrt((A-C)(A-C)+4.0BB); D1=1.0/(sqrt(EE+FF)+1.0e-80); D2=1.0/(sqrt(EE-FF)+1.0e-80); DL1=1.0/D1/D1; ADL1=A-DL1; if(fabs(ADL1)<1.0e-6){ SINOX1=0.0; COSOX1=1.0; } if(fabs(ADL1)>=1.0e-6){ DSC=sqrt(BB/ADL1/ADL1+1.0); SINOX1=1.0/DSC; COSOX1=-B/ADL1/DSC; } tempEP[0]=log(D1)COSOX1COSOX1+log(D2)SINOX1SINOX1; tempEP[1]=log(D1)SINOX1SINOX1+log(D2)COSOX1COSOX1; tempEP[2]=(log(D1)-log(D2))COSOX1SINOX1; EPZ=log(1.0/(D1+1.0e-80)/(D2+1.0e-80)); HH=H0/(D1+1.0e-80)/(D2+1.0e-80); for(i=0;i<3;i++) EP[i]=tempEP[i]; for(i=0;i<12;i++) QQ[i]=tempQQ[i]; for(i=0;i<4;i++){ BBP[i]=tempBBP[i]; CCP[i]=tempCCP[i]; }
原文地址: https://www.cveoy.top/t/topic/fRsz 著作权归作者所有。请勿转载和采集!