Ignore:
Timestamp:
02/14/13 18:26:54 (11 years ago)
Author:
dubos
Message:

Time-accumulation of mass fluxes active

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/caldyn_gcm.f90

    r133 r134  
    3535       STOP 
    3636    END SELECT 
    37      IF (is_mpi_root) PRINT *, 'caldyn_conserv=',def 
     37    IF (is_mpi_root) PRINT *, 'caldyn_conserv=',def 
    3838 
    3939    def='direct' 
     
    8484  END SUBROUTINE allocate_caldyn 
    8585    
    86   SUBROUTINE caldyn(write_out,f_phis, f_ps, f_theta_rhodz, f_u, f_q, f_dps, f_dtheta_rhodz, f_du) 
     86  SUBROUTINE caldyn(write_out,f_phis, f_ps, f_theta_rhodz, f_u, f_q, & 
     87       f_hflux, f_wflux, f_dps, f_dtheta_rhodz, f_du) 
    8788    USE icosa 
    8889    USE vorticity_mod 
     
    9798    TYPE(t_field),POINTER :: f_u(:) 
    9899    TYPE(t_field),POINTER :: f_q(:) 
     100    TYPE(t_field),POINTER :: f_hflux(:), f_wflux(:) 
    99101    TYPE(t_field),POINTER :: f_dps(:) 
    100102    TYPE(t_field),POINTER :: f_dtheta_rhodz(:) 
     
    103105    REAL(rstd),POINTER :: phis(:), ps(:), dps(:) 
    104106    REAL(rstd),POINTER :: theta_rhodz(:,:), dtheta_rhodz(:,:) 
    105     REAL(rstd),POINTER :: u(:,:), du(:,:) 
     107    REAL(rstd),POINTER :: u(:,:), du(:,:), hflux(:,:), wflux(:,:) 
    106108    REAL(rstd),POINTER :: p(:,:), rhodz(:,:), qu(:,:) 
    107109    INTEGER :: ind,ij 
     
    133135          CALL swap_geometry(ind) 
    134136          phis=f_phis(ind) 
     137          hflux=f_hflux(ind) 
     138          wflux=f_wflux(ind) 
    135139          ps=f_ps(ind) 
    136140          dps=f_dps(ind) 
     
    144148          out_u=f_out_u(ind)  
    145149          !$OMP PARALLEL DEFAULT(SHARED) 
    146           CALL compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, dps, dtheta_rhodz, du) 
     150          CALL compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, & 
     151               hflux, wflux, dps, dtheta_rhodz, du) 
    147152          !$OMP END PARALLEL 
    148153       ENDDO        
     
    155160          ps=f_ps(ind) 
    156161          dps=f_dps(ind) 
     162          hflux=f_hflux(ind) 
     163          wflux=f_wflux(ind) 
    157164          theta_rhodz=f_theta_rhodz(ind) 
    158165          dtheta_rhodz=f_dtheta_rhodz(ind) 
     
    165172          !$OMP PARALLEL DEFAULT(SHARED) 
    166173          CALL compute_pvort(ps, u, p,rhodz,qu) 
    167           CALL compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, dps, dtheta_rhodz, du) 
     174          CALL compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, & 
     175               hflux, wflux, dps, dtheta_rhodz, du) 
    168176          !$OMP END PARALLEL 
    169177       ENDDO 
     
    276284  END SUBROUTINE compute_pvort 
    277285   
    278   SUBROUTINE compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, dps, dtheta_rhodz, du) 
     286  SUBROUTINE compute_caldyn(ps, u, p,rhodz,qu, phis, theta_rhodz, hflux, wflux, dps, dtheta_rhodz, du) 
    279287  USE icosa 
    280288  USE disvert_mod 
     
    289297    REAL(rstd),INTENT(IN)  :: qu(iim*3*jjm,llm) 
    290298 
    291     REAL(rstd),INTENT(OUT) :: du(iim*3*jjm,llm) 
     299    REAL(rstd),INTENT(OUT) :: du(iim*3*jjm,llm), hflux(iim*3*jjm,llm) 
    292300    REAL(rstd),INTENT(OUT) :: dtheta_rhodz(iim*jjm,llm) 
    293301    REAL(rstd),INTENT(OUT) :: dps(iim*jjm) 
     302    REAL(rstd),INTENT(OUT) :: wflux(iim*jjm,llm+1) ! vertical mass flux 
    294303     
    295304    INTEGER :: i,j,ij,l 
     
    301310    REAL(rstd),ALLOCATABLE,SAVE :: pk(:,:), pks(:) ! Exner function 
    302311    REAL(rstd),ALLOCATABLE,SAVE :: alpha(:,:), beta(:,:) 
    303     REAL(rstd),ALLOCATABLE,SAVE :: phi(:,:)              ! geopotential 
    304     REAL(rstd),ALLOCATABLE,SAVE :: Fe(:,:), Ftheta(:,:)  ! mass flux, theta flux 
     312    REAL(rstd),ALLOCATABLE,SAVE :: phi(:,:)    ! geopotential 
     313    REAL(rstd),ALLOCATABLE,SAVE :: Ftheta(:,:) ! theta flux 
    305314    REAL(rstd),ALLOCATABLE,SAVE :: convm(:,:)  ! mass flux convergence 
    306     REAL(rstd),ALLOCATABLE,SAVE :: w(:,:)      ! vertical mass flux 
    307315    REAL(rstd),ALLOCATABLE,SAVE :: berni(:,:)  ! Bernouilli function 
    308316     
     
    319327    ALLOCATE(beta(iim*jjm,llm)) 
    320328    ALLOCATE(phi(iim*jjm,llm))      ! geopotential 
    321     ALLOCATE(Fe(3*iim*jjm,llm))     ! mass flux    
    322329    ALLOCATE(Ftheta(3*iim*jjm,llm)) ! theta flux    
    323330    ALLOCATE(convm(iim*jjm,llm))    ! mass flux convergence 
    324     ALLOCATE(w(iim*jjm,llm))        ! vertical velocity       
    325331    ALLOCATE(berni(iim*jjm,llm))    ! bernouilli term 
    326332 
     
    342348      DO i=ii_begin-1,ii_end+1 
    343349        ij=(j-1)*iim+i 
    344         Fe(ij+u_right,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_right,l))*u(ij+u_right,l)*le(ij+u_right) 
    345         Fe(ij+u_lup,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_lup,l))*u(ij+u_lup,l)*le(ij+u_lup) 
    346         Fe(ij+u_ldown,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_ldown,l))*u(ij+u_ldown,l)*le(ij+u_ldown) 
    347  
    348         Ftheta(ij+u_right,l)=0.5*(theta(ij,l)+theta(ij+t_right,l))*Fe(ij+u_right,l) 
    349         Ftheta(ij+u_lup,l)=0.5*(theta(ij,l)+theta(ij+t_lup,l))*Fe(ij+u_lup,l) 
    350         Ftheta(ij+u_ldown,l)=0.5*(theta(ij,l)+theta(ij+t_ldown,l))*Fe(ij+u_ldown,l) 
     350        hflux(ij+u_right,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_right,l))*u(ij+u_right,l)*le(ij+u_right) 
     351        hflux(ij+u_lup,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_lup,l))*u(ij+u_lup,l)*le(ij+u_lup) 
     352        hflux(ij+u_ldown,l)=0.5*(rhodz(ij,l)+rhodz(ij+t_ldown,l))*u(ij+u_ldown,l)*le(ij+u_ldown) 
     353 
     354        Ftheta(ij+u_right,l)=0.5*(theta(ij,l)+theta(ij+t_right,l))*hflux(ij+u_right,l) 
     355        Ftheta(ij+u_lup,l)=0.5*(theta(ij,l)+theta(ij+t_lup,l))*hflux(ij+u_lup,l) 
     356        Ftheta(ij+u_ldown,l)=0.5*(theta(ij,l)+theta(ij+t_ldown,l))*hflux(ij+u_ldown,l) 
    351357      ENDDO 
    352358    ENDDO 
     
    358364        ij=(j-1)*iim+i   
    359365        ! convm = +div(mass flux), sign convention as in Ringler et al. 2012, eq. 21 
    360         convm(ij,l)= 1./Ai(ij)*(ne(ij,right)*Fe(ij+u_right,l)   +  & 
    361                                 ne(ij,rup)*Fe(ij+u_rup,l)       +  &   
    362                                 ne(ij,lup)*Fe(ij+u_lup,l)       +  &   
    363                                 ne(ij,left)*Fe(ij+u_left,l)     +  &   
    364                                 ne(ij,ldown)*Fe(ij+u_ldown,l)   +  &   
    365                                 ne(ij,rdown)*Fe(ij+u_rdown,l))     
     366        convm(ij,l)= 1./Ai(ij)*(ne(ij,right)*hflux(ij+u_right,l)   +  & 
     367                                ne(ij,rup)*hflux(ij+u_rup,l)       +  &   
     368                                ne(ij,lup)*hflux(ij+u_lup,l)       +  &   
     369                                ne(ij,left)*hflux(ij+u_left,l)     +  &   
     370                                ne(ij,ldown)*hflux(ij+u_ldown,l)   +  &   
     371                                ne(ij,rdown)*hflux(ij+u_rdown,l))     
    366372 
    367373        ! signe ? attention d (rho theta dz) 
     
    396402        ! w = int(z,ztop,div(flux)dz) + B(eta)dps/dt 
    397403        ! => w>0 for upward transport 
    398         w( ij, l+1 ) = convm( ij, l+1 ) - bp(l+1) * convm( ij, 1 ) 
     404        wflux( ij, l+1 ) = convm( ij, l+1 ) - bp(l+1) * convm( ij, 1 ) 
    399405      ENDDO 
    400406    ENDDO 
     
    406412    DO i=ii_begin,ii_end 
    407413      ij=(j-1)*iim+i 
    408       w(ij,1)  = 0. 
     414      wflux(ij,1)  = 0. 
    409415      ! dps/dt = -int(div flux)dz 
    410416      dps(ij)=-convm(ij,1) * g  
     
    423429                ij=(j-1)*iim+i 
    424430 
    425                 uu = wee(ij+u_right,1,1)*Fe(ij+u_rup,l)*(qu(ij+u_right,l)+qu(ij+u_rup,l))+                             & 
    426                      wee(ij+u_right,2,1)*Fe(ij+u_lup,l)*(qu(ij+u_right,l)+qu(ij+u_lup,l))+                             & 
    427                      wee(ij+u_right,3,1)*Fe(ij+u_left,l)*(qu(ij+u_right,l)+qu(ij+u_left,l))+                           & 
    428                      wee(ij+u_right,4,1)*Fe(ij+u_ldown,l)*(qu(ij+u_right,l)+qu(ij+u_ldown,l))+                         & 
    429                      wee(ij+u_right,5,1)*Fe(ij+u_rdown,l)*(qu(ij+u_right,l)+qu(ij+u_rdown,l))+                         &  
    430                      wee(ij+u_right,1,2)*Fe(ij+t_right+u_ldown,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_ldown,l))+         & 
    431                      wee(ij+u_right,2,2)*Fe(ij+t_right+u_rdown,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_rdown,l))+         & 
    432                      wee(ij+u_right,3,2)*Fe(ij+t_right+u_right,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_right,l))+         & 
    433                      wee(ij+u_right,4,2)*Fe(ij+t_right+u_rup,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_rup,l))+             & 
    434                      wee(ij+u_right,5,2)*Fe(ij+t_right+u_lup,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_lup,l)) 
     431                uu = wee(ij+u_right,1,1)*hflux(ij+u_rup,l)*(qu(ij+u_right,l)+qu(ij+u_rup,l))+                             & 
     432                     wee(ij+u_right,2,1)*hflux(ij+u_lup,l)*(qu(ij+u_right,l)+qu(ij+u_lup,l))+                             & 
     433                     wee(ij+u_right,3,1)*hflux(ij+u_left,l)*(qu(ij+u_right,l)+qu(ij+u_left,l))+                           & 
     434                     wee(ij+u_right,4,1)*hflux(ij+u_ldown,l)*(qu(ij+u_right,l)+qu(ij+u_ldown,l))+                         & 
     435                     wee(ij+u_right,5,1)*hflux(ij+u_rdown,l)*(qu(ij+u_right,l)+qu(ij+u_rdown,l))+                         &  
     436                     wee(ij+u_right,1,2)*hflux(ij+t_right+u_ldown,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_ldown,l))+         & 
     437                     wee(ij+u_right,2,2)*hflux(ij+t_right+u_rdown,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_rdown,l))+         & 
     438                     wee(ij+u_right,3,2)*hflux(ij+t_right+u_right,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_right,l))+         & 
     439                     wee(ij+u_right,4,2)*hflux(ij+t_right+u_rup,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_rup,l))+             & 
     440                     wee(ij+u_right,5,2)*hflux(ij+t_right+u_lup,l)*(qu(ij+u_right,l)+qu(ij+t_right+u_lup,l)) 
    435441                du(ij+u_right,l) = .5*uu/de(ij+u_right) 
    436442                 
    437                 uu = wee(ij+u_lup,1,1)*Fe(ij+u_left,l)*(qu(ij+u_lup,l)+qu(ij+u_left,l)) +                        & 
    438                      wee(ij+u_lup,2,1)*Fe(ij+u_ldown,l)*(qu(ij+u_lup,l)+qu(ij+u_ldown,l)) +                      & 
    439                      wee(ij+u_lup,3,1)*Fe(ij+u_rdown,l)*(qu(ij+u_lup,l)+qu(ij+u_rdown,l)) +                      & 
    440                      wee(ij+u_lup,4,1)*Fe(ij+u_right,l)*(qu(ij+u_lup,l)+qu(ij+u_right,l)) +                      & 
    441                      wee(ij+u_lup,5,1)*Fe(ij+u_rup,l)*(qu(ij+u_lup,l)+qu(ij+u_rup,l)) +                          &  
    442                      wee(ij+u_lup,1,2)*Fe(ij+t_lup+u_right,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_right,l)) +          & 
    443                      wee(ij+u_lup,2,2)*Fe(ij+t_lup+u_rup,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_rup,l)) +              & 
    444                      wee(ij+u_lup,3,2)*Fe(ij+t_lup+u_lup,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_lup,l)) +              & 
    445                      wee(ij+u_lup,4,2)*Fe(ij+t_lup+u_left,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_left,l)) +            & 
    446                      wee(ij+u_lup,5,2)*Fe(ij+t_lup+u_ldown,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_ldown,l)) 
     443                uu = wee(ij+u_lup,1,1)*hflux(ij+u_left,l)*(qu(ij+u_lup,l)+qu(ij+u_left,l)) +                        & 
     444                     wee(ij+u_lup,2,1)*hflux(ij+u_ldown,l)*(qu(ij+u_lup,l)+qu(ij+u_ldown,l)) +                      & 
     445                     wee(ij+u_lup,3,1)*hflux(ij+u_rdown,l)*(qu(ij+u_lup,l)+qu(ij+u_rdown,l)) +                      & 
     446                     wee(ij+u_lup,4,1)*hflux(ij+u_right,l)*(qu(ij+u_lup,l)+qu(ij+u_right,l)) +                      & 
     447                     wee(ij+u_lup,5,1)*hflux(ij+u_rup,l)*(qu(ij+u_lup,l)+qu(ij+u_rup,l)) +                          &  
     448                     wee(ij+u_lup,1,2)*hflux(ij+t_lup+u_right,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_right,l)) +          & 
     449                     wee(ij+u_lup,2,2)*hflux(ij+t_lup+u_rup,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_rup,l)) +              & 
     450                     wee(ij+u_lup,3,2)*hflux(ij+t_lup+u_lup,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_lup,l)) +              & 
     451                     wee(ij+u_lup,4,2)*hflux(ij+t_lup+u_left,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_left,l)) +            & 
     452                     wee(ij+u_lup,5,2)*hflux(ij+t_lup+u_ldown,l)*(qu(ij+u_lup,l)+qu(ij+t_lup+u_ldown,l)) 
    447453                du(ij+u_lup,l) = .5*uu/de(ij+u_lup) 
    448454 
    449455                 
    450                 uu = wee(ij+u_ldown,1,1)*Fe(ij+u_rdown,l)*(qu(ij+u_ldown,l)+qu(ij+u_rdown,l)) +                      & 
    451                      wee(ij+u_ldown,2,1)*Fe(ij+u_right,l)*(qu(ij+u_ldown,l)+qu(ij+u_right,l)) +                      & 
    452                      wee(ij+u_ldown,3,1)*Fe(ij+u_rup,l)*(qu(ij+u_ldown,l)+qu(ij+u_rup,l)) +                          & 
    453                      wee(ij+u_ldown,4,1)*Fe(ij+u_lup,l)*(qu(ij+u_ldown,l)+qu(ij+u_lup,l)) +                          & 
    454                      wee(ij+u_ldown,5,1)*Fe(ij+u_left,l)*(qu(ij+u_ldown,l)+qu(ij+u_left,l)) +                        &  
    455                      wee(ij+u_ldown,1,2)*Fe(ij+t_ldown+u_lup,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_lup,l)) +          & 
    456                      wee(ij+u_ldown,2,2)*Fe(ij+t_ldown+u_left,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_left,l)) +        & 
    457                      wee(ij+u_ldown,3,2)*Fe(ij+t_ldown+u_ldown,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_ldown,l)) +      & 
    458                      wee(ij+u_ldown,4,2)*Fe(ij+t_ldown+u_rdown,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_rdown,l)) +      & 
    459                      wee(ij+u_ldown,5,2)*Fe(ij+t_ldown+u_right,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_right,l)) 
     456                uu = wee(ij+u_ldown,1,1)*hflux(ij+u_rdown,l)*(qu(ij+u_ldown,l)+qu(ij+u_rdown,l)) +                      & 
     457                     wee(ij+u_ldown,2,1)*hflux(ij+u_right,l)*(qu(ij+u_ldown,l)+qu(ij+u_right,l)) +                      & 
     458                     wee(ij+u_ldown,3,1)*hflux(ij+u_rup,l)*(qu(ij+u_ldown,l)+qu(ij+u_rup,l)) +                          & 
     459                     wee(ij+u_ldown,4,1)*hflux(ij+u_lup,l)*(qu(ij+u_ldown,l)+qu(ij+u_lup,l)) +                          & 
     460                     wee(ij+u_ldown,5,1)*hflux(ij+u_left,l)*(qu(ij+u_ldown,l)+qu(ij+u_left,l)) +                        &  
     461                     wee(ij+u_ldown,1,2)*hflux(ij+t_ldown+u_lup,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_lup,l)) +          & 
     462                     wee(ij+u_ldown,2,2)*hflux(ij+t_ldown+u_left,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_left,l)) +        & 
     463                     wee(ij+u_ldown,3,2)*hflux(ij+t_ldown+u_ldown,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_ldown,l)) +      & 
     464                     wee(ij+u_ldown,4,2)*hflux(ij+t_ldown+u_rdown,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_rdown,l)) +      & 
     465                     wee(ij+u_ldown,5,2)*hflux(ij+t_ldown+u_right,l)*(qu(ij+u_ldown,l)+qu(ij+t_ldown+u_right,l)) 
    460466                du(ij+u_ldown,l) = .5*uu/de(ij+u_ldown) 
    461467                 
     
    472478                ij=(j-1)*iim+i 
    473479 
    474                 uu = wee(ij+u_right,1,1)*Fe(ij+u_rup,l)+                           & 
    475                      wee(ij+u_right,2,1)*Fe(ij+u_lup,l)+                           & 
    476                      wee(ij+u_right,3,1)*Fe(ij+u_left,l)+                          & 
    477                      wee(ij+u_right,4,1)*Fe(ij+u_ldown,l)+                         & 
    478                      wee(ij+u_right,5,1)*Fe(ij+u_rdown,l)+                         &  
    479                      wee(ij+u_right,1,2)*Fe(ij+t_right+u_ldown,l)+                 & 
    480                      wee(ij+u_right,2,2)*Fe(ij+t_right+u_rdown,l)+                 & 
    481                      wee(ij+u_right,3,2)*Fe(ij+t_right+u_right,l)+                 & 
    482                      wee(ij+u_right,4,2)*Fe(ij+t_right+u_rup,l)+                   & 
    483                      wee(ij+u_right,5,2)*Fe(ij+t_right+u_lup,l) 
     480                uu = wee(ij+u_right,1,1)*hflux(ij+u_rup,l)+                           & 
     481                     wee(ij+u_right,2,1)*hflux(ij+u_lup,l)+                           & 
     482                     wee(ij+u_right,3,1)*hflux(ij+u_left,l)+                          & 
     483                     wee(ij+u_right,4,1)*hflux(ij+u_ldown,l)+                         & 
     484                     wee(ij+u_right,5,1)*hflux(ij+u_rdown,l)+                         &  
     485                     wee(ij+u_right,1,2)*hflux(ij+t_right+u_ldown,l)+                 & 
     486                     wee(ij+u_right,2,2)*hflux(ij+t_right+u_rdown,l)+                 & 
     487                     wee(ij+u_right,3,2)*hflux(ij+t_right+u_right,l)+                 & 
     488                     wee(ij+u_right,4,2)*hflux(ij+t_right+u_rup,l)+                   & 
     489                     wee(ij+u_right,5,2)*hflux(ij+t_right+u_lup,l) 
    484490                du(ij+u_right,l) = qu(ij+u_right,l)*uu/de(ij+u_right) 
    485491                 
    486492                 
    487                 uu = wee(ij+u_lup,1,1)*Fe(ij+u_left,l)+                        & 
    488                      wee(ij+u_lup,2,1)*Fe(ij+u_ldown,l)+                       & 
    489                      wee(ij+u_lup,3,1)*Fe(ij+u_rdown,l)+                       & 
    490                      wee(ij+u_lup,4,1)*Fe(ij+u_right,l)+                       & 
    491                      wee(ij+u_lup,5,1)*Fe(ij+u_rup,l)+                         &  
    492                      wee(ij+u_lup,1,2)*Fe(ij+t_lup+u_right,l)+                 & 
    493                      wee(ij+u_lup,2,2)*Fe(ij+t_lup+u_rup,l)+                   & 
    494                      wee(ij+u_lup,3,2)*Fe(ij+t_lup+u_lup,l)+                   & 
    495                      wee(ij+u_lup,4,2)*Fe(ij+t_lup+u_left,l)+                  & 
    496                      wee(ij+u_lup,5,2)*Fe(ij+t_lup+u_ldown,l) 
     493                uu = wee(ij+u_lup,1,1)*hflux(ij+u_left,l)+                        & 
     494                     wee(ij+u_lup,2,1)*hflux(ij+u_ldown,l)+                       & 
     495                     wee(ij+u_lup,3,1)*hflux(ij+u_rdown,l)+                       & 
     496                     wee(ij+u_lup,4,1)*hflux(ij+u_right,l)+                       & 
     497                     wee(ij+u_lup,5,1)*hflux(ij+u_rup,l)+                         &  
     498                     wee(ij+u_lup,1,2)*hflux(ij+t_lup+u_right,l)+                 & 
     499                     wee(ij+u_lup,2,2)*hflux(ij+t_lup+u_rup,l)+                   & 
     500                     wee(ij+u_lup,3,2)*hflux(ij+t_lup+u_lup,l)+                   & 
     501                     wee(ij+u_lup,4,2)*hflux(ij+t_lup+u_left,l)+                  & 
     502                     wee(ij+u_lup,5,2)*hflux(ij+t_lup+u_ldown,l) 
    497503                du(ij+u_lup,l) = qu(ij+u_lup,l)*uu/de(ij+u_lup) 
    498504 
    499                 uu = wee(ij+u_ldown,1,1)*Fe(ij+u_rdown,l)+                      & 
    500                      wee(ij+u_ldown,2,1)*Fe(ij+u_right,l)+                      & 
    501                      wee(ij+u_ldown,3,1)*Fe(ij+u_rup,l)+                        & 
    502                      wee(ij+u_ldown,4,1)*Fe(ij+u_lup,l)+                        & 
    503                      wee(ij+u_ldown,5,1)*Fe(ij+u_left,l)+                       &  
    504                      wee(ij+u_ldown,1,2)*Fe(ij+t_ldown+u_lup,l)+                & 
    505                      wee(ij+u_ldown,2,2)*Fe(ij+t_ldown+u_left,l)+               & 
    506                      wee(ij+u_ldown,3,2)*Fe(ij+t_ldown+u_ldown,l)+              & 
    507                      wee(ij+u_ldown,4,2)*Fe(ij+t_ldown+u_rdown,l)+              & 
    508                      wee(ij+u_ldown,5,2)*Fe(ij+t_ldown+u_right,l) 
     505                uu = wee(ij+u_ldown,1,1)*hflux(ij+u_rdown,l)+                      & 
     506                     wee(ij+u_ldown,2,1)*hflux(ij+u_right,l)+                      & 
     507                     wee(ij+u_ldown,3,1)*hflux(ij+u_rup,l)+                        & 
     508                     wee(ij+u_ldown,4,1)*hflux(ij+u_lup,l)+                        & 
     509                     wee(ij+u_ldown,5,1)*hflux(ij+u_left,l)+                       &  
     510                     wee(ij+u_ldown,1,2)*hflux(ij+t_ldown+u_lup,l)+                & 
     511                     wee(ij+u_ldown,2,2)*hflux(ij+t_ldown+u_left,l)+               & 
     512                     wee(ij+u_ldown,3,2)*hflux(ij+t_ldown+u_ldown,l)+              & 
     513                     wee(ij+u_ldown,4,2)*hflux(ij+t_ldown+u_rdown,l)+              & 
     514                     wee(ij+u_ldown,5,2)*hflux(ij+t_ldown+u_right,l) 
    509515                du(ij+u_ldown,l) = qu(ij+u_ldown,l)*uu/de(ij+u_ldown) 
    510516      
     
    606612         ! ww>0 <=> upward transport 
    607613 
    608         ww            =   0.5 * w(ij,l+1) * (theta(ij,l) + theta(ij,l+1) ) 
     614        ww            =   0.5 * wflux(ij,l+1) * (theta(ij,l) + theta(ij,l+1) ) 
    609615        dtheta_rhodz(ij, l ) = dtheta_rhodz(ij, l )  -  ww 
    610616        dtheta_rhodz(ij,l+1) = dtheta_rhodz(ij,l+1)  +  ww 
    611617 
    612         ww  = 0.5 * ( w(ij,l+1) + w(ij+t_right,l+1)) 
     618        ww  = 0.5 * ( wflux(ij,l+1) + wflux(ij+t_right,l+1)) 
    613619        uu  = u(ij+u_right,l+1) - u(ij+u_right,l)   
    614620        du(ij+u_right, l )   = du(ij+u_right,l)   - 0.5 * ww * uu / (0.5*(rhodz(ij,l)+rhodz(ij+t_right,l))) 
    615621        du(ij+u_right, l+1 ) = du(ij+u_right,l+1) - 0.5 * ww * uu / (0.5*(rhodz(ij,l+1)+rhodz(ij+t_right,l+1))) 
    616622 
    617         ww  = 0.5 * ( w(ij,l+1) + w(ij+t_lup,l+1)) 
     623        ww  = 0.5 * ( wflux(ij,l+1) + wflux(ij+t_lup,l+1)) 
    618624        uu  = u(ij+u_lup,l+1) - u(ij+u_lup,l)   
    619625        du(ij+u_lup, l )   = du(ij+u_lup,l)   - 0.5 * ww * uu / (0.5*(rhodz(ij,l)+rhodz(ij+t_lup,l))) 
    620626        du(ij+u_lup, l+1 ) = du(ij+u_lup,l+1) - 0.5 * ww * uu / (0.5*(rhodz(ij,l+1)+rhodz(ij+t_lup,l+1))) 
    621627 
    622         ww  = 0.5 * ( w(ij,l+1) + w(ij+t_ldown,l+1)) 
     628        ww  = 0.5 * ( wflux(ij,l+1) + wflux(ij+t_ldown,l+1)) 
    623629        uu  = u(ij+u_ldown,l+1) - u(ij+u_ldown,l)   
    624630        du(ij+u_ldown, l )   = du(ij+u_ldown,l)   - 0.5 * ww * uu / (0.5*(rhodz(ij,l)+rhodz(ij+t_ldown,l))) 
     
    631637!!$OMP BARRIER 
    632638!!$OMP MASTER   
    633     DEALLOCATE(theta)  ! potential temperature 
    634     DEALLOCATE(pk)   ! Exner function 
     639    DEALLOCATE(theta)   ! potential temperature 
     640    DEALLOCATE(pk)      ! Exner function 
    635641    DEALLOCATE(pks) 
    636642    DEALLOCATE(alpha) 
    637643    DEALLOCATE(beta) 
    638     DEALLOCATE(phi)    ! geopotential 
    639     DEALLOCATE(Fe)   ! mass flux    
    640     DEALLOCATE(Ftheta) ! theta flux    
    641     DEALLOCATE(convm)    ! mass flux convergence 
    642     DEALLOCATE(w)       ! vertical velocity       
     644    DEALLOCATE(phi)     ! geopotential 
     645    DEALLOCATE(Ftheta)  ! theta flux    
     646    DEALLOCATE(convm)   ! mass flux convergence 
    643647    DEALLOCATE(berni)   ! bernouilli term 
    644648!!$OMP END MASTER 
Note: See TracChangeset for help on using the changeset viewer.