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 14053 for NEMO/trunk/src/OCE/ISF – NEMO

Ignore:
Timestamp:
2020-12-03T14:48:38+01:00 (3 years ago)
Author:
techene
Message:

#2385 added to the trunk

Location:
NEMO/trunk/src/OCE/ISF
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/ISF/isfcpl.F90

    r13970 r14053  
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!   isfrst : read/write iceshelf variables in/from restart 
     12   !!   isfrst        : read/write iceshelf variables in/from restart 
    1313   !!---------------------------------------------------------------------- 
    14    USE isf_oce                          ! ice shelf variable 
     14   USE oce            ! ocean dynamics and tracers 
     15#if defined key_qco 
     16   USE domqco  , ONLY : dom_qco_zgr      ! vertical scale factor interpolation 
     17#else 
     18   USE domvvl  , ONLY : dom_vvl_zgr      ! vertical scale factor interpolation 
     19#endif 
     20   USE domutl  , ONLY : dom_ngb          ! find the closest grid point from a given lon/lat position 
     21   USE isf_oce        ! ice shelf variable 
    1522   USE isfutils, ONLY : debug 
    16    USE lib_mpp , ONLY: mpp_sum, mpp_max ! mpp routine 
    17 #if ! defined key_qco 
    18    USE domvvl  , ONLY: dom_vvl_zgr      ! vertical scale factor interpolation 
    19 #else 
    20    USE domqco   , ONLY: dom_qco_zgr      ! vertical scale factor interpolation 
    21 #endif 
    22    USE domutl  , ONLY: dom_ngb          ! find the closest grid point from a given lon/lat position 
    2323   ! 
    24    USE oce            ! ocean dynamics and tracers 
    2524   USE in_out_manager ! I/O manager 
    2625   USE iom            ! I/O library 
     26   USE lib_mpp , ONLY : mpp_sum, mpp_max ! mpp routine 
    2727   ! 
    2828   IMPLICIT NONE 
     
    3434 
    3535   TYPE isfcons 
    36       INTEGER :: ii     ! i global 
    37       INTEGER :: jj     ! j global 
    38       INTEGER :: kk     ! k level 
    39       REAL(wp):: dvol   ! volume increment 
    40       REAL(wp):: dsal   ! salt increment 
    41       REAL(wp):: dtem   ! heat increment 
    42       REAL(wp):: lon    ! lon 
    43       REAL(wp):: lat    ! lat 
    44       INTEGER :: ngb    ! 0/1 (valid location or not (ie on halo or no neigbourg)) 
     36      INTEGER ::   ii     ! i global 
     37      INTEGER ::   jj     ! j global 
     38      INTEGER ::   kk     ! k level 
     39      REAL(wp)::   dvol   ! volume increment 
     40      REAL(wp)::   dsal   ! salt increment 
     41      REAL(wp)::   dtem   ! heat increment 
     42      REAL(wp)::   lon    ! lon 
     43      REAL(wp)::   lat    ! lat 
     44      INTEGER ::   ngb    ! 0/1 (valid location or not (ie on halo or no neigbourg)) 
    4545   END TYPE 
    4646   ! 
     
    121121#endif  
    122122   END SUBROUTINE isfcpl_init 
    123    !  
    124    SUBROUTINE isfcpl_rst_write(kt, Kmm) 
     123 
     124    
     125   SUBROUTINE isfcpl_rst_write( kt, Kmm ) 
    125126      !!--------------------------------------------------------------------- 
    126127      !!                   ***  ROUTINE iscpl_rst_write  *** 
     
    133134      !!---------------------------------------------------------------------- 
    134135      INTEGER :: jk                               ! loop index 
    135       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw  ! e3t , e3u, e3v !!st patch to use substitution 
     136      REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, ze3u, ze3v, zgdepw  ! for qco substitution 
    136137      !!---------------------------------------------------------------------- 
    137138      ! 
     
    153154   END SUBROUTINE isfcpl_rst_write 
    154155 
     156    
    155157   SUBROUTINE isfcpl_ssh(Kbb, Kmm, Kaa) 
    156158      !!----------------------------------------------------------------------  
     
    184186         zdssmask(:,:) = ssmask(:,:) - zssmask0(:,:) 
    185187         DO_2D( 0, 0, 0, 0 ) 
    186             jip1=ji+1; jim1=ji-1; 
    187             jjp1=jj+1; jjm1=jj-1; 
     188            jip1=ji+1   ;   jim1=ji-1 
     189            jjp1=jj+1   ;   jjm1=jj-1 
    188190            ! 
    189191            zsummsk = zssmask0(jip1,jj) + zssmask0(jim1,jj) + zssmask0(ji,jjp1) + zssmask0(ji,jjm1) 
     
    191193            IF (zdssmask(ji,jj) == 1._wp .AND. zsummsk /= 0._wp) THEN 
    192194               ssh(ji,jj,Kmm)=( zssh(jip1,jj)*zssmask0(jip1,jj)     & 
    193                &           + zssh(jim1,jj)*zssmask0(jim1,jj)     & 
    194                &           + zssh(ji,jjp1)*zssmask0(ji,jjp1)     & 
    195                &           + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk 
     195                  &           + zssh(jim1,jj)*zssmask0(jim1,jj)     & 
     196                  &           + zssh(ji,jjp1)*zssmask0(ji,jjp1)     & 
     197                  &           + zssh(ji,jjm1)*zssmask0(ji,jjm1)) / zsummsk 
    196198               zssmask_b(ji,jj) = 1._wp 
    197199            ENDIF 
     
    222224      CALL dom_vvl_zgr(Kbb, Kmm, Kaa) 
    223225#else 
    224       CALL dom_qco_zgr(Kbb, Kmm, Kaa) 
     226      CALL dom_qco_zgr(Kbb, Kmm) 
    225227#endif 
    226228      ! 
    227229   END SUBROUTINE isfcpl_ssh 
    228230 
     231    
    229232   SUBROUTINE isfcpl_tra(Kmm) 
    230233      !!----------------------------------------------------------------------  
     
    375378      !  
    376379   END SUBROUTINE isfcpl_tra 
     380    
    377381 
    378382   SUBROUTINE isfcpl_vol(Kmm) 
     
    466470         risfcpl_ssh(:,:) = risfcpl_ssh(:,:) + risfcpl_vol(:,:,jk) * r1_e1e2t(:,:) 
    467471      END DO 
    468  
     472      ! 
    469473   END SUBROUTINE isfcpl_vol 
    470474 
     475    
    471476   SUBROUTINE isfcpl_cons(Kmm) 
    472477      !!----------------------------------------------------------------------  
  • NEMO/trunk/src/OCE/ISF/isfdynatf.F90

    r13237 r14053  
    1515   USE phycst , ONLY: r1_rho0         ! physical constant 
    1616   USE dom_oce                        ! time and space domain 
    17    USE oce, ONLY : ssh                ! sea-surface height !!st needed for substitution 
     17   USE oce, ONLY : ssh                ! sea-surface height for qco substitution 
    1818 
    1919   USE in_out_manager 
  • NEMO/trunk/src/OCE/ISF/isfrst.F90

    r13970 r14053  
    2828   !!---------------------------------------------------------------------- 
    2929CONTAINS 
    30    !  
    31    SUBROUTINE isfrst_read(cdisf, ptsc, pfwf, ptsc_b, pfwf_b ) 
     30    
     31   SUBROUTINE isfrst_read( cdisf, ptsc, pfwf, ptsc_b, pfwf_b ) 
    3232      !!--------------------------------------------------------------------- 
    3333      !! 
     
    5151      ! 
    5252      ! read restart 
    53       IF( iom_varid( numror, cfwf_b, ldstop = .FALSE. ) > 0 ) THEN 
     53      IF( .NOT.l_1st_euler ) THEN 
    5454         IF(lwp) WRITE(numout,*) '          nit000-1 isf tracer content forcing fields read in the restart file' 
    5555         CALL iom_get( numror, jpdom_auto, cfwf_b, pfwf_b(:,:)         )   ! before ice shelf melt 
     
    6262      ! 
    6363   END SUBROUTINE isfrst_read 
    64    !  
    65    SUBROUTINE isfrst_write(kt, cdisf, ptsc, pfwf ) 
     64 
     65    
     66   SUBROUTINE isfrst_write( kt, cdisf, ptsc, pfwf ) 
    6667      !!--------------------------------------------------------------------- 
    6768      !! 
     
    9495      ! 
    9596   END SUBROUTINE isfrst_write 
    96    ! 
     97    
     98   !!====================================================================== 
    9799END MODULE isfrst 
Note: See TracChangeset for help on using the changeset viewer.