Changeset 13422


Ignore:
Timestamp:
2020-08-21T15:10:02+02:00 (5 months ago)
Author:
smueller
Message:

Addition of optional reinitialisation of the trajectory interpolation to subroutine trj_rea

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/NERC/dev_release-3.4_NEMOTAM_consolidated/NEMOGCM/NEMO/OPATAM_SRC/TAM/trj_tam.F90

    r11809 r13422  
    162162   END SUBROUTINE tl_trj_ini 
    163163 
    164    SUBROUTINE trj_rea( kstp, kdir ) 
     164   SUBROUTINE trj_rea( kstp, kdir, lreset ) 
    165165      !!----------------------------------------------------------------------- 
    166166      !! 
     
    186186         & kstp, &           ! Step for requested trajectory 
    187187         & kdir              ! Direction for stepping (1 forward, -1 backward) 
     188      LOGICAL, INTENT(in), OPTIONAL :: lreset ! Reset interpolation at given time step (Note, sensitive to value of kdir) 
    188189      !! * Local declarations 
    189190      CHARACTER (LEN=100) :: & 
     
    203204      ! Initialize data and open file 
    204205      !! if step time is corresponding to a saved state 
    205       IF ( ( MOD( kstp - nit000 + 1, nn_ittrjfrq ) == 0 ) ) THEN 
    206  
    207          it = kstp - nit000 + 1 
     206      IF ( ( MOD( kstp - nit000 + 1, nn_ittrjfrq ) == 0 ) .OR. PRESENT(lreset) ) THEN 
     207 
     208         it = ((kstp - nit000 + 1) - MOD(kstp - nit000 + 1, nn_ittrjfrq)) 
    208209 
    209210         IF ( inumtrj1 == -1 ) THEN 
     
    313314         IF ( ( kstp /= nitend )         .AND. & 
    314315            & ( kstp - nit000 + 1 /= 0 ) .AND. & 
    315             & ( kdir == -1 ) ) THEN 
     316            & ( kdir == -1 ) .AND. & 
     317            & .NOT.PRESENT(lreset) ) THEN 
    316318 
    317319            stpr2           = stpr1 
     
    385387 
    386388         IF ( ( kstp - nit000 + 1 == 0 ) .AND.( kdir == 1           ) .OR. & 
    387             & ( kstp - nit000 + 1 /= 0 ) .AND.( kdir == -1          ) ) THEN 
     389            & ( kstp - nit000 + 1 /= 0 ) .AND.( kdir == -1          ) .OR. & 
     390            & PRESENT(lreset) ) THEN 
    388391 
    389392            IF ( kdir == -1 ) inrcm = inrcm - 1 
     
    452455         IF ( ( kstp - nit000 + 1 /= 0 ) .AND. & 
    453456            & ( kstp /= nitend         ) .AND. & 
    454             & ( kdir == 1              ) ) THEN 
     457            & ( kdir == 1              ) .AND. & 
     458            & .NOT.PRESENT(lreset) ) THEN 
    455459 
    456460            stpr1           = stpr2 
     
    510514 
    511515         IF ( ( ( kstp /= nitend ) .AND. ( kdir == 1  )) .OR. & 
    512             &   ( kstp == nitend ) .AND.(  kdir == -1   ) ) THEN 
     516            &   ( kstp == nitend ) .AND.(  kdir == -1   ) .OR. & 
     517            & PRESENT(lreset) ) THEN 
    513518 
    514519               ! Define the input file 
     
    572577         ENDIF 
    573578 
     579      ENDIF 
     580 
     581      IF ((inumtrj1==-1).OR.(inumtrj2==-1)) THEN 
     582         IF(lwp) WRITE(numout,*) '   Warning! Trajectory data not available!' 
    574583      ENDIF 
    575584 
     
    622631         zwtr2  = ( zstp  - stpr1     ) * zden       
    623632      END IF 
    624       IF ( kstp == nit000-1 ) THEN 
     633      IF (( kstp == nit000-1 ).OR.(PRESENT(lreset).AND.(kdir==1))) THEN 
    625634         tsb(:,:,:,:) = tsn(:,:,:,:) 
    626635         ub(:,:,:) = un(:,:,:) 
Note: See TracChangeset for help on using the changeset viewer.