Changeset 8306 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC
- Timestamp:
- 2017-07-10T12:18:03+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 1 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ASM/asmbkg.F90
r6140 r8306 38 38 USE asmpar ! Parameters for the assmilation interface 39 39 USE zdfmxl ! mixed layer depth 40 #if defined key_lim241 USE ice_242 #endif43 40 #if defined key_lim3 44 41 USE ice … … 148 145 CALL iom_rstput( kt, nitdin_r, inum, 'sn' , tsn(:,:,:,jp_sal) ) 149 146 CALL iom_rstput( kt, nitdin_r, inum, 'sshn' , sshn ) 150 #if defined key_lim 2 || defined key_lim3147 #if defined key_lim3 151 148 IF( nn_ice == 2 .OR. nn_ice == 3 ) THEN 152 149 IF( ALLOCATED(frld) ) THEN -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r8030 r8306 35 35 USE in_out_manager ! I/O manager 36 36 USE lib_mpp ! MPP library 37 #if defined key_lim 238 USE ice _2 ! LIM237 #if defined key_lim3 38 USE ice, ONLY: htm_i, at_i, pfrld, phicif 39 39 #endif 40 40 USE sbc_oce ! Surface boundary condition variables. … … 809 809 INTEGER :: it 810 810 REAL(wp) :: zincwgt ! IAU weight for current time step 811 #if defined key_lim 2811 #if defined key_lim3 812 812 REAL(wp), DIMENSION(jpi,jpj) :: zofrld, zohicif, zseaicendg, zhicifinc ! LIM 813 813 REAL(wp) :: zhicifmin = 0.5_wp ! ice minimum depth in metres … … 831 831 ENDIF 832 832 ! 833 ! Sea-ice : LIM-3 case (to add) 834 ! 835 #if defined key_lim2 836 ! Sea-ice : LIM-2 case 837 zofrld (:,:) = frld(:,:) 838 zohicif(:,:) = hicif(:,:) 839 ! 840 frld = MIN( MAX( frld (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 841 pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 842 fr_i(:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 843 ! 844 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 833 ! Sea-ice : LIM-3 case 834 ! 835 #if defined key_lim3 836 zofrld (:,:) = 1._wp - at_i(:,:) 837 zohicif(:,:) = htm_i(:,:) 838 ! 839 at_i(:,:) = 1. - MIN( MAX( 1.-at_i(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 840 pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 841 fr_i(:,:) = at_i(:,:) ! adjust ice fraction 842 ! 843 zseaicendg(:,:) = zofrld(:,:) - (1. - at_i(:,:)) ! find out actual sea ice nudge applied 845 844 ! 846 845 ! Nudge sea ice depth to bring it up to a required minimum depth 847 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h icif(:,:) < zhicifmin )848 zhicifinc(:,:) = (zhicifmin - h icif(:,:)) * zincwgt846 WHERE( zseaicendg(:,:) > 0.0_wp .AND. htm_i(:,:) < zhicifmin ) 847 zhicifinc(:,:) = (zhicifmin - htm_i(:,:)) * zincwgt 849 848 ELSEWHERE 850 849 zhicifinc(:,:) = 0.0_wp … … 852 851 ! 853 852 ! nudge ice depth 854 h icif (:,:) = hicif(:,:) + zhicifinc(:,:)853 htm_i (:,:) = htm_i (:,:) + zhicifinc(:,:) 855 854 phicif(:,:) = phicif(:,:) + zhicifinc(:,:) 856 855 ! … … 882 881 neuler = 0 ! Force Euler forward step 883 882 ! 884 ! Sea-ice : LIM-3 case (to add) 885 ! 886 #if defined key_lim2 887 ! Sea-ice : LIM-2 case. 888 zofrld(:,:)=frld(:,:) 889 zohicif(:,:)=hicif(:,:) 883 ! Sea-ice : LIM-3 case 884 ! 885 #if defined key_lim3 886 zofrld (:,:) = 1._wp - at_i(:,:) 887 zohicif(:,:) = htm_i(:,:) 890 888 ! 891 889 ! Initialize the now fields the background + increment 892 frld (:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 893 pfrld(:,:) = frld(:,:) 894 fr_i (:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 895 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 890 at_i(:,:) = 1. - MIN( MAX( 1.-at_i(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 891 pfrld(:,:) = 1.-at_i(:,:) 892 fr_i(:,:) = at_i(:,:) ! adjust ice fraction 893 ! 894 zseaicendg(:,:) = zofrld(:,:) - (1. - at_i(:,:)) ! find out actual sea ice nudge applied 896 895 ! 897 896 ! Nudge sea ice depth to bring it up to a required minimum depth 898 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h icif(:,:) < zhicifmin )899 zhicifinc(:,:) = (zhicifmin - h icif(:,:)) * zincwgt897 WHERE( zseaicendg(:,:) > 0.0_wp .AND. htm_i(:,:) < zhicifmin ) 898 zhicifinc(:,:) = (zhicifmin - htm_i(:,:)) * zincwgt 900 899 ELSEWHERE 901 zhicifinc(:,:) = 0. _wp900 zhicifinc(:,:) = 0.0_wp 902 901 END WHERE 903 902 ! 904 903 ! nudge ice depth 905 h icif (:,:) = hicif(:,:) + zhicifinc(:,:)904 htm_i (:,:) = htm_i (:,:) + zhicifinc(:,:) 906 905 phicif(:,:) = phicif(:,:) 907 906 ! … … 926 925 ENDIF 927 926 928 !#if defined defined key_lim 2|| defined key_cice927 !#if defined defined key_lim3 || defined key_cice 929 928 ! 930 929 ! IF (ln_seaicebal ) THEN -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
r7753 r8306 55 55 REAL(wp), POINTER, DIMENSION(:,:) :: tem 56 56 REAL(wp), POINTER, DIMENSION(:,:) :: sal 57 #if defined key_lim2 58 LOGICAL :: ll_frld 59 LOGICAL :: ll_hicif 60 LOGICAL :: ll_hsnif 61 REAL(wp), POINTER, DIMENSION(:) :: frld 62 REAL(wp), POINTER, DIMENSION(:) :: hicif 63 REAL(wp), POINTER, DIMENSION(:) :: hsnif 64 #elif defined key_lim3 57 #if defined key_lim3 65 58 LOGICAL :: ll_a_i 66 59 LOGICAL :: ll_ht_i -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r7861 r8306 25 25 USE iom ! IOM library 26 26 USE in_out_manager ! I/O logical units 27 #if defined key_lim2 28 USE ice_2 29 #elif defined key_lim3 27 #if defined key_lim3 30 28 USE ice 31 29 USE limvar ! redistribute ice input into categories … … 50 48 51 49 #if defined key_lim3 52 LOGICAL :: ll_bdylim3 ! determine whether ice input is lim2 (F) or lim3(T) type50 LOGICAL :: ll_bdylim3 ! determine whether ice input is 1cat (F) or Xcat (T) type 53 51 INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 54 52 #endif … … 176 174 ENDIF 177 175 178 #if defined key_lim2 179 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 180 ilen1(:) = nblen(:) 181 IF( dta%ll_frld ) THEN 182 igrd = 1 183 DO ib = 1, ilen1(igrd) 184 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 185 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 186 dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1) 187 END DO 188 END IF 189 IF( dta%ll_hicif ) THEN 190 igrd = 1 191 DO ib = 1, ilen1(igrd) 192 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 193 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 194 dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1) 195 END DO 196 END IF 197 IF( dta%ll_hsnif ) THEN 198 igrd = 1 199 DO ib = 1, ilen1(igrd) 200 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 201 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 202 dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1) 203 END DO 204 END IF 205 ENDIF 206 #elif defined key_lim3 176 #if defined key_lim3 207 177 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 208 178 ilen1(:) = nblen(:) … … 373 343 ENDIF 374 344 #if defined key_lim3 375 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is lim2 type)345 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is 1cat) 376 346 CALL lim_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 377 347 & dta_bdy(ib_bdy)%ht_i, dta_bdy(ib_bdy)%ht_s, dta_bdy(ib_bdy)%a_i ) … … 449 419 TYPE(FLD_N) :: bn_tem, bn_sal, bn_u3d, bn_v3d ! 450 420 TYPE(FLD_N) :: bn_ssh, bn_u2d, bn_v2d ! informations about the fields to be read 451 #if defined key_lim2 452 TYPE(FLD_N) :: bn_frld, bn_hicif, bn_hsnif ! 453 #elif defined key_lim3 421 #if defined key_lim3 454 422 TYPE(FLD_N) :: bn_a_i, bn_ht_i, bn_ht_s 455 #endif456 423 NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d 457 #if defined key_lim2458 NAMELIST/nambdy_dta/ bn_frld, bn_hicif, bn_hsnif459 #elif defined key_lim3460 424 NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 461 425 #endif … … 475 439 ,nn_dyn3d_dta(ib_bdy) & 476 440 ,nn_tra_dta(ib_bdy) & 477 #if ( defined key_lim2 || defined key_lim3 )441 #if defined key_lim3 478 442 ,nn_ice_lim_dta(ib_bdy) & 479 443 #endif … … 496 460 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 497 461 ENDIF 498 #if ( defined key_lim2 || defined key_lim3 )462 #if defined key_lim3 499 463 IF( cn_ice_lim(ib_bdy) /= 'none' .and. nn_ice_lim_dta(ib_bdy) == 1 ) THEN 500 464 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 … … 637 601 ENDIF 638 602 639 #if defined key_lim 2603 #if defined key_lim3 640 604 ! sea ice 641 605 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 642 643 IF( dta%ll_frld ) THEN 644 jfld = jfld + 1 645 blf_i(jfld) = bn_frld 646 ibdy(jfld) = ib_bdy 647 igrid(jfld) = 1 648 ilen1(jfld) = nblen(igrid(jfld)) 649 ilen3(jfld) = 1 650 ENDIF 651 652 IF( dta%ll_hicif ) THEN 653 jfld = jfld + 1 654 blf_i(jfld) = bn_hicif 655 ibdy(jfld) = ib_bdy 656 igrid(jfld) = 1 657 ilen1(jfld) = nblen(igrid(jfld)) 658 ilen3(jfld) = 1 659 ENDIF 660 661 IF( dta%ll_hsnif ) THEN 662 jfld = jfld + 1 663 blf_i(jfld) = bn_hsnif 664 ibdy(jfld) = ib_bdy 665 igrid(jfld) = 1 666 ilen1(jfld) = nblen(igrid(jfld)) 667 ilen3(jfld) = 1 668 ENDIF 669 670 ENDIF 671 #elif defined key_lim3 672 ! sea ice 673 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 674 ! Test for types of ice input (lim2 or lim3) 606 ! Test for types of ice input (1cat or Xcat) 675 607 ! Build file name to find dimensions 676 608 clname=TRIM( cn_dir )//TRIM(bn_a_i%clname) … … 689 621 690 622 IF ( zndims == 4 ) THEN 691 ll_bdylim3 = .TRUE. ! lim3input623 ll_bdylim3 = .TRUE. ! Xcat input 692 624 ELSE 693 ll_bdylim3 = .FALSE. ! lim2input625 ll_bdylim3 = .FALSE. ! 1cat input 694 626 ENDIF 695 627 ! End test … … 848 780 ENDIF 849 781 850 #if defined key_lim2 851 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 852 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 853 ALLOCATE( dta_bdy(ib_bdy)%frld(nblen(1)) ) 854 ALLOCATE( dta_bdy(ib_bdy)%hicif(nblen(1)) ) 855 ALLOCATE( dta_bdy(ib_bdy)%hsnif(nblen(1)) ) 856 ELSE 857 jfld = jfld + 1 858 dta_bdy(ib_bdy)%frld => bf(jfld)%fnow(:,1,1) 859 jfld = jfld + 1 860 dta_bdy(ib_bdy)%hicif => bf(jfld)%fnow(:,1,1) 861 jfld = jfld + 1 862 dta_bdy(ib_bdy)%hsnif => bf(jfld)%fnow(:,1,1) 863 ENDIF 864 ENDIF 865 #elif defined key_lim3 782 #if defined key_lim3 866 783 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 867 784 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN … … 870 787 ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 871 788 ELSE 872 IF ( ll_bdylim3 ) THEN ! case input is lim3 type789 IF ( ll_bdylim3 ) THEN ! case input is Xcat 873 790 jfld = jfld + 1 874 791 dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) … … 877 794 jfld = jfld + 1 878 795 dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 879 ELSE ! case input is lim2 type796 ELSE ! case input is 1cat 880 797 jfld_ai = jfld + 1 881 798 jfld_hti = jfld + 2 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90
r7646 r8306 2 2 !!====================================================================== 3 3 !! *** MODULE bdyice_lim *** 4 !! Unstructured Open Boundary Cond. : Open boundary conditions for sea-ice (LIM 2 and LIM3)4 !! Unstructured Open Boundary Cond. : Open boundary conditions for sea-ice (LIM3) 5 5 !!====================================================================== 6 6 !! History : 3.3 ! 2010-09 (D. Storkey) Original code … … 8 8 !! - ! 2012-01 (C. Rousset) add lim3 and remove useless jk loop 9 9 !!---------------------------------------------------------------------- 10 #if defined key_lim2 || defined key_lim3 11 !!---------------------------------------------------------------------- 12 !! 'key_lim2' LIM-2 sea ice model 10 #if defined key_lim3 11 !!---------------------------------------------------------------------- 13 12 !! 'key_lim3' LIM-3 sea ice model 14 13 !!---------------------------------------------------------------------- … … 20 19 USE eosbn2 ! equation of state 21 20 USE oce ! ocean dynamics and tracers variables 22 #if defined key_lim2 23 USE par_ice_2 24 USE ice_2 ! LIM_2 ice variables 25 USE dom_ice_2 ! sea-ice domain 26 #elif defined key_lim3 21 #if defined key_lim3 27 22 USE ice ! LIM_3 ice variables 28 23 USE limvar … … 55 50 !! *** SUBROUTINE bdy_ice_lim *** 56 51 !! 57 !! ** Purpose : - Apply open boundary conditions for ice (LIM 2 and LIM3)52 !! ** Purpose : - Apply open boundary conditions for ice (LIM3) 58 53 !! 59 54 !!---------------------------------------------------------------------- … … 110 105 REAL(wp) :: zwgt, zwgt1 ! local scalar 111 106 REAL(wp) :: ztmelts, zdh 112 #if defined key_lim2 && ! defined key_lim2_vp && defined key_agrif113 USE ice_2, vt_s => hsnm114 USE ice_2, vt_i => hicm115 #endif116 107 !!------------------------------------------------------------------------------ 117 108 ! … … 120 111 jgrd = 1 ! Everything is at T-points here 121 112 ! 122 #if defined key_lim2 123 DO jb = 1, idx%nblenrim(jgrd) 124 ji = idx%nbi(jb,jgrd) 125 jj = idx%nbj(jb,jgrd) 126 zwgt = idx%nbw(jb,jgrd) 127 zwgt1 = 1.e0 - idx%nbw(jb,jgrd) 128 frld (ji,jj) = ( frld (ji,jj) * zwgt1 + dta%frld (jb) * zwgt ) * tmask(ji,jj,1) ! Leads fraction 129 hicif(ji,jj) = ( hicif(ji,jj) * zwgt1 + dta%hicif(jb) * zwgt ) * tmask(ji,jj,1) ! Ice depth 130 hsnif(ji,jj) = ( hsnif(ji,jj) * zwgt1 + dta%hsnif(jb) * zwgt ) * tmask(ji,jj,1) ! Snow depth 131 END DO 132 133 CALL lbc_bdy_lnk( frld, 'T', 1., ib_bdy ) ! lateral boundary conditions 134 CALL lbc_bdy_lnk( hicif, 'T', 1., ib_bdy ) 135 CALL lbc_bdy_lnk( hsnif, 'T', 1., ib_bdy ) 136 137 vt_i(:,:) = hicif(:,:) * frld(:,:) 138 vt_s(:,:) = hsnif(:,:) * frld(:,:) 139 ! 140 #elif defined key_lim3 113 #if defined key_lim3 141 114 142 115 DO jl = 1, jpl -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r7646 r8306 351 351 IF(lwp) WRITE(numout,*) 352 352 353 #if defined key_lim2 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 355 SELECT CASE( cn_ice_lim(ib_bdy) ) 356 CASE('none') 357 IF(lwp) WRITE(numout,*) ' no open boundary condition' 358 dta_bdy(ib_bdy)%ll_frld = .false. 359 dta_bdy(ib_bdy)%ll_hicif = .false. 360 dta_bdy(ib_bdy)%ll_hsnif = .false. 361 CASE('frs') 362 IF(lwp) WRITE(numout,*) ' Flow Relaxation Scheme' 363 dta_bdy(ib_bdy)%ll_frld = .true. 364 dta_bdy(ib_bdy)%ll_hicif = .true. 365 dta_bdy(ib_bdy)%ll_hsnif = .true. 366 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 367 END SELECT 368 IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN 369 SELECT CASE( nn_ice_lim_dta(ib_bdy) ) ! 370 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' initial state used for bdy data' 371 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' boundary data taken from file' 372 CASE DEFAULT ; CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 373 END SELECT 374 ENDIF 375 IF(lwp) WRITE(numout,*) 376 #elif defined key_lim3 353 #if defined key_lim3 377 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 378 355 SELECT CASE( cn_ice_lim(ib_bdy) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90
r7753 r8306 148 148 rmxln_25h(:,:,:) = mxln(:,:,:) 149 149 #endif 150 #if defined key_lim3 || defined key_lim2150 #if defined key_lim3 151 151 CALL ctl_stop('STOP', 'dia_25h not setup yet to do tidemean ice') 152 152 #endif … … 207 207 ENDIF 208 208 209 #if defined key_lim3 || defined key_lim2209 #if defined key_lim3 210 210 CALL ctl_stop('STOP', 'dia_wri_tide not setup yet to do tidemean ice') 211 211 #endif -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
r8126 r8306 32 32 USE dianam ! build name of file 33 33 USE lib_mpp ! distributed memory computing library 34 #if defined key_lim235 USE ice_236 #endif37 34 #if defined key_lim3 38 35 USE ice … … 747 744 END DO !end of loop on the level 748 745 749 #if defined key_lim 2 || defined key_lim3746 #if defined key_lim3 750 747 751 748 !ICE CASE … … 769 766 zTnorm=zumid_ice*e2u(k%I,k%J)+zvmid_ice*e1v(k%I,k%J) 770 767 771 #if defined key_lim2772 transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)* &773 (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) &774 *(hsnif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J) + &775 hicif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))776 transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)* &777 (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))778 #endif779 768 #if defined key_lim3 780 769 DO jl=1,jpl … … 960 949 ENDDO ! loop over jk 961 950 962 #if defined key_lim 2 || defined key_lim3951 #if defined key_lim3 963 952 964 953 !ICE CASE -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r8226 r8306 51 51 USE ioipsl 52 52 53 #if defined key_lim2 54 USE limwri_2 55 #elif defined key_lim3 53 #if defined key_lim3 56 54 USE limwri 57 55 #endif … … 707 705 #endif 708 706 709 IF( ln_cpl .AND. nn_ice == 2 ) THEN710 CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature" , "K" , & ! tn_ice711 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )712 CALL histdef( nid_T,"soicealb" , "Ice Albedo" , "[0,1]" , & ! alb_ice713 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )714 ENDIF715 716 707 CALL histend( nid_T, snc4chunks=snc4set ) 717 708 … … 861 852 #endif 862 853 863 IF( ln_cpl .AND. nn_ice == 2 ) THEN864 CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT ) ! surf. ice temperature865 CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT ) ! ice albedo866 ENDIF867 868 854 CALL histwrite( nid_U, "vozocrtx", it, un , ndim_U , ndex_U ) ! i-current 869 855 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress … … 1009 995 ENDIF 1010 996 1011 #if defined key_lim2 1012 CALL lim_wri_state_2( kt, id_i, nh_i ) 1013 #elif defined key_lim3 997 #if defined key_lim3 1014 998 IF( nn_ice == 3 ) THEN ! clem2017: condition in case agrif + lim but no-ice in child grid 1015 999 CALL lim_wri_state( kt, id_i, nh_i ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ICB/icb_oce.F90
r6140 r8306 90 90 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ua_e, va_e 91 91 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ssh_e 92 #if defined key_lim 2 || defined key_lim3 || defined key_cice92 #if defined key_lim3 || defined key_cice 93 93 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ui_e, vi_e 94 94 #endif … … 170 170 ALLOCATE( uo_e(0:jpi+1,0:jpj+1) , ua_e(0:jpi+1,0:jpj+1) , & 171 171 & vo_e(0:jpi+1,0:jpj+1) , va_e(0:jpi+1,0:jpj+1) , & 172 #if defined key_lim 2 || defined key_lim3 || defined key_cice172 #if defined key_lim3 || defined key_cice 173 173 & ui_e(0:jpi+1,0:jpj+1) , & 174 174 & vi_e(0:jpi+1,0:jpj+1) , & -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r7646 r8306 21 21 USE icb_oce ! define iceberg arrays 22 22 USE sbc_oce ! ocean surface boundary conditions 23 #if defined key_lim2 24 USE ice_2, ONLY: u_ice, v_ice ! LIM-2 ice velocities (CAUTION in C-grid do not use key_vp option) 25 USE ice_2, ONLY: hicif ! LIM-2 ice thickness 26 #elif defined key_lim3 27 USE ice, ONLY: u_ice, v_ice ! LIM-3 variables (always in C-grid) 28 ! gm LIM3 case the mean ice thickness (i.e. averaged over categories) 29 ! gm has to be computed somewhere in the ice and accessed here 23 #if defined key_lim3 24 USE ice, ONLY: u_ice, v_ice, htm_i ! LIM-3 variables 30 25 #endif 31 26 … … 85 80 CALL lbc_lnk_icb( fr_e, 'T', +1._wp, 1, 1 ) 86 81 CALL lbc_lnk_icb( tt_e, 'T', +1._wp, 1, 1 ) 87 #if defined key_lim2 88 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = hicif(:,:) 89 CALL lbc_lnk_icb(hicth, 'T', +1._wp, 1, 1 ) 90 #endif 91 92 #if defined key_lim2 || defined key_lim3 82 #if defined key_lim3 83 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = htm_i(:,:) 93 84 ui_e(:,:) = 0._wp ; ui_e(1:jpi, 1:jpj) = u_ice(:,:) 94 85 vi_e(:,:) = 0._wp ; vi_e(1:jpi, 1:jpj) = v_ice(:,:) 95 86 CALL lbc_lnk_icb(hicth, 'T', +1._wp, 1, 1 ) 96 87 CALL lbc_lnk_icb( ui_e, 'U', -1._wp, 1, 1 ) 97 88 CALL lbc_lnk_icb( vi_e, 'V', -1._wp, 1, 1 ) … … 157 148 pva = pva * zmod 158 149 159 #if defined key_lim 2 || defined key_lim3150 #if defined key_lim3 160 151 pui = icb_utl_bilin_h( ui_e, pi, pj, 'U' ) ! sea-ice velocities 161 152 pvi = icb_utl_bilin_h( vi_e, pi, pj, 'V' ) 162 # if defined key_lim3163 phi = 0._wp ! LIM-3 case (to do)164 # else165 153 phi = icb_utl_bilin_h(hicth, pi, pj, 'T' ) ! ice thickness 166 # endif167 154 #else 168 155 pui = 0._wp -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8239 r8306 34 34 #if defined key_lim3 35 35 USE ice , ONLY : jpl 36 #elif defined key_lim237 USE par_ice_238 36 #endif 39 37 USE domngb ! ocean space and time domain … … 193 191 CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 194 192 # endif 195 #if defined key_lim3 || defined key_lim2193 #if defined key_lim3 196 194 CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 197 195 ! SIMIP diagnostics (4 main arctic straits) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r6140 r8306 291 291 END DO 292 292 ENDIF 293 #if defined key_lim 2 || defined key_lim3293 #if defined key_lim3 294 294 IF (ln_sic) THEN 295 295 jtype = jtype + 1 … … 541 541 & frld 542 542 #endif 543 #if defined key_lim2544 USE ice_2, ONLY : & ! LIM2 Ice model variables545 & frld546 #endif547 543 IMPLICIT NONE 548 544 … … 567 563 & zgphi1, & ! Model latitudes for prof variable 1 568 564 & zgphi2 ! Model latitudes for prof variable 2 569 #if ! defined key_lim 2 && ! defined key_lim3565 #if ! defined key_lim3 570 566 REAL(wp), POINTER, DIMENSION(:,:) :: frld 571 567 #endif … … 582 578 CALL wrk_alloc( jpi, jpj, zgphi1 ) 583 579 CALL wrk_alloc( jpi, jpj, zgphi2 ) 584 #if ! defined key_lim 2 && ! defined key_lim3580 #if ! defined key_lim3 585 581 CALL wrk_alloc(jpi,jpj,frld) 586 582 #endif … … 597 593 ! No LIM => frld == 0.0_wp 598 594 !----------------------------------------------------------------------- 599 #if ! defined key_lim 2 && ! defined key_lim3595 #if ! defined key_lim3 600 596 frld(:,:) = 0.0_wp 601 597 #endif … … 665 661 zsurfvar(:,:) = sshn(:,:) 666 662 llnightav = .FALSE. 667 #if defined key_lim 2 || defined key_lim3663 #if defined key_lim3 668 664 CASE('sic') 669 665 IF ( kstp == 0 ) THEN … … 702 698 CALL wrk_dealloc( jpi, jpj, zgphi1 ) 703 699 CALL wrk_dealloc( jpi, jpj, zgphi2 ) 704 #if ! defined key_lim 2 && ! defined key_lim3700 #if ! defined key_lim3 705 701 CALL wrk_dealloc(jpi,jpj,frld) 706 702 #endif -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r8237 r8306 9 9 !! 3.4 ! 2011-11 (C. Harris) CICE added as an option 10 10 !!---------------------------------------------------------------------- 11 #if defined key_lim3 || defined key_ lim2 || defined key_cice11 #if defined key_lim3 || defined key_cice 12 12 !!---------------------------------------------------------------------- 13 !! 'key_lim 2' or 'key_lim3' : LIM-2 orLIM-3 sea-ice model13 !! 'key_lim3' : LIM-3 sea-ice model 14 14 !!---------------------------------------------------------------------- 15 15 USE par_oce ! ocean parameters … … 17 17 # if defined key_lim3 18 18 USE ice ! LIM-3 parameters 19 # endif20 # if defined key_lim221 USE par_ice_2 ! LIM-2 parameters22 USE ice_223 19 # endif 24 20 # if defined key_cice … … 33 29 PUBLIC sbc_ice_alloc ! called in iceini(_2).F90 34 30 35 # if defined key_lim236 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .TRUE. !: LIM-2 ice model37 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-338 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE39 # if defined key_lim2_vp40 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'I' !: VP : 'I'-grid ice-velocity (B-grid lower left corner)41 # else42 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: EVP: 'C'-grid ice-velocity43 # endif44 # endif45 31 # if defined key_lim3 46 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-247 32 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .TRUE. !: LIM-3 ice model 48 33 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE … … 50 35 # endif 51 36 # if defined key_cice 52 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-253 37 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 54 38 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .TRUE. !: CICE ice model … … 84 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_oce !: evap - precip over ocean [kg/m2/s] 85 69 #endif 86 #if defined key_lim3 || defined key_lim270 #if defined key_lim3 87 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm_ice !: wind speed module at T-point [m/s] 88 72 #endif … … 108 92 #endif 109 93 110 #if defined key_ lim2 || defined key_cice94 #if defined key_cice 111 95 ! already defined in ice.F90 for LIM3 112 96 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i … … 135 119 ierr(:) = 0 136 120 137 #if defined key_lim3 || defined key_lim2121 #if defined key_lim3 138 122 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & 139 123 & qla_ice (jpi,jpj,jpl) , dqla_ice(jpi,jpj,jpl) , & … … 141 125 & utau_ice(jpi,jpj) , vtau_ice(jpi,jpj) , wndm_ice(jpi,jpj) , & 142 126 & fr1_i0 (jpi,jpj) , fr2_i0 (jpi,jpj) , & 143 #if defined key_lim2144 & a_i(jpi,jpj,jpl) , &145 #endif146 #if defined key_lim3147 127 & evap_ice(jpi,jpj,jpl) , devap_ice(jpi,jpj,jpl) , qprec_ice(jpi,jpj) , & 148 128 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , & 149 129 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , & 150 #endif151 130 & emp_ice(jpi,jpj) , STAT= ierr(1) ) 152 131 #endif … … 166 145 #endif 167 146 ! 168 #if defined key_cice || defined key_lim2147 #if defined key_cice 169 148 IF( ln_cpl ) ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 170 149 #endif … … 183 162 PUBLIC sbc_ice_alloc 184 163 185 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 ice model186 164 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 ice model 187 165 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE ice model -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r7753 r8306 42 42 USE ice , ONLY : u_ice, v_ice, jpl, pfrld, a_i_b, at_i_b 43 43 USE limthd_dh ! for CALL lim_thd_snwblow 44 #elif defined key_lim245 USE ice_2 , ONLY : u_ice, v_ice46 USE par_ice_2 ! LIM-2 parameters47 44 #endif 48 45 USE sbcblk_algo_ncar ! => turb_ncar : NCAR - CORE (Large & Yeager, 2009) … … 64 61 PUBLIC sbc_blk_init ! called in sbcmod 65 62 PUBLIC sbc_blk ! called in sbcmod 66 #if defined key_lim 2 || defined key_lim363 #if defined key_lim3 67 64 PUBLIC blk_ice_tau ! routine called in sbc_ice_lim module 68 65 PUBLIC blk_ice_flx ! routine called in sbc_ice_lim module … … 573 570 END SUBROUTINE blk_oce 574 571 575 #if defined key_lim 2 || defined key_lim3572 #if defined key_lim3 576 573 577 574 SUBROUTINE blk_ice_tau … … 602 599 603 600 ! Make ice-atm. drag dependent on ice concentration (see Lupkes et al. 2012) (clem) 604 #if defined key_lim3605 601 IF( ln_Cd_L12 ) THEN 606 602 CALL Cdn10_Lupkes2012( Cd ) ! calculate new drag from Lupkes(2012) equations 607 603 ENDIF 608 #endif609 604 610 605 ! local scalars ( place there for vector optimisation purposes) … … 717 712 718 713 ! Make ice-atm. drag dependent on ice concentration (see Lupkes et al. 2012) (clem) 719 #if defined key_lim3720 714 IF( ln_Cd_L12 ) THEN 721 715 CALL Cdn10_Lupkes2012( Cd ) ! calculate new drag from Lupkes(2012) equations 722 716 ENDIF 723 #endif724 717 725 718 ! … … 786 779 CALL iom_put( 'precip' , tprecip * 86400. ) ! Total precipitation 787 780 788 #if defined key_lim3789 781 CALL wrk_alloc( jpi,jpj, zevap, zsnw ) 790 782 … … 824 816 825 817 CALL wrk_dealloc( jpi,jpj, zevap, zsnw ) 826 #endif827 818 828 819 !-------------------------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r7968 r8306 28 28 #if defined key_lim3 29 29 USE ice ! ice variables 30 #endif31 #if defined key_lim232 USE par_ice_2 ! ice parameters33 USE ice_2 ! ice variables34 30 #endif 35 31 USE cpl_oasis3 ! OASIS3 coupling … … 207 203 ALLOCATE( albedo_oce_mix(jpi,jpj), nrcvinfo(jprcv), STAT=ierr(1) ) 208 204 209 #if ! defined key_lim3 && ! defined key_ lim2 && ! defined key_cice205 #if ! defined key_lim3 && ! defined key_cice 210 206 ALLOCATE( a_i(jpi,jpj,1) , STAT=ierr(2) ) ! used in sbcice_if.F90 (done here as there is no sbc_ice_if_init) 211 207 #endif … … 1950 1946 1951 1947 ! Surface transimission parameter io (Maykut Untersteiner , 1971 ; Ebert and Curry, 1993 ) 1952 ! Used for LIM 2 and LIM31948 ! Used for LIM3 1953 1949 ! Coupled case: since cloud cover is not received from atmosphere 1954 1950 ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r6140 r8306 94 94 ! and in case of no melt, it can generate HSSW. 95 95 ! 96 #if ! defined key_lim 2 && ! defined key_lim3 && ! defined key_cice96 #if ! defined key_lim3 && ! defined key_cice 97 97 snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass 98 98 snwice_mass (:,:) = 0.e0 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r8226 r8306 34 34 USE sbcice_if ! surface boundary condition: ice-if sea-ice model 35 35 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model 36 USE sbcice_lim_2 ! surface boundary condition: LIM 2.0 sea-ice model37 36 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 38 37 USE sbcisf ! surface boundary condition: ice-shelf … … 117 116 #if defined key_agrif 118 117 IF( Agrif_Root() ) THEN ! AGRIF zoom (cf r1242: possibility to run without ice in fine grid) 119 IF( lk_lim2 ) nn_ice = 2120 118 IF( lk_lim3 ) nn_ice = 3 121 119 IF( lk_cice ) nn_ice = 4 122 120 ENDIF 123 121 #else 124 IF( lk_lim2 ) nn_ice = 2125 122 IF( lk_lim3 ) nn_ice = 3 126 123 IF( lk_cice ) nn_ice = 4 … … 201 198 CASE( 0 ) !- no ice in the domain 202 199 CASE( 1 ) !- Ice-cover climatology ("Ice-if" model) 203 CASE( 2 ) !- LIM2 ice model204 IF( .NOT.( ln_blk .OR. ln_cpl ) ) CALL ctl_stop( 'sbc_init : LIM2 sea-ice model requires ln_blk or ln_cpl = T' )205 200 CASE( 3 ) !- LIM3 ice model 206 201 IF( nn_ice_embd == 0 ) CALL ctl_stop( 'sbc_init : LIM3 sea-ice models require nn_ice_embd = 1 or 2' ) … … 428 423 SELECT CASE( nn_ice ) ! Update heat and freshwater fluxes over sea-ice areas 429 424 CASE( 1 ) ; CALL sbc_ice_if ( kt ) ! Ice-cover climatology ("Ice-if" model) 430 CASE( 2 ) ; CALL sbc_ice_lim_2( kt, nsbc ) ! LIM-2 ice model431 425 CASE( 3 ) ; CALL sbc_ice_lim ( kt, nsbc ) ! LIM-3 ice model 432 426 CASE( 4 ) ; CALL sbc_ice_cice ( kt, nsbc ) ! CICE ice model -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r8226 r8306 140 140 CALL Agrif_Declare_Var_top ! " " " " " TOP 141 141 # endif 142 # if defined key_lim2143 CALL Agrif_Declare_Var_lim2 ! " " " " " LIM2144 # endif145 142 # if defined key_lim3 146 143 CALL Agrif_Declare_Var_lim3 ! " " " " " LIM3 … … 206 203 ! 207 204 #if defined key_agrif 208 !!clem2017IF( .NOT. Agrif_Root() ) THEN205 IF( .NOT. Agrif_Root() ) THEN 209 206 CALL Agrif_ParentGrid_To_ChildGrid() 210 207 IF( ln_diaobs ) CALL dia_obs_wri 211 208 IF( nn_timing == 1 ) CALL timing_finalize 212 209 CALL Agrif_ChildGrid_To_ParentGrid() 213 !!clem2017ENDIF210 ENDIF 214 211 #endif 215 212 IF( nn_timing == 1 ) CALL timing_finalize
Note: See TracChangeset
for help on using the changeset viewer.