Changeset 5104


Ignore:
Timestamp:
2015-02-23T17:07:54+01:00 (6 years ago)
Author:
mathiot
Message:

correction of minor bug with isf + add some extra test on ln_isfcav + restore ssu/ssv

Location:
branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/CONFIG/SHARED/field_def.xml

    r5099 r5104  
    327327         <field id="utau"         long_name="Wind Stress along i-axis"                    unit="N/m2" /> 
    328328         <field id="uoce"         long_name="ocean current along i-axis"                  unit="m/s"  grid_ref="grid_U_3D" /> 
     329         <field id="ssu"          long_name="ocean surface current along i-axis"          unit="m/s"     /> 
    329330         <field id="uocetr_eff"   long_name="Effective ocean transport along i-axis"      unit="m3/s" grid_ref="grid_U_3D" /> 
    330331         <field id="uocet"        long_name="ocean transport along i-axis times temperature" unit="degC.m/s" grid_ref="grid_U_3D" /> 
     
    352353         <field id="vtau"         long_name="Wind Stress along j-axis"                    unit="N/m2" /> 
    353354         <field id="voce"         long_name="ocean current along j-axis"                  unit="m/s"  grid_ref="grid_V_3D" /> 
     355         <field id="ssv"          long_name="ocean surface current along j-axis"          unit="m/s"  /> 
    354356         <field id="vocetr_eff"   long_name="Effective ocean transport along j-axis"      unit="m3/s" grid_ref="grid_V_3D" /> 
    355357         <field id="vocet"        long_name="ocean transport along j-axis times temperature" unit="degC.m/s" grid_ref="grid_V_3D" /> 
     
    743745    <field_group id="groupU" > 
    744746      <field field_ref="uoce"         name="uo"      long_name="sea_water_x_velocity"      /> 
     747      <field field_ref="ssu"          name="uos"     long_name="sea_surface_x_velocity"    /> 
    745748      <field field_ref="utau"         name="tauuo"   long_name="surface_downward_x_stress" /> 
    746749    </field_group> 
     
    748751    <field_group id="groupV" > 
    749752      <field field_ref="voce"         name="vo"      long_name="sea_water_y_velocity"      /> 
     753      <field field_ref="ssv"          name="vos"     long_name="sea_surface_y_velocity"    /> 
    750754      <field field_ref="vtau"         name="tauvo"   long_name="surface_downward_y_stress" /> 
    751755    </field_group> 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90

    r5098 r5104  
    539539        ! Partial steps: before Horizontal DErivative 
    540540        ! only gtsu, gtsv, rhd, gru , grv are used  
    541       IF( ln_zps )    CALL zps_hde    ( kt, jpts, pts, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
    542         &                                         rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    543       IF( ln_zps .AND. ln_isfcav) & 
     541      IF( ln_zps  .AND. .NOT. ln_isfcav)                            & 
     542         &            CALL zps_hde    ( kt, jpts, pts, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
     543         &                                        rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
     544      IF( ln_zps .AND.        ln_isfcav)                            & 
    544545         &            CALL zps_hde_isf( kt, jpts, pts, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    545546         &                                        rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r5098 r5104  
    746746 
    747747 
    748             IF( ln_zps .AND. .NOT. lk_c1d )                     & 
    749                &  CALL zps_hde    ( kt, jpts, tsb, gtsu, gtsv,    ! Partial steps: before horizontal gradient 
    750                &                              rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    751             IF( ln_zps .AND. .NOT. lk_c1d .AND. ln_isfcav)      & 
    752                &  CALL zps_hde_isf( nit000, jpts, tsb, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
     748            IF( ln_zps .AND. .NOT. lk_c1d .AND. .NOT. ln_isfcav)      & 
     749               &  CALL zps_hde    ( kt, jpts, tsb, gtsu, gtsv,        &  ! Partial steps: before horizontal gradient 
     750               &                              rhd, gru , grv          )  ! of t, s, rd at the last ocean level 
     751            IF( ln_zps .AND. .NOT. lk_c1d .AND.       ln_isfcav)      & 
     752               &  CALL zps_hde_isf( nit000, jpts, tsb, gtsu, gtsv,    &    ! Partial steps for top cell (ISF) 
    753753               &                                  rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
    754754               &                           gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi    ) ! of t, s, rd at the last ocean level 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r5098 r5104  
    167167         CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:)                  )    ! i-current 
    168168         CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:)                  )    ! j-current 
     169         CALL iom_put( "ssu"  , umask(:,:,1) * un(:,:,1)                  )    ! i-current 
     170         CALL iom_put( "ssv"  , vmask(:,:,1) * vn(:,:,1)                  )    ! j-current 
    169171      ENDIF 
    170172      CALL iom_put(    "avt"  , avt                        )    ! T vert. eddy diff. coef. 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r5098 r5104  
    137137         CALL eos( tsb, rhd, rhop, gdept_0(:,:,:) )        ! before potential and in situ densities 
    138138#if ! defined key_c1d 
    139          IF( ln_zps )    CALL zps_hde    ( nit000, jpts, tsb, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
     139         IF( ln_zps .AND. .NOT. ln_isfcav)                                 & 
     140            &            CALL zps_hde    ( nit000, jpts, tsb, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
    140141            &                                            rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    141          IF( ln_zps .AND. ln_isfcav) & 
     142         IF( ln_zps .AND. ln_isfcav)                                       & 
    142143            &            CALL zps_hde_isf( nit000, jpts, tsb, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    143144            &                                            rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r5098 r5104  
    151151               ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + p2dt * bfrua(ji,jj) * ua_b(ji,jj) / ze3ua 
    152152               va(ji,jj,ikbv) = va(ji,jj,ikbv) + p2dt * bfrva(ji,jj) * va_b(ji,jj) / ze3va 
    153                ikbu = miku(ji,jj)         ! top ocean level at u- and v-points  
    154                ikbv = mikv(ji,jj)         ! (first wet ocean u- and v-points) 
    155                ze3ua =  ( 1._wp - r_vvl ) * fse3u_n(ji,jj,ikbu) + r_vvl   * fse3u_a(ji,jj,ikbu) 
    156                ze3va =  ( 1._wp - r_vvl ) * fse3v_n(ji,jj,ikbv) + r_vvl   * fse3v_a(ji,jj,ikbv) 
    157                ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + p2dt * tfrua(ji,jj) * ua_b(ji,jj) / ze3ua 
    158                va(ji,jj,ikbv) = va(ji,jj,ikbv) + p2dt * tfrva(ji,jj) * va_b(ji,jj) / ze3va 
    159             END DO 
    160          END DO 
     153            END DO 
     154         END DO 
     155         IF ( ln_isfcav ) THEN 
     156            DO jj = 2, jpjm1         
     157               DO ji = fs_2, fs_jpim1   ! vector opt. 
     158                  ikbu = miku(ji,jj)         ! top ocean level at u- and v-points  
     159                  ikbv = mikv(ji,jj)         ! (first wet ocean u- and v-points) 
     160                  ze3ua =  ( 1._wp - r_vvl ) * fse3u_n(ji,jj,ikbu) + r_vvl   * fse3u_a(ji,jj,ikbu) 
     161                  ze3va =  ( 1._wp - r_vvl ) * fse3v_n(ji,jj,ikbv) + r_vvl   * fse3v_a(ji,jj,ikbv) 
     162                  ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + p2dt * tfrua(ji,jj) * ua_b(ji,jj) / ze3ua 
     163                  va(ji,jj,ikbv) = va(ji,jj,ikbv) + p2dt * tfrva(ji,jj) * va_b(ji,jj) / ze3va 
     164               END DO 
     165            END DO 
     166         END IF 
    161167      ENDIF 
    162168#endif 
     
    173179               ze3ua =  ( 1._wp - r_vvl ) * fse3u_n(ji,jj,jk) + r_vvl   * fse3u_a(ji,jj,jk)   ! after scale factor at T-point 
    174180               zcoef = - p2dt / ze3ua       
    175                zzwi          = zcoef * avmu (ji,jj,jk  ) / fse3uw(ji,jj,jk  ) 
    176                zwi(ji,jj,jk) = zzwi  * wumask(ji,jj,jk) 
    177                zzws          = zcoef * avmu (ji,jj,jk+1) / fse3uw(ji,jj,jk+1)  
     181               zzwi          = zcoef * avmu  (ji,jj,jk  ) / fse3uw(ji,jj,jk  ) 
     182               zwi(ji,jj,jk) = zzwi  * wumask(ji,jj,jk  ) 
     183               zzws          = zcoef * avmu  (ji,jj,jk+1) / fse3uw(ji,jj,jk+1)  
    178184               zws(ji,jj,jk) = zzws  * wumask(ji,jj,jk+1) 
    179185               zwd(ji,jj,jk) = 1._wp - zzwi - zzws 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r5098 r5104  
    142142            DO jj = 1, jpjm1 
    143143               DO ji = 1, jpim1 
    144 ! IF should be useless check zpshde (PM) 
    145144                  zgru(ji,jj,mbku(ji,jj)) = gru(ji,jj) 
    146145                  zgrv(ji,jj,mbkv(ji,jj)) = grv(ji,jj) 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r5098 r5104  
    241241      !                     !  Surface boundary condition on tke 
    242242      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    243       DO jj = 2, jpjm1            ! en(mikt(ji,jj))   = rn_emin 
    244          DO ji = fs_2, fs_jpim1   ! vector opt. 
    245                en(ji,jj,mikt(ji,jj))=rn_emin 
    246          END DO 
    247       END DO 
     243      IF ( ln_isfcav ) THEN 
     244         DO jj = 2, jpjm1            ! en(mikt(ji,jj))   = rn_emin 
     245            DO ji = fs_2, fs_jpim1   ! vector opt. 
     246               en(ji,jj,mikt(ji,jj))=rn_emin * tmask(ji,jj,1) 
     247            END DO 
     248         END DO 
     249      END IF 
    248250      DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
    249251         DO ji = fs_2, fs_jpim1   ! vector opt. 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/OPA_SRC/step.F90

    r5098 r5104  
    146146      IF( lk_ldfslp ) THEN                            ! slope of lateral mixing 
    147147                         CALL eos( tsb, rhd, gdept_0(:,:,:) )               ! before in situ density 
    148          IF( ln_zps )    CALL zps_hde    ( kstp, jpts, tsb, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
     148         IF( ln_zps .AND. .NOT. ln_isfcav)                               & 
     149            &            CALL zps_hde    ( kstp, jpts, tsb, gtsu, gtsv,  &  ! Partial steps: before horizontal gradient 
    149150            &                                          rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    150          IF( ln_zps .AND. ln_isfcav) & 
     151         IF( ln_zps .AND.       ln_isfcav)                              & 
    151152            &            CALL zps_hde_isf( kstp, jpts, tsb, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    152153            &                                          rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
     
    180181          ! is necessary to compute momentum advection for the rhs of barotropic loop: 
    181182                            CALL eos    ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 
    182             IF( ln_zps )    CALL zps_hde    ( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
     183            IF( ln_zps .AND. .NOT. ln_isfcav)                               & 
     184               &            CALL zps_hde    ( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
    183185               &                                          rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    184             IF( ln_zps .AND. ln_isfcav) & 
     186            IF( ln_zps .AND.       ln_isfcav)                              & 
    185187               &            CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    186188               &                                          rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
     
    259261                             CALL tra_nxt( kstp )                ! tracer fields at next time step 
    260262                             CALL eos    ( tsa, rhd, rhop, fsdept_n(:,:,:) )  ! Time-filtered in situ density for hpg computation 
    261             IF( ln_zps )     CALL zps_hde    ( kstp, jpts, tsa, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
     263            IF( ln_zps .AND. .NOT. ln_isfcav)                                & 
     264               &             CALL zps_hde    ( kstp, jpts, tsa, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
    262265               &                                           rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    263             IF( ln_zps .AND. ln_isfcav) & 
     266            IF( ln_zps .AND.       ln_isfcav)                                & 
    264267               &             CALL zps_hde_isf( kstp, jpts, tsa, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    265268               &                                           rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
     
    268271         IF ( .NOT. lk_dynspg_ts ) THEN                     ! eos already called in time-split case 
    269272                             CALL eos    ( tsn, rhd, rhop, fsdept_n(:,:,:) )  ! now in situ density for hpg computation 
    270          IF( ln_zps )        CALL zps_hde    ( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
    271             &                                              rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
    272          IF( ln_zps .AND. ln_isfcav) & 
     273         IF( ln_zps .AND. .NOT. ln_isfcav)                                   & 
     274               &             CALL zps_hde    ( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps: before horizontal gradient 
     275               &                                           rhd, gru , grv    )  ! of t, s, rd at the last ocean level 
     276         IF( ln_zps .AND.       ln_isfcav)                                   &  
    273277               &             CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv,  &    ! Partial steps for top cell (ISF) 
    274278               &                                           rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv ,   & 
  • branches/2015/dev_r5094_UKMO_ISFCLEAN/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90

    r5098 r5104  
    8383#endif 
    8484 
    85          IF( ln_zps )    CALL zps_hde    ( kstp, jptra, trn, gtru, gtrv )   ! Partial steps: now horizontal gradient of passive 
    86          IF( ln_zps .AND. ln_isfcav) & 
     85         IF( ln_zps  .AND. .NOT. ln_isfcav)        & 
     86            &            CALL zps_hde    ( kstp, jptra, trn, gtru, gtrv )   ! Partial steps: now horizontal gradient of passive 
     87         IF( ln_zps .AND.        ln_isfcav)        & 
    8788            &            CALL zps_hde_isf( kstp, jptra, trn, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi )  ! Partial steps: now horizontal gradient of passive 
    8889                                                                ! tracers at the bottom ocean level 
Note: See TracChangeset for help on using the changeset viewer.