Changeset 4724 for branches/2014
- Timestamp:
- 2014-07-18T17:32:27+02:00 (10 years ago)
- Location:
- branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
r4313 r4724 104 104 zbotpres(:,:) = zbotpres(:,:) + fse3t(:,:,jk) * zrhd(:,:,jk) 105 105 END DO 106 IF( .NOT.lk_vvl ) zbotpres(:,:) = zbotpres(:,:) + sshn(:,:) * zrhd(:,:,1) 106 IF( .NOT.lk_vvl ) THEN 107 DO ji=1,jpi 108 DO jj=1,jpj 109 zbotpres(ji,jj) = zbotpres(ji,jj) + sshn(ji,jj) * zrhd(ji,jj,mikt(ji,jj)) + riceload(ji,jj) 110 END DO 111 END DO 112 END IF 107 113 ! 108 114 zarho = SUM( area(:,:) * zbotpres(:,:) ) … … 120 126 zbotpres(:,:) = zbotpres(:,:) + fse3t(:,:,jk) * zrhd(:,:,jk) 121 127 END DO 122 IF( .NOT.lk_vvl ) zbotpres(:,:) = zbotpres(:,:) + sshn(:,:) * zrhd(:,:,1) 128 IF( .NOT.lk_vvl ) THEN 129 DO ji=1,jpi 130 DO jj=1,jpj 131 zbotpres(ji,jj) = zbotpres(ji,jj) + sshn(ji,jj) * zrhd(ji,jj,mikt(ji,jj)) + riceload(ji,jj) 132 END DO 133 END DO 134 END IF 123 135 ! 124 136 zarho = SUM( area(:,:) * zbotpres(:,:) ) … … 145 157 END DO 146 158 IF( .NOT.lk_vvl ) THEN 147 ztemp = ztemp + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_tem) ) 148 zsal = zsal + SUM( zarea_ssh(:,:) * tsn(:,:,1,jp_sal) ) 159 DO ji=1,jpi 160 DO jj=1,jpj 161 ztemp = ztemp + SUM( zarea_ssh(ji,jj) * tsn(ji,jj,mikt(ji,jj),jp_tem) ) 162 zsal = zsal + SUM( zarea_ssh(ji,jj) * tsn(ji,jj,mikt(ji,jj),jp_sal) ) 163 END DO 164 END DO 149 165 ENDIF 150 166 IF( lk_mpp ) THEN -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
r4624 r4724 196 196 DO ji = 1,jpi 197 197 ! Elevation 198 ana_temp(ji,jj,nhc,1) = ana_temp(ji,jj,nhc,1) + ztemp*sshn(ji,jj) *tmask (ji,jj,1)198 ana_temp(ji,jj,nhc,1) = ana_temp(ji,jj,nhc,1) + ztemp*sshn(ji,jj) *tmask_i(ji,jj) 199 199 #if defined key_dynspg_ts 200 ana_temp(ji,jj,nhc,2) = ana_temp(ji,jj,nhc,2) + ztemp*un_b(ji,jj)*hur(ji,jj)*umask (ji,jj,1)201 ana_temp(ji,jj,nhc,3) = ana_temp(ji,jj,nhc,3) + ztemp*vn_b(ji,jj)*hvr(ji,jj)*vmask (ji,jj,1)200 ana_temp(ji,jj,nhc,2) = ana_temp(ji,jj,nhc,2) + ztemp*un_b(ji,jj)*hur(ji,jj)*umask_i(ji,jj) 201 ana_temp(ji,jj,nhc,3) = ana_temp(ji,jj,nhc,3) + ztemp*vn_b(ji,jj)*hvr(ji,jj)*vmask_i(ji,jj) 202 202 #endif 203 203 END DO … … 294 294 X1 = ana_amp(ji,jj,jh,1) 295 295 X2 =-ana_amp(ji,jj,jh,2) 296 out_eta(ji,jj,jh ) = X1 * tmask (ji,jj,1)297 out_eta(ji,jj,jh+nb_ana) = X2 * tmask (ji,jj,1)296 out_eta(ji,jj,jh ) = X1 * tmask_i(ji,jj) 297 out_eta(ji,jj,jh+nb_ana) = X2 * tmask_i(ji,jj) 298 298 ENDDO 299 299 ENDDO … … 328 328 X1=ana_amp(ji,jj,jh,1) 329 329 X2=-ana_amp(ji,jj,jh,2) 330 out_u(ji,jj,jh) = X1 * umask (ji,jj,1)331 out_u (ji,jj,nb_ana+jh) = X2 * umask (ji,jj,1)330 out_u(ji,jj,jh) = X1 * umask_i(ji,jj) 331 out_u (ji,jj,nb_ana+jh) = X2 * umask_i(ji,jj) 332 332 ENDDO 333 333 ENDDO … … 362 362 X1=ana_amp(ji,jj,jh,1) 363 363 X2=-ana_amp(ji,jj,jh,2) 364 out_v(ji,jj,jh)=X1 * vmask (ji,jj,1)365 out_v(ji,jj,nb_ana+jh)=X2 * vmask (ji,jj,1)364 out_v(ji,jj,jh)=X1 * vmask_i(ji,jj) 365 out_v(ji,jj,nb_ana+jh)=X2 * vmask_i(ji,jj) 366 366 ENDDO 367 367 ENDDO -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r4704 r4724 69 69 INTEGER, INTENT(in) :: kt ! ocean time-step index 70 70 !! 71 INTEGER :: jk ! dummy loop indice71 INTEGER :: jk, ji, jj ! dummy loop indice 72 72 REAL(dp) :: zdiff_hc , zdiff_sc ! heat and salt content variations 73 73 REAL(dp) :: zdiff_hc1 , zdiff_sc1 ! - - - - - - - - … … 79 79 REAL(dp) :: z_wn_trd_t , z_wn_trd_s ! - - 80 80 REAL(dp) :: z_ssh_hc , z_ssh_sc ! - - 81 REAL(dp), DIMENSION(:,:), POINTER :: z2d0, z2d1 81 82 !!--------------------------------------------------------------------------- 82 83 IF( nn_timing == 1 ) CALL timing_start('dia_hsb') 83 84 CALL wrk_alloc( jpi,jpj, z2d0, z2d1 ) 85 tsn(:,:,:,1) = tsn(:,:,:,1) * tmask(:,:,:) ; tsb(:,:,:,1) = tsb(:,:,:,1) * tmask(:,:,:) ; 86 tsn(:,:,:,2) = tsn(:,:,:,2) * tmask(:,:,:) ; tsb(:,:,:,2) = tsb(:,:,:,2) * tmask(:,:,:) ; 84 87 ! ------------------------- ! 85 88 ! 1 - Trends due to forcing ! 86 89 ! ------------------------- ! 87 z_frc_trd_v = r1_rau0 * glob_sum( - ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) ) * surf(:,:) ) ! volume fluxes88 z_frc_trd_t = glob_sum( sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes89 z_frc_trd_s = glob_sum( sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes90 z_frc_trd_v = r1_rau0 * glob_sum( - ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) ) * surf(:,:) ) ! volume fluxes 91 z_frc_trd_t = glob_sum( sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 92 z_frc_trd_s = glob_sum( sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes 90 93 ! Add runoff heat & salt input 91 94 IF( ln_rnf ) z_frc_trd_t = z_frc_trd_t + glob_sum( rnf_tsc(:,:,jp_tem) * surf(:,:) ) 92 95 IF( ln_rnf_sal) z_frc_trd_s = z_frc_trd_s + glob_sum( rnf_tsc(:,:,jp_sal) * surf(:,:) ) 96 ! Add geothermal ice shelf 97 IF( nn_isf .GE. 1 ) THEN 98 z_frc_trd_t = z_frc_trd_t + glob_sum( ( risf_tsc(:,:,jp_tem) - rdivisf * fwfisf(:,:) * -1.9 * r1_rau0 ) * surf(:,:) ) 99 z_frc_trd_s = z_frc_trd_s + (1.0_wp - rdivisf) * glob_sum( risf_tsc(:,:,jp_sal) * surf(:,:) ) 100 ENDIF 93 101 94 102 ! Add penetrative solar radiation … … 98 106 ! 99 107 IF( .NOT. lk_vvl ) THEN 100 z_wn_trd_t = - glob_sum( surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_tem) ) 101 z_wn_trd_s = - glob_sum( surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_sal) ) 108 z2d0=0.0_wp ; z2d1=0.0_wp 109 DO ji=1,jpi 110 DO jj=1,jpj 111 z2d0(ji,jj) = surf(ji,jj) * wn(ji,jj,mikt(ji,jj)) * tsb(ji,jj,mikt(ji,jj),jp_tem) 112 z2d1(ji,jj) = surf(ji,jj) * wn(ji,jj,mikt(ji,jj)) * tsb(ji,jj,mikt(ji,jj),jp_sal) 113 ENDDO 114 ENDDO 115 z_wn_trd_t = - glob_sum( z2d0 ) 116 z_wn_trd_s = - glob_sum( z2d1 ) 102 117 ENDIF 103 118 … … 123 138 ! heat & salt content variation (associated with ssh) 124 139 IF( .NOT. lk_vvl ) THEN 125 z_ssh_hc = glob_sum( surf(:,:) * ( tsn(:,:,1,jp_tem) * sshn(:,:) - ssh_hc_loc_ini(:,:) ) ) 126 z_ssh_sc = glob_sum( surf(:,:) * ( tsn(:,:,1,jp_sal) * sshn(:,:) - ssh_sc_loc_ini(:,:) ) ) 140 z2d0=0.0_wp ; z2d1=0.0_wp 141 DO ji=1,jpi 142 DO jj=1,jpj 143 z2d0(ji,jj) = surf(ji,jj) * ( tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj) - ssh_hc_loc_ini(ji,jj) ) 144 z2d1(ji,jj) = surf(ji,jj) * ( tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj) - ssh_sc_loc_ini(ji,jj) ) 145 ENDDO 146 ENDDO 147 z_ssh_hc = glob_sum( z2d0 ) 148 z_ssh_sc = glob_sum( z2d1 ) 127 149 ENDIF 128 150 … … 282 304 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag 283 305 ! 284 INTEGER :: jk !306 INTEGER :: jk,ji,jj ! 285 307 INTEGER :: id1 ! local integers 286 308 !!---------------------------------------------------------------------- … … 322 344 frc_s = 0.d0 ! salt content - - - - 323 345 IF( .NOT. lk_vvl ) THEN 324 ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:) ! initial heat content in ssh 325 ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:) ! initial salt content in ssh 346 DO ji=1,jpi 347 DO jj=1,jpj 348 ssh_hc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * sshn(ji,jj) ! initial heat content in ssh 349 ssh_sc_loc_ini(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * sshn(ji,jj) ! initial salt content in ssh 350 ENDDO 351 ENDDO 326 352 frc_wn_t = 0.d0 ! initial heat content misfit due to free surface 327 353 frc_wn_s = 0.d0 ! initial salt content misfit due to free surface -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r4701 r4724 312 312 ! ! --------------------------------------------- ! 313 313 314 z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * tmask_i(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - tmask_i(:,:) )314 z_scale(:,:) = ( ssha(:,:) - sshb(:,:) ) * lmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - lmask(:,:) ) 315 315 DO jk = 1, jpkm1 316 316 ! formally this is the same as fse3t_a = e3t_0*(1+ssha/ht_0) … … 472 472 zht(:,:) = zht(:,:) + tilde_e3t_a(:,:,jk) * tmask(:,:,jk) 473 473 END DO 474 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - tmask(:,:,1))474 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - lmask ) 475 475 DO jk = 1, jpkm1 476 476 dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + fse3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk) … … 998 998 999 999 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 1000 IF( .NOT. ln_vvl_zstar .AND. nn_isf .NE. 0) CALL ctl_stop( 'vvl_ztilde, vvl_layer, vvl_ztilde_as_zstar, vvl_zstar_at_eqtor not tested with ice shelf cavity (only vvl_zstar was tested)' ) 1000 1001 1001 1002 IF(lwp) THEN ! Print the choice -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r4666 r4724 299 299 ENDIF 300 300 301 ! need to be like this to compute the pressure gradient with ISF 301 ! need to be like this to compute the pressure gradient with ISF. If not, level beneath the ISF are not aligned (sum(e3t) /= depth) 302 302 ! define e3t_0 and e3w_0 as the differences between gdept and gdepw respectively 303 303 DO jk = 1, jpkm1 … … 1023 1023 END WHERE 1024 1024 1025 1025 ! basic check for the compatibility of bathy and icedep. I think it should be offline because it is not perfect and cannot solved all the situation 1026 1026 icompt = 0 1027 ! run the bathy check 10 times to be sure all the modif in the bathy or iceshelf draft are compatible together 1027 1028 DO jl = 1, 10 1028 1029 IF( lk_mpp ) THEN … … 1058 1059 bathy(:,:) = 0._wp 1059 1060 END WHERE 1060 1061 ! Case where bathy and icedep compatible but not the level variable mbathy/micedep because of partial cell condition 1061 1062 DO jj = 1, jpj 1062 1063 DO ji = 1, jpi … … 1075 1076 DO jj = 2, jpjm1 1076 1077 DO ji = 2, jpim1 1078 ! T point 1077 1079 IF( zmicedep(ji,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1078 1080 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1079 1081 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1080 1082 ENDIF 1083 ! V point 1081 1084 IF( zmicedep(ji,jj+1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1082 1085 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1083 1086 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1084 1087 ENDIF 1088 ! V point -1 1085 1089 IF( zmicedep(ji,jj-1) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1086 1090 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1087 1091 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1088 1092 ENDIF 1093 ! U point 1089 1094 IF( zmicedep(ji+1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1090 1095 mbathy(ji,jj) = zmbathy(ji,jj) + 1 1091 1096 bathy(ji,jj)=gdepw_1d(mbathy(ji,jj)) + MIN( e3zps_min, e3t_1d(mbathy(ji,jj))*e3zps_rat ) 1092 1097 ENDIF 1098 ! U point -1 1093 1099 IF( zmicedep(ji-1,jj) == zmbathy(ji,jj) .AND. zmbathy(ji,jj) .GT. 1) THEN 1094 1100 mbathy(ji,jj) = zmbathy(ji,jj) + 1 … … 1217 1223 mbathy(:,:) = INT( zbathy(:,:) ) 1218 1224 ENDIF 1219 ! remove pool of water stuck between ice shelf and bathymetry1225 ! remove 1 cell pool of water stuck between ice shelf and bathymetry (need a 3D flood filling tools to do this properly) 1220 1226 DO jk = 1, jpk 1221 1227 WHERE (micedep==0) micedep=jpk … … 1344 1350 e3w_0 (ji,jj,ik+1) = gdept_1d(ik+1) - gdept_0(ji,jj,ik) 1345 1351 1346 IF( ik + 1 == mbathy(ji,jj) ) THEN ! ice shelf point only 1352 IF( ik + 1 == mbathy(ji,jj) ) THEN ! ice shelf point only (2 cell water column) 1347 1353 e3w_0 (ji,jj,ik+1) = gdept_0(ji,jj,ik+1) - gdept_0(ji,jj,ik) 1348 1354 ENDIF … … 1398 1404 DO jj = 1, jpjm1 1399 1405 DO ji = 1, fs_jpim1 ! vector opt. 1400 ! (ISF)** NEEDS CHANGING TO SECOND OPTION FOR ICE SHELF BUT WILL CHANGE RESULTS WITHOUT ICE (DIFFER AT THE 1e-13 LEVEL)1401 1406 e3uw_0(ji,jj,jk) = MIN( gdept_0(ji,jj,jk), gdept_0(ji+1,jj ,jk) ) - MAX( gdept_0(ji,jj,jk-1), gdept_0(ji+1,jj ,jk-1) ) 1402 1407 e3vw_0(ji,jj,jk) = MIN( gdept_0(ji,jj,jk), gdept_0(ji ,jj+1,jk) ) - MAX( gdept_0(ji,jj,jk-1), gdept_0(ji ,jj+1,jk-1) ) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r4666 r4724 29 29 !!---------------------------------------------------------------------- 30 30 USE oce ! ocean dynamics and tracers 31 USE sbc_oce ! surface variable (only for the flag with ice shelf) 31 32 USE dom_oce ! ocean space and time domain 32 33 USE phycst ! physical constants … … 176 177 IF( ln_hpg_prj ) ioptio = ioptio + 1 177 178 IF( ioptio /= 1 ) CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 179 IF( (ln_hpg_zco .OR. ln_hpg_zps .OR. ln_hpg_djc .OR. ln_hpg_prj ) .AND. nn_isf .NE. 0 ) CALL ctl_stop( 'Only hpg_sco has been corrected to work with ice shelf cavity. Comparison in a GYRE simulation with bump in the middle show similar result than hpg_zps' ) 178 180 ! 179 181 END SUBROUTINE dyn_hpg_init … … 395 397 ! iniitialised to 0. zhpi zhpi 396 398 zhpi(:,:,:)=0._wp ; zhpj(:,:,:)=0._wp 397 399 400 ! assume density of water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 398 401 ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp 399 zrhd = rhd 402 zrhd = rhd ! save rhd 400 403 DO jk = 1, jpk 401 404 zdept(:,:)=gdept_1d(jk) … … 403 406 END DO 404 407 WHERE ( tmask(:,:,:) == 1._wp) 405 rhd(:,:,:) = zrhd(:,:,:) 408 rhd(:,:,:) = zrhd(:,:,:) ! replace wet cell by the saved rhd 406 409 END WHERE 407 410 408 411 ! compute rhd at the ice/oce interface (ice shelf side) 409 412 CALL eos(ztstop,icedep,zrhdtop_isf) 410 413 414 ! compute rhd at the ice/oce interface (ocean side) 411 415 DO ji=1,jpi 412 416 DO jj=1,jpj … … 419 423 ! 420 424 ! Surface value + ice shelf gradient 421 ! compute pressure (used to compute hpgi/j for all the level from 1 to miku/v)425 ! compute pressure due to ice shelf load (used to compute hpgi/j for all the level from 1 to miku/v) 422 426 ziceload = 0._wp 423 427 DO jj = 1, jpj … … 433 437 END DO 434 438 END DO 435 ! compute zp from first level to first wet cell (blue and purple area) 439 riceload(:,:) = 0.0_wp ; riceload(:,:)=ziceload(:,:) ! need to be saved for diaar5 440 ! compute zp from z=0 to first T wet point (correction due to zps not yet applied) 436 441 DO jj = 2, jpjm1 437 442 DO ji = fs_2, fs_jpim1 ! vector opt. 438 443 ikt=mikt(ji,jj) ; iktp1i=mikt(ji+1,jj); iktp1j=mikt(ji,jj+1) 439 444 ! hydrostatic pressure gradient along s-surfaces and ice shelf pressure 440 ! we assume ISF is in isostatic equilibrium with a density equal to the reference density445 ! we assume ISF is in isostatic equilibrium 441 446 zhpi(ji,jj,1) = zcoef0 / e1u(ji,jj) * ( 0.5_wp * fse3w(ji+1,jj ,iktp1i) & 442 447 & * ( 2._wp * znad + rhd(ji+1,jj ,iktp1i) + zrhdtop_oce(ji+1,jj ) ) & … … 449 454 & * ( 2._wp * znad + rhd(ji ,jj ,ikt ) + zrhdtop_oce(ji ,jj ) ) & 450 455 & + ( ziceload(ji,jj+1) - ziceload(ji,jj) ) ) 451 ! s-coordinate pressure gradient correction 456 ! s-coordinate pressure gradient correction (=0 if z coordinate) 452 457 zuap = -zcoef0 * ( rhd (ji+1,jj,1) + rhd (ji,jj,1) + 2._wp * znad ) & 453 458 & * ( fsde3w(ji+1,jj,1) - fsde3w(ji,jj,1) ) / e1u(ji,jj) … … 471 476 & * ( rhd (ji+1,jj,iku) + rhd (ji,jj,iku) & 472 477 & + SIGN(1._wp,ze3wu) * grui(ji,jj) + 2._wp * znad ) 473 474 IF (mbku(ji,jj) == iku + 1) zpshpi(ji,jj) = zhpi(ji,jj,iku) 478 ! corrective term ( = 0 if z coordinate ) 475 479 zuap = -zcoef0 * ( arui(ji,jj) + 2._wp * znad ) * gzui(ji,jj) / e1u(ji,jj) 476 480 ! zhpi will be added in interior loop and zuapint will be removed in the interior loop 477 481 ua(ji,jj,iku) = ua(ji,jj,iku) + zuap 482 ! in case of 2 cell water column, need to save the pressure gradient to compute the bottom pressure 483 IF (mbku(ji,jj) == iku + 1) zpshpi(ji,jj) = zhpi(ji,jj,iku) 478 484 479 485 ! zhpi will be added in interior loop and zuapint will be removed in the interior loop … … 488 494 ! v direction 489 495 ikv = mikv(ji,jj) 490 !ze3wv = 0.5 * (e3w_0(ikv+1) / e3t_0(ikv)) * ( fse3t(ji,jj+1,ikv)-fse3t(ji,jj,ikv) )491 496 ze3wv = fse3w(ji,jj+1,ikv+1)-fse3w(ji,jj,ikv+1) 492 497 IF ( ikv .GT. 1 ) THEN 493 498 ! case ikv 494 ! ze3wv = - (fsde3w(ji,jj+1,ikv) - fsde3w(ji,jj,ikv) )495 499 zhpj(ji,jj,ikv) = zcoef0 / e2v(ji,jj) * ze3wv & 496 500 & * ( rhd(ji,jj+1,ikv) + rhd (ji,jj,ikv) & 497 501 & + SIGN(1._wp,ze3wv) * grvi(ji,jj) + 2._wp * znad ) 498 502 ! corrective term ( = 0 if z coordinate ) 499 503 zvap = -zcoef0 * ( arvi(ji,jj) + 2._wp * znad ) * gzvi(ji,jj) / e2v(ji,jj) 500 504 ! zhpi will be added in interior loop and zvapint will be removed in the interior loop 501 505 va(ji,jj,ikv) = va(ji,jj,ikv) + zvap 506 ! in case of 2 cell water column, need to save the pressure gradient to compute the bottom pressure 502 507 IF (mbkv(ji,jj) == ikv + 1) zpshpj(ji,jj) = zhpj(ji,jj,ikv) 503 508 ! zhpi will be added in interior loop and zvapint will be removed in the interior loop … … 526 531 & - fse3w(ji ,jj ,jk) * ( (rhd(ji ,jj,jk ) + znad) & 527 532 & + (rhd(ji ,jj,jk-1) + znad) ) * tmask(ji ,jj,jk-1) ) 528 ! corrective term533 !corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 529 534 zuap = - zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 530 535 & * ( fsde3w(ji+1,jj ,jk) - fsde3w(ji,jj,jk) ) / e1u(ji,jj) * umask(ji,jj,jk-1) … … 537 542 & - fse3w(ji ,jj ,jk) * ( (rhd(ji,jj ,jk ) + znad) & 538 543 & + (rhd(ji,jj ,jk-1) + znad) ) * tmask(ji,jj ,jk-1) ) 539 !544 !corrective term, we mask this term for the first wet level beneath the ice shelf (contribution done in the upper bloc) 540 545 zvap = - zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 541 546 & * ( fsde3w(ji ,jj+1,jk) - fsde3w(ji,jj,jk) ) / e2v(ji,jj) * vmask(ji,jj,jk-1) … … 563 568 ua(ji,jj,iku) = ua(ji,jj,iku) - zhpi(ji,jj,iku) - zuap 564 569 ! put new value 570 ! -zpshpi to avoid double contribution of the partial step in the top layer 565 571 zuap = -zcoef0 * ( aru(ji,jj) + 2._wp * znad ) * gzu(ji,jj) / e1u(ji,jj) 566 572 zhpi(ji,jj,iku) = zhpi(ji,jj,iku-1) + zcoef0 / e1u(ji,jj) * ge3ru(ji,jj) - zpshpi(ji,jj) … … 574 580 va(ji,jj,ikv) = va(ji,jj,ikv) - zhpj(ji,jj,ikv) - zvap 575 581 ! put new value 582 ! -zpshpj to avoid double contribution of the partial step in the top layer 576 583 zvap = -zcoef0 * ( arv(ji,jj) + 2._wp * znad ) * gzv(ji,jj) / e2v(ji,jj) 577 584 zhpj(ji,jj,ikv) = zhpj(ji,jj,ikv-1) + zcoef0 / e2v(ji,jj) * ge3rv(ji,jj) - zpshpj(ji,jj) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r4496 r4724 246 246 IF( ( ioptio > 1 .AND. .NOT. lk_esopa ) .OR. ( ioptio == 0 .AND. .NOT. lk_c1d ) ) & 247 247 & CALL ctl_stop( ' Choose only one surface pressure gradient scheme with a key cpp' ) 248 IF( ( lk_dynspg_ts .OR. lk_dynspg_exp ) .AND. nn_isf .NE. 0 ) & 249 & CALL ctl_stop( ' dynspg_ts and dynspg_exp not tested with ice shelf cavity ' ) 248 250 ! 249 251 IF( lk_esopa ) nspg = -1 -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r4486 r4724 111 111 ! 112 112 z1_rau0 = 0.5_wp * r1_rau0 113 ssha(:,:) = ( sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * tmask(:,:,1)113 ssha(:,:) = ( sshb(:,:) - z2dt * ( z1_rau0 * ( emp_b(:,:) + emp(:,:) ) + zhdiv(:,:) ) ) * lmask(:,:) 114 114 115 115 #if ! defined key_dynspg_ts … … 291 291 ELSE !** Leap-Frog time-stepping: Asselin filter + swap 292 292 sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) ) ! before <-- now filtered 293 IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1)293 IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:) - emp(:,:) ) * lmask(:,:) 294 294 sshn(:,:) = ssha(:,:) ! now <-- after 295 295 ENDIF -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r3821 r4724 70 70 ! and ssh which is used to calculate gradients 71 71 72 uo_e(:,:) = 0._wp ; uo_e(1:jpi, 1:jpj) = ssu_m(:,:) 73 vo_e(:,:) = 0._wp ; vo_e(1:jpi, 1:jpj) = ssv_m(:,:) 72 uo_e(:,:) = 0._wp ; uo_e(1:jpi, 1:jpj) = ssu_m(:,:) * umask(:,:,1) 73 vo_e(:,:) = 0._wp ; vo_e(1:jpi, 1:jpj) = ssv_m(:,:) * vmask(:,:,1) 74 74 ff_e(:,:) = 0._wp ; ff_e(1:jpi, 1:jpj) = ff (:,:) 75 ua_e(:,:) = 0._wp ; ua_e(1:jpi, 1:jpj) = utau (:,:) 76 va_e(:,:) = 0._wp ; va_e(1:jpi, 1:jpj) = vtau (:,:) 75 ua_e(:,:) = 0._wp ; ua_e(1:jpi, 1:jpj) = utau (:,:) * umask(:,:,1) ! maybe mask useless because mask applied in sbcblk 76 va_e(:,:) = 0._wp ; va_e(1:jpi, 1:jpj) = vtau (:,:) * vmask(:,:,1) ! maybe mask useless because mask applied in sbcblk 77 77 78 78 CALL lbc_lnk_e( uo_e, 'U', -1._wp, 1, 1 ) … … 93 93 !! so fudge some numbers all the way around the boundary 94 94 95 ssh_e(:,:) = 0._wp ; ssh_e(1:jpi, 1:jpj) = ssh_m(:,:) 95 ssh_e(:,:) = 0._wp ; ssh_e(1:jpi, 1:jpj) = ssh_m(:,:) * tmask(:,:,1) 96 96 ssh_e(0 , :) = ssh_e(1 , :) 97 97 ssh_e(jpi+1, :) = ssh_e(jpi, :) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r4624 r4724 257 257 END DO 258 258 END DO 259 utau(:,:) = utau(:,:) * umask(:,:,1) 260 vtau(:,:) = vtau(:,:) * vmask(:,:,1) 261 taum(:,:) = taum(:,:) * tmask(:,:,1) 259 262 CALL lbc_lnk( taum, 'T', 1. ) 260 263 … … 264 267 !CDIR COLLAPSE 265 268 wndm(:,:) = sf(jp_wndm)%fnow(:,:,1) 269 wndm(:,:) = wndm(:,:) * tmask(:,:,1) 266 270 267 271 !------------------------------------------------! … … 270 274 271 275 CALL blk_clio_qsr_oce( qsr ) 272 276 qsr(:,:) = qsr(:,:) * tmask(:,:,1) ! no shortwave radiation into the ocean beneath ice shelf 273 277 !------------------------! 274 278 ! Other ocean fluxes ! … … 376 380 & - zqla(:,:) * pst(:,:) * zcevap & ! remove evap. heat content at SST in Celcius 377 381 & + sf(jp_prec)%fnow(:,:,1) * sf(jp_tair)%fnow(:,:,1) * zcprec ! add precip. heat content at Tair in Celcius 382 qns(:,:) = qns(:,:) * tmask(:,:,1) 378 383 ! NB: if sea-ice model, the snow precip are computed and the associated heat is added to qns (see blk_ice_clio) 379 384 -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90
r4624 r4724 233 233 ! Interpolate utau, vtau into the grid_V and grid_V 234 234 !------------------------------------------------- 235 235 ! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 236 ! Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 236 237 DO jj = 1, jpjm1 237 238 DO ji = 1, fs_jpim1 238 239 utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( utau(ji,jj) * tmask(ji,jj,1) & 239 & + utau(ji+1,jj) * tmask(ji+1,jj,1) ) 240 & + utau(ji+1,jj) * tmask(ji+1,jj,1) ) & 241 & * MAX(tmask(ji,jj,1),tmask(ji+1,jj ,1)) 240 242 vtau(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( vtau(ji,jj) * tmask(ji,jj,1) & 241 & + vtau(ji,jj+1) * tmask(ji,jj+1,1) ) 243 & + vtau(ji,jj+1) * tmask(ji,jj+1,1) ) & 244 & * MAX(tmask(ji,jj,1),tmask(ji ,jj+1,1)) 242 245 END DO 243 246 END DO -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r4624 r4724 156 156 END DO 157 157 END DO 158 taum(:,:) = taum(:,:) * tmask(:,:,1) ; wndm(:,:) = wndm(:,:) * tmask(:,:,1) 158 159 CALL lbc_lnk( taum(:,:), 'T', 1. ) ; CALL lbc_lnk( wndm(:,:), 'T', 1. ) 159 160 -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r4333 r4724 179 179 ! !----------------! 180 180 ! 181 u_oce(:,:) = ssu_m(:,:) ! mean surface ocean current at ice velocity point182 v_oce(:,:) = ssv_m(:,:) ! (C-grid dynamics : U- & V-points as the ocean)181 u_oce(:,:) = ssu_m(:,:) * umask(:,:,1) ! mean surface ocean current at ice velocity point 182 v_oce(:,:) = ssv_m(:,:) * vmask(:,:,1) ! (C-grid dynamics : U- & V-points as the ocean) 183 183 ! 184 184 t_bo(:,:) = tfreez( sss_m ) + rt0 ! masked sea surface freezing temperature [Kelvin] -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r4621 r4724 126 126 DO jj = 2, jpj 127 127 DO ji = 2, jpi ! NO vector opt. possible 128 u_oce(ji,jj) = 0.5_wp * ( ssu_m(ji-1,jj ) + ssu_m(ji-1,jj-1) ) * tmu(ji,jj)129 v_oce(ji,jj) = 0.5_wp * ( ssv_m(ji ,jj-1) + ssv_m(ji-1,jj-1) ) * tmu(ji,jj)128 u_oce(ji,jj) = 0.5_wp * ( ssu_m(ji-1,jj ) * umask(ji-1,jj ,1) + ssu_m(ji-1,jj-1) * umask(ji-1,jj-1,1) ) * tmu(ji,jj) 129 v_oce(ji,jj) = 0.5_wp * ( ssv_m(ji ,jj-1) * vmask(ji ,jj-1,1) + ssv_m(ji-1,jj-1) * vmask(ji-1,jj-1,1) ) * tmu(ji,jj) 130 130 END DO 131 131 END DO … … 134 134 ! 135 135 CASE( 'C' ) !== C-grid ice dynamics : U & V-points (same as ocean) 136 u_oce(:,:) = ssu_m(:,:) ! mean surface ocean current at ice velocity point137 v_oce(:,:) = ssv_m(:,:) 136 u_oce(:,:) = ssu_m(:,:) * umask(:,:,1) ! mean surface ocean current at ice velocity point 137 v_oce(:,:) = ssv_m(:,:) * vmask(:,:,1) 138 138 ! 139 139 END SELECT -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r4624 r4724 32 32 USE wrk_nemo ! Memory Allocation 33 33 USE timing ! Timing 34 USE sbc_oce 34 35 35 36 … … 201 202 IF( lk_esopa ) ioptio = 1 202 203 204 IF( ( ln_traadv_muscl .OR. ln_traadv_muscl2 .OR. ln_traadv_ubs .OR. ln_traadv_qck ) .AND. nn_isf .NE. 0 ) & 205 & CALL ctl_stop( 'Only traadv_cen2 and traadv_tvd is compatible with ice shelf cavity') 206 203 207 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE advection scheme in namelist namtra_adv' ) 204 208 -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r4666 r4724 233 233 zt_frz = -1.9 !tfreez1D( tsn(ji,jj,jk,jp_sal), zpress ) 234 234 ! compute trend 235 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) &236 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) &235 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 236 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) & 237 237 & - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) & 238 238 & * r1_hisf_tbl(ji,jj) 239 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) &239 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 240 240 & + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) 241 241 END DO … … 243 243 ! level partially include in ice shelf boundary layer 244 244 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1 245 zalpha = rhisf_tbl(ji,jj) * ( 1 - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer245 zalpha = rhisf_tbl(ji,jj) * ( 1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer 246 246 ! compute tfreez for the temperature correction (we add water at freezing temperature) 247 247 zpress = grav*rau0*fsdept(ji,jj,ikb)*1.e-04 248 248 zt_frz = -1.9 !tfreez1D( tsn(ji,jj,ikb,jp_sal), zpress ) 249 249 ! compute trend 250 tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) &251 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) &250 tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) & 251 & + zfact * (risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) & 252 252 & - rdivisf * (fwfisf(ji,jj) + fwfisf_b(ji,jj)) * zt_frz * r1_rau0) & 253 253 & * r1_hisf_tbl(ji,jj) * zalpha 254 tsa(ji,jj,ikb,jp_sal) = tsa(ji,jj,ikb,jp_sal) &254 tsa(ji,jj,ikb,jp_sal) = tsa(ji,jj,ikb,jp_sal) & 255 255 & + zfact * (risf_tsc_b(ji,jj,jp_sal) + risf_tsc(ji,jj,jp_sal)) * r1_hisf_tbl(ji,jj) * zalpha 256 256 END DO … … 261 261 & 'at it= ', kt,' date= ', ndastp 262 262 IF(lwp) WRITE(numout,*) '~~~~' 263 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:) )264 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem) )265 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal) )263 CALL iom_rstput( kt, nitrst, numrow, 'fwf_isf_b', fwfisf(:,:) ) 264 CALL iom_rstput( kt, nitrst, numrow, 'isf_hc_b' , risf_tsc(:,:,jp_tem) ) 265 CALL iom_rstput( kt, nitrst, numrow, 'isf_sc_b' , risf_tsc(:,:,jp_sal) ) 266 266 ENDIF 267 267 END IF -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
r4666 r4724 81 81 !! di(rho) = rd~ - rd(i,j,k) or rd(i+1,j,k) - rd~ 82 82 !! 83 !! ** Action : - pgtu, pgtv: horizontal gradient of tracer at u- & v-points 84 !! - pgru, pgrv: horizontal gradient of rho (if present) at u- & v-points 83 !! ** Action : compute for top and bottom interfaces 84 !! - pgtu, pgtv, sgtu, sgtv: horizontal gradient of tracer at u- & v-points 85 !! - pgru, pgrv, sgru, sgtv: horizontal gradient of rho (if present) at u- & v-points 86 !! - pmru, pmrv, smru, smrv: horizontal sum of rho at u- & v- point (used in dynhpg with vvl) 87 !! - pgzu, pgzv, sgzu, sgzv: horizontal gradient of z at u- and v- point (used in dynhpg with vvl) 88 !! - pge3ru, pge3rv, sge3ru, sge3rv: horizontal gradient of rho weighted by local e3w at u- & v-points 85 89 !!---------------------------------------------------------------------- 86 90 ! -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r4704 r4724 188 188 ! 189 189 CALL lbc_lnk( bfrua, 'U', 1. ) ; CALL lbc_lnk( bfrva, 'V', 1. ) ! Lateral boundary condition 190 CALL lbc_lnk( tfrua, 'U', 1. ) ; CALL lbc_lnk( tfrva, 'V', 1. ) ! Lateral boundary condition 190 191 ! 191 192 IF(ln_ctl) CALL prt_ctl( tab2d_1=bfrua, clinfo1=' bfr - u: ', mask1=umask, & -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfini.F90
r4624 r4724 14 14 !!---------------------------------------------------------------------- 15 15 USE par_oce ! mesh and scale factors 16 USE sbc_oce ! surface module (only for nn_isf in the option compatibility test) 16 17 USE ldftra_oce ! ocean active tracers: lateral physics 17 18 USE ldfdyn_oce ! ocean dynamics lateral physics … … 117 118 IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa ) & 118 119 & CALL ctl_stop( ' one and only one vertical diffusion option has to be defined ' ) 120 IF( ( lk_zdfric .OR. lk_zdfgls .OR. lk_zdfkpp ) .AND. nn_isf .NE. 0 ) & 121 & CALL ctl_stop( ' only zdfcst and zdftke were tested with ice shelves cavities ' ) 119 122 ! 120 123 ! ! ... Convection -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/oce.F90
r4666 r4724 57 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: gzui, gzvi !: horizontal gradient of z at top v-point 58 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ge3rui, ge3rvi !: horizontal gradient of T, S and rd at top v-point 59 !! (ISF) ice load 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: riceload 59 61 60 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rke !: kinetic energy … … 109 111 & gzui(jpi,jpj) , gzvi(jpi,jpj) , & 110 112 & ge3rui(jpi,jpj) , ge3rvi(jpi,jpj) , & 111 & grui(jpi,jpj) , grvi(jpi,jpj) , STAT=ierr(2) ) 113 & grui(jpi,jpj) , grvi(jpi,jpj) , & 114 & riceload(jpi,jpj), STAT=ierr(2) ) 112 115 ! 113 116 ALLOCATE( snwice_mass(jpi,jpj) , snwice_mass_b(jpi,jpj), snwice_fmass(jpi,jpj) , STAT=ierr(3) ) -
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/step.F90
r4666 r4724 252 252 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 253 253 ELSE ! centered hpg (eos then time stepping) 254 IF ( .NOT. lk_dynspg_ts ) THEN ! eos already called in time-split case255 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation256 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient257 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & !258 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level259 ENDIF260 254 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 261 255 CALL tra_nxt( kstp ) ! tracer fields at next time step 256 IF ( .NOT. lk_dynspg_ts ) THEN ! eos already called in time-split case 257 CALL eos ( tsb, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 258 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient 259 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & ! 260 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 261 ENDIF 262 262 ENDIF 263 263
Note: See TracChangeset
for help on using the changeset viewer.