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/phy1d
Files:
3 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))
Note: See TracChangeset for help on using the changeset viewer.