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 2618 for branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC – NEMO

Ignore:
Timestamp:
2011-02-26T13:31:38+01:00 (13 years ago)
Author:
gm
Message:

dynamic mem: #785 ; move dyn allocation from nemogcm to module when possible (continuation)

Location:
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obcdyn_bt.F90

    r2528 r2618  
    1616 
    1717   !!---------------------------------------------------------------------------------- 
    18    !! * Modules used 
    1918   USE oce             ! ocean dynamics and tracers  
    2019   USE dom_oce         ! ocean space and time domain 
     
    4140CONTAINS 
    4241 
    43    SUBROUTINE obc_dyn_bt ( kt ) 
     42   SUBROUTINE obc_dyn_bt( kt ) 
    4443      !!------------------------------------------------------------------------------ 
    4544      !!                      SUBROUTINE obc_dyn_bt 
     
    5554      !!      open one (must be done in the param_obc.h90 file). 
    5655      !! 
    57       !! ** Reference :  
    58       !!         Flather, R. A., 1976, Mem. Soc. R. Sci. Liege, Ser. 6, 10, 141-164 
    59       !! 
    60       !! History : 
    61       !!   9.0  !  05-12  (V. Garnier) original  
     56      !! ** Reference :   Flather, R. A., 1976, Mem. Soc. R. Sci. Liege, Ser. 6, 10, 141-164 
     57      !! 
     58      !! History :  9.0  !  05-12  (V. Garnier) original  
    6259      !!---------------------------------------------------------------------- 
    6360      !! * Arguments 
     
    321318      !!   9.0  !  05-12  (V. Garnier) original 
    322319      !!------------------------------------------------------------------------------ 
    323       !! * Local declaration 
    324       INTEGER ::   ji, jj, jk ! dummy loop indices 
    325  
     320      INTEGER ::   ji, jj, jk ! dummy loop indices 
    326321      !!------------------------------------------------------------------------------ 
    327322 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obcfla.F90

    r2528 r2618  
    55   !!====================================================================== 
    66   !! History :  2.0  ! 2005-12  (V. Garnier) original code 
    7    !!            3.3  ! 2010-11  (G. Madec) 
     7   !!            3.3  ! 2010-11  (G. Madec)  
     8   !!            4.0  ! 2011-02  (G. Madec) velocity & ssh passed in argument 
    89   !!---------------------------------------------------------------------- 
    910#if defined key_obc && defined key_dynspg_ts 
     
    3132 
    3233   !!---------------------------------------------------------------------- 
    33    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     34   !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
    3435   !! $Id$ 
    3536   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    3738CONTAINS 
    3839 
    39    SUBROUTINE obc_fla_ts 
     40   SUBROUTINE obc_fla_ts( pua, pva, p_sshn, p_ssha ) 
    4041      !!---------------------------------------------------------------------- 
    4142      !!                      SUBROUTINE obc_fla_ts 
     
    5253      !! ** Reference : Flather, R. A., 1976, Mem. Soc. R. Sci. Liege, Ser. 6, 10, 141-164 
    5354      !!---------------------------------------------------------------------- 
     55      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pua   , pva      ! after barotropic velocities 
     56      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_sshn, p_ssha   ! before, now, after sea surface height 
     57      !!---------------------------------------------------------------------- 
    5458      ! 
    55       IF( lp_obc_east  )   CALL obc_fla_ts_east  
    56       IF( lp_obc_west  )   CALL obc_fla_ts_west  
    57       IF( lp_obc_north )   CALL obc_fla_ts_north 
    58       IF( lp_obc_south )   CALL obc_fla_ts_south 
     59      IF( lp_obc_east  )   CALL obc_fla_ts_east ( pua, pva, p_sshn, p_ssha )  
     60      IF( lp_obc_west  )   CALL obc_fla_ts_west ( pua, pva, p_sshn, p_ssha ) 
     61      IF( lp_obc_north )   CALL obc_fla_ts_north( pua, pva, p_sshn, p_ssha ) 
     62      IF( lp_obc_south )   CALL obc_fla_ts_south( pua, pva, p_sshn, p_ssha )  
    5963      ! 
    6064   END SUBROUTINE obc_fla_ts 
    6165 
    6266 
    63    SUBROUTINE obc_fla_ts_east 
     67   SUBROUTINE obc_fla_ts_east( pua, pva, p_sshn, p_ssha )  
    6468      !!---------------------------------------------------------------------- 
    6569      !!                  ***  SUBROUTINE obc_fla_ts_east  *** 
    6670      !! 
    6771      !! ** Purpose :   Apply Flather's algorithm on east OBC velocities ua, va 
    68       !!              Fix sea surface height (sshn_e) on east open boundary 
     72      !!              Fix sea surface height (p_sshn) on east open boundary 
    6973      !!---------------------------------------------------------------------- 
     74      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pua   , pva      ! after barotropic velocities 
     75      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_sshn, p_ssha   ! before, now, after sea surface height 
     76      ! 
    7077      INTEGER ::   ji, jj ! dummy loop indices 
    7178      !!---------------------------------------------------------------------- 
     
    7380      DO ji = nie0, nie1 
    7481         DO jj = 1, jpj 
    75             ua_e    (ji,jj) = (  ubtfoe(jj) * hur(ji,jj) + SQRT( grav*hur(ji,jj) )          & 
    76                &            * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 - sshfoe(jj) )  ) * uemsk(jj,1) 
     82            pua     (ji,jj) = (  ubtfoe(jj) * hur(ji,jj) + SQRT( grav*hur(ji,jj) )          & 
     83               &            * ( ( p_sshn(ji,jj) + p_sshn(ji+1,jj) ) * 0.5 - sshfoe(jj) )  ) * uemsk(jj,1) 
    7784            sshfoe_b(ji,jj) =    sshfoe_b(ji,jj)         + SQRT( grav*hur(ji,jj) )          & 
    78                &            * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 - sshfoe(jj) )    * uemsk(jj,1) 
     85               &            * ( ( p_sshn(ji,jj) + p_sshn(ji+1,jj) ) * 0.5 - sshfoe(jj) )    * uemsk(jj,1) 
    7986         END DO 
    8087      END DO 
    8188      DO ji = nie0p1, nie1p1 
    8289         DO jj = 1, jpj 
    83             ssha_e(ji,jj) = ssha_e(ji,jj) * ( 1. - temsk(jj,1) ) + temsk(jj,1) * sshfoe(jj) 
    84             va_e  (ji,jj) = vbtfoe(jj) * hvr(ji,jj) * uemsk(jj,1) 
     90            p_ssha(ji,jj) = p_ssha(ji,jj) * ( 1. - temsk(jj,1) ) + temsk(jj,1) * sshfoe(jj) 
     91            pva   (ji,jj) = vbtfoe(jj) * hvr(ji,jj) * uemsk(jj,1) 
    8592         END DO 
    8693      END DO 
     
    8996 
    9097 
    91    SUBROUTINE obc_fla_ts_west 
     98   SUBROUTINE obc_fla_ts_west( pua, pva, p_sshn, p_ssha ) 
    9299      !!---------------------------------------------------------------------- 
    93100      !!                  ***  SUBROUTINE obc_fla_ts_west  *** 
    94101      !!  
    95102      !! ** Purpose :   Apply Flather's algorithm on west OBC velocities ua, va 
    96       !!              Fix sea surface height (sshn_e) on west open boundary 
     103      !!              Fix sea surface height (p_sshn) on west open boundary 
    97104      !!---------------------------------------------------------------------- 
     105      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pua   , pva      ! after barotropic velocities 
     106      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_sshn, p_ssha   ! before, now, after sea surface height 
     107      ! 
    98108      INTEGER ::   ji, jj ! dummy loop indices 
    99109      !!---------------------------------------------------------------------- 
     
    101111      DO ji = niw0, niw1 
    102112         DO jj = 1, jpj 
    103             ua_e    (ji,jj) = ( ubtfow(jj) * hur(ji,jj) - sqrt( grav * hur(ji,jj) )            & 
    104                &                * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 - sshfow(jj) ) ) * uwmsk(jj,1) 
    105             va_e    (ji,jj) =   vbtfow(jj) * hvr(ji,jj) * uwmsk(jj,1) 
     113            pua     (ji,jj) = ( ubtfow(jj) * hur(ji,jj) - sqrt( grav * hur(ji,jj) )            & 
     114               &            * ( ( p_sshn(ji,jj) + p_sshn(ji+1,jj) ) * 0.5 - sshfow(jj) ) ) * uwmsk(jj,1) 
     115            pva     (ji,jj) =   vbtfow(jj) * hvr(ji,jj) * uwmsk(jj,1) 
    106116            sshfow_b(ji,jj) =   sshfow_b(ji,jj) - SQRT( grav * hur(ji,jj) )                    & 
    107                &                * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 - sshfow(jj) )   * uwmsk(jj,1) 
    108             ssha_e  (ji,jj) = ssha_e(ji,jj) * ( 1. - twmsk(jj,1) ) + twmsk(jj,1)*sshfow(jj) 
     117               &            * ( ( p_sshn(ji,jj) + p_sshn(ji+1,jj) ) * 0.5 - sshfow(jj) )   * uwmsk(jj,1) 
     118            p_ssha  (ji,jj) = p_ssha(ji,jj) * ( 1. - twmsk(jj,1) ) + twmsk(jj,1)*sshfow(jj) 
    109119         END DO 
    110120      END DO 
     
    113123 
    114124 
    115    SUBROUTINE obc_fla_ts_north 
     125   SUBROUTINE obc_fla_ts_north( pua, pva, p_sshn, p_ssha ) 
    116126      !!---------------------------------------------------------------------- 
    117127      !!                     SUBROUTINE obc_fla_ts_north 
    118128      !! 
    119129      !! ** Purpose :   Apply Flather's algorithm on north OBC velocities ua, va 
    120       !!              Fix sea surface height (sshn_e) on north open boundary 
     130      !!              Fix sea surface height (p_sshn) on north open boundary 
    121131      !!---------------------------------------------------------------------- 
     132      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pua   , pva      ! after barotropic velocities 
     133      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_sshn, p_ssha   ! before, now, after sea surface height 
     134      ! 
    122135      INTEGER ::   ji, jj ! dummy loop indices 
    123136      !!---------------------------------------------------------------------- 
     
    125138      DO jj = njn0, njn1 
    126139         DO ji = 1, jpi 
    127             va_e    (ji,jj) = ( vbtfon(ji) * hvr(ji,jj) + sqrt( grav * hvr(ji,jj) )            & 
    128                &                * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 - sshfon(ji) ) ) * vnmsk(ji,1) 
     140            pva     (ji,jj) = ( vbtfon(ji) * hvr(ji,jj) + sqrt( grav * hvr(ji,jj) )            & 
     141               &                * ( ( p_sshn(ji,jj) + p_sshn(ji,jj+1) ) * 0.5 - sshfon(ji) ) ) * vnmsk(ji,1) 
    129142            sshfon_b(ji,jj) =   sshfon_b(ji,jj) + sqrt( grav * hvr(ji,jj) )                    & 
    130                &                * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 - sshfon(ji) )   * vnmsk(ji,1) 
     143               &                * ( ( p_sshn(ji,jj) + p_sshn(ji,jj+1) ) * 0.5 - sshfon(ji) )   * vnmsk(ji,1) 
    131144         END DO 
    132145      END DO 
    133146      DO jj = njn0p1, njn1p1 
    134147         DO ji = 1, jpi 
    135             ssha_e(ji,jj) = ssha_e(ji,jj) * ( 1. - tnmsk(ji,1) ) + sshfon(ji) * tnmsk(ji,1) 
    136             ua_e  (ji,jj) = ubtfon(ji) * hur(ji,jj) * vnmsk(ji,1) 
     148            p_ssha(ji,jj) = p_ssha(ji,jj) * ( 1. - tnmsk(ji,1) ) + sshfon(ji) * tnmsk(ji,1) 
     149            pua   (ji,jj) = ubtfon(ji) * hur(ji,jj) * vnmsk(ji,1) 
    137150         END DO 
    138151      END DO 
     
    141154 
    142155 
    143    SUBROUTINE obc_fla_ts_south 
     156   SUBROUTINE obc_fla_ts_south( pua, pva, p_sshn, p_ssha ) 
    144157      !!---------------------------------------------------------------------- 
    145158      !!                     SUBROUTINE obc_fla_ts_south 
    146159      !! 
    147160      !! ** Purpose :   Apply Flather's algorithm on south OBC velocities ua, va 
    148       !!              Fix sea surface height (sshn_e) on south open boundary 
     161      !!              Fix sea surface height (p_sshn) on south open boundary 
    149162      !!---------------------------------------------------------------------- 
     163      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pua   , pva      ! after barotropic velocities 
     164      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   p_sshn, p_ssha   ! before, now, after sea surface height 
     165      ! 
    150166      INTEGER ::   ji, jj ! dummy loop indices 
    151167      !!---------------------------------------------------------------------- 
     
    153169      DO jj = njs0, njs1 
    154170         DO ji = 1, jpi 
    155             va_e    (ji,jj) = ( vbtfos(ji) * hvr(ji,jj) - sqrt( grav * hvr(ji,jj) )            & 
    156                &                * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 - sshfos(ji) ) ) * vsmsk(ji,1) 
    157             ua_e    (ji,jj) =   ubtfos(ji) * hur(ji,jj) * vsmsk(ji,1) 
     171            pva     (ji,jj) = ( vbtfos(ji) * hvr(ji,jj) - sqrt( grav * hvr(ji,jj) )            & 
     172               &                * ( ( p_sshn(ji,jj) + p_sshn(ji,jj+1) ) * 0.5 - sshfos(ji) ) ) * vsmsk(ji,1) 
     173            pua     (ji,jj) =   ubtfos(ji) * hur(ji,jj) * vsmsk(ji,1) 
    158174            sshfos_b(ji,jj) =   sshfos_b(ji,jj) - sqrt( grav * hvr(ji,jj) )                    & 
    159                &                * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 - sshfos(ji) )   * vsmsk(ji,1) 
    160             ssha_e  (ji,jj) = ssha_e(ji,jj) * (1. - tsmsk(ji,1) ) + tsmsk(ji,1) * sshfos(ji) 
     175               &                * ( ( p_sshn(ji,jj) + p_sshn(ji,jj+1) ) * 0.5 - sshfos(ji) )   * vsmsk(ji,1) 
     176            p_ssha  (ji,jj) = p_ssha(ji,jj) * (1. - tsmsk(ji,1) ) + tsmsk(ji,1) * sshfos(ji) 
    161177         END DO 
    162178      END DO 
     
    170186CONTAINS 
    171187 
    172    SUBROUTINE obc_fla_ts 
    173       WRITE(*,*) 'obc_fla_ts: You should not have seen this print! error?' 
     188   SUBROUTINE obc_fla_ts( pua, pva, p_sshn, p_ssha ) 
     189      REAL, DIMENSION(:,:)::   pua, pva, p_sshn, p_ssha 
     190      WRITE(*,*) 'obc_fla_ts: You should not have seen this print! error?', pua(1,1), pva(1,1), p_sshn(1,1), p_ssha(1,1) 
    174191   END SUBROUTINE obc_fla_ts 
    175192#endif 
Note: See TracChangeset for help on using the changeset viewer.