- Timestamp:
- 2008-04-04T17:00:05+02:00 (16 years ago)
- Location:
- branches/dev_001_SBC/NEMO
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_SBC/NEMO/LIM_SRC/limdyn.F90
r717 r879 51 51 !! *** ROUTINE lim_dyn *** 52 52 !! 53 !! ** Purpose : compute ice velocity and ocean-ice stress53 !! ** Purpose : compute ice velocity and ocean-ice friction velocity 54 54 !! 55 55 !! ** Method : … … 57 57 !! ** Action : - Initialisation 58 58 !! - Call of the dynamic routine for each hemisphere 59 !! - computation of the stress at the ocean surface59 !! - computation of the friction velocity at the sea-ice base 60 60 !! - treatment of the case if no ice dynamic 61 61 !!--------------------------------------------------------------------- … … 68 68 REAL(wp), DIMENSION(jpj) :: zmsk ! i-averaged of tmask 69 69 REAL(wp), DIMENSION(jpi,jpj) :: zu_io, zv_io ! ice-ocean velocity 70 !!$ INTEGER :: ji, jj ! dummy loop indices71 !!$ INTEGER :: i_j1, i_jpj ! Starting/ending j-indices for rheology72 !!$ REAL(wp) :: &73 !!$ ztairx, ztairy, & ! tempory scalars74 !!$ zsang , zrhomod, &75 !!$ ztglx , ztgly , &76 !!$ zt11, zt12, zt21, zt22 , &77 !!$ zustm, zsfrld, zsfrldm4, &78 !!$ zu_ice, zv_ice, ztair279 !!$ REAL(wp),DIMENSION(jpi,jpj) :: zmod80 !!$ REAL(wp),DIMENSION(jpj) :: &81 !!$ zind, & ! i-averaged indicator of sea-ice82 !!$ zmsk ! i-averaged of tmask83 70 !!--------------------------------------------------------------------- 84 71 … … 86 73 87 74 IF( ln_limdyn ) THEN 88 75 ! 89 76 ! Mean ice and snow thicknesses. 90 77 hsnm(:,:) = ( 1.0 - frld(:,:) ) * hsnif(:,:) 91 78 hicm(:,:) = ( 1.0 - frld(:,:) ) * hicif(:,:) 92 93 ! 94 ! 79 ! 80 ! ! Rheology (ice dynamics) 81 ! ! ======== 95 82 96 83 ! Define the j-limits where ice rheology is computed … … 102 89 IF(ln_ctl) CALL prt_ctl_info( 'lim_dyn : i_j1 = ', ivar1=i_j1, clinfo2=' ij_jpj = ', ivar2=i_jpj ) 103 90 CALL lim_rhg( i_j1, i_jpj ) 104 91 ! 105 92 ELSE ! optimization of the computational area 106 93 ! 107 94 DO jj = 1, jpj 108 95 zind(jj) = SUM( frld (:,jj ) ) ! = FLOAT(jpj) if ocean everywhere on a j-line 109 96 zmsk(jj) = SUM( tmask(:,jj,1) ) ! = 0 if land everywhere on a j-line 110 97 END DO 111 98 ! 112 99 IF( l_jeq ) THEN ! local domain include both hemisphere 113 100 ! ! Rheology is computed in each hemisphere … … 121 108 i_j1 = MAX( 1, i_j1-1 ) 122 109 IF(ln_ctl) WRITE(numout,*) 'lim_dyn : NH i_j1 = ', i_j1, ' ij_jpj = ', i_jpj 123 110 ! 124 111 CALL lim_rhg( i_j1, i_jpj ) 125 112 ! 126 113 ! Southern hemisphere 127 114 i_j1 = 1 … … 132 119 i_jpj = MIN( jpj, i_jpj+2 ) 133 120 IF(ln_ctl) WRITE(numout,*) 'lim_dyn : SH i_j1 = ', i_j1, ' ij_jpj = ', i_jpj 134 121 ! 135 122 CALL lim_rhg( i_j1, i_jpj ) 136 123 ! 137 124 ELSE ! local domain extends over one hemisphere only 138 125 ! ! Rheology is computed only over the ice cover … … 151 138 152 139 IF(ln_ctl) WRITE(numout,*) 'lim_dyn : one hemisphere: i_j1 = ', i_j1, ' ij_jpj = ', i_jpj 153 140 ! 154 141 CALL lim_rhg( i_j1, i_jpj ) 155 142 ! 156 143 ENDIF 157 144 ! 158 145 ENDIF 159 146 160 147 IF(ln_ctl) CALL prt_ctl(tab2d_1=ui_ice , clinfo1=' lim_dyn : ui_ice :', tab2d_2=vi_ice , clinfo2=' vi_ice :') 161 148 162 !!$ ! ! Ice-Ocean stress163 !!$ ! ! ================164 !!$ DO jj = 1, jpj165 !!$ DO ji = 1, jpi166 !!$!! zsang = SIGN(1.e0, gphif(ji-1,jj-1) ) * sangvg ! do the full loop and avoid lbc_lnk167 !!$ zsang = SIGN(1.e0, gphif(ji,jj) ) * sangvg168 !!$ zu_ice = u_ice(ji,jj) - u_io(ji,jj)169 !!$ zv_ice = v_ice(ji,jj) - v_io(ji,jj)170 !!$ zrhomod = zu_ice * zu_ice + zv_ice * zv_ice171 !!$ zmod (ji,jj) = zrhomod172 !!$ zrhomod = rhoco * SQRT( zrhomod )173 !!$ ftaux(ji,jj) = zrhomod * ( cangvg * zu_ice - zsang * zv_ice )174 !!$ ftauy(ji,jj) = zrhomod * ( cangvg * zv_ice + zsang * zu_ice )175 !!$ END DO176 !!$ END DO177 178 149 ! computation of friction velocity 179 150 ! -------------------------------- … … 194 165 END DO 195 166 END DO 196 !!$ DO jj = 2, jpjm1197 !!$ DO ji = fs_2, fs_jpim1 ! vector opt.198 !!$ ust2s(ji,jj) = 0.25 * cw * ( zmod(ji,jj+1) + zmod(ji+1,jj+1) + &199 !!$ & zmod(ji,jj ) + zmod(ji+1,jj ) ) * tms(ji,jj)200 !!$ END DO201 !!$ END DO202 167 ! 203 168 ELSE ! no ice dynamics : transmit directly the atmospheric stress to the ocean … … 212 177 ! 213 178 ENDIF 214 179 ! 215 180 CALL lbc_lnk( ust2s, 'T', 1. ) ! T-point 216 181 ! 217 182 IF(ln_ctl) CALL prt_ctl(tab2d_1=ust2s , clinfo1=' lim_dyn : ust2s :') 218 183 -
branches/dev_001_SBC/NEMO/LIM_SRC/limrhg.F90
r717 r879 147 147 zi1(ji,jj) = tms(ji,jj) * ( 1.0 - frld(ji,jj) ) 148 148 zi2(ji,jj) = tms(ji,jj) * ( 1.0 - frld(ji,jj) ) 149 150 !!gm #if defined key_lim_cp1 && defined key_coupled151 !!gm zi1(ji,jj) = tms(ji,jj) * gtaux(ji,jj) * ( 1.0 - frld(ji,jj) )152 !!gm zi2(ji,jj) = tms(ji,jj) * gtauy(ji,jj) * ( 1.0 - frld(ji,jj) )153 !!gm #else154 !!gm zi1(ji,jj) = tms(ji,jj) * ( 1.0 - frld(ji,jj) )155 !!gm zi2(ji,jj) = tms(ji,jj) * ( 1.0 - frld(ji,jj) )156 !!gm #endif157 149 END DO 158 150 END DO … … 185 177 186 178 ! Wind stress. 187 !!gm #if defined key_lim_cp1 && defined key_coupled 188 !!gm ztagnx = ( zi1(ji,jj ) * wght(ji,jj,2,2) + zi1(ji-1,jj ) * wght(ji,jj,1,2) & 189 !!gm & + zi1(ji,jj-1) * wght(ji,jj,2,1) + zi1(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw 190 !!gm ztagny = ( zi2(ji,jj ) * wght(ji,jj,2,2) + zi2(ji-1,jj ) * wght(ji,jj,1,2) & 191 !!gm & + zi2(ji,jj-1) * wght(ji,jj,2,1) + zi2(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw 192 !!gm #else 193 !!gm ztagnx = ( zi1(ji,jj ) * wght(ji,jj,2,2) + zi1(ji-1,jj ) * wght(ji,jj,1,2) & 194 !!gm & + zi1(ji,jj-1) * wght(ji,jj,2,1) + zi1(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw * gtaux(ji,jj) 195 !!gm ztagny = ( zi2(ji,jj ) * wght(ji,jj,2,2) + zi2(ji-1,jj ) * wght(ji,jj,1,2) & 196 !!gm & + zi2(ji,jj-1) * wght(ji,jj,2,1) + zi2(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw * gtauy(ji,jj) 197 !!gm #endif 198 !!gm always stress provided at I-point (ocean F-point) 179 ! always provide stress at I-point (ocean F-point) 199 180 ztagnx = ( zi1(ji,jj ) * wght(ji,jj,2,2) + zi1(ji-1,jj ) * wght(ji,jj,1,2) & 200 181 & + zi1(ji,jj-1) * wght(ji,jj,2,1) + zi1(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw * utaui_ice(ji,jj) -
branches/dev_001_SBC/NEMO/LIM_SRC/limthd.F90
r755 r879 184 184 ! temperature and turbulent mixing (McPhee, 1992) 185 185 zfric_u = MAX ( MIN( SQRT( ust2s(ji,jj) ) , zfric_umax ) , zfric_umin ) ! friction velocity 186 !!gm old fdtcn(ji,jj) = zindb * rau0 * rcp * 0.006 * zfric_u * ( sst_io(ji,jj) - tfu(ji,jj) )187 186 fdtcn(ji,jj) = zindb * rau0 * rcp * 0.006 * zfric_u * ( sst_m(ji,jj) - tfu(ji,jj) ) 188 187 qdtcn(ji,jj) = zindb * fdtcn(ji,jj) * frld(ji,jj) * rdt_ice … … 203 202 204 203 ! energy needed to bring ocean surface layer until its freezing 205 !!gm old qcmif (ji,jj) = rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_io(ji,jj) ) * ( 1 - zinda )206 204 qcmif (ji,jj) = rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) 207 205 -
branches/dev_001_SBC/NEMO/LIM_SRC/limwri.F90
r805 r879 148 148 zcmo(ji,jj,9) = sst_m(ji,jj) 149 149 zcmo(ji,jj,10) = sss_m(ji,jj) 150 151 !!gm zcmo(ji,jj,11) = fnsolar(ji,jj) + fsolar(ji,jj)152 !!gm zcmo(ji,jj,12) = fsolar (ji,jj)153 !!gm zcmo(ji,jj,13) = fnsolar(ji,jj)154 150 zcmo(ji,jj,11) = qns(ji,jj) + qsr(ji,jj) 155 151 zcmo(ji,jj,12) = qsr(ji,jj) 156 152 zcmo(ji,jj,13) = qns(ji,jj) 157 153 ! See thersf for the coefficient 158 !!gm zcmo(ji,jj,14) = - fsalt(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce159 154 zcmo(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce !!gm ??? 160 155 zcmo(ji,jj,15) = utaui_ice(ji,jj) 161 156 zcmo(ji,jj,16) = vtaui_ice(ji,jj) 162 zcmo(ji,jj,17) = ( 1.0 - frld(ji,jj) ) * qsr_ice(ji,jj) + frld(ji,jj) * qsr(ji,jj) !!gm a revoir163 zcmo(ji,jj,18) = ( 1.0 - frld(ji,jj) ) * qns_ice(ji,jj) + frld(ji,jj) * qns(ji,jj) !!gm a revoir157 zcmo(ji,jj,17) = qsr_ice(ji,jj) 158 zcmo(ji,jj,18) = qns_ice(ji,jj) 164 159 zcmo(ji,jj,19) = sprecip(ji,jj) 165 160 END DO -
branches/dev_001_SBC/NEMO/LIM_SRC/limwri_dimg.h90
r717 r879 113 113 & + vi_ice(ji,jj+1) * tmu(ji,jj+1) + vi_ice(ji+1,jj+1) * tmu(ji+1,jj+1) ) & 114 114 / ztmu 115 zcmo(ji,jj,9) = sst_ io(ji,jj)116 zcmo(ji,jj,10) = sss_ io(ji,jj)117 118 zcmo(ji,jj,11) = fnsolar(ji,jj) + fsolar(ji,jj)119 zcmo(ji,jj,12) = fsolar(ji,jj)120 zcmo(ji,jj,13) = fnsolar(ji,jj)115 zcmo(ji,jj,9) = sst_m(ji,jj) 116 zcmo(ji,jj,10) = sss_m(ji,jj) 117 118 zcmo(ji,jj,11) = qns(ji,jj) + qsr(ji,jj) 119 zcmo(ji,jj,12) = qsr(ji,jj) 120 zcmo(ji,jj,13) = qns(ji,jj) 121 121 ! See thersf for the coefficient 122 zcmo(ji,jj,14) = - fsalt(ji,jj) * rday * ( sss_io(ji,jj) + epsi16 ) / soce123 zcmo(ji,jj,15) = gtaux(ji,jj)124 zcmo(ji,jj,16) = gtauy(ji,jj)125 zcmo(ji,jj,17) = ( 1.0 - frld(ji,jj) ) * qsr_ice (ji,jj) + frld(ji,jj) * qsr_oce (ji,jj)126 zcmo(ji,jj,18) = ( 1.0 - frld(ji,jj) ) * qnsr_ice(ji,jj) + frld(ji,jj) * qnsr_oce(ji,jj)122 zcmo(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 123 zcmo(ji,jj,15) = utaui_ice(ji,jj) 124 zcmo(ji,jj,16) = vtaui_ice(ji,jj) 125 zcmo(ji,jj,17) = qsr_ice (ji,jj) 126 zcmo(ji,jj,18) = qnsr_ice(ji,jj) 127 127 zcmo(ji,jj,19) = sprecip(ji,jj) 128 128 END DO … … 156 156 & + vi_ice(ji,jj+1) * tmu(ji,jj+1) + vi_ice(ji+1,jj+1) * tmu(ji+1,jj+1) ) & 157 157 / ztmu 158 rcmoy(ji,jj,9) = sst_ io(ji,jj)159 rcmoy(ji,jj,10) = sss_ io(ji,jj)160 161 rcmoy(ji,jj,11) = fnsolar(ji,jj) + fsolar(ji,jj)162 rcmoy(ji,jj,12) = fsolar(ji,jj)163 rcmoy(ji,jj,13) = fnsolar(ji,jj)158 rcmoy(ji,jj,9) = sst_m(ji,jj) 159 rcmoy(ji,jj,10) = sss_m(ji,jj) 160 161 rcmoy(ji,jj,11) = qns(ji,jj) + qsr(ji,jj) 162 rcmoy(ji,jj,12) = qsr(ji,jj) 163 rcmoy(ji,jj,13) = qns(ji,jj) 164 164 ! See thersf for the coefficient 165 rcmoy(ji,jj,14) = - fsalt(ji,jj) * rday * ( sss_io(ji,jj) + epsi16 ) / soce166 rcmoy(ji,jj,15) = gtaux(ji,jj)167 rcmoy(ji,jj,16) = gtauy(ji,jj)168 rcmoy(ji,jj,17) = ( 1.0 - frld(ji,jj) ) * qsr_ice (ji,jj) + frld(ji,jj) * qsr_oce (ji,jj)169 rcmoy(ji,jj,18) = ( 1.0 - frld(ji,jj) ) * qnsr_ice(ji,jj) + frld(ji,jj) * qnsr_oce(ji,jj)165 rcmoy(ji,jj,14) = - emps(ji,jj) * rday * ( sss_m(ji,jj) + epsi16 ) / soce 166 rcmoy(ji,jj,15) = utaui_ice(ji,jj) 167 rcmoy(ji,jj,16) = vtaui_ice(ji,jj) 168 rcmoy(ji,jj,17) = qsr_ice (ji,jj) 169 rcmoy(ji,jj,18) = qnsr_ice(ji,jj) 170 170 rcmoy(ji,jj,19) = sprecip(ji,jj) 171 171 END DO -
branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r871 r879 270 270 REAL(wp) :: zdtetar, ztvmoyr, zlxins, zchcm, zclcm ! - - 271 271 REAL(wp) :: zmt1, zmt2, zmt3, ztatm3, ztamr, ztaevbk ! - - 272 REAL(wp) :: z coef, zsst, ztatm, zcco1, zpatm! - -272 REAL(wp) :: zsst, ztatm, zcco1, zpatm ! - - 273 273 REAL(wp) :: zrhoa, zev, zes, zeso, zqatm, zevsqr ! - - 274 274 !! … … 283 283 ! momentum fluxes (utau, vtau ) ! 284 284 !------------------------------------! 285 286 ! Change from wind speed to wind stress over OCEAN (cao is used)287 ! note: 1.3 = air density)288 !!gm the module is wrong as U and V points are not the same289 !!gm the surface currents are not taken into account...290 285 !CDIR COLLAPSE 291 286 DO jj = 1 , jpj … … 295 290 END DO 296 291 END DO 297 !!gm better coding: use the wind module and averaging to U and V points 298 ! zcoef = 1.3 * cao * 0.5 299 ! DO jj = 1 , jpjm1 300 ! DO ji = 1, fs_jpim1 301 ! utau(ji,jj) = zcoef * ( sf(jp_wndm)%fnow(ji+1,jj) + sf(jp_wndm)%fnow(ji,jj) ) * sf(jp_wndi)%fnow(ji,jj) 302 ! vtau(ji,jj) = zcoef * ( sf(jp_wndm)%fnow(ji,jj+1) + sf(jp_wndm)%fnow(ji,jj) ) * sf(jp_wndj)%fnow(ji,jj) 303 ! END DO 304 ! END DO 305 ! CALL lbc_lnk( utau(:,:), 'U', -1. ) 306 ! CALL lbc_lnk( vtau(:,:), 'V', -1. ) 307 !!gm end coding 308 309 292 310 293 !------------------------------------------------! 311 294 ! Shortwave radiation for ocean and snow/ice ! … … 413 396 emps(:,:) = emp(:,:) 414 397 ! 398 IF(ln_ctl) THEN 399 CALL prt_ctl(tab2d_1=zqsb , clinfo1=' blk_oce_clio: zqsb : ', tab2d_2=zqlw , clinfo2=' zqlw : ') 400 CALL prt_ctl(tab2d_1=zqla , clinfo1=' blk_oce_clio: zqla : ', tab2d_2=qsr , clinfo2=' qsr : ') 401 CALL prt_ctl(tab2d_1=pst , clinfo1=' blk_oce_clio: pst : ', tab2d_2=emp , clinfo2=' emp : ') 402 CALL prt_ctl(tab2d_1=utau , clinfo1=' blk_oce_clio: utau : ', mask1=umask, & 403 & tab2d_2=vtau , clinfo2=' vtau : ', mask2=vmask ) 404 ENDIF 405 415 406 END SUBROUTINE blk_oce_clio 416 407 … … 496 487 CASE( 'B' ) ! B-grid ice dynamics 497 488 ! stress from ocean U- and V-points to ice U,V point 498 zcoef = cai / cao * 0.5499 489 !CDIR COLLAPSE 500 490 DO jj = 2, jpj … … 644 634 END DO 645 635 636 IF(ln_ctl) THEN 637 CALL prt_ctl(tab2d_1=z_qsb(:,:,jpl) , clinfo1=' blk_ice_clio: z_qsb : ', tab2d_2=z_qlw(:,:,jpl), clinfo2=' z_qlw : ') 638 CALL prt_ctl(tab2d_1=p_qla(:,:,jpl) , clinfo1=' blk_ice_clio: z_qla : ', tab2d_2=p_qsr(:,:,jpl), clinfo2=' p_qsr : ') 639 CALL prt_ctl(tab2d_1=p_tpr(:,:,jpl) , clinfo1=' blk_ice_clio: p_tpr : ', tab2d_2=p_spr , clinfo2=' p_spr : ') 640 CALL prt_ctl(tab2d_1=p_taui , clinfo1=' blk_ice_clio: p_taui : ', tab2d_2=p_tauj , clinfo2=' p_tauj : ') 641 CALL prt_ctl(tab2d_1=pst(:,:,jpl) , clinfo2=' blk_ice_clio: pst : ') 642 ENDIF 643 644 646 645 END SUBROUTINE blk_ice_clio 647 646 -
branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r875 r879 31 31 USE lib_mpp ! distribued memory computing library 32 32 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 USE prtctl ! Print control 33 34 34 35 IMPLICIT NONE … … 324 325 !CDIR COLLAPSE 325 326 zqla (:,:) = Lv * zevap(:,:) ! Latent Heat 327 328 IF(ln_ctl) THEN 329 CALL prt_ctl( tab2d_1=zqla , clinfo1=' blk_oce_core: zqla : ', tab2d_2=Ce , clinfo2=' Ce : ' ) 330 CALL prt_ctl( tab2d_1=zqsb , clinfo1=' blk_oce_core: zqsb : ', tab2d_2=Ch , clinfo2=' Ch : ' ) 331 CALL prt_ctl( tab2d_1=zqlw , clinfo1=' blk_oce_core: zqlw : ', tab2d_2=qsr, clinfo2=' qsr : ' ) 332 CALL prt_ctl( tab2d_1=zqsatw , clinfo1=' blk_oce_core: zqsatw : ', tab2d_2=zst, clinfo2=' zst : ' ) 333 CALL prt_ctl( tab2d_1=utau , clinfo1=' blk_oce_core: utau : ', mask1=umask, & 334 & tab2d_2=vtau , clinfo2=' vtau : ', mask2=vmask ) 335 CALL prt_ctl( tab2d_1=zwind_speed_t, clinfo1=' blk_oce_core: zwind_speed_t : ') 336 ENDIF 326 337 327 338 ! ----------------------------------------------------------------------------- ! … … 490 501 p_spr(:,:) = sf(jp_snow)%fnow(:,:) * alpha_precip ! solid precipitation [kg/m2/s] 491 502 ! 503 IF(ln_ctl) THEN 504 CALL prt_ctl(tab2d_1=p_qla , clinfo1=' blk_ice_core: p_qla : ', tab2d_2=z_qsb , clinfo2=' z_qsb : ') 505 CALL prt_ctl(tab2d_1=z_qlw , clinfo1=' blk_ice_core: z_qlw : ', tab2d_2=p_dqla , clinfo2=' p_dqla : ') 506 CALL prt_ctl(tab2d_1=z_dqsb , clinfo1=' blk_ice_core: z_dqsb : ', tab2d_2=z_dqlw , clinfo2=' z_dqlw : ') 507 CALL prt_ctl(tab2d_1=p_tpr , clinfo1=' blk_ice_core: p_tpr : ', tab2d_2=p_spr , clinfo2=' p_spr : ') 508 CALL prt_ctl(tab2d_1=p_dqns , clinfo1=' blk_ice_core: p_dqns : ', tab2d_2=z_wnds_t, clinfo2=' z_wnds_t : ') 509 CALL prt_ctl(tab2d_1=p_taui , clinfo1=' blk_ice_core: p_taui : ', tab2d_2=p_tauj , clinfo2=' p_tauj : ') 510 ENDIF 511 492 512 END SUBROUTINE blk_ice_core 493 513 -
branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcfwb.F90
r702 r879 45 45 CONTAINS 46 46 47 SUBROUTINE sbc_fwb( kt, kn_f sbc, kn_fwb)47 SUBROUTINE sbc_fwb( kt, kn_fwb, kn_fsbc ) 48 48 !!--------------------------------------------------------------------- 49 49 !! *** ROUTINE sbc_fwb *** … … 76 76 IF( kn_fwb == 2 ) WRITE(numout,*) ' adjusted from previous year budget' 77 77 ENDIF 78 78 ! 79 79 e1e2_i(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:) 80 80 area = SUM( e1e2_i(:,:) ) … … 86 86 SELECT CASE ( kn_fwb ) 87 87 ! 88 CASE ( 1 ) ! global mean emp set to zero89 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN90 z_emp = SUM( e1e2_i(:,:) * emp(:,:) ) / area91 IF( lk_mpp ) CALL mpp_sum( z_emp ) ! sum over the global domain92 emp (:,:) = emp (:,:) - z_emp93 emps(:,:) = emps(:,:) - z_emp94 ENDIF95 !96 CASE ( 2 ) ! emp budget adjusted from the previous year88 CASE ( 1 ) ! global mean emp set to zero 89 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 90 z_emp = SUM( e1e2_i(:,:) * emp(:,:) ) / area 91 IF( lk_mpp ) CALL mpp_sum( z_emp ) ! sum over the global domain 92 emp (:,:) = emp (:,:) - z_emp 93 emps(:,:) = emps(:,:) - z_emp 94 ENDIF 95 ! 96 CASE ( 2 ) ! emp budget adjusted from the previous year 97 97 ! initialisation 98 98 IF( kt == nit000 ) THEN … … 114 114 ENDIF 115 115 ENDIF 116 116 ! 117 117 ! Update empold if new year start 118 118 ikty = 365 * 86400 / rdttra(1) !!bug use of 365 days leap year or 360d year !!!!!!! … … 126 126 ! ! estimate from the previous year budget 127 127 ENDIF 128 128 ! 129 129 ! correct the freshwater fluxes 130 130 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN … … 132 132 emps(:,:) = emps(:,:) - empold 133 133 ENDIF 134 134 ! 135 135 ! save empold value in a file 136 136 IF( kt == nitend ) THEN … … 140 140 ! 141 141 CASE DEFAULT ! you should never be there 142 !!gm add a print error 142 WRITE(ctmp1,*)'sbc_fwb : nn_fwb = ', kn_fwb, ' is not permitted for the FreshWater Budget correction, choose either 0/1/2' 143 CALL ctl_stop( ctmp1 ) 143 144 ! 144 145 END SELECT -
branches/dev_001_SBC/NEMO/OPA_SRC/SBC/sbcmod.F90
r813 r879 44 44 45 45 !! * namsbc namelist (public variables) 46 !!gm defined in sbc_oce INTEGER , PUBLIC :: nn_fsbc !: frequency of surface boundary condition computation47 46 LOGICAL , PUBLIC :: ln_ana = .FALSE. !: analytical boundary condition flag 48 47 LOGICAL , PUBLIC :: ln_flx = .FALSE. !: flux formulation -
branches/dev_001_SBC/NEMO/OPA_SRC/step.F90
r811 r879 170 170 indic = 1 ! reset to no error condition 171 171 172 !!gm: attention n'est plus ds le step de gm173 adatrj = adatrj + rdt/86400._wp174 !!gm: attention n'est plus ds le step de gm175 176 172 CALL day( kstp ) ! Calendar 177 173
Note: See TracChangeset
for help on using the changeset viewer.