Changeset 2307


Ignore:
Timestamp:
Jun 23, 2015, 1:09:31 PM (9 years ago)
Author:
Laurent Fairhead
Message:

Modifications to run 1D Bomex case
MPL

Location:
LMDZ5/trunk/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/dyn1d/1D_interp_cases.h

    r2239 r2307  
     1!
     2! $Id$
     3!
    14!---------------------------------------------------------------------
    25! Interpolation forcing in time and onto model levels
     
    615618     &       ,vitw_cas,du_cas,hu_cas,vu_cas           &
    616619     &       ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas             &
    617      &       ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas                 &
     620     &       ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas       &
    618621     &       ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas,u_prof_cas,v_prof_cas         &
    619622     &       ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas     &
    620623     &       ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas       &
    621624     &       ,dtrad_prof_cas,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas               &
    622      &       ,sens_prof_cas)
     625     &       ,sens_prof_cas,ustar_prof_cas)
    623626
    624627             ts_cur = ts_prof_cas
     
    746749        if (tend_rayo.eq.1) then
    747750           dt_cooling(l) = dtrad_mod_cas(l)
     751!          print *,'dt_cooling=',dt_cooling(l)
    748752        else
    749753           dt_cooling(l) = 0.0
  • LMDZ5/trunk/libf/phylmd/dyn1d/1D_read_forc_cases.h

    r2239 r2307  
     1!
     2! $Id$
     3!
    14!----------------------------------------------------------------------
    25! forcing_les = .T. : Impose a constant cooling
     
    738741     &         ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas           &
    739742     &         ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas             &
    740      &         ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas                 &
     743     &         ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas       &
    741744     &         ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas,u_prof_cas,v_prof_cas         &
    742745     &         ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas     &
    743746     &         ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas,dtrad_prof_cas       &
    744      &         ,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas)
     747     &         ,dq_prof_cas,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas,ustar_prof_cas)
    745748
    746749! vertical interpolation using TOGA interpolation routine:
     
    778781       d_u_adv(l) = (hv_mod_cas(l)+vv_mod_cas(l))
    779782      enddo     
    780        
     783
     784! In case fluxes are imposed
     785       IF (ok_flux_surf) THEN
     786       fsens=sens_prof_cas
     787       flat=lat_prof_cas
     788       ENDIF
     789       IF (ok_prescr_ust) THEN
     790       ust=ustar_prof_cas
     791       print *,'ust=',ust
     792       ENDIF
     793
    781794      endif !forcing_case
    782795!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • LMDZ5/trunk/libf/phylmd/mod_1D_cases_read.F90

    r2191 r2307  
     1!
     2! $Id$
     3!
    14MODULE mod_1D_cases_read
    25
     
    1114        real heure_ini_cas
    1215        real day_ju_ini_cas   ! Julian day of case first day
    13         parameter (year_ini_cas=2011)
    14         parameter (mth_ini_cas=10)
    15         parameter (day_ini_cas=1)  ! 10 = 10Juil2006
     16!       parameter (year_ini_cas=2011)
     17        parameter (year_ini_cas=1969)
     18!       parameter (mth_ini_cas=10)
     19        parameter (mth_ini_cas=6)
     20!       parameter (day_ini_cas=1)  ! 10 = 10Juil2006
     21        parameter (day_ini_cas=24)  ! 24 = 24 juin 1969
    1622        parameter (heure_ini_cas=0.) !0h en secondes
    1723        real pdt_cas
     
    4349        real, allocatable::  vitw_cas(:,:)
    4450        real, allocatable::  ug_cas(:,:),vg_cas(:,:)
    45         real, allocatable::  lat_cas(:),sens_cas(:),ts_cas(:)
     51        real, allocatable::  lat_cas(:),sens_cas(:),ts_cas(:),ustar_cas(:)
    4652
    4753!champs interpoles
     
    7076
    7177
    72         real lat_prof_cas,sens_prof_cas,ts_prof_cas
     78        real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas
    7379     
    7480
     
    143149        allocate(ug_cas(nlev_cas,nt_cas))
    144150        allocate(vg_cas(nlev_cas,nt_cas))
    145         allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas))
     151        allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas),ustar_cas(nt_cas))
    146152
    147153
     
    175181     &     ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas &
    176182     &     ,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas             &
    177      &     ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas)
     183     &     ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas,ustar_cas)
    178184
    179185
     
    203209        deallocate(ug_cas)
    204210        deallocate(vg_cas)
    205         deallocate(lat_cas,sens_cas,ts_cas)
     211        deallocate(lat_cas,sens_cas,ts_cas,ustar_cas)
    206212
    207213!champs interpoles
     
    241247     &     ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w,                   &
    242248     &     du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq,                     &
    243      &     dth,hth,vth,dr,hr,vr,sens,flat,ts)
     249     &     dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar)
    244250
    245251!program reading forcing of the case study
     
    265271      real dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime)
    266272      real dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime)
    267       real flat(ntime),sens(ntime),ts(ntime)
     273      real flat(ntime),sens(ntime),ts(ntime),ustar(ntime)
    268274
    269275
    270276      integer nid, ierr,rid
    271277      integer nbvar3d
    272       parameter(nbvar3d=34)
     278      parameter(nbvar3d=39)
    273279      integer var3didin(nbvar3d)
    274280
     
    478484           stop 'ts'
    479485         endif
     486
     487      ierr=NF_INQ_VARID(nid,"ustar",var3didin(35))
     488         if(ierr/=NF_NOERR) then
     489           write(*,*) NF_STRERROR(ierr)
     490           stop 'ustar'
     491         endif
    480492 
    481493#ifdef NC_DOUBLE
     
    853865         endif
    854866!          write(*,*)'lecture ts ok',ts
     867
     868#ifdef NC_DOUBLE
     869         ierr = NF_GET_VAR_DOUBLE(nid,var3didin(35),ustar)
     870#else
     871         ierr = NF_GET_VAR_REAL(nid,var3didin(35),ustar)
     872#endif
     873         if(ierr/=NF_NOERR) then
     874            write(*,*) NF_STRERROR(ierr)
     875            stop "getvarup"
     876         endif
     877!         write(*,*)'lecture ustar ok',ustar
     878
    855879
    856880         return
     
    862886     &         ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas           &
    863887     &         ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas   &
    864      &         ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas          &
     888     &         ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas       &
    865889     &         ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas       &
    866890     &         ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas         &
     
    868892     &         ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas       &
    869893     &         ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas    &
    870      &         ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas)
     894     &         ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas,ustar_prof_cas)
    871895         
    872896
     
    903927        real lat_cas(nt_cas)
    904928        real sens_cas(nt_cas)
     929        real ustar_cas(nt_cas)
    905930
    906931! outputs:
     
    915940        real dtrad_prof_cas(nlev_cas)
    916941        real dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas)
    917         real lat_prof_cas,sens_prof_cas,ts_prof_cas
     942        real lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas
    918943! local:
    919944        integer it_cas1, it_cas2,k
     
    921946
    922947
    923         print*,'Check time',day1,day_ini_cas,day_ini_cas+90
     948        print*,'Check time',day1,day_ini_cas,day_ini_cas+1
    924949
    925950        if ((forcing_type.eq.10).and.(1.eq.1)) then
    926951! Check that initial day of the simulation consistent with the case:
    927        if (annee_ref.ne.2011) then
    928         print*,'Pour CINDY, annee_ref doit etre 2011'
     952       if (annee_ref.ne.1969) then
     953!       print*,'Pour CINDY, annee_ref doit etre 2011'
     954        print*,'Pour BOMEX, annee_ref doit etre 1969'
    929955        print*,'Changer annee_ref dans run.def'
    930956        stop
    931957       endif
    932        if (annee_ref.eq.2011 .and. day1.lt.day_ini_cas) then
    933         print*,'CINDY a débuté le 1 octobre 2011',day1,day_ini_cas
     958       if (annee_ref.eq.1969 .and. day1.lt.day_ini_cas) then
     959!       print*,'CINDY a debute le 1 octobre 2011',day1,day_ini_cas
     960        print*,'BOMEX a debute le 24 juin 1969',day1,day_ini_cas
    934961        print*,'Changer dayref dans run.def'
    935962        stop
    936963       endif
    937        if (annee_ref.eq.2011 .and. day1.gt.day_ini_cas+90) then
    938         print*,'CINDY a fini le 31 decembre'
     964       if (annee_ref.eq.1969 .and. day1.gt.day_ini_cas+1) then
     965!       print*,'CINDY a fini le 31 decembre'
     966        print*,'BOMEX a fini le 24 juin'
    939967        print*,'Changer dayref ou nday dans run.def',day1,day_ini_cas+90
    940968        stop
     
    950978       endif
    951979       if (annee_ref.eq.2006 .and. day1.lt.day_ini_cas) then
    952         print*,'AMMA a débuté le 10 juillet 2006',day1,day_ini_cas
     980        print*,'AMMA a debute le 10 juillet 2006',day1,day_ini_cas
    953981        print*,'Changer dayref dans run.def'
    954982        stop
     
    9991027       sens_prof_cas = sens_cas(it_cas2)                                     &
    10001028     &          -frac*(sens_cas(it_cas2)-sens_cas(it_cas1))
    1001        ts_prof_cas = ts_cas(it_cas2)                                     &
     1029       ts_prof_cas = ts_cas(it_cas2)                                         &
    10021030     &          -frac*(ts_cas(it_cas2)-ts_cas(it_cas1))
     1031       ustar_prof_cas = ustar_cas(it_cas2)                                   &
     1032     &          -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1))
    10031033
    10041034       do k=1,nlev_cas
  • LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90

    r2255 r2307  
    13181318!     *sqrt(yu(i,1)*yu(i,1)+yv(i,1)*yv(i,1)))
    13191319       ycdragm(i) = ust*ust/(1.+vent)/vent
    1320        print *,'ycdragm ust yu yv apres=',ycdragm(i),ust,yu(i,1),yv(i,1)
     1320!      print *,'ycdragm ust yu yv apres=',ycdragm(i),ust,yu(i,1),yv(i,1)
    13211321      ENDDO
    13221322     ENDIF
     
    13431343        IF (ok_prescr_ust) then
    13441344         DO i = 1, knon
    1345           print *,'ycdragm_x avant=',ycdragm_x(i)
     1345!         print *,'ycdragm_x avant=',ycdragm_x(i)
    13461346          vent= sqrt(yu_x(i,1)*yu_x(i,1)+yv_x(i,1)*yv_x(i,1))
    13471347          ycdragm_x(i) = ust*ust/(1.+vent)/vent
    1348           print *,'ycdragm_x ust yu yv apres=',ycdragm_x(i),ust,yu_x(i,1),yv_x(i,1)
     1348!         print *,'ycdragm_x ust yu yv apres=',ycdragm_x(i),ust,yu_x(i,1),yv_x(i,1)
    13491349         ENDDO
    13501350        ENDIF
     
    13671367            ycdragm_w, ycdragh_w, zri1_w, pref_w )
    13681368
    1369 ! --- special Dice. JYG+MPL 25112013
     1369! --- special Dice. JYG+MPL 25112013 puis BOMEX
    13701370        IF (ok_prescr_ust) then
    13711371         DO i = 1, knon
    1372           print *,'ycdragm_w avant=',ycdragm_w(i)
     1372!         print *,'ycdragm_w avant=',ycdragm_w(i)
    13731373          vent= sqrt(yu_w(i,1)*yu_w(i,1)+yv_w(i,1)*yv_w(i,1))
    13741374          ycdragm_w(i) = ust*ust/(1.+vent)/vent
    1375           print *,'ycdragm_w ust yu yv apres=',ycdragm_w(i),ust,yu_w(i,1),yv_w(i,1)
     1375!         print *,'ycdragm_w ust yu yv apres=',ycdragm_w(i),ust,yu_w(i,1),yv_w(i,1)
    13761376         ENDDO
    13771377        ENDIF
     
    17471747               y_flux_u1, y_flux_v1 )
    17481748               
    1749 ! Special DICE MPL 05082013
     1749! Special DICE MPL 05082013 puis BOMEX
    17501750       IF (ok_prescr_ust) THEN
     1751          do j=1,knon
    17511752!         ysnow(:)=0.
    17521753!         yqsol(:)=0.
     
    17611762!         y_dflux_t(:)=0.
    17621763!         y_dflux_q(:)=0.
    1763           y_flux_u1(:)=ycdragm(:)*(1.+sqrt(yu(:,1)*yu(:,1)+yv(:,1)*yv(:,1)))*yu(:,1)*ypplay(:,1)/RD/yt(:,1)
    1764           y_flux_v1(:)=ycdragm(:)*(1.+sqrt(yu(:,1)*yu(:,1)+yv(:,1)*yv(:,1)))*yv(:,1)*ypplay(:,1)/RD/yt(:,1)
     1764          y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1)
     1765          y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)
     1766          enddo
    17651767      ENDIF
    17661768
     
    17971799          END DO
    17981800          ! Martin
     1801! Special DICE MPL 05082013 puis BOMEX MPL 20150410
     1802       IF (ok_prescr_ust) THEN
     1803          DO j=1,knon
     1804          y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1)
     1805          y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)
     1806          ENDDO
     1807      ENDIF
    17991808         
    18001809       CASE(is_oce)
     
    18251834          print *,'arg de surf_ocean: ytsurf_new ',ytsurf_new
    18261835       ENDIF
     1836! Special DICE MPL 05082013 puis BOMEX MPL 20150410
     1837       IF (ok_prescr_ust) THEN
     1838          DO j=1,knon
     1839          y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1)
     1840          y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)
     1841          ENDDO
     1842      ENDIF
    18271843         
    18281844       CASE(is_sic)
     
    18441860               y_flux_u1, y_flux_v1)
    18451861         
     1862! Special DICE MPL 05082013 puis BOMEX MPL 20150410
     1863       IF (ok_prescr_ust) THEN
     1864          DO j=1,knon
     1865          y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1)
     1866          y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)
     1867          ENDDO
     1868      ENDIF
    18461869
    18471870       CASE DEFAULT
     
    18861909!
    18871910          IF (iflag_split .eq.0) THEN
    1888              Kech_h(:) = ycdragh(:) * (1.0+SQRT(yu(:,1)**2+yv(:,1)**2)) * &
    1889                   ypplay(:,1)/(RD*yt(:,1))
     1911             do j=1,knon
     1912             Kech_h(j) = ycdragh(j) * (1.0+SQRT(yu(j,1)**2+yv(j,1)**2)) * &
     1913                  ypplay(j,1)/(RD*yt(j,1))
     1914             enddo
    18901915          ENDIF ! (iflag_split .eq.0)
    18911916
     
    18951920          ENDDO
    18961921
    1897           y_d_ts(:) = ytsurf_new(:) - yts(:)
     1922          do j=1,knon
     1923          y_d_ts(j) = ytsurf_new(j) - yts(j)
     1924          enddo
    18981925
    18991926        ELSE ! (ok_flux_surf)
    1900           y_flux_t1(:) =  yfluxsens(:)
    1901           y_flux_q1(:) = -yevap(:)
     1927          do j=1,knon
     1928          y_flux_t1(j) =  yfluxsens(j)
     1929          y_flux_q1(j) = -yevap(j)
     1930          enddo
    19021931        ENDIF
    19031932
Note: See TracChangeset for help on using the changeset viewer.