±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 626  |  »Ø¸´: 2

³æ×Ó¾«Éñ

гæ (³õÈëÎÄ̳)

[ÇóÖú] ³ÌÐò³öÏÖ´íÎó Çë´ó¼Ò°ïæ½â¾ö лл£¡ ÒÑÓÐ1È˲ÎÓë

This program is used to the Elastic-Plastic Waves in one-dimensional rods.
      parameter(ke=1000,nmax=900)
        dimension s(ke),u(ke),e(ke),f(ke),mf(ke)
        real time(0:nmax),xl(nmax),xr(nmax)
        real sr(0:ke),ur(0:ke),st(3),ut(3),ft(2)

ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
      rh0=1.0
        c0=1.0
        fk0=1.0
        en=1.3
        dx=0.01
        dt=dx/c0
        do 10 k=1,ke
        s(k)=0.
      u(k)=0.
      e(k)=0.
      f(k)=fk0
      mf(k)=0.
10    continue
      time(0)=0.
        do 900 n=1,nmax
        write(*,*)'n=',n

ccccccccccccccccccRiemann problem for flux  cccccccccccccccccccccccccccccccccccccccccccccccccc
      do 100 k=1,ke-1
        st(1)=s(k)
        ut(1)=u(k)
        ft(1)=f(k)
        st(2)=s(k+1)
        ut(2)=u(k+1)
        ft(2)=f(k+1)
        call riem(st,ut,ft)
      sr(k)=st(3)
        ur(k)=ut(3)
100   continue

cccccccccccccccccccleft boundary condition  ccccccccccccccccccc
      call left(n,dt,simpt)
        sr(0)=simpt
      ur(0)=u(1)+dt/(rh0*dx)*(s(1)-simpt)

cccccccccccccccc right boundary condition cccccccccccccccccccccc
      sr(ke)=0.
        ur(ke)=u(ke)+dt/(rh0*dx)*(0.-s(ke))

cccccccccccccc updating ccccccccccccccccccccccccccccccccccccccccccc
      time(n)=time(n-1)+dt
        do 200 k=1,ke
        u(k)=u(k)+dt/(rh0*dx)*(sr(k)-sr(k-1))
        de=dt/dx*(ur(k)-ur(k-1))
        e(k)=e(k)+de
        sig=s(k)+rh0*c0*c0*de
        if (abs(sig).lt.f(k))then
        s(k)=sig
        test=(f(k)-abs(sig))/fk0
        if((mf(k).eq.1).and.(test.gt.0.05)) then
        mf(k)=2
        goto 200
        end if
        sa=f(k)
        if(sig.lt.0) then
      sa=-sa
        de1=de-(sa-s(k))/(rh0*c0*c0)
        nk=5.+abs(de1)*rh0*c0*c0/fk0*200
        dde=de1/float(nk)
        do 150 i=1,nk
        ff=abs(sa)
        ep=en*rh0*c0*c0*(ff/fk0)**(1.-1./en)
        sa=sa+ep*dde
150   continue
      s(k)=sa
        f(k)=abs(sa)
        if((mf(k).eq.0).and.((f(k)/fk0).gt.1.01)) then
        mf(k)=1
200   continue
      xl(n)=0.
        xr(n)=0.
        do 300 k=1,ke
        if(mf(k).eq.2) xl(n)=k*dx
      if(mf(k).eq.1) xr(n)=(k-1.)*dx
300   continue
      
        if((n.eq.200).or.(n.eq.240).or.(n.eq.400))then
        nput=n/10
        write(nput,*)'one-dimensional rod problem'
        write(nput,*)'stress distribution as t=',time(n)
        do 950 k=1,350,4
        write(nput,1100) (k-0.5)*dx,-s(k)
950   continue
      end if
900   continue
      write(12,*)'elastic-plastic boundary,loading,0.01'
      write(14,*)'elastic-plastic boundary,unloading,0.05'
        do 910 n=1,nmax,10
        if(x1(n).gt.0.03) write(14,1100) x1(n),time(n)
      if(xr(n).gt.0.03) write(12,1100) xr(n),time(n)
910   continue
1100  format(2f7.3,'*100')
      end

cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

      subroutine riem(s,u,f)
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c     a subroutine for solving Riemann problem
c     The output is the second-order flux
      real s(3),u(3),f(2),ss(2,1010),cc(2,1010)
        dimension nn(1010)
ccccccccccccccccwhen CFL=1,CO=dx/dt ccccccccccccccccccccc
      u(3)=(u(1)+u(2))/2.+(s(2)-s(1))/(2.*rh0*c0)
        s(3)=(s(1)+s(2))/2.+rh0*c0*(u(2)-u(1))/2.
        sig=s(3)
      if((abs(sig).le.f(1)).and.(abs(sig).le.f(2))) return
        en1=(en-1.)/(2.*en)
1     do 200 m=1,2
      ss(m,1)=s(m)
        cc(m,1)=c0
        if(abs(sig).le.f(m))then
        ss(m,2)=sig
        cc(m,2)=c0
        nn(m)=2
        goto 200
        end if

        sa=f(m)
        if(sig.lt.0) sa=-sa
        ss(m,2)=sa
        nk=5+(abs(sig)-f(m))/fk0*200
        if(nk.gt.1000) nk=1000
        ds=(sig-sa)/float(nk)

        do 100 i=1,nk
        ss(m,i+2)=sa+float(i)*ds
        ff=abs(sa+(i-0.5)*ds)
        cc(m,i+1)=c0*sqrt(en)*(ff/fk0)**en1
100   continue

      ff=abs(ss(m,nk+2))
        cc(m,nk+2)=c0*sqrt(en)*(ff/fk0)**en1
        nn(m)=nk+2
200   continue

      sum=u(2)-u(1)
        do 310 m=1,2
        do 300 i=1,nn(m)-1
        sum=sum-(ss(m,i+1)-ss(m,i))/(rh0*cc(m,i))
300   continue
310   continue

      rr=1./(rh0*cc(1,nn(1)))+1./(rh0*cc(2,nn(2)))
        sum=sig+sum/rr
        if((abs(sum-sig)/fk0).le.1e-6) goto 500
        sig=sum
        goto 1
500   s(3)=s(1)+s(2)
      do 560 m=1,2
        do 560 i=1,nn(m)-1
        s(3)=s(3)+(cc(m,i)/c0)*(ss(m,i+1)-ss(m,i))
560   continue
      s(3)=s(3)/2
        return
        end
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
      subroutine left(n,dt,simpt)
ccccccccccccc  left boundary condition ccccccccccccccc
      t=float(n)*dt
        if(t.le.2.0001) then
        simpt=-3.*fk0
        else
        simpt=0.
        end if
        return
        end

³öÏֵĴíÎóÈçÏÂ
Configuration: wave1D - Win32 Debug--------------------
Compiling Fortran...
E:\wave\chengxu\wave1D\wave1D.for
E:\wave\chengxu\wave1D\wave1D.for(49) : Warning: A jump into a block from outside the block has occurred.   [800]
do 800 k=1,ke
-----------^
E:\wave\chengxu\wave1D\wave1D.for(76) : Error: An unterminated If or DO statement exists.
800   continue
^
E:\wave\chengxu\wave1D\wave1D.for(76) : Error: An unterminated If or DO statement exists.
800   continue
^
E:\wave\chengxu\wave1D\wave1D.for(76) : Error: An unterminated If or DO statement exists.
800   continue
^
Error executing df.exe.

wave1D.obj - 3 error(s), 1 warning(s)
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

fxj126

ľ³æ (СÓÐÃûÆø)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
do¸úif½áÊø¶¼Òª endif enddo ½¨Ò鲻Ҫдend ·Ö¿ªÐ´±È½ÏÇå³þ
2Â¥2016-01-22 09:49:57
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

fmying

Òø³æ (СÓÐÃûÆø)

