/[lmdze]/trunk/libf/phylmd/Orography/grid_noro_m.f90
ViewVC logotype

Diff of /trunk/libf/phylmd/Orography/grid_noro_m.f90

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 27 by guez, Thu Mar 25 14:29:07 2010 UTC revision 52 by guez, Fri Sep 23 12:28:01 2011 UTC
# Line 1  Line 1 
1  module grid_noro_m  module grid_noro_m
2    
   ! Clean: no C preprocessor directive, no include line  
   
3    implicit none    implicit none
4    
   private mva9  
   
5  contains  contains
6    
7    SUBROUTINE grid_noro(xdata, ydata, zdata, x, y, zphi, zmea, zstd, zsig, &    SUBROUTINE grid_noro(xdata, ydata, zdata, x, y, zphi, zmea, zstd, zsig, &
# Line 41  contains Line 37  contains
37      !           (d)      !           (d)
38    
39      use dimens_m, only: iim, jjm      use dimens_m, only: iim, jjm
40      use comconst, only: pi      use nr_util, only: assert, pi
41      use numer_rec, only: assert      use mva9_m, only: mva9
42    
43      REAL, intent(in):: xdata(:), ydata(:) ! coordinates of input field      REAL, intent(in):: xdata(:), ydata(:) ! coordinates of input field
44      REAL, intent(in):: zdata(:, :) ! input field      REAL, intent(in):: zdata(:, :) ! input field
# Line 255  contains Line 251  contains
251            zxtzy(ii, jj)=zxtzy(ii, jj)/weight(ii, jj)            zxtzy(ii, jj)=zxtzy(ii, jj)/weight(ii, jj)
252            ztz(ii, jj)  =ztz(ii, jj)/weight(ii, jj)            ztz(ii, jj)  =ztz(ii, jj)/weight(ii, jj)
253            !  Standard deviation:            !  Standard deviation:
254            zstd(ii, jj)=sqrt(AMAX1(0., ztz(ii, jj)-zmea(ii, jj)**2))            zstd(ii, jj)=sqrt(MAX(0., ztz(ii, jj) - zmea(ii, jj)**2))
255         ENDDO         ENDDO
256      ENDDO      ENDDO
257    
# Line 274  contains Line 270  contains
270    
271      !  FIRST FILTER, MOVING AVERAGE OVER 9 POINTS.      !  FIRST FILTER, MOVING AVERAGE OVER 9 POINTS.
272    
273      CALL MVA9(zmea, iim+1, jjm+1)      CALL MVA9(zmea)
274      CALL MVA9(zstd, iim+1, jjm+1)      CALL MVA9(zstd)
275      CALL MVA9(zpic, iim+1, jjm+1)      CALL MVA9(zpic)
276      CALL MVA9(zval, iim+1, jjm+1)      CALL MVA9(zval)
277      CALL MVA9(zxtzx, iim+1, jjm+1)      CALL MVA9(zxtzx)
278      CALL MVA9(zxtzy, iim+1, jjm+1)      CALL MVA9(zxtzy)
279      CALL MVA9(zytzy, iim+1, jjm+1)      CALL MVA9(zytzy)
280    
281      ! Masque prenant en compte maximum de terre      ! Masque prenant en compte maximum de terre
282      ! On seuil a 10% de terre de terre car en dessous les parametres      ! On seuil a 10% de terre de terre car en dessous les parametres
# Line 396  contains Line 392  contains
392    
393    END SUBROUTINE grid_noro    END SUBROUTINE grid_noro
394    
   !******************************************  
   
   SUBROUTINE MVA9(X, IMAR, JMAR)  
   
     ! From dyn3d/grid_noro.F, v 1.1.1.1 2004/05/19 12:53:06  
   
     ! MAKE A MOVING AVERAGE OVER 9 GRIDPOINTS OF THE X FIELDS  
   
     integer, intent(in):: imar, jmar  
     REAL, intent(inout):: X(IMAR, JMAR)  
   
     integer, PARAMETER:: ISMo=300, JSMo=200  
     real XF(ISMo, JSMo)  
     real WEIGHTpb(-1:1, -1:1)  
     real my_sum  
     integer i, is, js, j  
   
     if(imar>ismo) stop 'surdimensionner ismo dans mva9 (grid_noro)'  
     if(jmar>jsmo) stop 'surdimensionner jsmo dans mva9 (grid_noro)'  
   
     MY_SUM=0.  
     DO IS=-1, 1  
        DO JS=-1, 1  
           WEIGHTpb(IS, JS)=1./FLOAT((1+IS**2)*(1+JS**2))  
           MY_SUM=MY_SUM+WEIGHTpb(IS, JS)  
        ENDDO  
     ENDDO  
   
     DO IS=-1, 1  
        DO JS=-1, 1  
           WEIGHTpb(IS, JS)=WEIGHTpb(IS, JS)/MY_SUM  
        ENDDO  
     ENDDO  
   
     DO J=2, JMAR-1  
        DO I=2, IMAR-1  
           XF(I, J)=0.  
           DO IS=-1, 1  
              DO JS=-1, 1  
                 XF(I, J)=XF(I, J)+X(I+IS, J+JS)*WEIGHTpb(IS, JS)  
              ENDDO  
           ENDDO  
        ENDDO  
     ENDDO  
   
     DO J=2, JMAR-1  
        XF(1, J)=0.  
        IS=IMAR-1  
        DO JS=-1, 1  
           XF(1, J)=XF(1, J)+X(IS, J+JS)*WEIGHTpb(-1, JS)  
        ENDDO  
        DO IS=0, 1  
           DO JS=-1, 1  
              XF(1, J)=XF(1, J)+X(1+IS, J+JS)*WEIGHTpb(IS, JS)  
           ENDDO  
        ENDDO  
        XF(IMAR, J)=XF(1, J)  
     ENDDO  
   
     DO I=1, IMAR  
        XF(I, 1)=XF(I, 2)  
        XF(I, JMAR)=XF(I, JMAR-1)  
     ENDDO  
   
     DO I=1, IMAR  
        DO J=1, JMAR  
           X(I, J)=XF(I, J)  
        ENDDO  
     ENDDO  
   
   END SUBROUTINE MVA9  
   
395  end module grid_noro_m  end module grid_noro_m

Legend:
Removed from v.27  
changed lines
  Added in v.52

  ViewVC Help
Powered by ViewVC 1.1.21