source: LMDZ6/trunk/libf/dyn3d/dissip.f90 @ 5322

Last change on this file since 5322 was 5285, checked in by abarral, 3 weeks ago

As discussed internally, remove generic ONLY: ... for new _mod_h modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
RevLine 
[524]1!
[1987]2! $Id: dissip.f90 5285 2024-10-28 13:33:29Z abarral $
[524]3!
[5246]4SUBROUTINE dissip( vcov,ucov,teta,p, dv,du,dh )
5  !
[5281]6  USE comgeom_mod_h
[5280]7  USE comdissipn_mod_h
8  USE comdissnew_mod_h
[5246]9  USE comconst_mod, ONLY: dtdiss
[524]10
[5271]11  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
[5285]12USE paramet_mod_h
[5271]13IMPLICIT NONE
[524]14
15
[5246]16  ! ..  Avec nouveaux operateurs star :  gradiv2 , divgrad2, nxgraro2  ...
17                              ! (  10/01/98  )
[524]18
[5246]19  !=======================================================================
20  !
21  !   Auteur:  P. Le Van
22  !   -------
23  !
24  !   Objet:
25  !   ------
26  !
27  !   Dissipation horizontale
28  !
29  !=======================================================================
30  !-----------------------------------------------------------------------
31  !   Declarations:
32  !   -------------
[524]33
[5271]34
[5272]35
[524]36
[5246]37  !   Arguments:
38  !   ----------
[524]39
[5246]40  REAL,INTENT(IN) :: vcov(ip1jm,llm) ! covariant meridional wind
41  REAL,INTENT(IN) :: ucov(ip1jmp1,llm) ! covariant zonal wind
42  REAL,INTENT(IN) :: teta(ip1jmp1,llm) ! potential temperature
43  REAL,INTENT(IN) :: p(ip1jmp1,llmp1) ! pressure
44  ! ! tendencies (.../s) on covariant winds and potential temperature
45  REAL,INTENT(OUT) :: dv(ip1jm,llm)
46  REAL,INTENT(OUT) :: du(ip1jmp1,llm)
47  REAL,INTENT(OUT) :: dh(ip1jmp1,llm)
[524]48
[5246]49  !   Local:
50  !   ------
[524]51
[5246]52  REAL :: gdx(ip1jmp1,llm),gdy(ip1jm,llm)
53  REAL :: grx(ip1jmp1,llm),gry(ip1jm,llm)
54  REAL :: te1dt(llm),te2dt(llm),te3dt(llm)
55  REAL :: deltapres(ip1jmp1,llm)
[524]56
[5246]57  INTEGER :: l,ij
[524]58
[5246]59  REAL :: SSUM
[524]60
[5246]61  !-----------------------------------------------------------------------
62  !   initialisations:
63  !   ----------------
[524]64
[5246]65  DO l=1,llm
66     te1dt(l) = tetaudiv(l) * dtdiss
67     te2dt(l) = tetaurot(l) * dtdiss
68     te3dt(l) = tetah(l)    * dtdiss
69  ENDDO
70  du=0.
71  dv=0.
72  dh=0.
[524]73
[5246]74  !-----------------------------------------------------------------------
75  !   Calcul de la dissipation:
76  !   -------------------------
[524]77
[5246]78  !   Calcul de la partie   grad  ( div ) :
79  !   -------------------------------------
[524]80
81
[5246]82  IF(lstardis) THEN
83     CALL gradiv2( llm,ucov,vcov,nitergdiv,gdx,gdy )
84  ELSE
85     CALL gradiv ( llm,ucov,vcov,nitergdiv,gdx,gdy )
86  ENDIF
[524]87
[5246]88  DO l=1,llm
[524]89
[5246]90     DO ij = 1, iip1
91        gdx(     ij ,l) = 0.
92        gdx(ij+ip1jm,l) = 0.
93     ENDDO
[524]94
[5246]95     DO ij = iip2,ip1jm
96        du(ij,l) = du(ij,l) - te1dt(l) *gdx(ij,l)
97     ENDDO
98     DO ij = 1,ip1jm
99        dv(ij,l) = dv(ij,l) - te1dt(l) *gdy(ij,l)
100     ENDDO
[524]101
[5246]102   ENDDO
[524]103
[5246]104  !   calcul de la partie   n X grad ( rot ):
105  !   ---------------------------------------
[524]106
[5246]107  IF(lstardis) THEN
108     CALL nxgraro2( llm,ucov, vcov, nitergrot,grx,gry )
109  ELSE
110     CALL nxgrarot( llm,ucov, vcov, nitergrot,grx,gry )
111  ENDIF
[524]112
113
[5246]114  DO l=1,llm
115     DO ij = 1, iip1
116        grx(ij,l) = 0.
117     ENDDO
[524]118
[5246]119     DO ij = iip2,ip1jm
120        du(ij,l) = du(ij,l) - te2dt(l) * grx(ij,l)
121     ENDDO
122     DO ij =  1, ip1jm
123        dv(ij,l) = dv(ij,l) - te2dt(l) * gry(ij,l)
124     ENDDO
125  ENDDO
[524]126
[5246]127  !   calcul de la partie   div ( grad ):
128  !   -----------------------------------
[524]129
130
[5246]131  IF(lstardis) THEN
[524]132
[5246]133   DO l = 1, llm
134      DO ij = 1, ip1jmp1
135        deltapres(ij,l) = AMAX1( 0.,  p(ij,l) - p(ij,l+1) )
[524]136      ENDDO
[5246]137   ENDDO
[524]138
[5246]139     CALL divgrad2( llm,teta, deltapres  ,niterh, gdx )
140  ELSE
141     CALL divgrad ( llm,teta, niterh, gdx        )
142  ENDIF
143
144  DO l = 1,llm
145     DO ij = 1,ip1jmp1
146        dh( ij,l ) = dh( ij,l ) - te3dt(l) * gdx( ij,l )
147     ENDDO
148  ENDDO
149
150  RETURN
151END SUBROUTINE dissip
Note: See TracBrowser for help on using the repository browser.