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 5143 – NEMO

Changeset 5143


Ignore:
Timestamp:
2015-03-11T16:49:05+01:00 (9 years ago)
Author:
clem
Message:

LIM3: BDY conditions equal to initial state is now working

Location:
trunk/NEMOGCM/NEMO
Files:
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90

    r5140 r5143  
    4141   PRIVATE 
    4242 
    43    PUBLIC   bdy_ice_lim    ! routine called in sbcmod 
     43   PUBLIC   bdy_ice_lim     ! routine called in sbcmod 
    4444   PUBLIC   bdy_ice_lim_dyn ! routine called in limrhg 
    4545 
     
    8989      TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data 
    9090      INTEGER,         INTENT(in) ::   kt   ! main time-step counter 
    91       INTEGER,         INTENT(in) ::   ib_bdy  ! BDY set index      !! 
     91      INTEGER,         INTENT(in) ::   ib_bdy  ! BDY set index 
    9292 
    9393      INTEGER  ::   jpbound            ! 0 = incoming ice 
     
    169169            jpbound = 0; ii = ji; ij = jj; 
    170170 
    171             IF ( u_ice(ji+1,jj  ) < 0. .AND. umask(ji-1,jj  ,1) == 0. ) jpbound = 1; ii = ji+1; ij = jj 
    172             IF ( u_ice(ji-1,jj  ) > 0. .AND. umask(ji+1,jj  ,1) == 0. ) jpbound = 1; ii = ji-1; ij = jj 
    173             IF ( v_ice(ji  ,jj+1) < 0. .AND. vmask(ji  ,jj-1,1) == 0. ) jpbound = 1; ii = ji  ; ij = jj+1 
    174             IF ( v_ice(ji  ,jj-1) > 0. .AND. vmask(ji  ,jj+1,1) == 0. ) jpbound = 1; ii = ji  ; ij = jj-1 
     171            IF( u_ice(ji+1,jj  ) < 0. .AND. umask(ji-1,jj  ,1) == 0. ) jpbound = 1; ii = ji+1; ij = jj 
     172            IF( u_ice(ji-1,jj  ) > 0. .AND. umask(ji+1,jj  ,1) == 0. ) jpbound = 1; ii = ji-1; ij = jj 
     173            IF( v_ice(ji  ,jj+1) < 0. .AND. vmask(ji  ,jj-1,1) == 0. ) jpbound = 1; ii = ji  ; ij = jj+1 
     174            IF( v_ice(ji  ,jj-1) > 0. .AND. vmask(ji  ,jj+1,1) == 0. ) jpbound = 1; ii = ji  ; ij = jj-1 
     175 
     176            IF( nn_ice_lim_dta(ib_bdy) == 0 ) jpbound = 0; ii = ji; ij = jj   ! case ice boundaries = initial conditions 
     177                                                                              !      do not make state variables dependent on velocity 
     178                
    175179 
    176180            rswitch = 1.0 - MAX( 0.0_wp , SIGN ( 1.0_wp , - at_i(ii,ij) + 0.01 ) ) ! 0 if no ice 
     
    286290      !! 
    287291      CHARACTER(len=1), INTENT(in)  ::   cd_type   ! nature of velocity grid-points 
    288       INTEGER  ::   jb, jgrd   ! dummy loop indices 
     292      INTEGER  ::   jb, jgrd           ! dummy loop indices 
    289293      INTEGER  ::   ji, jj             ! local scalar 
    290       INTEGER  ::   ib_bdy ! Loop index 
     294      INTEGER  ::   ib_bdy             ! Loop index 
    291295      REAL(wp) ::   zmsk1, zmsk2, zflag 
    292296     !!------------------------------------------------------------------------------ 
     
    304308         CASE('frs') 
    305309             
    306  
     310            IF( nn_ice_lim_dta(ib_bdy) == 0 ) CYCLE            ! case ice boundaries = initial conditions  
     311                                                               !      do not change ice velocity (it is only computed by rheology) 
     312  
    307313            SELECT CASE ( cd_type ) 
    308  
     314                
    309315            CASE ( 'U' ) 
    310316                
     
    321327                      
    322328                     ! u_ice = u_ice of the adjacent grid point except if this grid point is ice-free (then u_ice = u_oce) 
    323                      u_ice (ji,jj) = u_ice(ji+1,jj) * 0.5 * ABS( zflag + 1._wp ) * zmsk1 + & 
    324                         &            u_ice(ji-1,jj) * 0.5 * ABS( zflag - 1._wp ) * zmsk2 + & 
     329                     u_ice (ji,jj) = u_ice(ji+1,jj) * 0.5_wp * ABS( zflag + 1._wp ) * zmsk1 + & 
     330                        &            u_ice(ji-1,jj) * 0.5_wp * ABS( zflag - 1._wp ) * zmsk2 + & 
    325331                        &            u_oce(ji  ,jj) * ( 1._wp - MIN( 1._wp, zmsk1 + zmsk2 ) ) 
    326332                  ELSE                             ! everywhere else 
     
    329335                  ENDIF 
    330336                  ! mask ice velocities 
    331                   rswitch = 1.0 - MAX( 0.0_wp , SIGN ( 1.0_wp , - at_i(ji,jj) + 0.01 ) ) ! 0 if no ice 
     337                  rswitch = MAX( 0.0_wp , SIGN ( 1.0_wp , at_i(ji,jj) - 0.01_wp ) ) ! 0 if no ice 
    332338                  u_ice(ji,jj) = rswitch * u_ice(ji,jj) 
    333339                   
    334340               ENDDO 
    335  
     341                
    336342               CALL lbc_bdy_lnk( u_ice(:,:), 'U', -1., ib_bdy ) 
    337343                
     
    350356                      
    351357                     ! u_ice = u_ice of the adjacent grid point except if this grid point is ice-free (then u_ice = u_oce) 
    352                      v_ice (ji,jj) = v_ice(ji,jj+1) * 0.5 * ABS( zflag + 1._wp ) * zmsk1 + & 
    353                         &            v_ice(ji,jj-1) * 0.5 * ABS( zflag - 1._wp ) * zmsk2 + & 
     358                     v_ice (ji,jj) = v_ice(ji,jj+1) * 0.5_wp * ABS( zflag + 1._wp ) * zmsk1 + & 
     359                        &            v_ice(ji,jj-1) * 0.5_wp * ABS( zflag - 1._wp ) * zmsk2 + & 
    354360                        &            v_oce(ji,jj  ) * ( 1._wp - MIN( 1._wp, zmsk1 + zmsk2 ) ) 
    355361                  ELSE                             ! everywhere else 
     
    358364                  ENDIF 
    359365                  ! mask ice velocities 
    360                   rswitch = 1.0 - MAX( 0.0_wp , SIGN ( 1.0_wp , - at_i(ji,jj) + 0.01 ) ) ! 0 if no ice 
     366                  rswitch = MAX( 0.0_wp , SIGN ( 1.0_wp , at_i(ji,jj) - 0.01 ) ) ! 0 if no ice 
    361367                  v_ice(ji,jj) = rswitch * v_ice(ji,jj) 
    362368                   
     
    364370                
    365371               CALL lbc_bdy_lnk( v_ice(:,:), 'V', -1., ib_bdy ) 
    366                 
     372                   
    367373            END SELECT 
    368374             
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r4624 r5143  
    4242#endif 
    4343#if defined key_lim3 
    44   USE par_ice 
    4544  USE ice 
    4645#endif 
Note: See TracChangeset for help on using the changeset viewer.