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 9482 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90 – NEMO

Ignore:
Timestamp:
2018-04-13T19:03:31+02:00 (6 years ago)
Author:
clem
Message:

The configuration Agrif_Nordic is now restartable for any nn_fsbc(Parent) and nn_fsbc(Child). However we do not authorized nn_fsbc(Child) to be larger than 1 because otherwise it breaks the CFL too easily. The simulation would still run but the results would not be satisfactory. I still have to verify this point with the last version of the code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/NST_SRC/agrif_lim3_interp.F90

    r9454 r9482  
    5353      !!----------------------------------------------------------------------- 
    5454      ! 
    55       IF( Agrif_Root() .OR. nn_ice==0 )  RETURN   ! do not interpolate if inside Parent domain or if child domain does not have ice 
     55      IF( Agrif_Root() .OR. nn_ice==0 )  RETURN   ! do not interpolate if inside Parent Grid or if child domain does not have ice 
    5656      ! 
    5757      SELECT CASE( cd_type ) 
    5858      CASE('U','V') 
    59          IF( PRESENT( kiter ) ) THEN  ! interpolation at the child sub-time step (only for ice rheology) 
     59         IF( PRESENT( kiter ) ) THEN  ! interpolation at the child ice sub-time step (only for ice rheology) 
    6060            zbeta = ( REAL(lim_nbstep) - REAL(kitermax - kiter) / REAL(kitermax) ) /  & 
    6161               &    ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) ) 
    62          ELSE                         ! interpolation at the child time step 
     62         ELSE                         ! interpolation at the child ice time step 
    6363            zbeta = REAL(lim_nbstep) / ( Agrif_Rhot() * REAL(Agrif_Parent(nn_fsbc)) / REAL(nn_fsbc) ) 
    6464         ENDIF 
     
    204204               ! 
    205205               DO jk = 1, nlay_s 
    206                   e_s(i1:i2,j1:j2,jk,jl) = ptab(:,:,jm) * tmask(i1:i2,j1:j2,1) 
     206                  e_s(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1) 
    207207                  jm = jm + 1 
    208208               END DO 
    209209               ! 
    210210               DO jk = 1, nlay_i 
    211                   e_i(i1:i2,j1:j2,jk,jl) = ptab(:,:,jm) * tmask(i1:i2,j1:j2,1) 
     211                  e_i(i1:i2,j1:j2,jk,jl) = ptab(i1:i2,j1:j2,jm) * tmask(i1:i2,j1:j2,1) 
    212212                  jm = jm + 1 
    213213               END DO 
     
    216216            ! 
    217217!!==> clem: this interpolation does not work because it creates negative values, due 
    218 !           to negative coefficients when mixing points (for ex. z7) 
     218!!          to negative coefficients when mixing points (for ex. z7) 
    219219!! 
    220220!         ELSE                          ! ==> complex interpolation (only one ghost cell available) 
    221221!            !! Use a more complex interpolation since we mix solutions over a couple of grid points 
    222222!            !! it is advised to use it for fields modified by high order schemes (e.g. advection UM5...) 
    223 !            !! clem: for some reason (I don't know why), the following lines do not work  
    224 !            !        I think there is an issue with Agrif_SpecialValue here (not taken into account properly) 
    225223!            ! record ztab 
    226224!            jm = 1 
     
    358356!         ENDIF  ! nbghostcells=1 
    359357          
    360          ! integrated values 
    361          vt_i (i1:i2,j1:j2) = SUM(      v_i(i1:i2,j1:j2,:),            dim=3 ) 
    362          vt_s (i1:i2,j1:j2) = SUM(      v_s(i1:i2,j1:j2,:),            dim=3 ) 
    363          at_i (i1:i2,j1:j2) = SUM(      a_i(i1:i2,j1:j2,:),            dim=3 ) 
    364          et_s(i1:i2,j1:j2)  = SUM( SUM( e_s(i1:i2,j1:j2,:,:), dim=4 ), dim=3 ) 
    365          et_i(i1:i2,j1:j2)  = SUM( SUM( e_i(i1:i2,j1:j2,:,:), dim=4 ), dim=3 ) 
    366  
    367          at_ip(i1:i2,j1:j2) = SUM( a_ip(i1:i2,j1:j2,:), dim=3 ) ! melt ponds 
    368          vt_ip(i1:i2,j1:j2) = SUM( v_ip(i1:i2,j1:j2,:), dim=3 ) 
    369          ! 
    370          ato_i(i1:i2,j1:j2) = 1._wp - at_i(i1:i2,j1:j2)         ! open water fraction   
    371  
    372358         DO jl = 1, jpl 
    373359            WHERE( tmask(i1:i2,j1:j2,1) == 0._wp )   t_su(i1:i2,j1:j2,jl) = rt0   ! to avoid a division by 0 in sbcblk.F90 
Note: See TracChangeset for help on using the changeset viewer.