New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8168 for branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90 – NEMO

Ignore:
Timestamp:
2017-06-13T18:50:51+02:00 (7 years ago)
Author:
glong
Message:

changes as of eod 13/16/17

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/GO6_dyn_vrt_diag/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90

    r7900 r8168  
    343343 
    344344 
    345    SUBROUTINE dyn_vrt_dia_3d( utend, vtend, id_dia_vor_int, id_dia_vor_mn) 
     345   ! TODO - remove kt only used for validation 
     346   SUBROUTINE dyn_vrt_dia_3d( utend, vtend, id_dia_vor_int, id_dia_vor_mn, kt) 
    346347 
    347348      !!---------------------------------------------------------------------- 
     
    356357      !! 
    357358      !!---------------------------------------------------------------------- 
    358       REAL :: utend(jpi,jpj,jpk) ! contribution to du/dt 
    359       REAL :: vtend(jpi,jpj,jpk) ! contribution to dv/dt 
    360       INTEGER :: id_dia_vor_int  ! identifier for the vertical integral vorticity diagnostic 
    361       INTEGER :: id_dia_vor_mn   ! identifier for the vertical mean vorticity diagnostic 
    362       ! 
    363       !!---------------------------------------------------------------------- 
    364       ! 
    365       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     359      REAL,    INTENT(in) :: utend(jpi,jpj,jpk) ! contribution to du/dt 
     360      REAL,    INTENT(in) :: vtend(jpi,jpj,jpk) ! contribution to dv/dt 
     361      INTEGER, INTENT(in) :: id_dia_vor_int  ! identifier for the vertical integral vorticity diagnostic 
     362      INTEGER, INTENT(in) :: id_dia_vor_mn   ! identifier for the vertical mean vorticity diagnostic 
     363      INTEGER             ::   kt   ! ocean time-step index 
     364      ! 
     365      !!---------------------------------------------------------------------- 
     366      ! 
     367      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     368      INTEGER  ::   ji_min, ji_max ! dummy loop indices for dynspg_flt 
    366369      ! 
    367370      REAL(wp), POINTER, DIMENSION(:,:) :: u_int   ! u vertical integral 
     
    370373      CALL wrk_alloc(jpi, jpj, u_int) 
    371374      CALL wrk_alloc(jpi, jpj, v_int) 
     375 
     376      ji_min = 1 
     377      ji_max = jpi 
     378 
     379      IF ( id_dia_vor_int == 71 .OR. id_dia_vor_mn == 72 ) THEN 
     380          ji_min = fs_2 
     381          ji_max = fs_jpim1 
     382      END IF 
    372383 
    373384      u_int(:,:) = 0.0_wp 
     
    380391      DO jk = 1,jpk 
    381392          DO jj = 1,jpj 
    382               DO ji = 1,jpi 
     393              DO ji = ji_min,ji_max 
    383394                  u_int(ji,jj) = u_int(ji,jj) + utend(ji,jj,jk)*fse3u(ji,jj,jk) 
    384395                  v_int(ji,jj) = v_int(ji,jj) + vtend(ji,jj,jk)*fse3v(ji,jj,jk) 
     396 
     397                  ! TODO remove - for validation only 
     398                  IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 
     399                      WRITE(numout, *) 'dyn_vrt_dia_3d id:', id_dia_vor_int,   & 
     400                             &         ':ji:', ji,                             & 
     401                             &         ':jj:', jj,                             & 
     402                             &         ':jk:', jk,                             & 
     403                             &         ':u_int:', u_int(ji,jj),                & 
     404                             &         ':u_tend:', utend(ji,jj,jk),            & 
     405                             &         ':fse3u:', fse3u(ji,jj,jk) 
     406                      WRITE(numout, *) 'dyn_vrt_dia_3d id:', id_dia_vor_int,   & 
     407                             &         ':ji:', ji,                             & 
     408                             &         ':jj:', jj,                             & 
     409                             &         ':jk:', jk,                             & 
     410                             &         ':v_int:', v_int(ji,jj),                & 
     411                             &         ':v_tend:', vtend(ji,jj,jk),            & 
     412                             &         ':fse3v:', fse3v(ji,jj,jk) 
     413                  END IF 
    385414              END DO 
    386415          END DO 
    387416      END DO 
    388417 
    389       CALL dyn_vrt_dia_2d(u_int, v_int, id_dia_vor_int, id_dia_vor_mn) 
     418      CALL dyn_vrt_dia_2d(u_int, v_int, id_dia_vor_int, id_dia_vor_mn, kt) 
    390419 
    391420      CALL wrk_dealloc(jpi, jpj, u_int) 
     
    395424 
    396425 
    397    SUBROUTINE dyn_vrt_dia_2d( u_int, v_int, id_dia_vor_int, id_dia_vor_mn) 
     426   ! TODO - remove kt only used for validation 
     427   SUBROUTINE dyn_vrt_dia_2d( u_int, v_int, id_dia_vor_int, id_dia_vor_mn, kt) 
    398428 
    399429      !!---------------------------------------------------------------------- 
     
    413443      !! 
    414444      !!---------------------------------------------------------------------- 
    415       REAL :: u_int(jpi,jpj)     ! u vertical integral 
    416       REAL :: v_int(jpi,jpj)     ! v vertical integral 
     445      REAL    :: u_int(jpi,jpj)  ! u vertical integral 
     446      REAL    :: v_int(jpi,jpj)  ! v vertical integral 
    417447      INTEGER :: id_dia_vor_int  ! identifier for the vertical integral vorticity diagnostic 
    418448      INTEGER :: id_dia_vor_mn   ! identifier for the vertical mean vorticity diagnostic 
     449      INTEGER :: kt              ! ocean time-step index 
    419450      ! 
    420451      !!---------------------------------------------------------------------- 
     
    427458      REAL(wp), POINTER, DIMENSION(:,:) :: vor_int ! vort trend of vert integrals 
    428459      REAL(wp), POINTER, DIMENSION(:,:) :: vor_mn  ! vort trend of vert means 
     460      CHARACTER(len=20) ::   cid_dia_vor_int       ! Identifier for iom_put 
     461      CHARACTER(len=20) ::   cid_dia_vor_mn        ! Identifier for iom_put 
    429462 
    430463      CALL wrk_alloc(jpi, jpj, u_mn) 
     
    435468      CALL lbc_lnk( u_int, 'U', 1. ) 
    436469      CALL lbc_lnk( v_int, 'V', 1. ) 
     470 
     471      WRITE ( cid_dia_vor_int, "(A16,I2)" ) "dia_vor_int-",  id_dia_vor_int 
     472      WRITE ( cid_dia_vor_mn,  "(A17,I2)" ) "dia_vor_mean-", id_dia_vor_mn 
    437473 
    438474      ! 
     
    448484                  &            - u_int(ji,jj+1) * e1u(ji,jj+1) )   & 
    449485                  &           / ( e1f(ji,jj)    * e2f(ji,jj) ) 
     486 
     487              ! TODO remove - for validation only 
     488              IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 
     489                  WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 
     490                       &           ':ji:', ji,                           & 
     491                       &           ':jj:', jj,                           & 
     492                       &           ':vor_int:', vor_int(ji,jj),          & 
     493                       &           ':v_int(i+1):', v_int(ji+1,jj),       & 
     494                       &           ':e2v(j+1):', e2v(ji+1,jj),           & 
     495                       &           ':v_int:', v_int(ji,jj),              & 
     496                       &           ':e2v:', e2v(ji,jj),                  & 
     497                       &           ':u_int:', u_int(ji,jj),              & 
     498                       &           ':e1u:', e1u(ji,jj),                  & 
     499                       &           ':u_int(j+1):', u_int(ji,jj+1),       & 
     500                       &           ':e1u(j+1):', e1u(ji,jj+1),           & 
     501                       &           ':e1f:', e1f(ji,jj),                  & 
     502                       &           ':e2f:', e2f(ji,jj) 
     503              END IF 
    450504          END DO 
    451505      END DO 
     
    473527              ELSE 
    474528                  v_mn(ji,jj) = 0.0_wp 
     529              END IF 
     530 
     531              ! TODO remove - for validation only 
     532              IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 
     533                  WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 
     534                       &           ':ikbu:', ikbu,                       & 
     535                       &           ':u_int:', u_int(ji,jj),              & 
     536                       &           ':u_mn:', u_mn(ji,jj),                & 
     537                       &           ':ikbv:', ikbv,                       & 
     538                       &           ':v_int:', v_int(ji,jj),              & 
     539                       &           ':v_mn:', v_mn(ji,jj) 
    475540              END IF 
    476541          END DO 
     
    489554                  &           - u_mn(ji,jj+1) * e1u(ji,jj+1) )   & 
    490555                  &          / ( e1f(ji,jj)   * e2f(ji,jj) ) 
     556 
     557              ! TODO remove - for validation only 
     558              IF ( kt == 1 .AND. ji == 17 .AND. jj == 12 .AND. id_dia_vor_int == 11 ) THEN 
     559                  WRITE(numout, *) 'dyn_vrt_dia_2d id:', id_dia_vor_int, & 
     560                       &           ':ji:', ji,                           & 
     561                       &           ':jj:', jj,                           & 
     562                       &           ':vor_mn:', vor_mn(ji,jj),            & 
     563                       &           ':v_mn(i+1):', v_mn(ji+1,jj),         & 
     564                       &           ':e2v(j+1):', e2v(ji+1,jj),           & 
     565                       &           ':v_mn:', v_mn(ji,jj),                & 
     566                       &           ':e2v:', e2v(ji,jj),                  & 
     567                       &           ':u_mn:', u_mn(ji,jj),                & 
     568                       &           ':e1u:', e1u(ji,jj),                  & 
     569                       &           ':u_mn(j+1):', u_mn(ji,jj+1),         & 
     570                       &           ':e1u(j+1):', e1u(ji,jj+1),           & 
     571                       &           ':e1f:', e1f(ji,jj),                  & 
     572                       &           ':e2f:', e2f(ji,jj) 
     573              END IF 
    491574          END DO 
    492575      END DO 
     
    494577 
    495578      ! Call iom_put for the vertical integral vorticity tendencies 
    496       IF (id_dia_vor_int == 1) THEN 
    497           CALL iom_put( "dia_vor_int", vor_int(:,:)) 
    498       ENDIF 
     579      CALL iom_put( cid_dia_vor_int, vor_int(:,:)) 
    499580 
    500581      ! Call iom_put for the vertical mean vorticity tendencies 
    501       IF (id_dia_vor_int == 1) THEN 
    502           CALL iom_put( "dia_vor_mn", vor_mn(:,:)) 
    503       ENDIF 
     582      CALL iom_put( cid_dia_vor_mn, vor_mn(:,:)) 
    504583 
    505584      CALL wrk_dealloc(jpi, jpj, u_mn) 
Note: See TracChangeset for help on using the changeset viewer.