Fortran Coder

查看: 49|回复: 0

[其他行业算法] 简单力场下粒子边界条件设置

[复制链接]

7

帖子

4

主题

0

精华

入门

F 币
40 元
贡献
27 点
发表于 2018-4-5 19:02:56 | 显示全部楼层 |阅读模式
我想通过微分方程求解有边界条件的力场下粒子的运动,但是不知道怎么设置加速度。
程序是这样的:
[Fortran] 纯文本查看 复制代码
        program main
        INTEGER*4 MTIME, MXPARM,NP, IDO, MC, istep
        PARAMETER (MXPARM=50,MTIME=5000000000, NP=50)
        REAL*8 Y(NP),YPRIME(NP)
        REAL*8 PARAM(MXPARM)
        real*8 t_stop, t_start,del_t
        REAL*8 TOL,T1,T2
        COMMON /blk/a
        external DIVPRK,DSET,FCN
        t_start=0d0
        t_stop=7d0
        del_t=0.1d0
        TOL=1.0D-3
ccccc初值:y(1)=x0=-12,y(2)=v0=3
        y(1)=-12
        y(2)=3
      CALL DSET(MXPARM, 0.0D0, PARAM, 1)
        PARAM(10)=1.0D0
        PARAM(4)=MTIME+1
        istep=0
        IDO=1
        T1=T_START
        mt=0
110        CONTINUE
c
        istep=istep+1
        T2=T1+DEL_T
        CALL DIVPRK(IDO,NP,FCN,T1,T2,TOL,PARAM,Y)
        write(*,*)t2,y(2),y(1)
              IF(T2<=T_STOP) GOTO 110
        print *,'end'
        stop
        end
      subroutine FCN (NP, T2, Y, YPRIME)
      INTEGER*4 NP
        REAL*8 Y(NP),YPRIME(NP)
      COMMON /blk/a
        a=2
      YPRIME(1) = Y(2)
      YPRIME(2) = a
      return
      end subroutine


其中y'(1)是对x求导,得到速度v
y'(2)是对v求导得到加速度a
我想随时间t2的增加,当x位置到达x>=10的时候加速度由2增加到10,这种变化,求指导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-4-22 18:39

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表