Ignore:
Timestamp:
Oct 22, 2010, 11:27:25 AM (14 years ago)
Author:
Ehouarn Millour
Message:

Implemented modifications to enable running with only one tracer for planet types different from "earth". Rem: If flag 'planet_type' is set to "earth" (default behaviour) then there must be at least 2 tracers for the dynamics to function properly.

These updates do not induce any changes in model outputs with respect to previous revisions.

EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/LMDZ5V1.0-dev/libf/dyn3d/integrd.F

    r1403 r1446  
    66     $     dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis,finvmaold )
    77
    8       USE control_mod
     8      use control_mod, only : planet_type
    99
    1010      IMPLICIT NONE
     
    8181      CALL SCOPY(ip1jmp1*llm, masse, 1, massescr, 1)
    8282
    83       DO 2 ij = 1,ip1jmp1
     83      DO ij = 1,ip1jmp1
    8484       pscr (ij)    = ps(ij)
    8585       ps (ij)      = psm1(ij) + dt * dp(ij)
    86    2  CONTINUE
     86      ENDDO
    8787c
    8888      DO ij = 1,ip1jmp1
     
    115115c    ............   integration  de  ucov, vcov,  h     ..............
    116116
    117       DO 10 l = 1,llm
    118 
    119       DO 4 ij = iip2,ip1jm
    120       uscr( ij )   =  ucov( ij,l )
    121       ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l )
    122    4  CONTINUE
    123 
    124       DO 5 ij = 1,ip1jm
    125       vscr( ij )   =  vcov( ij,l )
    126       vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l )
    127    5  CONTINUE
    128 
    129       DO 6 ij = 1,ip1jmp1
    130       hscr( ij )    =  teta(ij,l)
    131       teta ( ij,l ) = tetam1(ij,l) *  massem1(ij,l) / masse(ij,l)
    132      $                + dt * dteta(ij,l) / masse(ij,l)
    133    6  CONTINUE
     117      DO l = 1,llm
     118
     119       DO ij = iip2,ip1jm
     120        uscr( ij )   =  ucov( ij,l )
     121        ucov( ij,l ) = ucovm1( ij,l ) + dt * du( ij,l )
     122       ENDDO
     123
     124       DO ij = 1,ip1jm
     125        vscr( ij )   =  vcov( ij,l )
     126        vcov( ij,l ) = vcovm1( ij,l ) + dt * dv( ij,l )
     127       ENDDO
     128
     129       DO ij = 1,ip1jmp1
     130        hscr( ij )    =  teta(ij,l)
     131        teta ( ij,l ) = tetam1(ij,l) *  massem1(ij,l) / masse(ij,l)
     132     &                + dt * dteta(ij,l) / masse(ij,l)
     133       ENDDO
    134134
    135135c   ....  Calcul de la valeur moyenne, unique  aux poles pour  teta    ......
    136136c
    137137c
    138       DO  ij   = 1, iim
     138       DO  ij   = 1, iim
    139139        tppn(ij) = aire(   ij   ) * teta(  ij    ,l)
    140140        tpps(ij) = aire(ij+ip1jm) * teta(ij+ip1jm,l)
    141       ENDDO
     141       ENDDO
    142142        tpn      = SSUM(iim,tppn,1)/apoln
    143143        tps      = SSUM(iim,tpps,1)/apols
    144144
    145       DO ij   = 1, iip1
     145       DO ij   = 1, iip1
    146146        teta(   ij   ,l)  = tpn
    147147        teta(ij+ip1jm,l)  = tps
    148       ENDDO
    149 c
    150 
    151       IF(leapf)  THEN
     148       ENDDO
     149c
     150
     151       IF(leapf)  THEN
    152152         CALL SCOPY ( ip1jmp1, uscr(1), 1, ucovm1(1, l), 1 )
    153153         CALL SCOPY (   ip1jm, vscr(1), 1, vcovm1(1, l), 1 )
    154154         CALL SCOPY ( ip1jmp1, hscr(1), 1, tetam1(1, l), 1 )
    155       END IF
    156 
    157   10  CONTINUE
     155       END IF
     156
     157      ENDDO ! of DO l = 1,llm
    158158
    159159
     
    185185c$$$      ENDIF
    186186
    187         if (planet_type.eq."earth") then
     187      if (planet_type.eq."earth") then
    188188! Earth-specific treatment of first 2 tracers (water)
    189           DO l = 1, llm
    190            DO ij = 1, ip1jmp1
     189        DO l = 1, llm
     190          DO ij = 1, ip1jmp1
    191191            deltap(ij,l) =  p(ij,l) - p(ij,l+1)
    192            ENDDO
    193192          ENDDO
    194 
    195           CALL qminimum( q, nq, deltap )
    196          endif ! of if (planet_type.eq."earth")
     193        ENDDO
     194
     195        CALL qminimum( q, nq, deltap )
    197196
    198197c
     
    200199c
    201200
    202       DO iq = 1, nq
     201       DO iq = 1, nq
    203202        DO l = 1, llm
    204203
     
    216215
    217216        ENDDO
    218       ENDDO
    219 
    220 
    221          CALL  SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 )
     217       ENDDO
     218
     219
     220      CALL  SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 )
     221
     222      endif ! of if (planet_type.eq."earth")
    222223c
    223224c
    224225c     .....   FIN  de l'integration  de   q    .......
    225 
    226 15    continue
    227226
    228227c    .................................................................
Note: See TracChangeset for help on using the changeset viewer.