Changeset 3294 for trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r2715 r3294 27 27 USE sbc_ice ! surface boundary condition: ice 28 28 USE sbc_oce ! surface boundary condition: ocean 29 USE sbccpl 29 30 30 31 USE albedo ! albedo parameters 31 32 USE lbclnk ! ocean lateral boundary condition - MPP exchanges 32 33 USE lib_mpp ! MPP library 34 USE wrk_nemo ! work arrays 33 35 USE in_out_manager ! I/O manager 34 36 USE diaar5, ONLY : lk_diaar5 … … 50 52 ! 51 53 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: soce_0, sice_0 ! constant SSS and ice salinity used in levitating sea-ice case 52 53 54 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau_oce, vtau_oce ! air-ocean surface i- & j-stress [N/m2] 54 55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmod_io ! modulus of the ice-ocean relative velocity [m/s] … … 100 101 !! Tartinville et al. 2001 Ocean Modelling, 3, 95-108. 101 102 !!--------------------------------------------------------------------- 102 USE wrk_nemo, ONLY: wrk_not_released, wrk_in_use103 USE wrk_nemo, ONLY: zqnsoce => wrk_2d_1 ! 2D workspace104 USE wrk_nemo, ONLY: wrk_3d_4, wrk_3d_5105 103 INTEGER, INTENT(in) :: kt ! number of iteration 106 104 !! … … 111 109 REAL(wp) :: zqsr, zqns, zfm ! local scalars 112 110 REAL(wp) :: zinda, zfons, zemp ! - - 111 REAL(wp), POINTER, DIMENSION(:,:) :: zqnsoce ! 2D workspace 113 112 REAL(wp), POINTER, DIMENSION(:,:,:) :: zalb, zalbp ! 2D/3D workspace 114 113 !!--------------------------------------------------------------------- 115 114 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 ) 121 117 122 118 !------------------------------------------! … … 234 230 !-----------------------------------------------! 235 231 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 243 242 244 243 IF(ln_ctl) THEN ! control print … … 250 249 ENDIF 251 250 ! 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 ) 254 253 ! 255 254 END SUBROUTINE lim_sbc_flx_2 … … 282 281 !! - taum : modulus of the surface ocean stress (T-point) updated with ice-ocean fluxes 283 282 !!--------------------------------------------------------------------- 284 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released285 USE wrk_nemo, ONLY: ztio_u => wrk_2d_1, ztio_v => wrk_2d_2 ! ocean stress below sea-ice286 283 INTEGER , INTENT(in) :: kt ! ocean time-step index 287 284 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pu_oce, pv_oce ! surface ocean currents … … 291 288 REAL(wp) :: zfrldv, zat_v, zv_i, zvtau_ice, zv_t, zmodi ! - - 292 289 REAL(wp) :: zsang, zumt ! - - 290 REAL(wp), POINTER, DIMENSION(:,:) :: ztio_u, ztio_v ! ocean stress below sea-ice 293 291 !!--------------------------------------------------------------------- 294 292 ! 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 ) 298 294 ! 299 295 SELECT CASE( cp_ice_msh ) … … 409 405 & tab2d_2=vtau, clinfo2=' vtau : ' , mask2=vmask ) 410 406 ! 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 ) 412 408 ! 413 409 END SUBROUTINE lim_sbc_tau_2
Note: See TracChangeset
for help on using the changeset viewer.