Ignore:
Timestamp:
Feb 3, 2009, 11:21:09 AM (16 years ago)
Author:
yann meurdesoif
Message:

Optimisation Othman bouizi : plevel

YM

Location:
LMDZ4/branches/LMDZ4-dev/libf/phylmd
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/calcul_STDlev.h

    r684 r1090  
    5656cIM on interpole sur les niveaux STD de pression a chaque pas de temps de la physique
    5757c
    58        DO k=1, nlevSTD
    59 c
    60         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    61      .              t_seri,tlevSTD(:,k))
    62         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    63      .             u_seri,ulevSTD(:,k))
    64         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    65      .             v_seri,vlevSTD(:,k))
    66 c
     58c-------------------------------------------------------c
     59c positionnement de l'argument logique a .false.        c
     60c pour ne pas recalculer deux fois la meme chose !      c
     61c a cet effet un appel a plevel_new a ete deplace       c
     62c a la fin de la serie d'appels                         c
     63c la boucle 'DO k=1, nlevSTD' a ete internalisee        c
     64c dans plevel_new, d'ou la creation de cette routine... c
     65c-------------------------------------------------------c
     66c
     67        CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD,
     68     &              t_seri,tlevSTD)
     69        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     70     &             u_seri,ulevSTD)
     71        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     72     &             v_seri,vlevSTD)
     73c
     74
     75c
     76        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     77     &             zphi/RG,philevSTD)
     78        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     79     &             qx(:,:,ivap),qlevSTD)
     80        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     81     &             zx_rh*100.,rhlevSTD)
     82c
     83        DO l=1, klev
     84         DO i=1, klon
     85          zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
     86         ENDDO !i
     87        ENDDO !l
     88        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     89     &             zx_tmp_fi3d,uvSTD)
     90c
     91        DO l=1, klev
     92         DO i=1, klon
     93          zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
     94         ENDDO !i
     95        ENDDO !l
     96        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     97     &             zx_tmp_fi3d,vqSTD)
     98c
     99        DO l=1, klev
     100         DO i=1, klon
     101          zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
     102         ENDDO !i
     103        ENDDO !l
     104        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     105     &             zx_tmp_fi3d,vTSTD)
     106c
     107        DO l=1, klev
     108         DO i=1, klon
     109          zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
     110         ENDDO !i
     111        ENDDO !l
     112        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     113     &             zx_tmp_fi3d,wqSTD)
     114c
     115        DO l=1, klev
     116         DO i=1, klon
     117          zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
     118         ENDDO !i
     119        ENDDO !l
     120        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     121     &             zx_tmp_fi3d,vphiSTD)
     122c
     123        DO l=1, klev
     124         DO i=1, klon
     125          zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
     126         ENDDO !i
     127        ENDDO !l
     128        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     129     &             zx_tmp_fi3d,wTSTD)
     130c
     131        DO l=1, klev
     132         DO i=1, klon
     133          zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
     134         ENDDO !i
     135        ENDDO !l
     136        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     137     &             zx_tmp_fi3d,u2STD)
     138c
     139        DO l=1, klev
     140         DO i=1, klon
     141          zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
     142         ENDDO !i
     143        ENDDO !l
     144        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     145     &             zx_tmp_fi3d,v2STD)
     146c
     147        DO l=1, klev
     148         DO i=1, klon
     149          zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
     150         ENDDO !i
     151        ENDDO !l
     152        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
     153     &             zx_tmp_fi3d,T2STD)
     154
     155
    67156        DO l=1, klev
    68157        DO i=1, klon
     
    70159        ENDDO !i
    71160        ENDDO !l
    72         CALL plevel(klon,klev,.true.,zx_tmp_fi3d,rlevSTD(k),
    73      .             omega,wlevSTD(:,k))
    74 c
    75         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    76      .             zphi/RG,philevSTD(:,k))
    77         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    78      .             qx(:,:,ivap),qlevSTD(:,k))
    79         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    80      .             zx_rh*100.,rhlevSTD(:,k))
    81 c
    82         DO l=1, klev
    83          DO i=1, klon
    84           zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
    85          ENDDO !i
    86         ENDDO !l
    87         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    88      .             zx_tmp_fi3d,uvSTD(:,k))
    89 c
    90         DO l=1, klev
    91          DO i=1, klon
    92           zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
    93          ENDDO !i
    94         ENDDO !l
    95         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    96      .             zx_tmp_fi3d,vqSTD(:,k))
    97 c
    98         DO l=1, klev
    99          DO i=1, klon
    100           zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
    101          ENDDO !i
    102         ENDDO !l
    103         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    104      .             zx_tmp_fi3d,vTSTD(:,k))
    105 c
    106         DO l=1, klev
    107          DO i=1, klon
    108           zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
    109          ENDDO !i
    110         ENDDO !l
    111         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    112      .             zx_tmp_fi3d,wqSTD(:,k))
    113 c
    114         DO l=1, klev
    115          DO i=1, klon
    116           zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
    117          ENDDO !i
    118         ENDDO !l
    119         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    120      .             zx_tmp_fi3d,vphiSTD(:,k))
    121 c
    122         DO l=1, klev
    123          DO i=1, klon
    124           zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
    125          ENDDO !i
    126         ENDDO !l
    127         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    128      .             zx_tmp_fi3d,wTSTD(:,k))
    129 c
    130         DO l=1, klev
    131          DO i=1, klon
    132           zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
    133          ENDDO !i
    134         ENDDO !l
    135         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    136      .             zx_tmp_fi3d,u2STD(:,k))
    137 c
    138         DO l=1, klev
    139          DO i=1, klon
    140           zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
    141          ENDDO !i
    142         ENDDO !l
    143         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    144      .             zx_tmp_fi3d,v2STD(:,k))
    145 c
    146         DO l=1, klev
    147          DO i=1, klon
    148           zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
    149          ENDDO !i
    150         ENDDO !l
    151         CALL plevel(klon,klev,.true.,pplay,rlevSTD(k),
    152      .             zx_tmp_fi3d,T2STD(:,k))
    153 c
    154        ENDDO !k=1,nlevSTD
     161        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
     162     &             omega,wlevSTD)
     163
    155164c
    156165cIM on somme les valeurs definies a chaque pas de temps de la physique ou
Note: See TracChangeset for help on using the changeset viewer.