Ignore:
Timestamp:
Mar 3, 2009, 5:40:26 PM (15 years ago)
Author:
jghattas
Message:

Creation du module infotrac:

  • contient les variables de advtrac.h
  • contient la subroutine iniadvtrac renommer en infotrac_init
  • le nombre des traceurs est lu dans tracer.def en dynamique (ou par default ou recu par INCA)
  • ce module est utilise dans la dynamique et la physique
  • contient aussi la variable nbtr qui avant etait stockee dans dimphy

Le fichier advtrac.h n'existe plus.
La compilation ne prend plus en compte le nombre de traceur.

/JG

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/leapfrog_p.F

    r1000 r1114  
    99#define CPP_IOIPSL
    1010
    11       SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,nq,q,clesphy0,
     11      SUBROUTINE leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,clesphy0,
    1212     &                    time_0)
    1313
     
    2121       USE vampir
    2222       USE timer_filtre, ONLY : print_filtre_timer
     23       USE infotrac
    2324
    2425      IMPLICIT NONE
     
    6970#include "com_io_dyn.h"
    7071#include "iniprint.h"
    71 
    72 c#include "tracstoke.h"
    73 
    7472#include "academic.h"
    75 !#include "clesphys.h"
    76 #include "advtrac.h"
    7773     
    78       integer nq
    79 
    8074      INTEGER         longcles
    8175      PARAMETER     ( longcles = 20 )
     
    8882      REAL :: vcov(ip1jm,llm),ucov(ip1jmp1,llm) ! vents covariants
    8983      REAL :: teta(ip1jmp1,llm)                 ! temperature potentielle
    90       REAL :: q(ip1jmp1,llm,nqmx)               ! champs advectes
     84      REAL :: q(ip1jmp1,llm,nqtot)              ! champs advectes
    9185      REAL :: ps(ip1jmp1)                       ! pression  au sol
    9286      REAL,SAVE :: p (ip1jmp1,llmp1  )               ! pression aux interfac.des couches
     
    109103c   tendances dynamiques
    110104      REAL,SAVE :: dv(ip1jm,llm),du(ip1jmp1,llm)
    111       REAL,SAVE :: dteta(ip1jmp1,llm),dq(ip1jmp1,llm,nqmx),dp(ip1jmp1)
     105      REAL,SAVE :: dteta(ip1jmp1,llm),dp(ip1jmp1)
     106      REAL,DIMENSION(:,:,:), ALLOCATABLE, SAVE :: dq
    112107
    113108c   tendances de la dissipation
     
    118113      REAL,SAVE :: dvfi(ip1jm,llm),dufi(ip1jmp1,llm)
    119114      REAL,SAVE :: dtetafi(ip1jmp1,llm)
    120       REAL,SAVE :: dqfi(ip1jmp1,llm,nqmx),dpfi(ip1jmp1)
     115      REAL,SAVE :: dpfi(ip1jmp1)
     116      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi
    121117
    122118c   variables pour le fichier histoire
     
    186182      type(Request) :: Request_physic
    187183      REAL,SAVE :: dvfi_tmp(iip1,llm),dufi_tmp(iip1,llm)
    188       REAL,SAVE :: dtetafi_tmp(iip1,llm),dqfi_tmp(iip1,llm,nqmx)
     184      REAL,SAVE :: dtetafi_tmp(iip1,llm)
     185      REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi_tmp
    189186      REAL,SAVE :: dpfi_tmp(iip1)
    190187
     
    195192      INTEGER :: var_time
    196193      LOGICAL :: ok_start_timer=.FALSE.
     194      LOGICAL, SAVE :: firstcall=.TRUE.
    197195
    198196c$OMP MASTER
     
    208206      itaufin   = nday*day_step
    209207      itaufinp1 = itaufin +1
    210 
     208      modname="leapfrog_p"
    211209
    212210      itau = 0
     
    217215          iday = iday+1
    218216         ENDIF
     217
     218c Allocate variables depending on dynamic variable nqtot
     219c$OMP MASTER
     220         IF (firstcall) THEN
     221            firstcall=.FALSE.
     222            ALLOCATE(dq(ip1jmp1,llm,nqtot))
     223            ALLOCATE(dqfi(ip1jmp1,llm,nqtot))
     224            ALLOCATE(dqfi_tmp(iip1,llm,nqtot))
     225         END IF
     226c$OMP END MASTER     
     227c$OMP BARRIER
    219228
    220229c-----------------------------------------------------------------------
     
    455464     &                                jj_Nb_caldyn,0,0,TestRequest)
    456465 
    457         do j=1,nqmx
     466        do j=1,nqtot
    458467         call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
    459468     &                                jj_nb_caldyn,0,0,TestRequest)
     
    490499       call Register_Hallo(p,ip1jmp1,llmp1,1,1,1,1,TestRequest)
    491500       
    492 c       do j=1,nqmx
     501c       do j=1,nqtot
    493502c         call Register_Hallo(q(1,1,j),ip1jmp1,llm,1,1,1,1,
    494503c     *                       TestRequest)
     
    516525        call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/)))
    517526        call WriteField_p('phis',reshape(phis,(/iip1,jmp1/)))
    518         do j=1,nqmx
     527        do j=1,nqtot
    519528          call WriteField_p('q'//trim(int2str(j)),
    520529     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
     
    608617c$OMP BARRIER
    609618!       CALL FTRACE_REGION_BEGIN("integrd")
     619
    610620       CALL integrd_p ( 2,vcovm1,ucovm1,tetam1,psm1,massem1 ,
    611621     $         dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps,masse,phis ,
     
    625635c
    626636c      call WriteField_p('ps',reshape(ps,(/iip1,jmp1/)))
    627 c      do j=1,nqmx
     637c      do j=1,nqtot
    628638c        call WriteField_p('q'//trim(int2str(j)),
    629639c     .                reshape(q(:,:,j),(/iip1,jmp1,llm/)))
     
    669679
    670680c$OMP BARRIER
    671 
    672681         CALL exner_hyb_p(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
    673682c$OMP BARRIER
     
    725734       
    726735c        call SetDistrib(jj_nb_vanleer)
    727         do j=1,nqmx
     736        do j=1,nqtot
    728737 
    729738          call Register_SwapFieldHallo(q(1,1,j),q(1,1,j),ip1jmp1,llm,
     
    756765cc$OMP BARRIER
    757766!        CALL FTRACE_REGION_BEGIN("calfis")
    758         CALL calfis_p( nq, lafin ,rdayvrai,time  ,
     767        CALL calfis_p(lafin ,rdayvrai,time  ,
    759768     $               ucov,vcov,teta,q,masse,ps,p,pk,phis,phi ,
    760769     $               du,dv,dteta,dq,
     
    799808     *                      1,0,0,1,Request_physic)
    800809
    801         do j=1,nqmx
     810        do j=1,nqtot
    802811          call Register_Hallo(dqfi(1,1,j),ip1jmp1,llm,
    803812     *                        1,0,0,1,Request_physic)
     
    842851cc$OMP END MASTER
    843852c     
    844 c      do j=1,nqmx
     853c      do j=1,nqtot
    845854c        call WriteField_p('dqfi'//trim(int2str(j)),
    846855c     .                reshape(dqfi(:,:,j),(/iip1,jmp1,llm/)))
     
    853862         ENDIF
    854863       
    855           CALL addfi_p( nqmx, dtphys, leapf, forward   ,
     864          CALL addfi_p( dtphys, leapf, forward   ,
    856865     $                  ucov, vcov, teta , q   ,ps ,
    857866     $                 dufi, dvfi, dtetafi , dqfi ,dpfi  )
     
    889898     *                               jj_Nb_caldyn,Request_physic)
    890899
    891         do j=1,nqmx
     900        do j=1,nqtot
    892901       
    893902          call Register_SwapField(q(1,1,j),q(1,1,j),ip1jmp1,llm,
     
    954963        CALL pression_p ( ip1jmp1, ap, bp, ps, p                  )
    955964c$OMP BARRIER
    956 
    957 
    958965        CALL exner_hyb_p( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
    959966c$OMP BARRIER
     
    12911298c$OMP BARRIER
    12921299c$OMP MASTER
    1293               CALL writedynav_p(histaveid, nqmx, itau,vcov ,
     1300              CALL writedynav_p(histaveid, itau,vcov ,
    12941301     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    12951302c$OMP END MASTER
     
    13391346#ifdef CPP_IOIPSL
    13401347 
    1341         CALL writehist_p(histid,histvid, nqmx,itau,vcov,
     1348        CALL writehist_p(histid,histvid, itau,vcov,
    13421349     s                       ucov,teta,phi,q,masse,ps,phis)
    13431350
     
    13541361
    13551362       CALL dynredem1_p("restart.nc",0.0,
    1356      ,                     vcov,ucov,teta,q,nqmx,masse,ps)
     1363     ,                     vcov,ucov,teta,q,masse,ps)
    13571364c#endif
    13581365
     
    14371444c$OMP BARRIER
    14381445c$OMP MASTER
    1439               CALL writedynav_p(histaveid, nqmx, itau,vcov ,
     1446              CALL writedynav_p(histaveid, itau,vcov ,
    14401447     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    14411448               call bilan_dyn_p (2,dtvr*iperiod,dtvr*day_step*periodav,
     
    14801487#ifdef CPP_IOIPSL
    14811488
    1482        CALL writehist_p( histid, histvid, nqmx, itau,vcov ,
     1489       CALL writehist_p( histid, histvid, itau,vcov ,
    14831490     ,                           ucov,teta,phi,q,masse,ps,phis)
    14841491c#else
     
    14871494c      call Gather_Field(teta,ip1jmp1,llm,0)
    14881495c      call Gather_Field(ps,ip1jmp1,1,0)
    1489 c      do iq=1,nqmx
     1496c      do iq=1,nqtot
    14901497c        call Gather_Field(q(1,1,iq),ip1jmp1,llm,0)
    14911498c      enddo
     
    15021509c$OMP MASTER
    15031510                   CALL dynredem1_p("restart.nc",0.0,
    1504      .                               vcov,ucov,teta,q,nqmx,masse,ps)
     1511     .                               vcov,ucov,teta,q,masse,ps)
    15051512c$OMP END MASTER
    15061513                 ENDIF
Note: See TracChangeset for help on using the changeset viewer.