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 8321 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90 – NEMO

Ignore:
Timestamp:
2017-07-11T20:33:18+02:00 (7 years ago)
Author:
clem
Message:

STEP3 (1): clean separation between sea-ice and ocean

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r8316 r8321  
    3333   USE sbcblk         ! surface boundary condition: bulk formulation 
    3434   USE sbcice_if      ! surface boundary condition: ice-if sea-ice model 
    35    USE sbcice_lim     ! surface boundary condition: LIM 3.0 sea-ice model 
     35#if defined key_lim3 
     36   USE icestp         ! surface boundary condition: LIM 3.0 sea-ice model 
     37#endif 
    3638   USE sbcice_cice    ! surface boundary condition: CICE    sea-ice model 
    3739   USE sbcisf         ! surface boundary condition: ice-shelf 
     
    8991      NAMELIST/namsbc/ nn_fsbc  ,                                                    & 
    9092         &             ln_usr   , ln_flx   , ln_blk       ,                          & 
    91          &             ln_cpl   , ln_mixcpl, nn_components, nn_limflx,               & 
     93         &             ln_cpl   , ln_mixcpl, nn_components,                          & 
    9294         &             nn_ice   , ln_ice_embd,                                       & 
    9395         &             ln_traqsr, ln_dm2dc ,                                         & 
     
    137139         WRITE(numout,*) '         OASIS coupling (with atm or sas)           lk_oasis      = ', lk_oasis 
    138140         WRITE(numout,*) '         components of your executable              nn_components = ', nn_components 
    139          WRITE(numout,*) '         Multicategory heat flux formulation (LIM3) nn_limflx     = ', nn_limflx 
    140141         WRITE(numout,*) '      Sea-ice : ' 
    141142         WRITE(numout,*) '         ice management in the sbc (=0/1/2/3)       nn_ice        = ', nn_ice 
     
    205206      END SELECT 
    206207      ! 
    207       IF( nn_ice == 2 ) THEN           !- LIM3 case: multi-category flux option 
    208          IF(lwp) WRITE(numout,*) 
    209          SELECT CASE( nn_limflx )         ! LIM3 Multi-category heat flux formulation 
    210          CASE ( -1 ) 
    211             IF(lwp) WRITE(numout,*) '   LIM3: use per-category fluxes (nn_limflx = -1) ' 
    212             IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
    213          CASE ( 0  ) 
    214             IF(lwp) WRITE(numout,*) '   LIM3: use average per-category fluxes (nn_limflx = 0) ' 
    215          CASE ( 1  ) 
    216             IF(lwp) WRITE(numout,*) '   LIM3: use average then redistribute per-category fluxes (nn_limflx = 1) ' 
    217             IF( ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in coupled mode must be 0 or 2' ) 
    218          CASE ( 2  ) 
    219             IF(lwp) WRITE(numout,*) '   LIM3: Redistribute a single flux over categories (nn_limflx = 2) ' 
    220             IF( .NOT.ln_cpl )   CALL ctl_stop( 'sbc_init : the chosen nn_limflx for LIM3 in forced mode cannot be 2' ) 
    221          CASE DEFAULT 
    222             CALL ctl_stop( 'sbcmod: LIM3 option, nn_limflx, should be between -1 and 2' ) 
    223          END SELECT 
    224       ELSE                             ! other sea-ice model 
    225          IF( nn_limflx >= 0  )   CALL ctl_warn( 'sbc_init : multi-category flux option (nn_limflx) only available in LIM3' ) 
    226       ENDIF 
    227       ! 
    228208      !                       !**  allocate and set required variables 
    229209      ! 
     
    325305                          CALL sbc_rnf_init            ! Runof initialization 
    326306      ! 
     307#if defined key_lim3 
    327308      IF    ( lk_agrif .AND. nn_ice == 0 ) THEN 
    328309                         IF( sbc_ice_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_ice_alloc : unable to allocate arrays' )  ! clem2017: allocate ice arrays in case agrif + lim + no-ice in child grid               
    329       ELSEIF(                nn_ice == 2 ) THEN   ;   CALL sbc_lim_init            ! LIM3 initialization 
    330       ELSEIF(                nn_ice == 3 ) THEN   ;   CALL cice_sbc_init( nsbc )   ! CICE initialization 
    331       ENDIF 
     310      ELSEIF(                nn_ice == 2 ) THEN   ;   CALL ice_init                ! LIM3 initialization 
     311      ENDIF 
     312#endif 
     313      IF    (                nn_ice == 3 )            CALL cice_sbc_init( nsbc )   ! CICE initialization 
    332314      ! 
    333315      IF( ln_wave     )   CALL sbc_wave_init              ! surface wave initialisation 
     
    420402      ! 
    421403      SELECT CASE( nn_ice )                                       ! Update heat and freshwater fluxes over sea-ice areas 
    422       CASE(  1 )   ;         CALL sbc_ice_if   ( kt )                ! Ice-cover climatology ("Ice-if" model) 
    423       CASE(  2 )   ;         CALL sbc_ice_lim  ( kt, nsbc )          ! LIM-3 ice model 
    424       CASE(  3 )   ;         CALL sbc_ice_cice ( kt, nsbc )          ! CICE ice model 
     404      CASE(  1 )   ;         CALL sbc_ice_if   ( kt )             ! Ice-cover climatology ("Ice-if" model) 
     405#if defined key_lim3 
     406      CASE(  2 )   ;         CALL ice_stp  ( kt, nsbc )           ! LIM-3 ice model 
     407#endif 
     408      CASE(  3 )   ;         CALL sbc_ice_cice ( kt, nsbc )       ! CICE ice model 
    425409      END SELECT 
    426410 
Note: See TracChangeset for help on using the changeset viewer.