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 6140 for trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90 – NEMO

Ignore:
Timestamp:
2015-12-21T12:35:23+01:00 (8 years ago)
Author:
timgraham
Message:

Merge of branches/2015/dev_merge_2015 back into trunk. Merge excludes NEMOGCM/TOOLS/OBSTOOLS/ for now due to issues with the change of file type. Will sort these manually with further commits.

Branch merged as follows:
In the working copy of branch ran:
svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk@HEAD
Small conflicts due to bug fixes applied to trunk since the dev_merge_2015 was copied. Bug fixes were applied to the branch as well so these were easy to resolve.
Branch committed at this stage

In working copy run:
svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
to switch working copy

Run:
svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2015/dev_merge_2015
to merge the branch into the trunk and then commit - no conflicts at this stage.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90

    r4292 r6140  
    1616   !!   bdy_tra_frs        : Apply Flow Relaxation Scheme 
    1717   !!---------------------------------------------------------------------- 
    18    USE timing          ! Timing 
    19    USE oce             ! ocean dynamics and tracers variables 
    20    USE dom_oce         ! ocean space and time domain variables  
    21    USE bdy_oce         ! ocean open boundary conditions 
    22    USE bdylib          ! for orlanski library routines 
    23    USE bdydta, ONLY:   bf 
    24    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    25    USE in_out_manager  ! I/O manager 
    26  
     18   USE oce            ! ocean dynamics and tracers variables 
     19   USE dom_oce        ! ocean space and time domain variables  
     20   USE bdy_oce        ! ocean open boundary conditions 
     21   USE bdylib         ! for orlanski library routines 
     22   USE bdydta   , ONLY:   bf   !  
     23   ! 
     24   USE in_out_manager ! I/O manager 
     25   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     26   USE timing         ! Timing 
    2727 
    2828   IMPLICIT NONE 
    2929   PRIVATE 
    3030 
    31    PUBLIC bdy_tra      ! routine called in tranxt.F90  
    32    PUBLIC bdy_tra_dmp  ! routine called in step.F90  
     31   PUBLIC   bdy_tra      ! called in tranxt.F90  
     32   PUBLIC   bdy_tra_dmp  ! called in step.F90  
    3333 
    3434   !!---------------------------------------------------------------------- 
     
    4646      !! 
    4747      !!---------------------------------------------------------------------- 
    48       INTEGER, INTENT( in ) :: kt     ! Main time step counter 
    49       !! 
    50       INTEGER               :: ib_bdy ! Loop index 
     48      INTEGER, INTENT(in) ::   kt   ! Main time step counter 
     49      ! 
     50      INTEGER ::   ib_bdy   ! Loop index 
     51      !!---------------------------------------------------------------------- 
    5152 
    5253      DO ib_bdy=1, nb_bdy 
    53  
     54         ! 
    5455         SELECT CASE( cn_tra(ib_bdy) ) 
    55          CASE('none') 
    56             CYCLE 
    57          CASE('frs') 
    58             CALL bdy_tra_frs( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    59          CASE('specified') 
    60             CALL bdy_tra_spe( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    61          CASE('neumann') 
    62             CALL bdy_tra_nmn( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    63          CASE('orlanski') 
    64             CALL bdy_tra_orlanski( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ll_npo=.false. ) 
    65          CASE('orlanski_npo') 
    66             CALL bdy_tra_orlanski( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ll_npo=.true. ) 
    67          CASE('runoff') 
    68             CALL bdy_tra_rnf( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
    69          CASE DEFAULT 
    70             CALL ctl_stop( 'bdy_tra : unrecognised option for open boundaries for T and S' ) 
     56         CASE('none'        )   ;   CYCLE 
     57         CASE('frs'         )   ;   CALL bdy_tra_frs     ( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
     58         CASE('specified'   )   ;   CALL bdy_tra_spe     ( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
     59         CASE('neumann'     )   ;   CALL bdy_tra_nmn     ( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
     60         CASE('orlanski'    )   ;   CALL bdy_tra_orlanski( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ll_npo=.false. ) 
     61         CASE('orlanski_npo')   ;   CALL bdy_tra_orlanski( idx_bdy(ib_bdy), dta_bdy(ib_bdy), ll_npo=.true. ) 
     62         CASE('runoff'      )   ;   CALL bdy_tra_rnf     ( idx_bdy(ib_bdy), dta_bdy(ib_bdy), kt ) 
     63         CASE DEFAULT           ;   CALL ctl_stop( 'bdy_tra : unrecognised option for open boundaries for T and S' ) 
    7164         END SELECT 
    7265         ! Boundary points should be updated 
    7366         CALL lbc_bdy_lnk( tsa(:,:,:,jp_tem), 'T', 1., ib_bdy ) 
    7467         CALL lbc_bdy_lnk( tsa(:,:,:,jp_sal), 'T', 1., ib_bdy ) 
    75       ENDDO 
    76       ! 
    77  
     68      END DO 
     69      ! 
    7870   END SUBROUTINE bdy_tra 
    7971 
     72 
    8073   SUBROUTINE bdy_tra_frs( idx, dta, kt ) 
    8174      !!---------------------------------------------------------------------- 
     
    8679      !! Reference : Engedahl H., 1995, Tellus, 365-382. 
    8780      !!---------------------------------------------------------------------- 
    88       INTEGER,         INTENT(in) ::   kt 
    89       TYPE(OBC_INDEX), INTENT(in) ::   idx  ! OBC indices 
    90       TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data 
    91       !!  
     81      INTEGER,         INTENT(in) ::   kt    ! 
     82      TYPE(OBC_INDEX), INTENT(in) ::   idx   ! OBC indices 
     83      TYPE(OBC_DATA),  INTENT(in) ::   dta   ! OBC external data 
     84      ! 
    9285      REAL(wp) ::   zwgt           ! boundary weight 
    9386      INTEGER  ::   ib, ik, igrd   ! dummy loop indices 
     
    9588      !!---------------------------------------------------------------------- 
    9689      ! 
    97       IF( nn_timing == 1 ) CALL timing_start('bdy_tra_frs') 
     90      IF( nn_timing == 1 )   CALL timing_start('bdy_tra_frs') 
    9891      ! 
    9992      igrd = 1                       ! Everything is at T-points here 
     
    108101      END DO  
    109102      ! 
    110       IF( kt .eq. nit000 ) CLOSE( unit = 102 ) 
    111       ! 
    112       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_frs') 
     103      IF( kt .eq. nit000 )   CLOSE( unit = 102 ) 
     104      ! 
     105      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_frs') 
    113106      ! 
    114107   END SUBROUTINE bdy_tra_frs 
    115    
     108 
     109 
    116110   SUBROUTINE bdy_tra_spe( idx, dta, kt ) 
    117111      !!---------------------------------------------------------------------- 
     
    121115      !!  
    122116      !!---------------------------------------------------------------------- 
    123       INTEGER,         INTENT(in) ::   kt 
    124       TYPE(OBC_INDEX), INTENT(in) ::   idx  ! OBC indices 
    125       TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data 
    126       !!  
     117      INTEGER,         INTENT(in) ::   kt    ! 
     118      TYPE(OBC_INDEX), INTENT(in) ::   idx   ! OBC indices 
     119      TYPE(OBC_DATA),  INTENT(in) ::   dta   ! OBC external data 
     120      ! 
    127121      REAL(wp) ::   zwgt           ! boundary weight 
    128122      INTEGER  ::   ib, ik, igrd   ! dummy loop indices 
     
    142136      END DO 
    143137      ! 
    144       IF( kt .eq. nit000 ) CLOSE( unit = 102 ) 
    145       ! 
    146       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_spe') 
     138      IF( kt == nit000 )  CLOSE( unit = 102 ) 
     139      ! 
     140      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_spe') 
    147141      ! 
    148142   END SUBROUTINE bdy_tra_spe 
    149143 
     144 
    150145   SUBROUTINE bdy_tra_nmn( idx, dta, kt ) 
    151146      !!---------------------------------------------------------------------- 
     
    155150      !!  
    156151      !!---------------------------------------------------------------------- 
    157       INTEGER,         INTENT(in) ::   kt 
    158       TYPE(OBC_INDEX), INTENT(in) ::   idx  ! OBC indices 
    159       TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data 
    160       !!  
     152      INTEGER,         INTENT(in) ::   kt    !  
     153      TYPE(OBC_INDEX), INTENT(in) ::   idx   ! OBC indices 
     154      TYPE(OBC_DATA) , INTENT(in) ::   dta   ! OBC external data 
     155      ! 
    161156      REAL(wp) ::   zwgt           ! boundary weight 
    162157      INTEGER  ::   ib, ik, igrd   ! dummy loop indices 
     
    164159      !!---------------------------------------------------------------------- 
    165160      ! 
    166       IF( nn_timing == 1 ) CALL timing_start('bdy_tra_nmn') 
     161      IF( nn_timing == 1 )   CALL timing_start('bdy_tra_nmn') 
    167162      ! 
    168163      igrd = 1                       ! Everything is at T-points here 
     
    196191      END DO 
    197192      ! 
    198       IF( kt .eq. nit000 ) CLOSE( unit = 102 ) 
    199       ! 
    200       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_nmn') 
     193      IF( kt == nit000 )  CLOSE( unit = 102 ) 
     194      ! 
     195      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_nmn') 
    201196      ! 
    202197   END SUBROUTINE bdy_tra_nmn 
     
    213208      !! References:  Marchesiello, McWilliams and Shchepetkin, Ocean Modelling vol. 3 (2001)     
    214209      !!---------------------------------------------------------------------- 
    215       TYPE(OBC_INDEX),              INTENT(in) ::   idx  ! OBC indices 
    216       TYPE(OBC_DATA),               INTENT(in) ::   dta  ! OBC external data 
    217       LOGICAL,                      INTENT(in) ::   ll_npo  ! switch for NPO version 
    218  
     210      TYPE(OBC_INDEX), INTENT(in) ::   idx     ! OBC indices 
     211      TYPE(OBC_DATA) , INTENT(in) ::   dta     ! OBC external data 
     212      LOGICAL        , INTENT(in) ::   ll_npo  ! switch for NPO version 
     213      ! 
    219214      INTEGER  ::   igrd                                    ! grid index 
    220215      !!---------------------------------------------------------------------- 
    221  
     216      ! 
    222217      IF( nn_timing == 1 ) CALL timing_start('bdy_tra_orlanski') 
    223218      ! 
     
    230225      CALL bdy_orlanski_3d( idx, igrd, tsb(:,:,:,jp_sal), tsa(:,:,:,jp_sal), dta%sal, ll_npo ) 
    231226      ! 
    232       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_orlanski') 
    233       ! 
    234  
     227      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_orlanski') 
     228      ! 
    235229   END SUBROUTINE bdy_tra_orlanski 
    236230 
     
    245239      !!  
    246240      !!---------------------------------------------------------------------- 
    247       INTEGER,         INTENT(in) ::   kt 
    248       TYPE(OBC_INDEX), INTENT(in) ::   idx  ! OBC indices 
    249       TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data 
    250       !!  
     241      INTEGER        , INTENT(in) ::   kt    !  
     242      TYPE(OBC_INDEX), INTENT(in) ::   idx   ! OBC indices 
     243      TYPE(OBC_DATA) , INTENT(in) ::   dta   ! OBC external data 
     244      ! 
    251245      REAL(wp) ::   zwgt           ! boundary weight 
    252246      INTEGER  ::   ib, ik, igrd   ! dummy loop indices 
     
    254248      !!---------------------------------------------------------------------- 
    255249      ! 
    256       IF( nn_timing == 1 ) CALL timing_start('bdy_tra_rnf') 
     250      IF( nn_timing == 1 )   CALL timing_start('bdy_tra_rnf') 
    257251      ! 
    258252      igrd = 1                       ! Everything is at T-points here 
     
    268262      END DO 
    269263      ! 
    270       IF( kt .eq. nit000 ) CLOSE( unit = 102 ) 
    271       ! 
    272       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_rnf') 
     264      IF( kt == nit000 )  CLOSE( unit = 102 ) 
     265      ! 
     266      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_rnf') 
    273267      ! 
    274268   END SUBROUTINE bdy_tra_rnf 
    275269 
     270 
    276271   SUBROUTINE bdy_tra_dmp( kt ) 
    277272      !!---------------------------------------------------------------------- 
     
    281276      !!  
    282277      !!---------------------------------------------------------------------- 
    283       INTEGER,         INTENT(in) ::   kt 
    284       !!  
     278      INTEGER, INTENT(in) ::   kt   ! 
     279      ! 
    285280      REAL(wp) ::   zwgt           ! boundary weight 
    286281      REAL(wp) ::   zta, zsa, ztime 
     
    290285      !!---------------------------------------------------------------------- 
    291286      ! 
    292       IF( nn_timing == 1 ) CALL timing_start('bdy_tra_dmp') 
    293       ! 
    294       DO ib_bdy=1, nb_bdy 
    295          IF ( ln_tra_dmp(ib_bdy) ) THEN 
     287      IF( nn_timing == 1 )   CALL timing_start('bdy_tra_dmp') 
     288      ! 
     289      DO ib_bdy = 1, nb_bdy 
     290         IF( ln_tra_dmp(ib_bdy) ) THEN 
    296291            igrd = 1                       ! Everything is at T-points here 
    297292            DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 
     
    307302            END DO 
    308303         ENDIF 
    309       ENDDO 
    310       ! 
    311       IF( nn_timing == 1 ) CALL timing_stop('bdy_tra_dmp') 
     304      END DO 
     305      ! 
     306      IF( nn_timing == 1 )   CALL timing_stop('bdy_tra_dmp') 
    312307      ! 
    313308   END SUBROUTINE bdy_tra_dmp 
     
    325320      WRITE(*,*) 'bdy_tra_dmp: You should not have seen this print! error?', kt 
    326321   END SUBROUTINE bdy_tra_dmp 
    327  
    328322#endif 
    329323 
Note: See TracChangeset for help on using the changeset viewer.