Changeset 8888
- Timestamp:
- 2017-12-04T12:04:58+01:00 (6 years ago)
- Location:
- branches/2017/dev_r8624_ENHANCE4_FREESURFACE
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8624_ENHANCE4_FREESURFACE/DOC/Namelists/namdyn_spg
r6140 r8888 12 12 rn_bt_cmax = 0.8 ! =T : the Maximum Courant Number allowed 13 13 nn_baro = 30 ! =F : the number of sub-step in rn_rdt seconds 14 rn_bt_alpha = 0.1 ! Temporal diffusion parameter (if ln_bt_av=F) 14 15 / -
branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/CONFIG/SHARED/namelist_ref
r8842 r8888 835 835 rn_bt_cmax = 0.8 ! =T : the Maximum Courant Number allowed 836 836 nn_baro = 30 ! =F : the number of sub-step in rn_rdt seconds 837 rn_bt_alpha = 0. 837 rn_bt_alpha = 0.1 ! Temporal diffusion parameter (if ln_bt_av=F) 838 838 / 839 839 !----------------------------------------------------------------------- -
branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r8805 r8888 132 132 ! so that asselin contribution is removed at the same time 133 133 DO jk = 1, jpkm1 134 un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk)135 vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:) + vn_b(:,:) )*vmask(:,:,jk)134 un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:)*r1_hu_n(:,:) + un_b(:,:) )*umask(:,:,jk) 135 vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:)*r1_hv_n(:,:) + vn_b(:,:) )*vmask(:,:,jk) 136 136 END DO 137 137 ENDIF -
branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r8842 r8888 77 77 78 78 !! Time filtered arrays at baroclinic time step: 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_adv , vn_adv !: Advection vel.at "now" barocl. step79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_adv , vn_adv !: Advection fluxes at "now" barocl. step 80 80 81 81 !! * Substitutions … … 128 128 !! -Update the filtered free surface at step "n+1" : ssha 129 129 !! -Update filtered barotropic velocities at step "n+1" : ua_b, va_b 130 !! -Compute barotropic advective velocities at step "n": un_adv, vn_adv130 !! -Compute barotropic advective fluxes at step "n" : un_adv, vn_adv 131 131 !! These are used to advect tracers and are compliant with discrete 132 132 !! continuity equation taken at the baroclinic time steps. This … … 1030 1030 ! 1031 1031 ! Set advection velocity correction: 1032 zwx(:,:) = un_adv(:,:) 1033 zwy(:,:) = vn_adv(:,:) 1034 IF ( kt == nit000 .AND. neuler==0 ) un_bf(:,:) = 0._wp ; vn_bf(:,:) = 0._wp 1035 ! 1036 IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN 1037 un_adv(:,:) = zwx(:,:) * r1_hu_n(:,:) 1038 vn_adv(:,:) = zwy(:,:) * r1_hv_n(:,:) 1039 ELSE 1040 un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) ) * r1_hu_n(:,:) 1041 vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) ) * r1_hv_n(:,:) 1042 ! Update corrective fluxes for next time step: 1043 un_bf(:,:) = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:)) 1044 vn_bf(:,:) = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:)) 1045 END IF 1046 1047 IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 1032 IF (ln_bt_fw) THEN 1033 zwx(:,:) = un_adv(:,:) 1034 zwy(:,:) = vn_adv(:,:) 1035 IF( .NOT.( kt == nit000 .AND. neuler==0 ) ) THEN 1036 un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zwx(:,:) - atfp * un_bf(:,:) ) 1037 vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zwy(:,:) - atfp * vn_bf(:,:) ) 1038 ! 1039 ! Update corrective fluxes for next time step: 1040 un_bf(:,:) = atfp * un_bf(:,:) + (zwx(:,:) - ub2_b(:,:)) 1041 vn_bf(:,:) = atfp * vn_bf(:,:) + (zwy(:,:) - vb2_b(:,:)) 1042 ELSE 1043 un_bf(:,:) = 0._wp 1044 vn_bf(:,:) = 0._wp 1045 END IF 1046 ! Save integrated transport for next computation 1048 1047 ub2_b(:,:) = zwx(:,:) 1049 1048 vb2_b(:,:) = zwy(:,:) … … 1081 1080 DO jk = 1, jpkm1 1082 1081 ! Correct velocities: 1083 un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) ) * umask(:,:,jk)1084 vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) ) * vmask(:,:,jk)1082 un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:)*r1_hu_n(:,:) - un_b(:,:) ) * umask(:,:,jk) 1083 vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:)*r1_hv_n(:,:) - vn_b(:,:) ) * vmask(:,:,jk) 1085 1084 ! 1086 1085 END DO 1087 1086 ! 1088 CALL iom_put( "ubar", un_adv(:,:) 1089 CALL iom_put( "vbar", vn_adv(:,:) 1087 CALL iom_put( "ubar", un_adv(:,:)*r1_hu_n(:,:) ) ! barotropic i-current 1088 CALL iom_put( "vbar", vn_adv(:,:)*r1_hv_n(:,:) ) ! barotropic i-current 1090 1089 ! 1091 1090 #if defined key_agrif … … 1320 1319 #endif 1321 1320 ! 1322 IF(lwp) WRITE(numout,*) ' Time filter choice, nn_bt_flt: ', nn_bt_flt 1323 SELECT CASE ( nn_bt_flt ) 1324 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' Dirac' 1325 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = nn_baro' 1326 CASE( 2 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = 2*nn_baro' 1327 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' ) 1328 END SELECT 1321 IF(ln_bt_av) THEN 1322 IF(lwp) WRITE(numout,*) ' Time filter choice, nn_bt_flt: ', nn_bt_flt 1323 SELECT CASE ( nn_bt_flt ) 1324 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' Dirac' 1325 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = nn_baro' 1326 CASE( 2 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = 2*nn_baro' 1327 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' ) 1328 END SELECT 1329 ENDIF 1329 1330 ! 1330 1331 IF(lwp) WRITE(numout,*) ' ' … … 1339 1340 ENDIF 1340 1341 1341 IF ( ln_bt_av.AND.(rn_bt_alpha > 0._wp) ) THEN 1342 CALL ctl_stop( 'dynspg_ts ERROR: if rn_bt_alpha > 0, remove temporal averaging' ) 1342 IF ( ln_bt_av.AND.(rn_bt_alpha /= 0._wp) ) THEN 1343 CALL ctl_warn( 'dynspg_ts: with temporal averaging, we assume rn_bt_alpha=0.') 1344 rn_bt_alpha=0._wp 1343 1345 ENDIF 1344 1346 ! -
branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/oce.F90
r8805 r8888 45 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hvr_e !: inverse of v-depth 46 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ub2_b , vb2_b !: Half step fluxes (ln_bt_fw=T) 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_bf , vn_bf !: Asselin filter correctivefluxes (ln_bt_fw=T)47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_bf , vn_bf !: Asselin filtered half step fluxes (ln_bt_fw=T) 48 48 #if defined key_agrif 49 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ub2_i_b, vb2_i_b !: Half step time integrated fluxes
Note: See TracChangeset
for help on using the changeset viewer.