#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]];
                }
            }
        }
    }
}
将下列Fortran代码转化成C代码 SUBROUTINE GetBOLForceBOLForceBOLFBRCFAvgDisRBOLDIS & L0NENKXNYNZNX0Y0Z0IIIINVCRIIBOLLengthBOL & CORNXCORNYZNMINLULVKUKVNumNAEINQQ	IMPLICIT NONE INTEGER L0NENK

原文地址: https://www.cveoy.top/t/topic/fg9W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录