Ϊʲô¾Íû¿´µ½ÄãÌù³öµÄ³ÌÐòÖÐÓÐ
do 800 k = 1,ke
ºÍ
800 continue
ÕâÁ½¾äÄØ£¿
ÉÏÉÆÈôË®
3Â¥2016-01-24 21:53:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ ³æ×Ó¾«Éñ µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Ò»Ö¾Ô¸°²»Õ´óѧ¼ÆËã»ú¿ÆÑ§Óë¼¼Êõѧ˶£¬331·ÖÇóµ÷¼Á +3 ½¯²ýÅôqtj 2026-04-01 3/150 2026-04-01 23:56 by ÒåÎÄwang
[¿¼ÑÐ] 0703»¯Ñ§338Çóµ÷¼Á£¡ +8 Zuhui0306 2026-03-26 9/450 2026-04-01 21:59 by xhai2011
[¿¼ÑÐ] 286Çóµ÷¼Á +5 Sa67890. 2026-04-01 7/350 2026-04-01 19:50 by 6781022
[¿¼ÑÐ] µ÷¼Á +5 ºÃºÃ¶ÁÊé¡£ 2026-03-28 7/350 2026-04-01 15:32 by ÍõÁÁ_´óÁ¬Ò½¿Æ´ó
[¿¼ÑÐ] Ò»Ö¾Ô¸Ö£´ó085600£¬310·ÖÇóµ÷¼Á +6 Àîäì¿É 2026-03-26 6/300 2026-04-01 14:44 by chenqifeng666
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤µ÷¼ÁÒ»Ö¾Ô¸´óÁ¬º£ÊÂ085600£¬349 +9 ³ÔµÄ²»ÉÙ 2026-03-30 9/450 2026-04-01 11:24 by wangjy2002
[¿¼ÑÐ] 326Çóµ÷¼Á +4 áÌáÌ×Ð 2026-03-31 4/200 2026-04-01 09:58 by ÎҵĴ¬Îҵĺ£
[¿¼ÑÐ] 349Çóµ÷¼Á +6 zwjjjjjj 2026-03-31 6/300 2026-04-01 09:16 by JourneyLucky
[¿¼ÑÐ] ¿¼ÑÐÉúÎïÓëÒ½Ò©µ÷¼Á +7 Ìúº©º©123425 2026-03-31 7/350 2026-04-01 08:45 by JourneyLucky
[¿¼ÑÐ] 080200ѧ˶£¬»úе¹¤³Ìרҵ277·Ö£¬Çó´ø×ߣ¡ +4 Æ¿×ÓPZ 2026-03-31 4/200 2026-03-31 20:16 by vgtyfty
[¿¼ÑÐ] Ò»Ö¾Ô¸»ª¶«Àí¹¤´óѧ£¬080500ѧ˶£¬317·Ö£¬Çóµ÷¼Á +9 s1145 2026-03-31 9/450 2026-03-31 18:47 by JourneyLucky
[¿¼ÑÐ] ±§Ç¸ +3 ÌïºéÓÐ 2026-03-30 3/150 2026-03-30 19:11 by ÃÔºýCCPs
[¿¼ÑÐ] 334·Ö Ò»Ö¾Ô¸ÎäÀí ²ÄÁÏÇóµ÷¼Á +16 ÀîÀî²»·þÊä 2026-03-26 16/800 2026-03-30 17:47 by wangjy2002
[¿¼ÑÐ] 340Çóµ÷¼Á +6 Amber00 2026-03-26 6/300 2026-03-29 12:06 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 086000ÉúÎïÓëÒ½Ò©µ÷¼Á +5 Feisty¡£ 2026-03-28 9/450 2026-03-29 12:02 by longlotian
[¿¼ÑÐ] 11408Èí¼þ¹¤³ÌÇóµ÷¼Á +3 Qiuѧing 2026-03-28 3/150 2026-03-28 21:50 by zhq0425
[¿¼ÑÐ] 081200-314 +3 LILIQQ 2026-03-27 4/200 2026-03-28 09:41 by ±£»¤µØÇòÄãÎÒ×öÆ
[¿¼ÑÐ] 340Çóµ÷¼Á +5 jhx777 2026-03-27 5/250 2026-03-28 04:18 by fmesaito
[¿¼ÑÐ] 295Çóµ÷¼Á +5 1428151015 2026-03-27 6/300 2026-03-28 04:04 by fmesaito
[¿¼ÑÐ] 341Çóµ÷¼Á +7 ÇàÄûÃÊ1 2026-03-26 7/350 2026-03-27 00:19 by wxiongid
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û