Changeset 5039


Ignore:
Timestamp:
Jul 9, 2024, 10:33:13 PM (2 months ago)
Author:
evignon
Message:

ajout des tendances de tke de la routine ATKE dans les sorties

Location:
LMDZ6/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/DefLists/field_def_lmdz.xml

    r5007 r5039  
    636636        <field id="tke_buoy" long_name="TKE Buoyancy term" unit="m2/s3" />
    637637        <field id="tke_shear" long_name="TKE Shear term" unit="m2/s3" />
     638        <field id="tke_trans" long_name="TKE Transport term" unit="m2/s3" />
    638639        <field id="tke_ter"    long_name="Max Turb. Kinetic Energy ter"    unit="m2/s2" />
    639640        <field id="tke_lic"    long_name="Max Turb. Kinetic Energy lic"    unit="m2/s2" />
  • LMDZ6/trunk/libf/phylmd/lmdz_atke_exchange_coeff.F90

    r4884 r5039  
    77subroutine atke_compute_km_kh(ngrid,nlay,dtime, &
    88                        wind_u,wind_v,temp,qvap,play,pinterf,cdrag_uv, &
    9                         tke,eps,Km_out,Kh_out)
     9                        tke,eps,tke_shear,tke_buoy,tke_trans,Km_out,Kh_out)
    1010
    1111!========================================================================
     
    7979
    8080REAL, DIMENSION(ngrid,nlay+1), INTENT(OUT)    :: eps      ! output: TKE dissipation rate at interface between layers (m2/s3)
     81REAL, DIMENSION(ngrid,nlay+1), INTENT(OUT)    :: tke_shear! output: TKE shear production rate (m2/s3)
     82REAL, DIMENSION(ngrid,nlay+1), INTENT(OUT)    :: tke_buoy ! output: TKE buoyancy production rate (m2/s3)
     83REAL, DIMENSION(ngrid,nlay+1), INTENT(OUT)    :: tke_trans! output: TKE transport (diffusion) term (m2/s3)
    8184REAL, DIMENSION(ngrid,nlay), INTENT(OUT)      :: Km_out   ! output: Exchange coefficient for momentum at interface between layers (m2/s)
    8285REAL, DIMENSION(ngrid,nlay), INTENT(OUT)      :: Kh_out   ! output: Exchange coefficient for heat flux at interface between layers (m2/s)
     
    261264                shear2(igrid,ilay) * (1. - Ri(igrid,ilay) / Prandtl(igrid,ilay))
    262265                eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay))
     266                tke_shear(igrid,ilay)=l_exchange(igrid,ilay)*Sm(igrid,ilay)*sqrt(tke(igrid,ilay))*shear2(igrid,ilay)
     267                tke_buoy(igrid,ilay)=-l_exchange(igrid,ilay)*Sm(igrid,ilay)*sqrt(tke(igrid,ilay))*shear2(igrid,ilay) &
     268                                    *(Ri(igrid,ilay) / Prandtl(igrid,ilay))
    263269            ENDDO
    264270        ENDDO
     
    278284            qq=max(0.,qq)
    279285            tke(igrid,ilay)=0.5*(qq**2)
    280             eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay))
     286            eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay))
     287            tke_shear(igrid,ilay)=l_exchange(igrid,ilay)*Sm(igrid,ilay)*sqrt(tke(igrid,ilay))*shear2(igrid,ilay)
     288            tke_buoy(igrid,ilay)=-l_exchange(igrid,ilay)*Sm(igrid,ilay)*sqrt(tke(igrid,ilay))*shear2(igrid,ilay) &
     289                                *(Ri(igrid,ilay) / Prandtl(igrid,ilay))
    281290            ENDDO
    282291        ENDDO
     
    293302            qq=(qq+l_exchange(igrid,ilay)*Sm(igrid,ilay)*dtime/sqrt(2.)      &
    294303                *shear2(igrid,ilay)*(1.-Ri(igrid,ilay)/Prandtl(igrid,ilay))) &
    295                 /(1.+qq*dtime/(cepsilon*l_exchange(igrid,ilay)*2.*sqrt(2.)))
     304                /(1.+qq*dtime/(cepsilon*l_exchange(igrid,ilay)*2.*sqrt(2.)))
     305            tke_shear(igrid,ilay)=l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay)
     306            tke_buoy(igrid,ilay)=-l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay) &
     307                                *(Ri(igrid,ilay) / Prandtl(igrid,ilay))
    296308            tke(igrid,ilay)=0.5*(qq**2)
    297309            eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay))
     
    308320            eps(igrid,ilay) = (tke(igrid,ilay)**(3./2))/(cepsilon*l_exchange(igrid,ilay))
    309321            qq=max(sqrt(2.*tke(igrid,ilay)),1.e-10)
     322            tke_shear(igrid,ilay)=l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay)
     323            tke_buoy(igrid,ilay)=-l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay) &
     324                                *(Ri(igrid,ilay) / Prandtl(igrid,ilay))
    310325            IF (Ri(igrid,ilay) .LT. 0.) THEN
    311326                netloss=qq/(2.*sqrt(2.)*cepsilon*l_exchange(igrid,ilay))
     
    327342            DO igrid=1,ngrid
    328343            qq=max(sqrt(2.*tke(igrid,ilay)),1.e-10)
     344            tke_shear(igrid,ilay)=l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay)
     345            tke_buoy(igrid,ilay)=-l_exchange(igrid,ilay)*Sm(igrid,ilay)*qq/sqrt(2.)*shear2(igrid,ilay) &
     346                                *(Ri(igrid,ilay) / Prandtl(igrid,ilay))
    329347            qq=(l_exchange(igrid,ilay)*Sm(igrid,ilay)/sqrt(2.)*shear2(igrid,ilay)*(1.-Ri(igrid,ilay)/Prandtl(igrid,ilay)) &
    330348                +qq*(1.+dtime*qq/(cepsilon*l_exchange(igrid,ilay)*2.*sqrt(2.)))) &
     
    349367    tke(igrid,nlay+1)=0.
    350368    eps(igrid,nlay+1)=0.
     369    tke_shear(igrid,nlay+1)=0.
     370    tke_buoy(igrid,nlay+1)=0.
    351371END DO
    352372
     
    359379    tke(igrid,1)=ctkes*(ustar**2)
    360380    eps(igrid,1)=0. ! arbitrary as TKE is not properly defined at the surface
     381    tke_shear(igrid,1)=0.
     382    tke_buoy(igrid,1)=0.
    361383END DO
    362384
     
    364386! vertical diffusion of TKE
    365387!==========================
     388tke_trans(:,:)=0.
    366389IF (atke_ok_vdiff) THEN
    367     CALL atke_vdiff_tke(ngrid,nlay,dtime,z_lay,z_interf,temp,play,l_exchange,Sm,tke)
     390    CALL atke_vdiff_tke(ngrid,nlay,dtime,z_lay,z_interf,temp,play,l_exchange,Sm,tke,tke_trans)
    368391ENDIF
    369392
     
    387410
    388411!===============================================================================================
    389 subroutine atke_vdiff_tke(ngrid,nlay,dtime,z_lay,z_interf,temp,play,l_exchange,Sm,tke)
     412subroutine atke_vdiff_tke(ngrid,nlay,dtime,z_lay,z_interf,temp,play,l_exchange,Sm,tke,tke_trans)
    390413
    391414! routine that computes the vertical diffusion of TKE by the turbulence
     
    408431
    409432REAL, DIMENSION(ngrid,nlay+1), INTENT(INOUT)  :: tke    ! turbulent kinetic energy at interface between layers
    410 
     433REAL, DIMENSION(ngrid,nlay+1), INTENT(INOUT)  :: tke_trans ! turbulent kinetic energy transport term (m2/s3)
    411434
    412435
     
    480503! update TKE
    481504tke(:,:)=tke(:,:)+dtke(:,:)
     505tke_trans(:,:)=dtke(:,:)/dtime
    482506
    483507
  • LMDZ6/trunk/libf/phylmd/lmdz_call_atke.F90

    r4881 r5039  
    88contains
    99
    10 subroutine call_atke(dtime,ngrid,nlay,cdrag_uv,cdrag_t,u_surf,v_surf,temp_surf, &
     10subroutine call_atke(dtime,ngrid,nlay,nsrf,ni,cdrag_uv,cdrag_t,u_surf,v_surf,temp_surf, &
    1111                        wind_u,wind_v,temp,qvap,play,pinterf, &
    1212                        tke,eps,Km_out,Kh_out)
     
    1616
    1717USE lmdz_atke_turbulence_ini, ONLY : iflag_num_atke, rg, rd
     18USE phys_local_var_mod, ONLY: tke_shear, tke_buoy, tke_trans
    1819
    1920implicit none
     
    2627INTEGER, INTENT(IN) :: ngrid ! number of horizontal index (flat grid)
    2728INTEGER, INTENT(IN) :: nlay ! number of vertical index 
     29INTEGER, INTENT(IN) :: nsrf ! surface tile index
     30INTEGER, DIMENSION(ngrid), INTENT(IN) :: ni ! array of indices to move from knon to klon arrays
    2831
    2932
     
    5053
    5154
     55REAL, DIMENSION(ngrid,nlay+1) :: tke_shear_term,tke_buoy_term,tke_trans_term
    5256REAL, DIMENSION(ngrid,nlay) :: wind_u_predict, wind_v_predict
    5357REAL, DIMENSION(ngrid) ::  wind1
    54 INTEGER i
     58INTEGER i,j,k
    5559
    5660
    5761call atke_compute_km_kh(ngrid,nlay,dtime,&
    5862                        wind_u,wind_v,temp,qvap,play,pinterf,cdrag_uv,&
    59                         tke,eps,Km_out,Kh_out)
     63                        tke,eps,tke_shear_term,tke_buoy_term,tke_trans_term,Km_out,Kh_out)
    6064
    6165
     
    7680   call atke_compute_km_kh(ngrid,nlay,dtime,&
    7781                        wind_u_predict,wind_v_predict,temp,qvap,play,pinterf,cdrag_uv, &
    78                         tke,eps,Km_out,Kh_out)
     82                        tke,eps,tke_shear_term,tke_buoy_term,tke_trans_term,Km_out,Kh_out)
    7983
    8084end if
    8185
    8286
     87! Diagnostics of tke loss/source terms
    8388
     89 DO k=1,nlay+1
     90    DO i=1,ngrid
     91       j=ni(i)
     92       tke_shear(j,k,nsrf)=tke_shear_term(i,k)
     93       tke_buoy(j,k,nsrf)=tke_buoy_term(i,k)
     94       tke_trans(j,k,nsrf)=tke_trans_term(i,k)
     95    ENDDO
     96 ENDDO
    8497
    8598
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r5022 r5039  
    19961996
    19971997        IF (iflag_pbl>=50) THEN
    1998         CALL call_atke(dtime,knon,klev,ycdragm(1:knon), ycdragh(1:knon),yus0(1:knon),yvs0(1:knon),yts(1:knon), &
     1998        CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm(1:knon), ycdragh(1:knon),yus0(1:knon),yvs0(1:knon),yts(1:knon), &
    19991999                  yu(1:knon,:),yv(1:knon,:),yt(1:knon,:),yq(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),       &
    20002000                  ytke(1:knon,:),yeps(1:knon,:), ycoefm(1:knon,:), ycoefh(1:knon,:))
     
    20412041        IF (iflag_pbl>=50) THEN
    20422042     
    2043         CALL call_atke(dtime,knon,klev,ycdragm_x(1:knon),ycdragh_x(1:knon),yus0(1:knon),yvs0(1:knon),yts_x(1:knon),    &
     2043        CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm_x(1:knon),ycdragh_x(1:knon),yus0(1:knon),yvs0(1:knon),yts_x(1:knon),    &
    20442044                       yu_x(1:knon,:),yv_x(1:knon,:),yt_x(1:knon,:),yq_x(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),  &
    20452045                       ytke_x(1:knon,:),yeps_x(1:knon,:),ycoefm_x(1:knon,:), ycoefh_x(1:knon,:))
     
    20812081        IF (iflag_pbl>=50) THEN
    20822082       
    2083         CALL call_atke(dtime,knon,klev,ycdragm_w(1:knon),ycdragh_w(1:knon),yus0(1:knon),yvs0(1:knon),yts_w(1:knon), &
     2083        CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm_w(1:knon),ycdragh_w(1:knon),yus0(1:knon),yvs0(1:knon),yts_w(1:knon), &
    20842084                yu_w(1:knon,:),yv_w(1:knon,:),yt_w(1:knon,:),yq_w(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:),      &
    20852085                ytke_w(1:knon,:),yeps_w(1:knon,:),ycoefm_w(1:knon,:),ycoefh_w(1:knon,:))
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r5007 r5039  
    2626      REAL, SAVE, ALLOCATABLE :: pbl_eps(:,:,:)
    2727      !$OMP THREADPRIVATE(pbl_eps)
     28      REAL, SAVE, ALLOCATABLE :: tke_shear(:,:,:), tke_buoy(:,:,:), tke_trans(:,:,:)
     29      !$OMP THREADPRIVATE(tke_shear(:,:,:),tke_buoy(:,:,:),tke_trans(:,:,:))
    2830      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
    2931      !$OMP THREADPRIVATE(tr_seri)
     
    694696      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
    695697      ALLOCATE(pbl_eps(klon,klev+1,nbsrf+1))
     698      ALLOCATE(tke_shear(klon,klev+1,nbsrf), tke_buoy(klon,klev+1,nbsrf), tke_trans(klon,klev+1,nbsrf))
    696699      pbl_eps(:,:,:)=0.
     700      tke_shear(:,:,:)=0.; tke_buoy(:,:,:)=0.; tke_trans(:,:,:)=0.
    697701      l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
    698702      ALLOCATE(rhcl(klon,klev))
     
    10551059      DEALLOCATE(u_seri,v_seri)
    10561060      DEALLOCATE(l_mixmin,l_mix,wprime)
     1061      DEALLOCATE(tke_shear,tke_buoy,tke_trans)
    10571062      DEALLOCATE(pbl_eps)
    10581063      DEALLOCATE(rhcl)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r5007 r5039  
    11141114  TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    11151115    'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 10) /))
     1116  TYPE(ctrl_out), SAVE :: o_tke_shear = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1117    'tke_shear ', 'TKE shear term', 'm2/s3', (/ ('', i=1, 10) /)) 
     1118  TYPE(ctrl_out), SAVE :: o_tke_buoy = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1119    'tke_buoy ', 'TKE buoyancy term', 'm2/s3', (/ ('', i=1, 10) /))
     1120  TYPE(ctrl_out), SAVE :: o_tke_trans = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1121    'tke_trans ', 'TKE transport term', 'm2/s3', (/ ('', i=1, 10) /))
    11161122  TYPE(ctrl_out), SAVE :: o_tke_dissip = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    1117     'tke_dissip ', 'TKE DISSIPATION', 'm2/s3', (/ ('', i=1, 10) /))   
     1123    'tke_dissip ', 'TKE dissipation term', 'm2/s3', (/ ('', i=1, 10) /))
     1124
    11181125  TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    11191126    'tke_max', 'TKE max', 'm2/s2',                                  &
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r5022 r5039  
    146146         o_dqsphy, o_dqsphy2d, o_dqbsphy, o_dqbsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
    147147         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, o_tke_dissip, &
    148          o_tke_max, o_kz, o_kz_max, o_clwcon, &
     148         o_tke_max, o_kz, o_kz_max, o_clwcon, o_tke_shear, o_tke_buoy, o_tke_trans,  &
    149149         o_dtdyn, o_dqdyn, o_dqdyn2d, o_dqldyn, o_dqldyn2d, &
    150150         o_dqsdyn, o_dqsdyn2d, o_dqbsdyn, o_dqbsdyn2d, o_dudyn, o_dvdyn, &
     
    314314         zn2mout, t2m_min_mon, t2m_max_mon, evap, &
    315315         snowerosion, zxustartlic, zxrhoslic, zxqsaltlic, &
    316          l_mixmin,l_mix, pbl_eps, &
     316         l_mixmin,l_mix, pbl_eps, tke_shear, tke_buoy, tke_trans, &
    317317         zu10m, zv10m, zq2m, zustar, zxqsurf, &
    318318         rain_lsc, rain_num, snow_lsc, bils, sens, fder, &
     
    13131313          ENDIF
    13141314         
    1315           CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
     1315          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
     1316
     1317          zx_tmp_fi3d=0.
     1318          IF (vars_defined) THEN
     1319             DO nsrf=1,nbsrf
     1320                DO k=1,klev
     1321                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
     1322                        +pctsrf(:,nsrf)*tke_shear(:,k,nsrf)
     1323                ENDDO
     1324             ENDDO
     1325          ENDIF
     1326
     1327          CALL histwrite_phy(o_tke_shear, zx_tmp_fi3d)
     1328
     1329          zx_tmp_fi3d=0.
     1330          IF (vars_defined) THEN
     1331             DO nsrf=1,nbsrf
     1332                DO k=1,klev
     1333                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
     1334                        +pctsrf(:,nsrf)*tke_buoy(:,k,nsrf)
     1335                ENDDO
     1336             ENDDO
     1337          ENDIF
     1338
     1339          CALL histwrite_phy(o_tke_buoy, zx_tmp_fi3d)
     1340
     1341
     1342          zx_tmp_fi3d=0.
     1343          IF (vars_defined) THEN
     1344             DO nsrf=1,nbsrf
     1345                DO k=1,klev
     1346                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
     1347                        +pctsrf(:,nsrf)*tke_trans(:,k,nsrf)
     1348                ENDDO
     1349             ENDDO
     1350          ENDIF
     1351
     1352          CALL histwrite_phy(o_tke_trans, zx_tmp_fi3d)
     1353
    13161354       ENDIF
    13171355
  • LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90

    r5023 r5039  
    2828      REAL, SAVE, ALLOCATABLE :: pbl_eps(:,:,:)
    2929      !$OMP THREADPRIVATE(pbl_eps)
     30      REAL, SAVE, ALLOCATABLE :: tke_shear(:,:,:), tke_buoy(:,:,:), tke_trans(:,:,:)
     31      !$OMP THREADPRIVATE(tke_shear(:,:,:),tke_buoy(:,:,:),tke_trans(:,:,:))
    3032      REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:)
    3133      !$OMP THREADPRIVATE(tr_seri)
     
    815817      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
    816818      ALLOCATE(pbl_eps(klon,klev+1,nbsrf+1))
     819      ALLOCATE(tke_shear(klon,klev+1,nbsrf), tke_buoy(klon,klev+1,nbsrf), tke_trans(klon,klev+1,nbsrf))
    817820      pbl_eps(:,:,:)=0.
     821      tke_shear(:,:,:)=0.; tke_buoy(:,:,:)=0.; tke_trans(:,:,:)=0.
    818822      l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
    819823      ALLOCATE(rhcl(klon,klev))
     
    12531257      DEALLOCATE(u_seri,v_seri)
    12541258      DEALLOCATE(l_mixmin,l_mix,wprime)
     1259      DEALLOCATE(tke_shear,tke_buoy,tke_trans)
    12551260      DEALLOCATE(pbl_eps)
    12561261      DEALLOCATE(rhcl)
  • LMDZ6/trunk/libf/phylmdiso/phys_output_ctrlout_mod.F90

    r5023 r5039  
    11141114  TYPE(ctrl_out), SAVE :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    11151115    'tke ', 'TKE', 'm2/s2', (/ ('', i=1, 10) /))
     1116  TYPE(ctrl_out), SAVE :: o_tke_shear = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1117    'tke_shear ', 'TKE shear term', 'm2/s3', (/ ('', i=1, 10) /)) 
     1118  TYPE(ctrl_out), SAVE :: o_tke_buoy = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1119    'tke_buoy ', 'TKE buoyancy term', 'm2/s3', (/ ('', i=1, 10) /))
     1120  TYPE(ctrl_out), SAVE :: o_tke_trans = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1121    'tke_trans ', 'TKE transport term', 'm2/s3', (/ ('', i=1, 10) /))
    11161122  TYPE(ctrl_out), SAVE :: o_tke_dissip = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    1117     'tke_dissip ', 'TKE DISSIPATION', 'm2/s3', (/ ('', i=1, 10) /))   
     1123    'tke_dissip ', 'TKE dissipation term', 'm2/s3', (/ ('', i=1, 10) /))
     1124
    11181125  TYPE(ctrl_out), SAVE :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    11191126    'tke_max', 'TKE max', 'm2/s2',                                  &
Note: See TracChangeset for help on using the changeset viewer.