C语言实现STRESAINA函数
void STRESAINA(double TTSG[][3], double H[], double UVN[], double XN[], double YN[], double ZN[], double Z0[], int IIII[][5], int ID_ELM[], double ANGLE[], double EP0[], double NE34[], double H0[], double EP12[][2], double SG12[][2], double STANALL[][6], double ATEAL[][11], int MATL[], int NE, int L0, int L2, int NK, int K0, int MAL, int NPRINT) {
double XX[4], YY[4], ZZ[4], IX[4], ID[8], PP[3][3], XT[4], YT[4], PDS[3][3], QQ[12], BBP[4], CCP[4], EP[3], DS[3][3], SS[3], AJF[2][2], STB[2], EPI[3][3], EPA[3][3], EPALL[6];
for(int II=0; II<NE; II++) {
PREMATnew(EEYM,VVPR,EP00,DKK,DNN,R00,R45,R90,ESS,ATEAL,MATL[II],MAL);
PRETREA2(XX,YY,ZZ,IX,ID,XN,YN,ZN,IIII,II,NE,L0,NK,K0);
PREPDS(PDS,R00,R45,R90,1);
if(NE34[II] == 3) {
LAMBDA3(PP,XT,YT,XX,YY,ZZ);
LQQAA3(QQ,UVN,ZN,Z0,ID,IX,PP,L0,L2,NK,K0);
FORMJB3(BBP,CCP,AJF,DAJ,XT,YT);
}
if(NE34[II] == 4) {
LAMBDA(PP,XT,YT,XX,YY,ZZ);
LQQAA(QQ,UVN,ZN,Z0,ID,IX,PP,L0,L2,NK,K0);
FORMJB(BBP,CCP,AJF,AA,XT,YT);
}
STRAINA(D1,D2,EP,H[II],EPZ,QQ,BBP,CCP,H0[II]);
EQUISTRA(EP0[II],EP,EPZ,ANGLE[II],R00,R45,R90);
DSMATnew(DS,PDS,ANGLE[II],EP0[II],EEYM,VVPR,EP00,DKK,DNN,ESS,ESN);
STRESS(SS,DS,EP);
for(int J=0; J<3; J++) {
TTSG[II][J] = SS[J];
}
SS123(STB,SS);
EP12[II][0] = log(D2);
EP12[II][1] = log(D1);
SG12[II][0] = STB[1];
SG12[II][1] = STB[0];
EPI[0][0] = EP[0];
EPI[1][1] = EP[1];
EPI[0][1] = EP[2];
EPI[1][0] = EP[2];
EPI[0][2] = 0.0;
EPI[2][0] = 0.0;
EPI[1][2] = 0.0;
EPI[2][1] = 0.0;
EPI[2][2] = 0.0;
BTDB(3,3,EPI,PP,EPA);
EPALL[0] = EPA[0][0];
EPALL[1] = EPA[1][1];
EPALL[2] = EPA[2][2];
EPALL[3] = EPA[0][1];
EPALL[4] = EPA[1][2];
EPALL[5] = EPA[2][0];
// Store strain into STANALL
STANALL[II][0] = EPALL[0];
STANALL[II][1] = EPALL[1];
STANALL[II][2] = EPALL[2];
STANALL[II][3] = EPALL[3];
STANALL[II][4] = EPALL[4];
STANALL[II][5] = EPALL[5];
}
}
该C语言代码实现了FORTRAN代码中STRESAINA函数的功能。代码中使用了一些与FORTRAN代码中相同变量名称的变量,例如TTSG, H, UVN, XN, YN, ZN, Z0, IIII, ID_ELM, ANGLE, EP0, NE34, H0, EP12, SG12, STANALL, ATEAL, MATL, NE, L0, L2, NK, K0, MAL, NPRINT。代码中也使用了一些与FORTRAN代码中不同的变量名称,例如XX, YY, ZZ, IX, ID, PP, XT, YT, PDS, QQ, BBP, CCP, EP, DS, SS, AJF, STB, EPI, EPA, EPALL。代码中还使用了一些与FORTRAN代码中相同的函数名称,例如PREMATnew, PRETREA2, PREPDS, LAMBDA3, LQQAA3, FORMJB3, LAMBDA, LQQAA, FORMJB, STRAINA, EQUISTRA, DSMATnew, STRESS, SS123, BTDB。代码中也使用了一些与FORTRAN代码中不同的函数名称,例如log。
该C语言代码的功能与FORTRAN代码中STRESAINA函数的功能相同,都是用于计算材料的应力应变关系。该代码可以被用于工程计算中,例如有限元分析。
为了使用该C语言代码,需要先定义代码中使用的变量和函数。例如,代码中使用了EEYM, VVPR, EP00, DKK, DNN, R00, R45, R90, ESS, ESN, D1, D2, EPZ, AA, DAJ等变量,以及PREMATnew, PRETREA2, PREPDS, LAMBDA3, LQQAA3, FORMJB3, LAMBDA, LQQAA, FORMJB, STRAINA, EQUISTRA, DSMATnew, STRESS, SS123, BTDB等函数。这些变量和函数需要根据实际情况进行定义。
总之,该C语言代码是一个将FORTRAN代码STRESAINA函数转化为C语言代码的示例,可以作为参考,以便于将其他FORTRAN代码转化为C语言代码。
原文地址: https://www.cveoy.top/t/topic/oq3Y 著作权归作者所有。请勿转载和采集!