dxm2d_a_12.f
上传用户:ls4004p
上传日期:2007-08-05
资源大小:2314k
文件大小:2k
源码类别:

并行计算

开发平台:

Matlab

  1. C**********************************************************************
  2. C       D X M 2 D _ A ( adding results to output-field )
  3. C
  4. C       Joachim Falk , Uni Hamburg , (0049)/(0) - 40 / 4123 5047
  5. C       Institute for Geophysics
  6. C       11.07.1996
  7. C       email   falk@dkrz.de
  8. C
  9. C       ZA, ZE = first and last grid-row    of differentiation
  10. C       SA, SE = first and last grid-column of dIFferentiation
  11. C**********************************************************************
  12.       SUBROUTINE DXM2D_A(IN,OUT,MF, nx, nz, dx, ZA, ZE, SA, SE)  
  13.       IMPLICIT NONE  
  14.       INCLUDE 'param.f'
  15.       REAL IN(MAXCOLS,MAXROWS), OUT(MAXCOLS,MAXROWS),
  16.      &     MF(MAXCOLS,MAXROWS), G1, G2, G3, G4, G5, G6, F1, dx
  17.       INTEGER nx, nz, r, c, INIT,
  18.      &        ZA, ZE, SA, SE
  19.       
  20.       SAVE F1, G1, G2, G3, G4, G5, G6, INIT
  21.       DATA INIT /0/  
  22.            
  23.       IF (INIT .eq. 0) THEN  
  24.          INIT =   1  
  25.          F1   =   1. / dx          
  26.          G1   =   1.22133636474609     / dx
  27.          G2   =  -0.09693145751953116 / dx
  28.          G3   =   0.01744766235351561 / dx
  29.          G4   =  -2.967289515904012E-3 /dx
  30.          G5   =   3.590053982204854E-4 /dx
  31.          G6   =  -2.184781161221585E-5 /dx
  32.       ENDIF  
  33.       DO r = ZA , ZE  
  34.          DO c = SA , SA+5
  35.             OUT(c,r) = MF(c,r)*(OUT(c,r)+F1*(IN(c,r)-IN(c-1,r)))
  36.          ENDDO  
  37.          DO c = SA+6 , SE-5
  38.             OUT(c,r) = MF(c,r) * (OUT(c,r) + 
  39.      &          G1 * (IN(c  ,r) - IN(c-1,r)) +  
  40.      &          G2 * (IN(c+1,r) - IN(c-2,r)) +  
  41.      &          G3 * (IN(c+2,r) - IN(c-3,r)) +
  42.      &          G4 * (IN(c+3,r) - IN(c-4,r)) +
  43.      &          G5 * (IN(c+4,r) - IN(c-5,r)) +
  44.      &          G6 * (IN(c+5,r) - IN(c-6,r)) )
  45.          ENDDO
  46.          DO c = SE-4 , SE
  47.             OUT(c,r) = MF(c,r)*(OUT(c,r)+F1*(IN(c,r)-IN(c-1,r)))  
  48.          ENDDO  
  49.       ENDDO 
  50.       
  51.       RETURN
  52.       END