- Timestamp:
- 2010-11-10T08:48:54+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r2319 r2370 2 2 !!====================================================================== 3 3 !! *** MODULE sbcice_lim_2 *** 4 !! Surface module : update surface ocean boundary condition over ice 5 !! covered area using LIM sea-ice model 6 !! Sea-Ice model : LIM 2.0 Sea ice model time-stepping 4 !! Surface module : update surface ocean boundary condition over ice covered area using LIM sea-ice model 5 !! Sea-Ice model : LIM-2 Sea ice model time-stepping 7 6 !!====================================================================== 8 7 !! History : 1.0 ! 06-2006 (G. Madec) from icestp_2.F90 … … 12 11 #if defined key_lim2 13 12 !!---------------------------------------------------------------------- 14 !! 'key_lim2' : LIM 2.0 sea-ice model 15 !!---------------------------------------------------------------------- 16 !! sbc_ice_lim_2 : sea-ice model time-stepping and 17 !! update ocean sbc over ice-covered area 18 !!---------------------------------------------------------------------- 19 USE oce ! ocean dynamics and tracers 20 USE dom_oce ! ocean space and time domain 21 USE lib_mpp 13 !! 'key_lim2' : LIM-2 sea-ice model 14 !!---------------------------------------------------------------------- 15 !! sbc_ice_lim_2 : sea-ice model time-stepping and update ocean sbc over ice-covered area 16 !!---------------------------------------------------------------------- 17 USE oce ! ocean dynamics and tracers 18 USE dom_oce ! ocean space and time domain 22 19 USE ice_2 23 20 USE par_ice_2 … … 25 22 USE dom_ice_2 26 23 27 USE sbc_oce ! Surface boundary condition: ocean fields28 USE sbc_ice ! Surface boundary condition: ice fields29 USE sbcblk_core ! Surface boundary condition: CORE bulk30 USE sbcblk_clio ! Surface boundary condition: CLIO bulk31 USE sbccpl ! Surface boundary condition: coupled interface24 USE sbc_oce ! Surface boundary condition: ocean fields 25 USE sbc_ice ! Surface boundary condition: ice fields 26 USE sbcblk_core ! Surface boundary condition: CORE bulk 27 USE sbcblk_clio ! Surface boundary condition: CLIO bulk 28 USE sbccpl ! Surface boundary condition: coupled interface 32 29 USE albedo 33 30 34 USE phycst ! Define parameters for the routines35 USE eosbn2 ! equation of state31 USE phycst ! Define parameters for the routines 32 USE eosbn2 ! equation of state 36 33 USE limdyn_2 37 34 USE limtrp_2 38 35 USE limdmp_2 39 36 USE limthd_2 40 USE limsbc_2 ! sea surface boundary condition37 USE limsbc_2 ! sea surface boundary condition 41 38 USE limdia_2 42 39 USE limwri_2 43 40 USE limrst_2 44 41 45 USE lbclnk 46 USE iom ! I/O manager library 47 USE in_out_manager ! I/O manager 48 USE prtctl ! Print control 42 USE lbclnk ! lateral boundary condition - MPP link 43 USE lib_mpp ! MPP library 44 USE iom ! I/O manager library 45 USE in_out_manager ! I/O manager 46 USE prtctl ! Print control 49 47 50 48 IMPLICIT NONE … … 59 57 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 60 58 !! $Id$ 61 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 62 !!---------------------------------------------------------------------- 63 59 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 60 !!---------------------------------------------------------------------- 64 61 CONTAINS 65 62 … … 97 94 IF(lwp) WRITE(numout,*) 'sbc_ice_lim_2 : update ocean surface boudary condition' 98 95 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ via Louvain la Neuve Ice Model (LIM) time stepping' 99 96 ! 100 97 CALL ice_init_2 101 102 98 ENDIF 103 99 104 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN 105 ! 100 ! !----------------------! 101 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! Ice time-step only ! 102 ! !----------------------! 103 ! Bulk Formulea ! 104 !----------------! 106 105 ! ... mean surface ocean current at ice dynamics point 107 ! B-grid dynamics : I-point 108 DO jj = 2, jpj 109 DO ji = 2, jpi ! B grid : no vector opt. 110 u_oce(ji,jj) = 0.5 * ( ssu_m(ji-1,jj ) + ssu_m(ji-1,jj-1) ) * tmu(ji,jj) 111 v_oce(ji,jj) = 0.5 * ( ssv_m(ji ,jj-1) + ssv_m(ji-1,jj-1) ) * tmu(ji,jj) 106 SELECT CASE( cp_ice_msh ) 107 CASE( 'I' ) !== B-grid ice dynamics : I-point (i.e. F-point with sea-ice indexation) 108 DO jj = 2, jpj 109 DO ji = 2, jpi ! NO vector opt. possible 110 u_oce(ji,jj) = 0.5_wp * ( ssu_m(ji-1,jj ) + ssu_m(ji-1,jj-1) ) * tmu(ji,jj) 111 v_oce(ji,jj) = 0.5_wp * ( ssv_m(ji ,jj-1) + ssv_m(ji-1,jj-1) ) * tmu(ji,jj) 112 END DO 112 113 END DO 113 END DO 114 CALL lbc_lnk( u_oce, 'I', -1. ) ! I-point (i.e. F-point with ice indices) 115 CALL lbc_lnk( v_oce, 'I', -1. ) ! I-point (i.e. F-point with ice indices) 114 CALL lbc_lnk( u_oce, 'I', -1. ) ! I-point (i.e. F-point with ice indices) 115 CALL lbc_lnk( v_oce, 'I', -1. ) ! I-point (i.e. F-point with ice indices) 116 ! 117 CASE( 'C' ) !== C-grid ice dynamics : U & V-points (same as ocean) 118 u_oce(:,:) = ssu_m(:,:) ! mean surface ocean current at ice velocity point 119 v_oce(:,:) = ssv_m(:,:) 120 ! 121 END SELECT 116 122 117 123 ! ... masked sea surface freezing temperature [Kelvin] (set to rt0 over land) … … 142 148 & qla_ice , dqns_ice , dqla_ice , & 143 149 & tprecip , sprecip , & 144 & fr1_i0 , fr2_i0 , c l_grid, jpl )150 & fr1_i0 , fr2_i0 , cp_ice_msh , jpl ) 145 151 146 152 CASE( 4 ) ! CORE bulk formulation … … 149 155 & qla_ice , dqns_ice , dqla_ice , & 150 156 & tprecip , sprecip , & 151 & fr1_i0 , fr2_i0 , c l_grid, jpl )157 & fr1_i0 , fr2_i0 , cp_ice_msh , jpl ) 152 158 CASE( 5 ) ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 153 159 CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) … … 170 176 ! Ice model step ! 171 177 ! ---------------- ! 172 numit = numit + nn_fsbc !Ice model time step173 174 CALL lim_rst_opn_2 ( kt )! Open Ice restart file178 numit = numit + nn_fsbc ! Ice model time step 179 180 CALL lim_rst_opn_2 ( kt ) ! Open Ice restart file 175 181 #if ! defined key_c1d 176 ! Ice dynamics & transport (not in 1D case)177 CALL lim_dyn_2 ( kt )! Ice dynamics ( rheology/dynamics )178 CALL lim_trp_2 ( kt )! Ice transport ( Advection/diffusion )179 IF( ln_limdmp ) CALL lim_dmp_2 ( kt )! Ice damping182 ! Ice dynamics & transport (except in 1D case) 183 CALL lim_dyn_2 ( kt ) ! Ice dynamics ( rheology/dynamics ) 184 CALL lim_trp_2 ( kt ) ! Ice transport ( Advection/diffusion ) 185 IF( ln_limdmp ) CALL lim_dmp_2 ( kt ) ! Ice damping 180 186 #endif 181 187 #if defined key_coupled 182 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( reshape( frld, (/jpi,jpj,1/) ), & 183 & qns_tot, qns_ice, qsr_tot , qsr_ice, & 184 & emp_tot, emp_ice, dqns_ice, sprecip, & 188 ! ! Ice surface fluxes in coupled mode 189 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( reshape( frld, (/jpi,jpj,1/) ), & 190 & qns_tot, qns_ice, qsr_tot , qsr_ice, & 191 & emp_tot, emp_ice, dqns_ice, sprecip, & 185 192 ! optional arguments, used only in 'mixed oce-ice' case 186 & 193 & palbi = zalb_ice_cs, psst = sst_m, pist = sist ) 187 194 #endif 188 189 CALL lim_sbc_2 ( kt ) ! Ice/Ocean Mass & Heat fluxes195 CALL lim_thd_2 ( kt ) ! Ice thermodynamics 196 CALL lim_sbc_flx_2 ( kt ) ! update surface ocean mass, heat & salt fluxes 190 197 191 198 IF( ( MOD( kt+nn_fsbc-1, ninfo ) == 0 .OR. ntmoy == 1 ) .AND. .NOT. lk_mpp ) & 192 & 199 & CALL lim_dia_2 ( kt ) ! Ice Diagnostics 193 200 # if ! defined key_iomput 194 201 CALL lim_wri_2 ( kt ) ! Ice outputs 195 202 # endif 196 IF( lrst_ice )CALL lim_rst_write_2( kt ) ! Ice restart file203 IF( lrst_ice ) CALL lim_rst_write_2( kt ) ! Ice restart file 197 204 ! 198 ENDIF 205 ENDIF ! End sea-ice time step only 206 ! 207 ! !--------------------------! 208 ! ! at all ocean time step ! 209 ! !--------------------------! 210 ! 211 ! ! Update surface ocean stresses (only in ice-dynamic case) 212 ! ! otherwise the atm.-ocean stresses are used everywhere 213 IF( ln_limdyn ) CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 199 214 ! 200 215 END SUBROUTINE sbc_ice_lim_2
Note: See TracChangeset
for help on using the changeset viewer.