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 12250 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/BDY/bdydta.F90 – NEMO

Ignore:
Timestamp:
2019-12-14T09:41:16+01:00 (4 years ago)
Author:
smasson
Message:

rev12240_dev_r11943_MERGE_2019: same as [12246], add modifications from dev_r12114_ticket_2263, results unchanged except SPITZ12 as explained in #2263

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/BDY/bdydta.F90

    r12205 r12250  
    7575CONTAINS 
    7676 
    77    SUBROUTINE bdy_dta( kt, Kmm, kt_offset ) 
     77   SUBROUTINE bdy_dta( kt, Kmm, pt_offset ) 
    7878      !!---------------------------------------------------------------------- 
    7979      !!                   ***  SUBROUTINE bdy_dta  *** 
     
    8686      INTEGER, INTENT(in)           ::   kt           ! ocean time-step index  
    8787      INTEGER, INTENT(in)           ::   Kmm          ! ocean time level index 
    88       INTEGER, INTENT(in), OPTIONAL ::   kt_offset    ! time offset in units of timesteps 
    89       !                                               ! is present then units = subcycle timesteps. 
    90       !                                               ! kt_offset = 0 => get data at "now" time level 
    91       !                                               ! kt_offset = -1 => get data at "before" time level 
    92       !                                               ! kt_offset = +1 => get data at "after" time level 
    93       !                                               ! etc. 
     88      REAL(wp),INTENT(in), OPTIONAL ::   pt_offset    ! time offset in units of timesteps 
    9489      ! 
    9590      INTEGER ::  jbdy, jfld, jstart, jend, ib, jl    ! dummy loop indices 
     
    216211         ! read/update all bdy data 
    217212         ! ------------------------ 
    218          CALL fld_read( kt, 1, bf_alias, kt_offset = kt_offset ) 
     213         CALL fld_read( kt, 1, bf_alias, pt_offset = pt_offset, Kmm = Kmm ) 
    219214         ! apply some corrections in some specific cases... 
    220215         ! -------------------------------------------------- 
     
    336331                  nblen => idx_bdy(jbdy)%nblen 
    337332                  nblenrim => idx_bdy(jbdy)%nblenrim 
    338                   IF( cn_dyn2d(jbdy) == 'frs' ) THEN ; ilen1(:)=nblen(:) ; ELSE ; ilen1(:)=nblenrim(:) ; ENDIF  
    339                      IF ( dta_bdy(jbdy)%lneed_ssh   ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 
    340                      IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%u2d(1:ilen1(2)) = dta_bdy(jbdy)%u2d(1:ilen1(2)) 
    341                      IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%v2d(1:ilen1(3)) = dta_bdy(jbdy)%v2d(1:ilen1(3)) 
    342                   ENDIF 
    343                END DO 
    344             ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 
    345                ! 
    346                CALL bdy_dta_tides( kt=kt, kt_offset=kt_offset ) 
    347             ENDIF 
     333                  IF( cn_dyn2d(jbdy) == 'frs' ) THEN   ;   ilen1(:)=nblen(:) 
     334                  ELSE                                 ;   ilen1(:)=nblenrim(:) 
     335                  ENDIF 
     336                  IF ( dta_bdy(jbdy)%lneed_ssh   ) dta_bdy_s(jbdy)%ssh(1:ilen1(1)) = dta_bdy(jbdy)%ssh(1:ilen1(1)) 
     337                  IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%u2d(1:ilen1(2)) = dta_bdy(jbdy)%u2d(1:ilen1(2)) 
     338                  IF ( dta_bdy(jbdy)%lneed_dyn2d ) dta_bdy_s(jbdy)%v2d(1:ilen1(3)) = dta_bdy(jbdy)%v2d(1:ilen1(3)) 
     339               ENDIF 
     340            END DO 
     341         ELSE ! Add tides if not split-explicit free surface else this is done in ts loop 
     342            ! 
     343            CALL bdy_dta_tides( kt=kt, pt_offset=pt_offset ) 
    348344         ENDIF 
    349          ! 
    350          IF( ln_timing )   CALL timing_stop('bdy_dta') 
    351          ! 
    352       END SUBROUTINE bdy_dta 
     345      ENDIF 
     346      ! 
     347      IF( ln_timing )   CALL timing_stop('bdy_dta') 
     348      ! 
     349   END SUBROUTINE bdy_dta 
    353350 
    354351 
     
    449446            IF( nn_ice_dta(jbdy) == 1 ) THEN   ! if we get ice bdy data from netcdf file 
    450447               CALL fld_fill(  bf(jp_bdya_i,jbdy:jbdy), bn_a_i, cn_dir, 'bdy_dta', 'a_i'//' '//ctmp1, ctmp2 )   ! use namelist info 
    451                CALL fld_clopn( bf(jp_bdya_i,jbdy), nyear, nmonth, nday )   ! not a problem when we call it again after 
     448               CALL fld_def( bf(jp_bdya_i,jbdy) ) 
     449               CALL iom_open( bf(jp_bdya_i,jbdy)%clname, bf(jp_bdya_i,jbdy)%num ) 
    452450               idvar = iom_varid( bf(jp_bdya_i,jbdy)%num, bf(jp_bdya_i,jbdy)%clvar, kndims=indims, kdimsz=i4dimsz, lduld=lluld ) 
    453451               IF( indims == 4 .OR. ( indims == 3 .AND. .NOT. lluld ) ) THEN   ;   ipl = i4dimsz(3)   ! xylt or xyl 
    454452               ELSE                                                            ;   ipl = 1            ! xy or xyt 
    455453               ENDIF 
     454               CALL iom_close( bf(jp_bdya_i,jbdy)%num ) 
    456455               bf(jp_bdya_i,jbdy)%clrootname = 'NOT USED'   ! reset to default value as this subdomain may not need to read this bdy 
    457456            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.