- Timestamp:
- 2012-04-30T12:50:36+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3337_NOCS10_ICB/NEMOGCM/NEMO/OPA_SRC/ICB/icbdyn.F90
r3370 r3372 24 24 PRIVATE 25 25 26 PUBLIC evolve_icebergs! routine called in icbrun.F90 module26 PUBLIC icb_dyn ! routine called in icbrun.F90 module 27 27 28 28 !!---------------------------------------------------------------------- … … 33 33 CONTAINS 34 34 35 SUBROUTINE evolve_icebergs()36 !!---------------------------------------------------------------------- 37 !! *** ROUTINE evolve_icebergs***35 SUBROUTINE icb_dyn() 36 !!---------------------------------------------------------------------- 37 !! *** ROUTINE icb_dyn *** 38 38 !! 39 39 !! ** Purpose : iceberg evolution. … … 84 84 85 85 ! !** A1 = A(X1,V1) 86 CALL accel( berg , zxi1, ze1, zuvel1, zuvel1, zax1, &87 & zyj1, ze2, zvvel1, zvvel1, zay1, zdt_2 )86 CALL icb_accel( berg , zxi1, ze1, zuvel1, zuvel1, zax1, & 87 & zyj1, ze2, zvvel1, zvvel1, zay1, zdt_2 ) 88 88 ! 89 89 zu1 = zuvel1 / ze1 !** V1 in d(i,j)/dt … … 97 97 zyj2 = zyj1 + zdt_2 * zv1 ; zvvel2 = zvvel1 + zdt_2 * zay1 98 98 ! 99 CALL adjust_to_ground( zxi2, zxi1, zu1, &100 & 99 CALL icb_ground( zxi2, zxi1, zu1, & 100 & zyj2, zyj1, zv1, ll_bounced ) 101 101 102 102 ! !** A2 = A(X2,V2) 103 CALL accel( berg , zxi2, ze1, zuvel2, zuvel1, zax2, &104 & zyj2, ze2, zvvel2, zvvel1, zay2, zdt_2 )103 CALL icb_accel( berg , zxi2, ze1, zuvel2, zuvel1, zax2, & 104 & zyj2, ze2, zvvel2, zvvel1, zay2, zdt_2 ) 105 105 ! 106 106 zu2 = zuvel2 / ze1 !** V2 in d(i,j)/dt … … 113 113 zyj3 = zyj1 + zdt_2 * zv2 ; zvvel3 = zvvel1 + zdt_2 * zay2 114 114 ! 115 CALL adjust_to_ground( zxi3, zxi1, zu3, &116 & 115 CALL icb_ground( zxi3, zxi1, zu3, & 116 & zyj3, zyj1, zv3, ll_bounced ) 117 117 118 118 ! !** A3 = A(X3,V3) 119 CALL accel( berg , zxi3, ze1, zuvel3, zuvel1, zax3, &120 & zyj3, ze2, zvvel3, zvvel1, zay3, zdt )119 CALL icb_accel( berg , zxi3, ze1, zuvel3, zuvel1, zax3, & 120 & zyj3, ze2, zvvel3, zvvel1, zay3, zdt ) 121 121 ! 122 122 zu3 = zuvel3 / ze1 !** V3 in d(i,j)/dt … … 129 129 zyj4 = zyj1 + zdt * zv3 ; zvvel4 = zvvel1 + zdt * zay3 130 130 131 CALL adjust_to_ground( zxi4, zxi1, zu4, &132 & 131 CALL icb_ground( zxi4, zxi1, zu4, & 132 & zyj4, zyj1, zv4, ll_bounced ) 133 133 134 134 ! !** A4 = A(X4,V4) 135 CALL accel( berg , zxi4, ze1, zuvel4, zuvel1, zax4, &136 & zyj4, ze2, zvvel4, zvvel1, zay4, zdt )135 CALL icb_accel( berg , zxi4, ze1, zuvel4, zuvel1, zax4, & 136 & zyj4, ze2, zvvel4, zvvel1, zay4, zdt ) 137 137 138 138 zu4 = zuvel4 / ze1 !** V4 in d(i,j)/dt … … 148 148 zvvel_n = pt%vvel + zdt_6 * ( zay1 + 2.*(zay2 + zay3) + zay4 ) 149 149 150 CALL adjust_to_ground( zxi_n, zxi1, zuvel_n, &150 CALL icb_ground( zxi_n, zxi1, zuvel_n, & 151 151 & zyj_n, zyj1, zvvel_n, ll_bounced ) 152 152 … … 157 157 158 158 ! update actual position 159 pt%lon = bilin_x(glamt, pt%xi, pt%yj )160 pt%lat = bilin(gphit, pt%xi, pt%yj, 'T', 0, 0 )159 pt%lon = icb_utl_bilin_x(glamt, pt%xi, pt%yj ) 160 pt%lat = icb_utl_bilin(gphit, pt%xi, pt%yj, 'T', 0, 0 ) 161 161 162 162 berg => berg%next ! switch to the next berg … … 164 164 END DO !== end loop over all bergs ==! 165 165 ! 166 END SUBROUTINE evolve_icebergs167 168 169 SUBROUTINE adjust_to_ground( pi, pi0, pu, &166 END SUBROUTINE icb_dyn 167 168 169 SUBROUTINE icb_ground( pi, pi0, pu, & 170 170 & pj, pj0, pv, ld_bounced ) 171 171 !!---------------------------------------------------------------------- 172 !! *** ROUTINE adjust_to_ground ***172 !! *** ROUTINE icb_ground *** 173 173 !! 174 174 !! ** Purpose : iceberg grounding. … … 230 230 END SELECT 231 231 ! 232 END SUBROUTINE adjust_to_ground233 234 235 SUBROUTINE accel( berg , pxi, pe1, puvel, puvel0, pax, &236 & pyj, pe2, pvvel, pvvel0, pay, pdt )237 !!---------------------------------------------------------------------- 238 !! *** ROUTINE accel ***232 END SUBROUTINE icb_ground 233 234 235 SUBROUTINE icb_accel( berg , pxi, pe1, puvel, puvel0, pax, & 236 & pyj, pe2, pvvel, pvvel0, pay, pdt ) 237 !!---------------------------------------------------------------------- 238 !! *** ROUTINE icb_accel *** 239 239 !! 240 240 !! ** Purpose : compute the iceberg acceleration. … … 268 268 ! Interpolate gridded fields to berg 269 269 nknberg = berg%number(1) 270 CALL i nterp_flds( pxi, pe1, zuo, zui, zua, zssh_x, &271 & pyj, pe2, zvo, zvi, zva, zssh_y, zsst, zcn, zhi, zff )270 CALL icb_utl_interp( pxi, pe1, zuo, zui, zua, zssh_x, & 271 & pyj, pe2, zvo, zvi, zva, zssh_y, zsst, zcn, zhi, zff ) 272 272 273 273 zM = berg%current_point%mass … … 364 364 zuveln = zuveln * ( zspeed_new / zspeed ) ! Scale velocity to reduce speed 365 365 zvveln = zvveln * ( zspeed_new / zspeed ) ! without changing the direction 366 CALL speed_budget()366 CALL icb_dia_speed() 367 367 ENDIF 368 368 ENDIF … … 374 374 WRITE(numicb,'("pe=",i3,x,a)') narea,'Dump triggered by excessive acceleration' 375 375 ! 376 END SUBROUTINE accel376 END SUBROUTINE icb_accel 377 377 378 378 !!======================================================================
Note: See TracChangeset
for help on using the changeset viewer.