Ignore:
Timestamp:
01/27/17 16:54:36 (7 years ago)
Author:
dubos
Message:

Updated devel to r526

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/caldyn_kernels_hevi.f90

    r499 r529  
    3232          !DIR$ SIMD 
    3333          DO ij=ij_begin_ext,ij_end_ext 
    34              IF(DEC) THEN  ! ps is actually Ms 
    35                 m = mass_dak(l)+(ps(ij)*g+ptop)*mass_dbk(l) 
    36              ELSE 
    37                 m = mass_dak(l)+ps(ij)*mass_dbk(l) 
    38              END IF 
     34             m = mass_dak(l)+(ps(ij)*g+ptop)*mass_dbk(l) ! ps is actually Ms 
    3935             rhodz(ij,l) = m/g 
    4036          END DO 
     
    6965       !DIR$ SIMD 
    7066       DO ij=ij_begin_ext,ij_end_ext 
    71           IF(DEC) THEN 
    72              etav= 1./Av(ij+z_up)*(  ne_rup  * u(ij+u_rup,l)         & 
    73                                    + ne_left * u(ij+t_rup+u_left,l)  & 
    74                                    - ne_lup  * u(ij+u_lup,l) )                                
    75  
    76              hv =   Riv2(ij,vup)          * rhodz(ij,l)           & 
    77                   + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l)     & 
    78                   + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 
    79              qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 
    80  
    81              etav = 1./Av(ij+z_down)*(  ne_ldown * u(ij+u_ldown,l)          & 
    82                                       + ne_right * u(ij+t_ldown+u_right,l)  & 
    83                                       - ne_rdown * u(ij+u_rdown,l) ) 
    84              hv =   Riv2(ij,vdown)        * rhodz(ij,l)          & 
    85                   + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l)  & 
    86                   + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 
    87              qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 
    88           ELSE 
    89              etav= 1./Av(ij+z_up)*(  ne_rup  * u(ij+u_rup,l)        * de(ij+u_rup)         & 
    90                                    + ne_left * u(ij+t_rup+u_left,l) * de(ij+t_rup+u_left)  & 
    91                                    - ne_lup  * u(ij+u_lup,l)        * de(ij+u_lup) )                                
    92  
    93              hv =   Riv2(ij,vup)          * rhodz(ij,l)           & 
    94                   + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l)     & 
    95                   + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 
    96              qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 
    97  
    98              etav = 1./Av(ij+z_down)*(  ne_ldown * u(ij+u_ldown,l)          * de(ij+u_ldown)          & 
    99                                       + ne_right * u(ij+t_ldown+u_right,l)  * de(ij+t_ldown+u_right)  & 
    100                                       - ne_rdown * u(ij+u_rdown,l)          * de(ij+u_rdown) ) 
    101              hv =   Riv2(ij,vdown)        * rhodz(ij,l)          & 
    102                   + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l)  & 
    103                   + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 
    104              qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 
    105           END IF 
     67          etav= 1./Av(ij+z_up)*(  ne_rup  * u(ij+u_rup,l)   & 
     68                  + ne_left * u(ij+t_rup+u_left,l)          & 
     69                  - ne_lup  * u(ij+u_lup,l) )                                
     70          hv =   Riv2(ij,vup)          * rhodz(ij,l)        & 
     71               + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l)  & 
     72               + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 
     73          qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 
     74           
     75          etav = 1./Av(ij+z_down)*(  ne_ldown * u(ij+u_ldown,l)   & 
     76               + ne_right * u(ij+t_ldown+u_right,l)               & 
     77               - ne_rdown * u(ij+u_rdown,l) ) 
     78          hv =   Riv2(ij,vdown)        * rhodz(ij,l)              & 
     79               + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l)      & 
     80               + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 
     81          qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 
    10682       ENDDO 
    10783 
     
    649625  END SUBROUTINE compute_caldyn_Coriolis 
    650626 
    651   SUBROUTINE compute_caldyn_slow_hydro(u,rhodz,hflux,du) 
     627  SUBROUTINE compute_caldyn_slow_hydro(u,rhodz,hflux,du, zero) 
     628    LOGICAL, INTENT(IN) :: zero 
    652629    REAL(rstd),INTENT(IN)  :: u(3*iim*jjm,llm)    ! prognostic "velocity" 
    653630    REAL(rstd),INTENT(IN)  :: rhodz(iim*jjm,llm) 
    654631    REAL(rstd),INTENT(OUT) :: hflux(3*iim*jjm,llm) ! hflux in kg/s 
    655     REAL(rstd),INTENT(OUT) :: du(3*iim*jjm,llm) 
     632    REAL(rstd),INTENT(INOUT) :: du(3*iim*jjm,llm) 
    656633     
    657634    REAL(rstd) :: berni(iim*jjm)  ! Bernoulli function 
     
    690667       ENDDO 
    691668       ! Compute du=-grad(Bernoulli) 
    692        !DIR$ SIMD 
    693        DO ij=ij_begin,ij_end 
     669       IF(zero) THEN 
     670          !DIR$ SIMD 
     671          DO ij=ij_begin,ij_end 
    694672             du(ij+u_right,l) = ne_right*(berni(ij)-berni(ij+t_right)) 
    695673             du(ij+u_lup,l)   = ne_lup*(berni(ij)-berni(ij+t_lup)) 
    696674             du(ij+u_ldown,l) = ne_ldown*(berni(ij)-berni(ij+t_ldown)) 
    697        END DO 
     675          END DO 
     676       ELSE 
     677          !DIR$ SIMD 
     678          DO ij=ij_begin,ij_end 
     679             du(ij+u_right,l) = du(ij+u_right,l) + & 
     680                  ne_right*(berni(ij)-berni(ij+t_right)) 
     681             du(ij+u_lup,l)   = du(ij+u_lup,l) + & 
     682                  ne_lup*(berni(ij)-berni(ij+t_lup)) 
     683             du(ij+u_ldown,l) = du(ij+u_ldown,l) + & 
     684                  ne_ldown*(berni(ij)-berni(ij+t_ldown)) 
     685          END DO 
     686       END IF 
    698687    END DO 
    699688 
Note: See TracChangeset for help on using the changeset viewer.