- Timestamp:
- 2017-09-01T15:49:35+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerdgrft.F90
r8426 r8486 12 12 !! 'key_lim3' LIM-3 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 USE par_oce 15 USE dom_oce 16 USE phycst 17 USE sbc_oce , ONLY: sss_m, sst_m! surface boundary condition: ocean fields18 USE ice1D ! LIMthermodynamics19 USE ice ! LIMvariables20 USE icevar ! LIM21 USE icectl !control prints14 USE par_oce ! ocean parameters 15 USE dom_oce ! ocean domain 16 USE phycst ! physical constants (ocean directory) 17 USE sbc_oce , ONLY : sss_m, sst_m ! surface boundary condition: ocean fields 18 USE ice1D ! sea-ice: thermodynamics 19 USE ice ! sea-ice: variables 20 USE icevar ! sea-ice: operations 21 USE icectl ! sea-ice: control prints 22 22 ! 23 USE lbclnk 24 USE lib_mpp 25 USE in_out_manager 26 USE iom 27 USE lib_fortran 28 USE timing 23 USE lbclnk ! lateral boundary condition - MPP exchanges 24 USE lib_mpp ! MPP library 25 USE in_out_manager ! I/O manager 26 USE iom ! I/O manager 27 USE lib_fortran ! glob_sum 28 USE timing ! Timing 29 29 30 30 IMPLICIT NONE … … 32 32 33 33 PUBLIC ice_rdgrft ! called by ice_stp 34 PUBLIC ice_rdgrft_icestrength 35 PUBLIC ice_rdgrft_init 36 PUBLIC ice_rdgrft_alloc ! called by ice_init34 PUBLIC ice_rdgrft_icestrength ! called by icerhg_evp 35 PUBLIC ice_rdgrft_init ! called by ice_stp 36 PUBLIC ice_rdgrft_alloc ! called by ice_init 37 37 38 38 !----------------------------------------------------------------------- … … 52 52 REAL(wp), PARAMETER :: kraft = 0.5_wp ! rafting multipliyer 53 53 54 REAL(wp) :: Cp ! 54 !!gm Cp is 1) not DOCTOR, 55 !! 2) misleading name: heat capacity instead of a constant, 56 !! 3) recomputed at each time-step, whereas it is stored in the module memory... 57 !! ===>>> compute it one for all inside the IF( kt == nit000 ) (i.e. without the ".AND. lwp") 58 REAL(wp) :: Cp ! ??? !!gm Not doctor ! 59 55 60 ! 56 61 ! 57 62 !!---------------------------------------------------------------------- 58 !! NEMO/ LIM3 3.3 , UCL - NEMO Consortium (2010)63 !! NEMO/ICE 4.0 , NEMO Consortium (2017) 59 64 !! $Id: icerdgrft.F90 8378 2017-07-26 13:55:59Z clem $ 60 65 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 66 71 !! *** ROUTINE ice_rdgrft_alloc *** 67 72 !!---------------------------------------------------------------------! 68 ALLOCATE( & 69 !* Variables shared among ridging subroutines 70 & asum (jpi,jpj) , athorn(jpi,jpj,0:jpl) , aksum (jpi,jpj) , & 71 & hrmin(jpi,jpj,jpl) , hraft(jpi,jpj,jpl) , aridge(jpi,jpj,jpl) , & 72 & hrmax(jpi,jpj,jpl) , krdg (jpi,jpj,jpl) , araft (jpi,jpj,jpl) , STAT=ice_rdgrft_alloc ) 73 ALLOCATE( asum (jpi,jpj) , athorn(jpi,jpj,0:jpl) , aksum (jpi,jpj) , & 74 & hrmin(jpi,jpj,jpl) , hraft (jpi,jpj,jpl) , aridge(jpi,jpj,jpl) , & 75 & hrmax(jpi,jpj,jpl) , krdg (jpi,jpj,jpl) , araft (jpi,jpj,jpl) , STAT=ice_rdgrft_alloc ) 73 76 ! 74 77 IF( ice_rdgrft_alloc /= 0 ) CALL ctl_warn( 'ice_rdgrft_alloc: failed to allocate arrays' ) … … 105 108 INTEGER, INTENT(in) :: kt ! number of iteration 106 109 !! 107 INTEGER :: ji, jj, jk, jl 108 INTEGER :: niter 109 INTEGER :: iterate_ridging ! if true, repeat the ridging110 REAL(wp) :: za, zfac 110 INTEGER :: ji, jj, jk, jl ! dummy loop index 111 INTEGER :: niter ! local integer 112 INTEGER :: iterate_ridging ! if =1, repeat the ridging 113 REAL(wp) :: za, zfac, zcs_2 ! local scalar 111 114 CHARACTER (len = 15) :: fieldid 112 REAL(wp), DIMENSION(jpi,jpj) 113 114 REAL(wp), DIMENSION(jpi,jpj) 115 REAL(wp), DIMENSION(jpi,jpj) 116 REAL(wp), DIMENSION(jpi,jpj) 115 REAL(wp), DIMENSION(jpi,jpj) :: closing_net ! net rate at which area is removed (1/s) 116 ! ! (ridging ice area - area of new ridges) / dt 117 REAL(wp), DIMENSION(jpi,jpj) :: divu_adv ! divu as implied by transport scheme (1/s) 118 REAL(wp), DIMENSION(jpi,jpj) :: opning ! rate of opening due to divergence/shear 119 REAL(wp), DIMENSION(jpi,jpj) :: closing_gross ! rate at which area removed, not counting area of new ridges 117 120 ! 118 121 INTEGER, PARAMETER :: nitermax = 20 … … 124 127 IF( kt == nit000 .AND. lwp ) THEN 125 128 WRITE(numout,*) 126 WRITE(numout,*)'icerdgrft '127 WRITE(numout,*)'~~~~~~~~~ '129 WRITE(numout,*)'icerdgrft : ice ridging and rafting' 130 WRITE(numout,*)'~~~~~~~~~~' 128 131 ENDIF 129 130 ! conservation test 131 IF( ln_limdiachk ) CALL ice_cons_hsm(0, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 132 !!gm should be: 133 ! IF( kt == nit000 ) THEN 134 ! IF(lwp) WRITE(numout,*) 135 ! IF(lwp) WRITE(numout,*)'icerdgrft : ???' 136 ! IF(lwp) WRITE(numout,*)'~~~~~~~~~~' 137 ! ! 138 ! Cp = 0.5 * grav * (rau0-rhoic) * rhoic * r1_rau0 ! proport const for PE 139 ! ! 140 !!gm why not adding here zcs_2 computation 141 ! ! 142 ! ENDIF 143 !!gm end 144 145 ! ! conservation test 146 IF( ln_limdiachk ) CALL ice_cons_hsm(0, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 132 147 133 148 !-----------------------------------------------------------------------------! 134 149 ! 1) Thickness categories boundaries, ice / o.w. concentrations, init_ons 135 150 !-----------------------------------------------------------------------------! 136 Cp = 0.5 * grav * (rau0-rhoic) * rhoic * r1_rau0! proport const for PE137 !138 CALL ice_rdgrft_ridgeprep ! prepare ridging139 !140 141 DO jj = 1, jpj ! Initialize arrays.151 Cp = 0.5 * grav * (rau0-rhoic) * rhoic * r1_rau0 ! proport const for PE 152 zcs_2 = rn_cs * 0.5_wp 153 ! 154 CALL ice_rdgrft_ridgeprep ! prepare ridging 155 ! 156 DO jj = 1, jpj ! Initialize arrays. 142 157 DO ji = 1, jpi 143 144 158 !-----------------------------------------------------------------------------! 145 159 ! 2) Dynamical inputs (closing rate, divu_adv, opning) … … 161 175 ! (thick, newly ridged ice). 162 176 163 closing_net(ji,jj) = rn_cs * 0.5* ( delta_i(ji,jj) - ABS( divu_i(ji,jj) ) ) - MIN( divu_i(ji,jj), 0._wp )177 closing_net(ji,jj) = zcs_2 * ( delta_i(ji,jj) - ABS( divu_i(ji,jj) ) ) - MIN( divu_i(ji,jj), 0._wp ) 164 178 165 179 ! 2.2 divu_adv … … 233 247 ! 3.3 Redistribute area, volume, and energy. 234 248 !-----------------------------------------------------------------------------! 235 236 249 CALL ice_rdgrft_ridgeshift( opning, closing_gross ) 237 238 250 239 251 ! 3.4 Compute total area of ice plus open water after ridging. … … 246 258 ! Check whether asum = 1. If not (because the closing and opening 247 259 ! rates were reduced above), ridge again with new rates. 248 249 260 iterate_ridging = 0 250 261 DO jj = 1, jpj … … 262 273 END DO 263 274 END DO 264 265 275 IF( lk_mpp ) CALL mpp_max( iterate_ridging ) 266 276 267 277 ! Repeat if necessary. 268 278 ! NOTE: If strength smoothing is turned on, the ridging must be 269 ! iterated globally because of the boundary update in the 270 ! smoothing. 271 279 ! iterated globally because of the boundary update in the smoothing. 272 280 niter = niter + 1 273 281 ! 274 282 IF( iterate_ridging == 1 ) THEN 275 283 CALL ice_rdgrft_ridgeprep … … 279 287 ENDIF 280 288 ENDIF 281 289 ! 282 290 END DO !! on the do while over iter 283 291 … … 287 295 ! control prints 288 296 !-----------------------------------------------------------------------------! 289 ! conservation test290 IF( ln_limdiachk ) CALL ice_cons_hsm(1, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)291 292 ! control prints293 IF( ln_ctl )CALL ice_prt3D( 'icerdgrft' )297 ! ! conservation test 298 IF( ln_limdiachk ) CALL ice_cons_hsm(1, 'icerdgrft', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 299 300 ! ! control prints 301 IF( ln_ctl ) CALL ice_prt3D( 'icerdgrft' ) 294 302 ! 295 303 IF( nn_timing == 1 ) CALL timing_stop('icerdgrft') 304 ! 296 305 END SUBROUTINE ice_rdgrft 306 297 307 298 308 SUBROUTINE ice_rdgrft_ridgeprep … … 305 315 !! participating in ridging and of the resulting ridges. 306 316 !!---------------------------------------------------------------------! 307 INTEGER :: ji, jj, jl ! dummy loop indices308 REAL(wp) :: Gstari, astari, hrmean, zdummy ! local scalar 317 INTEGER :: ji, jj, jl ! dummy loop indices 318 REAL(wp) :: Gstari, astari, hrmean, zdummy ! local scalar !!gm DOCTOR norme should start with z !!!!! 309 319 REAL(wp), DIMENSION(jpi,jpj,-1:jpl) :: Gsum ! Gsum(n) = sum of areas in categories 0 to n 310 320 !------------------------------------------------------------------------------! 311 321 312 Gstari = 1.0/rn_gstar 313 astari = 1.0/rn_astar 314 aksum(:,:) = 0.0 315 athorn(:,:,:) = 0.0 316 aridge(:,:,:) = 0.0 317 araft (:,:,:) = 0.0 318 319 ! Zero out categories with very small areas 320 CALL ice_var_zapsmall 321 322 ! Ice thickness needed for rafting 323 DO jl = 1, jpl 324 DO jj = 1, jpj 325 DO ji = 1, jpi 326 rswitch = MAX( 0._wp , SIGN( 1._wp, a_i(ji,jj,jl) - epsi20 ) ) 327 ht_i(ji,jj,jl) = v_i (ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi20 ) * rswitch 328 END DO 329 END DO 330 END DO 322 Gstari = 1._wp / rn_gstar 323 astari = 1._wp / rn_astar 324 aksum(:,:) = 0._wp 325 athorn(:,:,:) = 0._wp 326 aridge(:,:,:) = 0._wp 327 araft (:,:,:) = 0._wp 328 329 CALL ice_var_zapsmall ! Zero out categories with very small areas 330 331 ! DO jl = 1, jpl ! Ice thickness needed for rafting 332 ! DO jj = 1, jpj 333 ! DO ji = 1, jpi 334 !!gm rswitch = MAX( 0._wp , SIGN( 1._wp, a_i(ji,jj,jl) - epsi20 ) ) 335 !!gm ht_i(ji,jj,jl) = v_i (ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi20 ) * rswitch 336 ! IF( a_i(ji,jj,jl) >= epsi20 ) THEN ; ht_i(ji,jj,jl) = v_i (ji,jj,jl) / a_i(ji,jj,jl) 337 ! ELSE ; ht_i(ji,jj,jl) = 0._wp 338 ! ENDIF 339 ! END DO 340 ! END DO 341 ! END DO 342 !!gm or even better : 343 ! ! ! Ice thickness needed for rafting 344 WHERE( a_i(:,:,:) >= epsi20 ) ; ht_i(:,:,:) = v_i (:,:,:) / a_i(:,:,:) 345 ELSEWHERE ; ht_i(:,:,:) = 0._wp 346 END WHERE 347 !!gm end 331 348 332 349 !------------------------------------------------------------------------------! 333 350 ! 1) Participation function 334 351 !------------------------------------------------------------------------------! 335 352 ! 336 353 ! Compute total area of ice plus open water. 337 354 ! This is in general not equal to one because of divergence during transport 338 355 asum(:,:) = ato_i(:,:) + SUM( a_i, dim=3 ) 339 356 ! 340 357 ! Compute cumulative thickness distribution function 341 358 ! Compute the cumulative thickness distribution function Gsum, … … 348 365 Gsum(:,:,jl) = Gsum(:,:,jl-1) + a_i(:,:,jl) 349 366 END DO 350 367 ! 351 368 ! Normalize the cumulative distribution to 1 352 369 DO jl = 0, jpl … … 366 383 ! athorn is always >= 0 and SUM(athorn(0:jpl))=1 367 384 !----------------------------------------------------------------- 368 385 ! 369 386 IF( nn_partfun == 0 ) THEN !--- Linear formulation (Thorndike et al., 1975) 370 387 DO jl = 0, jpl … … 383 400 END DO 384 401 END DO 385 402 ! 386 403 ELSE !--- Exponential, more stable formulation (Lipscomb et al, 2007) 387 404 ! … … 396 413 ENDIF 397 414 398 ! --- Ridging and rafting participation concentrations --- ! 399 IF( ln_rafting .AND. ln_ridging ) THEN 400 ! 415 ! !--- Ridging and rafting participation concentrations 416 IF( ln_rafting .AND. ln_ridging ) THEN !- ridging & rafting 401 417 DO jl = 1, jpl 402 418 DO jj = 1, jpj … … 408 424 END DO 409 425 END DO 410 ! 411 ELSEIF( ln_ridging .AND. .NOT. ln_rafting ) THEN 412 ! 426 ELSEIF( ln_ridging .AND. .NOT.ln_rafting ) THEN !- ridging alone 413 427 DO jl = 1, jpl 414 428 aridge(:,:,jl) = athorn(:,:,jl) 415 429 END DO 416 ! 417 ELSEIF( ln_rafting .AND. .NOT. ln_ridging ) THEN 418 ! 430 ELSEIF( ln_rafting .AND. .NOT.ln_ridging ) THEN !- rafting alone 419 431 DO jl = 1, jpl 420 432 araft(:,:,jl) = athorn(:,:,jl) 421 433 END DO 422 !423 434 ENDIF 424 435 … … 454 465 DO jj = 1, jpj 455 466 DO ji = 1, jpi 456 457 IF( athorn(ji,jj,jl) > 0._wp ) THEN 467 IF ( athorn(ji,jj,jl) > 0._wp ) THEN 458 468 hrmean = MAX( SQRT( rn_hstar * ht_i(ji,jj,jl) ), ht_i(ji,jj,jl) * krdgmin ) 459 469 hrmin(ji,jj,jl) = MIN( 2._wp * ht_i(ji,jj,jl), 0.5_wp * ( hrmean + ht_i(ji,jj,jl) ) ) 460 470 hrmax(ji,jj,jl) = 2._wp * hrmean - hrmin(ji,jj,jl) 461 471 hraft(ji,jj,jl) = ht_i(ji,jj,jl) / kraft 462 krdg (ji,jj,jl)= ht_i(ji,jj,jl) / MAX( hrmean, epsi20 )463 472 krdg (ji,jj,jl) = ht_i(ji,jj,jl) / MAX( hrmean, epsi20 ) 473 ! 464 474 ! Normalization factor : aksum, ensures mass conservation 465 475 aksum(ji,jj) = aksum(ji,jj) + aridge(ji,jj,jl) * ( 1._wp - krdg(ji,jj,jl) ) & 466 476 & + araft (ji,jj,jl) * ( 1._wp - kraft ) 467 468 477 ELSE 469 478 hrmin(ji,jj,jl) = 0._wp … … 472 481 krdg (ji,jj,jl) = 1._wp 473 482 ENDIF 474 475 483 END DO 476 484 END DO 477 485 END DO 478 !479 486 ! 480 487 END SUBROUTINE ice_rdgrft_ridgeprep … … 493 500 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: closing_gross ! rate at which area removed, excluding area of new ridges 494 501 ! 495 CHARACTER (len=80) :: fieldid ! field identifier 502 CHARACTER (len=80) :: fieldid ! field identifier !!gm DOCTOR name wrong 496 503 ! 497 504 INTEGER :: ji, jj, jl, jl1, jl2, jk ! dummy loop indices … … 740 747 741 748 ! Compute the fraction of rafted ice area and volume going to thickness category jl2 742 IF( hraft(ji,jj,jl1) <= hi_max(jl2) .AND. hraft(ji,jj,jl1) > hi_max(jl2-1) ) THEN 743 zswitch(ij) = 1._wp 744 ELSE 745 zswitch(ij) = 0._wp 749 !!gm see above IF( hraft(ji,jj,jl1) <= hi_max(jl2) .AND. hraft(ji,jj,jl1) > hi_max(jl2-1) ) THEN 750 IF( hi_max(jl2-1) < hraft(ji,jj,jl1) .AND. hraft(ji,jj,jl1) <= hi_max(jl2) ) THEN ; zswitch(ij) = 1._wp 751 ELSE ; zswitch(ij) = 0._wp 746 752 ENDIF 747 753 ! 748 754 a_i (ji,jj ,jl2) = a_i (ji,jj ,jl2) + ( ardg2 (ij) * farea + arft2 (ij) * zswitch(ij) ) 749 755 oa_i (ji,jj ,jl2) = oa_i (ji,jj ,jl2) + ( oirdg2(ij) * farea + oirft2(ij) * zswitch(ij) ) … … 756 762 ! MV MP 2016 757 763 IF ( nn_pnd_scheme > 0 ) THEN 758 v_ip (ji,jj,jl2) = v_ip (ji,jj,jl2) + ( vprdg (ij) * rn_fpondrdg * fvol(ij) +&759 & vprft (ij) * rn_fpondrft * zswitch(ij))760 a_ip (ji,jj,jl2) = a_ip(ji,jj,jl2) + ( aprdg2(ij) * rn_fpondrdg * farea +&761 & aprft2(ij) * rn_fpondrft * zswitch(ji))764 v_ip (ji,jj,jl2) = v_ip(ji,jj,jl2) + ( vprdg (ij) * rn_fpondrdg * fvol (ij) & 765 & + vprft (ij) * rn_fpondrft * zswitch(ij) ) 766 a_ip (ji,jj,jl2) = a_ip(ji,jj,jl2) + ( aprdg2(ij) * rn_fpondrdg * farea & 767 & + aprft2(ij) * rn_fpondrft * zswitch(ji) ) 762 768 ENDIF 763 769 ! END MV MP 2016 764 765 770 END DO 766 771 … … 774 779 ! 775 780 END DO ! jl2 776 781 ! 777 782 END DO ! jl1 (deforming categories) 778 783 … … 782 787 ! 783 788 END SUBROUTINE ice_rdgrft_ridgeshift 789 784 790 785 791 SUBROUTINE ice_rdgrft_icestrength( kstrngth ) … … 798 804 !!---------------------------------------------------------------------- 799 805 INTEGER, INTENT(in) :: kstrngth ! = 1 for Rothrock formulation, 0 for Hibler (1979) 806 ! 800 807 INTEGER :: ji,jj, jl ! dummy loop indices 801 INTEGER :: ksmooth ! smoothing the resistance to deformation 802 INTEGER :: numts_rm ! number of time steps for the P smoothing 808 INTEGER :: ksmooth ! smoothing the resistance to deformation !!gm not DOCTOR : start with i !!! 809 INTEGER :: numts_rm ! number of time steps for the P smoothing !!gm not DOCTOR : start with i !!! 803 810 REAL(wp) :: zp, z1_3 ! local scalars 804 811 REAL(wp), DIMENSION(jpi,jpj) :: zworka ! temporary array used here … … 880 887 ! 6) Smoothing ice strength 881 888 !------------------------------------------------------------------------------! 882 ! 883 !------------------- 884 ! Spatial smoothing 885 !------------------- 886 IF ( ksmooth == 1 ) THEN 887 889 SELECT CASE( ksmooth ) 890 ! !------------------- 891 CASE( 1 ) ! Spatial smoothing 892 ! !------------------- 888 893 DO jj = 2, jpjm1 889 894 DO ji = 2, jpim1 … … 905 910 END DO 906 911 CALL lbc_lnk( strength, 'T', 1. ) 907 908 ENDIF 909 910 !-------------------- 911 ! Temporal smoothing 912 !-------------------- 913 IF ( ksmooth == 2 ) THEN 914 912 ! 913 ! !-------------------- 914 CASE( 2 ) ! Temporal smoothing 915 ! !-------------------- 915 916 IF ( kt_ice == nit000 ) THEN 916 917 zstrp1(:,:) = 0._wp 917 918 zstrp2(:,:) = 0._wp 918 919 ENDIF 919 920 ! 920 921 DO jj = 2, jpjm1 921 922 DO ji = 2, jpim1 … … 925 926 IF ( zstrp2(ji,jj) > 0._wp ) numts_rm = numts_rm + 1 926 927 zp = ( strength(ji,jj) + zstrp1(ji,jj) + zstrp2(ji,jj) ) / numts_rm 927 zstrp2 (ji,jj) = zstrp1(ji,jj)928 zstrp1 (ji,jj) = strength(ji,jj)928 zstrp2 (ji,jj) = zstrp1 (ji,jj) 929 zstrp1 (ji,jj) = strength(ji,jj) 929 930 strength(ji,jj) = zp 930 931 ENDIF 931 932 END DO 932 933 END DO 933 934 934 CALL lbc_lnk( strength, 'T', 1. ) ! Boundary conditions 935 936 END IF ! ksmooth935 ! 936 END SELECT 937 937 ! 938 938 END SUBROUTINE ice_rdgrft_icestrength 939 939 940 940 941 SUBROUTINE ice_rdgrft_init 941 942 !!------------------------------------------------------------------- 942 !! 943 !! *** ROUTINE ice_rdgrft_init *** 943 944 !! 944 945 !! ** Purpose : Physical constants and parameters linked … … 952 953 !!------------------------------------------------------------------- 953 954 INTEGER :: ios ! Local integer output status for namelist read 954 NAMELIST/namiceitdme/ rn_cs, nn_partfun, rn_gstar, rn_astar, & 955 & ln_ridging, rn_hstar, rn_por_rdg, rn_fsnowrdg, rn_fpondrdg, & 956 ln_rafting, rn_hraft, rn_craft, rn_fsnowrft, rn_fpondrft 955 !! 956 NAMELIST/namiceitdme/ rn_cs , nn_partfun, rn_gstar , rn_astar , & 957 & ln_ridging, rn_hstar , rn_por_rdg, rn_fsnowrdg, rn_fpondrdg, & 958 & ln_rafting, rn_hraft , rn_craft , rn_fsnowrft, rn_fpondrft 957 959 !!------------------------------------------------------------------- 958 960 ! … … 960 962 READ ( numnam_ice_ref, namiceitdme, IOSTAT = ios, ERR = 901) 961 963 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namiceitdme in reference namelist', lwp ) 962 964 ! 963 965 REWIND( numnam_ice_cfg ) ! Namelist namiceitdme in configuration namelist : Ice mechanical ice redistribution 964 966 READ ( numnam_ice_cfg, namiceitdme, IOSTAT = ios, ERR = 902 ) … … 992 994 !! Default option Empty module NO LIM-3 sea-ice model 993 995 !!---------------------------------------------------------------------- 994 CONTAINS995 SUBROUTINE ice_rdgrft ! Empty routines996 END SUBROUTINE ice_rdgrft997 SUBROUTINE ice_rdgrft_icestrength998 END SUBROUTINE ice_rdgrft_icestrength999 SUBROUTINE ice_rdgrft_init1000 END SUBROUTINE ice_rdgrft_init1001 996 #endif 997 1002 998 !!====================================================================== 1003 999 END MODULE icerdgrft
Note: See TracChangeset
for help on using the changeset viewer.