Changeset 5635 for LMDZ6/trunk


Ignore:
Timestamp:
Apr 30, 2025, 8:10:21 AM (6 weeks ago)
Author:
fhourdin
Message:

Modified subrid wind for SPLA (Fredho4Lamine)

Location:
LMDZ6/trunk/libf/phylmd
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/Dust/coarsemission.f90

    r5337 r5635  
    55        xlat,xlon,debutphy, &
    66        zu10m,zv10m,wstar,ale_bl,ale_wake, &
     7        nsurfwind,wind10ms,probu, &
    78        scale_param_ssacc,scale_param_sscoa, &
    89        scale_param_dustacc,scale_param_dustcoa, &
     
    3536!!USE paramet_mod_h
    3637USE yomcst_mod_h
     38USE lmdz_surf_wind, ONLY : surf_wind
    3739IMPLICIT NONE
    3840
     
    5456  REAL, intent(in) ::  xlat(klon)    ! latitudes pour chaque point
    5557  REAL, intent(in) ::  xlon(klon)    ! longitudes pour chaque point
     58  INTEGER, intent(in) ::  nsurfwind
    5659  REAL,DIMENSION(klon),INTENT(IN)    :: zu10m
    5760  REAL,DIMENSION(klon),INTENT(IN)    :: zv10m
    5861  REAL,DIMENSION(klon),INTENT(IN)    :: wstar,Ale_bl,ale_wake
     62  REAL,DIMENSION(klon,nsurfwind),INTENT(IN)    :: wind10ms
     63  REAL,DIMENSION(klon,nsurfwind),INTENT(IN)    :: probu
    5964
    6065  !
     
    190195  param_wstarWAKE(i)=param_wstarWAKEperregion(iregion_wstardust(i))
    191196  ENDDO
    192 
    193 
    194   CALL dustemission( debutphy, xlat, xlon, pctsrf, &
     197 
     198
     199  CALL dustemission( debutphy, xlat, xlon, nsurfwind, pctsrf, &
    195200        zu10m,zv10m,wstar,ale_bl,ale_wake, &
    196201        param_wstarBL, param_wstarWAKE, &
     202        wind10ms, probu, &
    197203        dustsourceacc,dustsourcecoa, &
    198204        dustsourcesco,maskd)
  • LMDZ6/trunk/libf/phylmd/Dust/dustemission_mod.f90

    r5337 r5635  
    11MODULE dustemission_mod
    22
     3  USE lmdz_surf_wind
    34  IMPLICIT NONE
    45  !Parameters   
     
    1112  INTEGER, PARAMETER     :: nmode=3   ! number of soil-dust modes
    1213  INTEGER, PARAMETER     :: ntyp=5   ! number of soil types
    13   INTEGER, PARAMETER     :: nwb=12   ! number of points for the 10m wind
     14  !INTEGER, PARAMETER     :: nwb=12   ! number of points for the 10m wind
    1415! speed weibull distribution (>=2)
    1516  real   ,parameter     :: z10m=1000. !10m in cm
     
    165166  END SUBROUTINE dustemis_out_init
    166167
    167   SUBROUTINE dustemission( debutphy, xlat, xlon, &    !Input
     168  SUBROUTINE dustemission( debutphy, xlat, xlon, nsurfwind, &    !Input
    168169                          pctsrf,zu10m,zv10m,wstar, & !Input
    169170                          ale_bl,ale_wake, &          !Input
    170                           param_wstarBL, param_wstarWAKE, &  !Input
     171                          param_wstarBL, param_wstarWAKE, & !Input
     172                          wind10ms, probu, & !Input
    171173                          emdustacc,emdustcoa,emdustsco,maskdust)    !Output
    172174  USE dimphy
     
    182184  ! first:
    183185  ! Model grid parameters
     186  INTEGER, INTENT(IN)                :: nsurfwind
    184187  REAL,DIMENSION(klon),     INTENT(IN)     :: xlat
    185188  REAL,DIMENSION(klon),     INTENT(IN)     :: xlon
     
    190193  REAL,DIMENSION(klon),INTENT(IN)          :: ale_bl
    191194  REAL,DIMENSION(klon),INTENT(IN)          :: ale_wake
     195  !REAL,DIMENSION(klon),INTENT(IN)          :: wake_s
     196  !REAL,DIMENSION(klon),INTENT(IN)          :: wake_Cstar
     197  !REAL,DIMENSION(klon),INTENT(IN)          :: zustar
    192198  REAL,DIMENSION(klon), INTENT(IN) :: param_wstarWAKE
    193199  REAL,DIMENSION(klon), INTENT(IN) :: param_wstarBL
    194200 
    195201 
     202  REAL,DIMENSION(klon,nsurfwind), INTENT(IN) :: wind10ms
     203  REAL,DIMENSION(klon,nsurfwind), INTENT(IN) :: probu
     204 
    196205  LOGICAL  :: debutphy ! First physiqs run or not
    197206  ! Intermediate variable: 12 bins emissions
    198   REAL,DIMENSION(:,:), ALLOCATABLE,SAVE  :: emisbinloc ! vertical emission fluxes
     207  !REAL,DIMENSION(:,:), ALLOCATABLE,SAVE  :: emisbinloc ! vertical emission fluxes
     208  REAL, DIMENSION(:,:), ALLOCATABLE, SAVE :: emisbinloc
    199209
    200210  !OUT variables
     
    206216!  REAL,DIMENSION(klon_glo) :: raux_klon_glo ! auxiliar
    207217
    208 !$OMP THREADPRIVATE(emisbinloc)
     218 INTEGER :: nwb
     219 nwb = nsurfwind
     220!!!$OMP THREADPRIVATE(emisbinloc)
    209221!!!!!!$OMP THREADPRIVATE(maskdust)
    210222  IF (debutphy) THEN
     
    217229
    218230!JE20141124  CALL  calcdustemission(debutphy,zu10m,zv10m,wstar,ale_bl,ale_wake,emisbinloc)
    219   CALL  calcdustemission(debutphy,zu10m,zv10m,wstar,ale_bl,ale_wake,param_wstarBL,param_wstarWAKE, & !I
    220                          emisbinloc)   !O
     231  CALL  calcdustemission(debutphy,nsurfwind,zu10m,zv10m,wstar,ale_bl,ale_wake,param_wstarBL,param_wstarWAKE, & !I
     232                         wind10ms,probu,emisbinloc)   !O
    221233
    222234  CALL makemask(maskdust)
     
    654666  varname='A'
    655667  CALL read_surface(varname,Aini)
    656 print *,'beforewritephy',mpi_rank,omp_rank
     668!print *,'beforewritephy',mpi_rank,omp_rank
    657669  CALL writefield_phy("SOLinit",solini,5)
    658670  CALL writefield_phy("Pinit",Pini,5)
     
    662674  CALL writefield_phy("Dinit",Dini,5)
    663675  CALL writefield_phy("Ainit",Aini,5)
    664 print *,'afterwritephy',mpi_rank,omp_rank
     676!print *,'afterwritephy',mpi_rank,omp_rank
    665677
    666678  DO i=1,klon
     
    765777      enddo
    76677830   continue
    767       print*,'IK5'
     779!      print*,'IK5'
    768780      ncl=i-1
    769       print*,'   soil size classes used   ',ncl,' / ',nclass
    770       print*,'   soil size min: ',sizeclass(1),' soil size max: ',sizeclass(ncl)
     781!     print*,'   soil size classes used   ',ncl,' / ',nclass
     782!     print*,'   soil size min: ',sizeclass(1),' soil size max: ',sizeclass(ncl)
    771783      if(ncl.gt.nclass)stop
    772784
     
    775787!if (.true.) then
    776788!c 0: Iversen and White 1982
    777        print *,'Using  Iversen and White 1982 Uth'
     789!        print *,'Using  Iversen and White 1982 Uth'
    778790         do i=1,ncl
    779791            bb=adust*(sizeclass(i)**xdust)+bdust
     
    11071119!--------------------------------------------------------------------------------------
    11081120
    1109   SUBROUTINE calcdustemission(debutphy,zu10m,zv10m,wstar, &
     1121  SUBROUTINE calcdustemission(debutphy,nsurfwind,zu10m,zv10m,wstar, &
    11101122                              ale_bl,ale_wake,param_wstarBL,param_wstarWAKE, &
     1123                              wind10ms, probu, &
    11111124                              emisbin)
    11121125  ! emisions over 12 dust bin
     
    11171130  ! Input
    11181131  LOGICAL, INTENT(IN)                   :: debutphy ! First physiqs run or not
     1132  INTEGER, INTENT(IN)                   :: nsurfwind ! First physiqs run or not
    11191133  REAL,DIMENSION(klon),INTENT(IN)          :: zu10m   ! 10m zonal wind
    11201134  REAL,DIMENSION(klon),INTENT(IN)          :: zv10m   ! meridional 10m wind
     
    11221136  REAL,DIMENSION(klon),INTENT(IN)          :: ale_bl
    11231137  REAL,DIMENSION(klon),INTENT(IN)          :: ale_wake
     1138  REAL,DIMENSION(klon,nsurfwind),INTENT(IN)          :: wind10ms
     1139  REAL,DIMENSION(klon,nsurfwind),INTENT(IN)          :: probu
    11241140 
    11251141  ! Local variables
     
    11301146  REAL,DIMENSION(klon), INTENT(IN) :: param_wstarBL
    11311147  REAL,DIMENSION(:,:), ALLOCATABLE,SAVE :: fluxdust ! horizonal emission fluxes in UNITS for the nmod soil aerosol modes
    1132   REAL,DIMENSION(:), ALLOCATABLE,SAVE   :: wind10ms   ! 10m wind distribution in m/s
    1133   REAL,DIMENSION(:), ALLOCATABLE,SAVE   :: wind10cm   ! 10m wind distribution in cm/s
     1148  !REAL,DIMENSION(:), ALLOCATABLE,SAVE   :: wind10ms   ! 10m wind distribution in m/s
     1149  !REAL,DIMENSION(:), ALLOCATABLE,SAVE   :: wind10cm   ! 10m wind distribution in cm/s
    11341150  REAL,DIMENSION(klon)                  :: zwstar   
    1135   REAL,DIMENSION(nwb)                :: probu
     1151  !REAL,DIMENSION(nwb)                :: probu
    11361152!  REAL, DIMENSION(nmode) :: fluxN,ftN,adN,fdpN,pN,eN ! in the original code N=1,2,3
    11371153  REAL :: flux1,flux2,flux3,ft1,ft2,ft3
     
    11471163  REAL :: dfec1,dfec2,dfec3,t1,t2,t3,p1,p2,p3,dec,ec
    11481164  ! auxiliar counters
    1149   INTEGER                               :: kwb
     1165  INTEGER                               :: kwb, nwb
    11501166  INTEGER                               :: i,j,k,l,n
    11511167  INTEGER  :: kfin,ideb,ifin,kfin2,istep
     
    11551171  !REAL,DIMENSION(:,:), ALLOCATABLE,SAVE  :: emisbin ! vertical emission fluxes in UNITS for the 12 bins
    11561172  REAL,DIMENSION(klon,nbins)  :: emisbin ! vertical emission fluxes in UNITS for the 12 bins
    1157 !$OMP THREADPRIVATE(fluxdust)
    1158 !$OMP THREADPRIVATE(wind10ms)
    1159 !$OMP THREADPRIVATE(wind10cm)
     1173  !$OMP THREADPRIVATE(fluxdust)
     1174!!!$OMP THREADPRIVATE(wind10ms)
     1175!!!$OMP THREADPRIVATE(wind10cm)
     1176
    11601177
    11611178  !----------------------------------------------------
     
    11651182!   ALLOCATE( emisbin(klon,nbins) )
    11661183   ALLOCATE( fluxdust(klon,nmode) )
    1167    ALLOCATE( wind10ms(nwb) )
    1168    ALLOCATE( wind10cm(nwb) )
     1184  ! ALLOCATE( wind10ms(klon,nsurfwind) )
     1185   !ALLOCATE( wind10cm(nwb) )
    11691186  ENDIF !debutphy
    11701187
     
    11891206!*,'zwstar=sqrt(2.*(',flag_wstarBL,'ale_bl+0.01*(',flag_wstar,'-100)*ale_wake))'
    11901207  !
     1208    !CALL surf_wind(klon, nsurfwind, zu10m, zv10m, wstar, param_wstarBL, param_wstarWAKE, ale_bl, wind10ms, probu)
    11911209    DO i=1,klon  ! main loop
    1192      zwstar(i)=sqrt(2.*(param_wstarBL(i)*ale_bl(i)+param_wstarWAKE(i)*ale_wake(i)))
    1193      U10mMOD=MAX(woff,sqrt(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i)))
    1194      pdfcum=0.
     1210   !  zwstar(i)=sqrt(2.*(param_wstarBL(i)*ale_bl(i)+param_wstarWAKE(i)*ale_wake(i)))
     1211     zwstar(i)=sqrt(2.*(param_wstarBL(i)*ale_bl(i)))
    11951212     ! Wind weibull distribution:
    1196 
     1213           nwb = nsurfwind
     1214!          print*,'GGGGGGGGGGGGGGGGGGGGGGGGG nwb=',nwb
    11971215           DO kwb=1,nwb
    11981216                flux1=0.
     
    12041222! lambda=U10mMOD/gamma(1+1/kref)
    12051223! gamma function estimated with stirling formula
    1206                 auxreal=1.+1./kref
    1207                 weilambda = U10mMOD/exp(auxreal*log(auxreal)-auxreal &
    1208                          - 0.5*log(auxreal/(2.*pi))+1./(12.*auxreal) &
    1209                          -1./(360.*(auxreal**3.))+1./(1260.*(auxreal**5.)))
    1210                 IF(nwb.gt.1)THEN
    1211                    wind10ms(kwb)=kwb*2.*U10mMOD/nwb
    1212 !original
    1213 !                   pdfu=(kref/U10mMOD)*(wind10ms(kwb)/U10mMOD)**(kref-1) &
    1214 !                      *exp(-(wind10ms(kwb)/U10mMOD)**kref)
    1215                    pdfu=(kref/weilambda)*(wind10ms(kwb)/weilambda)**(kref-1) &
    1216                       *exp(-(wind10ms(kwb)/weilambda)**kref)
    1217 !                   !print *,'JEdbg  U10mMOD weilambda  ',U10mMOD,weilambda
    1218 !JE20141205>>
    1219 
    1220                    probu(kwb)=pdfu*2.*U10mMOD/nwb
    1221                    pdfcum=pdfcum+probu(kwb)
    1222                       IF(probu(kwb).le.1.e-2)GOTO 70
    1223                 ELSE
    1224                    wind10ms(kwb)=U10mMOD
    1225                    probu(kwb)=1.
    1226                 ENDIF
    1227              wind10cm(kwb)=wind10ms(kwb)*100.
    12281224             DO n=1,ntyp
    12291225                   ft1=0.
     
    12681264! Cas ou wsta=0.
    12691265                      cdnms=vkarm/(log(z10m/z0salt))
    1270                       modwm=sqrt((wind10ms(kwb)**2)+(1.2*zwstar(i))**2)
     1266                      modwm=sqrt((wind10ms(i,kwb)**2)+(1.2*zwstar(i))**2)
    12711267                      ustarns=cdnms*modwm*100.
    12721268                    ustarsalt=ustarns
    1273 
     1269!                   print*,'LAAAAAAAAAAAAAAAAAA modwm=',modwm
    12741270
    12751271                   IF(ustarsalt.lt.umin/ceff)GOTO 80
     
    13271323             ENDDO !n=1,ntyp
    1328132470 CONTINUE
    1329         fluxdust(i,1)=fluxdust(i,1)+flux1*probu(kwb)
    1330         fluxdust(i,2)=fluxdust(i,2)+flux2*probu(kwb)
    1331         fluxdust(i,3)=fluxdust(i,3)+flux3*probu(kwb)
     1325        fluxdust(i,1)=fluxdust(i,1)+flux1*probu(i,kwb)
     1326        fluxdust(i,2)=fluxdust(i,2)+flux2*probu(i,kwb)
     1327        fluxdust(i,3)=fluxdust(i,3)+flux3*probu(i,kwb)
    13321328   ENDDO !kwb=1,nwb
    13331329      m1dflux(i)=10.*fluxdust(i,1)
     
    14101406         enddo
    14111407         if(kfin.ge.nclass)then
    1412             print*,'$$$$ Tables dimension problem:',kfin,'>',nclass
     1408!           print*,'$$$$ Tables dimension problem:',kfin,'>',nclass
    14131409         endif
    14141410!---------------       
  • LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90

    r5554 r5635  
    804804                      beta_fisrt,beta_v1,                              &  ! I
    805805                      zu10m,zv10m,wstar,ale_bl,ale_wake,               &  ! I
     806                      nsurfwind,wind10ms,probu,                        &  ! I 
    806807                      d_tr_dyn,tr_seri)                                            ! O
    807808!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    825826      USE yoethf_mod_h
    826827      USE chem_mod_h
     828      USE lmdz_surf_wind, ONLY: surf_wind
    827829      IMPLICIT none
    828830!
     
    847849!  divers:
    848850!  -------
    849 !
     851      INTEGER, intent(in) ::  nsurfwind
     852      REAL,DIMENSION(klon,nsurfwind),INTENT(IN)    :: wind10ms
     853      REAL,DIMENSION(klon,nsurfwind),INTENT(IN)    :: probu
    850854      real,intent(in) :: pdtphys  ! pas d'integration pour la physique (seconde)
    851855      REAL, intent(in):: jD_cur, jH_cur
     
    21532157                        rlat,rlon,debutphy,                                &
    21542158                        zu10m,zv10m,wstar,ale_bl,ale_wake,                 &
     2159                        nsurfwind,wind10ms,probu,                          &
    21552160                        scale_param_ssacc,scale_param_sscoa,               &
    21562161                        scale_param_dustacc,scale_param_dustcoa,           &
  • LMDZ6/trunk/libf/phylmd/lmdz_surf_wind.f90

    r5471 r5635  
    22        CONTAINS
    33
    4 SUBROUTINE surf_wind(klon,nsurfwind,zu10m,zv10m,sigmaw,cstar,ustar,wstar,wind10ms,probu)
     4SUBROUTINE surf_wind(klon,nsurfwind,zu10m,zv10m,sigmaw,cstar,ustar,ale_bl,wind10ms,probu)
    55
    66USE lmdz_surf_wind_ini, ONLY : iflag_surf_wind
     7USE lmdz_surf_wind_ini, ONLY : surf_wind_ktwake
     8USE lmdz_surf_wind_ini, ONLY : surf_wind_kttherm
     9USE lmdz_surf_wind_ini, ONLY : surf_wind_kztherm
    710
    811IMPLICIT NONE
     
    1114REAL, DIMENSION(klon), INTENT(IN)  :: cstar
    1215REAL, DIMENSION(klon), INTENT(IN)  :: sigmaw
    13 REAL, DIMENSION(klon), INTENT(IN)  :: ustar, wstar
     16REAL, DIMENSION(klon), INTENT(IN)  :: ustar, ale_bl
    1417REAL, DIMENSION(klon,nsurfwind), INTENT(OUT)         :: wind10ms, probu
    15 
     18REAL, PARAMETER                    :: woff=0.5  ! min value of 10m wind speed accepted for emissions
    1619
    1720REAL, DIMENSION(klon,nsurfwind)         :: sigma_th, sigma_wk
    18 REAL, DIMENSION(klon,nsurfwind)         :: xp, yp, zz
     21REAL, DIMENSION(klon,nsurfwind)         :: xp, yp
    1922REAL, DIMENSION(klon,nsurfwind)         :: vwx, vwy, vw
    2023REAL, DIMENSION(klon,nsurfwind)         :: vtx, vty
     
    2730REAL    :: pi, pdfu
    2831REAL    :: auxreal, kref
    29 REAL    :: ray, ray2, theta,rr, xx, yy
    30 REAL    :: ktwk, ktth, kzth
     32REAL    :: ray, ray2, theta,rr, xx, yy, zz
    3133
    32 !print*,'LLLLLLLLLLLLLLLLLLLLL nsurfwind=',nsurfwind
    3334pi=2.*acos(0.)
    3435ray=7000.
    35 ktwk=0.5
    36 ktth=2.
    37 kzth=1.
     36!ktwk=0.5
     37!ktth=2.
     38!kzth=1.
    3839kref=3
    3940nwb=nsurfwind
    4041
    41 ubwk(klon) = zu10m(klon)
    42 vbwk(klon) = zv10m(klon)
     42Do i=1,klon
     43    ubwk(i) = zu10m(i)
     44    vbwk(i) = zv10m(i)
     45ENDDO
    4346
    4447DO i=1,klon
    45     U10mMOD(i)=sqrt(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
     48     U10mMOD(i)=MAX(woff,sqrt(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i)))   
     49     !U10mMOD(i)=sqrt(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
    4650ENDDO
    4751
     
    9397            ! Utilisation de la distribution du vent a l interieur et a l exterieur des poches
    9498            call Random_number(zz)     ! tirage uniforme entre 0 et 1.
    95             IF (ALL(zz <= sigmaw(klon))) THEN    ! quand on est a l interieur de la poche
     99            IF (zz <= sigmaw(i)) THEN    ! quand on est a l interieur de la poche
     100            !IF (zz <= 1.) THEN    ! test pour tourner uniquement avec le modele de vent dans les poches
    96101 
    97102                  call Random_number(xx)   
     
    110115
    111116                  ! On relie la variance au module du vent au carree (sigma ^ 2 = k || v || ^ 2)
    112                   sigma_wk(i,nmc) =  ktwk*(vw(i,nmc))
     117                  !sigma_wk(i,nmc) =  ktwk*(vw(i,nmc))
     118                  sigma_wk(i,nmc) =  surf_wind_ktwake*(vw(i,nmc))
    113119
    114120                  ! tirage du vent turbulent vt
     
    116122                  vtx(i,nmc) = sigma_wk(i,nmc)*xx
    117123                  vty(i,nmc) = sigma_wk(i,nmc)*yy
    118 
     124                 ! print*,'ZZZZZZZZZZZZZZZZZZZZ xx=',xx
    119125                  ! vent total = vent dans la poche (vw) + le vent turbulent(vt)
    120126                  windx(i,nmc) = vwx(i,nmc) + vtx(i,nmc)
     
    122128                  wind(i,nmc) = sqrt(windx(i,nmc)**2 + windy(i,nmc)**2)
    123129                  wind10ms(i,nmc) = wind(i,nmc)
    124                   probu(i,nmc) = wind(i,nmc)/nsurfwind
     130                  probu(i,nmc) = 1./nsurfwind
    125131
    126132            ELSE
     
    131137
    132138                  !sigma_th(i,nmc) = sqrt((ktth*ustar(i))**2 + (kzth*wstar(i))**2)  ! a voir
    133                   sigma_th(i,nmc) = 1.8
     139                  ! On remplace wstar par sqrt(2*ale_bl)
     140                  sigma_th(i,nmc) = sqrt((surf_wind_kttherm*ustar(i))**2 + (surf_wind_kztherm*sqrt(2*ale_bl(i)))**2)                 
    134141
    135142                  ! tirage du vent turbulent vt
     
    143150                  wind(i,nmc) = sqrt(windx(i,nmc)**2 + windy(i,nmc)**2)
    144151                  wind10ms(i,nmc) = wind(i,nmc)
    145                   probu(i,nmc) = wind(i,nmc)/nsurfwind
     152                  probu(i,nmc) = 1./nsurfwind
    146153                  ! print*, 'wind10ms', wind10ms(i,nmc)         
    147154            ENDIF
     155    ! print*,'WWWWWWWWWWWWWWWWWWWW wind10ms=',wind10ms(i,nmc)
    148156    ! enlver     
    149     !call histogram(wind(i,nmc), 0., 20., nbin, hist)
    150     !call histogram(windx(i,nmc), -20., 20., nbin1, histx)
    151     !call histogram(windy(i,nmc), -20., 20., nbin1, histy)
     157    ! call histogram(wind(i,nmc), 0., 20., nbin, hist)
     158    ! call histogram(windx(i,nmc), -20., 20., nbin1, histx)
     159    ! call histogram(windy(i,nmc), -20., 20., nbin1, histy)
    152160       ENDDO
    153161   ENDDO
  • LMDZ6/trunk/libf/phylmd/lmdz_surf_wind_ini.f90

    r5446 r5635  
    99   integer, protected :: lunout
    1010   integer, protected :: iflag_surf_wind=0
    11    !$OMP THREADPRIVATE(lunout,iflag_surf_wind)
     11   real, protected :: surf_wind_ktwake=0.5
     12   real, protected :: surf_wind_kttherm=2.
     13   real, protected :: surf_wind_kztherm=1.
     14
     15   !$OMP THREADPRIVATE(lunout, iflag_surf_wind, surf_wind_ktwake, surf_wind_kttherm, surf_wind_kztherm)
     16
     17!!   !$OMP THREADPRIVATE(lunout,iflag_surf_wind)
     18!!   !$OMP THREADPRIVATE(lunout,surf_wind_ktwake)
     19!!   !$OMP THREADPRIVATE(lunout,surf_wind_kttherm)
     20!!   !$OMP THREADPRIVATE(lunout,surf_wind_kztherm)
    1221
    1322CONTAINS
     
    3645  lunout=lunout_i
    3746  CALL getin_p('iflag_surf_wind',iflag_surf_wind)
     47  CALL getin_p('surf_wind_ktwake',surf_wind_ktwake)
     48  CALL getin_p('surf_wind_kttherm',surf_wind_kttherm)
     49  CALL getin_p('surf_wind_kztherm',surf_wind_kztherm)
    3850
    3951  write(lunout,*) 'Initialisation wind10m'
    4052  write(lunout,*) 'lmdz_surf_wind_ini, iflag_surf_wind=',iflag_surf_wind
     53  write(lunout,*) 'lmdz_surf_wind_ini, surf_wind_ktwake=',surf_wind_ktwake
     54  write(lunout,*) 'lmdz_surf_wind_ini, surf_wind_kttherm=',surf_wind_kttherm
     55  write(lunout,*) 'lmdz_surf_wind_ini, surf_wind_kztherm=',surf_wind_kztherm
    4156
    4257 RETURN
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5627 r5635  
    8181    USE calwake_mod, ONLY : calwake, calwake_first
    8282    USE lmdz_wake_ini, ONLY : wake_ini
    83     USE lmdz_surf_wind_ini, ONLY : surf_wind_ini, iflag_surf_wind
     83    USE lmdz_surf_wind_ini, ONLY : surf_wind_ini
    8484    USE lmdz_surf_wind, ONLY : surf_wind
    8585    USE yamada_ini_mod, ONLY : yamada_ini
     
    38523852    !===================================================================
    38533853    ! Computation of subrgid scale near-surface wind distribution
    3854     call surf_wind(klon,nsurfwind,u10m,v10m,wake_s,wake_Cstar,ustar,wstar,surf_wind_value,surf_wind_proba)
     3854    ! Developed for dust lifting. Could be extended to coupling with ocean and others
     3855    ! by default : 1 bin equal to the mean wind
     3856
     3857     call surf_wind(klon,nsurfwind,zu10m,zv10m,wake_s,wake_Cstar,zustar,ale_bl,surf_wind_value,surf_wind_proba)
    38553858
    38563859    !===================================================================
     
    53995402                      beta_prec_fisrt,beta_prec, & !I
    54005403                      zu10m,zv10m,wstar,ale_bl,ale_wake,               &  ! I
     5404                      nsurfwind,surf_wind_value, surf_wind_proba,      & ! I
    54015405                      d_tr_dyn,tr_seri)
    54025406
Note: See TracChangeset for help on using the changeset viewer.