Changeset 1948 for LMDZ5/trunk


Ignore:
Timestamp:
Jan 27, 2014, 11:29:29 AM (11 years ago)
Author:
idelkadi
Message:
  • Option pour tourner sans thermiques ni ajustement sec si ifalg_thermals<0 (phylmd/physiq.F90)
  • Modifications permettant d'imposer des profils initiaux de traceurs

lus dans un tracer.inp.001 (phylmd/1DUTILS.h, 1D_read_forc_cases.h et lmdz1d.F)

Location:
LMDZ5/trunk/libf
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phy1d/1DUTILS.h

    r1914 r1948  
    29682968
    29692969!=====================================================================
    2970       subroutine readprofiles(nlev_max,kmax,height,
     2970      subroutine readprofiles(nlev_max,kmax,ntrac,height,
    29712971     .           thlprof,qtprof,uprof,
    29722972     .           vprof,e12prof,ugprof,vgprof,
    29732973     .           wfls,dqtdxls,dqtdyls,dqtdtls,
    2974      .           thlpcar)
     2974     .           thlpcar,tracer,nt1,nt2)
    29752975      implicit none
    29762976
    2977         integer nlev_max,kmax,kmax2
     2977        integer nlev_max,kmax,kmax2,ntrac
    29782978        logical :: llesread = .true.
    29792979
     
    29822982     .       ugprof(nlev_max),vgprof(nlev_max),wfls(nlev_max),
    29832983     .       dqtdxls(nlev_max),dqtdyls(nlev_max),dqtdtls(nlev_max),
    2984      .           thlpcar(nlev_max)
     2984     .           thlpcar(nlev_max),tracer(nlev_max,ntrac)
    29852985
    29862986        integer, parameter :: ilesfile=1
    2987         integer :: ierr,irad,imax,jtot,k
     2987        integer :: ierr,irad,imax,jtot,k,itrac,nt1,nt2
    29882988        logical :: lmoist,lcoriol,ltimedep
    29892989        real :: xsize,ysize
     
    30153015        end do
    30163016        close(ilesfile)
     3017
     3018       open(ilesfile,file='trac.inp.001',status='old',iostat=ierr)
     3019       nt1=ntrac
     3020       nt2=ntrac
     3021        if (ierr /= 0) then
     3022            print*,'WARNING : trac.inp does not exist'
     3023        else
     3024        read (ilesfile,*) kmax2,nt1,nt2
     3025        if (nt2>ntrac) then
     3026          stop'Augmenter le nombre de traceurs dans traceur.def'
     3027        endif
     3028        if (kmax .ne. kmax2) then
     3029          print *, 'fichiers prof.inp et lscale.inp incompatibles :'
     3030          print *, 'nbre de niveaux : ',kmax,' et ',kmax2
     3031          stop 'lecture profiles'
     3032        endif
     3033        do k=1,kmax
     3034          read (ilesfile,*) height(k),(tracer(k,itrac),itrac=nt1,nt2)
     3035        end do
     3036        close(ilesfile)
     3037        endif
    30173038
    30183039        return
  • LMDZ5/trunk/libf/phy1d/1D_read_forc_cases.h

    r1907 r1948  
    2424!----------------------------------------------------------------------
    2525
    26       call readprofiles(nlev_max,kmax,height,
     26      call readprofiles(nlev_max,kmax,nqtot,height,
    2727     .           tttprof,qtprof,uprof,vprof,
    2828     .           e12prof,ugprof,vgprof,
    2929     .           wfls,dqtdxls,dqtdyls,dqtdtls,
    30      .           thlpcar)
     30     .           thlpcar,qprof,nq1,nq2)
    3131      endif
    3232
     
    6262        ug(l)   = ugprof(kmax)-frac*( ugprof(kmax)- ugprof(kmax-1))
    6363        vg(l)   = vgprof(kmax)-frac*( vgprof(kmax)- vgprof(kmax-1))
     64        q(l,nq1:nq2)=qprof(kmax,nq1:nq2)
     65     s               -frac*(qprof(kmax,nq1:nq2)-qprof(kmax-1,nq1:nq2))
    6466        omega(l)=   wfls(kmax)-frac*(   wfls(kmax)-   wfls(kmax-1))
    6567
     
    8587            ug(l)   = ugprof(k)-frac*( ugprof(k)- ugprof(k-1))
    8688            vg(l)   = vgprof(k)-frac*( vgprof(k)- vgprof(k-1))
     89            q(l,nq1:nq2)=qprof(k,nq1:nq2)
     90     s                   -frac*(qprof(k,nq1:nq2)-qprof(k-1,nq1:nq2))
    8791            omega(l)=   wfls(k)-frac*(   wfls(k)-   wfls(k-1))
    8892            dq_dyn(l,1)=dqtdtls(k)-frac*(dqtdtls(k)-dqtdtls(k-1))
     
    104108            vg(l)   = vgprof(1)
    105109            omega(l)=   wfls(1)
     110            q(l,nq1:nq2)=qprof(1,nq1:nq2)
    106111            dq_dyn(l,1)  =dqtdtls(1)
    107112            dt_cooling(l)=thlpcar(1)
  • LMDZ5/trunk/libf/phy1d/lmdz1d.F

    r1943 r1948  
    9090
    9191        integer :: kmax = llm
    92         integer nlev_max,llm700
    93         parameter (nlev_max = 1000)
     92        integer llm700,nq1,nq2
     93        INTEGER, PARAMETER :: nlev_max=1000, nqmx=1000
    9494        real timestep, frac, timeit
    9595        real height(nlev_max),tttprof(nlev_max),qtprof(nlev_max),
     
    9797     .              ugprof(nlev_max),vgprof(nlev_max),wfls(nlev_max),
    9898     .              dqtdxls(nlev_max),dqtdyls(nlev_max),
    99      .              dqtdtls(nlev_max),thlpcar(nlev_max)
     99     .              dqtdtls(nlev_max),thlpcar(nlev_max),
     100     .              qprof(nlev_max,nqmx)
    100101
    101102        real    :: fff
     
    427428      call infotrac_init
    428429
     430      if (nqtot>nqmx) STOP'Augmenter nqmx dans lmdz1d.F'
    429431      allocate(q(llm,nqtot)) ; q(:,:)=0.
    430432      allocate(dq(llm,nqtot))
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r1938 r1948  
    22962296       'AVANT LA CONVECTION SECHE , iflag_thermals=' &
    22972297       ,iflag_thermals,'   nsplit_thermals=',nsplit_thermals
    2298   if(iflag_thermals.lt.0) then
     2298  if(iflag_thermals<=0) then
    22992299     !  Rien
    23002300     !  ====
    2301      IF(prt_level>9)WRITE(lunout,*)'pas de convection'
     2301     IF(prt_level>9)WRITE(lunout,*)'pas de modele de panache thermique'
     2302     IF(prt_level>9.and.iflag_thermals<0)WRITE(lunout,*)'pas d ajustement convectif'
    23022303
    23032304
     
    24462447     ! Dans le cas contraire, on demarre au niveau 1.
    24472448
    2448      if (iflag_thermals.ge.13.or.iflag_thermals.eq.0) then
     2449     if (iflag_thermals>=13.or.iflag_thermals<=0) then
    24492450
    24502451        if(iflag_thermals.eq.0) then
     
    24612462        ! non nulles numeriquement pour des mailles non concernees.
    24622463
    2463         if (iflag_thermals.eq.0) then
     2464        if (iflag_thermals==0) then
    24642465           CALL ajsec_convV2(paprs, pplay, t_seri,q_seri &
    24652466                , d_t_ajsb, d_q_ajsb)
    2466         else
     2467        else if (iflag_thermals>0) then
    24672468           CALL ajsec(paprs, pplay, t_seri,q_seri,limbas &
    24682469                , d_t_ajsb, d_q_ajsb)
Note: See TracChangeset for help on using the changeset viewer.