Ignore:
Timestamp:
Feb 11, 2008, 10:35:01 AM (16 years ago)
Author:
Laurent Fairhead
Message:

Debut de la reecriture de la routine physi.F.
On commence par une extension de hgardfou dans le module add_phys_tend.F90
qui verifie que les tendances physiques calculees dans les differentes
parametrisations sont dans des limites tolerables avant de les ajouter aux
variables d'etat de la dynamique FH
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r901 r904  
    2727      USE vampir
    2828      USE pbl_surface_mod, ONLY : pbl_surface
     29      USE phys_local_var_mod ! Variables internes non sauvegardees de la physique
    2930
    3031
     
    11631164c vdf: couche limite (Vertical DiFfusion)
    11641165      REAL d_t_con(klon,klev),d_q_con(klon,klev)
     1166      REAL d_t_wake(klon,klev),d_q_wake(klon,klev)
    11651167      REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
    11661168c$OMP THREADPRIVATE(d_u_con,d_v_con)
     
    11721174      REAL d_t_oli(klon,klev) !tendances dues a oro et lif
    11731175      REAL rneb(klon,klev)
     1176
     1177! tendance nulles
     1178      REAL du0(klon,klev),dv0(klon,klev),dq0(klon,klev),dql0(klon,klev)
     1179
    11741180c
    11751181*********************************************************
     
    12621268c
    12631269c Variables locales pour effectuer les appels en serie
    1264 c
    1265       REAL t_seri(klon,klev), q_seri(klon,klev)
    1266       REAL ql_seri(klon,klev),qs_seri(klon,klev)
    1267       REAL u_seri(klon,klev), v_seri(klon,klev)
    12681270c
    12691271      REAL tr_seri(klon,klev,nbtr)
     
    16511653       
    16521654        first=.false.
    1653       endif
    1654 
     1655
     1656      print*, '================================================='
     1657      print*, 'Allocation des variables locales non sauvegardees'
     1658      call phys_local_var_init
     1659      print*, '================================================='
    16551660                 
     1661      endif  ! fisrt
     1662
    16561663       modname = 'physiq'
    16571664cIM
     
    20752082c   ****************     Fin  de   IF ( debut  )   ***************
    20762083c
     2084
     2085! Tendances bidons pour les processus qui n'affectent pas certaines
     2086! variables.
     2087      du0(:,:)=0.
     2088      dv0(:,:)=0.
     2089      dq0(:,:)=0.
     2090      dql0(:,:)=0.
    20772091c
    20782092c Mettre a zero des variables de sortie (pour securite)
     
    23332347c
    23342348c
    2335 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    2336 
    23372349      pctsrf(:,:) = pctsrf_new(:,:)
    23382350     
    2339       DO k = 1, klev
    2340       DO i = 1, klon
    2341          t_seri(i,k) = t_seri(i,k) + d_t_vdf(i,k)
    2342          q_seri(i,k) = q_seri(i,k) + d_q_vdf(i,k)
    2343          u_seri(i,k) = u_seri(i,k) + d_u_vdf(i,k)
    2344          v_seri(i,k) = v_seri(i,k) + d_v_vdf(i,k)
    2345       ENDDO
    2346       ENDDO
     2351!-----------------------------------------------------------------------------------------
     2352! ajout des tendances de la diffusion turbulente
     2353      CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')
     2354!-----------------------------------------------------------------------------------------
    23472355
    23482356      if (mydebug) then
     
    26122620c    .              d_u_con, d_v_con)
    26132621
    2614       DO k = 1, klev
    2615         DO i = 1, klon
    2616          t_seri(i,k) = t_seri(i,k) + d_t_con(i,k)
    2617          q_seri(i,k) = q_seri(i,k) + d_q_con(i,k)
    2618          u_seri(i,k) = u_seri(i,k) + d_u_con(i,k)
    2619          v_seri(i,k) = v_seri(i,k) + d_v_con(i,k)
    2620         ENDDO
    2621       ENDDO
     2622!-----------------------------------------------------------------------------------------
     2623! ajout des tendances de la diffusion turbulente
     2624      CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,'con')
     2625!-----------------------------------------------------------------------------------------
    26222626
    26232627      if (mydebug) then
     
    27192723     o               ,wake_ddeltat,wake_ddeltaq)
    27202724c
    2721 cIncrementation des tendances de la poche froide
    2722       DO k = 1, klev
    2723         DO i = 1, klon
    2724           t_seri(i,k) = t_seri(i,k) + dt_wake(i,k)*dtime
    2725           q_seri(i,k) = q_seri(i,k) + dq_wake(i,k)*dtime
    2726         ENDDO
    2727       ENDDO
     2725!-----------------------------------------------------------------------------------------
     2726! ajout des tendances des poches froides
     2727! Faire rapidement disparaitre l'ancien dt_wake pour garder un d_t_wake
     2728! coherent avec les autres d_t_...
     2729      d_t_wake(:,:)=dt_wake(:,:)*dtime
     2730      d_q_wake(:,:)=dq_wake(:,:)*dtime
     2731      CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,'wake')
     2732!-----------------------------------------------------------------------------------------
    27282733
    27292734      endif
     
    28152820         endif
    28162821
    2817          t_seri(:,:) = t_seri(:,:) + d_t_ajsb(:,:)
    2818          q_seri(:,:) = q_seri(:,:) + d_q_ajsb(:,:)
     2822!-----------------------------------------------------------------------------------------
     2823! ajout des tendances de l'ajustement sec ou des thermiques
     2824      CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,'ajsb')
    28192825         d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:)
    28202826         d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:)
     2827
     2828!-----------------------------------------------------------------------------------------
    28212829
    28222830         endif
     
    29662974      WHERE (rain_lsc < 0) rain_lsc = 0.
    29672975      WHERE (snow_lsc < 0) snow_lsc = 0.
     2976!-----------------------------------------------------------------------------------------
     2977! ajout des tendances de la diffusion turbulente
     2978      CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,'lsc')
     2979!-----------------------------------------------------------------------------------------
    29682980      DO k = 1, klev
    29692981      DO i = 1, klon
    2970          t_seri(i,k) = t_seri(i,k) + d_t_lsc(i,k)
    2971          q_seri(i,k) = q_seri(i,k) + d_q_lsc(i,k)
    2972          ql_seri(i,k) = ql_seri(i,k) + d_ql_lsc(i,k)
    29732982         cldfra(i,k) = rneb(i,k)
    29742983         IF (.NOT.new_oliq) cldliq(i,k) = ql_seri(i,k)
     
    34353444c
    34363445c  ajout des tendances
    3437         DO k = 1, klev
    3438         DO i = 1, klon
    3439            t_seri(i,k) = t_seri(i,k) + d_t_oro(i,k)
    3440            u_seri(i,k) = u_seri(i,k) + d_u_oro(i,k)
    3441            v_seri(i,k) = v_seri(i,k) + d_v_oro(i,k)
    3442         ENDDO
    3443         ENDDO
     3446!-----------------------------------------------------------------------------------------
     3447! ajout des tendances de la trainee de l'orographie
     3448      CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,'oro')
     3449!-----------------------------------------------------------------------------------------
    34443450c
    34453451      ENDIF ! fin de test sur ok_orodr
     
    34733479     s                   d_t_lif, d_u_lif, d_v_lif)
    34743480c
    3475 c  ajout des tendances
    3476         DO k = 1, klev
    3477         DO i = 1, klon
    3478            t_seri(i,k) = t_seri(i,k) + d_t_lif(i,k)
    3479            u_seri(i,k) = u_seri(i,k) + d_u_lif(i,k)
    3480            v_seri(i,k) = v_seri(i,k) + d_v_lif(i,k)
    3481         ENDDO
    3482         ENDDO
     3481!-----------------------------------------------------------------------------------------
     3482! ajout des tendances de la portance de l'orographie
     3483      CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,'lif')
     3484!-----------------------------------------------------------------------------------------
    34833485c
    34843486      ENDIF ! fin de test sur ok_orolf
     
    38883890     .      t_ancien, q_ancien, rnebcon, ratqs, clwcon,
    38893891     .      pbl_tke)
     3892         open(97,form="unformatted",file="finbin")
     3893         write(97) u_seri,v_seri,t_seri,q_seri
     3894         close(97)
    38903895      ENDIF
    38913896     
Note: See TracChangeset for help on using the changeset viewer.