/[lmdze]/trunk/dyn3d/Dissipation/inidissip.f
ViewVC logotype

Diff of /trunk/dyn3d/Dissipation/inidissip.f

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

revision 57 by guez, Mon Jan 30 12:54:02 2012 UTC revision 64 by guez, Wed Aug 29 14:47:17 2012 UTC
# Line 20  contains Line 20  contains
20      ! Initialisation de la dissipation horizontale. Calcul des valeurs      ! Initialisation de la dissipation horizontale. Calcul des valeurs
21      ! propres des opérateurs par méthode itérative.      ! propres des opérateurs par méthode itérative.
22    
23      USE comconst, ONLY : dtvr      USE comconst, ONLY: dtvr
24      use comdissnew, only: lstardis, nitergdiv, nitergrot, niterh, tetagdiv, &      use comdissnew, only: nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, &
25           tetagrot, tetatemp           tetatemp
26      USE comvert, ONLY : preff, presnivs      USE comvert, ONLY: preff, presnivs
27      USE conf_gcm_m, ONLY : iperiod      USE conf_gcm_m, ONLY: iperiod
28      USE dimens_m, ONLY : iim, jjm, llm      USE dimens_m, ONLY: iim, jjm
29      use filtreg_m, only: filtreg      use filtreg_m, only: filtreg
30      use gradiv2_m, only: gradiv2      use gradiv2_m, only: gradiv2
31      use jumble, only: new_unit      use jumble, only: new_unit
32      USE paramet_m, ONLY : jjp1      USE paramet_m, ONLY: jjp1
33    
34      ! Variables local to the procedure:      ! Variables local to the procedure:
35      REAL zvert(llm), max_zvert ! no dimension      REAL zvert(llm), max_zvert ! no dimension
# Line 49  contains Line 49  contains
49      deltap = 1.      deltap = 1.
50      call random_number(zh)      call random_number(zh)
51      zh = zh - 0.5      zh = zh - 0.5
52      CALL filtreg(zh, jjp1, 1, 2, 1, .TRUE., 1)      CALL filtreg(zh, jjp1, 1, 2, 1, .TRUE.)
53    
54      DO l = 1, 50      DO l = 1, 50
55         IF (lstardis) THEN         CALL divgrad2(1, zh, deltap, niterh, divgra, -1.)
           CALL divgrad2(1, zh, deltap, niterh, divgra, -1.)  
        ELSE  
           CALL divgrad(1, zh, niterh, divgra, -1.)  
        END IF  
   
56         zllm = abs(maxval(divgra))         zllm = abs(maxval(divgra))
57         zh = divgra / zllm         zh = divgra / zllm
58      END DO      END DO
59    
60      IF (lstardis) THEN      cdivh = 1. / zllm
        cdivh = 1. / zllm  
     ELSE  
        cdivh = zllm**(- 1. / niterh)  
     END IF  
61      PRINT *, 'cdivh = ', cdivh      PRINT *, 'cdivh = ', cdivh
62    
63      PRINT *, 'Calcul des valeurs propres de gradiv'      PRINT *, 'Calcul des valeurs propres de gradiv'
64      call random_number(zu)      call random_number(zu)
65      zu = zu - 0.5      zu = zu - 0.5
66      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE., 1)      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE.)
67      call random_number(zv)      call random_number(zv)
68      zv = zv - 0.5      zv = zv - 0.5
69      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE., 1)      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE.)
70    
71      DO l = 1, 50      DO l = 1, 50
72         IF (lstardis) THEN         CALL gradiv2(zu, zv, nitergdiv, gx, gy, -1.)
           CALL gradiv2(zu, zv, nitergdiv, gx, gy, -1.)  
        ELSE  
           CALL gradiv(1, zu, zv, nitergdiv, gx, gy, -1.)  
        END IF  
   
73         zllm = max(abs(maxval(gx)), abs(maxval(gy)))         zllm = max(abs(maxval(gx)), abs(maxval(gy)))
74         zu = gx / zllm         zu = gx / zllm
75         zv = gy / zllm         zv = gy / zllm
76      end DO      end DO
77    
78      IF (lstardis) THEN      cdivu = 1. / zllm
        cdivu = 1. / zllm  
     ELSE  
        cdivu = zllm**(- 1. / nitergdiv)  
     END IF  
79      PRINT *, 'cdivu = ', cdivu      PRINT *, 'cdivu = ', cdivu
80    
81      PRINT *, 'Calcul des valeurs propres de nxgrarot'      PRINT *, 'Calcul des valeurs propres de nxgrarot'
82      call random_number(zu)      call random_number(zu)
83      zu = zu - 0.5      zu = zu - 0.5
84      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE., 1)      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE.)
85      call random_number(zv)      call random_number(zv)
86      zv = zv - 0.5      zv = zv - 0.5
87      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE., 1)      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE.)
88    
89      DO l = 1, 50      DO l = 1, 50
90         IF (lstardis) THEN         CALL nxgraro2(1, zu, zv, nitergrot, gx, gy, -1.)
           CALL nxgraro2(1, zu, zv, nitergrot, gx, gy, -1.)  
        ELSE  
           CALL nxgrarot(1, zu, zv, nitergrot, gx, gy, -1.)  
        END IF  
   
91         zllm = max(abs(maxval(gx)), abs(maxval(gy)))         zllm = max(abs(maxval(gx)), abs(maxval(gy)))
92         zu = gx / zllm         zu = gx / zllm
93         zv = gy / zllm         zv = gy / zllm
94      end DO      end DO
95    
96      IF (lstardis) THEN      crot = 1. / zllm
        crot = 1. / zllm  
     ELSE  
        crot = zllm**(- 1. / nitergrot)  
     END IF  
97      PRINT *, 'crot = ', crot      PRINT *, 'crot = ', crot
98    
99      ! Variation verticale du coefficient de dissipation :      ! Variation verticale du coefficient de dissipation :

Legend:
Removed from v.57  
changed lines
  Added in v.64

  ViewVC Help
Powered by ViewVC 1.1.21