Changeset 7973


Ignore:
Timestamp:
2017-04-26T13:57:57+02:00 (3 years ago)
Author:
jchanut
Message:

Allow centred barotropic integration with AGRIF

Location:
branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90

    r7971 r7973  
    487487      INTEGER :: ji, jj 
    488488      LOGICAL :: ll_int_cons 
    489       REAL(wp) :: zrhot, zt 
    490489      !!----------------------------------------------------------------------   
    491490 
     
    495494      ! the forward case only 
    496495 
    497       zrhot = Agrif_rhot() 
    498  
    499       ! "Central" time index for interpolation: 
    500       IF (ln_bt_fw) THEN 
    501          zt = REAL(Agrif_NbStepint()+0.5_wp,wp) / zrhot 
    502       ELSE 
    503          zt = REAL(Agrif_NbStepint(),wp) / zrhot 
    504       ENDIF 
     496      ! Enforce volume conservation if no time refinement:  
     497      IF ( Agrif_rhot()==1 ) ll_int_cons=.TRUE.  
    505498 
    506499      ! Interpolate barotropic fluxes 
     
    524517         ubdy_n(:) = 0.e0 ; vbdy_n(:) = 0.e0  
    525518         ubdy_s(:) = 0.e0 ; vbdy_s(:) = 0.e0  
    526          CALL Agrif_Bc_variable(unb_id,calledweight=zt, procname=interpunb) 
    527          CALL Agrif_Bc_variable(vnb_id,calledweight=zt, procname=interpvnb) 
     519         CALL Agrif_Bc_variable(unb_id, procname=interpunb) 
     520         CALL Agrif_Bc_variable(vnb_id, procname=interpvnb) 
    528521      ENDIF 
    529522      Agrif_UseSpecialValue = .FALSE. 
     
    10991092      !!----------------------------------------------------------------------   
    11001093      IF( before ) THEN 
    1101          DO jj=j1,j2 
    1102             DO ji=i1,i2 
    1103                ptab(ji,jj) = ub2_b(ji,jj) * e2u(ji,jj) 
    1104             END DO 
    1105          END DO 
     1094         IF ( ln_bt_fw ) THEN 
     1095            DO jj=j1,j2 
     1096               DO ji=i1,i2 
     1097                  ptab(ji,jj) = ub2_b(ji,jj) * e2u(ji,jj) 
     1098               END DO 
     1099            END DO 
     1100         ELSE 
     1101            DO jj=j1,j2 
     1102               DO ji=i1,i2 
     1103                  ptab(ji,jj) = un_adv(ji,jj) * e2u(ji,jj) 
     1104               END DO 
     1105            END DO 
     1106         ENDIF 
    11061107      ELSE 
    11071108         western_side  = (nb == 1).AND.(ndir == 1) 
     
    11401141      ! 
    11411142      IF( before ) THEN 
    1142          DO jj=j1,j2 
    1143             DO ji=i1,i2 
    1144                ptab(ji,jj) = vb2_b(ji,jj) * e1v(ji,jj) 
    1145             END DO 
    1146          END DO 
     1143         IF ( ln_bt_fw ) THEN 
     1144            DO jj=j1,j2 
     1145               DO ji=i1,i2 
     1146                  ptab(ji,jj) = vb2_b(ji,jj) * e1v(ji,jj) 
     1147               END DO 
     1148            END DO 
     1149         ELSE 
     1150            DO jj=j1,j2 
     1151               DO ji=i1,i2 
     1152                  ptab(ji,jj) = vn_adv(ji,jj) * e1v(ji,jj) 
     1153               END DO 
     1154            END DO 
     1155         ENDIF 
    11471156      ELSE       
    11481157         western_side  = (nb == 1).AND.(ndir == 1) 
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r7494 r7973  
    4646   USE iom 
    4747   USE ioipsl 
    48    USE dynspg_oce, ONLY: un_adv, vn_adv ! barotropic velocities      
     48   USE dynspg_oce, ONLY: un_adv, vn_adv ! barotropic fluxes      
    4949 
    5050#if defined key_lim2 
     
    214214      ENDIF 
    215215#if defined key_dynspg_ts 
    216       CALL iom_put(  "ubar", un_adv(:,:)      )    ! barotropic i-current 
     216      CALL iom_put(  "ubar", un_adv(:,:)*hur(:,:) )! barotropic i-current 
    217217#else 
    218218      CALL iom_put(  "ubar", un_b(:,:)        )    ! barotropic i-current 
     
    231231      ENDIF 
    232232#if defined key_dynspg_ts 
    233       CALL iom_put(  "vbar", vn_adv(:,:)      )    ! barotropic j-current 
     233      CALL iom_put(  "vbar", vn_adv(:,:)*hvr(:,:) )! barotropic j-current 
    234234#else 
    235235      CALL iom_put(  "vbar", vn_b(:,:)        )    ! barotropic j-current 
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r5628 r7973  
    177177         ! so that asselin contribution is removed at the same time  
    178178         DO jk = 1, jpkm1 
    179             un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk) 
    180             vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:) + vn_b(:,:) )*vmask(:,:,jk) 
     179            un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:)*hur(:,:) + un_b(:,:) )*umask(:,:,jk) 
     180            vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:)*hvr(:,:) + vn_b(:,:) )*vmask(:,:,jk) 
    181181         END DO   
    182182      ENDIF 
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90

    r4486 r7973  
    3838   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hu_e  , hv_e     ! now ocean depth ( = Ho+sshn_e ) 
    3939   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hur_e , hvr_e    ! inverse of hu_e and hv_e 
    40    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv, vn_adv   ! Advection vel. at "now" barocl. step 
     40   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   un_adv, vn_adv   ! Advection fluxes at "now" barocl. step 
    4141   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ub2_b,  vb2_b    ! Half step fluxes (ln_bt_fw=T) 
    4242#if defined key_agrif 
  • branches/2017/dev_r7963_nemo_v3_6_AGRIF-3_AGRIFVVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r6204 r7973  
    125125      !!      -Update the filtered free surface at step "n+1"      : ssha 
    126126      !!      -Update filtered barotropic velocities at step "n+1" : ua_b, va_b 
    127       !!      -Compute barotropic advective velocities at step "n" : un_adv, vn_adv 
     127      !!      -Compute barotropic advective fluxes at step "n"    : un_adv, vn_adv 
    128128      !!      These are used to advect tracers and are compliant with discrete 
    129129      !!      continuity equation taken at the baroclinic time steps. This  
     
    863863      ! Set advection velocity correction: 
    864864      IF (((kt==nit000).AND.(neuler==0)).OR.(.NOT.ln_bt_fw)) THEN      
    865          un_adv(:,:) = zu_sum(:,:)*hur(:,:) 
    866          vn_adv(:,:) = zv_sum(:,:)*hvr(:,:) 
     865         un_adv(:,:) = zu_sum(:,:) 
     866         vn_adv(:,:) = zv_sum(:,:) 
    867867      ELSE 
    868          un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zu_sum(:,:)) * hur(:,:) 
    869          vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zv_sum(:,:)) * hvr(:,:) 
     868         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zu_sum(:,:)) 
     869         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zv_sum(:,:)) 
    870870      END IF 
    871871 
     
    893893      DO jk = 1, jpkm1 
    894894         ! Correct velocities: 
    895          un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) )*umask(:,:,jk) 
    896          vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) )*vmask(:,:,jk) 
     895         un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:)*hur(:,:) - un_b(:,:) )*umask(:,:,jk) 
     896         vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:)*hvr(:,:) - vn_b(:,:) )*vmask(:,:,jk) 
    897897         ! 
    898898      END DO 
Note: See TracChangeset for help on using the changeset viewer.