Ignore:
Timestamp:
Jun 11, 2009, 10:54:10 AM (16 years ago)
Author:
Laurent Fairhead
Message:

Modif pour la compilation avec fcm sur Vargas SD
Corrections relatives au controle de histins et de l'utilisation des
options INST(X) pour l'appel au routines de IOIPSL FH
Mise en place de diagnostics sur les critères CFL pour l'advection
de traceurs. FH
Controle dans les .def de la dépendance verticale de l'efficacite
de la diffusion. Actif pour le moment uniquement avec ok_strato=y et llm=39. FH
LF

Location:
LMDZ4/branches/LMDZ4-dev/libf/dyn3d
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3d/advtrac.F

    r1114 r1176  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44c
     
    3030#include "ener.h"
    3131#include "description.h"
     32#include "iniprint.h"
    3233
    3334c-------------------------------------------------------------------
     
    7475      DATA dum/.true./
    7576
     77      integer,save :: countcfl=0
     78      real cflx(ip1jmp1,llm)
     79      real cfly(ip1jm,llm)
     80      real cflz(ip1jmp1,llm)
     81      real, save :: cflxmax(llm),cflymax(llm),cflzmax(llm)
    7682
    7783      IF(iadvtr.EQ.0) THEN
     
    139145         ENDDO
    140146
     147
     148c-------------------------------------------------------------------
     149! Calcul des criteres CFL en X, Y et Z
     150c-------------------------------------------------------------------
     151
     152      if (countcfl == 0. ) then
     153          cflxmax(:)=0.
     154          cflymax(:)=0.
     155          cflzmax(:)=0.
     156      endif
     157
     158      countcfl=countcfl+iapp_tracvl
     159      cflx(:,:)=0.
     160      cfly(:,:)=0.
     161      cflz(:,:)=0.
     162      do l=1,llm
     163         do ij=iip2,ip1jm-1
     164            if (pbarug(ij,l)>=0.) then
     165                cflx(ij,l)=pbarug(ij,l)*dtvr/masse(ij,l)
     166            else
     167                cflx(ij,l)=-pbarug(ij,l)*dtvr/masse(ij+1,l)
     168            endif
     169         enddo
     170      enddo
     171      do l=1,llm
     172         do ij=iip2,ip1jm-1,iip1
     173            cflx(ij+iip1,l)=cflx(ij,l)
     174         enddo
     175      enddo
     176
     177      do l=1,llm
     178         do ij=1,ip1jm
     179            if (pbarvg(ij,l)>=0.) then
     180                cfly(ij,l)=pbarvg(ij,l)*dtvr/masse(ij,l)
     181            else
     182                cfly(ij,l)=-pbarvg(ij,l)*dtvr/masse(ij+iip1,l)
     183            endif
     184         enddo
     185      enddo
     186
     187      do l=2,llm
     188         do ij=1,ip1jm
     189            if (wg(ij,l)>=0.) then
     190                cflz(ij,l)=wg(ij,l)*dtvr/masse(ij,l)
     191            else
     192                cflz(ij,l)=-wg(ij,l)*dtvr/masse(ij,l-1)
     193            endif
     194         enddo
     195      enddo
     196
     197      do l=1,llm
     198         cflxmax(l)=max(cflxmax(l),maxval(cflx(:,l)))
     199         cflymax(l)=max(cflymax(l),maxval(cfly(:,l)))
     200         cflzmax(l)=max(cflzmax(l),maxval(cflz(:,l)))
     201      enddo
     202
     203!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     204! Par defaut, on sort le diagnostic des CFL tous les jours.
     205! Si on veut le sortir a chaque pas d'advection en cas de plantage
     206!     if (countcfl==iapp_tracvl) then
     207!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     208      if (countcfl==day_step) then
     209         do l=1,llm
     210         write(lunout,*) 'L, CFLmax '
     211     s   ,l,maxval(cflx(:,l)),maxval(cfly(:,l)),maxval(cflz(:,l))
     212         enddo
     213         countcfl=0
     214      endif
     215   
    141216c-------------------------------------------------------------------
    142217c   Advection proprement dite (Modification Le Croller (07/2001)
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3d/comconst.h

    r1106 r1176  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44!-----------------------------------------------------------------------
     
    77      COMMON/comconst/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl,           &
    88     & dtvr,daysec,                                                     &
    9      & pi,dtphys,dtdiss,rad,r,cpp,kappa,cotot,unsim,g,omeg
     9     & pi,dtphys,dtdiss,rad,r,cpp,kappa,cotot,unsim,g,omeg              &
     10     &                   ,dissip_factz,dissip_deltaz,dissip_zref
     11
    1012
    1113      INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl
     
    1315      REAL pi,dtphys,dtdiss,rad,r,cpp,kappa
    1416      REAL cotot,unsim,g,omeg
     17      REAL dissip_factz,dissip_deltaz,dissip_zref
    1518
    1619!-----------------------------------------------------------------------
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3d/conf_gcm.F

    r1143 r1176  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44c
     
    3838#include "serre.h"
    3939#include "comdissnew.h"
     40#include "comconst.h"
    4041
    4142! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     
    267268       tetatemp  = 7200.
    268269       CALL getin('tetatemp',tetatemp )
     270
     271! Parametres controlant la variation sur la verticale des constantes de
     272! dissipation.
     273! Pour le moment actifs uniquement dans la version a 39 niveaux
     274! avec ok_strato=y
     275
     276       dissip_factz=4.
     277       dissip_deltaz=10.
     278       dissip_zref=30.
     279       CALL getin('dissip_factz',dissip_factz )
     280       CALL getin('dissip_deltaz',dissip_deltaz )
     281       CALL getin('dissip_zref',dissip_zref )
    269282
    270283!Config  Key  = coefdis
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3d/inidissip.F

    r524 r1176  
    11!
    2 ! $Header$
     2! $Id$
    33!
    44      SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh  ,
     
    1818#include "comvert.h"
    1919#include "control.h"
     20#include "logic.h"
    2021
    2122      LOGICAL lstardis
     
    2930      INTEGER l,ij,idum,ii
    3031      REAL tetamin
     32      REAL pseudoz
    3133
    3234      REAL ran1
     
    174176c   --------------------------------------------------
    175177
    176       DO l=1,llm
    177          zvert(l)=1.
    178       ENDDO
    179 
    180       fact=2.
    181 c
    182       DO l = 1, llm
    183          zz      = 1. - preff/presnivs(l)
    184          zvert(l)= fact -( fact-1.)/( 1.+zz*zz )
    185       ENDDO
     178      if (ok_strato .and. llm==39) then
     179         do l=1,llm
     180            pseudoz=8.*log(preff/presnivs(l))
     181            zvert(l)=1+
     182     s      (tanh((pseudoz-dissip_zref)/dissip_deltaz)+1.)/2.
     183     s      *(dissip_factz-1.)
     184         enddo
     185      else
     186         DO l=1,llm
     187            zvert(l)=1.
     188         ENDDO
     189         fact=2.
     190         DO l = 1, llm
     191            zz      = 1. - preff/presnivs(l)
     192            zvert(l)= fact -( fact-1.)/( 1.+zz*zz )
     193         ENDDO
     194      endif
    186195
    187196
Note: See TracChangeset for help on using the changeset viewer.