/[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

trunk/libf/dyn3d/Dissipation/inidissip.f90 revision 64 by guez, Wed Aug 29 14:47:17 2012 UTC trunk/Sources/dyn3d/Dissipation/inidissip.f revision 137 by guez, Wed May 6 15:51:03 2015 UTC
# Line 8  module inidissip_m Line 8  module inidissip_m
8    
9    REAL dtdiss ! in s    REAL dtdiss ! in s
10    integer idissip ! période de la dissipation (en pas de temps)    integer idissip ! période de la dissipation (en pas de temps)
11    real tetaudiv(llm), tetaurot(llm), tetah(llm) ! in s    real tetaudiv(llm), tetaurot(llm), tetah(llm) ! in s-1
12    real cdivu, crot, cdivh    real cdivu, crot, cdivh
13    
14  contains  contains
# Line 23  contains Line 23  contains
23      USE comconst, ONLY: dtvr      USE comconst, ONLY: dtvr
24      use comdissnew, only: nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, &      use comdissnew, only: nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, &
25           tetatemp           tetatemp
26      USE comvert, ONLY: preff, presnivs      USE disvert_m, ONLY: preff, presnivs
27      USE conf_gcm_m, ONLY: iperiod      USE conf_gcm_m, ONLY: iperiod
28      USE dimens_m, ONLY: iim, jjm      USE dimens_m, ONLY: iim, jjm
29      use filtreg_m, only: filtreg      use divgrad2_m, only: divgrad2
30        use filtreg_scal_m, only: filtreg_scal
31        use filtreg_v_m, only: filtreg_v
32      use gradiv2_m, only: gradiv2      use gradiv2_m, only: gradiv2
33      use jumble, only: new_unit      use jumble, only: new_unit
34        use nxgraro2_m, only: nxgraro2
35      USE paramet_m, ONLY: jjp1      USE paramet_m, ONLY: jjp1
36    
37      ! Variables local to the procedure:      ! Variables local to the procedure:
# Line 43  contains Line 46  contains
46    
47      PRINT *, 'Call sequence information: inidissip'      PRINT *, 'Call sequence information: inidissip'
48      call random_seed(size=seed_size)      call random_seed(size=seed_size)
49      call random_seed(put=(/(0, ii = 1, seed_size)/))      call random_seed(put=(/(1, ii = 1, seed_size)/))
50    
51      PRINT *, 'Calcul des valeurs propres de divgrad'      PRINT *, 'Calcul des valeurs propres de divgrad'
52      deltap = 1.      deltap = 1.
53      call random_number(zh)      call random_number(zh)
54      zh = zh - 0.5      zh = zh - 0.5
55      CALL filtreg(zh, jjp1, 1, 2, 1, .TRUE.)      CALL filtreg_scal(zh, direct = .true., intensive = .true.)
56    
57      DO l = 1, 50      DO l = 1, 50
58         CALL divgrad2(1, zh, deltap, niterh, divgra, -1.)         CALL divgrad2(1, zh, deltap, niterh, divgra, -1.)
# Line 63  contains Line 66  contains
66      PRINT *, 'Calcul des valeurs propres de gradiv'      PRINT *, 'Calcul des valeurs propres de gradiv'
67      call random_number(zu)      call random_number(zu)
68      zu = zu - 0.5      zu = zu - 0.5
69      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE.)      CALL filtreg_scal(zu, direct = .true., intensive = .true.)
70      call random_number(zv)      call random_number(zv)
71      zv = zv - 0.5      zv = zv - 0.5
72      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE.)      CALL filtreg_v(zv, intensive = .true.)
73    
74      DO l = 1, 50      DO l = 1, 50
75         CALL gradiv2(zu, zv, nitergdiv, gx, gy, -1.)         CALL gradiv2(zu, zv, nitergdiv, gx, gy, -1.)
# Line 81  contains Line 84  contains
84      PRINT *, 'Calcul des valeurs propres de nxgrarot'      PRINT *, 'Calcul des valeurs propres de nxgrarot'
85      call random_number(zu)      call random_number(zu)
86      zu = zu - 0.5      zu = zu - 0.5
87      CALL filtreg(zu, jjp1, 1, 2, 1, .TRUE.)      CALL filtreg_scal(zu, direct = .true., intensive = .true.)
88      call random_number(zv)      call random_number(zv)
89      zv = zv - 0.5      zv = zv - 0.5
90      CALL filtreg(zv, jjm, 1, 2, 1, .FALSE.)      CALL filtreg_v(zv, intensive = .true.)
91    
92      DO l = 1, 50      DO l = 1, 50
93         CALL nxgraro2(1, zu, zv, nitergrot, gx, gy, -1.)         CALL nxgraro2(zu, zv, nitergrot, gx, gy, -1.)
94         zllm = max(abs(maxval(gx)), abs(maxval(gy)))         zllm = max(abs(maxval(gx)), abs(maxval(gy)))
95         zu = gx / zllm         zu = gx / zllm
96         zv = gy / zllm         zv = gy / zllm
# Line 104  contains Line 107  contains
107      tetaurot = zvert / tetagrot      tetaurot = zvert / tetagrot
108      tetah = zvert / tetatemp      tetah = zvert / tetatemp
109    
     call new_unit(unit)  
     open(unit, file="inidissip.csv", status="replace", action="write")  
     write(unit, fmt=*) '"tetaudiv (s)" "tetaurot (s)" "tetah (s)"' ! title line  
     do l = 1, llm  
        write(unit, fmt=*) tetaudiv(l), tetaurot(l), tetah(l)  
     end do  
     close(unit)  
     print *, 'Created file "inidissip.csv".'  
   
110      max_zvert = maxval(zvert)      max_zvert = maxval(zvert)
111      tetamin = min(1e6, tetagdiv / max_zvert, tetagrot / max_zvert, &      tetamin = min(1e6, tetagdiv / max_zvert, tetagrot / max_zvert, &
112           tetatemp / max_zvert)           tetatemp / max_zvert)
# Line 122  contains Line 116  contains
116      dtdiss = idissip * dtvr      dtdiss = idissip * dtvr
117      PRINT *, 'dtdiss = ', dtdiss, "s"      PRINT *, 'dtdiss = ', dtdiss, "s"
118    
119        call new_unit(unit)
120        open(unit, file="inidissip.csv", status="replace", action="write")
121    
122        ! Title line:
123        write(unit, fmt=*) '"presnivs (hPa)" "dtdiss * tetaudiv" ' &
124             // '"dtdiss * tetaurot" "dtdiss * tetah"'
125    
126        do l = 1, llm
127           write(unit, fmt=*) presnivs(l) / 100., dtdiss * tetaudiv(l), &
128                dtdiss * tetaurot(l), dtdiss * tetah(l)
129        end do
130        close(unit)
131        print *, 'Created file "inidissip.csv".'
132    
133    END SUBROUTINE inidissip    END SUBROUTINE inidissip
134    
135  end module inidissip_m  end module inidissip_m

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

  ViewVC Help
Powered by ViewVC 1.1.21