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

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

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

revision 26 by guez, Tue Mar 9 15:27:15 2010 UTC revision 39 by guez, Tue Jan 25 15:11:05 2011 UTC
# Line 13  module inidissip_m Line 13  module inidissip_m
13    
14  contains  contains
15    
16    SUBROUTINE inidissip(lstardis, nitergdiv, nitergrot, niterh, tetagdiv, &    SUBROUTINE inidissip
        tetagrot, tetatemp)  
17    
18      ! From dyn3d/inidissip.F, version 1.1.1.1 2004/05/19 12:53:06      ! From dyn3d/inidissip.F, version 1.1.1.1 2004/05/19 12:53:06
19      ! Initialisation de la dissipation horizontale                              ! Initialisation de la dissipation horizontale                        
20    
21      USE comconst, ONLY : dtvr      USE comconst, ONLY : dtvr
22        use comdissnew, only: lstardis, nitergdiv, nitergrot, niterh, tetagdiv, &
23             tetagrot, tetatemp
24      USE comvert, ONLY : preff, presnivs      USE comvert, ONLY : preff, presnivs
25      USE conf_gcm_m, ONLY : iperiod      USE conf_gcm_m, ONLY : iperiod
26      USE dimens_m, ONLY : jjm, llm      USE dimens_m, ONLY : jjm, llm
27      USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1      USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1
28      use new_unit_m, only: new_unit      use new_unit_m, only: new_unit
29        use filtreg_m, only: filtreg
     LOGICAL, intent(in):: lstardis  
     INTEGER, intent(in):: nitergdiv, nitergrot, niterh  
     REAL, intent(in):: tetagdiv, tetagrot, tetatemp  
30    
31      ! Variables local to the procedure:      ! Variables local to the procedure:
32      REAL zvert(llm)      REAL zvert(llm), max_zvert
33      REAL zh(ip1jmp1), zu(ip1jmp1), zv(ip1jm), deltap(ip1jmp1, llm)      REAL zh(ip1jmp1), zu(ip1jmp1), zv(ip1jm), deltap(ip1jmp1, llm)
34      REAL ullm, vllm, umin, vmin, zhmin, zhmax      REAL ullm, vllm, umin, vmin, zhmin, zhmax
35      REAL zllm, z1llm      REAL zllm, z1llm
36      INTEGER l, ij, idum, ii, unit      INTEGER l, ij, idum, ii, unit
37      REAL tetamin      REAL tetamin ! in s
38      REAL ran1      REAL ran1
39    
40      !-----------------------------------------------------------------------      !-----------------------------------------------------------------------
# Line 68  contains Line 66  contains
66      CALL filtreg(zh, jjp1, 1, 2, 1, .TRUE., 1)      CALL filtreg(zh, jjp1, 1, 2, 1, .TRUE., 1)
67    
68      CALL minmax(iip1*jjp1, zh, zhmin, zhmax)      CALL minmax(iip1*jjp1, zh, zhmin, zhmax)
69        IF (zhmin >= zhmax) THEN
70      IF (zhmin>=zhmax) THEN         PRINT *, 'zhmin zhmax', zhmin, zhmax
71         PRINT *, '  Inidissip  zh min max  ', zhmin, zhmax         print *, 'Problème générateur aléatoire dans inidissip'
72         STOP 'probleme generateur alleatoire dans inidissip'         STOP 1
73      END IF      END IF
74    
75      zllm = abs(zhmax)      zllm = abs(zhmax)
# Line 102  contains Line 100  contains
100      PRINT *, 'calcul des valeurs propres'      PRINT *, 'calcul des valeurs propres'
101    
102      DO  ii = 1, 2      DO  ii = 1, 2
   
103         DO ij = 1, ip1jmp1         DO ij = 1, ip1jmp1
104            zu(ij) = ran1(idum) - .5            zu(ij) = ran1(idum) - .5
105         END DO         END DO
# Line 162  contains Line 159  contains
159               crot = zllm**(-1./nitergrot)               crot = zllm**(-1./nitergrot)
160            END IF            END IF
161         END IF         END IF
   
162      END DO      END DO
163    
164      PRINT *, 'cdivu = ', cdivu      PRINT *, 'cdivu = ', cdivu
# Line 170  contains Line 166  contains
166      PRINT *, 'cdivh = ', cdivh      PRINT *, 'cdivh = ', cdivh
167    
168      ! Variation verticale du coefficient de dissipation :      ! Variation verticale du coefficient de dissipation :
169      zvert = 2. - 1. / (1. + (1. - preff / presnivs)**2)      zvert = 2. - 1. / (1. + (preff / presnivs - 1.)**2)
170        ! (between 1 and 2)
171    
172      tetaudiv = zvert / tetagdiv      tetaudiv = zvert / tetagdiv
173      tetaurot = zvert / tetagrot      tetaurot = zvert / tetagrot
# Line 184  contains Line 181  contains
181      close(unit)      close(unit)
182      print *, 'Created file "inidissip.csv".'      print *, 'Created file "inidissip.csv".'
183    
184      tetamin = min(1E6, minval(1. / tetaudiv), minval(1. / tetaurot), &      max_zvert = maxval(zvert)
185           minval(1. / tetah))      tetamin = min(1E6, tetagdiv / max_zvert, tetagrot / max_zvert, &
186             tetatemp / max_zvert)
187      PRINT *, 'tetamin = ', tetamin      PRINT *, 'tetamin = ', tetamin
188      idissip = max(iperiod, int(tetamin / (2 * dtvr * iperiod)) * iperiod)      idissip = max(1, int(tetamin / (2 * dtvr * iperiod))) * iperiod
189      PRINT *, 'idissip = ', idissip      PRINT *, 'idissip = ', idissip
190      dtdiss = idissip * dtvr      dtdiss = idissip * dtvr
191      PRINT *, 'dtdiss = ', dtdiss      PRINT *, 'dtdiss = ', dtdiss

Legend:
Removed from v.26  
changed lines
  Added in v.39

  ViewVC Help
Powered by ViewVC 1.1.21