fanky 发表于 2006-6-15 21:41:55

求助bound的有关问题

我需要计算某一物体在一变边界条件下的温度场,其边界条件为
if(t.le.60)bound=100
if(t.gt.60).and.(t.le.120)bound=150
if(t.gt.120)bound=160
请问是不是只要更改bft.for里的bft.epg文件就可以了,我的bft.epg文件显示为:
DIMENSION NODVAR(KDGOF,KNODE),COOR(KCOOR,KNODE),
   *BF(KDGOF,KNODE),R(3)

C.......OPEN TIME File AND UPDATE THE TIME
      OPEN(1,FILE=' ',FORM='UNFORMATTED')
      READ(1) TMAX,DT,TIME,IT
      T = TIME+DT
      TIME = TIME+DT
      IT = IT+1
cc      WRITE(*,*) ' TMAX,DT,TIME,IT =',TMAX,DT,TIME,IT
      REWIND(1)
      WRITE(1) TMAX,DT,TIME,IT
      CLOSE(1)

C.......OPEN COOR file
      OPEN (1,FILE=' ',FORM='UNFORMATTED',STATUS='OLD')
      READ (1) KNODE,NCOOR,((COOR(I,J),I=1,NCOOR),J=1,KNODE)
      CLOSE(1)

C.......OPEN NODVAR file
      OPEN (1,FILE=' ',FORM='UNFORMATTED',STATUS='OLD')
      READ (1) ((NODVAR(I,J),I=1,KDGOF),J=1,KNODE)
      CLOSE (1)
C   WRITE(*,*) 'KNODE =',KNODE,' KDGOF =',KDGOF
C   WRITE (*,*) 'NODVAR ='
C   WRITE (*,6) ((NODVAR(I,J),I=1,KDGOF),J=1,KNODE)

C......COMPUTE BOUNDARY CONDITION
      DO 333 N=1,KNODE
      DO 100 J=1,NCOOR
100   R(J) = COOR(J,N)
      DO 200 J=1,KDGOF
      ID = NODVAR(J,N)
      BF(J,N) = 0.0
      IF (ID.LT.0) BF(J,N) = BOUND(R,T,J)
C   IF (ID.GT.0) BF(J,N) = FORCE(R,T,J)
200   CONTINUE
333   CONTINUE
CC      WRITE(*,*) ' BF = '
CC      WRITE(*,'(6F13.3)') ((BF(J,N),J=1,KDGOF),N=1,KNODE)

C.......OPEN BFD file and WRITE BOUNDARY CONDITION
      OPEN (1,FILE=' ',FORM='UNFORMATTED',STATUS='unknown')
      WRITE(1) ((BF(I,J),I=1,KDGOF),J=1,KNODE)
      CLOSE (1)

C.......OPEN STOP file IF THE LAST TIME IS ARRIVED
      IF (TIME-TMAX.GT.-1.0d-20) THEN
      OPEN(1,FILE=' ',FORM='UNFORMATTED',STATUS='unknown')
      ENDIF
      END

      subroutine getname(name,IT)
      implicit real*8 (a-h,o-z)
      character name*12,ch3*3
c   IF (IT.LT.10) WRITE(UNIT=CH3,FMT='(I1)') IT
c   IF (IT.GE.10) WRITE(UNIT=CH3,FMT='(I2)') IT
c   IF (IT.GE.100) WRITE(UNIT=CH3,FMT='(I3)') IT
      call getext(it,ch3)
c   write(*,*) 'name =',name,'++++ CH3 =',CH3
      do 10 i=1,12
      if (name(i:i).eq.' ') then
      j=i
      goto 20
      endif
10    continue
20    continue
      if (j.gt.9) then
      write(*,*) 'Error, plot filename too long .......',name
      write(*,*) ' the length of name must be less or equal 8 character'
      stop 111
      endif
c   read(*,'(a3)') ch3
      name(j:j)='.'
      name(j+1:j+4)=ch3
c   write(*,*) 'plot filename = ',name
      return
      end

      subroutine getext(ii,ch3)
      implicit real*8 (a-h,o-z)
      character ch3*3
      it = ii
      ch3 = '   '
      k = 0
      if (ii.ge.100) then
      n = it/100
      k = k+1
      call getchar(n,k,ch3)
      it = it - n*100
      endif
      if (ii.ge.10) then
      n = it/10
      k = k+1
      call getchar(n,k,ch3)
      it = it - n*10
      endif
      n = it
      k = k+1
      call getchar(n,k,ch3)
      return
      end

      subroutine getchar(n,k,ch3)
      implicit real*8 (a-h,o-z)
      character ch3*3
      if (n.eq.0) ch3(k:k) = '0'
      if (n.eq.1) ch3(k:k) = '1'
      if (n.eq.2) ch3(k:k) = '2'
      if (n.eq.3) ch3(k:k) = '3'
      if (n.eq.4) ch3(k:k) = '4'
      if (n.eq.5) ch3(k:k) = '5'
      if (n.eq.6) ch3(k:k) = '6'
      if (n.eq.7) ch3(k:k) = '7'
      if (n.eq.8) ch3(k:k) = '8'
      if (n.eq.9) ch3(k:k) = '9'
      return
      end

东西很多,请问应该怎么修改呢,请高人指点,万分感激!!

wangxiongjian 发表于 2006-12-25 10:09:33

页: [1]
查看完整版本: 求助bound的有关问题