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 15574 for NEMO/branches/2021/dev_r14318_RK3_stage1/tests/ISOMIP+/MY_SRC/dtatsd.F90 – NEMO

Ignore:
Timestamp:
2021-12-03T20:32:50+01:00 (3 years ago)
Author:
techene
Message:

#2605 #2715 trunk merged into dev_r14318_RK3_stage1

Location:
NEMO/branches/2021/dev_r14318_RK3_stage1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1

    • Property svn:externals
      •  

        old new  
        99 
        1010# SETTE 
        11 ^/utils/CI/sette@14244        sette 
         11^/utils/CI/sette@HEAD        sette 
         12 
  • NEMO/branches/2021/dev_r14318_RK3_stage1/tests/ISOMIP+/MY_SRC/dtatsd.F90

    r14090 r15574  
    66   !! History :  OPA  ! 1991-03  ()  Original code 
    77   !!             -   ! 1992-07  (M. Imbard) 
    8    !!            8.0  ! 1999-10  (M.A. Foujols, M. Imbard)  NetCDF FORMAT  
    9    !!   NEMO     1.0  ! 2002-06  (G. Madec)  F90: Free form and module  
     8   !!            8.0  ! 1999-10  (M.A. Foujols, M. Imbard)  NetCDF FORMAT 
     9   !!   NEMO     1.0  ! 2002-06  (G. Madec)  F90: Free form and module 
    1010   !!            3.3  ! 2010-10  (C. Bricaud, S. Masson)  use of fldread 
    1111   !!            3.4  ! 2010-11  (G. Madec, C. Ethe) Merge of dtatem and dtasal + remove CPP keys 
     
    4949      !!---------------------------------------------------------------------- 
    5050      !!                   ***  ROUTINE dta_tsd_init  *** 
    51       !!                     
    52       !! ** Purpose :   initialisation of T & S input data  
    53       !!  
     51      !! 
     52      !! ** Purpose :   initialisation of T & S input data 
     53      !! 
    5454      !! ** Method  : - Read namtsd namelist 
    55       !!              - allocates T & S data structure  
     55      !!              - allocates T & S data structure 
    5656      !!---------------------------------------------------------------------- 
    5757      LOGICAL, INTENT(in), OPTIONAL ::   ld_tradmp   ! force the initialization when tradp is used 
     
    7777 
    7878      IF( PRESENT( ld_tradmp ) )   ln_tsd_dmp = .TRUE.     ! forces the initialization when tradmp is used 
    79        
     79 
    8080      IF(lwp) THEN                  ! control print 
    8181         WRITE(numout,*) 
     
    114114            CALL ctl_stop( 'dta_tsd : unable to allocate T & S data arrays' )   ;   RETURN 
    115115         ENDIF 
    116          ! 
    117116         !                         ! fill sf_tsd with sn_tem & sn_sal and control print 
    118117         slf_i(jp_tem) = sn_tem   ;   slf_i(jp_sal) = sn_sal 
     
    150149      !!---------------------------------------------------------------------- 
    151150      !!                   ***  ROUTINE dta_tsd  *** 
    152       !!                     
     151      !! 
    153152      !! ** Purpose :   provides T and S data at kt 
    154       !!  
     153      !! 
    155154      !! ** Method  : - call fldread routine 
    156       !!              - ORCA_R2: add some hand made alteration to read data   
     155      !!              - ORCA_R2: add some hand made alteration to read data 
    157156      !!              - 'key_orca_lev10' interpolates on 10 times more levels 
    158157      !!              - s- or mixed z-s coordinate: vertical interpolation on model mesh 
     
    162161      !! ** Action  :   ptsd   T-S data on medl mesh and interpolated at time-step kt 
    163162      !!---------------------------------------------------------------------- 
    164       INTEGER                              , INTENT(in   ) ::   kt     ! ocean time-step 
    165       CHARACTER(LEN=3)                     , INTENT(in   ) ::   cddta  ! dmp or ini 
     163      INTEGER                          , INTENT(in   ) ::   kt     ! ocean time-step 
     164      CHARACTER(LEN=3)                 , INTENT(in   ) ::   cddta  ! dmp or ini 
    166165      REAL(wp), DIMENSION(A2D(nn_hls),jpk,jpts), INTENT(  out) ::   ptsd   ! T & S data 
    167166      ! 
    168167      INTEGER ::   ji, jj, jk, jl, jkk   ! dummy loop indicies 
    169168      INTEGER ::   ik, il0, il1, ii0, ii1, ij0, ij1   ! local integers 
    170       INTEGER ::   itile 
    171169      REAL(wp)::   zl, zi                             ! local scalars 
    172170      REAL(wp), DIMENSION(jpk) ::  ztp, zsp   ! 1D workspace 
    173171      !!---------------------------------------------------------------------- 
    174172      ! 
    175       IF( ntile == 0 .OR. ntile == 1 )  THEN                                         ! Do only for the full domain 
    176          itile = ntile 
    177          IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 )            ! Use full domain 
     173      IF( .NOT. l_istiled .OR. ntile == 1 )  THEN                                         ! Do only for the full domain 
     174         IF( ln_tile ) CALL dom_tile_stop( ldhold=.TRUE. )             ! Use full domain 
    178175 
    179176         SELECT CASE(cddta) 
     
    186183         END SELECT 
    187184 
    188          IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = itile )            ! Revert to tile domain 
     185         IF( ln_tile ) CALL dom_tile_start( ldhold=.TRUE. )            ! Revert to tile domain 
    189186      ENDIF 
    190187      ! 
     
    206203      IF( ln_sco ) THEN                   !==   s- or mixed s-zps-coordinate   ==! 
    207204         ! 
    208          IF( ntile == 0 .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
     205         IF( .NOT. l_istiled .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
    209206            IF( kt == nit000 .AND. lwp )THEN 
    210207               WRITE(numout,*) 
     
    213210         ENDIF 
    214211         ! 
    215          DO_2D( 1, 1, 1, 1 )                  ! vertical interpolation of T & S 
     212         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )                  ! vertical interpolation of T & S 
    216213            DO jk = 1, jpk                        ! determines the intepolated T-S profiles at each (i,j) points 
    217214               zl = gdept_0(ji,jj,jk) 
     
    226223                     IF( (zl-gdept_1d(jkk)) * (zl-gdept_1d(jkk+1)) <= 0._wp ) THEN 
    227224                        zi = ( zl - gdept_1d(jkk) ) / (gdept_1d(jkk+1)-gdept_1d(jkk)) 
    228                         ztp(jk) = ptsd(ji,jj,jkk,jp_tem) + ( ptsd(ji,jj,jkk+1,jp_tem) - ptsd(ji,jj,jkk,jp_tem) ) * zi  
     225                        ztp(jk) = ptsd(ji,jj,jkk,jp_tem) + ( ptsd(ji,jj,jkk+1,jp_tem) - ptsd(ji,jj,jkk,jp_tem) ) * zi 
    229226                        zsp(jk) = ptsd(ji,jj,jkk,jp_sal) + ( ptsd(ji,jj,jkk+1,jp_sal) - ptsd(ji,jj,jkk,jp_sal) ) * zi 
    230227                     ENDIF 
     
    239236            ptsd(ji,jj,jpk,jp_sal) = 0._wp 
    240237         END_2D 
    241          !  
     238         ! 
    242239      ELSE                                !==   z- or zps- coordinate   ==! 
    243          !                              
     240         ! 
    244241         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 
    245242            ptsd(ji,jj,jk,jp_tem) = ptsd(ji,jj,jk,jp_tem) * tmask(ji,jj,jk)    ! Mask 
     
    248245         ! 
    249246         IF( ln_zps ) THEN                      ! zps-coordinate (partial steps) interpolation at the last ocean level 
    250             DO_2D( 1, 1, 1, 1 ) 
    251                ik = mbkt(ji,jj)  
     247            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     248               ik = mbkt(ji,jj) 
    252249               IF( ik > 1 ) THEN 
    253250                  zl = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 
     
    257254               ik = mikt(ji,jj) 
    258255               IF( ik > 1 ) THEN 
    259                   zl = ( gdept_0(ji,jj,ik) - gdept_1d(ik) ) / ( gdept_1d(ik+1) - gdept_1d(ik) )  
     256                  zl = ( gdept_0(ji,jj,ik) - gdept_1d(ik) ) / ( gdept_1d(ik+1) - gdept_1d(ik) ) 
    260257                  ptsd(ji,jj,ik,jp_tem) = (1.-zl) * ptsd(ji,jj,ik,jp_tem) + zl * ptsd(ji,jj,ik+1,jp_tem) 
    261258                  ptsd(ji,jj,ik,jp_sal) = (1.-zl) * ptsd(ji,jj,ik,jp_sal) + zl * ptsd(ji,jj,ik+1,jp_sal) 
Note: See TracChangeset for help on using the changeset viewer.