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 5059 for branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90 – NEMO

Ignore:
Timestamp:
2015-02-04T17:22:15+01:00 (9 years ago)
Author:
clem
Message:

LIM3: set ice diffusivity independant of the resolution in the namelist. The dependancy is done in the code itself

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r5058 r5059  
    183183         !------------------------------! 
    184184         numit = numit + nn_fsbc                     ! Ice model time step 
    185          ! 
    186          !                                           ! Store previous ice values 
    187          a_i_b  (:,:,:)   = a_i  (:,:,:)     ! ice area 
    188          e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
    189          v_i_b  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
    190          v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
    191          e_s_b  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
    192          smv_i_b(:,:,:)   = smv_i(:,:,:)     ! salt content 
    193          oa_i_b (:,:,:)   = oa_i (:,:,:)     ! areal age content 
    194          u_ice_b(:,:)     = u_ice(:,:) 
    195          v_ice_b(:,:)     = v_ice(:,:) 
    196  
    197                           CALL sbc_lim_diag0         ! set diag of mass, heat and salt fluxes to 0 
    198  
    199                           CALL lim_rst_opn( kt )     ! Open Ice restart file 
     185         !                                                    
     186         CALL sbc_lim_update                ! Store previous ice values 
     187 
     188         CALL sbc_lim_diag0                 ! set diag of mass, heat and salt fluxes to 0 
     189          
     190         CALL lim_rst_opn( kt )             ! Open Ice restart file 
    200191         ! 
    201192         ! ---------------------------------------------- 
     
    203194         ! ---------------------------------------------- 
    204195         IF( .NOT. lk_c1d ) THEN 
    205  
    206                           CALL lim_dyn( kt )              ! Ice dynamics    ( rheology/dynamics ) 
    207  
    208                           CALL lim_trp( kt )              ! Ice transport   ( Advection/diffusion ) 
    209  
    210          IF( nn_monocat /= 2 )   & 
    211             &             CALL lim_itd_me                 ! Mechanical redistribution ! (ridging/rafting) 
     196             
     197            CALL lim_dyn( kt )              ! Ice dynamics    ( rheology/dynamics ) 
     198             
     199            CALL lim_trp( kt )              ! Ice transport   ( Advection/diffusion ) 
     200             
     201            IF( nn_monocat /= 2 ) CALL lim_itd_me  ! Mechanical redistribution ! (ridging/rafting) 
    212202 
    213203#if defined key_bdy 
    214                           ! bdy ice thermo  
    215                           CALL lim_var_glo2eqv            ! equivalent variables 
    216                           CALL bdy_ice_lim( kt ) 
    217                           CALL lim_var_zapsmall 
    218                           CALL lim_var_agg(1) 
    219          IF( ln_nicep )   CALL lim_prt( kt, jiindx, jjindx, 1, ' - ice thermo bdy - ' )   ! control print 
     204            CALL lim_var_glo2eqv 
     205            CALL bdy_ice_lim( kt )         ! bdy ice thermo  
     206            CALL lim_var_zapsmall 
     207            CALL lim_var_agg(1) 
     208            IF( ln_nicep )   CALL lim_prt( kt, jiindx, jjindx, 1, ' - ice thermo bdy - ' ) 
    220209#endif 
    221  
    222                           CALL lim_update1( kt ) 
    223  
     210            CALL lim_update1( kt ) 
     211             
    224212         ENDIF 
    225  
    226          !- Change old values for new values 
    227          u_ice_b(:,:)     = u_ice(:,:) 
    228          v_ice_b(:,:)     = v_ice(:,:) 
    229          a_i_b  (:,:,:)   = a_i  (:,:,:) 
    230          v_s_b  (:,:,:)   = v_s  (:,:,:) 
    231          v_i_b  (:,:,:)   = v_i  (:,:,:) 
    232          e_s_b  (:,:,:,:) = e_s  (:,:,:,:) 
    233          e_i_b  (:,:,:,:) = e_i  (:,:,:,:) 
    234          oa_i_b (:,:,:)   = oa_i (:,:,:) 
    235          smv_i_b(:,:,:)   = smv_i(:,:,:) 
     213          
     214         CALL sbc_lim_update                ! Store previous ice values 
    236215  
    237216         ! ---------------------------------------------- 
    238217         ! ice thermodynamics 
    239218         ! ---------------------------------------------- 
    240                           CALL lim_var_glo2eqv            ! equivalent variables 
    241                           CALL lim_var_agg(1)             ! aggregate ice categories 
    242  
    243                           ! previous lead fraction and ice volume for flux calculations 
    244                           pfrld(:,:)   = 1._wp - at_i(:,:) 
    245                           phicif(:,:)  = vt_i(:,:) 
    246  
    247                           SELECT CASE( kblk ) 
    248                              CASE ( jp_cpl ) 
    249                              CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=zalb_ice, psst=sst_m, pist=t_su    ) 
    250                              IF( nn_limflx == 2 )   CALL ice_lim_flx( t_su, zalb_ice, qns_ice, qsr_ice ,   & 
    251                           &                                           dqns_ice, qla_ice, dqla_ice, nn_limflx ) 
    252                              ! Latent heat flux is forced to 0 in coupled: it is included in qns (non-solar heat flux) 
    253                              qla_ice  (:,:,:) = 0._wp 
    254                              dqla_ice (:,:,:) = 0._wp 
    255                           END SELECT 
    256                           ! 
    257                           CALL lim_thd( kt )              ! Ice thermodynamics  
    258  
    259                           CALL lim_update2( kt )          ! Global variables update 
    260          ! 
    261                           CALL lim_sbc_flx( kt )          ! Update surface ocean mass, heat and salt fluxes 
    262          ! 
    263          IF(ln_limdiaout) CALL lim_diahsb                 ! Diagnostics and outputs  
    264  
    265                           CALL lim_wri( 1 )               ! Ice outputs  
    266  
     219         CALL lim_var_glo2eqv 
     220         CALL lim_var_agg(1) 
     221          
     222         ! previous lead fraction and ice volume for flux calculations 
     223         pfrld(:,:)   = 1._wp - at_i(:,:) 
     224         phicif(:,:)  = vt_i(:,:) 
     225          
     226         SELECT CASE( kblk ) 
     227         CASE ( jp_cpl ) 
     228            CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=zalb_ice, psst=sst_m, pist=t_su    ) 
     229            IF( nn_limflx == 2 )   CALL ice_lim_flx( t_su, zalb_ice, qns_ice, qsr_ice ,   & 
     230               &                                           dqns_ice, qla_ice, dqla_ice, nn_limflx ) 
     231            ! Latent heat flux is forced to 0 in coupled: it is included in qns (non-solar heat flux) 
     232            qla_ice  (:,:,:) = 0._wp 
     233            dqla_ice (:,:,:) = 0._wp 
     234         END SELECT 
     235         ! 
     236         CALL lim_thd( kt )                         ! Ice thermodynamics  
     237          
     238         CALL lim_update2( kt )                     ! Global variables update 
     239         ! 
     240         CALL lim_sbc_flx( kt )                     ! Update surface ocean mass, heat and salt fluxes 
     241         ! 
     242         IF(ln_limdiaout) CALL lim_diahsb           ! Diagnostics and outputs  
     243          
     244         CALL lim_wri( 1 )                          ! Ice outputs  
     245          
    267246         IF( kt == nit000 .AND. ln_rstart )   & 
    268             &             CALL iom_close( numrir )        ! close input ice restart file 
    269          ! 
    270          IF( lrst_ice )   CALL lim_rst_write( kt )        ! Ice restart file  
    271                           CALL lim_var_glo2eqv            ! ??? 
    272          ! 
    273          IF( ln_nicep )   CALL lim_ctl( kt )              ! alerts in case of model crash 
     247            &             CALL iom_close( numrir )  ! close input ice restart file 
     248         ! 
     249         IF( lrst_ice )   CALL lim_rst_write( kt )  ! Ice restart file  
     250         CALL lim_var_glo2eqv                       ! ??? 
     251         ! 
     252         IF( ln_nicep )   CALL lim_ctl( kt )        ! alerts in case of model crash 
    274253         ! 
    275254         CALL wrk_dealloc( jpi,jpj,jpl, zalb_os, zalb_cs, zalb_ice ) 
    276255         ! 
    277       ENDIF                                    ! End sea-ice time step only 
    278  
    279       !                                        !--------------------------! 
    280       !                                        !  at all ocean time step  ! 
    281       !                                        !--------------------------! 
    282       !                                                
    283       !                                              ! Update surface ocean stresses (only in ice-dynamic case) 
    284       !                                                   ! otherwise the atm.-ocean stresses are used everywhere 
     256      ENDIF   ! End sea-ice time step only 
     257 
     258      !--------------------------------! 
     259      ! --- at all ocean time step --- ! 
     260      !--------------------------------! 
     261      ! Update surface ocean stresses (only in ice-dynamic case) 
     262      !    otherwise the atm.-ocean stresses are used everywhere 
    285263      IF( ln_limdyn )     CALL lim_sbc_tau( kt, ub(:,:,1), vb(:,:,1) )  ! using before instantaneous surf. currents 
    286264!!gm   remark, the ocean-ice stress is not saved in ice diag call above .....  find a solution!!! 
     
    504482         &                          pdqn_ice, pqla_ice, pdql_ice, k_limflx ) 
    505483      !!--------------------------------------------------------------------- 
    506       !!                  ***  ROUTINE sbc_ice_lim  *** 
     484      !!                  ***  ROUTINE ice_lim_flx  *** 
    507485      !!                    
    508486      !! ** Purpose :   update the ice surface boundary condition by averaging and / or 
     
    580558   END SUBROUTINE ice_lim_flx 
    581559 
     560   SUBROUTINE sbc_lim_update 
     561      !!---------------------------------------------------------------------- 
     562      !!                  ***  ROUTINE sbc_lim_update  *** 
     563      !! 
     564      !! ** purpose :  store ice variables at "before" time step  
     565      !!---------------------------------------------------------------------- 
     566      a_i_b  (:,:,:)   = a_i  (:,:,:)     ! ice area 
     567      e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
     568      v_i_b  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
     569      v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
     570      e_s_b  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
     571      smv_i_b(:,:,:)   = smv_i(:,:,:)     ! salt content 
     572      oa_i_b (:,:,:)   = oa_i (:,:,:)     ! areal age content 
     573      u_ice_b(:,:)     = u_ice(:,:) 
     574      v_ice_b(:,:)     = v_ice(:,:) 
     575       
     576   END SUBROUTINE sbc_lim_update 
     577 
    582578   SUBROUTINE sbc_lim_diag0 
    583579      !!---------------------------------------------------------------------- 
    584       !!                  ***  ROUTINE sbc_lim_flx0  *** 
     580      !!                  ***  ROUTINE sbc_lim_diag0  *** 
    585581      !! 
    586582      !! ** purpose :  set ice-ocean and ice-atm. fluxes to zeros at the beggining 
     
    612608      afx_tot(:,:) = 0._wp   ; 
    613609      afx_dyn(:,:) = 0._wp   ;   afx_thd(:,:) = 0._wp 
     610 
     611      diag_heat_dhc(:,:) = 0._wp ; 
    614612       
    615613   END SUBROUTINE sbc_lim_diag0 
Note: See TracChangeset for help on using the changeset viewer.