- Timestamp:
- 2016-06-24T09:50:27+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r3874_FASTNEt/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
r3680 r6736 30 30 USE in_out_manager ! I/O manager 31 31 USE prtctl ! Print control 32 USE oce , ONLY : snwice_mass, snwice_mass_b 33 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 34 #if defined key_agrif 35 USE agrif_lim2_interp ! nesting 36 #endif 32 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 37 33 38 34 IMPLICIT NONE … … 85 81 REAL(wp) :: zs21_11, zs21_12, zs21_21, zs21_22 86 82 REAL(wp) :: zs22_11, zs22_12, zs22_21, zs22_22 87 REAL(wp) :: zintb, zintn88 83 REAL(wp), POINTER, DIMENSION(:,:) :: zfrld, zmass, zcorl 89 84 REAL(wp), POINTER, DIMENSION(:,:) :: za1ct, za2ct, zresr 90 85 REAL(wp), POINTER, DIMENSION(:,:) :: zc1u, zc1v, zc2u, zc2v 91 REAL(wp), POINTER, DIMENSION(:,:) :: zsang , zpice86 REAL(wp), POINTER, DIMENSION(:,:) :: zsang 92 87 REAL(wp), POINTER, DIMENSION(:,:) :: zu0, zv0 93 88 REAL(wp), POINTER, DIMENSION(:,:) :: zu_n, zv_n … … 99 94 100 95 CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 101 CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang , zpice)96 CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 102 97 CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 103 98 CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 ) … … 135 130 !i zviszeta(:,jpj+1) = 0._wp ; zviseta(:,jpj+1) = 0._wp 136 131 137 IF( nn_ice_embd == 2 ) THEN !== embedded sea ice: compute representative ice top surface ==!138 !139 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[n/nn_fsbc], n=0,nn_fsbc-1}140 ! = (1/nn_fsbc)^2 * {SUM[n], n=0,nn_fsbc-1}141 zintn = REAL( nn_fsbc - 1 ) / REAL( nn_fsbc ) * 0.5_wp142 !143 ! average interpolation coeff as used in dynspg = (1/nn_fsbc) * {SUM[1-n/nn_fsbc], n=0,nn_fsbc-1}144 ! = (1/nn_fsbc)^2 * (nn_fsbc^2 - {SUM[n], n=0,nn_fsbc-1})145 zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp146 !147 zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rau0148 !149 !150 ELSE !== non-embedded sea ice: use ocean surface for slope calculation ==!151 zpice(:,:) = ssh_m(:,:)152 ENDIF153 #if defined key_agrif154 ! load the boundary value of velocity in special array zuive and zvice155 CALL agrif_rhg_lim2_load156 #endif157 132 158 133 ! Ice mass, ice strength, and wind stress at the center | … … 222 197 223 198 ! Gradient of the sea surface height 224 zgsshx = ( ( zpice(ji ,jj ) - zpice(ji-1,jj ))/e1u(ji-1,jj ) &225 & + ( zpice(ji ,jj-1) - zpice(ji-1,jj-1))/e1u(ji-1,jj-1) ) * 0.5_wp226 zgsshy = ( ( zpice(ji ,jj ) - zpice(ji ,jj-1))/e2v(ji ,jj-1) &227 & + ( zpice(ji-1,jj ) - zpice(ji-1,jj-1))/e2v(ji-1,jj-1) ) * 0.5_wp199 zgsshx = ( (ssh_m(ji ,jj ) - ssh_m(ji-1,jj ))/e1u(ji-1,jj ) & 200 & + (ssh_m(ji ,jj-1) - ssh_m(ji-1,jj-1))/e1u(ji-1,jj-1) ) * 0.5_wp 201 zgsshy = ( (ssh_m(ji ,jj ) - ssh_m(ji ,jj-1))/e2v(ji ,jj-1) & 202 & + (ssh_m(ji-1,jj ) - ssh_m(ji-1,jj-1))/e2v(ji-1,jj-1) ) * 0.5_wp 228 203 229 204 ! Computation of the velocity field taking into account the ice-ice interaction. … … 559 534 CALL lbc_lnk( zv_n(:,1:jpj), 'I', -1. ) 560 535 561 #if defined key_agrif562 ! copy the boundary value from u_ice_nst and v_ice_nst to u_ice and v_ice563 ! before next interations564 CALL agrif_rhg_lim2(zu_n,zv_n)565 #endif566 567 536 ! Test of Convergence 568 537 DO jj = k_j1+1 , k_jpj-1 … … 607 576 608 577 CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 609 CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang , zpice)578 CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 610 579 CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 611 580 CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
Note: See TracChangeset
for help on using the changeset viewer.