Changeset 13701


Ignore:
Timestamp:
2020-10-29T12:17:52+01:00 (5 weeks ago)
Author:
francesca
Message:

end of cleanup of the TRA modules - ticket #2367

Location:
NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OCE/TRA/eosbn2.F90

    r13660 r13701  
    238238      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    239239         ! 
    240          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     240         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    241241            ! 
    242242            zh  = pdep(ji,jj,jk) * r1_Z0                                  ! depth 
     
    274274      CASE( np_seos )                !==  simplified EOS  ==! 
    275275         ! 
    276          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     276         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    277277            zt  = pts  (ji,jj,jk,jp_tem) - 10._wp 
    278278            zs  = pts  (ji,jj,jk,jp_sal) - 35._wp 
     
    338338            END DO 
    339339            ! 
    340             DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     340            DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    341341               ! 
    342342               ! compute density (2*nn_sto_eos) times: 
     
    388388         ! Non-stochastic equation of state 
    389389         ELSE 
    390             DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     390            DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    391391               ! 
    392392               zh  = pdep(ji,jj,jk) * r1_Z0                                  ! depth 
     
    426426      CASE( np_seos )                !==  simplified EOS  ==! 
    427427         ! 
    428          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     428         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    429429            zt  = pts  (ji,jj,jk,jp_tem) - 10._wp 
    430430            zs  = pts  (ji,jj,jk,jp_sal) - 35._wp 
     
    480480      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    481481         ! 
    482          DO_2D( 1, 1, 1, 1 ) 
     482         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    483483            ! 
    484484            zh  = pdep(ji,jj) * r1_Z0                                  ! depth 
     
    515515      CASE( np_seos )                !==  simplified EOS  ==! 
    516516         ! 
    517          DO_2D( 1, 1, 1, 1 ) 
     517         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    518518            ! 
    519519            zt    = pts  (ji,jj,jp_tem)  - 10._wp 
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OCE/TRA/traadv.F90

    r13660 r13701  
    150150      CASE ( np_FCT )                                 ! FCT scheme      : 2nd / 4th order 
    151151         IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'traadv', pts(:,:,:,:,Kbb), 'T', 1., pts(:,:,:,:,Kmm), 'T', 1.)  
    152             CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) ; END IF 
     152            CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) ; END IF 
    153153         CALL tra_adv_fct    ( kt, nit000, 'TRA', rDt, zuu, zvv, zww, Kbb, Kmm, pts, jpts, Krhs, nn_fct_h, nn_fct_v ) 
    154154      CASE ( np_MUS )                                 ! MUSCL 
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OCE/TRA/traadv_qck.F90

    r13660 r13701  
    176176         ! 
    177177         ! Tracer flux on the x-direction 
    178          DO jk = 1, jpkm1   
    179             ! 
    180             DO_2D( 0, 0, 1, 0 ) 
    181                zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    182                !--- If the second ustream point is a land point 
    183                !--- the flux is computed by the 1st order UPWIND scheme 
    184                zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji+1,jj,jk) 
    185                zwx(ji,jj,jk) = zmsk * zwx(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
    186                zwx(ji,jj,jk) = zwx(ji,jj,jk) * pU(ji,jj,jk) 
    187             END_2D 
    188          END DO 
     178         DO_3D( 0, 0, 1, 0, 1, jpkm1 ) 
     179            zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
     180            !--- If the second ustream point is a land point 
     181            !--- the flux is computed by the 1st order UPWIND scheme 
     182            zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji+1,jj,jk) 
     183            zwx(ji,jj,jk) = zmsk * zwx(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
     184            zwx(ji,jj,jk) = zwx(ji,jj,jk) * pU(ji,jj,jk) 
     185         END_3D 
    189186         ! 
    190187         ! Computation of the trend 
     
    270267         ! 
    271268         ! Tracer flux on the x-direction 
    272          DO jk = 1, jpkm1   
    273             ! 
    274             DO_2D( 1, 0, 0, 0 ) 
    275                zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    276                !--- If the second ustream point is a land point 
    277                !--- the flux is computed by the 1st order UPWIND scheme 
    278                zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji,jj+1,jk) 
    279                zwy(ji,jj,jk) = zmsk * zwy(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
    280                zwy(ji,jj,jk) = zwy(ji,jj,jk) * pV(ji,jj,jk) 
    281             END_2D 
    282          END DO 
     269         DO_3D( 1, 0, 0, 0, 1, jpkm1 ) 
     270            zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
     271            !--- If the second ustream point is a land point 
     272            !--- the flux is computed by the 1st order UPWIND scheme 
     273            zmsk = zdir * zfu(ji,jj,jk) + ( 1. - zdir ) * zfu(ji,jj+1,jk) 
     274            zwy(ji,jj,jk) = zmsk * zwy(ji,jj,jk) + ( 1. - zmsk ) * zfc(ji,jj,jk) 
     275            zwy(ji,jj,jk) = zwy(ji,jj,jk) * pV(ji,jj,jk) 
     276         END_3D 
    283277         ! 
    284278         ! Computation of the trend 
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OCE/TRA/trasbc.F90

    r13660 r13701  
    124124      ENDIF 
    125125      !                             !==  Now sbc tracer content fields  ==! 
    126       DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls-1 ) 
     126      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    127127         sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj)   ! non solar heat flux 
    128128         sbc_tsc(ji,jj,jp_sal) = r1_rho0     * sfx(ji,jj)   ! salt flux due to freezing/melting 
    129129      END_2D 
    130130      IF( ln_linssh ) THEN                !* linear free surface   
    131          DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls-1 )                    !==>> add concentration/dilution effect due to constant volume cell 
     131         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                    !==>> add concentration/dilution effect due to constant volume cell 
    132132            sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm) 
    133133            sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm) 
     
    138138      ! 
    139139      DO jn = 1, jpts               !==  update tracer trend  ==! 
    140          DO_2D( nn_hls-1, nn_hls, nn_hls-1, nn_hls-1 ) 
     140         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    141141            pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) )    & 
    142142               &                                                / e3t(ji,jj,1,Kmm) 
     
    157157      IF( ln_rnf ) THEN         ! input of heat and salt due to river runoff  
    158158         zfact = 0.5_wp 
    159          DO_2D( 0, 1, 0, 0 ) 
     159         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    160160            IF( rnf(ji,jj) /= 0._wp ) THEN 
    161161               zdep = zfact / h_rnf(ji,jj) 
     
    182182          ! 
    183183         IF( ln_linssh ) THEN  
    184             DO_2D( 0, 1, 0, 0 ) 
     184            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    185185               ztim = ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm) 
    186186               pts(ji,jj,1,jp_tem,Krhs) = pts(ji,jj,1,jp_tem,Krhs) + pts(ji,jj,1,jp_tem,Kmm) * ztim 
     
    188188            END_2D 
    189189         ELSE 
    190             DO_2D( 0, 1, 0, 0 ) 
     190            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    191191               ztim = ssh_iau(ji,jj) / ( ht(ji,jj) + 1. - ssmask(ji, jj) ) 
    192192               pts(ji,jj,:,jp_tem,Krhs) = pts(ji,jj,:,jp_tem,Krhs) + pts(ji,jj,:,jp_tem,Kmm) * ztim 
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OCE/TRA/zpshde.F90

    r13497 r13701  
    8888      INTEGER                              , INTENT(in   )           ::  Kmm         ! ocean time level index 
    8989      INTEGER                              , INTENT(in   )           ::  kjpt        ! number of tracers 
    90       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   )           ::  pta         ! 4D tracers fields 
     90      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout)           ::  pta         ! 4D tracers fields 
    9191      REAL(wp), DIMENSION(jpi,jpj,    kjpt), INTENT(  out)           ::  pgtu, pgtv  ! hor. grad. of ptra at u- & v-pts  
    92       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ), OPTIONAL ::  prd         ! 3D density anomaly fields 
     92      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(inout), OPTIONAL ::  prd         ! 3D density anomaly fields 
    9393      REAL(wp), DIMENSION(jpi,jpj         ), INTENT(  out), OPTIONAL ::  pgru, pgrv  ! hor. grad of prd at u- & v-pts (bottom) 
    9494      ! 
     
    101101      ! 
    102102      IF( ln_timing )   CALL timing_start( 'zps_hde') 
     103      IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
     104      IF(PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) ; END IF  
    103105      ! 
    104106      pgtu(:,:,:) = 0._wp   ;   zti (:,:,:) = 0._wp   ;   zhi (:,:) = 0._wp 
     
    107109      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    108110         ! 
    109          DO_2D( 1, 0, 1, 0 ) 
     111         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )              ! Gradient of density at the last level 
    110112            iku = mbku(ji,jj)   ;   ikum1 = MAX( iku - 1 , 1 )    ! last and before last ocean level at u- & v-points 
    111113            ikv = mbkv(ji,jj)   ;   ikvm1 = MAX( ikv - 1 , 1 )    ! if level first is a p-step, ik.m1=1 
     
    146148      END DO 
    147149      ! 
    148       CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     150      IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
    149151      !                 
    150152      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
    151153         pgru(:,:) = 0._wp 
    152154         pgrv(:,:) = 0._wp                ! depth of the partial step level 
    153          DO_2D( 1, 0, 1, 0 ) 
     155         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    154156            iku = mbku(ji,jj) 
    155157            ikv = mbkv(ji,jj) 
     
    167169         CALL eos( ztj, zhj, zrj )        ! at the partial step depth output in  zri, zrj  
    168170         ! 
    169          DO_2D( 1, 0, 1, 0 )              ! Gradient of density at the last level 
     171         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )              ! Gradient of density at the last level 
    170172            iku = mbku(ji,jj) 
    171173            ikv = mbkv(ji,jj) 
     
    179181            ENDIF 
    180182         END_2D 
    181          CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     183         IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
    182184         ! 
    183185      END IF 
     
    239241      INTEGER                              , INTENT(in   )           ::  Kmm          ! ocean time level index 
    240242      INTEGER                              , INTENT(in   )           ::  kjpt         ! number of tracers 
    241       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   )           ::  pta          ! 4D tracers fields 
     243      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout)           ::  pta          ! 4D tracers fields 
    242244      REAL(wp), DIMENSION(jpi,jpj,    kjpt), INTENT(  out)           ::  pgtu, pgtv   ! hor. grad. of ptra at u- & v-pts  
    243245      REAL(wp), DIMENSION(jpi,jpj,    kjpt), INTENT(  out)           ::  pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 
    244       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ), OPTIONAL ::  prd          ! 3D density anomaly fields 
     246      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(inout), OPTIONAL ::  prd          ! 3D density anomaly fields 
    245247      REAL(wp), DIMENSION(jpi,jpj         ), INTENT(  out), OPTIONAL ::  pgru, pgrv   ! hor. grad of prd at u- & v-pts (bottom) 
    246248      REAL(wp), DIMENSION(jpi,jpj         ), INTENT(  out), OPTIONAL ::  pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 
     
    255257      IF( ln_timing )   CALL timing_start( 'zps_hde_isf') 
    256258      ! 
     259      IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk( 'zpshde', pta, 'T', 1.0_wp) 
     260      IF (PRESENT(prd)) CALL lbc_lnk( 'zpshde', prd, 'T', 1.0_wp) ; END IF  
     261 
    257262      pgtu (:,:,:) = 0._wp   ;   pgtv (:,:,:) =0._wp 
    258263      pgtui(:,:,:) = 0._wp   ;   pgtvi(:,:,:) =0._wp 
     
    262267      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    263268         ! 
    264          DO_2D( 1, 0, 1, 0 ) 
     269         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    265270 
    266271            iku = mbku(ji,jj); ikum1 = MAX( iku - 1 , 1 )    ! last and before last ocean level at u- & v-points 
     
    302307      END DO 
    303308      ! 
    304       CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     309      IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtu(:,:,:), 'U', -1.0_wp , pgtv(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
    305310 
    306311      ! horizontal derivative of density anomalies (rd) 
     
    308313         pgru(:,:)=0.0_wp   ; pgrv(:,:)=0.0_wp ;  
    309314         ! 
    310          DO_2D( 1, 0, 1, 0 ) 
     315         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    311316 
    312317            iku = mbku(ji,jj) 
     
    329334         CALL eos( ztj, zhj, zrj ) 
    330335 
    331          DO_2D( 1, 0, 1, 0 )            ! Gradient of density at the last level 
     336         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    332337            iku = mbku(ji,jj) 
    333338            ikv = mbkv(ji,jj) 
     
    344349         END_2D 
    345350 
    346          CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
     351         IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgru , 'U', -1.0_wp , pgrv , 'V', -1.0_wp )   ! Lateral boundary conditions 
    347352         ! 
    348353      END IF 
     
    351356      ! 
    352357      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==!            ! 
    353          DO_2D( 1, 0, 1, 0 ) 
     358         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    354359            iku = miku(ji,jj); ikup1 = miku(ji,jj) + 1 
    355360            ikv = mikv(ji,jj); ikvp1 = mikv(ji,jj) + 1 
     
    395400         ! 
    396401      END DO 
    397       CALL lbc_lnk_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
     402      IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgtui(:,:,:), 'U', -1.0_wp , pgtvi(:,:,:), 'V', -1.0_wp )   ! Lateral boundary cond. 
    398403 
    399404      IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part) 
    400405         ! 
    401406         pgrui(:,:)  =0.0_wp; pgrvi(:,:)  =0.0_wp; 
    402          DO_2D( 1, 0, 1, 0 ) 
     407         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    403408 
    404409            iku = miku(ji,jj) 
     
    420425         CALL eos( ztj, zhj, zrj )        ! at the partial step depth output in  zri, zrj  
    421426         ! 
    422          DO_2D( 1, 0, 1, 0 )              ! Gradient of density at the last level 
     427         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    423428            iku = miku(ji,jj)  
    424429            ikv = mikv(ji,jj)  
     
    434439 
    435440         END_2D 
    436          CALL lbc_lnk_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp )   ! Lateral boundary conditions 
     441         IF (nn_hls.EQ.1) CALL lbc_lnk_multi( 'zpshde', pgrui, 'U', -1.0_wp , pgrvi, 'V', -1.0_wp )   ! Lateral boundary conditions 
    437442         ! 
    438443      END IF   
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/OFF/dtadyn.F90

    r13497 r13701  
    795795      !!--------------------------------------------------------------------- 
    796796      INTEGER ,                              INTENT(in ) :: kt       ! time step 
    797       REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts      ! temperature/salinity 
     797      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(inout) :: pts      ! temperature/salinity 
    798798      REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(out) :: puslp    ! zonal isopycnal slopes 
    799799      REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(out) :: pvslp    ! meridional isopycnal slopes 
  • NEMO/branches/2020/dev_r13508_HPC-09_communications_cleanup/src/TOP/TRP/trcadv.F90

    r13660 r13701  
    128128      CASE ( np_FCT )                                 ! FCT      : 2nd / 4th order 
    129129         IF (nn_hls.EQ.2) THEN ; CALL lbc_lnk_multi( 'trcadv', ptr(:,:,:,:,Kbb), 'T', 1., ptr(:,:,:,:,Kmm), 'T', 1.) 
    130             CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1.) ; END IF 
     130            CALL lbc_lnk_multi( 'traadv', zuu(:,:,:), 'U', -1., zvv(:,:,:), 'V', -1., zww(:,:,:), 'W', 1.) ; END IF 
    131131         CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    132132      CASE ( np_MUS )                                 ! MUSCL 
Note: See TracChangeset for help on using the changeset viewer.