24小时热门版块排行榜    

查看: 570  |  回复: 0

meigudengfei

新虫 (初入文坛)

[求助] 颗粒碰撞求指导

PI=3.1415926
        KN=800.0                 !颗粒硬度       
        DPI=0.004                !颗粒直径
C        DENPP=1500               !MI DU
        AM=DENPP*PI*DPI**3/6.0         !ZI LIANG
C      MIU=-2.0*LOG(E)*SQRT(M*KN/(PI**2+LOG(E)**2))     !阻尼系数
C        MIU=2.0*SQRT(M/KN)
C        PRINT*,'M=',M,'MIU=',MIU
        MIU=0.17                       
        DO I=1,MM-1          !搜索发生碰撞
        DO J=I+1,MM
        BM=SQRT((XP(J)-XP(I))**2+(YP(J)-YP(I))**2)
        IF(DPI-BM.GT.0.00001.AND.BM.NE.0.0)  THEN
        VN=((UP(I)-UP(J))*(XP(J)-XP(I))+(VP(I)-VP(J))  !法向相对速度
     $ *(YP(J)-YP(I)))/BM
        DIST=DPI-BM
        IF(DIST.GE.0.5*DPI)  DIST=0.75*DPI
        COL=-KN*DIST-MIU*VN
        FX=COL*(XP(J)-XP(I))/BM      !碰撞产生x方向的作用力
        FY=COL*(YP(J)-YP(I))/BM      !碰撞产生y方向的作用力         
        AX1(I,J)=FX/AM            !统计加速度
        AY1(I,J)=FY/AM
        AX1(J,I)=-AX1(I,J)
        AY1(J,I)=-AY1(I,J)
C        IF(AY1(I,J).GT.100.0) PRINT*,'AY1(I,J)=',AY1(I,J),I,J
        ENDIF
        ENDDO
        ENDDO
       
        DO I=1,MM                !每个颗粒受到的合加速度
        DO J=1,MM
        IF(AX1(I,J).NE.0.0.OR.AY1(I,J).NE.0.0)  THEN
        AX(I)=AX(I)+AX1(I,J)
        AY(I)=AY(I)+AY1(I,J)
        ENDIF
        ENDDO
        ENDDO
C        IF(TOLTIME.GT.1.0E-2)  PRITN*,'AY(50)=',AY(50),'AY(100)=',AY(100)
        DO I=1,MM               !计算碰撞后颗粒的速度
        IF(AX(I).NE.0.0)  THEN
        UP(I)=UP(I)+AX(I)*DTT
        ENDIF
        IF(AY(I).NE.0.0)  THEN
        VP(I)=VP(I)+AY(I)*DTT
        ENDIF
        UPI(I)=UP(I)               !下一时刻初的颗粒位置和速度
        VPI(I)=VP(I)
        XPI(I)=XP(I)
        YPI(I)=YP(I)






上面的这段程序是处理无粘性颗粒碰撞之后的运动过程,现在由于我要处理有粘性颗粒碰撞的运动过程,需要考虑上一时间步长已经碰撞的颗粒(比如i,j颗粒碰撞)在下一时间步长他们是否还在碰撞,怎么处理,希望懂的人可以给点指导
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 meigudengfei 的主题更新
信息提示
请填处理意见