Ignore:
Timestamp:
2021-06-23T18:17:30+02:00 (7 months ago)
Author:
clem
Message:

adapt ice advection and rheology to nn_hls=2. Number of mpi communications are reduced. I also changed lbc_lnk routine to be able to do lbc on 30 variables at once.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/ICE/icedyn_adv_pra.F90

    r15037 r15049  
    268268            &                          , sxxice, 'T', 1._wp, syyice, 'T',  1._wp, sxyice, 'T',  1._wp  & 
    269269            &                          , z0snw , 'T', 1._wp, sxsn  , 'T', -1._wp, sysn  , 'T', -1._wp  & ! snw volume 
    270             &                          , sxxsn , 'T', 1._wp, syysn , 'T',  1._wp, sxysn , 'T',  1._wp  ) 
    271          CALL lbc_lnk( 'icedyn_adv_pra', z0smi , 'T', 1._wp, sxsal , 'T', -1._wp, sysal , 'T', -1._wp  & ! ice salinity 
     270            &                          , sxxsn , 'T', 1._wp, syysn , 'T',  1._wp, sxysn , 'T',  1._wp  & 
     271            &                          , z0smi , 'T', 1._wp, sxsal , 'T', -1._wp, sysal , 'T', -1._wp  & ! ice salinity 
    272272            &                          , sxxsal, 'T', 1._wp, syysal, 'T',  1._wp, sxysal, 'T',  1._wp  & 
    273273            &                          , z0ai  , 'T', 1._wp, sxa   , 'T', -1._wp, sya   , 'T', -1._wp  & ! ice concentration 
    274             &                          , sxxa  , 'T', 1._wp, syya  , 'T',  1._wp, sxya  , 'T',  1._wp  ) 
    275          CALL lbc_lnk( 'icedyn_adv_pra', z0oi  , 'T', 1._wp, sxage , 'T', -1._wp, syage , 'T', -1._wp  & ! ice age 
     274            &                          , sxxa  , 'T', 1._wp, syya  , 'T',  1._wp, sxya  , 'T',  1._wp  & 
     275            &                          , z0oi  , 'T', 1._wp, sxage , 'T', -1._wp, syage , 'T', -1._wp  & ! ice age 
    276276            &                          , sxxage, 'T', 1._wp, syyage, 'T',  1._wp, sxyage, 'T',  1._wp  ) 
    277277         CALL lbc_lnk( 'icedyn_adv_pra', z0es  , 'T', 1._wp, sxc0  , 'T', -1._wp, syc0  , 'T', -1._wp  & ! snw enthalpy 
     
    280280            &                          , sxxe  , 'T', 1._wp, syye  , 'T',  1._wp, sxye  , 'T',  1._wp  ) 
    281281         IF ( ln_pnd_LEV .OR. ln_pnd_TOPO ) THEN 
    282             CALL lbc_lnk( 'icedyn_adv_pra', z0ap , 'T', 1._wp, sxap , 'T', -1._wp, syap , 'T', -1._wp  & ! melt pond fraction 
    283                &                          , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
    284                &                          , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
    285                &                          , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  ) 
    286             IF ( ln_pnd_lids ) THEN 
    287                CALL lbc_lnk( 'icedyn_adv_pra', z0vl ,'T', 1._wp, sxvl ,'T', -1._wp, syvl ,'T', -1._wp  & ! melt pond lid volume 
    288                   &                          , sxxvl,'T', 1._wp, syyvl,'T',  1._wp, sxyvl,'T',  1._wp  ) 
     282            IF( ln_pnd_lids ) THEN 
     283               CALL lbc_lnk( 'icedyn_adv_pra', z0ap , 'T', 1._wp, sxap , 'T', -1._wp, syap , 'T', -1._wp  & ! melt pond fraction 
     284                  &                          , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
     285                  &                          , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
     286                  &                          , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  & 
     287                  &                          , z0vl , 'T', 1._wp, sxvl , 'T', -1._wp, syvl , 'T', -1._wp  & ! melt pond lid volume 
     288                  &                          , sxxvl, 'T', 1._wp, syyvl, 'T',  1._wp, sxyvl, 'T',  1._wp  ) 
     289            ELSE 
     290               CALL lbc_lnk( 'icedyn_adv_pra', z0ap , 'T', 1._wp, sxap , 'T', -1._wp, syap , 'T', -1._wp  & ! melt pond fraction 
     291                  &                          , sxxap, 'T', 1._wp, syyap, 'T',  1._wp, sxyap, 'T',  1._wp  & 
     292                  &                          , z0vp , 'T', 1._wp, sxvp , 'T', -1._wp, syvp , 'T', -1._wp  & ! melt pond volume 
     293                  &                          , sxxvp, 'T', 1._wp, syyvp, 'T',  1._wp, sxyvp, 'T',  1._wp  ) 
    289294            ENDIF 
    290295         ENDIF 
     
    766771      ! 
    767772      DO jl = 1, jpl 
    768          DO_2D( 1, 1, 1, 1 ) 
     773         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    769774            IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
    770775               ! 
     
    813818      !                                           ! -- check e_i/v_i -- ! 
    814819      DO jl = 1, jpl 
    815          DO_3D( 1, 1, 1, 1, 1, nlay_i ) 
     820         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_i ) 
    816821            IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
    817822               ! if e_i/v_i is larger than the surrounding 9 pts => put the heat excess in the ocean 
     
    827832      !                                           ! -- check e_s/v_s -- ! 
    828833      DO jl = 1, jpl 
    829          DO_3D( 1, 1, 1, 1, 1, nlay_s ) 
     834         DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nlay_s ) 
    830835            IF ( pv_s(ji,jj,jl) > 0._wp ) THEN 
    831836               ! if e_s/v_s is larger than the surrounding 9 pts => put the heat excess in the ocean 
     
    870875      ! -- check snow load -- ! 
    871876      DO jl = 1, jpl 
    872          DO_2D( 1, 1, 1, 1 ) 
     877         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    873878            IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 
    874879               ! 
     
    11961201         END_2D 
    11971202      END DO 
    1198        
    11991203   END SUBROUTINE icemax3D 
    1200           
     1204 
    12011205   SUBROUTINE icemax4D( pice , pmax ) 
    12021206      !!--------------------------------------------------------------------- 
     
    12371241         END DO 
    12381242      END DO 
    1239  
    12401243   END SUBROUTINE icemax4D 
    12411244 
Note: See TracChangeset for help on using the changeset viewer.