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 5917 for branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90 – NEMO

Ignore:
Timestamp:
2015-11-25T11:03:43+01:00 (8 years ago)
Author:
jchanut
Message:

Free surface simplification #1620. Step 4 (Final): add Gurvan's suggestions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5847_MERCATOR9_solveur_simplification/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r5902 r5917  
    5353   TYPE(TIDES_DATA), PUBLIC, DIMENSION(jp_bdy), TARGET :: tides  !: External tidal harmonics data 
    5454!$AGRIF_END_DO_NOT_TREAT 
    55    TYPE(OBC_DATA)  , PRIVATE, DIMENSION(jp_bdy) :: dta_bdy_s  !: bdy external data (slow component) 
     55   TYPE(OBC_DATA)  , PUBLIC, DIMENSION(jp_bdy) :: dta_bdy_s  !: bdy external data (slow component) 
    5656 
    5757   !!---------------------------------------------------------------------- 
     
    269269            ENDIF 
    270270            ! 
    271             IF ( ln_dynspg_ts ) THEN ! Allocate arrays to save slowly varying boundary data during 
    272                                      ! time splitting integration 
    273                ALLOCATE( dta_bdy_s(ib_bdy)%ssh ( ilen0(1) ) ) 
    274                ALLOCATE( dta_bdy_s(ib_bdy)%u2d ( ilen0(2) ) ) 
    275                ALLOCATE( dta_bdy_s(ib_bdy)%v2d ( ilen0(3) ) ) 
    276                dta_bdy_s(ib_bdy)%ssh(:) = 0.e0 
    277                dta_bdy_s(ib_bdy)%u2d(:) = 0.e0 
    278                dta_bdy_s(ib_bdy)%v2d(:) = 0.e0 
    279             ENDIF 
     271            ! Allocate slow varying data in the case of time splitting: 
     272            ! Do it anyway because at this stage knowledge of free surface scheme is unknown 
     273            ALLOCATE( dta_bdy_s(ib_bdy)%ssh ( ilen0(1) ) ) 
     274            ALLOCATE( dta_bdy_s(ib_bdy)%u2d ( ilen0(2) ) ) 
     275            ALLOCATE( dta_bdy_s(ib_bdy)%v2d ( ilen0(3) ) ) 
     276            dta_bdy_s(ib_bdy)%ssh(:) = 0.e0 
     277            dta_bdy_s(ib_bdy)%u2d(:) = 0.e0 
     278            dta_bdy_s(ib_bdy)%v2d(:) = 0.e0 
    280279            ! 
    281280         ENDIF ! nn_dyn2d_dta(ib_bdy) .ge. 2 
     
    396395      !! 
    397396      LOGICAL  :: lk_first_btstp  ! =.TRUE. if time splitting and first barotropic step 
    398       INTEGER,          DIMENSION(jpbgrd) :: ilen0  
     397      INTEGER, DIMENSION(jpbgrd) :: ilen0  
    399398      INTEGER, DIMENSION(1:jpbgrd) :: nblen, nblenrim  ! short cuts 
    400399      INTEGER  :: itide, ib_bdy, ib, igrd                     ! loop indices 
     
    415414      ! Absolute time from model initialization:    
    416415      IF( PRESENT(kit) ) THEN   
    417          z_arg = ( kt + (kit+0.5_wp*(time_add-1)) / REAL(nn_baro,wp) ) * rdt 
     416         z_arg = ( kt + (kit+time_add-1) / REAL(nn_baro,wp) ) * rdt 
    418417      ELSE                               
    419418         z_arg = ( kt + time_add ) * rdt 
     
    455454            zoff = -kt_tide * rdt ! time offset relative to nodal factor computation time 
    456455            ! 
    457             ! If time splitting, save data at first barotropic iteration 
    458             IF ( PRESENT(kit) ) THEN 
    459                IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 
    460                   IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
    461                   IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
    462                   IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
    463  
    464                ELSE ! Initialize arrays from slow varying open boundary data:             
    465                   IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
    466                   IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
    467                   IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    468                ENDIF 
     456            ! If time splitting, initialize arrays from slow varying open boundary data: 
     457            IF ( PRESENT(kit) ) THEN            
     458               IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
     459               IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
     460               IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    469461            ENDIF 
    470462            ! 
Note: See TracChangeset for help on using the changeset viewer.