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 3294 for trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r2715 r3294  
    2727   USE sbc_ice          ! surface boundary condition: ice 
    2828   USE sbc_oce          ! surface boundary condition: ocean 
     29   USE sbccpl 
    2930 
    3031   USE albedo           ! albedo parameters 
    3132   USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
    3233   USE lib_mpp          ! MPP library 
     34   USE wrk_nemo         ! work arrays 
    3335   USE in_out_manager   ! I/O manager 
    3436   USE diaar5, ONLY :   lk_diaar5 
     
    5052   ! 
    5153   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   soce_0, sice_0   ! constant SSS and ice salinity used in levitating sea-ice case 
    52  
    5354   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   utau_oce, vtau_oce   ! air-ocean surface i- & j-stress              [N/m2] 
    5455   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tmod_io              ! modulus of the ice-ocean relative velocity   [m/s] 
     
    100101      !!              Tartinville et al. 2001 Ocean Modelling, 3, 95-108. 
    101102      !!--------------------------------------------------------------------- 
    102       USE wrk_nemo, ONLY: wrk_not_released, wrk_in_use 
    103       USE wrk_nemo, ONLY: zqnsoce => wrk_2d_1 ! 2D workspace 
    104       USE wrk_nemo, ONLY: wrk_3d_4, wrk_3d_5 
    105103      INTEGER, INTENT(in) ::   kt    ! number of iteration 
    106104      !! 
     
    111109      REAL(wp) ::   zqsr, zqns, zfm            ! local scalars 
    112110      REAL(wp) ::   zinda, zfons, zemp         !   -      - 
     111      REAL(wp), POINTER, DIMENSION(:,:)   ::   zqnsoce       ! 2D workspace 
    113112      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb, zalbp   ! 2D/3D workspace 
    114113      !!--------------------------------------------------------------------- 
    115114      
    116       IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 4,5) )THEN 
    117          CALL ctl_stop('lim_sbc_flx_2 : requested workspace arrays unavailable')   ;   RETURN 
    118       ENDIF 
    119       zalb  => wrk_3d_4(:,:,1:1)      ! Set-up pointers to sub-arrays of 3d workspaces 
    120       zalbp => wrk_3d_5(:,:,1:1) 
     115      CALL wrk_alloc( jpi, jpj, zqnsoce ) 
     116      CALL wrk_alloc( jpi, jpj, 1, zalb, zalbp ) 
    121117 
    122118      !------------------------------------------! 
     
    234230      !-----------------------------------------------! 
    235231 
    236       IF( lk_cpl ) THEN          ! coupled case 
    237          tn_ice(:,:,1) = sist(:,:)          ! sea-ice surface temperature        
    238          !                                  ! Computation of snow/ice and ocean albedo 
    239          CALL albedo_ice( tn_ice, reshape( hicif, (/jpi,jpj,1/) ), reshape( hsnif, (/jpi,jpj,1/) ), zalbp, zalb ) 
    240          alb_ice(:,:,1) =  0.5 * ( zalbp(:,:,1) + zalb (:,:,1) )   ! Ice albedo (mean clear and overcast skys) 
    241          CALL iom_put( "icealb_cea", alb_ice(:,:,1) * fr_i(:,:) )  ! ice albedo 
    242       ENDIF 
     232#if defined key_coupled 
     233      tn_ice(:,:,1) = sist(:,:)          ! sea-ice surface temperature        
     234      ht_i(:,:,1) = hicif(:,:) 
     235      ht_s(:,:,1) = hsnif(:,:) 
     236      a_i(:,:,1) = fr_i(:,:) 
     237      !                                  ! Computation of snow/ice and ocean albedo 
     238      CALL albedo_ice( tn_ice, ht_i, ht_s, zalbp, zalb ) 
     239      alb_ice(:,:,1) =  0.5 * ( zalbp(:,:,1) + zalb (:,:,1) )   ! Ice albedo (mean clear and overcast skys) 
     240      CALL iom_put( "icealb_cea", alb_ice(:,:,1) * fr_i(:,:) )  ! ice albedo 
     241#endif 
    243242 
    244243      IF(ln_ctl) THEN            ! control print 
     
    250249      ENDIF  
    251250      ! 
    252       IF( wrk_not_released(2, 1)     .OR.    & 
    253           wrk_not_released(3, 4,5) )   CALL ctl_stop('lim_sbc_flx_2 : failed to release workspace arrays') 
     251      CALL wrk_dealloc( jpi, jpj, zqnsoce ) 
     252      CALL wrk_dealloc( jpi, jpj, 1, zalb, zalbp ) 
    254253      ! 
    255254   END SUBROUTINE lim_sbc_flx_2 
     
    282281      !!              - taum       : modulus of the surface ocean stress (T-point) updated with ice-ocean fluxes 
    283282      !!--------------------------------------------------------------------- 
    284       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    285       USE wrk_nemo, ONLY: ztio_u => wrk_2d_1, ztio_v => wrk_2d_2     ! ocean stress below sea-ice 
    286283      INTEGER ,                     INTENT(in) ::   kt               ! ocean time-step index 
    287284      REAL(wp), DIMENSION(jpi,jpj), INTENT(in) ::   pu_oce, pv_oce   ! surface ocean currents 
     
    291288      REAL(wp) ::   zfrldv, zat_v, zv_i, zvtau_ice, zv_t, zmodi   !   -      - 
    292289      REAL(wp) ::   zsang, zumt                                   !    -         - 
     290      REAL(wp), POINTER, DIMENSION(:,:) ::   ztio_u, ztio_v   ! ocean stress below sea-ice 
    293291      !!--------------------------------------------------------------------- 
    294292      ! 
    295       IF( wrk_in_use(2, 1,2) ) THEN 
    296          CALL ctl_stop('lim_sbc_tau_2 : requested workspace arrays unavailable.')   ;   RETURN 
    297       ENDIF 
     293      CALL wrk_alloc( jpi, jpj, ztio_u, ztio_v ) 
    298294      ! 
    299295      SELECT CASE( cp_ice_msh )      
     
    409405         &                       tab2d_2=vtau, clinfo2=' vtau    : '        , mask2=vmask ) 
    410406      !   
    411       IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_sbc_tau_2 : failed to release workspace arrays') 
     407      CALL wrk_dealloc( jpi, jpj, ztio_u, ztio_v ) 
    412408      ! 
    413409   END SUBROUTINE lim_sbc_tau_2 
Note: See TracChangeset for help on using the changeset viewer.