将下列Fortran代码转化成C代码 SUBROUTINE GetBOLForceBOLForceBOLFBRCFAvgDisRBOLDIS & L0NENKXNYNZNX0Y0Z0IIIINVCRIIBOLLengthBOL & CORNXCORNYZNMINLULVKUKVNumNAEINQQ IMPLICIT NONE INTEGER L0NENK
#include<stdlib.h> #include<math.h> #define LengthBOL 1000 #define L0 1000 #define NE 1000 #define NK 1000
void GetBOLForce(double BOLForce[LengthBOL][3],double BOLF,double BRCF[L0],double AvgDis,double RBOLDIS, int L0,int NE,int NK,double XN[L0],double YN[L0],double ZN[L0],double X0[L0],double Y0[L0],double Z0[L0],int IIIIN[NE][NK],double VCR[NE][3],int IIBOL[LengthBOL][4], double CORNX,double CORNY,double ZNMIN,int LU[KU],int LV[KV],int NumNAE[L0],int INQQ[L0]){
int I,II,JJ,NumEle,IXBOL[3],node[4],ID1,ID2;
double EleNormal[3],SideDir[3],DisSide,FinalBRCF;
double SideForce,SideForce1,SideForce2;
double BRCValue,AutoBRCF,UserBRCF,Final;
double BOLEleNorm[3],EleBOLF1[3],EleBOLF2[3],BOLPP;
int iTriQuadr;
int IBOL,IBOL1,IBOL2;
double US1,US2,US3,USN,USD,DEP1,DEP2;
int NodeMap;
int ISysNode;
int *PTR_ISysNode;
PTR_ISysNode = malloc(L0 * sizeof(int));
if(PTR_ISysNode==0){
return;
}
BOLPP=300.0;
if(RBOLDIS>=2.0&&RBOLDIS< 4.0){
BOLPP=350.0;
}
if(RBOLDIS>=4.0&&RBOLDIS< 5.0){
BOLPP=400.0;
}
if(RBOLDIS>=5.0&&RBOLDIS< 6.0){
BOLPP=450.0;
}
if(RBOLDIS>=6.0&&RBOLDIS< 7.0){
BOLPP=500.0;
}
if(RBOLDIS>=7.0&&RBOLDIS< 8.0){
BOLPP=550.0;
}
if(RBOLDIS>=8.0&&RBOLDIS< 9.0){
BOLPP=600.0;
}
if(RBOLDIS>=9.0&&RBOLDIS<10.0){
BOLPP=650.0;
}
if(RBOLDIS>=10.0&&RBOLDIS<20.0){
BOLPP=700.0;
}
if(RBOLDIS>=20.0){
BOLPP=750.0;
}
for(II=0;II<LengthBOL;II++){
BOLForce[II][0]=0.0;
BOLForce[II][1]=0.0;
BOLForce[II][2]=0.0;
}
for(II=0;II<LengthBOL;II++){
IXBOL[0]=IIBOL[II][0];
IXBOL[1]=IIBOL[II][1];
NumEle=IIBOL[II][3];
if(NumEle != 0){
EleNormal[0]=VCR[NumEle][0];
EleNormal[1]=VCR[NumEle][1];
EleNormal[2]=VCR[NumEle][2];
node[0]=IIIIN[NumEle][0];
node[1]=IIIIN[NumEle][1];
node[2]=IIIIN[NumEle][2];
node[3]=IIIIN[NumEle][3];
if( IIIIN[NumEle][2] == IIIIN[NumEle][3] ){
iTriQuadr=3;
}else{
iTriQuadr=4;
}
for(JJ=0;JJ<iTriQuadr;JJ++){
if( IXBOL[0] == node[JJ] ){
ID1=JJ;
}
if( IXBOL[1] == node[JJ] ){
ID2=JJ;
}
}
if(abs(ID1-ID2)==1){
if(ID1<ID2){
SideDir[0]=XN[IXBOL[1]]-XN[IXBOL[0]];
SideDir[1]=YN[IXBOL[1]]-YN[IXBOL[0]];
SideDir[2]=ZN[IXBOL[1]]-ZN[IXBOL[0]];
}else{
SideDir[0]=XN[IXBOL[0]]-XN[IXBOL[1]];
SideDir[1]=YN[IXBOL[0]]-YN[IXBOL[1]];
SideDir[2]=ZN[IXBOL[0]]-ZN[IXBOL[1]];
}
}
if(iTriQuadr==3){
if(abs(ID1-ID2)==2){
if(ID1>ID2){
SideDir[0]=XN[IXBOL[1]]-XN[IXBOL[0]];
SideDir[1]=YN[IXBOL[1]]-YN[IXBOL[0]];
SideDir[2]=ZN[IXBOL[1]]-ZN[IXBOL[0]];
}else{
SideDir[0]=XN[IXBOL[0]]-XN[IXBOL[1]];
SideDir[1]=YN[IXBOL[0]]-YN[IXBOL[1]];
SideDir[2]=ZN[IXBOL[0]]-ZN[IXBOL[1]];
}
}
}
if(iTriQuadr==4){
if(abs(ID1-ID2)==3){
if(ID1>ID2){
SideDir[0]=XN[IXBOL[1]]-XN[IXBOL[0]];
SideDir[1]=YN[IXBOL[1]]-YN[IXBOL[0]];
SideDir[2]=ZN[IXBOL[1]]-ZN[IXBOL[0]];
}else{
SideDir[0]=XN[IXBOL[0]]-XN[IXBOL[1]];
SideDir[1]=YN[IXBOL[0]]-YN[IXBOL[1]];
SideDir[2]=ZN[IXBOL[0]]-ZN[IXBOL[1]];
}
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/fg9W 著作权归作者所有。请勿转载和采集!