/[lmdze]/trunk/Sources/filtrez/inifilr.f
ViewVC logotype

Diff of /trunk/Sources/filtrez/inifilr.f

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

revision 140 by guez, Fri Jun 5 18:58:06 2015 UTC revision 143 by guez, Tue Jun 9 14:32:46 2015 UTC
# Line 32  contains Line 32  contains
32      USE dimens_m, ONLY : iim, jjm      USE dimens_m, ONLY : iim, jjm
33      USE dynetat0_m, ONLY : rlatu, rlatv, xprimu, grossismx      USE dynetat0_m, ONLY : rlatu, rlatv, xprimu, grossismx
34      use inifgn_m, only: inifgn, eignfnu, eignfnv      use inifgn_m, only: inifgn, eignfnu, eignfnv
35        use jumble, only: new_unit
36      use nr_util, only: pi      use nr_util, only: pi
37    
38      ! Local:      ! Local:
39      REAL dlatu(jjm)      REAL dlatu(jjm)
40      REAL rlamda(2: iim)      REAL rlamda(2: iim)
41      real eignvl(iim) ! eigenvalues      real eignvl(iim) ! eigenvalues
42      REAL lamdamax, cof      REAL cof
43      INTEGER i, j, k, kf      INTEGER i, j, k, kf, unit
44      REAL dymin, colat0      REAL colat0
45      REAL eignft(iim, iim), coff      REAL eignft(iim, iim), coff
46    
47      ! Filtering coefficients (lamda_max * cos(rlat) / lamda):      ! Filtering coefficients (lamda_max * cos(rlat) / lamda):
# Line 56  contains Line 57  contains
57    
58      CALL inifgn(eignvl)      CALL inifgn(eignvl)
59    
60      PRINT *, 'EIGNVL '      call new_unit(unit)
61      PRINT "(1X, 5E13.6)", eignvl      open(unit, file = "eignvl.txt", status = "replace", action = "write")
62        write(unit, fmt = *) EIGNVL
63        close(unit)
64    
65      ! compute eigenvalues and eigenfunctions      ! compute eigenvalues and eigenfunctions
66      ! compute the filtering coefficients for scalar lines and      ! compute the filtering coefficients for scalar lines and
# Line 68  contains Line 71  contains
71      ! is set equal to zero for the regular grid case      ! is set equal to zero for the regular grid case
72    
73      ! Calcul de colat0      ! Calcul de colat0
74        forall (j = 1:jjm) dlatu(j) = rlatu(j) - rlatu(j + 1)
75      DO j = 1, jjm      colat0 = min(0.5, minval(dlatu) / minval(xprimu(:iim)))
        dlatu(j) = rlatu(j) - rlatu(j + 1)  
     END DO  
   
     dymin = dlatu(1)  
     DO j = 2, jjm  
        dymin = min(dymin, dlatu(j))  
     END DO  
   
     colat0 = min(0.5, dymin / minval(xprimu(:iim)))  
   
76      PRINT *, 'colat0 = ', colat0      PRINT *, 'colat0 = ', colat0
77    
78      lamdamax = iim / (pi * colat0 / grossismx)      rlamda = iim / (pi * colat0 / grossismx) / sqrt(abs(eignvl(2: iim)))
79      rlamda = lamdamax / sqrt(abs(eignvl(2: iim)))      coefilu = 0.
80        coefilv = 0.
81      DO j = 1, jjm      coefilu2 = 0.
82         DO i = 1, iim      coefilv2 = 0.
           coefilu(i, j) = 0.  
           coefilv(i, j) = 0.  
           coefilu2(i, j) = 0.  
           coefilv2(i, j) = 0.  
        end DO  
     END DO  
83    
84      ! Determination de jfiltnu, jfiltnv, jfiltsu, jfiltsv      ! Determination de jfiltnu, jfiltnv, jfiltsu, jfiltsv
85    
     PRINT *, 'TRUNCATION AT ', iim  
   
86      DO j = 2, jjm / 2 + 1      DO j = 2, jjm / 2 + 1
87         IF (cos(rlatu(j)) / colat0 < 1. &         IF (cos(rlatu(j)) / colat0 < 1. &
88              .and. rlamda(iim) * cos(rlatu(j)) < 1.) jfiltnu = j              .and. rlamda(iim) * cos(rlatu(j)) < 1.) jfiltnu = j

Legend:
Removed from v.140  
changed lines
  Added in v.143

  ViewVC Help
Powered by ViewVC 1.1.21