Ignore:
Timestamp:
Oct 16, 2013, 2:36:06 PM (11 years ago)
Author:
Laurent Fairhead
Message:

Proto-testing commit

Location:
LMDZ5/tags/proto-testing-20131015
Files:
9 deleted
46 edited
22 copied

Legend:

Unmodified
Added
Removed
  • LMDZ5/tags/proto-testing-20131015

  • LMDZ5/tags/proto-testing-20131015/arch/arch-X64_ADA.fcm

    r1864 r1893  
    1212%OMP_FFLAGS          -openmp
    1313%BASE_LD             -L/smplocal/pub/FFTW/3.3.3_dyn/lib -lfftw3 -shared-intel  -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -Wl,-rpath=/smplocal/pub/NetCDF/4.1.3/lib:/smplocal/pub/HDF5/1.8.9/seq/lib:/smplocal/pub/FFTW/3.3.3_dyn/lib
    14 %MPI_LD
     14%MPI_LD              -L/smplocal/pub/IdrMemMPI/1.3/lib -lidrmem
    1515%OMP_LD              -openmp
    1616
  • LMDZ5/tags/proto-testing-20131015/bld.cfg

    r1864 r1893  
    2424src::dyn     %SRC_PATH/%DYN
    2525src::phys    %SRC_PATH/%PHYS
     26#src::sisvat  %SRC_PATH/%PHYS/sisvat
    2627src::grid    %SRC_PATH/grid
    2728src::filtrez %SRC_PATH/filtrez
     
    9192bld::outfile_ext::mod .mod
    9293bld::tool::SHELL   /bin/bash
     94bld::tool::SHELL   /bin/ksh
  • LMDZ5/tags/proto-testing-20131015/create_make_gcm

    r1864 r1893  
    194194                  strlib=`echo $libstr | awk -F/ ' { print $1 } '`
    195195                  str2='$(LIBO)/lib'$strlib'.a('$strj'.o)'
     196               elif [ -f $dirinc/$stri.F90 ]  || [ -f $dirinc/$stri.F ]  ; then
     197                  strlib=`echo $libstr | awk -F/ ' { print $1 } '`
     198                  str2='$(LIBO)/lib'$strlib'.a('$stri'.o)'
    196199               fi
    197200            done
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3d/inigrads.F

    r1665 r1893  
    1313      real xmin,xmax,ymin,ymax
    1414
    15       character file*10,titlel*40
     15      character(len=*),intent(in) :: file
     16      character(len=*),intent(in) :: titlel
    1617
    1718#include "gradsdef.h"
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3dmem/bilan_dyn_loc.F

    r1864 r1893  
    420420          masse_cum(:,jjb:jje,l)=0.
    421421          flux_u_cum(:,jjb:jje,l)=0.
    422           Q_cum(:,jjb:jje,:,l)=0.
     422          Q_cum(:,jjb:jje,l,:)=0.
    423423          flux_uQ_cum(:,jjb:jje,l,:)=0.
    424424          if (pole_sud) jje=jj_end-1
     
    444444!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    445445      DO l=1,llm
    446         masse_cum(:,jjb:jje,:)=masse_cum(:,jjb:jje,:)+masse(:,jjb:jje,:)
    447         flux_u_cum(:,jjb:jje,:)=flux_u_cum(:,jjb:jje,:)
    448      .                         +flux_u(:,jjb:jje,:)
     446        masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l)
     447        flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)
     448     .                         +flux_u(:,jjb:jje,l)
    449449      ENDDO
    450450!$OMP END DO NOWAIT
     
    454454!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    455455      DO l=1,llm
    456        flux_v_cum(:,jjb:jje,:)=flux_v_cum(:,jjb:jje,:)
    457      .                          +flux_v(:,jjb:jje,:)
     456       flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)
     457     .                          +flux_v(:,jjb:jje,l)
    458458      ENDDO
    459459!$OMP END DO NOWAIT
     
    465465!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    466466        DO l=1,llm
    467           Q_cum(:,jjb:jje,:,iQ)=Q_cum(:,jjb:jje,:,iQ)
    468      .                       +Q(:,jjb:jje,:,iQ)*masse(:,jjb:jje,:)
     467          Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ)
     468     .                       +Q(:,jjb:jje,l,iQ)*masse(:,jjb:jje,l)
    469469        ENDDO
    470470!$OMP END DO NOWAIT
     
    494494c    -------------
    495495      do iQ=1,nQ
    496         call Register_Hallo_u(Q(1,1,1,iQ),llm,0,1,1,0,Req)
     496        call Register_Hallo_u(Q(1,jjb_u,1,iQ),llm,0,1,1,0,Req)
    497497      enddo
    498498      call SendRequest(Req)
     
    660660      call Register_Hallo_u(masse_cum,llm,1,1,1,1,Req)
    661661      do iQ=1,nQ
    662         call Register_Hallo_u(Q_cum(1,1,1,iQ),llm,0,1,1,0,Req)
     662        call Register_Hallo_u(Q_cum(1,jjb_u,1,iQ),llm,0,1,1,0,Req)
    663663      enddo
    664664
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3dmem/inigrads.F

    r1707 r1893  
    1313      real xmin,xmax,ymin,ymax
    1414
    15       character file*10,titlel*40
     15      character(len=*),intent(in) :: file
     16      character(len=*),intent(in) :: titlel
    1617
    1718#include "gradsdef.h"
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3dpar/bilan_dyn_p.F

    r1864 r1893  
    1616      USE mod_hallo
    1717      use misc_mod
    18       use write_field
     18      use write_field_p
    1919      IMPLICIT NONE
    2020
     
    5757c   =======
    5858
    59       integer icum,ncum
    60       logical first
    61       real zz,zqy,zfactv(jjm,llm)
    62 
    63       integer nQ
    64       parameter (nQ=7)
     59      integer,save :: icum,ncum
     60!$OMP THREADPRIVATE(icum,ncum)
     61      logical,SAVE :: first=.true.
     62!$OMP THREADPRIVATE(first)
     63
     64      real zz,zqy
     65      real,save :: zfactv(jjm,llm)
     66
     67      integer,parameter :: nQ=7
    6568
    6669
    6770cym      character*6 nom(nQ)
    6871cym      character*6 unites(nQ)
    69       character*6,save :: nom(nQ)
    70       character*6,save :: unites(nQ)
    71 
    72       character*10 file
     72      character(len=6),save :: nom(nQ)
     73      character(len=6),save :: unites(nQ)
     74
     75      character(len=10) file
    7376      integer ifile
    7477      parameter (ifile=4)
    7578
    76       integer itemp,igeop,iecin,iang,iu,iovap,iun
    77       integer i_sortie
    78 
    79       save first,icum,ncum
    80       save itemp,igeop,iecin,iang,iu,iovap,iun
    81       save i_sortie
    82 
    83       real time
    84       integer itau
    85       save time,itau
    86       data time,itau/0.,0/
    87 
    88       data first/.true./
    89       data itemp,igeop,iecin,iang,iu,iovap,iun/1,2,3,4,5,6,7/
    90       data i_sortie/1/
     79      integer,PARAMETER :: itemp=1,igeop=2,iecin=3,iang=4,iu=5
     80      INTEGER,PARAMETER :: iovap=6,iun=7
     81      integer,PARAMETER :: i_sortie=1
     82
     83      real,SAVE :: time=0.
     84      integer,SAVE :: itau=0.
     85!$OMP THREADPRIVATE(time,itau)
    9186
    9287      real ww
    9388
    9489c   variables dynamiques intermédiaires
    95       REAL vcont(iip1,jjm,llm),ucont(iip1,jjp1,llm)
    96       REAL ang(iip1,jjp1,llm),unat(iip1,jjp1,llm)
    97       REAL massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm)
    98       REAL vorpot(iip1,jjm,llm)
    99       REAL w(iip1,jjp1,llm),ecin(iip1,jjp1,llm),convm(iip1,jjp1,llm)
    100       REAL bern(iip1,jjp1,llm)
     90      REAL,save :: vcont(iip1,jjm,llm),ucont(iip1,jjp1,llm)
     91      REAL,save :: ang(iip1,jjp1,llm),unat(iip1,jjp1,llm)
     92      REAL,save :: massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm)
     93      REAL,save :: vorpot(iip1,jjm,llm)
     94      REAL,save :: w(iip1,jjp1,llm),ecin(iip1,jjp1,llm)
     95      REAL,save ::convm(iip1,jjp1,llm)
     96      REAL,save :: bern(iip1,jjp1,llm)
    10197
    10298c   champ contenant les scalaires advectés.
    103       real Q(iip1,jjp1,llm,nQ)
     99      real,save :: Q(iip1,jjp1,llm,nQ)
    104100   
    105101c   champs cumulés
    106       real ps_cum(iip1,jjp1)
    107       real masse_cum(iip1,jjp1,llm)
    108       real flux_u_cum(iip1,jjp1,llm)
    109       real flux_v_cum(iip1,jjm,llm)
    110       real Q_cum(iip1,jjp1,llm,nQ)
    111       real flux_uQ_cum(iip1,jjp1,llm,nQ)
    112       real flux_vQ_cum(iip1,jjm,llm,nQ)
    113       real flux_wQ_cum(iip1,jjp1,llm,nQ)
    114       real dQ(iip1,jjp1,llm,nQ)
    115 
    116       save ps_cum,masse_cum,flux_u_cum,flux_v_cum
    117       save Q_cum,flux_uQ_cum,flux_vQ_cum
     102      real,save :: ps_cum(iip1,jjp1)
     103      real,save :: masse_cum(iip1,jjp1,llm)
     104      real,save :: flux_u_cum(iip1,jjp1,llm)
     105      real,save :: flux_v_cum(iip1,jjm,llm)
     106      real,save :: Q_cum(iip1,jjp1,llm,nQ)
     107      real,save :: flux_uQ_cum(iip1,jjp1,llm,nQ)
     108      real,save :: flux_vQ_cum(iip1,jjm,llm,nQ)
     109      real,save :: flux_wQ_cum(iip1,jjp1,llm,nQ)
     110      real,save :: dQ(iip1,jjp1,llm,nQ)
     111
    118112
    119113c   champs de tansport en moyenne zonale
     
    128122      character*10,save :: zunites(ntr,nQ)
    129123
    130       integer iave,itot,immc,itrs,istn
    131       data iave,itot,immc,itrs,istn/1,2,3,4,5/
     124      INTEGER,PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5
     125
    132126      character*3 ctrs(ntr)
    133127      data ctrs/'  ','TOT','MMC','TRS','STN'/
    134128
    135       real zvQ(jjm,llm,ntr,nQ),zvQtmp(jjm,llm)
    136       real zavQ(jjm,ntr,nQ),psiQ(jjm,llm+1,nQ)
    137       real zmasse(jjm,llm),zamasse(jjm)
    138 
    139       real zv(jjm,llm),psi(jjm,llm+1)
     129      real,save :: zvQ(jjm,llm,ntr,nQ),zvQtmp(jjm,llm)
     130      real,save :: zavQ(jjm,ntr,nQ),psiQ(jjm,llm+1,nQ)
     131      real,save :: zmasse(jjm,llm),zamasse(jjm)
     132
     133      real,save :: zv(jjm,llm),psi(jjm,llm+1)
    140134
    141135      integer i,j,l,iQ
     
    151145      save fileid
    152146
    153       integer ndex3d(jjm*llm)
     147      integer,save :: ndex3d(jjm*llm)
    154148
    155149C   Variables locales
     
    162156      integer zan, dayref
    163157C
    164       real rlong(jjm),rlatg(jjm)
     158      real,save :: rlong(jjm),rlatg(jjm)
    165159      integer :: jjb,jje,jjn,ijb,ije
    166       type(Request) :: Req
     160      type(Request),SAVE :: Req
     161!$OMP THREADPRIVATE(Req)
    167162
    168163! definition du domaine d'ecriture pour le rebuild
     
    182177c   Initialisation
    183178c=====================================================================
    184       ndex3d=0
    185179      if (adjust) return
    186180     
     
    190184      if (first) then
    191185
     186        ndex3d=0
    192187
    193188        icum=0
     
    202197           WRITE(lunout,*)'dt_cum=',dt_cum
    203198           stop
     199        else
     200          write(lunout,*) "bilan_dyn_p: ncum=",ncum
    204201        endif
    205202
    206         if (i_sortie.eq.1) then
    207          file='dynzon'
    208          if (mpi_rank==0) then
    209          call inigrads(ifile,1
    210      s  ,0.,180./pi,0.,0.,jjm,rlatv,-90.,90.,180./pi
    211      s  ,llm,presnivs,1.
    212      s  ,dt_cum,file,'dyn_zon ')
    213          endif
    214         endif
    215 
     203!        if (i_sortie.eq.1) then
     204!        file='dynzon'
     205!         if (mpi_rank==0) then
     206!        call inigrads(ifile,1
     207!     s  ,0.,180./pi,0.,0.,jjm,rlatv,-90.,90.,180./pi
     208!     s  ,llm,presnivs,1.
     209!     s  ,dt_cum,file,'dyn_zon ')
     210!         endif
     211!        endif
     212
     213!$OMP MASTER
    216214        nom(itemp)='T'
    217215        nom(igeop)='gz'
     
    339337               CALL histend(fileid)
    340338
    341 
     339!$OMP END MASTER
     340!$OMP BARRIER
    342341      endif
    343342
     
    351350   
    352351c   énergie cinétique
    353       ucont(:,jjb:jje,:)=0
     352!      ucont(:,jjb:jje,:)=0
    354353
    355354      call Register_Hallo(ucov,ip1jmp1,llm,1,1,1,1,Req)
    356355      call Register_Hallo(vcov,ip1jm,llm,1,1,1,1,Req)
    357356      call SendRequest(Req)
     357c$OMP BARRIER
    358358      call WaitRequest(Req)
     359c$OMP BARRIER
    359360
    360361      CALL covcont_p(llm,ucov,vcov,ucont,vcont)
     
    362363
    363364c   moment cinétique
     365!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    364366      do l=1,llm
    365367         ang(:,jjb:jje,l)=ucov(:,jjb:jje,l)+constang(:,jjb:jje)
    366368         unat(:,jjb:jje,l)=ucont(:,jjb:jje,l)*cu(:,jjb:jje)
    367369      enddo
    368 
    369       Q(:,jjb:jje,:,itemp)=teta(:,jjb:jje,:)*pk(:,jjb:jje,:)/cpp
    370       Q(:,jjb:jje,:,igeop)=phi(:,jjb:jje,:)
    371       Q(:,jjb:jje,:,iecin)=ecin(:,jjb:jje,:)
    372       Q(:,jjb:jje,:,iang)=ang(:,jjb:jje,:)
    373       Q(:,jjb:jje,:,iu)=unat(:,jjb:jje,:)
    374       Q(:,jjb:jje,:,iovap)=trac(:,jjb:jje,:,1)
    375       Q(:,jjb:jje,:,iun)=1.
    376 
     370!$OMP END DO
     371
     372!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     373      DO l=1,llm
     374        Q(:,jjb:jje,l,itemp)=teta(:,jjb:jje,l)*pk(:,jjb:jje,l)/cpp
     375        Q(:,jjb:jje,l,igeop)=phi(:,jjb:jje,l)
     376        Q(:,jjb:jje,l,iecin)=ecin(:,jjb:jje,l)
     377        Q(:,jjb:jje,l,iang)=ang(:,jjb:jje,l)
     378        Q(:,jjb:jje,l,iu)=unat(:,jjb:jje,l)
     379        Q(:,jjb:jje,l,iovap)=trac(:,jjb:jje,l,1)
     380        Q(:,jjb:jje,l,iun)=1.
     381      ENDDO
     382!$OMP END DO NOWAIT
    377383
    378384c=====================================================================
     
    384390         jje=jj_end
    385391
     392!$OMP MASTER
    386393         ps_cum(:,jjb:jje)=0.
    387          masse_cum(:,jjb:jje,:)=0.
    388          flux_u_cum(:,jjb:jje,:)=0.
    389          Q_cum(:,jjb:jje,:,:)=0.
    390          flux_uQ_cum(:,jjb:jje,:,:)=0.
    391          if (pole_sud) jje=jj_end-1
    392          flux_v_cum(:,jjb:jje,:)=0.
    393          flux_vQ_cum(:,jjb:jje,:,:)=0.
     394!$OMP END MASTER
     395!$OMP BARRIER
     396
     397!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     398        DO l=1,llm
     399          masse_cum(:,jjb:jje,l)=0.
     400          flux_u_cum(:,jjb:jje,l)=0.
     401          Q_cum(:,jjb:jje,l,:)=0.
     402          flux_uQ_cum(:,jjb:jje,l,:)=0.
     403          if (pole_sud) jje=jj_end-1
     404          flux_v_cum(:,jjb:jje,l)=0.
     405          flux_vQ_cum(:,jjb:jje,l,:)=0.
     406        ENDDO
     407!$OMP END DO NOWAIT
    394408      endif
    395409
     
    402416      jje=jj_end
    403417
     418!$OMP MASTER
    404419      ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)+ps(:,jjb:jje)
    405       masse_cum(:,jjb:jje,:)=masse_cum(:,jjb:jje,:)+masse(:,jjb:jje,:)
    406       flux_u_cum(:,jjb:jje,:)=flux_u_cum(:,jjb:jje,:)
    407      .                       +flux_u(:,jjb:jje,:)
     420!$OMP END MASTER
     421!$OMP BARRIER
     422
     423!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     424      DO l=1,llm
     425        masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l)
     426        flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)
     427     .                         +flux_u(:,jjb:jje,l)
     428      ENDDO
     429!$OMP END DO NOWAIT
     430     
    408431      if (pole_sud) jje=jj_end-1
    409       flux_v_cum(:,jjb:jje,:)=flux_v_cum(:,jjb:jje,:)
    410      .                         +flux_v(:,jjb:jje,:)
    411 
    412       jjb=jj_begin
    413       jje=jj_end
    414 
    415       do iQ=1,nQ
    416         Q_cum(:,jjb:jje,:,iQ)=Q_cum(:,jjb:jje,:,iQ)
    417      .                       +Q(:,jjb:jje,:,iQ)*masse(:,jjb:jje,:)
     432
     433!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     434      DO l=1,llm
     435       flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)
     436     .                          +flux_v(:,jjb:jje,l)
     437      ENDDO
     438!$OMP END DO NOWAIT
     439     
     440      jjb=jj_begin
     441      jje=jj_end
     442
     443      do iQ=1,nQ
     444!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     445        DO l=1,llm
     446          Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ)
     447     .                       +Q(:,jjb:jje,l,iQ)*masse(:,jjb:jje,l)
     448        ENDDO
     449!$OMP END DO NOWAIT
    418450      enddo
    419451
     
    425457c   -----------------
    426458      do iQ=1,nQ
     459!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    427460         do l=1,llm
    428461            do j=jjb,jje
     
    434467            enddo
    435468         enddo
     469!$OMP END DO NOWAIT
    436470      enddo
    437471
     
    442476      enddo
    443477      call SendRequest(Req)
     478!$OMP BARRIER     
    444479      call WaitRequest(Req)
    445      
     480!$OMP BARRIER
     481
    446482      jjb=jj_begin
    447483      jje=jj_end
     
    449485     
    450486      do iQ=1,nQ
     487!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    451488         do l=1,llm
    452489            do j=jjb,jje
     
    457494            enddo
    458495         enddo
     496!$OMP END DO NOWAIT
    459497      enddo
    460498
     
    467505      call Register_Hallo(flux_vQ_cum,ip1jm,llm,2,2,2,2,Req)
    468506      call SendRequest(Req)
     507!$OMP BARRIER     
    469508      call WaitRequest(Req)
     509c$OMP BARRIER
    470510
    471511      call  convflu_p(flux_uQ_cum,flux_vQ_cum,llm*nQ,dQ)
     
    475515      call Register_Hallo(flux_v_cum,ip1jm,llm,2,2,2,2,Req)
    476516      call SendRequest(Req)
     517!$OMP BARRIER     
    477518      call WaitRequest(Req)
     519c$OMP BARRIER
    478520
    479521      call convmas_p(flux_u_cum,flux_v_cum,convm)
    480522      CALL vitvert_p(convm,w)
    481 
    482       jjb=jj_begin
    483       jje=jj_end
    484 
    485       do iQ=1,nQ
    486          do l=1,llm-1
    487             do j=jjb,jje
    488                do i=1,iip1
    489                   ww=-0.5*w(i,j,l+1)*(Q(i,j,l,iQ)+Q(i,j,l+1,iQ))
    490                   dQ(i,j,l  ,iQ)=dQ(i,j,l  ,iQ)-ww
    491                   dQ(i,j,l+1,iQ)=dQ(i,j,l+1,iQ)+ww
    492                enddo
    493             enddo
    494          enddo
     523!$OMP BARRIER     
     524
     525      jjb=jj_begin
     526      jje=jj_end
     527
     528      do iQ=1,nQ
     529!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     530         do l=1,llm
     531            IF (l<llm) THEN
     532              do j=jjb,jje
     533                 do i=1,iip1
     534                    ww=-0.5*w(i,j,l+1)*(Q(i,j,l,iQ)+Q(i,j,l+1,iQ))
     535                    dQ(i,j,l  ,iQ)=dQ(i,j,l  ,iQ)-ww
     536                    dQ(i,j,l+1,iQ)=dQ(i,j,l+1,iQ)+ww
     537                 enddo
     538              enddo
     539            ENDIF
     540            IF (l>2) THEN
     541              do j=jjb,jje
     542                do i=1,iip1
     543                  ww=-0.5*w(i,j,l)*(Q(i,j,l-1,iQ)+Q(i,j,l,iQ))
     544                  dQ(i,j,l,iQ)=dQ(i,j,l,iQ)+ww
     545                enddo
     546              enddo
     547            ENDIF
     548         enddo
     549!$OMP ENDDO NOWAIT
    495550      enddo
    496551      IF (prt_level > 5)
     
    505560     . WRITE(lunout,*)'Pas d ecriture'
    506561
     562      jjb=jj_begin
     563      jje=jj_end
     564
    507565c   Normalisation
    508566      do iQ=1,nQ
    509          Q_cum(:,jjb:jje,:,iQ)=Q_cum(:,jjb:jje,:,iQ)
    510      .                        /masse_cum(:,jjb:jje,:)
    511       enddo
     567!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     568        do l=1,llm
     569          Q_cum(:,jjb:jje,l,iQ)=Q_cum(:,jjb:jje,l,iQ)
     570     .                          /masse_cum(:,jjb:jje,l)
     571        enddo
     572!$OMP ENDDO NOWAIT
     573      enddo
     574
    512575      zz=1./REAL(ncum)
    513576
    514       jjb=jj_begin
    515       jje=jj_end
    516 
     577!$OMP MASTER
    517578      ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)*zz
    518       masse_cum(:,jjb:jje,:)=masse_cum(:,jjb:jje,:)*zz
    519       flux_u_cum(:,jjb:jje,:)=flux_u_cum(:,jjb:jje,:)*zz
    520       flux_uQ_cum(:,jjb:jje,:,:)=flux_uQ_cum(:,jjb:jje,:,:)*zz
    521       dQ(:,jjb:jje,:,:)=dQ(:,jjb:jje,:,:)*zz
     579!$OMP END MASTER
     580
     581!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     582      DO l=1,llm
     583        masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)*zz
     584        flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)*zz
     585        flux_uQ_cum(:,jjb:jje,l,:)=flux_uQ_cum(:,jjb:jje,l,:)*zz
     586        dQ(:,jjb:jje,l,:)=dQ(:,jjb:jje,l,:)*zz
     587      ENDDO
     588!$OMP ENDDO NOWAIT
     589         
    522590     
    523591      IF (pole_sud) jje=jj_end-1
    524       flux_v_cum(:,jjb:jje,:)=flux_v_cum(:,jjb:jje,:)*zz
    525       flux_vQ_cum(:,jjb:jje,:,:)=flux_vQ_cum(:,jjb:jje,:,:)*zz
     592!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     593      DO l=1,llm
     594        flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)*zz
     595        flux_vQ_cum(:,jjb:jje,l,:)=flux_vQ_cum(:,jjb:jje,l,:)*zz
     596      ENDDO
     597!$OMP ENDDO
    526598
    527599      jjb=jj_begin
     
    532604c   division de dQ par la masse pour revenir aux bonnes grandeurs
    533605      do iQ=1,nQ
    534          dQ(:,jjb:jje,:,iQ)=dQ(:,jjb:jje,:,iQ)/masse_cum(:,jjb:jje,:)
     606!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     607        DO l=1,llm
     608           dQ(:,jjb:jje,l,iQ)=dQ(:,jjb:jje,l,iQ)/masse_cum(:,jjb:jje,l)
     609        ENDDO
     610!$OMP ENDDO NOWAIT
    535611      enddo
    536612 
     
    545621      if (pole_sud) jje=jj_end-1
    546622
    547       zv(jjb:jje,:)=0.
    548       zmasse(jjb:jje,:)=0.
     623!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     624        DO l=1,llm
     625          zv(jjb:jje,l)=0.
     626          zmasse(jjb:jje,l)=0.
     627        ENDDO
     628!$OMP ENDDO NOWAIT
    549629
    550630      call Register_Hallo(masse_cum,ip1jmp1,llm,1,1,1,1,Req)
     
    554634
    555635      call SendRequest(Req)
     636!$OMP BARRIER
    556637      call WaitRequest(Req)
     638c$OMP BARRIER
    557639
    558640      call massbar_p(masse_cum,massebx,masseby)
     
    562644      if (pole_sud) jje=jj_end-1
    563645     
     646!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    564647      do l=1,llm
    565648         do j=jjb,jje
     
    571654         enddo
    572655      enddo
     656!$OMP ENDDO
    573657
    574658c     print*,'3OK'
     
    609693      psiQ=0.
    610694      do iQ=1,nQ
    611          zvQtmp=0.
     695!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    612696         do l=1,llm
     697            zvQtmp(:,l)=0.
    613698            do j=jjb,jje
    614699c              print*,'j,l,iQ=',j,l,iQ
     
    633718            enddo
    634719         enddo
     720!$OMP ENDDO NOWAIT
    635721c   fonction de courant meridienne pour la quantite Q
     722!$OMP BARRIER
     723!$OMP MASTER
    636724         do l=llm,1,-1
    637725            do j=jjb,jje
     
    639727            enddo
    640728         enddo
    641       enddo
     729!$OMP END MASTER
     730!$OMP BARRIER
     731      enddo ! of do iQ=1,nQ
    642732
    643733c   fonction de courant pour la circulation meridienne moyenne
     734!$OMP BARRIER
     735!$OMP MASTER
    644736      psi(jjb:jje,:)=0.
    645737      do l=llm,1,-1
     
    649741         enddo
    650742      enddo
     743!$OMP END MASTER
     744!$OMP BARRIER
    651745
    652746c     print*,'4OK'
    653747c   sorties proprement dites
     748!$OMP MASTER     
    654749      if (i_sortie.eq.1) then
    655750      jjb=jj_begin
     
    669764     s                  ,jjn*llm,ndex3d)
    670765      enddo
    671 
    672766      call histwrite(fileid,'masse',itau,zmasse(jjb:jje,1:llm)
    673767     s   ,jjn*llm,ndex3d)
     
    703797         enddo
    704798      enddo
    705 
     799!$OMP END MASTER
     800!$OMP BARRIER
    706801c     on doit pouvoir tracer systematiquement la fonction de courant.
    707802
     
    712807c/////////////////////////////////////////////////////////////////////
    713808c=====================================================================
    714 
    715809      return
    716810      end
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3dpar/inigrads.F

    r1665 r1893  
    1313      real xmin,xmax,ymin,ymax
    1414
    15       character file*10,titlel*40
     15      character(len=*),intent(in) :: file
     16      character(len=*),intent(in) :: titlel
    1617
    1718#include "gradsdef.h"
  • LMDZ5/tags/proto-testing-20131015/libf/dyn3dpar/leapfrog_p.F

    r1864 r1893  
    13441344c$OMP BARRIER
    13451345        RETURN
    1346       ENDIF
     1346      ENDIF ! of IF (itau==itaumax)
    13471347     
    13481348      IF ( .NOT.purmats ) THEN
     
    13961396#ifdef CPP_IOIPSL
    13971397             IF (ok_dynzon) THEN
    1398              call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest)
    1399              call SendRequest(TestRequest)
    1400 c$OMP BARRIER
    1401               call WaitRequest(TestRequest)
    1402 c$OMP BARRIER
    1403 c$OMP MASTER
    1404 !              CALL writedynav_p(histaveid, itau,vcov ,
    1405 !     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    1406 
    1407 c ATTENTION!!! bilan_dyn_p ne marche probablement pas avec OpenMP
    14081398              CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
    14091399     ,             ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
    1410 c$OMP END MASTER
    14111400              ENDIF !ok_dynzon
    14121401#endif
     
    16021591#ifdef CPP_IOIPSL
    16031592               IF (ok_dynzon) THEN
    1604 c$OMP BARRIER
    1605                call Register_Hallo(vcov,ip1jm,llm,1,0,0,1,TestRequest)
    1606                call SendRequest(TestRequest)
    1607 c$OMP BARRIER
    1608                call WaitRequest(TestRequest)
    1609 c$OMP BARRIER
    1610 c$OMP MASTER
    1611 !               CALL writedynav_p(histaveid, itau,vcov ,
    1612 !     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    16131593               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
    16141594     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
    1615 c$OMP END MASTER
    16161595               END IF !ok_dynzon
    16171596#endif
  • LMDZ5/tags/proto-testing-20131015/libf/phy1d/lmdz1d.F

    r1864 r1893  
    1313      use control_mod
    1414      USE indice_sol_mod
     15      USE phyaqua_mod
    1516
    1617      implicit none
  • LMDZ5/tags/proto-testing-20131015/libf/phydev/physiq.F90

    r1864 r1893  
    104104  call ymds2ju(1979, 1, 1, 0.0, zjulian)
    105105  dtime=pdtphys
     106#ifndef CPP_NO_IOIPSL
     107  ! Initialize IOIPSL output file
    106108  call histbeg_phy("histins.nc",itau0,zjulian,dtime,nhori,nid_hist)
    107 
    108 
     109#endif
    109110
    110111!$OMP MASTER
    111112
    112 
    113 
     113#ifndef CPP_NO_IOIPSL
     114! IOIPSL
    114115  ! define vertical coordinate
    115116  call histvert(nid_hist,"presnivs","Vertical levels","Pa",klev, &
     
    130131  ! end definition sequence
    131132  call histend(nid_hist)
    132 
     133#endif
     134
     135#ifdef CPP_XIOS
    133136!XIOS
    134 #ifdef CPP_XIOS
    135137    ! Déclaration de l'axe vertical du fichier:   
    136     !CALL wxios_add_vaxis("presnivs", "histins", klev, presnivs)
     138    CALL wxios_add_vaxis("presnivs", "histins", klev, presnivs)
    137139
    138140    !Déclaration du pas de temps:
    139     !CALL wxios_set_timestep(dtime)
     141    CALL wxios_set_timestep(dtime)
    140142
    141143    !Finalisation du contexte:
    142     !CALL wxios_closedef()
     144    CALL wxios_closedef()
    143145#endif
    144146!$OMP END MASTER
    145147endif ! of if (debut)
    146148
    147 ! increment counter itau
     149! increment local time counter itau
    148150itau=itau+1
    149151
     
    169171
    170172! write some outputs:
     173! IOIPSL
     174#ifndef CPP_NO_IOIPSL
    171175if (modulo(itau,iwrite_phys)==0) then
    172176  call histwrite_phy(nid_hist,.false.,"temperature",itau,t)
     
    175179  call histwrite_phy(nid_hist,.false.,"ps",itau,paprs(:,1))
    176180endif
     181#endif
    177182
    178183!XIOS
    179184#ifdef CPP_XIOS
    180185!$OMP MASTER
    181     !On incrémente le pas de temps XIOS
    182     !CALL wxios_update_calendar(itau)
    183 
    184     !Et on écrit, avec la routine histwrite dédiée:
    185     !CALL histwrite_phy("temperature",t)
    186     !CALL histwrite_phy("u",u)
    187     !CALL histwrite_phy("v",v)
    188     !CALL histwrite_phy("ps",paprs(:,1))
     186    !Increment XIOS time
     187    CALL wxios_update_calendar(itau)
     188
     189    !Send fields to XIOS:
     190    CALL histwrite_phy("temperature",t)
     191    CALL histwrite_phy("u",u)
     192    CALL histwrite_phy("v",v)
     193    CALL histwrite_phy("ps",paprs(:,1))
    189194!$OMP END MASTER
    190195#endif
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/calcul_STDlev.h

    r1707 r1893  
    1 c
    2 c $Header$
    3 c
    4 cIM on initialise les variables
    5 c
     1!
     2! $Header$
     3!
     4!IM on initialise les variables
     5!
    66        missing_val=nf90_fill_real
    7 c
    8 cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
    9 cIM               sur les niveaux de pression standard du NMC
     7!
     8!IM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
     9!IM               sur les niveaux de pression standard du NMC
    1010      DO n=1, nout
    1111       freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n)
    1212      ENDDO
    13 c
     13!
    1414        CALL ini_undefSTD(itap,freq_outNMC)
    15 c
    16 cIM on interpole les champs sur les niveaux STD de pression
    17 cIM a chaque pas de temps de la physique
    18 c
    19 c-------------------------------------------------------c
    20 c positionnement de l'argument logique a .false.        c
    21 c pour ne pas recalculer deux fois la meme chose !      c
    22 c a cet effet un appel a plevel_new a ete deplace       c
    23 c a la fin de la serie d'appels                         c
    24 c la boucle 'DO k=1, nlevSTD' a ete internalisee        c
    25 c dans plevel_new, d'ou la creation de cette routine... c
    26 c-------------------------------------------------------c
    27 c
    28         CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD,
    29      &              t_seri,tlevSTD)
    30         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    31      &             u_seri,ulevSTD)
    32         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    33      &             v_seri,vlevSTD)
    34 c
    35 
    36 c
    37         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    38      &             zphi/RG,philevSTD)
    39         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    40      &             qx(:,:,ivap),qlevSTD)
    41         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    42      &             zx_rh*100.,rhlevSTD)
    43 c
     15!
     16!IM on interpole les champs sur les niveaux STD de pression
     17!IM a chaque pas de temps de la physique
     18!
     19!-------------------------------------------------------c
     20! positionnement de l'argument logique a .false.        c
     21! pour ne pas recalculer deux fois la meme chose !      c
     22! a cet effet un appel a plevel_new a ete deplace       c
     23! a la fin de la serie d'appels                         c
     24! la boucle 'DO k=1, nlevSTD' a ete internalisee        c
     25! dans plevel_new, d'ou la creation de cette routine... c
     26!-------------------------------------------------------c
     27!
     28        CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD, &
     29                    t_seri,tlevSTD)
     30        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     31                   u_seri,ulevSTD)
     32        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     33                   v_seri,vlevSTD)
     34!
     35
     36!
     37        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     38                   zphi/RG,philevSTD)
     39        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     40                   qx(:,:,ivap),qlevSTD)
     41        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     42                   zx_rh*100.,rhlevSTD)
     43!
    4444        DO l=1, klev
    4545         DO i=1, klon
     
    4747         ENDDO !i
    4848        ENDDO !l
    49         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    50      &             zx_tmp_fi3d,uvSTD)
    51 c
     49        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     50                   zx_tmp_fi3d,uvSTD)
     51!
    5252        DO l=1, klev
    5353         DO i=1, klon
     
    5555         ENDDO !i
    5656        ENDDO !l
    57         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    58      &             zx_tmp_fi3d,vqSTD)
    59 c
     57        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     58                   zx_tmp_fi3d,vqSTD)
     59!
    6060        DO l=1, klev
    6161         DO i=1, klon
     
    6363         ENDDO !i
    6464        ENDDO !l
    65         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    66      &             zx_tmp_fi3d,vTSTD)
    67 c
     65        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     66                   zx_tmp_fi3d,vTSTD)
     67!
    6868        DO l=1, klev
    6969         DO i=1, klon
     
    7171         ENDDO !i
    7272        ENDDO !l
    73         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    74      &             zx_tmp_fi3d,wqSTD)
    75 c
     73        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     74                   zx_tmp_fi3d,wqSTD)
     75!
    7676        DO l=1, klev
    7777         DO i=1, klon
     
    7979         ENDDO !i
    8080        ENDDO !l
    81         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    82      &             zx_tmp_fi3d,vphiSTD)
    83 c
     81        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     82                   zx_tmp_fi3d,vphiSTD)
     83!
    8484        DO l=1, klev
    8585         DO i=1, klon
     
    8787         ENDDO !i
    8888        ENDDO !l
    89         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    90      &             zx_tmp_fi3d,wTSTD)
    91 c
     89        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     90                   zx_tmp_fi3d,wTSTD)
     91!
    9292        DO l=1, klev
    9393         DO i=1, klon
     
    9595         ENDDO !i
    9696        ENDDO !l
    97         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    98      &             zx_tmp_fi3d,u2STD)
    99 c
     97        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     98                   zx_tmp_fi3d,u2STD)
     99!
    100100        DO l=1, klev
    101101         DO i=1, klon
     
    103103         ENDDO !i
    104104        ENDDO !l
    105         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    106      &             zx_tmp_fi3d,v2STD)
    107 c
     105        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     106                   zx_tmp_fi3d,v2STD)
     107!
    108108        DO l=1, klev
    109109         DO i=1, klon
     
    111111         ENDDO !i
    112112        ENDDO !l
    113         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    114      &             zx_tmp_fi3d,T2STD)
    115 
    116 c
     113        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     114                   zx_tmp_fi3d,T2STD)
     115
     116!
    117117      zx_tmp_fi3d(:,:)=wo(:,:,1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
    118         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    119      &             zx_tmp_fi3d,O3STD)
    120 c
     118        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     119                   zx_tmp_fi3d,O3STD)
     120!
    121121      if (read_climoz == 2) THEN
    122122      zx_tmp_fi3d(:,:)=wo(:,:,2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
    123         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    124      &             zx_tmp_fi3d,O3daySTD)
     123        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     124                   zx_tmp_fi3d,O3daySTD)
    125125      endif
    126 c
     126!
    127127        DO l=1, klev
    128128        DO i=1, klon
     
    130130        ENDDO !i
    131131        ENDDO !l
    132         CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
    133      &             omega,wlevSTD)
    134 c
    135 cIM on somme les valeurs toutes les freq_calNMC secondes
    136 c
     132        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD, &
     133                   omega,wlevSTD)
     134!
     135!IM on somme les valeurs toutes les freq_calNMC secondes
     136!
    137137       CALL undefSTD(itap,freq_calNMC, read_climoz)
    138 c
    139 cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
    140 c
     138!
     139!IM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
     140!
    141141       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
    142 c
    143        CALL plevel(klon,klev,.true.,pplay,50000.,
    144      &              zphi/RG,geo500)
    145 
    146 cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
    147 c
    148       CALL plevel(klon,klevp1,.true.,paprs,20000.,
    149      $     swdn0,SWdn200clr)
    150       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    151      $     swdn,SWdn200)
    152       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    153      $     swup0,SWup200clr)
    154       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    155      $     swup,SWup200)
    156 c
    157       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    158      $     lwdn0,LWdn200clr)
    159       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    160      $     lwdn,LWdn200)
    161       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    162      $     lwup0,LWup200clr)
    163       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    164      $     lwup,LWup200)
    165 c
     142!
     143       CALL plevel(klon,klev,.true.,pplay,50000., &
     144                    zphi/RG,geo500)
     145
     146!IM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
     147!
     148      CALL plevel(klon,klevp1,.true.,paprs,20000., &
     149           swdn0,SWdn200clr)
     150      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     151           swdn,SWdn200)
     152      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     153           swup0,SWup200clr)
     154      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     155           swup,SWup200)
     156!
     157      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     158           lwdn0,LWdn200clr)
     159      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     160           lwdn,LWdn200)
     161      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     162           lwup0,LWup200clr)
     163      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     164           lwup,LWup200)
     165!
    166166      twriteSTD(:,:,1)=tsumSTD(:,:,1)
    167167      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
     
    195195      vwriteSTD(:,:,4)=vlevSTD(:,:)
    196196      wwriteSTD(:,:,4)=wlevSTD(:,:)
    197 c
    198 cIM initialisation 5eme fichier de sortie
     197!
     198!IM initialisation 5eme fichier de sortie
    199199      twriteSTD(:,:,5)=tlevSTD(:,:)
    200200      qwriteSTD(:,:,5)=qlevSTD(:,:)
     
    204204      vwriteSTD(:,:,5)=vlevSTD(:,:)
    205205      wwriteSTD(:,:,5)=wlevSTD(:,:)
    206 c
    207 cIM initialisation 6eme fichier de sortie
     206!
     207!IM initialisation 6eme fichier de sortie
    208208      twriteSTD(:,:,6)=tlevSTD(:,:)
    209209      qwriteSTD(:,:,6)=qlevSTD(:,:)
     
    213213      vwriteSTD(:,:,6)=vlevSTD(:,:)
    214214      wwriteSTD(:,:,6)=wlevSTD(:,:)
    215 cIM for NMC files
     215!IM for NMC files
    216216      DO n=1, nlevSTD3
    217217       DO k=1, nlevSTD
     
    227227       ENDDO
    228228      ENDDO
    229 c
     229!
    230230      DO n=1, nlevSTD8
    231231       DO k=1, nlevSTD
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/calcul_divers.h

    r1454 r1893  
    1 c
    2 c $Header$
    3 c
     1!
     2! $Header$
     3!
    44
    5 c     Initialisations diverses au "debut" du mois
     5!     Initialisations diverses au "debut" du mois
    66      IF(debut) THEN
    77         nday_rain(:)=0.
    88
    9 c        surface terre
     9!        surface terre
    1010         paire_ter(:)=0.
    1111         DO i=1, klon
     
    1616      ENDIF
    1717
    18 cIM   Calcul une fois par jour : total_rain, nday_rain
     18!IM   Calcul une fois par jour : total_rain, nday_rain
    1919      IF(MOD(itap,INT(un_jour/dtime)).EQ.0) THEN
    2020         DO i = 1, klon
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/clesphys.h

    r1864 r1893  
    6666! aer_type: pour utiliser un fichier constant dans readaerosol
    6767       CHARACTER*8 :: aer_type
    68        LOGICAL ok_isccp, ok_regdyn
     68       LOGICAL ok_regdyn
    6969       REAL lonmin_ins, lonmax_ins, latmin_ins, latmax_ins
    7070       REAL ecrit_ins, ecrit_hf, ecrit_day
     
    9494     &     , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC   &
    9595     &     , pasphys, ok_histNMC, freq_outNMC, freq_calNMC              &
    96      &     , type_run, ok_isccp, ok_regdyn, ok_cosp                     &
     96     &     , type_run, ok_regdyn, ok_cosp                               &
    9797     &     , ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP                     &
    9898     &     , lonmin_ins, lonmax_ins, latmin_ins, latmax_ins             &
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/conema3.h

    r879 r1893  
    66      logical ok_adj_ema      ! F
    77      integer iflag_clw      ! 0
    8           integer iflag_cvl_sigd
     8      integer iflag_cvl_sigd
    99      real sig1feed      ! 1.
    1010      real sig2feed      ! 0.95
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/conf_phys_m.F90

    r1864 r1893  
    8383  character (len = 10),SAVE  :: type_veget_omp
    8484  CHARACTER(len = 8),SAVE   :: aer_type_omp
     85  logical,SAVE              :: ok_snow_omp
    8586  logical,SAVE              :: ok_newmicro_omp
    8687  logical,SAVE        :: ok_journe_omp, ok_mensuel_omp, ok_instan_omp, ok_hf_omp       
     
    160161  REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3)
    161162  CHARACTER*4, SAVE :: type_run_omp
    162   LOGICAL,SAVE :: ok_isccp_omp
    163163  LOGICAL,SAVE :: ok_cosp_omp
    164164  LOGICAL,SAVE :: ok_mensuelCOSP_omp,ok_journeCOSP_omp,ok_hfCOSP_omp
     
    227227  call getin('VEGET', type_veget_omp)
    228228!
     229
     230! Martin
     231!Config Key  = ok_snow
     232!Config Desc = Flag to activate snow model SISVAT
     233!Config Def  = .false.
     234  ok_snow_omp = .false.
     235  call getin('ok_snow', ok_snow_omp)
     236! Martin
     237
    229238!Config Key  = OK_journe
    230239!Config Desc = Pour des sorties journalieres
     
    13411350  type_run_omp = 'AMIP'
    13421351  call getin('type_run',type_run_omp)
    1343 
    1344 !
    1345 !Config Key  = ok_isccp
    1346 !Config Desc =
    1347 !Config Def  = .true.
    1348 !Config Help =
    1349 !
    1350 ! ok_isccp = .true.
    1351   ok_isccp_omp = .false.
    1352   call getin('ok_isccp',ok_isccp_omp)
    13531352
    13541353!
     
    17371736         ok_veget=.false.
    17381737    endif
     1738    ! Martin
     1739    ok_snow = ok_snow_omp
     1740    ! Martin
    17391741
    17401742    ok_newmicro = ok_newmicro_omp
     
    17861788    iflag_cvl_sigd = iflag_cvl_sigd_omp
    17871789    type_run = type_run_omp
    1788     ok_isccp = ok_isccp_omp
    17891790    ok_cosp = ok_cosp_omp
    17901791    ok_mensuelCOSP = ok_mensuelCOSP_omp
     
    18601861  write(lunout,*)' Version ocean = ', version_ocean
    18611862  write(lunout,*)' Config veget = ', ok_veget,type_veget
     1863  write(lunout,*)' Snow model SISVAT : ok_snow = ', ok_snow
    18621864  write(lunout,*)' Sortie journaliere = ', ok_journe
    18631865  write(lunout,*)' Sortie haute frequence = ', ok_hf
     
    19581960  write(lunout,*)' iflag_clos = ', iflag_clos
    19591961  write(lunout,*)' type_run = ',type_run
    1960   write(lunout,*)' ok_isccp = ',ok_isccp
    19611962  write(lunout,*)' ok_cosp = ',ok_cosp
    19621963  write(lunout,*)' ok_mensuelCOSP = ',ok_mensuelCOSP
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv30_routines.F

    r1750 r1893  
    3030C   ***                     IT MUST BE LESS THAN 0              ***
    3131
    32 #include "cv30param.h"
    33 #include "conema3.h"
     32      include "cv30param.h"
     33      include "conema3.h"
    3434
    3535      integer nd
     
    108108      real cpx(len,nd)
    109109
    110 #include "cvthermo.h"
    111 #include "cv30param.h"
     110      include "cvthermo.h"
     111      include "cv30param.h"
    112112
    113113
     
    176176C================================================================
    177177
    178 #include "cv30param.h"
     178      include "cv30param.h"
    179179
    180180c inputs:
     
    359359!----------------------------------------------------------------
    360360
    361 #include "cvthermo.h"
    362 #include "cv30param.h"
     361      include "cvthermo.h"
     362      include "cv30param.h"
    363363
    364364c inputs:
     
    646646!-------------------------------------------------------------------
    647647
    648 #include "cv30param.h"
     648      include "cv30param.h"
    649649
    650650c input:
     
    748748      implicit none
    749749
    750 #include "cv30param.h"
     750      include "cv30param.h"
    751751      include 'iniprint.h'
    752752
     
    873873C---------------------------------------------------------------------
    874874
    875 #include "cvthermo.h"
    876 #include "cv30param.h"
    877 #include "conema3.h"
     875      include "cvthermo.h"
     876      include "cv30param.h"
     877      include "conema3.h"
    878878
    879879c inputs:
     
    12331233!===================================================================
    12341234
    1235 #include "cvthermo.h"
    1236 #include "cv30param.h"
     1235      include "cvthermo.h"
     1236      include "cv30param.h"
    12371237
    12381238c input:
     
    14431443!---------------------------------------------------------------------
    14441444
    1445 #include "cvthermo.h"
    1446 #include "cv30param.h"
     1445      include "cvthermo.h"
     1446      include "cv30param.h"
    14471447
    14481448c inputs:
     
    18361836
    18371837
    1838 #include "cvthermo.h"
    1839 #include "cv30param.h"
    1840 #include "cvflag.h"
     1838      include "cvthermo.h"
     1839      include "cv30param.h"
     1840      include "cvflag.h"
    18411841
    18421842c inputs:
     
    22002200      implicit none
    22012201
    2202 #include "cvthermo.h"
    2203 #include "cv30param.h"
    2204 #include "cvflag.h"
    2205 #include "conema3.h"
     2202      include "cvthermo.h"
     2203      include "cv30param.h"
     2204      include "cvflag.h"
     2205      include "conema3.h"
    22062206
    22072207c inputs:
     
    30533053        implicit none
    30543054
    3055 #include "cv30param.h"
     3055      include "cv30param.h"
    30563056
    30573057c inputs:
     
    31833183      implicit none
    31843184
    3185 #include "cv30param.h"
     3185      include "cv30param.h"
    31863186
    31873187c inputs:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3_buoy.F

    r1515 r1893  
    1414      implicit none
    1515
    16 #include "cvthermo.h"
    17 #include "cv3param.h"
     16      include "cvthermo.h"
     17      include "cv3param.h"
    1818
    1919c input:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3_cine.F

    r1403 r1893  
    1818      implicit none
    1919c
    20 #include "YOMCST.h"
    21 #include "cvthermo.h"
    22 #include "cv3param.h"
     20      include "YOMCST.h"
     21      include "cvthermo.h"
     22      include "cv3param.h"
    2323c input:
    2424      integer ncum, nd, nloc
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3_routines.F

    r1864 r1893  
    3030C   ***                     IT MUST BE LESS THAN 0              ***
    3131
    32 #include "cv3param.h"
    33 #include "conema3.h"
     32      include "cv3param.h"
     33      include "conema3.h"
    3434
    3535      integer nd
     
    167167      real cpx(len,nd)
    168168
    169 #include "cvthermo.h"
    170 #include "cv3param.h"
     169      include "cvthermo.h"
     170      include "cv3param.h"
    171171
    172172
     
    242242C================================================================
    243243
    244 #include "cv3param.h"
    245 #include "cvthermo.h"
     244      include "cv3param.h"
     245      include "cvthermo.h"
    246246
    247247c inputs:
     
    434434!----------------------------------------------------------------
    435435
    436 #include "cvthermo.h"
    437 #include "cv3param.h"
     436      include "cvthermo.h"
     437      include "cv3param.h"
    438438
    439439c inputs:
     
    715715!-------------------------------------------------------------------
    716716
    717 #include "cv3param.h"
     717      include "cv3param.h"
    718718
    719719c input:
     
    818818      implicit none
    819819
    820 #include "cv3param.h"
     820      include "cv3param.h"
    821821      include 'iniprint.h'
    822822
     
    975975C---------------------------------------------------------------------
    976976
    977 #include "cvthermo.h"
    978 #include "cv3param.h"
    979 #include "conema3.h"
    980 #include "cvflag.h"
     977      include "cvthermo.h"
     978      include "cv3param.h"
     979      include "conema3.h"
     980      include "cvflag.h"
    981981
    982982c inputs:
     
    14541454!===================================================================
    14551455
    1456 #include "cvthermo.h"
    1457 #include "cv3param.h"
     1456      include "cvthermo.h"
     1457      include "cv3param.h"
    14581458
    14591459c input:
     
    16971697!---------------------------------------------------------------------
    16981698
    1699 #include "cvthermo.h"
    1700 #include "cv3param.h"
    1701 #include "cvflag.h"
     1699      include "cvthermo.h"
     1700      include "cv3param.h"
     1701      include "cvflag.h"
    17021702
    17031703c inputs:
     
    21192119
    21202120
    2121 #include "cvthermo.h"
    2122 #include "cv3param.h"
    2123 #include "cvflag.h"
     2121      include "cvthermo.h"
     2122      include "cv3param.h"
     2123      include "cvflag.h"
    21242124
    21252125c inputs:
     
    27192719      implicit none
    27202720
    2721 #include "cvthermo.h"
    2722 #include "cv3param.h"
    2723 #include "cvflag.h"
    2724 #include "conema3.h"
     2721      include "cvthermo.h"
     2722      include "cv3param.h"
     2723      include "cvflag.h"
     2724      include "conema3.h"
    27252725
    27262726c inputs:
     
    39413941        implicit none
    39423942
    3943 #include "cv3param.h"
     3943      include "cv3param.h"
    39443944
    39453945c inputs:
     
    40534053      implicit none
    40544054
    4055 #include "cv3param.h"
     4055      include "cv3param.h"
    40564056
    40574057c inputs:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3_vertmix.F

    r879 r1893  
    1919C===============================================================
    2020
    21 #include "cvthermo.h"
    22 #include "YOETHF.h"
    23 #include "YOMCST.h"
    24 #include "FCTTRE.h"
     21      include "cvthermo.h"
     22      include "YOETHF.h"
     23      include "YOMCST.h"
     24      include "FCTTRE.h"
    2525c input :
    2626      integer nd,len
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3p1_closure.F

    r1664 r1893  
    2323      implicit none
    2424
    25 #include "cvthermo.h"
    26 #include "cv3param.h"
    27 #include "YOMCST2.h"
    28 #include "YOMCST.h"
    29 #include "conema3.h"
    30 #include "iniprint.h"
     25      include "cvthermo.h"
     26      include "cv3param.h"
     27      include "YOMCST2.h"
     28      include "YOMCST.h"
     29      include "conema3.h"
     30      include "iniprint.h"
    3131
    3232c input:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv3p_mixing.F

    r1750 r1893  
    1515      implicit none
    1616c
    17 #include "cvthermo.h"
    18 #include "cv3param.h"
    19 #include "YOMCST2.h"
     17      include "cvthermo.h"
     18      include "cv3param.h"
     19      include "YOMCST2.h"
    2020
    2121c inputs:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/cv_routines.F

    r1403 r1893  
    3636C   ***                   (DAMP MUST BE LESS THAN 1)                 ***
    3737
    38 #include "cvparam.h"
     38      include "cvparam.h"
    3939      integer nd
    4040      CHARACTER (LEN=20) :: modname='cv_routines'
     
    9494      real cpx(len,nd)
    9595
    96 #include "cvthermo.h"
    97 #include "cvparam.h"
     96      include "cvthermo.h"
     97      include "cvparam.h"
    9898
    9999
     
    140140C================================================================
    141141
    142 #include "cvparam.h"
     142      include "cvparam.h"
    143143
    144144c inputs:
     
    261261      implicit none
    262262
    263 #include "cvthermo.h"
    264 #include "cvparam.h"
     263      include "cvthermo.h"
     264      include "cvparam.h"
    265265
    266266c inputs:
     
    377377!-------------------------------------------------------------------
    378378 
    379 #include "cvparam.h"
     379      include "cvparam.h"
    380380
    381381c inputs:
     
    409409      implicit none
    410410
    411 #include "cvparam.h"
     411      include "cvparam.h"
    412412
    413413c inputs:
     
    507507C---------------------------------------------------------------------
    508508
    509 #include "cvthermo.h"
    510 #include "cvparam.h"
     509      include "cvthermo.h"
     510      include "cvparam.h"
    511511
    512512c inputs:
     
    796796      real work(nloc)
    797797
    798 #include "cvthermo.h"
    799 #include "cvparam.h"
     798      include "cvthermo.h"
     799      include "cvparam.h"
    800800
    801801c-------------------------------------------------------------------
     
    866866      implicit none
    867867
    868 #include "cvthermo.h"
    869 #include "cvparam.h"
     868      include "cvthermo.h"
     869      include "cvparam.h"
    870870
    871871c inputs:
     
    11261126
    11271127
    1128 #include "cvthermo.h"
    1129 #include "cvparam.h"
     1128      include "cvthermo.h"
     1129      include "cvparam.h"
    11301130
    11311131c inputs:
     
    13301330      implicit none
    13311331
    1332 #include "cvthermo.h"
    1333 #include "cvparam.h"
     1332      include "cvthermo.h"
     1333      include "cvparam.h"
    13341334
    13351335c inputs
     
    17201720      implicit none
    17211721
    1722 #include "cvparam.h"
     1722      include "cvparam.h"
    17231723
    17241724c inputs:
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/declare_STDlev.h

    r1864 r1893  
    1 cIM for NMC files
     1!IM for NMC files
    22!      real twriteSTD(klon,nlevSTD,nfiles)
    33!      real qwriteSTD(klon,nlevSTD,nfiles)
     
    2626
    2727      real, save :: rlevSTD(nlevSTD)
    28       DATA rlevSTD/100000., 92500., 85000., 70000.,
    29      .60000., 50000., 40000., 30000., 25000., 20000.,
    30      .15000., 10000., 7000., 5000., 3000., 2000., 1000./
    31 c$OMP THREADPRIVATE(rlevstd)
     28      DATA rlevSTD/100000., 92500., 85000., 70000., &
     29      60000., 50000., 40000., 30000., 25000., 20000., &
     30      15000., 10000., 7000., 5000., 3000., 2000., 1000./
     31!$OMP THREADPRIVATE(rlevstd)
    3232
    3333      CHARACTER*4, SAVE :: clevSTD(nlevSTD)
    34       DATA clevSTD/'1000','925 ','850 ','700 ','600 ',
    35      .'500 ','400 ','300 ','250 ','200 ','150 ','100 ',
    36      .'70  ','50  ','30  ','20  ','10  '/
    37 c$OMP THREADPRIVATE(clevSTD)
     34      DATA clevSTD/'1000','925 ','850 ','700 ','600 ', &
     35      '500 ','400 ','300 ','250 ','200 ','150 ','100 ', &
     36      '70  ','50  ','30  ','20  ','10  '/
     37!$OMP THREADPRIVATE(clevSTD)
    3838
    3939      real, save :: rlevSTD3(nlevSTD3)
    4040      DATA rlevSTD3/85000., 50000., 25000./
    41 c$OMP THREADPRIVATE(rlevSTD3)
     41!$OMP THREADPRIVATE(rlevSTD3)
    4242
    4343      real, save :: rlevSTD8(nlevSTD8)
    44       DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000.,
    45      $     5000., 1000./
    46 c$OMP THREADPRIVATE(rlevSTD8)
    47 c
     44      DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000., &
     45           5000., 1000./
     46!$OMP THREADPRIVATE(rlevSTD8)
     47!
    4848      REAL geo500(klon)
    4949
    50 c nout : niveau de output des variables a une pression donnee
     50! nout : niveau de output des variables a une pression donnee
    5151      logical oknondef(klon,nlevSTD,nout)
    52 c
    53 c les produits uvSTD, vqSTD, .., T2STD sont calcules
    54 c a partir des valeurs instantannees toutes les 6 h
    55 c qui sont moyennees sur le mois
     52!
     53! les produits uvSTD, vqSTD, .., T2STD sont calcules
     54! a partir des valeurs instantannees toutes les 6 h
     55! qui sont moyennees sur le mois
    5656
    5757      REAL zx_tmp_fiNC(klon,nlevSTD)
     
    5959      REAL missing_val
    6060      REAL, SAVE :: freq_moyNMC(nout)
    61 c$OMP THREADPRIVATE(freq_moyNMC)
     61!$OMP THREADPRIVATE(freq_moyNMC)
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/ini_histday_seri.h

    r1403 r1893  
    1 c
    2 c $Id$
    3 c
    4 cym Ne fonctionnera pas en mode parallele
     1!
     2! $Id$
     3!
     4!ym Ne fonctionnera pas en mode parallele
    55      IF (is_sequential) THEN
    66     
    77      IF (type_run.EQ."AMIP") THEN
    8 c
     8!
    99       zstophy = dtime
    1010       zout = ecrit_day
    11 c
     11!
    1212         idayref = day_ref
    1313         CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
    14 c
     14!
    1515         CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon)
    1616         DO i = 1, iim
     
    2222         ENDDO
    2323         CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat,zx_lat)
    24 c
     24!
    2525         imin_debut=1
    2626         nbpti=1
    2727         jmin_debut=1
    2828         nbptj=1
    29 c
    30          CALL histbeg("histday_seri.nc",
    31      .                 iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    32      .                 imin_debut,nbpti,jmin_debut,nbptj,
    33      .                 itau_phy, zjulian, dtime,
    34      .                 nhori, nid_day_seri)
    35 c
    36          CALL histvert(nid_day_seri, "presnivs",
    37      .                "Vertical levels","mb",
    38      .                 klev, presnivs/100., nvert)
    39 c
    40          CALL histdef(nid_day_seri, "bilTOA",
    41      .                "Net radiation at model top", "W/m2",
    42      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    43      .                "ave(X)", zstophy,zout)
    44 c
    45          CALL histdef(nid_day_seri, "bils",
    46      .                "Net downward energy flux at surface","W/m2",
    47      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    48      .                "ave(X)", zstophy,zout)
    49 c
    50          CALL histdef(nid_day_seri, "ecin",
    51      .                "Total kinetic energy (per unit area)","J/m2",
    52      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    53      .                "ave(X)", zstophy,zout)
    54 c
    55 cIM 151004 BEG
     29!
     30         CALL histbeg("histday_seri.nc",  &
     31                       iim,zx_lon(:,1), jjmp1,zx_lat(1,:), &
     32                       imin_debut,nbpti,jmin_debut,nbptj, &
     33                       itau_phy, zjulian, dtime, &
     34                       nhori, nid_day_seri)
     35!
     36         CALL histvert(nid_day_seri, "presnivs",  &
     37                      "Vertical levels","mb", &
     38                       klev, presnivs/100., nvert)
     39!
     40         CALL histdef(nid_day_seri, "bilTOA",  &
     41                      "Net radiation at model top", "W/m2", &
     42                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     43                      "ave(X)", zstophy,zout)
     44!
     45         CALL histdef(nid_day_seri, "bils",  &
     46                      "Net downward energy flux at surface","W/m2", &
     47                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     48                      "ave(X)", zstophy,zout)
     49!
     50         CALL histdef(nid_day_seri, "ecin",  &
     51                      "Total kinetic energy (per unit area)","J/m2", &
     52                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     53                      "ave(X)", zstophy,zout)
     54!
     55!IM 151004 BEG
    5656         IF(1.EQ.0) THEN
    57 c
    58          CALL histdef(nid_day_seri, "momang",
    59      .               "Total relative angular momentum (per unit area)",
    60      .               "kg/s",
    61      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    62      .                "ave(X)", zstophy,zout)
    63 c
    64          CALL histdef(nid_day_seri, "frictor",
    65      .               "Friction torque (per unit area)", "N/m",
    66      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    67      .                "ave(X)", zstophy,zout)
    68 c
    69          CALL histdef(nid_day_seri, "mountor",
    70      .               "Mountain torque (per unit area)", "N/m",
    71      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    72      .                "ave(X)", zstophy,zout)
    73 c
     57!
     58         CALL histdef(nid_day_seri, "momang",  &
     59                     "Total relative angular momentum (per unit area)", &
     60                     "kg/s", &
     61                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     62                      "ave(X)", zstophy,zout)
     63!
     64         CALL histdef(nid_day_seri, "frictor",  &
     65                     "Friction torque (per unit area)", "N/m", &
     66                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     67                      "ave(X)", zstophy,zout)
     68!
     69         CALL histdef(nid_day_seri, "mountor",  &
     70                     "Mountain torque (per unit area)", "N/m", &
     71                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     72                      "ave(X)", zstophy,zout)
     73!
    7474         ENDIF !(1.EQ.0) THEN
    75 c
    76          CALL histdef(nid_day_seri, "momang",
    77      .               "Axial angular momentum (per unit area)",
    78      .               "kg/s",
    79      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    80      .                "ave(X)", zstophy,zout)
    81 c
    82          CALL histdef(nid_day_seri, "torsfc",
    83      .        "Total surface torque (including mountain torque)", "N/m",
    84      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    85      .                "ave(X)", zstophy,zout)
    86 c
    87 cIM 151004 END       
    88 c
    89          CALL histdef(nid_day_seri, "tamv",
    90      .                "Temperature (mass-weighted vert. ave)", "K",
    91      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    92      .                "ave(X)", zstophy,zout)
    93 c
    94          CALL histdef(nid_day_seri, "psol",
    95      .                "Surface pressure", "Pa",
    96      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    97      .                "ave(X)", zstophy,zout)
    98 c
    99          CALL histdef(nid_day_seri, "evap",
    100      .                "Evaporation and sublimation (per unit area)",
    101      .                "kg/(m2*s)",
    102      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    103      .                "ave(X)", zstophy,zout)
    104 c
    105 c          call histdef(nid_day_seri,
    106 c    .         "SnowFrac",
    107 c    .         "Snow-covered area ", "%", 
    108 c    .         iim,jjmp1,nhori, 1,1,1, -99, 32,
    109 c    .         "ave(X)", zstophy,zout)
    110 c
    111 c        CALL histdef(nid_day_seri, "snow_depth",
    112 cIM 080904  .                "Snow Depth (water equivalent)", "m",
    113 cIM 191104  .                "Snow Depth (water equivalent)", "kg/m2",
    114 c    .                "Snow Mass", "kg/m2",
    115 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    116 c    .               "ave(X)", zstophy,zout)
    117 c
    118            call histdef(nid_day_seri,
    119      .         "tsol_"//clnsurf(is_oce),
    120      .         "SST over open (ice-free) ocean ", "K", 
    121      .         iim,jjmp1,nhori, 1,1,1, -99, 32,
    122      .         "ave(X)", zstophy,zout)
    123 c
    124 c=================================================================
    125 c
     75!
     76         CALL histdef(nid_day_seri, "momang",  &
     77                     "Axial angular momentum (per unit area)", &
     78                     "kg/s", &
     79                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     80                      "ave(X)", zstophy,zout)
     81!
     82         CALL histdef(nid_day_seri, "torsfc",  &
     83              "Total surface torque (including mountain torque)", "N/m", &
     84                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     85                      "ave(X)", zstophy,zout)
     86!
     87!IM 151004 END       
     88!
     89         CALL histdef(nid_day_seri, "tamv",  &
     90                      "Temperature (mass-weighted vert. ave)", "K", &
     91                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     92                      "ave(X)", zstophy,zout)
     93!
     94         CALL histdef(nid_day_seri, "psol",  &
     95                      "Surface pressure", "Pa", &
     96                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     97                      "ave(X)", zstophy,zout)
     98!
     99         CALL histdef(nid_day_seri, "evap",  &
     100                      "Evaporation and sublimation (per unit area)",  &
     101                      "kg/(m2*s)", &
     102                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     103                      "ave(X)", zstophy,zout)
     104!
     105!          call histdef(nid_day_seri,
     106!    .         "SnowFrac",
     107!    .         "Snow-covered area ", "%", 
     108!    .         iim,jjmp1,nhori, 1,1,1, -99, 32,
     109!    .         "ave(X)", zstophy,zout)
     110!
     111!        CALL histdef(nid_day_seri, "snow_depth",
     112!IM 080904  .                "Snow Depth (water equivalent)", "m",
     113!IM 191104  .                "Snow Depth (water equivalent)", "kg/m2",
     114!    .                "Snow Mass", "kg/m2",
     115!    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     116!    .               "ave(X)", zstophy,zout)
     117!
     118           call histdef(nid_day_seri,  &
     119               "tsol_"//clnsurf(is_oce),  &
     120               "SST over open (ice-free) ocean ", "K",   &
     121               iim,jjmp1,nhori, 1,1,1, -99, 32, &
     122               "ave(X)", zstophy,zout)
     123!
     124!=================================================================
     125!
    126126         CALL histend(nid_day_seri)
    127 c
    128 c=================================================================
     127!
     128!=================================================================
    129129      ENDIF ! fin de test sur type_run.EQ.AMIP
    130130     
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/ini_paramLMDZ_phy.h

    r1538 r1893  
    1 cIM    Implemente en modes sequentiel et parallele
     1!IM    Implemente en modes sequentiel et parallele
    22
    33       CALL gather(rlat,rlat_glo)
     
    66       CALL bcast(rlon_glo)
    77
    8 c$OMP MASTER
     8!$OMP MASTER
    99      if (is_mpi_root) then
    10 c
     10!
    1111       zstophy = dtime
    1212       zout = mth_len*un_jour
    13 c
     13!
    1414       idayref = day_ref
    1515       CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
    16 c
     16!
    1717       CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon_glo,zx_lon)
    1818       if (iim.gt.1) then
     
    2323       endif
    2424       CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat_glo,zx_lat)
    25 c
    26        CALL histbeg("paramLMDZ_phy.nc",
    27      .                 np,zx_lon(np:np,1), np,zx_lat(1,np:np),
    28      .                 1,1,1,1,
    29      .                 itau_phy, zjulian, dtime,
    30      .                 nhori, nid_ctesGCM)
    31 c
    32        CALL histdef(nid_ctesGCM, "R_ecc",
    33      .                "Excentricite","-",
    34      .                1,1,nhori, 1,1,1, -99, 32,
    35      .                "ave", zstophy,zout)
    36 c
    37        CALL histdef(nid_ctesGCM, "R_peri",
    38      .                "Equinoxe","-",
    39      .                1,1,nhori, 1,1,1, -99, 32,
    40      .                "ave", zstophy,zout)
    41 c
    42        CALL histdef(nid_ctesGCM, "R_incl",
    43      .                "Inclinaison","deg",
    44      .                1,1,nhori, 1,1,1, -99, 32,
    45      .                "ave", zstophy,zout)
    46 c
    47        CALL histdef(nid_ctesGCM, "solaire",
    48      .                "Constante solaire","W/m2",
    49      .                1,1,nhori, 1,1,1, -99, 32,
    50      .                "ave", zstophy,zout)
    51 c
    52        CALL histdef(nid_ctesGCM, "co2_ppm",
    53      .                "Concentration du CO2", "ppm",
    54      .                1,1,nhori, 1,1,1, -99, 32,
    55      .                "ave(X)", zstophy,zout)
    56 c
    57        CALL histdef(nid_ctesGCM, "CH4_ppb",
    58      .                "Concentration du CH4", "ppb",
    59      .                1,1,nhori, 1,1,1, -99, 32,
    60      .                "ave(X)", zstophy,zout)
    61 c
    62        CALL histdef(nid_ctesGCM, "N2O_ppb",
    63      .                "Concentration du N2O", "ppb",
    64      .                1,1,nhori, 1,1,1, -99, 32,
    65      .                "ave(X)", zstophy,zout)
    66 c
    67        CALL histdef(nid_ctesGCM, "CFC11_ppt",
    68      .                "Concentration du CFC11", "ppt",
    69      .                1,1,nhori, 1,1,1, -99, 32,
    70      .                "ave(X)", zstophy,zout)
    71 c
    72        CALL histdef(nid_ctesGCM, "CFC12_ppt",
    73      .                "Concentration du CFC12", "ppt",
    74      .                1,1,nhori, 1,1,1, -99, 32,
    75      .                "ave(X)", zstophy,zout)
    76 c
    77        CALL histdef(nid_ctesGCM, "bils",
    78      .                "Surface total heat flux", "W m-2",
    79      .                1,1,nhori, 1,1,1, -99, 32,
    80      .                "ave", zstophy,zout)
    81 c
    82        CALL histdef(nid_ctesGCM, "evap",
    83      .                "Evaporation", "kg m-2 s-1",
    84      .                1,1,nhori, 1,1,1, -99, 32,
    85      .                "ave", zstophy,zout)
    86 c
    87        CALL histdef(nid_ctesGCM, "evap_land",
    88      .                "Land evaporation", "kg m-2 s-1",
    89      .                1,1,nhori, 1,1,1, -99, 32,
    90      .                "ave", zstophy,zout)
    91 c
    92        CALL histdef(nid_ctesGCM, "flat",
    93      .                "Latent heat flux", "W m-2",
    94      .                1,1,nhori, 1,1,1, -99, 32,
    95      .                "ave", zstophy,zout)
    96 c
    97        CALL histdef(nid_ctesGCM, "nettop0",
    98      .                "Clear sky net downward radiatif flux at TOA",
    99      .                "W m-2",
    100      .                1,1,nhori, 1,1,1, -99, 32,
    101      .                "ave", zstophy,zout)
    102 c
    103        CALL histdef(nid_ctesGCM, "nettop",
    104      .                "Net downward radiatif flux at TOA", "W m-2",
    105      .                1,1,nhori, 1,1,1, -99, 32,
    106      .                "ave", zstophy,zout)
    107 c
    108        CALL histdef(nid_ctesGCM, "precip",
    109      .                "Total precipitation (liq+sol)", "kg m-2 s-1",
    110      .                1,1,nhori, 1,1,1, -99, 32,
    111      .                "ave", zstophy,zout)
    112 c
    113        CALL histdef(nid_ctesGCM, "tsol",
    114      .                "Surface temperature", "K",
    115      .                1,1,nhori, 1,1,1, -99, 32,
    116      .                "ave", zstophy,zout)
    117 c
    118        CALL histdef(nid_ctesGCM, "t2m",
    119      .                "Temperature at 2m", "K",
    120      .                1,1,nhori, 1,1,1, -99, 32,
    121      .                "ave", zstophy,zout)
    122 c
    123        CALL histdef(nid_ctesGCM, "prw",
    124      .                "Precipitable water", "kg m-2",
    125      .                1,1,nhori, 1,1,1, -99, 32,
    126      .                "ave", zstophy,zout)
    127 c=================================================================
    128 c
     25!
     26       CALL histbeg("paramLMDZ_phy.nc",  &
     27                       np,zx_lon(np:np,1), np,zx_lat(1,np:np), &
     28                       1,1,1,1, &
     29                       itau_phy, zjulian, dtime, &
     30                       nhori, nid_ctesGCM)
     31!
     32       CALL histdef(nid_ctesGCM, "R_ecc",  &
     33                      "Excentricite","-", &
     34                      1,1,nhori, 1,1,1, -99, 32, &
     35                      "ave", zstophy,zout)
     36!
     37       CALL histdef(nid_ctesGCM, "R_peri",  &
     38                      "Equinoxe","-", &
     39                      1,1,nhori, 1,1,1, -99, 32, &
     40                      "ave", zstophy,zout)
     41!
     42       CALL histdef(nid_ctesGCM, "R_incl",  &
     43                      "Inclinaison","deg", &
     44                      1,1,nhori, 1,1,1, -99, 32, &
     45                      "ave", zstophy,zout)
     46!
     47       CALL histdef(nid_ctesGCM, "solaire",  &
     48                      "Constante solaire","W/m2", &
     49                      1,1,nhori, 1,1,1, -99, 32, &
     50                      "ave", zstophy,zout)
     51!
     52       CALL histdef(nid_ctesGCM, "co2_ppm",  &
     53                      "Concentration du CO2", "ppm", &
     54                      1,1,nhori, 1,1,1, -99, 32,  &
     55                      "ave(X)", zstophy,zout)
     56!
     57       CALL histdef(nid_ctesGCM, "CH4_ppb",  &
     58                      "Concentration du CH4", "ppb", &
     59                      1,1,nhori, 1,1,1, -99, 32,  &
     60                      "ave(X)", zstophy,zout)
     61!
     62       CALL histdef(nid_ctesGCM, "N2O_ppb", &
     63                      "Concentration du N2O", "ppb", &
     64                      1,1,nhori, 1,1,1, -99, 32, &
     65                      "ave(X)", zstophy,zout)
     66!
     67       CALL histdef(nid_ctesGCM, "CFC11_ppt", &
     68                      "Concentration du CFC11", "ppt", &
     69                      1,1,nhori, 1,1,1, -99, 32, &
     70                      "ave(X)", zstophy,zout)
     71!
     72       CALL histdef(nid_ctesGCM, "CFC12_ppt", &
     73                      "Concentration du CFC12", "ppt", &
     74                      1,1,nhori, 1,1,1, -99, 32, &
     75                      "ave(X)", zstophy,zout)
     76!
     77       CALL histdef(nid_ctesGCM, "bils", &
     78                      "Surface total heat flux", "W m-2", &
     79                      1,1,nhori, 1,1,1, -99, 32, &
     80                      "ave", zstophy,zout)
     81!
     82       CALL histdef(nid_ctesGCM, "evap", &
     83                      "Evaporation", "kg m-2 s-1", &
     84                      1,1,nhori, 1,1,1, -99, 32, &
     85                      "ave", zstophy,zout)
     86!
     87       CALL histdef(nid_ctesGCM, "evap_land", &
     88                      "Land evaporation", "kg m-2 s-1", &
     89                      1,1,nhori, 1,1,1, -99, 32, &
     90                      "ave", zstophy,zout)
     91!
     92       CALL histdef(nid_ctesGCM, "flat", &
     93                      "Latent heat flux", "W m-2", &
     94                      1,1,nhori, 1,1,1, -99, 32, &
     95                      "ave", zstophy,zout)
     96!
     97       CALL histdef(nid_ctesGCM, "nettop0", &
     98                      "Clear sky net downward radiatif flux at TOA",  &
     99                      "W m-2", &
     100                      1,1,nhori, 1,1,1, -99, 32, &
     101                      "ave", zstophy,zout)
     102!
     103       CALL histdef(nid_ctesGCM, "nettop", &
     104                      "Net downward radiatif flux at TOA", "W m-2", &
     105                      1,1,nhori, 1,1,1, -99, 32, &
     106                      "ave", zstophy,zout)
     107!
     108       CALL histdef(nid_ctesGCM, "precip", &
     109                      "Total precipitation (liq+sol)", "kg m-2 s-1", &
     110                      1,1,nhori, 1,1,1, -99, 32, &
     111                      "ave", zstophy,zout)
     112!
     113       CALL histdef(nid_ctesGCM, "tsol", &
     114                      "Surface temperature", "K", &
     115                      1,1,nhori, 1,1,1, -99, 32, &
     116                      "ave", zstophy,zout)
     117!
     118       CALL histdef(nid_ctesGCM, "t2m", &
     119                      "Temperature at 2m", "K", &
     120                      1,1,nhori, 1,1,1, -99, 32, &
     121                      "ave", zstophy,zout)
     122!
     123       CALL histdef(nid_ctesGCM, "prw", &
     124                      "Precipitable water", "kg m-2", &
     125                      1,1,nhori, 1,1,1, -99, 32, &
     126                      "ave", zstophy,zout)
     127!=================================================================
     128!
    129129       CALL histend(nid_ctesGCM)
    130130       
    131131       endif !(is_mpi_root)
    132 c$OMP END MASTER
    133 c=================================================================
     132!$OMP END MASTER
     133!=================================================================
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/pbl_surface_mod.F90

    r1864 r1893  
    171171       debut,     lafin,                              &
    172172       rlon,      rlat,      rugoro,   rmu0,          &
     173       zsig,      sollwd_m,  pphi,     cldt,          &
    173174       rain_f,    snow_f,    solsw_m,  sollw_m,       &
    174175       t,         q,         u,        v,             &
     
    177178       lwdown_m,  cdragh,    cdragm,   zu1,    zv1,   &
    178179       alb1_m,    alb2_m,    zxsens,   zxevap,        &
     180       alb3_lic,  runoff,    snowhgt,   qsnow,     to_ice,    sissnow,  &
    179181       zxtsol,    zxfluxlat, zt2m,     qsat2m,        &
    180182       d_t,       d_q,       d_u,      d_v, d_t_diss, &
     
    224226! rlat-----input-R- latitude en degree
    225227! rugos----input-R- longeur de rugosite (en m)
     228! Martin
     229! zsig-----input-R- slope
     230! cldt-----input-R- total cloud fraction
     231! pphi-----input-R- geopotentiel de chaque couche (g z) (reference sol)
     232! Martin
    226233!
    227234! d_t------output-R- le changement pour "t"
     
    264271!****************************************************************************************
    265272! Declarations specifiques pour le 1D. A reprendre
     273    INCLUDE "flux_arp.h"
    266274! Input variables
    267275!****************************************************************************************
     
    287295    REAL, DIMENSION(klon,klev+1), INTENT(IN)        :: paprs   ! pression between layers (Pa)
    288296    REAL, DIMENSION(klon, nbsrf), INTENT(IN)        :: pctsrf  ! sub-surface fraction
     297! Martin
     298    REAL, DIMENSION(klon),        INTENT(IN)        :: zsig    ! slope
     299    REAL, DIMENSION(klon),        INTENT(IN)        :: sollwd_m ! net longwave radiation at mean s   
     300    REAL, DIMENSION(klon),        INTENT(IN)        :: cldt    ! total cloud fraction
     301    REAL, DIMENSION(klon,klev),   INTENT(IN)        :: pphi    ! geopotential (m2/s2)
     302! Martin
    289303
    290304! Input/Output variables
     
    298312    REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)     :: v10m    ! v speed at 10m
    299313    REAL, DIMENSION(klon, klev+1, nbsrf+1), INTENT(INOUT) :: tke
    300 
    301314! Output variables
    302315!****************************************************************************************
     
    308321    REAL, DIMENSION(klon),        INTENT(OUT)       :: alb1_m     ! mean albedo in visible SW interval
    309322    REAL, DIMENSION(klon),        INTENT(OUT)       :: alb2_m     ! mean albedo in near IR SW interval
     323    ! Martin
     324        REAL, DIMENSION(klon),        INTENT(OUT)       :: alb3_lic
     325    ! Martin
    310326    REAL, DIMENSION(klon),        INTENT(OUT)       :: zxsens     ! sensible heat flux at surface with inversed sign
    311327                                                                  ! (=> positive sign upwards)
     
    370386    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_q     ! water vapour flux(latent flux) (kg/m**2/s)
    371387
     388! Martin
     389! sisvat
     390    REAL, DIMENSION(klon),       INTENT(OUT)        :: qsnow      ! snow water content
     391    REAL, DIMENSION(klon),       INTENT(OUT)        :: snowhgt    ! snow height
     392    REAL, DIMENSION(klon),       INTENT(OUT)        :: to_ice     ! snow passed to ice
     393    REAL, DIMENSION(klon),       INTENT(OUT)        :: sissnow    ! snow in snow model
     394    REAL, DIMENSION(klon),       INTENT(OUT)        :: runoff     ! runoff on land ice
     395! Martin
    372396
    373397! Local variables with attribute SAVE
     
    429453    REAL, DIMENSION(klon)              :: AcoefU, AcoefV, BcoefU, BcoefV
    430454    REAL, DIMENSION(klon)              :: ypsref
    431     REAL, DIMENSION(klon)              :: yevap, ytsurf_new, yalb1_new, yalb2_new
     455    REAL, DIMENSION(klon)              :: yevap, ytsurf_new, yalb1_new, yalb2_new, yalb3_new
    432456    REAL, DIMENSION(klon)              :: ztsol
    433457    REAL, DIMENSION(klon)              :: alb_m  ! mean albedo for whole SW interval
     
    476500    REAL                               :: zx_qs1, zcor1, zdelta1
    477501
    478 !****************************************************************************************
    479 ! Declarations specifiques pour le 1D. A reprendre
    480 !****************************************************************************************
    481   REAL  :: fsens,flat
    482   LOGICAL :: ok_flux_surf ! initialized during first_call below
    483   COMMON /flux_arp/fsens,flat,ok_flux_surf
     502    ! Martin
     503    REAL, DIMENSION(klon, nbsrf)       :: sollwd ! net longwave radiation at surface
     504    REAL, DIMENSION(klon)              :: ysollwd
     505    REAL, DIMENSION(klon)              :: ytoice
     506    REAL, DIMENSION(klon)              :: ysnowhgt, yqsnow, ysissnow, yrunoff
     507    REAL, DIMENSION(klon)              :: yzsig
     508    REAL, DIMENSION(klon,klev)         :: ypphi
     509    REAL, DIMENSION(klon)              :: ycldt
     510    REAL, DIMENSION(klon)              :: yrmu0
     511    ! Martin
     512
     513!****************************************************************************************
    484514! End of declarations
    485515!****************************************************************************************
     
    556586    d_t_diss= 0.0 ;d_u = 0.0     ; d_v = 0.0        ; yqsol = 0.0   
    557587    ytherm = 0.0  ; ytke=0.
     588    ! Martin
     589    ysnowhgt = 0.0; yqsnow = 0.0     ; yrunoff = 0.0   ; ytoice =0.0
     590    yalb3_new = 0.0  ; ysissnow = 0.0  ; ysollwd = 0.0
     591    ypphi = 0.0   ; ycldt = 0.0      ; yrmu0 = 0.0
     592    ! Martin
    558593   
    559594    tke(:,:,is_ave)=0.
     
    644679       DO i = 1, klon
    645680          sollw(i,nsrf) = sollw_m(i) + 4.0*RSIGMA*ztsol(i)**3 * (ztsol(i)-ts(i,nsrf))
     681          ! Martin
     682          sollwd(i,nsrf)= sollwd_m(i)
     683          ! Martin
    646684          solsw(i,nsrf) = solsw_m(i) * (1.-alb(i,nsrf)) / (1.-alb_m(i))
    647685       ENDDO
     
    712750          ypaprs(j,klev+1) = paprs(i,klev+1)
    713751          ywindsp(j) = SQRT(u10m(i,nsrf)**2 + v10m(i,nsrf)**2 )
     752          ! Martin
     753          yzsig(j)   = zsig(i)
     754          ycldt(j)   = cldt(i)
     755          yrmu0(j)   = rmu0(i)
     756          ! Martin
    714757       END DO
    715758
     
    862905     
    863906       CASE(is_lic)
     907          ! Martin
    864908          CALL surf_landice(itap, dtime, knon, ni, &
     909               rlon, rlat, debut, lafin, &
     910               yrmu0, ysollwd, yalb, ypphi(:,1), &
    865911               ysolsw, ysollw, yts, ypplay(:,1), &
    866912               ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
     
    871917               ytsoil, yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &
    872918               ytsurf_new, y_dflux_t, y_dflux_q, &
     919               yzsig, ycldt, &
     920               ysnowhgt, yqsnow, ytoice, ysissnow, &
     921               yalb3_new, yrunoff, &
    873922               y_flux_u1, y_flux_v1)
     923          !CALL surf_landice(itap, dtime, knon, ni, &
     924          !     ysolsw, ysollw, yts, ypplay(:,1), &
     925          !     ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
     926          !     AcoefH, AcoefQ, BcoefH, BcoefQ, &
     927          !     AcoefU, AcoefV, BcoefU, BcoefV, &
     928          !     ypsref, yu1, yv1, yrugoro, pctsrf, &
     929          !     ysnow, yqsurf, yqsol, yagesno, &
     930          !     ytsoil, yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &
     931          !     ytsurf_new, y_dflux_t, y_dflux_q, &
     932          !     y_flux_u1, y_flux_v1)
     933
     934          alb3_lic(:)=0.
     935          DO j = 1, knon
     936             i = ni(j)
     937             alb3_lic(i) = yalb3_new(j)
     938             snowhgt(i)   = ysnowhgt(j)
     939             qsnow(i)     = yqsnow(j)
     940             to_ice(i)    = ytoice(j)
     941             sissnow(i)   = ysissnow(j)
     942             runoff(i)    = yrunoff(j)
     943          END DO
     944          ! Martin
    874945         
    875946       CASE(is_oce)
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phys_local_var_mod.F90

    r1864 r1893  
    264264!$OMP THREADPRIVATE(rneb)
    265265
     266! variables de sorties MM
     267      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: zxsnow,snowhgt,qsnow,to_ice
     268      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: sissnow,runoff,albsol3_lic
     269!$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
     270!$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
     271
    266272CONTAINS
    267273
     
    414420
    415421
     422      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon))
     423      ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon))
     424
     425
     426
    416427END SUBROUTINE phys_local_var_init
    417428
     
    554565      DEALLOCATE(beta_prec)
    555566      DEALLOCATE(rneb)
     567      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
    556568
    557569END SUBROUTINE phys_local_var_end
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phys_output_ctrlout_mod.F90

    r1864 r1893  
    11531153  TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    11541154    'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /))
     1155  TYPE(ctrl_out), SAVE :: o_snowsrf = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1156    'snowsrf', 'Snow mass at surface', 'kg/m2', (/ ('', i=1, 9) /))
     1157  TYPE(ctrl_out), SAVE :: o_qsnow = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1158    'qsnow', 'Water contained in snow', 'kg/m2', (/ ('', i=1, 9) /))
     1159  TYPE(ctrl_out), SAVE :: o_snowhgt = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1160    'snowhgt', 'Snow height at surface', 'm', (/ ('', i=1, 9) /))
     1161  TYPE(ctrl_out), SAVE :: o_toice = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1162    'to_ice', 'Snow passed to ice model', 'kg/m2', (/ ('', i=1, 9) /))
     1163  TYPE(ctrl_out), SAVE :: o_sissnow = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1164    'sissnow', 'Snow in snow model', 'kg/m2', (/ ('', i=1, 9) /))
     1165  TYPE(ctrl_out), SAVE :: o_runoff = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1166    'runoff', 'Run-off rate land ice', 'kg/m2/s', (/ ('', i=1, 9) /))
     1167  TYPE(ctrl_out), SAVE :: o_albslw3 = ctrl_out((/ 1, 1, 1, 1, 10, 10, 11, 11, 11 /), &
     1168    'albslw3', 'Surface albedo LW3', '-', (/ ('', i=1, 9) /))
    11551169
    11561170!!!!!!!!!!!!! Sorties niveaux standards de pression NMC
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phys_output_mod.F90

    r1881 r1893  
    4141    USE mod_phys_lmdz_para
    4242    USE aero_mod, only : naero_spc,name_aero
     43        !Martin
     44    USE surface_data, ONLY : ok_snow
    4345    USE phys_output_ctrlout_mod
    4446
     
    110112    INTEGER, DIMENSION(nfiles)            :: phys_out_levmin, phys_out_levmax
    111113    INTEGER, DIMENSION(nfiles)            :: phys_out_filelevels
    112     CHARACTER(LEN=20), DIMENSION(nfiles)  :: chtimestep   = (/ '1mth', '1mth', '1mth', '1mth', '1mth', &
    113                                                                '1mth', '1mth', '1mth', '1mth' /)
     114    CHARACTER(LEN=20), DIMENSION(nfiles)  :: chtimestep = (/ 'Default', 'Default', 'Default', 'Default', 'Default', &
     115                                                             'Default', 'Default', 'Default', 'Default' /)
    114116    LOGICAL, DIMENSION(nfiles)            :: phys_out_filekeys
    115117    LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
     
    272274
    273275       ! Calculate ecrit_files for all files
    274        IF ( chtimestep(iff).eq.'DefFreq' ) then
    275           ! Par defaut ecrit_files = (ecrit_mensuel ecrit_jour ecrit_hf ...)*86400.
     276      IF ( chtimestep(iff).eq.'Default' ) then
     277          ! Par defaut ecrit_files = (ecrit_mensuel ecrit_jour ecrit_hf
     278          ! ...)*86400.
    276279          ecrit_files(iff)=ecrit_files(iff)*86400.
    277        ELSE
    278           CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff))
    279        ENDIF
     280      else
     281       CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff))
     282      ENDIF
     283
    280284       WRITE(lunout,*)'ecrit_files(',iff,')= ',ecrit_files(iff)
    281 
    282285       zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit en seconde
    283 
    284286
    285287#ifdef CPP_XIOS
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phys_output_var_mod.F90

    r1864 r1893  
    2323      REAL, ALLOCATABLE :: bils_latent(:) ! bilan de chaleur au sol
    2424!$OMP THREADPRIVATE(bils_ec,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
     25
    2526
    2627! ug Plein de variables venues de phys_output_mod
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phys_output_write_mod.F90

    r1864 r1893  
    3131    USE phys_state_var_mod
    3232    USE phys_local_var_mod
     33    USE phys_output_var_mod
    3334    USE indice_sol_mod
    3435    USE infotrac
    3536    USE comgeomphy
    36     USE surface_data,     ONLY : type_ocean, ok_veget
     37    USE surface_data,     ONLY : type_ocean, ok_veget, ok_snow
    3738    USE aero_mod
    3839    USE ioipsl
     
    296297ENDIF
    297298      CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
     299
     300      IF (ok_snow) THEN
     301         CALL histwrite_phy(o_snowsrf, zxsnow)
     302         CALL histwrite_phy(o_qsnow, qsnow)
     303         CALL histwrite_phy(o_snowhgt,snowhgt)
     304         CALL histwrite_phy(o_toice,to_ice)
     305         CALL histwrite_phy(o_sissnow,sissnow)
     306         CALL histwrite_phy(o_runoff,runoff)
     307         CALL histwrite_phy(o_albslw3,albsol3_lic)
     308      ENDIF
    298309
    299310
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/phytrac_mod.F90

    r1864 r1893  
    1 !$Id $
    2 !$Id $
     1!$Id$
    32MODULE phytrac_mod
    43!=================================================================================
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/regdim.h

    r524 r1893  
    22! $Header$
    33!
     4!     Valid and equivalent for either free source form or fixed source form
    45      INTEGER i1_deb, i1_fin
    56      INTEGER i2_deb, i2_fin
    6 ccc      PARAMETER (i1_deb=21, i1_fin=40)
    7 ccc      PARAMETER (i2_deb=41, i2_fin=44)
    8 cccc      PARAMETER (i1_deb=47, i1_fin=77)
    9 cccc      PARAMETER (i2_deb=78, i2_fin=79)
     7!cc      PARAMETER (i1_deb=21, i1_fin=40)
     8!cc      PARAMETER (i2_deb=41, i2_fin=44)
     9!ccc      PARAMETER (i1_deb=47, i1_fin=77)
     10!ccc      PARAMETER (i2_deb=78, i2_fin=79)
    1011      PARAMETER (i1_deb=16, i1_fin=30)
    1112      PARAMETER (i2_deb=31, i2_fin=33)
    12 c
     13!
    1314      INTEGER j_deb, j_fin
    14 ccc      PARAMETER (j_deb=29, j_fin=61)
    15 cccc      PARAMETER (j_deb=21, j_fin=51)
     15!cc      PARAMETER (j_deb=29, j_fin=61)
     16!ccc      PARAMETER (j_deb=21, j_fin=51)
    1617      PARAMETER (j_deb=18, j_fin=39)
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/surf_landice_mod.F90

    r1795 r1893  
    99!
    1010  SUBROUTINE surf_landice(itime, dtime, knon, knindex, &
     11       rlon, rlat, debut, lafin, &
     12       rmu0, lwdownm, albedo, pphi1, &
    1113       swnet, lwnet, tsurf, p1lay, &
    1214       cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
     
    1719       tsoil, z0_new, alb1, alb2, evap, fluxsens, fluxlat, &
    1820       tsurf_new, dflux_s, dflux_l, &
     21       slope, cloudf, &
     22       snowhgt, qsnow, to_ice, sissnow, &
     23       alb3, runoff, &
    1924       flux_u1, flux_v1)
    2025
    2126    USE dimphy
    22     USE surface_data,     ONLY : type_ocean, calice, calsno
     27    USE surface_data,     ONLY : type_ocean, calice, calsno, ok_snow
    2328    USE fonte_neige_mod,  ONLY : fonte_neige, run_off_lic
    2429    USE cpl_mod,          ONLY : cpl_send_landice_fields
    2530    USE calcul_fluxs_mod
    2631    USE phys_output_var_mod
     32#ifdef CPP_SISVAT
     33    USE surf_sisvat_mod,  ONLY : surf_sisvat
     34#endif
    2735    USE indice_sol_mod
    2836
     
    5260    REAL, DIMENSION(klon,nbsrf), INTENT(IN)       :: pctsrf
    5361
     62    LOGICAL,  INTENT(IN)                          :: debut   !true if first step
     63    LOGICAL,  INTENT(IN)                          :: lafin   !true if last step
     64    REAL, DIMENSION(klon), INTENT(IN)             :: rlon, rlat
     65    REAL, DIMENSION(klon), INTENT(IN)             :: rmu0
     66    REAL, DIMENSION(klon), INTENT(IN)             :: lwdownm !ylwdown
     67    REAL, DIMENSION(klon), INTENT(IN)             :: albedo  !mean albedo
     68    REAL, DIMENSION(klon), INTENT(IN)             :: pphi1   
     69    REAL, DIMENSION(klon), INTENT(IN)             :: slope   !mean slope in grid box 
     70    REAL, DIMENSION(klon), INTENT(IN)             :: cloudf  !total cloud fraction
     71
    5472! In/Output variables
    5573!****************************************************************************************
     
    6987    REAL, DIMENSION(klon), INTENT(OUT)            :: flux_u1, flux_v1
    7088
     89    REAL, DIMENSION(klon), INTENT(OUT)           :: alb3
     90    REAL, DIMENSION(klon), INTENT(OUT)           :: qsnow   !column water in snow [kg/m2]
     91    REAL, DIMENSION(klon), INTENT(OUT)           :: snowhgt !Snow height (m)
     92    REAL, DIMENSION(klon), INTENT(OUT)           :: to_ice
     93    REAL, DIMENSION(klon), INTENT(OUT)           :: sissnow
     94    REAL, DIMENSION(klon), INTENT(OUT)           :: runoff  !Land ice runoff
     95 
     96
    7197! Local variables
    7298!****************************************************************************************
     
    78104    INTEGER                  :: i,j
    79105
     106    REAL, DIMENSION(klon)    :: emis_new                  !Emissivity
     107    REAL, DIMENSION(klon)    :: swdown,lwdown
     108    REAL, DIMENSION(klon)    :: precip_snow_adv, snow_adv !Snow Drift precip./advection
     109    REAL, DIMENSION(klon)    :: bl_height, wind_velo      !height boundary layer, wind spd
     110    REAL, DIMENSION(klon)    :: dens_air,  snow_cont_air  !air density; snow content air
     111    REAL, DIMENSION(klon)    :: alb_soil                  !albedo of underlying ice
     112    REAL, DIMENSION(klon)    :: pexner                    !Exner potential
     113    REAL                     :: pref
     114    REAL, DIMENSION(klon,nsoilmx) :: tsoil0 !modfi
     115
     116    CHARACTER (len = 20)                      :: modname = 'surf_landice'
     117    CHARACTER (len = 80)                      :: abort_message
     118
    80119! End definition
    81120!****************************************************************************************
    82121!
    83122! Initialize output variables
     123    alb3(:) = 999999.
    84124    alb2(:) = 999999.
    85125    alb1(:) = 999999.
    86 
     126   
     127    runoff(:) = 0.
    87128!****************************************************************************************
    88129! Calculate total absorbed radiance at surface
     
    91132    radsol(:) = 0.0
    92133    radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
     134
     135!****************************************************************************************
     136!   ok_snow = TRUE  : prepare and call SISVAT snow model
     137!   ok_snow = FALSE : soil_model, calcul_flux, fonte_neige, ...
     138!
     139!****************************************************************************************
     140    IF (ok_snow) THEN
     141#ifdef CPP_SISVAT
     142       ! Prepare for calling SISVAT
     143       
     144       ! Calculate incoming flux for SW and LW interval: swdown, lwdown
     145       swdown(:)        = 0.0
     146       lwdown(:)        = 0.0
     147       DO i = 1, knon
     148          swdown(i)        = swnet(i)/(1-albedo(i))
     149          lwdown(i)        = lwdownm(i)
     150       END DO
     151       
     152       ! Set constants and compute some input for SISVAT
     153       snow_adv(:)      = 0.                          ! no snow blown in for now
     154       snow_cont_air(:) = 0.       
     155       alb_soil(:)      = albedo(:)
     156       pref             = 100000.                     ! = 1000 hPa
     157       DO i = 1, knon
     158          wind_velo(i)     = u1(i)**2 + v1(i)**2
     159          wind_velo(i)     = wind_velo(i)**0.5
     160          pexner(i)        = (p1lay(i)/pref)**(RD/RCPD)
     161          dens_air(i)      = p1lay(i)/RD/temp_air(i)  ! dry air density
     162          bl_height(i)     = pphi1(i)/RG             
     163       END DO
     164
     165!****************************************************************************************
     166! CALL to SISVAT interface
     167!
     168!****************************************************************************************
     169       ! config: compute everything with SV but temperatures afterwards with soil/calculfluxs
     170       DO i = 1, knon
     171          tsoil0(i,:)=tsoil(i,:)
     172       END DO
     173           ! Martin
     174           PRINT*, 'on appelle surf_sisvat'
     175           ! Martin
     176       CALL surf_sisvat(knon, rlon, rlat, knindex, itime, dtime, debut, lafin, &
     177            rmu0, swdown, lwdown, pexner, ps, p1lay, &
     178            precip_rain, precip_snow, precip_snow_adv, snow_adv, &
     179            bl_height, wind_velo, temp_air, dens_air, spechum, tsurf, &
     180            rugoro, snow_cont_air, alb_soil, slope, cloudf, &
     181            radsol, qsol, tsoil0, snow, snowhgt, qsnow, to_ice,sissnow, agesno, &
     182            AcoefH, AcoefQ, BcoefH, BcoefQ, cdragh, &
     183            run_off_lic, evap, fluxsens, fluxlat, dflux_s, dflux_l, &       
     184            tsurf_new, alb1, alb2, alb3, &
     185            emis_new, z0_new, qsurf)
     186       
     187       ! Suppose zero surface speed
     188       u0(:)            = 0.0
     189       v0(:)            = 0.0
     190       ! The calculation of heat/water fluxes, otherwise done by "CALL calcul_fluxs" is
     191       ! integrated in SISVAT, using the same method. It can be found in "sisvat.f", in the
     192       ! subroutine "SISVAT_TS2".
     193       ! u0, v0=0., dif_grnd=0. and beta=1 are assumed there!
     194       
     195       CALL calcul_flux_wind(knon, dtime, &
     196            u0, v0, u1, v1, cdragm, &
     197            AcoefU, AcoefV, BcoefU, BcoefV, &
     198            p1lay, temp_air, &
     199            flux_u1, flux_v1)
     200#else
     201       abort_message='Pb de coherence: ok_snow = .true. mais CPP_SISVAT = .false.'
     202       CALL abort_gcm(modname,abort_message,1)
     203#endif
     204    ELSE ! ok_snow=FALSE
    93205
    94206!****************************************************************************************
     
    168280!****************************************************************************************
    169281    z0_new(:) = MAX(1.E-3,rugoro(:))
     282    END IF ! ok_snow
     283
    170284
    171285!****************************************************************************************
    172286! Send run-off on land-ice to coupler if coupled ocean.
    173 ! run_off_lic has been calculated in fonte_neige
     287! run_off_lic has been calculated in fonte_neige or surf_sisvat
    174288!
    175289!****************************************************************************************
     
    177291       CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic)
    178292    ENDIF
     293
     294 ! transfer runoff rate [kg/m2/s](!) to physiq for output
     295    runoff(1:knon)=run_off_lic(1:knon)/dtime
     296
    179297 
    180298!****************************************************************************************
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/surface_data.F90

    r1750 r1893  
    1111  CHARACTER(len=10), SAVE :: type_veget    ! orchidee/y/bucket/n/betaclim
    1212  !$OMP THREADPRIVATE(ok_veget)
     13  ! Martin
     14  LOGICAL, SAVE          :: ok_snow       ! true for coupling to snow model SISVAT
     15  !$OMP THREADPRIVATE(ok_snow)
     16  ! Martin
    1317
    1418  CHARACTER(len=6), SAVE :: type_ocean    ! force/slab/couple
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/thermcellV0_main.F90

    r1750 r1893  
    4141!   -------------
    4242
    43 #include "dimensions.h"
    44 #include "YOMCST.h"
    45 #include "YOETHF.h"
    46 #include "FCTTRE.h"
    47 #include "iniprint.h"
     43      include "dimensions.h"
     44      include "YOMCST.h"
     45      include "YOETHF.h"
     46      include "FCTTRE.h"
     47      include "iniprint.h"
    4848
    4949!   arguments:
     
    796796      if (prt_level.ge.1) print*,'thermcell_main sorties 3D'
    797797#ifdef wrgrads_thermcell
    798 #include "thermcell_out3d.h"
     798      include "thermcell_out3d.h"
    799799#endif
    800800
     
    811811      subroutine testV0_ltherm(klon,klev,pplev,pplay,long,seuil,ztv,po,ztva,zqla,f_star,zw2,comment)
    812812      IMPLICIT NONE
    813 #include "iniprint.h"
     813      include "iniprint.h"
    814814
    815815      integer i, k, klon,klev
     
    855855      IMPLICIT NONE
    856856
    857 #include "iniprint.h"
    858 #include "thermcell.h"
     857      include "iniprint.h"
     858      include "thermcell.h"
    859859      INTEGER ngrid,nlay
    860860      INTEGER ig,k       
     
    935935      IMPLICIT NONE
    936936
    937 #include "YOMCST.h"
    938 #include "YOETHF.h"
    939 #include "FCTTRE.h"
    940 #include "iniprint.h"
    941 #include "thermcell.h"
     937      include "YOMCST.h"
     938      include "YOETHF.h"
     939      include "FCTTRE.h"
     940      include "iniprint.h"
     941      include "thermcell.h"
    942942
    943943      INTEGER itap
     
    17321732!--------------------------------------------------------------------------
    17331733       IMPLICIT NONE
    1734 #include "YOMCST.h"       
    1735 #include "iniprint.h"
     1734      include "YOMCST.h"       
     1735      include "iniprint.h"
    17361736       INTEGER l,ig
    17371737
     
    19441944!----------------------------------------------------------------------
    19451945      IMPLICIT NONE
    1946 #include "iniprint.h"
    1947 #include "thermcell.h"
     1946      include "iniprint.h"
     1947      include "thermcell.h"
    19481948
    19491949      INTEGER l,ig
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/wake.F

    r1669 r1893  
    116116c-------------------------------------------------------------------------
    117117
    118 #include "dimensions.h"
    119 #include "YOMCST.h"
    120 #include "cvthermo.h"
    121 #include "iniprint.h"
     118      include "dimensions.h"
     119      include "YOMCST.h"
     120      include "cvthermo.h"
     121      include "iniprint.h"
    122122
    123123c Arguments en entree
     
    19421942c-------------------------------------------------------------------------
    19431943
    1944 #include "dimensions.h"
    1945 cccc#include "dimphy.h"
    1946 #include "YOMCST.h"
    1947 #include "cvthermo.h"
    1948 #include "iniprint.h"
     1944      include "dimensions.h"
     1945cccc      include "dimphy.h"
     1946      include "YOMCST.h"
     1947      include "cvthermo.h"
     1948      include "iniprint.h"
    19491949
    19501950c Arguments en entree
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/write_histday_seri.h

    r1665 r1893  
    1 c
    2 c $Header$
    3 c
     1!
     2! $Header$
     3!
    44      IF (is_sequential) THEN
    55     
    66      IF (type_run.EQ."AMIP") THEN
    7 c
     7!
    88      ndex2d = 0
    99      itau_w = itau_phy + itap + start_time * day_step / iphysiq
    10 c
    11 c Champs 2D:
    12 c
     10!
     11! Champs 2D:
     12!
    1313      pi = ACOS(-1.)
    1414      pir = 4.0*ATAN(1.0) / 180.0
    15 c
     15!
    1616      DO i=1, klon
    1717       zx_tmp_fi2d(i)=(topsw(i)-toplw(i))
    1818      ENDDO
    19 c
     19!
    2020      ok_msk=.FALSE.
    2121      msk(1:klon)=pctsrf(1:klon,is_ter)
    22       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    23      .     ok_msk, msk, moyglo)
    24       zx_tmp_fi2d(1:klon)=moyglo
    25 c
    26       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    27       CALL histwrite(nid_day_seri,"bilTOA",itau_w,
    28      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    29 c
    30       ok_msk=.FALSE.
    31       CALL moyglo_pondaire(klon, bils, airephy,
    32      .     ok_msk, msk, moyglo)
    33       zx_tmp_fi2d(1:klon)=moyglo
    34 c
    35       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    36       CALL histwrite(nid_day_seri,"bils",itau_w,
    37      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    38 c
     22      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     23           ok_msk, msk, moyglo)
     24      zx_tmp_fi2d(1:klon)=moyglo
     25!
     26      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     27      CALL histwrite(nid_day_seri,"bilTOA",itau_w, &
     28                     zx_tmp_2d,iim*jjmp1,ndex2d)
     29!
     30      ok_msk=.FALSE.
     31      CALL moyglo_pondaire(klon, bils, airephy,  &
     32           ok_msk, msk, moyglo)
     33      zx_tmp_fi2d(1:klon)=moyglo
     34!
     35      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     36      CALL histwrite(nid_day_seri,"bils",itau_w, &
     37                     zx_tmp_2d,iim*jjmp1,ndex2d)
     38!
    3939      DO k=1, klev
    4040      DO i=1, klon
    41 cIM 080904    zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
     41!IM 080904    zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
    4242       zx_tmp_fi3d(i,k)=(u(i,k)**2+v(i,k)**2)/2.
    4343      ENDDO
    4444      ENDDO
    45 c
    46       CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,
    47      .     airephy, paprs, moyglo)
    48       zx_tmp_fi2d(1:klon)=moyglo
    49 c
    50       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    51       CALL histwrite(nid_day_seri,"ecin",itau_w,
    52      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    53 c
    54 cIM 151004 BEG
     45!
     46      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
     47           airephy, paprs, moyglo)
     48      zx_tmp_fi2d(1:klon)=moyglo
     49!
     50      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     51      CALL histwrite(nid_day_seri,"ecin",itau_w, &
     52                     zx_tmp_2d,iim*jjmp1,ndex2d)
     53!
     54!IM 151004 BEG
    5555      IF(1.EQ.0) THEN
    56 c
     56!
    5757      DO k=1, klev
    5858      DO i=1, klon
     
    6060      ENDDO
    6161      ENDDO
    62 c
    63       CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,
    64      .     airephy, paprs, moyglo)
    65       zx_tmp_fi2d(1:klon)=moyglo
    66 c
    67       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    68       CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d,
    69      .               iim*jjmp1,ndex2d)
    70 c
    71 c friction torque
    72 c
     62!
     63      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
     64           airephy, paprs, moyglo)
     65      zx_tmp_fi2d(1:klon)=moyglo
     66!
     67      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     68      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
     69                     iim*jjmp1,ndex2d)
     70!
     71! friction torque
     72!
    7373      DO i=1, klon
    7474       zx_tmp_fi2d(i)=zxfluxu(i,1)*RA* cos(pir* rlat(i))
    7575      ENDDO
    76 c
    77       ok_msk=.FALSE.
    78       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    79      .     ok_msk, msk, moyglo)
    80       zx_tmp_fi2d(1:klon)=moyglo
    81 c
    82       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    83       CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d,
    84      .               iim*jjmp1,ndex2d)
    85 c
    86 c mountain torque
    87 c
    88 cIM 190504 BEG
     76!
     77      ok_msk=.FALSE.
     78      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     79           ok_msk, msk, moyglo)
     80      zx_tmp_fi2d(1:klon)=moyglo
     81!
     82      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     83      CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d, &
     84                     iim*jjmp1,ndex2d)
     85!
     86! mountain torque
     87!
     88!IM 190504 BEG
    8989      CALL gr_fi_dyn(1,klon,iim+1,jjm+1,airephy,airedyn)
    9090      CALL gr_fi_dyn(klev+1,klon,iim+1,jjm+1,paprs,padyn)
     
    9797        zx_tmp(ij)=0.
    9898        DO k = 1, klev
    99          zx_tmp(ij)=zx_tmp(ij)+dudyn(i,j,k)*airedyn(i,j)*
    100      $              (padyn(i,j,k+1)-padyn(i,j,k))/RG
     99         zx_tmp(ij)=zx_tmp(ij)+dudyn(i,j,k)*airedyn(i,j)* &
     100                    (padyn(i,j,k+1)-padyn(i,j,k))/RG
    101101         airetot=airetot+airedyn(i,j)
    102102        ENDDO
    103 cIM 190504 mountor=mountor+zx_tmp(ij)*airedyn(i,j)*RA*
    104         mountor=mountor+zx_tmp(ij)*RA*
    105      $           cos(pir* rlatdyn(i,j))
     103!IM 190504 mountor=mountor+zx_tmp(ij)*airedyn(i,j)*RA*
     104        mountor=mountor+zx_tmp(ij)*RA* &
     105                 cos(pir* rlatdyn(i,j))
    106106       ENDDO
    107107      ENDDO
    108 cIM 151004 BEG
     108!IM 151004 BEG
    109109      IF(itap.EQ.1) PRINT*,'airetot=',airetot,airetot/klev
    110 cIM 151004 END
    111 cIM 190504      mountor=mountor/(airetot*airetot)
     110!IM 151004 END
     111!IM 190504      mountor=mountor/(airetot*airetot)
    112112      mountor=mountor/airetot
    113 c
    114 cIM 190504 END
     113!
     114!IM 190504 END
    115115      zx_tmp_2d(1:iim,1:jjmp1)=mountor
    116       CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d,
    117      .               iim*jjmp1,ndex2d)
    118 c
     116      CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d, &
     117                     iim*jjmp1,ndex2d)
     118!
    119119      ENDIF !(1.EQ.0) THEN
    120 c
    121 c
     120!
     121!
    122122      CALL gr_fi_dyn(1,klon,iim+1,jjm+1,airephy,airedyn)
    123123      CALL gr_fi_ecrit(1,klon,iim,jjmp1,airephy,zx_tmp_2d)
    124124      airetot=0.
    125 c     DO j = 1, jjmp1
    126 c      DO i = 1, iim+1
    127 c       ij=i+(iim+1)*(j-1)
    128 c       DO k = 1, klev
    129 c        airetot=airetot+airedyn(i,j)
    130 c        airetot=airetot+airedyn(i,j)
    131 c       ENDDO !k
    132 c      ENDDO !i
    133 c     ENDDO !j
    134 c
     125!     DO j = 1, jjmp1
     126!      DO i = 1, iim+1
     127!       ij=i+(iim+1)*(j-1)
     128!       DO k = 1, klev
     129!        airetot=airetot+airedyn(i,j)
     130!        airetot=airetot+airedyn(i,j)
     131!       ENDDO !k
     132!      ENDDO !i
     133!     ENDDO !j
     134!
    135135      DO i=1, klon
    136136       airetot=airetot+airephy(i)
    137137      ENDDO
    138 c     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
    139 c
     138!     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
     139!
    140140      airetot=0.
    141141      DO j=1, jjmp1
     
    144144       ENDDO
    145145      ENDDO
    146 c
    147 c     IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
    148 c    $ '4piR2',4.*pi*RA*RA
    149 c
     146!
     147!     IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
     148!    $ '4piR2',4.*pi*RA*RA
     149!
    150150      zx_tmp_fi2d(1:klon)=aam/airetot
    151151      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    152       CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d,
    153      .               iim*jjmp1,ndex2d)
    154 c
     152      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
     153                     iim*jjmp1,ndex2d)
     154!
    155155      zx_tmp_fi2d(1:klon)=torsfc/airetot
    156156      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    157       CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d,
    158      .               iim*jjmp1,ndex2d)
    159 c
    160 cIM 151004 END
    161 c
    162       CALL moyglo_pondmass(klon, klev, t_seri,
    163      .     airephy, paprs, moyglo)
    164       zx_tmp_fi2d(1:klon)=moyglo
    165 c
     157      CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d, &
     158                     iim*jjmp1,ndex2d)
     159!
     160!IM 151004 END
     161!
     162      CALL moyglo_pondmass(klon, klev, t_seri, &
     163           airephy, paprs, moyglo)
     164      zx_tmp_fi2d(1:klon)=moyglo
     165!
    166166      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    167       CALL histwrite(nid_day_seri,"tamv",itau_w,
    168      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    169 c
    170       ok_msk=.FALSE.
    171       CALL moyglo_pondaire(klon, paprs(:,1), airephy,
    172      .     ok_msk, msk, moyglo)
    173       zx_tmp_fi2d(1:klon)=moyglo
    174 c
    175       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    176       CALL histwrite(nid_day_seri,"psol",itau_w,
    177      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    178 c
    179       ok_msk=.FALSE.
    180       CALL moyglo_pondaire(klon, evap, airephy,
    181      .     ok_msk, msk, moyglo)
    182       zx_tmp_fi2d(1:klon)=moyglo
    183 c
    184       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    185       CALL histwrite(nid_day_seri,"evap",itau_w,
    186      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    187 c
    188 c     DO i=1, klon
    189 c      zx_tmp_fi2d(i)=SnowFrac(i,is_ter)
    190 c     ENDDO
    191 c
    192 c     ok_msk=.TRUE.
    193 c     msk(1:klon)=pctsrf(1:klon,is_ter)
    194 c     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    195 c    .                     ok_msk, msk, moyglo)
    196 c     zx_tmp_fi2d(1:klon)=moyglo
    197 c
    198 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    199 c     CALL histwrite(nid_day_seri,"SnowFrac",
    200 c    .               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    201 c
    202 c     DO i=1, klon
    203 cIM 080904    zx_tmp_fi2d(i)=zsnow_mass(i)/330.*rowl
    204 c      zx_tmp_fi2d(i)=zsnow_mass(i)
    205 c     ENDDO
    206 c
    207 cIM 140904   ok_msk=.FALSE.
    208 c     ok_msk=.TRUE.
    209 c     msk(1:klon)=pctsrf(1:klon,is_ter)
    210 c     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    211 c    .     ok_msk, msk, moyglo)
    212 c     zx_tmp_fi2d(1:klon)=moyglo
    213 c
    214 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    215 c     CALL histwrite(nid_day_seri,"snow_depth",itau_w,
    216 c    .               zx_tmp_2d,iim*jjmp1,ndex2d)
    217 c
     167      CALL histwrite(nid_day_seri,"tamv",itau_w, &
     168                     zx_tmp_2d,iim*jjmp1,ndex2d)
     169!
     170      ok_msk=.FALSE.
     171      CALL moyglo_pondaire(klon, paprs(:,1), airephy,  &
     172           ok_msk, msk, moyglo)
     173      zx_tmp_fi2d(1:klon)=moyglo
     174!
     175      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     176      CALL histwrite(nid_day_seri,"psol",itau_w, &
     177                     zx_tmp_2d,iim*jjmp1,ndex2d)
     178!
     179      ok_msk=.FALSE.
     180      CALL moyglo_pondaire(klon, evap, airephy,  &
     181           ok_msk, msk, moyglo)
     182      zx_tmp_fi2d(1:klon)=moyglo
     183!
     184      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     185      CALL histwrite(nid_day_seri,"evap",itau_w, &
     186                     zx_tmp_2d,iim*jjmp1,ndex2d)
     187!
     188!     DO i=1, klon
     189!      zx_tmp_fi2d(i)=SnowFrac(i,is_ter)
     190!     ENDDO
     191!
     192!     ok_msk=.TRUE.
     193!     msk(1:klon)=pctsrf(1:klon,is_ter)
     194!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     195!    .                     ok_msk, msk, moyglo)
     196!     zx_tmp_fi2d(1:klon)=moyglo
     197!
     198!     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
     199!     CALL histwrite(nid_day_seri,"SnowFrac",
     200!    .               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
     201!
     202!     DO i=1, klon
     203!IM 080904    zx_tmp_fi2d(i)=zsnow_mass(i)/330.*rowl
     204!      zx_tmp_fi2d(i)=zsnow_mass(i)
     205!     ENDDO
     206!
     207!IM 140904   ok_msk=.FALSE.
     208!     ok_msk=.TRUE.
     209!     msk(1:klon)=pctsrf(1:klon,is_ter)
     210!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     211!    .     ok_msk, msk, moyglo)
     212!     zx_tmp_fi2d(1:klon)=moyglo
     213!
     214!     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
     215!     CALL histwrite(nid_day_seri,"snow_depth",itau_w,
     216!    .               zx_tmp_2d,iim*jjmp1,ndex2d)
     217!
    218218      DO i=1, klon
    219219       zx_tmp_fi2d(i)=ftsol(i,is_oce)
    220220      ENDDO
    221 c
     221!
    222222      ok_msk=.TRUE.
    223223      msk(1:klon)=pctsrf(1:klon,is_oce)
    224       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    225      .     ok_msk, msk, moyglo)
    226       zx_tmp_fi2d(1:klon)=moyglo
    227 c
     224      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     225           ok_msk, msk, moyglo)
     226      zx_tmp_fi2d(1:klon)=moyglo
     227!
    228228      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d, zx_tmp_2d)
    229       CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce),
    230      $               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    231 c
    232 c=================================================================
    233 c=================================================================
    234 c=================================================================
    235 c
     229      CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce), &
     230                     itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
     231!
     232!=================================================================
     233!=================================================================
     234!=================================================================
     235!
    236236      if (ok_sync) then
    237237        call histsync(nid_day_seri)
    238238      endif
    239 c
     239!
    240240      ENDIF !fin test sur type_run.EQ."AMIP"
    241241     
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/write_paramLMDZ_phy.h

    r1665 r1893  
    1 c
    2 c calcul moyennes globales
    3 c
     1!
     2! calcul moyennes globales
     3!
    44       zx_tmp_fi2d=bils*airephy
    55       CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gbils)
     
    2222       zx_tmp_fi2d=prw*airephy
    2323       CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gprw)
    24 c
    25 c$OMP MASTER
     24!
     25!$OMP MASTER
    2626      if (is_mpi_root) then     
    27 c
     27!
    2828      ndex2d = 0
    29       itau_w = itau_phy + itap + start_time * day_step / iphysiq
    30 c
    31 c Variables globales
    32 c
     29      itau_w = itau_phy + itap + int(start_time * day_step / iphysiq)
     30!
     31! Variables globales
     32!
    3333      zx_tmp_0d=R_ecc
    34       CALL histwrite(nid_ctesGCM,"R_ecc",itau_w,
    35      .               zx_tmp_0d,np,ndex2d)
    36 c
     34      CALL histwrite(nid_ctesGCM,"R_ecc",itau_w, &
     35                     zx_tmp_0d,np,ndex2d)
     36!
    3737      zx_tmp_0d=R_peri
    38       CALL histwrite(nid_ctesGCM,"R_peri",itau_w,
    39      .               zx_tmp_0d,np,ndex2d)
    40 c
     38      CALL histwrite(nid_ctesGCM,"R_peri",itau_w, &
     39                     zx_tmp_0d,np,ndex2d)
     40!
    4141      zx_tmp_0d=R_incl
    42       CALL histwrite(nid_ctesGCM,"R_incl",itau_w,
    43      .               zx_tmp_0d,np,ndex2d)
    44 c
     42      CALL histwrite(nid_ctesGCM,"R_incl",itau_w, &
     43                     zx_tmp_0d,np,ndex2d)
     44!
    4545      zx_tmp_0d=solaire
    46       CALL histwrite(nid_ctesGCM,"solaire",itau_w,
    47      .               zx_tmp_0d,np,ndex2d)
    48 c
     46      CALL histwrite(nid_ctesGCM,"solaire",itau_w, &
     47                     zx_tmp_0d,np,ndex2d)
     48!
    4949      zx_tmp_0d=co2_ppm
    50       CALL histwrite(nid_ctesGCM,"co2_ppm",itau_w,
    51      .               zx_tmp_0d,np,ndex2d)
    52 c
     50      CALL histwrite(nid_ctesGCM,"co2_ppm",itau_w, &
     51                     zx_tmp_0d,np,ndex2d)
     52!
    5353      zx_tmp_0d=CH4_ppb
    54       CALL histwrite(nid_ctesGCM,"CH4_ppb",itau_w,
    55      .               zx_tmp_0d,np,ndex2d)
    56 c
     54      CALL histwrite(nid_ctesGCM,"CH4_ppb",itau_w, &
     55                     zx_tmp_0d,np,ndex2d)
     56!
    5757      zx_tmp_0d=N2O_ppb
    58       CALL histwrite(nid_ctesGCM,"N2O_ppb",itau_w,
    59      .               zx_tmp_0d,np,ndex2d)
    60 c
     58      CALL histwrite(nid_ctesGCM,"N2O_ppb",itau_w, &
     59                     zx_tmp_0d,np,ndex2d)
     60!
    6161      zx_tmp_0d=CFC11_ppt
    62       CALL histwrite(nid_ctesGCM,"CFC11_ppt",itau_w,
    63      .               zx_tmp_0d,np,ndex2d)
    64 c
     62      CALL histwrite(nid_ctesGCM,"CFC11_ppt",itau_w, &
     63                     zx_tmp_0d,np,ndex2d)
     64!
    6565      zx_tmp_0d=CFC12_ppt
    66       CALL histwrite(nid_ctesGCM,"CFC12_ppt",itau_w,
    67      .               zx_tmp_0d,np,ndex2d)
    68 c
    69 c=================================================================
    70 c moyennes globales
    71 c
    72       CALL histwrite(nid_ctesGCM,"bils",itau_w,
    73      .               gbils,np,ndex2d)
    74       CALL histwrite(nid_ctesGCM,"evap",itau_w,
    75      .               gevap,np,ndex2d)
    76       CALL histwrite(nid_ctesGCM,"evap_land",itau_w,
    77      .               gevapt,np,ndex2d)
    78       CALL histwrite(nid_ctesGCM,"flat",itau_w,
    79      .               glat,np,ndex2d)
    80       CALL histwrite(nid_ctesGCM,"nettop0",itau_w,
    81      .               gnet0,np,ndex2d)
    82       CALL histwrite(nid_ctesGCM,"nettop",itau_w,
    83      .               gnet,np,ndex2d)
    84       CALL histwrite(nid_ctesGCM,"precip",itau_w,
    85      .               grain,np,ndex2d)
    86       CALL histwrite(nid_ctesGCM,"tsol",itau_w,
    87      .               gtsol,np,ndex2d)
    88       CALL histwrite(nid_ctesGCM,"t2m",itau_w,
    89      .               gt2m,np,ndex2d)
    90       CALL histwrite(nid_ctesGCM,"prw",itau_w,
    91      .               gprw,np,ndex2d)
    92 c=================================================================
    93 c
     66      CALL histwrite(nid_ctesGCM,"CFC12_ppt",itau_w, &
     67                     zx_tmp_0d,np,ndex2d)
     68!
     69!=================================================================
     70! moyennes globales
     71!
     72      CALL histwrite(nid_ctesGCM,"bils",itau_w, &
     73                     gbils,np,ndex2d)
     74      CALL histwrite(nid_ctesGCM,"evap",itau_w, &
     75                     gevap,np,ndex2d)
     76      CALL histwrite(nid_ctesGCM,"evap_land",itau_w, &
     77                     gevapt,np,ndex2d)
     78      CALL histwrite(nid_ctesGCM,"flat",itau_w, &
     79                     glat,np,ndex2d)
     80      CALL histwrite(nid_ctesGCM,"nettop0",itau_w, &
     81                     gnet0,np,ndex2d)
     82      CALL histwrite(nid_ctesGCM,"nettop",itau_w, &
     83                     gnet,np,ndex2d)
     84      CALL histwrite(nid_ctesGCM,"precip",itau_w, &
     85                     grain,np,ndex2d)
     86      CALL histwrite(nid_ctesGCM,"tsol",itau_w, &
     87                     gtsol,np,ndex2d)
     88      CALL histwrite(nid_ctesGCM,"t2m",itau_w, &
     89                     gt2m,np,ndex2d)
     90      CALL histwrite(nid_ctesGCM,"prw",itau_w, &
     91                     gprw,np,ndex2d)
     92!=================================================================
     93!
    9494      if (ok_sync) then
    9595        call histsync(nid_ctesGCM)
    9696      endif
    97 c
     97!
    9898      endif !(is_mpi_root) then     
    99 c$OMP END MASTER
     99!$OMP END MASTER
  • LMDZ5/tags/proto-testing-20131015/libf/phylmd/yamada4.F

    r1750 r1893  
    166166! Computing M^2, N^2, Richardson numbers, stability functions
    167167!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     168      ! initialize arrays:
     169      m2(:,:)=0.0
     170      sm(:,:)=0.0
     171      rif(:,:)=0.0
    168172
    169173      do k=2,klev
     
    385389                                                          enddo
    386390      enddo
     391      ! initialize near-surface and top-layer mixing coefficients
     392      kq(1:ngrid,1)=kq(1:ngrid,2) ! constant (ie no gradient) near the surface
     393      kq(1:ngrid,klev+1)=0        ! zero at the top
    387394
    388395! Transport diffusif vertical de la TKE.
  • LMDZ5/tags/proto-testing-20131015/makegcm

    r1864 r1893  
    2424set OPTIMI=' -ftrace '
    2525set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
    26 set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
    2726set io=ioipsl
    2827set cosp=false
     28set sisvat=false
    2929
    3030set FC_LINUX=gfortran
    31 set FC_LINUX=gfortran
    32 #set FC_LINUX=gfortran
    33 if ( $FC_LINUX == gfortran ) then
    34   set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
     31
     32if ( $FC_LINUX == g95 ) then
     33  set OPT_LINUX="-i4 -O3 -r8 -DNC_DOUBLE"
    3534else if ( $FC_LINUX == gfortran ) then
    36   set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
    37 #   set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
    3835  set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
    3936else
    4037# pgf90 options
    41   set OPT_LINUX="-O3 -fdefault-real-8 -DNC_DOUBLE"
     38  set OPT_LINUX="-O3 -i4 -r8 -DNC_DOUBLE"
    4239endif
    4340
     
    5451setenv IOIPSLDIR /tmpdir/fairhead/Aqua/LMDZ20120327.trunk/modipsl/lib
    5552setenv MODIPSLDIR /tmpdir/fairhead/Aqua/LMDZ20120327.trunk/modipsl/lib
    56 setenv NCDFINC /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/include
    57 setenv NCDFLIB /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/lib
     53setenv NCDFINC /d1/mpllmd/LMDZtesting/netcdf-4.0.1/include
     54setenv NCDFLIB /d1/mpllmd/LMDZtesting/netcdf-4.0.1/lib
    5855
    5956
     
    107104  if ( ! $?NCDFLIB ) then
    108105    echo You must initialize the variable NCDFLIB in your environnement
    109     echo for instance: "setenv NCDFLIB /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/lib
     106    echo for instance: "setenv NCDFLIB /d1/mpllmd/LMDZtesting/netcdf-4.0.1/lib
    110107    exit
    111108  endif
    112109  if ( ! $?NCDFINC ) then
    113110    echo You must initialize the variable NCDFINC in your environnement
    114     echo for instance: "setenv NCDFINC /tmpdir/fairhead/Test_HEAD/LMDZ20130808.trunk/netcdf-4.0.1/include
     111    echo for instance: "setenv NCDFINC /d1/mpllmd/LMDZtesting/netcdf-4.0.1/include
    115112    exit
    116113  endif
     
    262259else if $LINUX then
    263260#################
    264    if ( $FC_LINUX == pgf90 || $FC_LINUX == gfortran || $FC_LINUX == gfortran ) then
     261   if ( $FC_LINUX == pgf90 || $FC_LINUX == g95 || $FC_LINUX == gfortran ) then
    265262     set optim=" $OPT_LINUX "
    266263     set optim90=" $OPT_LINUX "
     
    490487     case -cosp
    491488        set cosp="$2"; shift ; shift ; goto top
     489
     490     case -sisvat
     491        set sisvat="$2" ; shift ; shift ; goto top
    492492
    493493     case -filtre
     
    519519             set optim90="$optim90"" -g -ffpe-trap=invalid,zero,overflow -fbounds-check -Wall "
    520520             set optimtru90="$optimtru90"" -ffpe-trap=invalid,zero,overflow -g -fbounds-check -Wall "
    521            else if ( $FC_LINUX == 'gfortran' ) then
     521           else if ( $FC_LINUX == 'g95' ) then
    522522             set optim="$optim"" -g -fbounds-check -freal=nan -ftrace=full -Wall "
    523523             set optim90="$optim90"" -g -fbounds-check -freal=nan -ftrace=full -Wall "
     
    564564   endif
    565565   set opt_link="$lcosp $opt_link"
     566endif
     567
     568if ( "$sisvat" == 'true' ) then
     569    set cppflags="$cppflags -DCPP_SISVAT"
    566570endif
    567571
     
    841845       set opt_link="$opt_link  -L$MODIPSLDIR $link_veget -L$NCDFLIB -lnetcdf "
    842846     endif
    843    else if ($FC_LINUX == 'gfortran' || $FC_LINUX == 'gfortran' ) then
     847   else if ($FC_LINUX == 'g95' || $FC_LINUX == 'gfortran' ) then
    844848     if ( $io == "ioipsl" ) then
    845849       set opt_link="$opt_link -L$MODIPSLDIR $link_veget -lioipsl -L$NCDFLIB  -lnetcdf -lioipsl  -lnetcdf "
     
    10151019   set optimtru90=" $optimtru90 -module $libo "
    10161020   set optim90=" $optim90 -module $libo "
    1017  else if ( $FC_LINUX == 'gfortran' ) then
    1018    set optimtru90=" $optimtru90 -I$libo  "
    1019    set optim90=" $optim90 -I$libo  "
    1020  else if ( $FC_LINUX == 'gfortran' ) then
     1021else if ( $FC_LINUX == 'g95' ) then
     1022   set optimtru90=" $optimtru90 -fmod=$libo  "
     1023   set optim90=" $optim90 -fmod=$libo  "
     1024else if ( $FC_LINUX == 'gfortran' ) then
    10211025   set optimtru90=" $optimtru90 -M $libo  "
    10221026   set optim90=" $optim90 -M $libo  "
  • LMDZ5/tags/proto-testing-20131015/makelmdz

    r1864 r1893  
    2525fcm_path=none
    2626cosp=false
     27sisvat=false
    2728
    2829# guess a default 'arch'
     
    173174          cosp="$2" ; shift ; shift ;;
    174175     
     176      "-sisvat")
     177          sisvat="$2" ; shift ; shift ;;
     178     
    175179      "-mem")
    176180          paramem="mem" ; shift ;;
     
    275279archfileopt=$( echo ${archfileline##%BASE_LD} )
    276280LIB="$LIB  ${archfileopt}"
     281
     282# add Include files defined in arch.fcm file for pre-processing
     283archfileline=$( grep -i '^%FPP_FLAGS' arch.fcm )
     284for inc in $archfileline ; do INCLUDE="$INCLUDE `echo $inc | grep '\-I'`" ; done
    277285
    278286if [[ "$physique" != "nophys" ]]
     
    396404   INCLUDE="$INCLUDE"' -I$(LIBF)/cosp'
    397405fi
     406
     407if [[ "$sisvat" == "true" ]]
     408then
     409   CPP_KEY="$CPP_KEY CPP_SISVAT"
     410fi
     411
    398412
    399413INCLUDE="$INCLUDE ${NETCDF_INCDIR}"
  • LMDZ5/tags/proto-testing-20131015/makelmdz_fcm

    r1864 r1893  
    2222couple=false
    2323veget=false
     24sisvat=false
    2425chimie=false
    2526parallel=none
     
    117118          veget="$2" ; shift ; shift ;;
    118119
     120      "-sisvat")
     121          sisvat="$2" ; shift ; shift ;;
     122
    119123      "-chimie")
    120124          chimie="$2" ; shift ; shift ;;
     
    284288fi
    285289
     290if [[ "$sisvat" == "true" ]]
     291then
     292   CPP_KEY="$CPP_KEY CPP_SISVAT"
     293   sed -e 's/^#src::sisvat/src::sisvat/' bld.cfg > bld.tmp
     294   mv bld.tmp bld.cfg
     295fi
     296
    286297if [[ $io == ioipsl ]]
    287298then
     
    482493ln -s $LIBOGCM/${arch}${SUFF_NAME}/.config/tmp tmp_src
    483494
     495#eventual cleanup for SISVAT
     496sed -e 's/^src::sisvat/#src::sisvat/' bld.cfg > bld.tmp
     497mv bld.tmp bld.cfg
     498
     499
    484500if [[ -r $LIBFGCM/grid/dimensions.h ]]
    485501then
  • LMDZ5/tags/proto-testing-20131015/tools/install_1d_src.sh

    r1795 r1893  
    1313  if [[ ! -a ../phy1d/$my_file ]]
    1414      then
    15       cp $my_file ../phy1d
     15#     cp $my_file ../phy1d
     16      cp -R $my_file ../phy1d
    1617  fi
    1718done
     
    1920
    2021cd ../phy1d
    21 if grep -iq "subroutine *writelim" *.F *.F90
    22     then
    23     mv 1DUTILS.h_no_writelim 1DUTILS.h
    24 else
    25     mv 1DUTILS.h_with_writelim 1DUTILS.h
    26     rm -f ttt
    27     sed -e "s/^ *call *writelim *( *1 *,/      call writelim (/" lmdz1d.F >ttt
    28     rm -f lmdz1d.F
    29     mv ttt lmdz1d.F
    30 fi
    31 rm 1DUTILS.h*writelim
    3222rm wrgradsfi.F # already in 1DUTILS.h
    3323
    34 sed -i -e "/add_phys_tend.*_vdf/s/add_phys_tend/add_pbl_tend/" physiq.F
     24sed -i -e "/add_phys_tend.*_vdf/s/add_phys_tend/add_pbl_tend/" physiq.F90
    3525
    3626sed -i -e "/SUBROUTINE *convers_timesteps/,/END SUBROUTINE convers_timesteps/{
     
    4939}" phys_output_mod.F90
    5040
    51 sed -i -e "/^ *INCLUDE *\"temps.h\"/{
    52  a\\
    53 !****************************************************************************************\\
    54 ! Declarations specifiques pour le 1D. A reprendre \\
    55     INCLUDE \"flux_arp.h\"
    56  }; /^.*REAL *::.*fsens *, *flat/d; /^.*LOGICAL *::.*ok_flux_surf/d; /^.*COMMON.*flux_arp.*/d " pbl_surface_mod.F90
    57 
    5841 ln -s ../dyn3d/mod_const_mpi.F90 .
    5942 ln -s ../dyn3d/infotrac.F90 .
Note: See TracChangeset for help on using the changeset viewer.