Ignore:
Timestamp:
Dec 17, 2012, 4:33:24 PM (12 years ago)
Author:
musat
Message:

Un peu de nettoyage pour le calcul aux niveaux de pression fixes.
IM

Location:
LMDZ5/trunk/libf/phylmd
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/calcul_STDlev.h

    r1418 r1694  
    22c $Header$
    33c
    4 c
    54cIM on initialise les variables
     5c
     6        missing_val=nf90_fill_real
     7c
     8cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
     9cIM               sur les niveaux de pression standard du NMC
     10      DO n=1, nout
     11       freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n)
     12      ENDDO
    613c
    714        CALL ini_undefSTD(itap,freq_outNMC)
     
    157164     $     lwup,LWup200)
    158165c
     166      twriteSTD(:,:,1)=tsumSTD(:,:,1)
     167      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
     168      rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
     169      phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
     170      uwriteSTD(:,:,1)=usumSTD(:,:,1)
     171      vwriteSTD(:,:,1)=vsumSTD(:,:,1)
     172      wwriteSTD(:,:,1)=wsumSTD(:,:,1)
     173
     174      twriteSTD(:,:,2)=tsumSTD(:,:,2)
     175      qwriteSTD(:,:,2)=qsumSTD(:,:,2)
     176      rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
     177      phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
     178      uwriteSTD(:,:,2)=usumSTD(:,:,2)
     179      vwriteSTD(:,:,2)=vsumSTD(:,:,2)
     180      wwriteSTD(:,:,2)=wsumSTD(:,:,2)
     181
     182      twriteSTD(:,:,3)=tlevSTD(:,:)
     183      qwriteSTD(:,:,3)=qlevSTD(:,:)
     184      rhwriteSTD(:,:,3)=rhlevSTD(:,:)
     185      phiwriteSTD(:,:,3)=philevSTD(:,:)
     186      uwriteSTD(:,:,3)=ulevSTD(:,:)
     187      vwriteSTD(:,:,3)=vlevSTD(:,:)
     188      wwriteSTD(:,:,3)=wlevSTD(:,:)
     189
     190      twriteSTD(:,:,4)=tlevSTD(:,:)
     191      qwriteSTD(:,:,4)=qlevSTD(:,:)
     192      rhwriteSTD(:,:,4)=rhlevSTD(:,:)
     193      phiwriteSTD(:,:,4)=philevSTD(:,:)
     194      uwriteSTD(:,:,4)=ulevSTD(:,:)
     195      vwriteSTD(:,:,4)=vlevSTD(:,:)
     196      wwriteSTD(:,:,4)=wlevSTD(:,:)
     197c
     198cIM initialisation 5eme fichier de sortie
     199      twriteSTD(:,:,5)=tlevSTD(:,:)
     200      qwriteSTD(:,:,5)=qlevSTD(:,:)
     201      rhwriteSTD(:,:,5)=rhlevSTD(:,:)
     202      phiwriteSTD(:,:,5)=philevSTD(:,:)
     203      uwriteSTD(:,:,5)=ulevSTD(:,:)
     204      vwriteSTD(:,:,5)=vlevSTD(:,:)
     205      wwriteSTD(:,:,5)=wlevSTD(:,:)
     206c
     207cIM initialisation 6eme fichier de sortie
     208      twriteSTD(:,:,6)=tlevSTD(:,:)
     209      qwriteSTD(:,:,6)=qlevSTD(:,:)
     210      rhwriteSTD(:,:,6)=rhlevSTD(:,:)
     211      phiwriteSTD(:,:,6)=philevSTD(:,:)
     212      uwriteSTD(:,:,6)=ulevSTD(:,:)
     213      vwriteSTD(:,:,6)=vlevSTD(:,:)
     214      wwriteSTD(:,:,6)=wlevSTD(:,:)
     215cIM for NMC files
     216      DO n=1, nlevSTD3
     217       DO k=1, nlevSTD
     218        if(rlevSTD3(n).EQ.rlevSTD(k)) THEN
     219         twriteSTD3(:,n)=tlevSTD(:,k)
     220         qwriteSTD3(:,n)=qlevSTD(:,k)
     221         rhwriteSTD3(:,n)=rhlevSTD(:,k)
     222         phiwriteSTD3(:,n)=philevSTD(:,k)
     223         uwriteSTD3(:,n)=ulevSTD(:,k)
     224         vwriteSTD3(:,n)=vlevSTD(:,k)
     225         wwriteSTD3(:,n)=wlevSTD(:,k)
     226        endif !rlevSTD3(n).EQ.rlevSTD(k)
     227       ENDDO
     228      ENDDO
     229c
     230      DO n=1, nlevSTD8
     231       DO k=1, nlevSTD
     232        if(rlevSTD8(n).EQ.rlevSTD(k)) THEN
     233         tnondefSTD8(:,n)=tnondef(:,k,2)
     234         twriteSTD8(:,n)=tsumSTD(:,k,2)
     235         qwriteSTD8(:,n)=qsumSTD(:,k,2)
     236         rhwriteSTD8(:,n)=rhsumSTD(:,k,2)
     237         phiwriteSTD8(:,n)=phisumSTD(:,k,2)
     238         uwriteSTD8(:,n)=usumSTD(:,k,2)
     239         vwriteSTD8(:,n)=vsumSTD(:,k,2)
     240         wwriteSTD8(:,n)=wsumSTD(:,k,2)
     241        endif !rlevSTD8(n).EQ.rlevSTD(k)
     242       ENDDO
     243      ENDDO
  • LMDZ5/trunk/libf/phylmd/physiq.F

    r1689 r1694  
    257257c variables a une pression donnee
    258258c
    259       real rlevSTD(nlevSTD)
    260       DATA rlevSTD/100000., 92500., 85000., 70000.,
    261      .60000., 50000., 40000., 30000., 25000., 20000.,
    262      .15000., 10000., 7000., 5000., 3000., 2000., 1000./
    263       SAVE rlevstd
    264 c$OMP THREADPRIVATE(rlevstd)
    265       CHARACTER*4 clevSTD(nlevSTD)
    266       DATA clevSTD/'1000','925 ','850 ','700 ','600 ',
    267      .'500 ','400 ','300 ','250 ','200 ','150 ','100 ',
    268      .'70  ','50  ','30  ','20  ','10  '/
    269       SAVE clevSTD
    270 c$OMP THREADPRIVATE(clevSTD)
     259#include "declare_STDlev.h"
    271260c
    272261      CHARACTER*4 bb2
    273262      CHARACTER*2 bb3
    274 
    275       real twriteSTD(klon,nlevSTD,nfiles)
    276       real qwriteSTD(klon,nlevSTD,nfiles)
    277       real rhwriteSTD(klon,nlevSTD,nfiles)
    278       real phiwriteSTD(klon,nlevSTD,nfiles)
    279       real uwriteSTD(klon,nlevSTD,nfiles)
    280       real vwriteSTD(klon,nlevSTD,nfiles)
    281       real wwriteSTD(klon,nlevSTD,nfiles)
    282 cIM for NMC files
    283       REAL geo500(klon)
    284       real :: rlevSTD3(nlevSTD3)
    285       DATA rlevSTD3/85000., 50000., 25000./
    286       SAVE rlevSTD3
    287 c$OMP THREADPRIVATE(rlevSTD3)
    288       real :: rlevSTD8(nlevSTD8)
    289       DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000.,
    290      $     5000., 1000./
    291       SAVE rlevSTD8
    292 c$OMP THREADPRIVATE(rlevSTD8)
    293       real twriteSTD3(klon,nlevSTD3)
    294       real qwriteSTD3(klon,nlevSTD3)
    295       real rhwriteSTD3(klon,nlevSTD3)
    296       real phiwriteSTD3(klon,nlevSTD3)
    297       real uwriteSTD3(klon,nlevSTD3)
    298       real vwriteSTD3(klon,nlevSTD3)
    299       real wwriteSTD3(klon,nlevSTD3)
    300 c
    301       real tnondefSTD8(klon,nlevSTD8)
    302       real twriteSTD8(klon,nlevSTD8)
    303       real qwriteSTD8(klon,nlevSTD8)
    304       real rhwriteSTD8(klon,nlevSTD8)
    305       real phiwriteSTD8(klon,nlevSTD8)
    306       real uwriteSTD8(klon,nlevSTD8)
    307       real vwriteSTD8(klon,nlevSTD8)
    308       real wwriteSTD8(klon,nlevSTD8)
    309 c
    310 c plevSTD3 END
    311 c
    312 c nout : niveau de output des variables a une pression donnee
    313       logical oknondef(klon,nlevSTD,nout)
    314 c
    315 c les produits uvSTD, vqSTD, .., T2STD sont calcules
    316 c a partir des valeurs instantannees toutes les 6 h
    317 c qui sont moyennees sur le mois
    318263c
    319264#include "radopt.h"
     
    1050995      REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
    1051996      REAL zx_tmp_fi3d1(klon,klev+1) !variable temporaire pour champs 3D (kelvp1)
    1052 c#ifdef histNMC
    1053 cym   A voir plus tard !!!!
    1054 cym      REAL zx_tmp_NC(iim,jjmp1,nlevSTD)
    1055       REAL zx_tmp_fiNC(klon,nlevSTD)
    1056 c#endif
    1057997      REAL(KIND=8) zx_tmp2_fi3d(klon,klev) ! variable temporaire pour champs 3D
    1058998      REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev)
    1059999      REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1)
    1060 cIM for NMC files
    1061       REAL missing_val
    1062       REAL, SAVE :: freq_moyNMC(nout)
    1063 c$OMP THREADPRIVATE(freq_moyNMC)
    10641000c
    10651001      INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
     
    12551191      integer iostat
    12561192
    1257 cIM for NMC files
    1258       missing_val=nf90_fill_real
    12591193c======================================================================
    12601194! Gestion calendrier : mise a jour du module phys_cal_mod
     
    13261260      call phys_output_var_init
    13271261      print*, '================================================='
    1328 cIM for NMC files
    1329 cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
    1330 cIM               sur les niveaux de pression standard du NMC
    1331       DO n=1, nout
    1332        freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n)
    1333       ENDDO
    1334 c
    1335 cIM beg
     1262c
    13361263          dnwd0=0.0
    13371264          ftd=0.0
     
    37883715c
    37893716#include "calcul_STDlev.h"
    3790       twriteSTD(:,:,1)=tsumSTD(:,:,1)
    3791       qwriteSTD(:,:,1)=qsumSTD(:,:,1)
    3792       rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
    3793       phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
    3794       uwriteSTD(:,:,1)=usumSTD(:,:,1)
    3795       vwriteSTD(:,:,1)=vsumSTD(:,:,1)
    3796       wwriteSTD(:,:,1)=wsumSTD(:,:,1)
    3797 
    3798       twriteSTD(:,:,2)=tsumSTD(:,:,2)
    3799       qwriteSTD(:,:,2)=qsumSTD(:,:,2)
    3800       rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
    3801       phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
    3802       uwriteSTD(:,:,2)=usumSTD(:,:,2)
    3803       vwriteSTD(:,:,2)=vsumSTD(:,:,2)
    3804       wwriteSTD(:,:,2)=wsumSTD(:,:,2)
    3805 
    3806       twriteSTD(:,:,3)=tlevSTD(:,:)
    3807       qwriteSTD(:,:,3)=qlevSTD(:,:)
    3808       rhwriteSTD(:,:,3)=rhlevSTD(:,:)
    3809       phiwriteSTD(:,:,3)=philevSTD(:,:)
    3810       uwriteSTD(:,:,3)=ulevSTD(:,:)
    3811       vwriteSTD(:,:,3)=vlevSTD(:,:)
    3812       wwriteSTD(:,:,3)=wlevSTD(:,:)
    3813 
    3814       twriteSTD(:,:,4)=tlevSTD(:,:)
    3815       qwriteSTD(:,:,4)=qlevSTD(:,:)
    3816       rhwriteSTD(:,:,4)=rhlevSTD(:,:)
    3817       phiwriteSTD(:,:,4)=philevSTD(:,:)
    3818       uwriteSTD(:,:,4)=ulevSTD(:,:)
    3819       vwriteSTD(:,:,4)=vlevSTD(:,:)
    3820       wwriteSTD(:,:,4)=wlevSTD(:,:)
    3821 c
    3822 cIM initialisation 5eme fichier de sortie
    3823       twriteSTD(:,:,5)=tlevSTD(:,:)
    3824       qwriteSTD(:,:,5)=qlevSTD(:,:)
    3825       rhwriteSTD(:,:,5)=rhlevSTD(:,:)
    3826       phiwriteSTD(:,:,5)=philevSTD(:,:)
    3827       uwriteSTD(:,:,5)=ulevSTD(:,:)
    3828       vwriteSTD(:,:,5)=vlevSTD(:,:)
    3829       wwriteSTD(:,:,5)=wlevSTD(:,:)
    3830 c
    3831 cIM initialisation 6eme fichier de sortie
    3832       twriteSTD(:,:,6)=tlevSTD(:,:)
    3833       qwriteSTD(:,:,6)=qlevSTD(:,:)
    3834       rhwriteSTD(:,:,6)=rhlevSTD(:,:)
    3835       phiwriteSTD(:,:,6)=philevSTD(:,:)
    3836       uwriteSTD(:,:,6)=ulevSTD(:,:)
    3837       vwriteSTD(:,:,6)=vlevSTD(:,:)
    3838       wwriteSTD(:,:,6)=wlevSTD(:,:)
    3839 cIM for NMC files
    3840       DO n=1, nlevSTD3
    3841        DO k=1, nlevSTD
    3842         if(rlevSTD3(n).EQ.rlevSTD(k)) THEN
    3843          twriteSTD3(:,n)=tlevSTD(:,k)
    3844          qwriteSTD3(:,n)=qlevSTD(:,k)
    3845          rhwriteSTD3(:,n)=rhlevSTD(:,k)
    3846          phiwriteSTD3(:,n)=philevSTD(:,k)
    3847          uwriteSTD3(:,n)=ulevSTD(:,k)
    3848          vwriteSTD3(:,n)=vlevSTD(:,k)
    3849          wwriteSTD3(:,n)=wlevSTD(:,k)
    3850         endif !rlevSTD3(n).EQ.rlevSTD(k)
    3851        ENDDO
    3852       ENDDO
    3853 c
    3854       DO n=1, nlevSTD8
    3855        DO k=1, nlevSTD
    3856         if(rlevSTD8(n).EQ.rlevSTD(k)) THEN
    3857          tnondefSTD8(:,n)=tnondef(:,k,2)
    3858          twriteSTD8(:,n)=tsumSTD(:,k,2)
    3859          qwriteSTD8(:,n)=qsumSTD(:,k,2)
    3860          rhwriteSTD8(:,n)=rhsumSTD(:,k,2)
    3861          phiwriteSTD8(:,n)=phisumSTD(:,k,2)
    3862          uwriteSTD8(:,n)=usumSTD(:,k,2)
    3863          vwriteSTD8(:,n)=vsumSTD(:,k,2)
    3864          wwriteSTD8(:,n)=wsumSTD(:,k,2)
    3865         endif !rlevSTD8(n).EQ.rlevSTD(k)
    3866        ENDDO
    3867       ENDDO
    38683717c
    38693718c slp sea level pressure
Note: See TracChangeset for help on using the changeset viewer.