Ignore:
Timestamp:
Jun 16, 2011, 3:48:00 PM (13 years ago)
Author:
acolaitis
Message:

================================================
======== IMPLEMENTATION OF THERMALS ============
================================================

Author: A. Colaitis (2011-06-16)

The main goal of this revision is to start including the thermals into the model
for development purposes. Users should not use the thermals yet, as
several major configuration changes still need to be done.

This version includes :

  • updraft and downdraft parametrizations
  • velocity in the thermal, including drag
  • plume height analysis
  • closure equation
  • updraft transport of heat, tracers and momentum
  • downdraft transport of heat

This model should not be used without upcoming developments, namely :

  • downdraft transport of tracers and momentum
  • updraft & downdraft transport of q2 (tke)
  • revision of vdif_kc to compute q2 for non-stratified cases

Thermals could also include in a later revision :

  • momentum loss during transport (horizontal drag)

Compilation of the thermals has been successfully tested on ifort, gfortran and pgf90

================================================
================================================

M libf/phymars/callkeys.h
M libf/phymars/inifis.F

Added new control flags to call the thermals :

  • calltherm (false by default) <- to call thermals
  • outptherm (false by default) <- to output thermal-related diagnostics (for dev purposes)

================================================

M libf/phymars/vdifc.F
------> added a temporary output for thermal-related diagnostics

M libf/phymars/testphys1d.F
------> added treatment for a initialization from a profile of neutral gas (ar)

-> will be transformed in a decaying tracer for thermal diagnostics

M libf/phymars/physiq.F
------> added a section to call the thermals

-> changed the call to convadj
-> added thermal-related outputs for diagnostics

M libf/phymars/convadj.F
------> takes now into account the height of thermals to execute convective adjustment

=> note : convective adjustment needs to be activated when using thermals, in case of a

second instable layer above the thermals

================================================

A libf/phymars/calltherm_interface.F90
------> Interface between physiq.F and the thermals

A libf/phymars/calltherm_mars.F90
------> Routine running the sub-timestep of the thermals

A libf/phymars/thermcell_main_mars.F90
------> Main thermals routine specific to Martian physics

A libf/phymars/thermcell_dqupdown.F90
------> Thermals subroutine computing transport of quantities by updrafts and downdrafts

A libf/phymars/thermcell.F90
------> Module including parameters from the Earth to Mars importation. Will disappear in future dev

================================================
================================================

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/convadj.F

    r38 r161  
    11      subroutine convadj(ngrid,nlay,nq,ptimestep,
    2      &                   pplay,pplev,ppopsk,
     2     &                   pplay,pplev,ppopsk,lmax_th,
    33     &                   pu,pv,ph,pq,
    44     &                   pdufi,pdvfi,pdhfi,pdqfi,
     
    2121!     Modif. 2005 by F. Forget.
    2222!     Modif. 2010 by R. Wordsworth
    23 !     
     23!     Modif. 2011 by A. Colaitis
     24!
    2425!==================================================================
    2526
     
    3839!     ---------
    3940
    40       INTEGER,intent(in) :: ngrid,nlay
     41      INTEGER,intent(in) :: ngrid,nlay,lmax_th(ngrid)
    4142      REAL,intent(in) :: ptimestep
    4243      REAL,intent(in) :: ph(ngrid,nlay)
     
    163164      DO l=2,nlay
    164165        DO ig=1,ngrid
    165           IF(zhc(ig,l).LT.zhc(ig,l-1)) vtest(ig)=.true.
    166         ENDDO
     166          IF((zhc(ig,l).LT.zhc(ig,l-1))                                 $
     167     $  .AND. (l .GT. lmax_th(ig))) vtest(ig)=.true.
     168       ENDDO
    167169      ENDDO
    168170
     
    198200!     Test loop upwards on l2
    199201
    200           DO
    201             l2 = l2 + 1
    202             IF (l2 .GT. nlay) EXIT
    203             IF (zhc(i, l2) .LT. zhc(i, l2-1)) THEN
    204  
     202      DO
     203       l2 = l2 + 1
     204       IF (l2 .GT. nlay) EXIT
     205       IF ((zhc(i, l2) .LT. zhc(i, l2-1)).AND.(l2 .GT. lmax_th(i))) THEN
     206
    205207!     l2 is the highest level of the unstable column
    206208 
     
    228230!     do we have to extend the column downwards?
    229231 
    230                 down = .false.
    231                 IF (l1 .ne. 1) then    !--  and then
    232                   IF (zhmc .lt. zhc(i, l1-1)) then
    233                     down = .true.
    234                   END IF
    235                 END IF
     232            down = .false.
     233            IF (l1 .ne. 1) then    !--  and then
     234              IF ((zhmc .lt. zhc(i, l1-1)).and.(l1.gt.lmax_th(i))) then
     235                down = .true.
     236              END IF
     237            END IF
    236238 
    237239                ! this could be a problem...
Note: See TracChangeset for help on using the changeset viewer.