- Timestamp:
- 2018-11-21T11:25:53+01:00 (2 years ago)
- Location:
- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icedyn_adv_umx.F90
r10292 r10345 229 229 ! 230 230 DO jl = 1, ipl 231 DO jj = 1, jpjm1231 DO jj = 2, jpjm1 232 232 DO ji = 1, fs_jpim1 ! vector opt. 233 233 zfu_ho(ji,jj,jl) = puc(ji,jj) * zt_u(ji,jj,jl) 234 END DO 235 END DO 236 END DO 237 DO jl = 1, ipl 238 DO jj = 1, jpjm1 239 DO ji = fs_2, fs_jpim1 ! vector opt. 234 240 zfv_ho(ji,jj,jl) = pvc(ji,jj) * zt_v(ji,jj,jl) 235 241 END DO … … 242 248 ! -------------------------------------------------- 243 249 DO jl = 1, ipl 244 DO jj = 1, jpjm1250 DO jj = 2, jpjm1 245 251 DO ji = 1, fs_jpim1 ! vector opt. 246 252 zfu_ho(ji,jj,jl) = zfu_ho(ji,jj,jl) - zfu_ups(ji,jj,jl) 253 END DO 254 END DO 255 END DO 256 DO jl = 1, ipl 257 DO jj = 1, jpjm1 258 DO ji = fs_2, fs_jpim1 ! vector opt. 247 259 zfv_ho(ji,jj,jl) = zfv_ho(ji,jj,jl) - zfv_ups(ji,jj,jl) 248 260 END DO -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icedyn_rhg_evp.F90
r10297 r10345 26 26 USE sbc_ice , ONLY : utau_ice, vtau_ice, snwice_mass, snwice_mass_b 27 27 USE ice ! sea-ice: ice variables 28 USE icevar ! ice_var_sshdyn 28 29 USE icedyn_rdgrft ! sea-ice: ice strength 29 30 USE bdy_oce , ONLY : ln_bdy … … 143 144 REAL(wp), DIMENSION(jpi,jpj) :: zs1, zs2, zs12 ! stress tensor components 144 145 REAL(wp), DIMENSION(jpi,jpj) :: zu_ice, zv_ice, zresr ! check convergence 145 REAL(wp), DIMENSION(jpi,jpj) :: z pice! array used for the calculation of ice surface slope:146 REAL(wp), DIMENSION(jpi,jpj) :: zssh_lead_m ! array used for the calculation of ice surface slope: 146 147 ! ! ocean surface (ssh_m) if ice is not embedded 147 148 ! ! ice top surface if ice is embedded … … 261 262 !------------------------------------------------------------------------------! 262 263 263 IF( ln_ice_embd ) THEN !== embedded sea ice: compute representative ice top surface ==! 264 ! 265 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[n/nn_fsbc], n=0,nn_fsbc-1} 266 ! = (1/nn_fsbc)^2 * {SUM[n] , n=0,nn_fsbc-1} 267 zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp 268 ! 269 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1} 270 ! = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1}) 271 zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 272 ! 273 zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rau0 274 ! 275 ELSE !== non-embedded sea ice: use ocean surface for slope calculation ==! 276 zpice(:,:) = ssh_m(:,:) 277 ENDIF 264 !== embedded sea ice: compute representative ice top surface ==! 265 !== non-embedded sea ice: use ocean surface for slope calculation ==! 266 zssh_lead_m(:,:) = ice_var_sshdyn( ssh_m, snwice_mass, snwice_mass_b) 278 267 279 268 DO jj = 2, jpjm1 … … 313 302 314 303 ! Surface pressure gradient (- m*g*GRAD(ssh)) at U-V points 315 zspgU(ji,jj) = - zmassU * grav * ( z pice(ji+1,jj) - zpice(ji,jj) ) * r1_e1u(ji,jj)316 zspgV(ji,jj) = - zmassV * grav * ( z pice(ji,jj+1) - zpice(ji,jj) ) * r1_e2v(ji,jj)304 zspgU(ji,jj) = - zmassU * grav * ( zssh_lead_m(ji+1,jj) - zssh_lead_m(ji,jj) ) * r1_e1u(ji,jj) 305 zspgV(ji,jj) = - zmassV * grav * ( zssh_lead_m(ji,jj+1) - zssh_lead_m(ji,jj) ) * r1_e2v(ji,jj) 317 306 318 307 ! masks -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icevar.F90
r10069 r10345 49 49 !! ice_var_bv : brine volume 50 50 !! ice_var_enthalpy : compute ice and snow enthalpies from temperature 51 !! ice_var_sshdyn : compute equivalent ssh in lead 51 52 !!---------------------------------------------------------------------- 52 53 USE dom_oce ! ocean space and time domain 53 54 USE phycst ! physical constants (ocean directory) 54 USE sbc_oce , ONLY : sss_m 55 USE sbc_oce , ONLY : sss_m, ln_ice_embd, nn_fsbc 55 56 USE ice ! sea-ice: variables 56 57 USE ice1D ! sea-ice: thermodynamics variables … … 74 75 PUBLIC ice_var_bv 75 76 PUBLIC ice_var_enthalpy 77 PUBLIC ice_var_sshdyn 76 78 77 79 !!---------------------------------------------------------------------- … … 949 951 END SUBROUTINE ice_var_enthalpy 950 952 953 FUNCTION ice_var_sshdyn(pssh, psnwice_mass, psnwice_mass_b) 954 !!--------------------------------------------------------------------- 955 !! *** ROUTINE rhg_evp_rst *** 956 !! 957 !! ** Purpose : compute the equivalent ssh in lead when sea ice is embedded 958 !! 959 !! ** Method : ssh_lead = ssh + (Mice + Msnow) / rau0 960 !! 961 !! ** Reference : Jean-Michel Campin, John Marshall, David Ferreira, 962 !! Sea ice-ocean coupling using a rescaled vertical coordinate z*, 963 !! Ocean Modelling, Volume 24, Issues 1-2, 2008 964 !! 965 !!---------------------------------------------------------------------- 966 ! 967 ! input 968 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pssh !: ssh [m] 969 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: psnwice_mass !: mass of snow and ice at current ice time step [Kg/m2] 970 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: psnwice_mass_b !: mass of snow and ice at previous ice time step [Kg/m2] 971 ! 972 ! output 973 REAL(wp), DIMENSION(jpi,jpj) :: ice_var_sshdyn ! equivalent ssh in lead [m] 974 ! 975 ! temporary 976 REAL(wp) :: zintn, zintb ! time interpolation weights [] 977 REAL(wp), DIMENSION(jpi,jpj) :: zsnwiceload ! snow and ice load [m] 978 ! 979 ! compute ice load used to define the equivalent ssh in lead 980 IF( ln_ice_embd ) THEN 981 ! 982 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[n/nn_fsbc], n=0,nn_fsbc-1} 983 ! = (1/nn_fsbc)^2 * {SUM[n] , n=0,nn_fsbc-1} 984 zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp 985 ! 986 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1} 987 ! = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1}) 988 zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 989 ! 990 zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_rau0 991 ! 992 ELSE 993 zsnwiceload(:,:) = 0.0_wp 994 ENDIF 995 ! compute equivalent ssh in lead 996 ice_var_sshdyn(:,:) = pssh(:,:) + zsnwiceload(:,:) 997 ! 998 END FUNCTION ice_var_sshdyn 999 1000 951 1001 #else 952 1002 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.