Changeset 23 for trunk


Ignore:
Timestamp:
02/13/12 19:45:12 (12 years ago)
Author:
rblod
Message:

Add possibility to choose where to apply the barotropic correction

Location:
trunk/NEMOGCM/NEMO/OPA_SRC/OBC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_oce.F90

    r10 r23  
    7373 
    7474   REAL(wp), PUBLIC ::   obcsurftot       !: Total lateral surface of open boundaries 
     75!     Add computation of E/W/N/S lateral surface of open boundaries 
     76   REAL(wp), PUBLIC ::    &  !: 
     77      obcsurfeast     ,   &  !: East  lateral surface of open boundaries 
     78      obcsurfwest     ,   &  !: West  lateral surface of open boundaries 
     79      obcsurfnorth    ,   &  !: North lateral surface of open boundaries 
     80      obcsurfsouth           !: South lateral surface of open boundaries 
    7581    
    7682   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: &  !: 
  • trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90

    r22 r23  
    113113      jpisfm1 =  jpisf-1        !: last  ocean point         "                 " 
    114114    
     115   !! * CHOSE WHERE YOU WANT TO LOCATE THE BAROTROPIC CORRECTION VELOCITY 
     116   LOGICAL, PARAMETER ::     &  !: 
     117      lp_obc_east_barotp_corr  = .TRUE.,   & !: 
     118      lp_obc_west_barotp_corr  = .TRUE.,   & !: 
     119      lp_obc_north_barotp_corr = .TRUE.,   & !: 
     120      lp_obc_south_barotp_corr = .TRUE.      !: 
     121 
    115122   INTEGER, PARAMETER ::   jpnic = 2700   !: maximum number of isolated coastlines points  
    116123 
  • trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par_EEL_R5.h90

    r1 r23  
    7272      jpisfm1 =  jpisf-1        !: last  ocean point         "                 " 
    7373    
     74   !! * CHOSE WHERE YOU WANT TO LOCATE THE BAROTROPIC CORRECTION VELOCITY 
     75   LOGICAL, PARAMETER ::     &  !: 
     76      lp_obc_east_barotp_corr  = .TRUE.,   & !: 
     77      lp_obc_west_barotp_corr  = .TRUE.,   & !: 
     78      lp_obc_north_barotp_corr = .TRUE.,   & !: 
     79      lp_obc_south_barotp_corr = .TRUE.      !: 
     80 
    7481   INTEGER, PARAMETER ::     &  !: 
    7582      jpnic = 2700              !: maximum number of isolated coastlines points  
  • trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcini.F90

    r18 r23  
    423423      ! 3.1 Total lateral surface  
    424424      ! ------------------------- 
     425      obcsurfeast  = 0.e0       ;       obcsurfwest  = 0.e0    
     426      obcsurfnorth = 0.e0       ;       obcsurfsouth = 0.e0    
    425427      obcsurftot = 0.e0 
    426428 
    427       IF( lp_obc_east ) THEN ! ... East open boundary lateral surface 
     429      IF( lp_obc_east .AND. lp_obc_east_barotp_corr ) THEN ! ... East open boundary lateral surface 
    428430         DO ji = nie0, nie1 
    429431            DO jj = 1, jpj  
    430                obcsurftot = obcsurftot+hu(ji,jj)*e2u(ji,jj)*uemsk(jj,1) * MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
     432               obcsurfeast = obcsurfeast+hu(ji,jj)*e2u(ji,jj)*uemsk(jj,1) * MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
    431433            END DO 
    432434         END DO 
    433       END IF 
    434  
    435       IF( lp_obc_west ) THEN ! ... West open boundary lateral surface 
     435         obcsurftot = obcsurftot + obcsurfeast 
     436      END IF 
     437 
     438      IF( lp_obc_west .AND. lp_obc_west_barotp_corr ) THEN ! ... West open boundary lateral surface 
    436439         DO ji = niw0, niw1 
    437440            DO jj = 1, jpj  
    438                obcsurftot = obcsurftot+hu(ji,jj)*e2u(ji,jj)*uwmsk(jj,1) * MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
     441               obcsurfwest = obcsurfwest+hu(ji,jj)*e2u(ji,jj)*uwmsk(jj,1) * MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
    439442            END DO 
    440443         END DO 
    441       END IF 
    442  
    443       IF( lp_obc_north ) THEN ! ... North open boundary lateral surface 
     444         obcsurftot = obcsurftot + obcsurfwest 
     445      END IF 
     446 
     447      IF( lp_obc_north .AND. lp_obc_north_barotp_corr ) THEN ! ... North open boundary lateral surface 
    444448         DO jj = njn0, njn1 
    445449            DO ji = 1, jpi 
    446                obcsurftot = obcsurftot+hv(ji,jj)*e1v(ji,jj)*vnmsk(ji,1) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
     450               obcsurfnorth = obcsurfnorth+hv(ji,jj)*e1v(ji,jj)*vnmsk(ji,1) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
    447451            END DO 
    448452         END DO 
    449       END IF 
    450  
    451       IF( lp_obc_south ) THEN ! ... South open boundary lateral surface 
     453         obcsurftot = obcsurftot + obcsurfnorth 
     454      END IF 
     455 
     456      IF( lp_obc_south .AND. lp_obc_south_barotp_corr ) THEN ! ... South open boundary lateral surface 
    452457         DO jj = njs0, njs1 
    453458            DO ji = 1, jpi 
    454                obcsurftot = obcsurftot+hv(ji,jj)*e1v(ji,jj)*vsmsk(ji,1) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
     459               obcsurfsouth = obcsurfsouth+hv(ji,jj)*e1v(ji,jj)*vsmsk(ji,1) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
    455460            END DO 
    456461         END DO 
     462         obcsurftot = obcsurftot + obcsurfsouth 
    457463      END IF 
    458464 
  • trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcvol.F90

    r1 r23  
    8383      INTEGER ::   ji, jj, jk 
    8484      REAL(wp) ::   zubtpecor 
     85      REAL(wp) ::   zubtpecorE,zubtpecorW,zubtpecorS,zubtpecorN 
    8586      REAL(wp) ::   zCflxemp 
    8687      REAL(wp) ::   ztransw, ztranse, ztransn, ztranss, ztranst 
     
    105106 
    106107      zubtpecor = 0.e0 
     108      zubtpecorE = 0.e0 
     109      zubtpecorW = 0.e0 
     110      zubtpecorS = 0.e0 
     111      zubtpecorN = 0.e0 
    107112 
    108113      ! ... East open boundary 
     
    111116            DO jk = 1, jpkm1 
    112117               DO jj = 1, jpj 
    113                   zubtpecor = zubtpecor - ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * & 
     118                  zubtpecorE = zubtpecorE - ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * & 
    114119             &     uemsk(jj,jk)*MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
    115120               END DO 
     
    123128            DO jk = 1, jpkm1 
    124129               DO jj = 1, jpj 
    125                   zubtpecor = zubtpecor + ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * & 
     130                  zubtpecorW = zubtpecorW + ua(ji,jj,jk)*e2u(ji,jj)*fse3u(ji,jj,jk) * & 
    126131             &    uwmsk(jj,jk) *MAX(obctmsk(ji,jj),obctmsk(ji+1,jj) ) 
    127132               END DO 
     
    135140            DO jk = 1, jpkm1 
    136141               DO ji = 1, jpi 
    137                   zubtpecor = zubtpecor - va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * & 
     142                  zubtpecorN = zubtpecorN - va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * & 
    138143             &    vnmsk(ji,jk) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
    139144               END DO 
     
    147152            DO jk = 1, jpkm1 
    148153               DO ji = 1, jpi 
    149                   zubtpecor = zubtpecor + va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * & 
     154                  zubtpecorS = zubtpecorS + va(ji,jj,jk)*e1v(ji,jj)*fse3v(ji,jj,jk) * & 
    150155             &    vsmsk(ji,jk) * MAX(obctmsk(ji,jj),obctmsk(ji,jj+1) ) 
    151156               END DO 
     
    154159       ENDIF 
    155160 
    156       IF( lk_mpp )   CALL mpp_sum( zubtpecor )   ! sum over the global domain 
    157  
     161      IF( lk_mpp )   CALL mpp_sum( zubtpecorN )   ! sum over the global domain 
     162      IF( lk_mpp )   CALL mpp_sum( zubtpecorS )   ! sum over the global domain 
     163      IF( lk_mpp )   CALL mpp_sum( zubtpecorW )   ! sum over the global domain 
     164      IF( lk_mpp )   CALL mpp_sum( zubtpecorE )   ! sum over the global domain 
     165      zubtpecor = zubtpecorE +  zubtpecorW + zubtpecorN + zubtpecorS 
    158166 
    159167      ! 3. The normal velocity correction 
     
    165173         IF(lwp) WRITE(numout,*)'          cumulate flux EMP :', zCflxemp,' (m3/s)' 
    166174         IF(lwp) WRITE(numout,*)'          lateral transport :',zubtpecor,'(m3/s)' 
     175         IF(lwp) WRITE(numout,*)'          East  lateral transport (before corr.):',zubtpecorE,'(m3/s)' 
     176         IF(lwp) WRITE(numout,*)'          West  lateral transport (before corr.):',zubtpecorW,'(m3/s)' 
     177         IF(lwp) WRITE(numout,*)'          North lateral transport (before corr.):',zubtpecorN,'(m3/s)' 
     178         IF(lwp) WRITE(numout,*)'          South lateral transport (before corr.):',zubtpecorS,'(m3/s)' 
    167179         IF(lwp) WRITE(numout,*)'          net inflow        :',zubtpecor-zCflxemp,'(m3/s)' 
    168180      ENDIF 
     
    183195      ztranst = 0.e0  ! total 
    184196 
    185       IF( lp_obc_west ) THEN 
     197      IF( lp_obc_west .AND. lp_obc_west_barotp_corr ) THEN 
    186198         ! ... correction of the west velocity 
    187199         DO ji = fs_niw0, fs_niw1 ! Vector opt. 
     
    200212      END IF  
    201213 
    202       IF( lp_obc_east ) THEN 
     214      IF( lp_obc_east .AND. lp_obc_east_barotp_corr ) THEN 
    203215 
    204216         ! ... correction of the east velocity 
     
    221233      END IF  
    222234 
    223       IF( lp_obc_north ) THEN 
     235      IF( lp_obc_north .AND. lp_obc_north_barotp_corr ) THEN 
    224236 
    225237         ! ... correction of the north velocity 
     
    241253      END IF  
    242254 
    243       IF( lp_obc_south ) THEN 
     255      IF( lp_obc_south .AND. lp_obc_south_barotp_corr ) THEN 
    244256 
    245257         ! ... correction of the south velocity 
Note: See TracChangeset for help on using the changeset viewer.